From 50fe9499af6c5b262b247dedc88b349b74ce82c0 Mon Sep 17 00:00:00 2001 From: chyzwar Date: Thu, 14 May 2026 10:30:08 +0200 Subject: [PATCH 1/6] chore(deps): bump node to 24, upgrade typescript/eslint/vitest/zod/lerna majors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Engines + CI move to Node 24 (.node-version pins 24.14.0). Major dep bumps: typescript 5→6, eslint 9→10, vitest 3→4, zod 3→4, lerna-lite 3→5, commitlint 19→21, @chyzwar/eslint-config 0.2→0.6, @chyzwar/tsconfig 0.3→0.4. Required source fixes: - conf/utils.ts: zod 4 renamed ZodOptionalType/ZodNullableType → ZodOptional/ZodNullable - conf/{service,timer}.ts: replace deprecated z.merge() with z.extend(other.shape) - ctl/tsconfig.json: explicit "types": ["node"] now needed since the new shared @chyzwar/tsconfig/lib.json no longer auto-includes node types Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/checks.yaml | 4 +- .github/workflows/publish.yaml | 4 +- .node-version | 1 + package.json | 26 +- packages/conf/package.json | 16 +- packages/conf/src/exec.ts | 2 +- packages/conf/src/service.ts | 6 +- packages/conf/src/timer.ts | 2 +- packages/conf/src/utils.ts | 6 +- packages/ctl/package.json | 14 +- packages/ctl/src/ctl.ts | 2 +- packages/ctl/tsconfig.json | 3 +- yarn.lock | 4988 ++++++++++++++------------------ 13 files changed, 2161 insertions(+), 2913 deletions(-) create mode 100644 .node-version diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml index 7420481..96d2406 100644 --- a/.github/workflows/checks.yaml +++ b/.github/workflows/checks.yaml @@ -16,10 +16,10 @@ jobs: - name: "Checkout" uses: actions/checkout@v4 - - name: "Setup NodeJS 22" + - name: "Setup NodeJS 24" uses: actions/setup-node@v4 with: - node-version: '22' + node-version: '24' cache: 'yarn' - name: Install diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index e44f434..f117a84 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -33,10 +33,10 @@ jobs: with: fetch-depth: 0 - - name: "Setup NodeJS 22" + - name: "Setup NodeJS 24" uses: actions/setup-node@v4 with: - node-version: '22' + node-version: '24' registry-url: 'https://registry.npmjs.org' cache: 'yarn' diff --git a/.node-version b/.node-version new file mode 100644 index 0000000..d845d9d --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +24.14.0 diff --git a/package.json b/package.json index fbfbff9..bbe8cbd 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@systemd/root", "version": "1.0.0", "engines": { - "node": "^20.0.0" + "node": "^24.0.0" }, "type": "module", "workspaces": [ @@ -22,20 +22,20 @@ "prepare": "husky" }, "devDependencies": { - "@chyzwar/eslint-config": "^0.2.34", - "@commitlint/cli": "^19.7.1", - "@commitlint/config-conventional": "^19.7.1", - "@lerna-lite/cli": "^3.12.0", - "@lerna-lite/publish": "^3.12.0", - "@lerna-lite/version": "^3.12.0", - "@types/node": "^22.13.4", - "conventional-changelog-conventionalcommits": "^7.0.2", - "eslint": "^9.20.1", + "@chyzwar/eslint-config": "^0.6.4", + "@commitlint/cli": "^21.0.1", + "@commitlint/config-conventional": "^21.0.1", + "@lerna-lite/cli": "^5.2.1", + "@lerna-lite/publish": "^5.2.1", + "@lerna-lite/version": "^5.2.1", + "@types/node": "^25.7.0", + "conventional-changelog-conventionalcommits": "^9.3.1", + "eslint": "^10.3.0", "husky": "^9.1.7", - "lint-staged": "^15.4.3", + "lint-staged": "^17.0.4", "ts-node": "^10.9.2", - "typescript": "^5.7.3", - "vitest": "^3.0.5" + "typescript": "^6.0.3", + "vitest": "^4.1.6" }, "lint-staged": { "*.{js,ts,tsx}": "yarn lint:fix" diff --git a/packages/conf/package.json b/packages/conf/package.json index b5084a3..bbf43b6 100644 --- a/packages/conf/package.json +++ b/packages/conf/package.json @@ -2,7 +2,7 @@ "name": "@systemd-js/conf", "version": "0.10.0", "engines": { - "node": "^20.0.0" + "node": "^24.0.0" }, "repository": { "type": "git", @@ -33,14 +33,14 @@ "test:watch": "vitest" }, "dependencies": { - "zod": "^3.24.2" + "zod": "^4.4.3" }, "devDependencies": { - "@chyzwar/eslint-config": "^0.2.34", - "@chyzwar/tsconfig": "^0.3.2", - "@types/node": "^22.13.4", - "eslint": "^9.20.1", - "typescript": "^5.7.3", - "vitest": "^3.0.5" + "@chyzwar/eslint-config": "^0.6.4", + "@chyzwar/tsconfig": "^0.4.0", + "@types/node": "^25.7.0", + "eslint": "^10.3.0", + "typescript": "^6.0.3", + "vitest": "^4.1.6" } } diff --git a/packages/conf/src/exec.ts b/packages/conf/src/exec.ts index 7c24252..c2c225b 100644 --- a/packages/conf/src/exec.ts +++ b/packages/conf/src/exec.ts @@ -951,7 +951,7 @@ export interface ExecSectionConfig { └─────────────────┴───────────────────┴─────────────────────┴─────────────────────┘ */ LimitCPU?: number | string; - LimitFSIZE?: number | string ; + LimitFSIZE?: number | string; LimitDATA?: number | string; LimitSTACK?: number | string; LimitCORE?: number | string; diff --git a/packages/conf/src/service.ts b/packages/conf/src/service.ts index 34b8d3b..76bf135 100644 --- a/packages/conf/src/service.ts +++ b/packages/conf/src/service.ts @@ -1179,9 +1179,9 @@ export const ServiceSectionConfigSchema = implement().with * @see {@link KillSectionConfig} */ export const ServiceSectionSchema: ZodType = ServiceSectionConfigSchema - .merge(ExecSectionSchema) - .merge(KillSectionSchema) - .merge(ResourceSectionConfigSchema) + .extend(ExecSectionSchema.shape) + .extend(KillSectionSchema.shape) + .extend(ResourceSectionConfigSchema.shape) .strict(); /** diff --git a/packages/conf/src/timer.ts b/packages/conf/src/timer.ts index bcdb41d..0063636 100644 --- a/packages/conf/src/timer.ts +++ b/packages/conf/src/timer.ts @@ -308,7 +308,7 @@ export const TimerSectionConfigSchema = implement().with({ * @see {@link ExecSectionConfig} */ export const TimerSectionSchema: ZodType = TimerSectionConfigSchema - .merge(ExecSectionSchema) + .extend(ExecSectionSchema.shape) .strict(); /** diff --git a/packages/conf/src/utils.ts b/packages/conf/src/utils.ts index 021817a..62a990c 100644 --- a/packages/conf/src/utils.ts +++ b/packages/conf/src/utils.ts @@ -32,10 +32,10 @@ export function applyMixins(derivedCtor: Constructor, constructors: Constructor[ export type Implements = { [key in keyof Model]-?: undefined extends Model[key] ? null extends Model[key] - ? z.ZodNullableType>> - : z.ZodOptionalType> + ? z.ZodNullable>> + : z.ZodOptional> : null extends Model[key] - ? z.ZodNullableType> + ? z.ZodNullable> : z.ZodType; }; diff --git a/packages/ctl/package.json b/packages/ctl/package.json index 01bac65..74e6cd5 100644 --- a/packages/ctl/package.json +++ b/packages/ctl/package.json @@ -2,7 +2,7 @@ "name": "@systemd-js/ctl", "version": "0.10.0", "engines": { - "node": "^20.0.0" + "node": "^24.0.0" }, "repository": { "type": "git", @@ -34,11 +34,11 @@ "@systemd-js/conf": "^0.10.0" }, "devDependencies": { - "@chyzwar/eslint-config": "^0.2.34", - "@chyzwar/tsconfig": "^0.3.2", - "@types/node": "^22.13.4", - "eslint": "^9.20.1", - "typescript": "^5.7.3", - "vitest": "^3.0.5" + "@chyzwar/eslint-config": "^0.6.4", + "@chyzwar/tsconfig": "^0.4.0", + "@types/node": "^25.7.0", + "eslint": "^10.3.0", + "typescript": "^6.0.3", + "vitest": "^4.1.6" } } diff --git a/packages/ctl/src/ctl.ts b/packages/ctl/src/ctl.ts index 17151fc..4bd2bca 100644 --- a/packages/ctl/src/ctl.ts +++ b/packages/ctl/src/ctl.ts @@ -150,7 +150,7 @@ export function isEnabled(unitName: string, unit?: Unit) { } export function daemonReload() { - execSync(`systemctl daemon-reload`); + execSync("systemctl daemon-reload"); } export class Ctl { diff --git a/packages/ctl/tsconfig.json b/packages/ctl/tsconfig.json index e148df7..7943b3f 100644 --- a/packages/ctl/tsconfig.json +++ b/packages/ctl/tsconfig.json @@ -5,7 +5,8 @@ "outDir": "lib", "rootDir": "src", "composite": false, - "tsBuildInfoFile": "./lib/buildInfo.json" + "tsBuildInfoFile": "./lib/buildInfo.json", + "types": ["node"] }, "include": [ "src/**/*" diff --git a/yarn.lock b/yarn.lock index d724767..d521560 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,7 +5,7 @@ __metadata: version: 8 cacheKey: 10c2 -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.21.4, @babel/code-frame@npm:^7.22.13": +"@babel/code-frame@npm:^7.0.0": version: 7.24.2 resolution: "@babel/code-frame@npm:7.24.2" dependencies: @@ -34,217 +34,229 @@ __metadata: languageName: node linkType: hard -"@chyzwar/eslint-config@npm:^0.2.34": - version: 0.2.34 - resolution: "@chyzwar/eslint-config@npm:0.2.34" +"@chyzwar/eslint-config@npm:^0.6.4": + version: 0.6.4 + resolution: "@chyzwar/eslint-config@npm:0.6.4" dependencies: - "@chyzwar/tsconfig": "npm:^0.3.2" - "@eslint/js": "npm:^9.19.0" - "@stylistic/eslint-plugin": "npm:^3.0.1" - eslint-plugin-jest: "npm:^28.11.0" - globals: "npm:^15.14.0" - typescript-eslint: "npm:^8.23.0" + "@eslint/js": "npm:^10.0.1" + "@stylistic/eslint-plugin": "npm:^5.10.0" + eslint-plugin-jest: "npm:^29.15.2" + globals: "npm:^17.6.0" + typescript-eslint: "npm:^8.59.3" peerDependencies: - eslint: ^9.2.0 - checksum: 10c2/d359a96803456c6ccbc95dcaa1714b1726626dfa05dfa210ed02d4fa1a2c9f92ce36b6b03da2e45c523778f3b6f6f29d4601309cd62a49d47af6b3f7c1437f34 + eslint: ^10.0.0 + typescript: ^6.0.0 + checksum: 10c2/3448e210adc04ec665f7a0063e1ff3beeb91af0d7fe93e31ac06b85ef9471acbbcabf21c328e25535e1f11af4dfaefb7277120460b75c340179a4b9f316e2771 languageName: node linkType: hard -"@chyzwar/tsconfig@npm:^0.3.2": - version: 0.3.2 - resolution: "@chyzwar/tsconfig@npm:0.3.2" - checksum: 10c2/30c4e49e1c066cfed9946a6e41c9590f3dec127305561cb5acd56d48ec0790ef0726855899c972c32451c8317711b672485cd67155a7f9888017b97539890690 +"@chyzwar/tsconfig@npm:^0.4.0": + version: 0.4.0 + resolution: "@chyzwar/tsconfig@npm:0.4.0" + checksum: 10c2/8e8e1d430bc1350378b72f91a9650c149f03b79d13e1e8fb2bbca1f963a60b62b8912e542467605c323fda6ac7e953d67f7bb91b2ef5ddf6498339caee7d6e63 languageName: node linkType: hard -"@commitlint/cli@npm:^19.7.1": - version: 19.7.1 - resolution: "@commitlint/cli@npm:19.7.1" +"@commitlint/cli@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/cli@npm:21.0.1" dependencies: - "@commitlint/format": "npm:^19.5.0" - "@commitlint/lint": "npm:^19.7.1" - "@commitlint/load": "npm:^19.6.1" - "@commitlint/read": "npm:^19.5.0" - "@commitlint/types": "npm:^19.5.0" - tinyexec: "npm:^0.3.0" - yargs: "npm:^17.0.0" + "@commitlint/format": "npm:^21.0.1" + "@commitlint/lint": "npm:^21.0.1" + "@commitlint/load": "npm:^21.0.1" + "@commitlint/read": "npm:^21.0.1" + "@commitlint/types": "npm:^21.0.1" + tinyexec: "npm:^1.0.0" + yargs: "npm:^18.0.0" bin: commitlint: cli.js - checksum: 10c2/0d9231abfcc9e7d6f67ee3a352931385091cfd65e59c54eeeb79932e13a9ed1cec030bc2f58be54dad02f267b7f54cfe83a7d0ab9e7f56ab589840121344b6e0 + checksum: 10c2/835f7b640c27b3f262b775cc509d5d54b53a5786f2ad7527822837aa2c1ad7e2fb683389aa62bc3f075cab6d331a68220a875e8874f9e0107721bda25af6b625 languageName: node linkType: hard -"@commitlint/config-conventional@npm:^19.7.1": - version: 19.7.1 - resolution: "@commitlint/config-conventional@npm:19.7.1" +"@commitlint/config-conventional@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/config-conventional@npm:21.0.1" dependencies: - "@commitlint/types": "npm:^19.5.0" - conventional-changelog-conventionalcommits: "npm:^7.0.2" - checksum: 10c2/d7936f53aca727abbd0340ee6d0aa8ce1ebce9572404d709367ec21fdac5d9f62ccabfb46609ba28fed2559a2bd5834a425157124bbdf1afb00cfa9f4799232e + "@commitlint/types": "npm:^21.0.1" + conventional-changelog-conventionalcommits: "npm:^9.2.0" + checksum: 10c2/fb7be123a4078fa7a28638341e28fb69038d0702d55f8ffd74a2e8e9c8fa6634631601e5087f00e4256449cb0e249fef75969fc974b1e6362428cb0042fd7fdd languageName: node linkType: hard -"@commitlint/config-validator@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/config-validator@npm:19.5.0" +"@commitlint/config-validator@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/config-validator@npm:21.0.1" dependencies: - "@commitlint/types": "npm:^19.5.0" + "@commitlint/types": "npm:^21.0.1" ajv: "npm:^8.11.0" - checksum: 10c2/bfffaddbcd1985b4631999c2837c93b87f84501b1e5f72c54168604ebf826f2330624cece94e0f9455ff30acf177ed90c5fe520d2970175aeb2873f6513b5cf4 + checksum: 10c2/1f0c150c8599ef36621520576cbcfea11b57cd525fd7613ac9b7dd7ddbfc7778df6171edd3ea5531d8259c99af640fc378f55f27e848d965cbd9d79249fb7490 languageName: node linkType: hard -"@commitlint/ensure@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/ensure@npm:19.5.0" +"@commitlint/ensure@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/ensure@npm:21.0.1" dependencies: - "@commitlint/types": "npm:^19.5.0" - lodash.camelcase: "npm:^4.3.0" - lodash.kebabcase: "npm:^4.1.1" - lodash.snakecase: "npm:^4.1.1" - lodash.startcase: "npm:^4.4.0" - lodash.upperfirst: "npm:^4.3.1" - checksum: 10c2/c56cb30988c24b837bea9b5d49696dfa63e39b49c6efcfdf0669908786a0fe1ef896524b45000e8fd440e1231357f65e54f920ba7cbaab90930e9a42c7b281c0 + "@commitlint/types": "npm:^21.0.1" + es-toolkit: "npm:^1.46.0" + checksum: 10c2/8fc27313227dfe7ff64cba02524bf7586cc5138c25f1968103ef6fc2947e26a1c675df5da33342bcd964352a938f459035f56b2aac9d375f08d1b238e386bd86 languageName: node linkType: hard -"@commitlint/execute-rule@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/execute-rule@npm:19.5.0" - checksum: 10c2/6ec6573588254891fbd352747aa4f4aa7681123d46f3f6bd3203b89a6de7ef8e58ffaec742411f677c131b25e716c01caf1a2dfbc432a2f5ade65cdddbf46e69 +"@commitlint/execute-rule@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/execute-rule@npm:21.0.1" + checksum: 10c2/68a9f6796cc7adb0a8065f1563f91224cac89470db0c7c31cb4eca2a618b1568b560b7d73c4c09e65fb87876b28acfde22569b682596a754ca5c24c0851148a9 languageName: node linkType: hard -"@commitlint/format@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/format@npm:19.5.0" +"@commitlint/format@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/format@npm:21.0.1" dependencies: - "@commitlint/types": "npm:^19.5.0" - chalk: "npm:^5.3.0" - checksum: 10c2/69da496a614fe96fe83f35e42fc10e3d2fa9828662f11bf6bdcdd29c6706c059dcc3c9038a0df1d8faf784240ec7c31349ef996635a9f549b7c98eb435040def + "@commitlint/types": "npm:^21.0.1" + picocolors: "npm:^1.1.1" + checksum: 10c2/9a75308e234d6f90a340973a12555002df20135b3447649d139ceefebc2e5e69f0e4fa3c0e45490300b2a1839b6163e7d004bc874baf752141d5ef7847331fac languageName: node linkType: hard -"@commitlint/is-ignored@npm:^19.7.1": - version: 19.7.1 - resolution: "@commitlint/is-ignored@npm:19.7.1" +"@commitlint/is-ignored@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/is-ignored@npm:21.0.1" dependencies: - "@commitlint/types": "npm:^19.5.0" + "@commitlint/types": "npm:^21.0.1" semver: "npm:^7.6.0" - checksum: 10c2/99eb4c403441d329a6ca8bfd6337293f1ca993b4274ffba830a523e4b542f2b12ffadb0551bb6eef9b165bf46309791a0ad4a7ce487ee2aaa1dfa4160f5ed346 + checksum: 10c2/3028f1b122924a085931e410ebe191a496bc6ce7306d510a5cd9fc640876fdb85307fa8a6a0c0225a91198aaf8276be78794fae111288e8e3d566f39caaffa8a languageName: node linkType: hard -"@commitlint/lint@npm:^19.7.1": - version: 19.7.1 - resolution: "@commitlint/lint@npm:19.7.1" +"@commitlint/lint@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/lint@npm:21.0.1" dependencies: - "@commitlint/is-ignored": "npm:^19.7.1" - "@commitlint/parse": "npm:^19.5.0" - "@commitlint/rules": "npm:^19.6.0" - "@commitlint/types": "npm:^19.5.0" - checksum: 10c2/eea13c6dda5edf8ad533e59cba92388583380474f27ba618485ed2ad40395fcacbeeecae62b8e654c07d6d29038d0ff8c7bf9d8585f387367304439785164015 + "@commitlint/is-ignored": "npm:^21.0.1" + "@commitlint/parse": "npm:^21.0.1" + "@commitlint/rules": "npm:^21.0.1" + "@commitlint/types": "npm:^21.0.1" + checksum: 10c2/9cfdf107ffc867f084bd25f08664301b07d8c29c1f059226428ac1dc826f0a202603db56f905e27bde0918a7b902a4f343b4f9dcc40e07c9fa147e63d91c65e5 languageName: node linkType: hard -"@commitlint/load@npm:^19.6.1": - version: 19.6.1 - resolution: "@commitlint/load@npm:19.6.1" +"@commitlint/load@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/load@npm:21.0.1" dependencies: - "@commitlint/config-validator": "npm:^19.5.0" - "@commitlint/execute-rule": "npm:^19.5.0" - "@commitlint/resolve-extends": "npm:^19.5.0" - "@commitlint/types": "npm:^19.5.0" - chalk: "npm:^5.3.0" - cosmiconfig: "npm:^9.0.0" + "@commitlint/config-validator": "npm:^21.0.1" + "@commitlint/execute-rule": "npm:^21.0.1" + "@commitlint/resolve-extends": "npm:^21.0.1" + "@commitlint/types": "npm:^21.0.1" + cosmiconfig: "npm:^9.0.1" cosmiconfig-typescript-loader: "npm:^6.1.0" - lodash.isplainobject: "npm:^4.0.6" - lodash.merge: "npm:^4.6.2" - lodash.uniq: "npm:^4.5.0" - checksum: 10c2/de759c6553db96bc1d77efe3bd65a065afdfa8276cbf8bfbb67fdebeba8cc2212d5523533b3d86f8a6302daff30be50d9e2bb884d32665e9d8ef27e4955a6ae4 + es-toolkit: "npm:^1.46.0" + is-plain-obj: "npm:^4.1.0" + picocolors: "npm:^1.1.1" + checksum: 10c2/d9cf978c07da59e6bfd9f1a5ef2e68ceb17590e3d406bb20505aba1dfd7df9e860498ae18470e5454cc62d4ba4a1d977ba768a415c0760dbdac336fe43fffbc3 languageName: node linkType: hard -"@commitlint/message@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/message@npm:19.5.0" - checksum: 10c2/780a0f54f80709e46a6229c2622a78c45a7efadd63aa764831fedb6d2572387468a831e1ba72222f69ee8b50d8056610e7c4f51e04b748ee34566dd3adb8d19e +"@commitlint/message@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/message@npm:21.0.1" + checksum: 10c2/91c643a83f57a92f1fdab5ea970e8b03fa663d0712b11de2f85faee8f9bb4e7c51e9ca30ccc49d6f465fce70e502fc8a63bea50df07dcb6fe1ecbe9bf2e8168b languageName: node linkType: hard -"@commitlint/parse@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/parse@npm:19.5.0" +"@commitlint/parse@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/parse@npm:21.0.1" dependencies: - "@commitlint/types": "npm:^19.5.0" - conventional-changelog-angular: "npm:^7.0.0" - conventional-commits-parser: "npm:^5.0.0" - checksum: 10c2/6d4bc646444cba0e38405b3679e3f77fbf72e77d4bee5dadcf0168d79ae7aa74a977154854c0dadb8c82a2d1e64fefacdc49d0998ef0ef073c432209c0f77682 + "@commitlint/types": "npm:^21.0.1" + conventional-changelog-angular: "npm:^8.2.0" + conventional-commits-parser: "npm:^6.3.0" + checksum: 10c2/278e239bf71ccd72ceb764bed5802b8f74def8fe03caba2d76ca5d2b79b49d2af4af715bc6ed1bcbbc992f49b6cde1384c06c9f082f7eefe4542db618805f9e2 languageName: node linkType: hard -"@commitlint/read@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/read@npm:19.5.0" +"@commitlint/read@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/read@npm:21.0.1" dependencies: - "@commitlint/top-level": "npm:^19.5.0" - "@commitlint/types": "npm:^19.5.0" - git-raw-commits: "npm:^4.0.0" - minimist: "npm:^1.2.8" - tinyexec: "npm:^0.3.0" - checksum: 10c2/1f3d11a443b1cb2692ab206d50c617e33c8753f848272f1e0935df0e5b953cf434493918f63c508a530f048602490f864b981a4aef4764b55c7d34214544118c + "@commitlint/top-level": "npm:^21.0.1" + "@commitlint/types": "npm:^21.0.1" + git-raw-commits: "npm:^5.0.0" + tinyexec: "npm:^1.0.0" + checksum: 10c2/84e450e9e55c59fa7d9a57e52d4a270998391f25c60664e555c82c55f41498aba2a03b8c6cc3105c8810d4edf1879161909330f8aee61325565d65c817cf638c languageName: node linkType: hard -"@commitlint/resolve-extends@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/resolve-extends@npm:19.5.0" +"@commitlint/resolve-extends@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/resolve-extends@npm:21.0.1" dependencies: - "@commitlint/config-validator": "npm:^19.5.0" - "@commitlint/types": "npm:^19.5.0" - global-directory: "npm:^4.0.1" - import-meta-resolve: "npm:^4.0.0" - lodash.mergewith: "npm:^4.6.2" + "@commitlint/config-validator": "npm:^21.0.1" + "@commitlint/types": "npm:^21.0.1" + es-toolkit: "npm:^1.46.0" + global-directory: "npm:^5.0.0" resolve-from: "npm:^5.0.0" - checksum: 10c2/145fb922e333670687d8f43f65cd11b5b4619ca52b166445e18df5a5711747b7dc84cce6e490bb317f49359b0eff8a88057062320e65e53786ad55e3667ee772 + checksum: 10c2/c3bb8f3e60411c0a00b1a891fbe7e07c78ccb1a3fb930e1d72def11404756c346bc710b9123e8ceb35aec4c26a746f0be5711efcfcc56bc49ff704c35e45aea7 languageName: node linkType: hard -"@commitlint/rules@npm:^19.6.0": - version: 19.6.0 - resolution: "@commitlint/rules@npm:19.6.0" +"@commitlint/rules@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/rules@npm:21.0.1" dependencies: - "@commitlint/ensure": "npm:^19.5.0" - "@commitlint/message": "npm:^19.5.0" - "@commitlint/to-lines": "npm:^19.5.0" - "@commitlint/types": "npm:^19.5.0" - checksum: 10c2/7beb52abf7fe2c2dbb463f30fac89e960edbf140074117efc73a87acdd5f0c6c4df0d5d6416818f6bf08ac0b8059523526fc82167a323e9758d50ca88df56970 + "@commitlint/ensure": "npm:^21.0.1" + "@commitlint/message": "npm:^21.0.1" + "@commitlint/to-lines": "npm:^21.0.1" + "@commitlint/types": "npm:^21.0.1" + checksum: 10c2/a9dd0d56ad7ad5c3c847357150d605ee4bb12a001383a5f7c53922a21a50bdfc0b26d30ffafea783b5a6e81f5142947828d86110c0e136b7e5ae4383605e3828 + languageName: node + linkType: hard + +"@commitlint/to-lines@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/to-lines@npm:21.0.1" + checksum: 10c2/b08bdb456b8da072bc21f318bc29468031b325b652b9ad05f18272cd3f1ed5d1bd25c0f9d385d6c2dffde2106ffcd15a0180c03162c739939ba2373520576b68 languageName: node linkType: hard -"@commitlint/to-lines@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/to-lines@npm:19.5.0" - checksum: 10c2/d8bfe35ca269272f26b81f3eb22cb3506d17c38d17fee1ac856ded5ce9fa942632b13190025694bbf04ea3a570ac4945231d1d8a44d07567566ef3b3c1b835db +"@commitlint/top-level@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/top-level@npm:21.0.1" + dependencies: + escalade: "npm:^3.2.0" + checksum: 10c2/32b8b21a66ecaa4145abaae4cd5775280b06128e235bc9367d6272898ebd608f8ef19aa034073a277e94f9f04da7538f2bbddc682ac0ec1abef183d84cefa931 languageName: node linkType: hard -"@commitlint/top-level@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/top-level@npm:19.5.0" +"@commitlint/types@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/types@npm:21.0.1" dependencies: - find-up: "npm:^7.0.0" - checksum: 10c2/b4d6e7879307d4454aab455e2964a2fd6ed939986e824c07f95272f3f2067622f3c5cfc5dc2f61f9adbf7024c1bfde53d9fe6ed734ea9a9d42f50922d843d1b5 + conventional-commits-parser: "npm:^6.3.0" + picocolors: "npm:^1.1.1" + checksum: 10c2/f3a7f91e1a3350d5c716306a159e8388407279baad7e64a9680d061b2c2c67f01df924dc119ebae047ac5e49d7ececc57fa99d730cc5032727604621fdf213b2 languageName: node linkType: hard -"@commitlint/types@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/types@npm:19.5.0" +"@conventional-changelog/git-client@npm:^2.5.1, @conventional-changelog/git-client@npm:^2.6.0, @conventional-changelog/git-client@npm:^2.7.0": + version: 2.7.0 + resolution: "@conventional-changelog/git-client@npm:2.7.0" dependencies: - "@types/conventional-commits-parser": "npm:^5.0.0" - chalk: "npm:^5.3.0" - checksum: 10c2/07924bdd7f0ee97e5915b423b0fbb8f6712446396fbb7b65b608e5196a24eb5b2d2311bfb7ad745e776dd13f8bd3221f39ad9502bc658eea8e9914aef487f883 + "@simple-libs/child-process-utils": "npm:^1.0.0" + "@simple-libs/stream-utils": "npm:^1.2.0" + semver: "npm:^7.5.2" + peerDependencies: + conventional-commits-filter: ^5.0.0 + conventional-commits-parser: ^6.4.0 + peerDependenciesMeta: + conventional-commits-filter: + optional: true + conventional-commits-parser: + optional: true + checksum: 10c2/c03d50f1aeaa0407dac4ec55c09be7b4cd0c74811e9ff863fd188b0ce6eade885afc31ad32c4f0c2642a858284e7c09b4376b8466c157fe0def92a5c521d9bfd languageName: node linkType: hard @@ -257,266 +269,114 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/aix-ppc64@npm:0.24.2" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/android-arm64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/android-arm64@npm:0.24.2" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/android-arm@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/android-arm@npm:0.24.2" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@esbuild/android-x64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/android-x64@npm:0.24.2" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/darwin-arm64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/darwin-arm64@npm:0.24.2" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/darwin-x64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/darwin-x64@npm:0.24.2" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/freebsd-arm64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/freebsd-arm64@npm:0.24.2" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/freebsd-x64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/freebsd-x64@npm:0.24.2" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/linux-arm64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/linux-arm64@npm:0.24.2" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/linux-arm@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/linux-arm@npm:0.24.2" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@esbuild/linux-ia32@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/linux-ia32@npm:0.24.2" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/linux-loong64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/linux-loong64@npm:0.24.2" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - -"@esbuild/linux-mips64el@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/linux-mips64el@npm:0.24.2" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"@esbuild/linux-ppc64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/linux-ppc64@npm:0.24.2" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/linux-riscv64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/linux-riscv64@npm:0.24.2" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"@esbuild/linux-s390x@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/linux-s390x@npm:0.24.2" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"@esbuild/linux-x64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/linux-x64@npm:0.24.2" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/netbsd-arm64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/netbsd-arm64@npm:0.24.2" - conditions: os=netbsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/netbsd-x64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/netbsd-x64@npm:0.24.2" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/openbsd-arm64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/openbsd-arm64@npm:0.24.2" - conditions: os=openbsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/openbsd-x64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/openbsd-x64@npm:0.24.2" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/sunos-x64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/sunos-x64@npm:0.24.2" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/win32-arm64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/win32-arm64@npm:0.24.2" - conditions: os=win32 & cpu=arm64 +"@emnapi/core@npm:1.10.0": + version: 1.10.0 + resolution: "@emnapi/core@npm:1.10.0" + dependencies: + "@emnapi/wasi-threads": "npm:1.2.1" + tslib: "npm:^2.4.0" + checksum: 10c2/c91fd20fd9c60793d33b9df5622a674892246ecb45435294c93b8f7d33f6ac7ef55b3ff21f2f3dc1c2f65ebdc03ebf1f4a93d40b5f42b8992a6de69d19bd8372 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/win32-ia32@npm:0.24.2" - conditions: os=win32 & cpu=ia32 +"@emnapi/runtime@npm:1.10.0": + version: 1.10.0 + resolution: "@emnapi/runtime@npm:1.10.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c2/23840781fdc548cfdf03830496627c2bddc8949f1f0a88f2744452911eeb766ff52887d5f0c6796aefa090c37f956950666577761a10310ba77bc115b3b9ee54 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.24.2": - version: 0.24.2 - resolution: "@esbuild/win32-x64@npm:0.24.2" - conditions: os=win32 & cpu=x64 +"@emnapi/wasi-threads@npm:1.2.1": + version: 1.2.1 + resolution: "@emnapi/wasi-threads@npm:1.2.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c2/d0fcdcdb629c0b825de12ea356305c14a62c63f8b2821c105e0a486235650e067f447c5804b8c4214f001194a127f924f178c7f9c9606f37cdf4824ccde44f0d languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.4.0 - resolution: "@eslint-community/eslint-utils@npm:4.4.0" +"@eslint-community/eslint-utils@npm:^4.8.0, @eslint-community/eslint-utils@npm:^4.9.1": + version: 4.9.1 + resolution: "@eslint-community/eslint-utils@npm:4.9.1" dependencies: - eslint-visitor-keys: "npm:^3.3.0" + eslint-visitor-keys: "npm:^3.4.3" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10c2/11d6ad44f14371396e107e66efcc0cf09765fe0c7305a24bc1e948fc314820801d3976b30d766131b78eeff0460de18b823af48d32f8838a4a8d5b0c4b5b5899 + checksum: 10c2/eab68699883d220bd80995268d710776016a09b8f2359e9b173ebc73e646ca02eb7c3d6e1a9db37f4b04991e379ee0470556758f78533d4a943ba6d284ca31a9 languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1": - version: 4.12.1 - resolution: "@eslint-community/regexpp@npm:4.12.1" - checksum: 10c2/d3c6fa63b9a0ff9a2a478de13d17d4e408027e9ece704b0d6b996b3580d4862a934047281f0b18092f06fa9e177b61fe8e407f6e55fbffd3d812ba530bf96f00 +"@eslint-community/regexpp@npm:^4.12.2": + version: 4.12.2 + resolution: "@eslint-community/regexpp@npm:4.12.2" + checksum: 10c2/a97bd54e95639f8594e712eb80dbc7d74b730635c97a882269ee43829cbd2df0c3b0483ebc2daa830cbd36cd0300c28f32dccc6445816083decf4c020d5b6258 languageName: node linkType: hard -"@eslint/config-array@npm:^0.19.0": - version: 0.19.2 - resolution: "@eslint/config-array@npm:0.19.2" +"@eslint/config-array@npm:^0.23.5": + version: 0.23.5 + resolution: "@eslint/config-array@npm:0.23.5" dependencies: - "@eslint/object-schema": "npm:^2.1.6" + "@eslint/object-schema": "npm:^3.0.5" debug: "npm:^4.3.1" - minimatch: "npm:^3.1.2" - checksum: 10c2/71647ed8cdbfb136a9e3990f18c5609c6fe8760fa05d6399cc968ceb1c96142c9a7b1ff0d4fbaa33c25e37d74ad5e3433ccfc682c12bd612e1baa93a56aa934d + minimatch: "npm:^10.2.4" + checksum: 10c2/e6ad692f9206096e7e585c607f1eca62e27081ffc34c874016e9e555cc90a4530c016c4195e45fc66d56ddeb07bb6a5612c87f746bef4575bfe047622c64e043 languageName: node linkType: hard -"@eslint/core@npm:^0.10.0": - version: 0.10.0 - resolution: "@eslint/core@npm:0.10.0" +"@eslint/config-helpers@npm:^0.5.5": + version: 0.5.5 + resolution: "@eslint/config-helpers@npm:0.5.5" dependencies: - "@types/json-schema": "npm:^7.0.15" - checksum: 10c2/a2484facd74497a184cfa740984edabb766f0e6dfb3a370ebbcf685b643444daf41429514c42c7706aa7407a7dee43b4b233c530cfa51a440640321fb4165803 + "@eslint/core": "npm:^1.2.1" + checksum: 10c2/1de8f705a6a03e5e6e883f2aa427fcf73eba49ca458c0f19c37bc3a2804925ce302d133409c6f4396892f229362b6f6b32ac3734519b1f64b40362119d3f64fc languageName: node linkType: hard -"@eslint/core@npm:^0.11.0": - version: 0.11.0 - resolution: "@eslint/core@npm:0.11.0" +"@eslint/core@npm:^1.2.1": + version: 1.2.1 + resolution: "@eslint/core@npm:1.2.1" dependencies: "@types/json-schema": "npm:^7.0.15" - checksum: 10c2/65227201da123c3d7257869aaeb93ec66d69b49e5b751d724a9c418f016f2d7c00deed1933b1c571c44ea075a9b2410051f4a733e519083bf713f7f49043bd24 + checksum: 10c2/e872db71e02b48364e8e3e89f8949fed5cabb0888c2eec2952454de1dc798023f450ac66b7b23b62f57cf66cd94254a0a913a2a432bbf51ccfb0cf86162e20fa languageName: node linkType: hard -"@eslint/eslintrc@npm:^3.2.0": - version: 3.2.0 - resolution: "@eslint/eslintrc@npm:3.2.0" - dependencies: - ajv: "npm:^6.12.4" - debug: "npm:^4.3.2" - espree: "npm:^10.0.1" - globals: "npm:^14.0.0" - ignore: "npm:^5.2.0" - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.0" - minimatch: "npm:^3.1.2" - strip-json-comments: "npm:^3.1.1" - checksum: 10c2/4fb30c4c1adcc92f536787bbd7c342a3f2019153b443d28d3c97d13dc68da2fd4f9e16e78cfb2f38425c0fd13ab3118c4c90d0c02ad09d7c8b3efdfc8b047da7 +"@eslint/js@npm:^10.0.1": + version: 10.0.1 + resolution: "@eslint/js@npm:10.0.1" + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c2/85e047550cae14f9b6eab52dbc19cc193f1dfbdff86f2c3534202d501ab4cf1c46865b5033522fdf63e50314be9694931f892112c688d69ed9769562be6268d1 languageName: node linkType: hard -"@eslint/js@npm:9.20.0, @eslint/js@npm:^9.19.0": - version: 9.20.0 - resolution: "@eslint/js@npm:9.20.0" - checksum: 10c2/c3ce09c8f578b79295c513a07fc2332e8069d716cd7281c4c78da905a8b199962d32c7bddcd919b612e302b7f308e23a1c53cf3256c8fe3676d08ea14b0e0522 +"@eslint/object-schema@npm:^3.0.5": + version: 3.0.5 + resolution: "@eslint/object-schema@npm:3.0.5" + checksum: 10c2/e9cf37e70de2f4dc27ad2cdc8214f159e8cc7c8e71b954238c4abf8b5cc665a649573dfb59ebebff83c21b0cfc0eb72d9ccf85740d9c762291a941692ba6ff9d languageName: node linkType: hard -"@eslint/object-schema@npm:^2.1.6": - version: 2.1.6 - resolution: "@eslint/object-schema@npm:2.1.6" - checksum: 10c2/99b384e73b36ba78d960c57bb8c2082effd55ceb9b5e8913c035e09471c8f187cb47937fef0b86adf7c71f2789fe315e32270b03460a7d4c504c33258342024d +"@eslint/plugin-kit@npm:^0.7.1": + version: 0.7.1 + resolution: "@eslint/plugin-kit@npm:0.7.1" + dependencies: + "@eslint/core": "npm:^1.2.1" + levn: "npm:^0.4.1" + checksum: 10c2/3b5148f579f3b2e6b766c9cef9eb9f470e9a6706d776077a2e112dfb08ac2a553a5559b80d5a22e05bb63ba48b451c90cc392889a410c5acbf3027d57f1df332 languageName: node linkType: hard -"@eslint/plugin-kit@npm:^0.2.5": - version: 0.2.5 - resolution: "@eslint/plugin-kit@npm:0.2.5" - dependencies: - "@eslint/core": "npm:^0.10.0" - levn: "npm:^0.4.1" - checksum: 10c2/8bc75ed25631bddef89173f6a1c1b972634707635dfbff28cb1583b63f5e7168a94365cdbd6060f72d961d9881f6bf3e2b6a9e8cd9cca06565fb1c986a0d986e +"@gar/promise-retry@npm:^1.0.0, @gar/promise-retry@npm:^1.0.2": + version: 1.0.3 + resolution: "@gar/promise-retry@npm:1.0.3" + checksum: 10c2/2dbff87b09bfa54c62e79efdbadf3e27a055c67513b5881ad9a385c37860ea3e0223589d30a0429fad1d929da28f7d68323b1a489b05bf3fe340cd296cd151c7 languageName: node linkType: hard @@ -551,106 +411,103 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/retry@npm:^0.4.1": - version: 0.4.1 - resolution: "@humanwhocodes/retry@npm:0.4.1" - checksum: 10c2/08a79413457e3620aa62796e89267609bf35fa51bce032bc8a38d3bdbdf0bf4d68243df4ef02849f8cb0f7a9a193c9b8901571026f9b62c371313c0f2ebf9307 +"@humanwhocodes/retry@npm:^0.4.2": + version: 0.4.3 + resolution: "@humanwhocodes/retry@npm:0.4.3" + checksum: 10c2/fef49c561a887a81433f2f49366d10d403ebe5eeeabd865d111d5686ce8a7a40058767598e7eae7fcadef8cd75ab7acb8e34e6ee0586a008e084d2959760761c languageName: node linkType: hard -"@hutson/parse-repository-url@npm:^5.0.0": - version: 5.0.0 - resolution: "@hutson/parse-repository-url@npm:5.0.0" - checksum: 10c2/9f127cc6149a3020008611a225ae8ea64b8d9a922b5fcf3bdb025fd79b599b00c6da29515d6c9bfecc474d70a6f627acd8272fdc02900c9a0af21fa224668fcb +"@inquirer/ansi@npm:^2.0.5": + version: 2.0.5 + resolution: "@inquirer/ansi@npm:2.0.5" + checksum: 10c2/c499a28f341c16e333671c6bc8fa392b87d912e35b9f47a241b05d4ac19ebe0ec210a74598f6584f44da20efa0f803704295bf253408e8dbc5673782d0853b02 languageName: node linkType: hard -"@inquirer/core@npm:^10.1.7": - version: 10.1.7 - resolution: "@inquirer/core@npm:10.1.7" +"@inquirer/core@npm:^11.1.10": + version: 11.1.10 + resolution: "@inquirer/core@npm:11.1.10" dependencies: - "@inquirer/figures": "npm:^1.0.10" - "@inquirer/type": "npm:^3.0.4" - ansi-escapes: "npm:^4.3.2" + "@inquirer/ansi": "npm:^2.0.5" + "@inquirer/figures": "npm:^2.0.5" + "@inquirer/type": "npm:^4.0.5" cli-width: "npm:^4.1.0" - mute-stream: "npm:^2.0.0" + fast-wrap-ansi: "npm:^0.2.0" + mute-stream: "npm:^3.0.0" signal-exit: "npm:^4.1.0" - wrap-ansi: "npm:^6.2.0" - yoctocolors-cjs: "npm:^2.1.2" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c2/6b9b2a93f30ee2212c7e65722d03cf48d32cdd8253421e4519ce0f5353d22a86c1fa149cdc94e8a445dca76f6033059d9456c8522e5809c22f404b75c738dde5 + checksum: 10c2/7673f00812ba7f049dbd4f688959c637c73e4b6b62039b25978563b32b0d71186fa0ea52861f2592c52cd9112c0e1c65ea4aff982dd8e32ea41a6a2e4527e864 languageName: node linkType: hard -"@inquirer/expand@npm:^4.0.7": - version: 4.0.9 - resolution: "@inquirer/expand@npm:4.0.9" +"@inquirer/expand@npm:^5.0.13": + version: 5.0.14 + resolution: "@inquirer/expand@npm:5.0.14" dependencies: - "@inquirer/core": "npm:^10.1.7" - "@inquirer/type": "npm:^3.0.4" - yoctocolors-cjs: "npm:^2.1.2" + "@inquirer/core": "npm:^11.1.10" + "@inquirer/type": "npm:^4.0.5" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c2/4b14d3fc09151e6f303628b9fde8837d7a75ca3996a1647bc0bb9286cdd3c774f22149f4e9a698acf8efe23e67b786ada930cda5556d4075284d6b75d45ee360 + checksum: 10c2/d5ca4bdd281e9e8a972c01b2df6aac18adb1627a052555b1416155c8c95e20e79265452f452b7f92a27f6e4f933ce7109860e369601efef65f7fa70cb49b9a9e languageName: node linkType: hard -"@inquirer/figures@npm:^1.0.10": - version: 1.0.10 - resolution: "@inquirer/figures@npm:1.0.10" - checksum: 10c2/a975097c7db81e156a44132dd1f12a2e0befd4f663ec45d2a7d0b06ffba3a7916d08ea4ba599d65e2d941bfbd2549f8b3e8c681bdbb88f6979b95a4555e8523b +"@inquirer/figures@npm:^2.0.5": + version: 2.0.5 + resolution: "@inquirer/figures@npm:2.0.5" + checksum: 10c2/046106024ea5ccd758d7b141f06cf4d296b8ceda4b9c29a82dc20f185012917eed4b28df70ba50a7beed896de051e357f37770ffcfac4b8ac56dab4470f8300f languageName: node linkType: hard -"@inquirer/input@npm:^4.1.4": - version: 4.1.6 - resolution: "@inquirer/input@npm:4.1.6" +"@inquirer/input@npm:^5.0.12": + version: 5.0.13 + resolution: "@inquirer/input@npm:5.0.13" dependencies: - "@inquirer/core": "npm:^10.1.7" - "@inquirer/type": "npm:^3.0.4" + "@inquirer/core": "npm:^11.1.10" + "@inquirer/type": "npm:^4.0.5" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c2/458b4168e4abb9d2d7d6be3af94821c189a0512256afb9558d9b1c83557ad3ac3197dd50b89fdfe082b5b541c76d98fb9c75d0254430511c9f1243e1d2eaf596 + checksum: 10c2/f3fbdcd69081f9263649bacdb1cb125e60b4b9153176a1efd454325fd2124a4e6d998ca0fd56fa521a88c9ece94f1a2ed9cc27035176c58ad5620c8a6f6d01c8 languageName: node linkType: hard -"@inquirer/select@npm:^4.0.7": - version: 4.0.9 - resolution: "@inquirer/select@npm:4.0.9" +"@inquirer/select@npm:^5.1.4": + version: 5.1.5 + resolution: "@inquirer/select@npm:5.1.5" dependencies: - "@inquirer/core": "npm:^10.1.7" - "@inquirer/figures": "npm:^1.0.10" - "@inquirer/type": "npm:^3.0.4" - ansi-escapes: "npm:^4.3.2" - yoctocolors-cjs: "npm:^2.1.2" + "@inquirer/ansi": "npm:^2.0.5" + "@inquirer/core": "npm:^11.1.10" + "@inquirer/figures": "npm:^2.0.5" + "@inquirer/type": "npm:^4.0.5" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c2/e6524cb5536725e61871a74a2767518f78fc55278427eda0326958f61b435a76081f5c4e5d03b612f5bb4cef300fe5ea7f217bb58042d0edf880d9ddf5da94d0 + checksum: 10c2/9615e74444a9eb2d0bfce9f7314b3ed0777c30ce851af62a555d1b4b6ea8c51f1a004bca8f6119b72a78e830fa13e5d5ea6793f132807a6001911c1cb490d2f4 languageName: node linkType: hard -"@inquirer/type@npm:^3.0.4": - version: 3.0.4 - resolution: "@inquirer/type@npm:3.0.4" +"@inquirer/type@npm:^4.0.5": + version: 4.0.5 + resolution: "@inquirer/type@npm:4.0.5" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c2/2efc0dcef89bbefdd03b71abdd4298d1a8cd654cea43d2e58d909bf77043598b24ec2d5b0401594f0d143c8e6f91dd2f0a804617b31d38e5b32eba51eb78ce25 + checksum: 10c2/723a657196f19158c9e9eb96056de25be2d4509864a3f61aa4f82001140e97747b48fa4cc29c183ec32d76e2287e8dc0370d85852bb183da27d1af40fbab6466 languageName: node linkType: hard @@ -668,6 +525,15 @@ __metadata: languageName: node linkType: hard +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: "npm:^7.0.4" + checksum: 10c2/f590129946a596b10ea71613ff173b78970a501eb3bc4578e375ecd588b1bd0d55a6c41ee55f0341a60b0681c87e9850714a8b5f4052f4e2f10b59eab25291b6 + languageName: node + linkType: hard + "@isaacs/string-locale-compare@npm:^1.1.0": version: 1.1.0 resolution: "@isaacs/string-locale-compare@npm:1.1.0" @@ -682,10 +548,10 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.5.0": - version: 1.5.0 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" - checksum: 10c2/4e9d25cacc212a6901b3c284fdbb78d0b5c7273a5b8d9e8434654420fd0e6bc0801b18188423843652238e5116b1da0d1ca8a0d3818caf8d4b5f7a4d951d3524 +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.5.5": + version: 1.5.5 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" + checksum: 10c2/c1c664c889317fd668ac80c77ed4eac6ce74ad8c4e532feb98fee58b63acff529cb02d325bf45b0f3e581251214188ff4edee610afc209e241246a6bf3fc11d3 languageName: node linkType: hard @@ -699,18 +565,18 @@ __metadata: languageName: node linkType: hard -"@lerna-lite/cli@npm:3.12.0, @lerna-lite/cli@npm:^3.12.0": - version: 3.12.0 - resolution: "@lerna-lite/cli@npm:3.12.0" +"@lerna-lite/cli@npm:5.2.1, @lerna-lite/cli@npm:^5.2.1": + version: 5.2.1 + resolution: "@lerna-lite/cli@npm:5.2.1" dependencies: - "@lerna-lite/core": "npm:3.12.0" - "@lerna-lite/init": "npm:3.12.0" - "@lerna-lite/npmlog": "npm:3.12.0" - dedent: "npm:^1.5.3" - dotenv: "npm:^16.4.7" + "@lerna-lite/core": "npm:5.2.1" + "@lerna-lite/init": "npm:5.2.1" + "@lerna-lite/npmlog": "npm:5.1.0" + dedent: "npm:^1.7.2" + dotenv: "npm:^17.4.2" import-local: "npm:^3.2.0" load-json-file: "npm:^7.0.1" - yargs: "npm:^17.7.2" + yargs: "npm:^18.0.0" peerDependenciesMeta: "@lerna-lite/exec": optional: true @@ -726,174 +592,124 @@ __metadata: optional: true bin: lerna: dist/cli.js - checksum: 10c2/cff478a79722b9ed7ef3cd090862598a0d5045c8d04460caa6b423b9752d4fb212a66ffd21bbf9c822a03bce208a083f9b91ffad6b8340014daca6404bb92880 + checksum: 10c2/2104d60528ecf95db84ef335866666e5d4e47f5a91a37ad1abb2480970cf4f747ffce9eb8e9e793bbc51a73aaba195e006fb5de8e970a7cf3c8eff3f8a59feec languageName: node linkType: hard -"@lerna-lite/core@npm:3.12.0": - version: 3.12.0 - resolution: "@lerna-lite/core@npm:3.12.0" - dependencies: - "@inquirer/expand": "npm:^4.0.7" - "@inquirer/input": "npm:^4.1.4" - "@inquirer/select": "npm:^4.0.7" - "@lerna-lite/npmlog": "npm:3.12.0" - "@npmcli/run-script": "npm:^8.1.0" - clone-deep: "npm:^4.0.1" - config-chain: "npm:^1.1.13" - cosmiconfig: "npm:^9.0.0" - dedent: "npm:^1.5.3" - execa: "npm:^8.0.1" - fs-extra: "npm:^11.3.0" - glob-parent: "npm:^6.0.2" - is-ci: "npm:^4.1.0" +"@lerna-lite/core@npm:5.2.1": + version: 5.2.1 + resolution: "@lerna-lite/core@npm:5.2.1" + dependencies: + "@inquirer/expand": "npm:^5.0.13" + "@inquirer/input": "npm:^5.0.12" + "@inquirer/select": "npm:^5.1.4" + "@lerna-lite/npmlog": "npm:5.1.0" + "@npmcli/run-script": "npm:^10.0.4" + ci-info: "npm:^4.4.0" + dedent: "npm:^1.7.2" json5: "npm:^2.2.3" + lilconfig: "npm:^3.1.3" load-json-file: "npm:^7.0.1" - minimatch: "npm:^9.0.5" - multimatch: "npm:^7.0.0" - npm-package-arg: "npm:^11.0.3" - p-map: "npm:^7.0.3" - p-queue: "npm:^8.1.0" - resolve-from: "npm:^5.0.0" - semver: "npm:^7.7.0" - slash: "npm:^5.1.0" - strong-log-transformer: "npm:^2.1.0" - tinyglobby: "npm:^0.2.10" - tinyrainbow: "npm:^2.0.0" - write-file-atomic: "npm:^5.0.1" - write-json-file: "npm:^6.0.0" - write-package: "npm:^7.1.0" - yaml: "npm:2.7.0" - checksum: 10c2/d59fe45c10f03f0ec10974daeccbd244ba8b19a5561bd04cda9bd2ed54c530b1e1f21ad1dbbe3c9107abd116c1bb417ef2a9b61e22c7ac4b2684853c78affb6e + npm-package-arg: "npm:^13.0.2" + p-map: "npm:^7.0.4" + p-queue: "npm:^9.2.0" + semver: "npm:^7.7.4" + tinyexec: "npm:^1.1.2" + tinyglobby: "npm:^0.2.16" + write-file-atomic: "npm:^7.0.1" + write-json-file: "npm:^7.0.0" + yaml: "npm:^2.8.3" + zeptomatch: "npm:^2.1.0" + checksum: 10c2/56b4b767a1ece008d4856695089b45a2ffe480422e65b617d9f11017bd7e2f352609b9d1aea75416e4d95f4ab0a33a41de69875c9e771b4dae6d6389f713d502 languageName: node linkType: hard -"@lerna-lite/init@npm:3.12.0": - version: 3.12.0 - resolution: "@lerna-lite/init@npm:3.12.0" +"@lerna-lite/init@npm:5.2.1": + version: 5.2.1 + resolution: "@lerna-lite/init@npm:5.2.1" dependencies: - "@lerna-lite/core": "npm:3.12.0" - fs-extra: "npm:^11.3.0" - p-map: "npm:^7.0.3" - write-json-file: "npm:^6.0.0" - checksum: 10c2/ac9d3996913b6c0a22252714bb40061dbf4ab1b6c6d1b35cc31559aced7e7c6ae8db966d44f76860899105042ba67b8533cf957ba1909d9c5b6e0a1deda2e8e2 + "@lerna-lite/core": "npm:5.2.1" + p-map: "npm:^7.0.4" + write-json-file: "npm:^7.0.0" + checksum: 10c2/66b3156f11d6ff3049fdbedbcc2083b0ec7c84f87b8d675f33c39923cbd1c9fa255837d9f94b277dc187e45c28f476f10116927bf4392dfe84a78a51ce277bfa languageName: node linkType: hard -"@lerna-lite/npmlog@npm:3.12.0": - version: 3.12.0 - resolution: "@lerna-lite/npmlog@npm:3.12.0" +"@lerna-lite/npmlog@npm:5.1.0": + version: 5.1.0 + resolution: "@lerna-lite/npmlog@npm:5.1.0" dependencies: - aproba: "npm:^2.0.0" - color-support: "npm:^1.1.3" - console-control-strings: "npm:^1.1.0" - has-unicode: "npm:^2.0.1" - set-blocking: "npm:^2.0.0" + fast-string-width: "npm:^3.0.2" signal-exit: "npm:^4.1.0" - string-width: "npm:^7.2.0" - wide-align: "npm:^1.1.5" - checksum: 10c2/8dd0beb69230cef5ee43f0ea3465add2e36dcc18a2692d0d3acea4518ae7dd186bd5051170aef4a4543845de24ac69c9e82c2d46e5517e9d7ac500b9e1dc35d5 + checksum: 10c2/373ebfacd4461eeba65853f13391c4b00715fe5e603f34237992ae39146c032d2507cb9a85fb000c048cad6c41e0fb5741572c9ab5dab6cd88cf4d596c02e1e6 languageName: node linkType: hard -"@lerna-lite/publish@npm:^3.12.0": - version: 3.12.0 - resolution: "@lerna-lite/publish@npm:3.12.0" - dependencies: - "@lerna-lite/cli": "npm:3.12.0" - "@lerna-lite/core": "npm:3.12.0" - "@lerna-lite/npmlog": "npm:3.12.0" - "@lerna-lite/version": "npm:3.12.0" - "@npmcli/arborist": "npm:^7.5.4" - "@npmcli/package-json": "npm:^5.2.1" - byte-size: "npm:^9.0.1" +"@lerna-lite/publish@npm:^5.2.1": + version: 5.2.1 + resolution: "@lerna-lite/publish@npm:5.2.1" + dependencies: + "@lerna-lite/cli": "npm:5.2.1" + "@lerna-lite/core": "npm:5.2.1" + "@lerna-lite/npmlog": "npm:5.1.0" + "@lerna-lite/version": "npm:5.2.1" + "@npmcli/arborist": "npm:^9.4.3" + "@npmcli/package-json": "npm:^7.0.5" + ci-info: "npm:^4.4.0" columnify: "npm:^1.6.0" - fs-extra: "npm:^11.3.0" - has-unicode: "npm:^2.0.1" - libnpmaccess: "npm:^8.0.6" - libnpmpublish: "npm:^9.0.9" - normalize-path: "npm:^3.0.0" - npm-package-arg: "npm:^11.0.3" - npm-packlist: "npm:^8.0.2" - npm-registry-fetch: "npm:^17.1.0" - p-map: "npm:^7.0.3" - p-pipe: "npm:^4.0.0" - pacote: "npm:^18.0.6" - semver: "npm:^7.7.0" - ssri: "npm:^11.0.0" - tar: "npm:^6.2.1" - temp-dir: "npm:^3.0.0" - tinyglobby: "npm:^0.2.10" - tinyrainbow: "npm:^2.0.0" - checksum: 10c2/aa4bb1d7189ef312a9c0f1234dce3115db72f452fb52879f873d1e1bb471113189d9a2f59d21571fa34c0b008a0b7f4dd6412c23ed1573470302cdaf5aa0914d - languageName: node - linkType: hard - -"@lerna-lite/version@npm:3.12.0, @lerna-lite/version@npm:^3.12.0": - version: 3.12.0 - resolution: "@lerna-lite/version@npm:3.12.0" - dependencies: - "@lerna-lite/cli": "npm:3.12.0" - "@lerna-lite/core": "npm:3.12.0" - "@lerna-lite/npmlog": "npm:3.12.0" + libnpmaccess: "npm:^10.0.3" + libnpmpublish: "npm:^11.1.3" + npm-package-arg: "npm:^13.0.2" + npm-packlist: "npm:^10.0.4" + npm-registry-fetch: "npm:^19.1.1" + p-map: "npm:^7.0.4" + pacote: "npm:^21.5.0" + semver: "npm:^7.7.4" + ssri: "npm:^13.0.1" + tar: "npm:^7.5.13" + tinyglobby: "npm:^0.2.16" + checksum: 10c2/afeb466e4018d9c3875d00c13923e7757aa747a79c99c16bdae00ff3ffead23ec88e60dabad6d414cfab8bb33f8ca619043dd69a102c7849e3823ecd478d2c48 + languageName: node + linkType: hard + +"@lerna-lite/version@npm:5.2.1, @lerna-lite/version@npm:^5.2.1": + version: 5.2.1 + resolution: "@lerna-lite/version@npm:5.2.1" + dependencies: + "@conventional-changelog/git-client": "npm:^2.7.0" + "@lerna-lite/cli": "npm:5.2.1" + "@lerna-lite/core": "npm:5.2.1" + "@lerna-lite/npmlog": "npm:5.1.0" "@octokit/plugin-enterprise-rest": "npm:^6.0.1" - "@octokit/rest": "npm:^21.1.0" - conventional-changelog-angular: "npm:^7.0.0" - conventional-changelog-core: "npm:^7.0.0" - conventional-changelog-writer: "npm:^7.0.1" - conventional-commits-parser: "npm:^5.0.0" - conventional-recommended-bump: "npm:^9.0.0" - dedent: "npm:^1.5.3" - fs-extra: "npm:^11.3.0" - get-stream: "npm:^9.0.1" - git-url-parse: "npm:^16.0.0" - graceful-fs: "npm:^4.2.11" - is-stream: "npm:^4.0.1" + "@octokit/rest": "npm:^22.0.1" + conventional-changelog: "npm:^7.2.0" + conventional-changelog-angular: "npm:^8.3.1" + conventional-changelog-writer: "npm:^8.4.0" + conventional-commits-parser: "npm:^6.4.0" + conventional-recommended-bump: "npm:^11.2.0" + dedent: "npm:^1.7.2" + git-url-parse: "npm:^16.1.0" load-json-file: "npm:^7.0.1" - make-dir: "npm:^5.0.0" - minimatch: "npm:^9.0.5" new-github-release-url: "npm:^2.0.0" - node-fetch: "npm:^3.3.2" - npm-package-arg: "npm:^11.0.3" - p-limit: "npm:^6.2.0" - p-map: "npm:^7.0.3" - p-pipe: "npm:^4.0.0" - p-reduce: "npm:^3.0.0" - pify: "npm:^6.1.0" - semver: "npm:^7.7.0" - slash: "npm:^5.1.0" - temp-dir: "npm:^3.0.0" - tinyrainbow: "npm:^2.0.0" - uuid: "npm:^11.0.5" - write-json-file: "npm:^6.0.0" - checksum: 10c2/a0cff8c34333d81e3ffd2504745158642ebac407a9d0e53846227f0289d3593a89de5f3900c201c4f3fd7d0b9261f25d46c0bf39a0d273e84f82dca3c7280895 - languageName: node - linkType: hard - -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5" - dependencies: - "@nodelib/fs.stat": "npm:2.0.5" - run-parallel: "npm:^1.1.9" - checksum: 10c2/27dfbc8be6a8aecbc1bcf961f16b8588e296a83741d0d8d804795cdc8065b6650e9c3df6f791ed07d0efa2de1ed54227815460be7fe4c9c1a1a6009264ff3229 - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 10c2/135352837ab06353a573a0e9da7908ef6eec60f738c3b590bbb360793a054aca83d5587b9c280b7a71a714a005fbe9c4da3919056cf27a88a0c4562febca4205 + npm-package-arg: "npm:^13.0.2" + p-limit: "npm:^7.3.0" + p-map: "npm:^7.0.4" + semver: "npm:^7.7.4" + write-json-file: "npm:^7.0.0" + zeptomatch: "npm:^2.1.0" + checksum: 10c2/62afe6cb87496755368f23aad12eda8b25b6ad3b161e70dc6eb0ef494e04e69818b538aa257cf6b15e1c57a1545fac95760e593eb71a6ea13bbf1e70a74c96fc languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" +"@napi-rs/wasm-runtime@npm:^1.1.4": + version: 1.1.4 + resolution: "@napi-rs/wasm-runtime@npm:1.1.4" dependencies: - "@nodelib/fs.scandir": "npm:2.1.5" - fastq: "npm:^1.6.0" - checksum: 10c2/50b1a0ade654f270c6d98fb2e55b171d66ac5ed4bb8ac837f8ed5f071ad068fa43fd6c890bfa6d1d5846f9d5f35552cd7d648a7736548df1a0af6e54a47f0fce + "@tybys/wasm-util": "npm:^0.10.1" + peerDependencies: + "@emnapi/core": ^1.7.1 + "@emnapi/runtime": ^1.7.1 + checksum: 10c2/ec865ed6b3d09b438c27a4f0b393d159a373e6c6e6f393ed63c9229ee37f0061279f23145043a8b1909ad4884cb10ec19fef4ec960d7043706fc496402fa2f21 languageName: node linkType: hard @@ -910,52 +726,64 @@ __metadata: languageName: node linkType: hard -"@npmcli/arborist@npm:^7.5.4": - version: 7.5.4 - resolution: "@npmcli/arborist@npm:7.5.4" +"@npmcli/agent@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/agent@npm:4.0.0" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^11.2.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c2/29aaf2b03a22f0dea8010b4794a10512a31e25f2ec700cb01462dd597e13b89d3acb347e158496b441ab9b17e12df37db1dee22dbf60858818ac4741d0b0a0d0 + languageName: node + linkType: hard + +"@npmcli/arborist@npm:^9.4.3": + version: 9.5.0 + resolution: "@npmcli/arborist@npm:9.5.0" dependencies: + "@gar/promise-retry": "npm:^1.0.0" "@isaacs/string-locale-compare": "npm:^1.1.0" - "@npmcli/fs": "npm:^3.1.1" - "@npmcli/installed-package-contents": "npm:^2.1.0" - "@npmcli/map-workspaces": "npm:^3.0.2" - "@npmcli/metavuln-calculator": "npm:^7.1.1" - "@npmcli/name-from-folder": "npm:^2.0.0" - "@npmcli/node-gyp": "npm:^3.0.0" - "@npmcli/package-json": "npm:^5.1.0" - "@npmcli/query": "npm:^3.1.0" - "@npmcli/redact": "npm:^2.0.0" - "@npmcli/run-script": "npm:^8.1.0" - bin-links: "npm:^4.0.4" - cacache: "npm:^18.0.3" - common-ancestor-path: "npm:^1.0.1" - hosted-git-info: "npm:^7.0.2" - json-parse-even-better-errors: "npm:^3.0.2" + "@npmcli/fs": "npm:^5.0.0" + "@npmcli/installed-package-contents": "npm:^4.0.0" + "@npmcli/map-workspaces": "npm:^5.0.0" + "@npmcli/metavuln-calculator": "npm:^9.0.2" + "@npmcli/name-from-folder": "npm:^4.0.0" + "@npmcli/node-gyp": "npm:^5.0.0" + "@npmcli/package-json": "npm:^7.0.0" + "@npmcli/query": "npm:^5.0.0" + "@npmcli/redact": "npm:^4.0.0" + "@npmcli/run-script": "npm:^10.0.0" + bin-links: "npm:^6.0.0" + cacache: "npm:^20.0.1" + common-ancestor-path: "npm:^2.0.0" + hosted-git-info: "npm:^9.0.0" json-stringify-nice: "npm:^1.1.4" - lru-cache: "npm:^10.2.2" - minimatch: "npm:^9.0.4" - nopt: "npm:^7.2.1" - npm-install-checks: "npm:^6.2.0" - npm-package-arg: "npm:^11.0.2" - npm-pick-manifest: "npm:^9.0.1" - npm-registry-fetch: "npm:^17.0.1" - pacote: "npm:^18.0.6" - parse-conflict-json: "npm:^3.0.0" - proc-log: "npm:^4.2.0" - proggy: "npm:^2.0.0" + lru-cache: "npm:^11.2.1" + minimatch: "npm:^10.0.3" + nopt: "npm:^9.0.0" + npm-install-checks: "npm:^8.0.0" + npm-package-arg: "npm:^13.0.0" + npm-pick-manifest: "npm:^11.0.1" + npm-registry-fetch: "npm:^19.0.0" + pacote: "npm:^21.0.2" + parse-conflict-json: "npm:^5.0.1" + proc-log: "npm:^6.0.0" + proggy: "npm:^4.0.0" promise-all-reject-late: "npm:^1.0.0" promise-call-limit: "npm:^3.0.1" - read-package-json-fast: "npm:^3.0.2" semver: "npm:^7.3.7" - ssri: "npm:^10.0.6" + ssri: "npm:^13.0.0" treeverse: "npm:^3.0.0" - walk-up-path: "npm:^3.0.1" + walk-up-path: "npm:^4.0.0" bin: arborist: bin/index.js - checksum: 10c2/b0aacf950145c2d3e20191e731fb3a2ff125620883f949694896d53d59104601a86f51a5edab648792d645c051c9eb3ce3151b960d21bc691aa82c374c156c46 + checksum: 10c2/8f3aebd7596496834514c8c9736631858a69de6171eadfb1187fb15817054f8c337fcb18464663d6976fe618e7a82398614ee02e5cbcd97f421bb9c0bbc55cb9 languageName: node linkType: hard -"@npmcli/fs@npm:^3.1.0, @npmcli/fs@npm:^3.1.1": +"@npmcli/fs@npm:^3.1.0": version: 3.1.1 resolution: "@npmcli/fs@npm:3.1.1" dependencies: @@ -964,174 +792,182 @@ __metadata: languageName: node linkType: hard -"@npmcli/git@npm:^5.0.0": - version: 5.0.7 - resolution: "@npmcli/git@npm:5.0.7" +"@npmcli/fs@npm:^5.0.0": + version: 5.0.0 + resolution: "@npmcli/fs@npm:5.0.0" dependencies: - "@npmcli/promise-spawn": "npm:^7.0.0" - lru-cache: "npm:^10.0.1" - npm-pick-manifest: "npm:^9.0.0" - proc-log: "npm:^4.0.0" - promise-inflight: "npm:^1.0.1" - promise-retry: "npm:^2.0.1" semver: "npm:^7.3.5" - which: "npm:^4.0.0" - checksum: 10c2/8a288e8c135e3a9f2cddba71ea3bfb1e2228df9ce47604377c41a9a4638947bcb0535372bc2afaf25ad9092a53188da831c071f674f2b2a3e172ab475847bd81 + checksum: 10c2/2c72721d73ffb164c520027e3cd17c70397dff2fbe6e2191d8885e9e5db0c63e317f795730ec2150e15b5ca72df5c2e8c1a0925a3698cd82379f15f30be52de8 languageName: node linkType: hard -"@npmcli/installed-package-contents@npm:^2.0.1, @npmcli/installed-package-contents@npm:^2.1.0": - version: 2.1.0 - resolution: "@npmcli/installed-package-contents@npm:2.1.0" +"@npmcli/git@npm:^7.0.0": + version: 7.0.2 + resolution: "@npmcli/git@npm:7.0.2" + dependencies: + "@gar/promise-retry": "npm:^1.0.0" + "@npmcli/promise-spawn": "npm:^9.0.0" + ini: "npm:^6.0.0" + lru-cache: "npm:^11.2.1" + npm-pick-manifest: "npm:^11.0.1" + proc-log: "npm:^6.0.0" + semver: "npm:^7.3.5" + which: "npm:^6.0.0" + checksum: 10c2/f28c24018a29981da136b8c3d33ee716a7ceb28498ec1f5e3ec7953d950a4c94881aea2d8828b7c46788463c0d3fa6a0aca70e9d4d728615f5808db532f8d702 + languageName: node + linkType: hard + +"@npmcli/installed-package-contents@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/installed-package-contents@npm:4.0.0" dependencies: - npm-bundled: "npm:^3.0.0" - npm-normalize-package-bin: "npm:^3.0.0" + npm-bundled: "npm:^5.0.0" + npm-normalize-package-bin: "npm:^5.0.0" bin: installed-package-contents: bin/index.js - checksum: 10c2/3456728c5312b4ef38ca74d4e731e9988f0323726489e0c63f559feea915aa96afa3eeee3437d480e5c9f521c16646447c714ce4aa7858106ddea4360aec04b6 + checksum: 10c2/e44fba9a5bf9bead1c2c3948a543fa85cab80400f015c0d662dfd530cb233d6e0f31a403351bc134ca79f4680b55a5cd3780a3f66ec65205976afe547821dbe7 languageName: node linkType: hard -"@npmcli/map-workspaces@npm:^3.0.2": - version: 3.0.6 - resolution: "@npmcli/map-workspaces@npm:3.0.6" +"@npmcli/map-workspaces@npm:^5.0.0": + version: 5.0.3 + resolution: "@npmcli/map-workspaces@npm:5.0.3" dependencies: - "@npmcli/name-from-folder": "npm:^2.0.0" - glob: "npm:^10.2.2" - minimatch: "npm:^9.0.0" - read-package-json-fast: "npm:^3.0.0" - checksum: 10c2/041292edfefad5a75b99ca60a50489131e9a6833afdc2f6c469d77976fa757e4a2115fcc05d0ffac9512f9f34433467f532b3ed7f75b03ea20c7b05fee57d31c + "@npmcli/name-from-folder": "npm:^4.0.0" + "@npmcli/package-json": "npm:^7.0.0" + glob: "npm:^13.0.0" + minimatch: "npm:^10.0.3" + checksum: 10c2/4721702ae00dd13b4c00c27b656d0cc46fc357fdda1b8b0220f32b0a7a61aab65a72821ff425db61bee93f7f857bcfcb577cfae701d4ed646c78df37b958d7d7 languageName: node linkType: hard -"@npmcli/metavuln-calculator@npm:^7.1.1": - version: 7.1.1 - resolution: "@npmcli/metavuln-calculator@npm:7.1.1" +"@npmcli/metavuln-calculator@npm:^9.0.2": + version: 9.0.3 + resolution: "@npmcli/metavuln-calculator@npm:9.0.3" dependencies: - cacache: "npm:^18.0.0" - json-parse-even-better-errors: "npm:^3.0.0" - pacote: "npm:^18.0.0" - proc-log: "npm:^4.1.0" + cacache: "npm:^20.0.0" + json-parse-even-better-errors: "npm:^5.0.0" + pacote: "npm:^21.0.0" + proc-log: "npm:^6.0.0" semver: "npm:^7.3.5" - checksum: 10c2/32d3cac2826d4b8b3bf1e7b2fcfc0eab1cff49017f44ca866fd9e1fae8f74cabcca0529a025e762ec4608773383c2c9eae1d42d3db9da72a57258d92f94050ce + checksum: 10c2/d9dbecf68476b12fcd26002582fb9ad54764261d6d7a58600978a33688be1787987dad8a1fadff94c3ab633c9b2f88fa31e74ccc2fa614e680c5cfe93b2cdecf languageName: node linkType: hard -"@npmcli/name-from-folder@npm:^2.0.0": - version: 2.0.0 - resolution: "@npmcli/name-from-folder@npm:2.0.0" - checksum: 10c2/ceef4f379e8ac6ba37ec8c41886bc71cea16b4ae7ba8f3cee72b3786a1be4b2d0455c973084ea54d38f89f04797233e9e0cd6552788551391827faaadc4f8264 +"@npmcli/name-from-folder@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/name-from-folder@npm:4.0.0" + checksum: 10c2/502dcf2027e685e50e9296cf8656a0b40b587d0f61725d2c40c8ad73b9e31f743860c974691db7026361c4e875de52434b3fd857bd00e542221b347cb81e9668 languageName: node linkType: hard -"@npmcli/node-gyp@npm:^3.0.0": - version: 3.0.0 - resolution: "@npmcli/node-gyp@npm:3.0.0" - checksum: 10c2/b972b24badef7f825c0299b3fa272e44aec5018013b1a1dc4099bf0e433618bc8052601b17c1a61325271d7ef082e25dbc750bcbd92ef25c664054e88e367d98 +"@npmcli/node-gyp@npm:^5.0.0": + version: 5.0.0 + resolution: "@npmcli/node-gyp@npm:5.0.0" + checksum: 10c2/83c1769af52108c0be19fdbd7a1d2fef52f25212a8558e786c441a7d3dfa54b6c1294d816193f3de6aa1a827ba97f66ae1bf93291c23196ae9df1c3e4be9b5f5 languageName: node linkType: hard -"@npmcli/package-json@npm:^5.0.0, @npmcli/package-json@npm:^5.1.0, @npmcli/package-json@npm:^5.2.1": - version: 5.2.1 - resolution: "@npmcli/package-json@npm:5.2.1" +"@npmcli/package-json@npm:^7.0.0, @npmcli/package-json@npm:^7.0.5": + version: 7.0.5 + resolution: "@npmcli/package-json@npm:7.0.5" dependencies: - "@npmcli/git": "npm:^5.0.0" - glob: "npm:^10.2.2" - hosted-git-info: "npm:^7.0.0" - json-parse-even-better-errors: "npm:^3.0.0" - normalize-package-data: "npm:^6.0.0" - proc-log: "npm:^4.0.0" + "@npmcli/git": "npm:^7.0.0" + glob: "npm:^13.0.0" + hosted-git-info: "npm:^9.0.0" + json-parse-even-better-errors: "npm:^5.0.0" + proc-log: "npm:^6.0.0" semver: "npm:^7.5.3" - checksum: 10c2/0b41ae047bcf6f06b269804ec500c3ef4697e4e94e3671d6dbb5186b7eed6fac2bf8081272709f476735a45320d944dc436ba72829e4270ef2a68cefc0142244 + spdx-expression-parse: "npm:^4.0.0" + checksum: 10c2/db3034298af49b1642e4717089dc282b0ba1171093c79908dd6d5210ed0f981c1f7c6f9b2b0d83b7300b2a352d6f1025134629772cf4f0597650a5d93f92a755 languageName: node linkType: hard -"@npmcli/promise-spawn@npm:^7.0.0": - version: 7.0.2 - resolution: "@npmcli/promise-spawn@npm:7.0.2" +"@npmcli/promise-spawn@npm:^9.0.0": + version: 9.0.1 + resolution: "@npmcli/promise-spawn@npm:9.0.1" dependencies: - which: "npm:^4.0.0" - checksum: 10c2/c7a5bc9d3cb9f60bc8851163bfb36a93fd94e94c5d2ccd3c2e0c2fe9d9449da61b339644d32df6ed44b3fcab758be9490b57b9f0273d10274635a8d618746c7e + which: "npm:^6.0.0" + checksum: 10c2/4ef7872e362923b5916749724dc6a1e75d35b9998e3b41e49e4a0971cfb412a05d0e96fa6676bc00c0a86550a34c915600d64263d837ec1e3faa85319a1c1b0e languageName: node linkType: hard -"@npmcli/query@npm:^3.1.0": - version: 3.1.0 - resolution: "@npmcli/query@npm:3.1.0" +"@npmcli/query@npm:^5.0.0": + version: 5.0.0 + resolution: "@npmcli/query@npm:5.0.0" dependencies: - postcss-selector-parser: "npm:^6.0.10" - checksum: 10c2/698ded900bd755c18335fe0daa13f3cf6df34c299766b1e5a0d1048181d50577062db0abb51ba2306613f0d77c1dc1b521c3a00c91f2d7f3fb86ab1a33c25994 + postcss-selector-parser: "npm:^7.0.0" + checksum: 10c2/cd2257a7f80888b36e527e42aea6c44e1ba57093b0d3ef6d725674f9258397cf2301ddddd45e4783469f0686f3403f39cdd3e148f032beee15c2e77da1847393 languageName: node linkType: hard -"@npmcli/redact@npm:^2.0.0": - version: 2.0.0 - resolution: "@npmcli/redact@npm:2.0.0" - checksum: 10c2/ac80977c887feef18d194722253a5a64d7dd9e623d257eda0def27242f507a4d275a30deca43a5f97f05d2886e6e04dbae7980c726b745d190a3fbd9061a1b49 +"@npmcli/redact@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/redact@npm:4.0.0" + checksum: 10c2/866fd356ebc11547e38e3d2798e14eef1061c801479563e4f57f000ea5c45951feaa35ef20ea9f431d482a5a165460434eb34a0d9bd5ccaab721ead67e43b7dd languageName: node linkType: hard -"@npmcli/run-script@npm:^8.0.0, @npmcli/run-script@npm:^8.1.0": - version: 8.1.0 - resolution: "@npmcli/run-script@npm:8.1.0" +"@npmcli/run-script@npm:^10.0.0, @npmcli/run-script@npm:^10.0.4": + version: 10.0.4 + resolution: "@npmcli/run-script@npm:10.0.4" dependencies: - "@npmcli/node-gyp": "npm:^3.0.0" - "@npmcli/package-json": "npm:^5.0.0" - "@npmcli/promise-spawn": "npm:^7.0.0" - node-gyp: "npm:^10.0.0" - proc-log: "npm:^4.0.0" - which: "npm:^4.0.0" - checksum: 10c2/1fab5039eb4cff836cbef04f3da38ff365906ff2a1b07dfb1dc36d419f334c85a49d0031137903e92f6de5f07521cd7ac55f578bc40b92ea1b99cdcb640ea1ec + "@npmcli/node-gyp": "npm:^5.0.0" + "@npmcli/package-json": "npm:^7.0.0" + "@npmcli/promise-spawn": "npm:^9.0.0" + node-gyp: "npm:^12.1.0" + proc-log: "npm:^6.0.0" + checksum: 10c2/69906d82f373d4e51b75a17bd8ee9698fd536f0349a1dc6f0a9a6355e2cd9dd346ef7ce6beec9c9481d2bbb764191a8be137f9ad49d4d0ca00e44f6a5e482664 languageName: node linkType: hard -"@octokit/auth-token@npm:^5.0.0": - version: 5.1.1 - resolution: "@octokit/auth-token@npm:5.1.1" - checksum: 10c2/c9b0ee07c19164e4c8fd97caefe41208c329012a089e46dfdf36881ae7e38971aa58360c8560672d938a3df76f5846255e08cdd9b1b790b4ff872d30110ea506 +"@octokit/auth-token@npm:^6.0.0": + version: 6.0.0 + resolution: "@octokit/auth-token@npm:6.0.0" + checksum: 10c2/cf651fbcc12d556d333e217855f6856cddb055fa31d4e7eb1e4734ac48fdef1ce7056149eb8a4582d55e6f271f052ae4b3ece364603112c88128f281d2c09c6a languageName: node linkType: hard -"@octokit/core@npm:^6.1.4": - version: 6.1.4 - resolution: "@octokit/core@npm:6.1.4" - dependencies: - "@octokit/auth-token": "npm:^5.0.0" - "@octokit/graphql": "npm:^8.1.2" - "@octokit/request": "npm:^9.2.1" - "@octokit/request-error": "npm:^6.1.7" - "@octokit/types": "npm:^13.6.2" - before-after-hook: "npm:^3.0.2" +"@octokit/core@npm:^7.0.6": + version: 7.0.6 + resolution: "@octokit/core@npm:7.0.6" + dependencies: + "@octokit/auth-token": "npm:^6.0.0" + "@octokit/graphql": "npm:^9.0.3" + "@octokit/request": "npm:^10.0.6" + "@octokit/request-error": "npm:^7.0.2" + "@octokit/types": "npm:^16.0.0" + before-after-hook: "npm:^4.0.0" universal-user-agent: "npm:^7.0.0" - checksum: 10c2/cbe017cbde22d9fc7c5918eaf7d7398344fca225c35dbabbf6a3ef63575ab3333f027b67a0bfbd2fc3d48ff03876481547b3dea4d3216d55f4e5231c22f2f60c + checksum: 10c2/e1388700a7f828d7d97844ec3c7769a0779f121cda8e0fe805f71933fe1d13264d753c7cf3bfa45216707ac1c830a6932b15489ce6aa7df48d52ecd8e076dc39 languageName: node linkType: hard -"@octokit/endpoint@npm:^10.1.3": - version: 10.1.3 - resolution: "@octokit/endpoint@npm:10.1.3" +"@octokit/endpoint@npm:^11.0.3": + version: 11.0.3 + resolution: "@octokit/endpoint@npm:11.0.3" dependencies: - "@octokit/types": "npm:^13.6.2" + "@octokit/types": "npm:^16.0.0" universal-user-agent: "npm:^7.0.2" - checksum: 10c2/0ba1f34a341fc9fc4bf4b8bd791578ab0fa893b2e1743a6f67e5119a8b97a8eb5b81e3bc49d8d6093467007601f81b749e4550b34f7952b54109f11e742b2e5e + checksum: 10c2/4f2d14df44d86f95447040c892c9842542f78009db8839e6246a01641922f5fa72bed5c2ed22bb30e54b1ad5642901d955ed656d923adafd5e0f27ee052d750b languageName: node linkType: hard -"@octokit/graphql@npm:^8.1.2": - version: 8.2.1 - resolution: "@octokit/graphql@npm:8.2.1" +"@octokit/graphql@npm:^9.0.3": + version: 9.0.3 + resolution: "@octokit/graphql@npm:9.0.3" dependencies: - "@octokit/request": "npm:^9.2.2" - "@octokit/types": "npm:^13.8.0" + "@octokit/request": "npm:^10.0.6" + "@octokit/types": "npm:^16.0.0" universal-user-agent: "npm:^7.0.0" - checksum: 10c2/8c701e109d7861d77b65f9f5dc0f19feb3b78148951fa6107756bcbcab89e0ec95b552e7ce2cb29901275d2c464ab3182ae14dc3459f2f75d8d386a7467f47a5 + checksum: 10c2/bc5a39bc1fccaa4d20f96e1ae1d850591aeeddfb38baff745ea96f106592bdb0cd906e2b9cdf7d334cb5b73906240821935343b5f0d237e35bedbdc59b8b2359 languageName: node linkType: hard -"@octokit/openapi-types@npm:^23.0.1": - version: 23.0.1 - resolution: "@octokit/openapi-types@npm:23.0.1" - checksum: 10c2/8588453f406cfb12d04589d37dde04cd70473d3d17e65f48388f3fbcf33c886231daf3bd3840986ac90274bff26e302ac73164dedc6cfe8e9ebbb40202b9167f +"@octokit/openapi-types@npm:^27.0.0": + version: 27.0.0 + resolution: "@octokit/openapi-types@npm:27.0.0" + checksum: 10c2/97a20c011b97326cb7262156919f8e9432decabffac7733137106cfdb55f420075fbfdf3bc81da644d0b8d82787b61eef55e34d63dc06a7caf6d0ddb9b7d22ab languageName: node linkType: hard @@ -1142,77 +978,86 @@ __metadata: languageName: node linkType: hard -"@octokit/plugin-paginate-rest@npm:^11.4.2": - version: 11.4.2 - resolution: "@octokit/plugin-paginate-rest@npm:11.4.2" +"@octokit/plugin-paginate-rest@npm:^14.0.0": + version: 14.0.0 + resolution: "@octokit/plugin-paginate-rest@npm:14.0.0" dependencies: - "@octokit/types": "npm:^13.7.0" + "@octokit/types": "npm:^16.0.0" peerDependencies: "@octokit/core": ">=6" - checksum: 10c2/b187c5a67b269c70ee99445d4368f043112cef59a9ded404d368e5a2e783eb37f29c3cd66083b951c1fb2b0c1bbabe530199c1d0212549a66943e831ea8ab5a0 + checksum: 10c2/d42ae20dfe735324a6f60869cbad64ee1d9b0c7114d162f49ca46075c48e896b2e8463fdf77c4c9e169fcc860de391757699fe2b38680dde6a3757f0b83958b0 languageName: node linkType: hard -"@octokit/plugin-request-log@npm:^5.3.1": - version: 5.3.1 - resolution: "@octokit/plugin-request-log@npm:5.3.1" +"@octokit/plugin-request-log@npm:^6.0.0": + version: 6.0.0 + resolution: "@octokit/plugin-request-log@npm:6.0.0" peerDependencies: "@octokit/core": ">=6" - checksum: 10c2/aad00e6c851912ca0d671112ab18cc09f22cb7cb72795f66adc917026f41469010772ebcce3db966d352f8d7a00cc34eaaa554aeb5604d7787420ba9480cb64d + checksum: 10c2/618d6d121f68238f8e89dff29ebc3c2e052d172ad4f59e75b2854c453c556eb1d195f2fd81d0129c9f0510583e13c3aa3a645cc58e1b12ddb1d29da17be220d3 languageName: node linkType: hard -"@octokit/plugin-rest-endpoint-methods@npm:^13.3.0": - version: 13.3.1 - resolution: "@octokit/plugin-rest-endpoint-methods@npm:13.3.1" +"@octokit/plugin-rest-endpoint-methods@npm:^17.0.0": + version: 17.0.0 + resolution: "@octokit/plugin-rest-endpoint-methods@npm:17.0.0" dependencies: - "@octokit/types": "npm:^13.8.0" + "@octokit/types": "npm:^16.0.0" peerDependencies: "@octokit/core": ">=6" - checksum: 10c2/55a5c665ce7366dee7c3cf2ff953098427ffaaa8239234be031169e8f68c63a0b9244ec08ad1daf8ecc59688c578b5c2eb6bd3385b80509b02f33108565e0173 + checksum: 10c2/cbeb6ad142851f49d8642ecb99d771fc589a1cad21c8265fc4658e45135e3acd7f48b024da032f986bf92b0fde18c995e5b64e943dd392513df79d62cbfc5a71 languageName: node linkType: hard -"@octokit/request-error@npm:^6.1.7": - version: 6.1.7 - resolution: "@octokit/request-error@npm:6.1.7" +"@octokit/request-error@npm:^7.0.2": + version: 7.1.0 + resolution: "@octokit/request-error@npm:7.1.0" dependencies: - "@octokit/types": "npm:^13.6.2" - checksum: 10c2/36d741d44cb45a5f32d9d79e8ed2d8c0807694b605c5f4c1c540c5790b0e154870695443b43793909590586f29a51d2149ba323e3a80e9013b9c3b3ee7ac6179 + "@octokit/types": "npm:^16.0.0" + checksum: 10c2/625e957b234316c0e8801f3fba1732966204f3a3ed7dc4dce4bd496e8de2c8a0fa7e300d8d3a1e40b7b935c6e6680361b64d427750a5342953bf6321d895b502 languageName: node linkType: hard -"@octokit/request@npm:^9.2.1, @octokit/request@npm:^9.2.2": - version: 9.2.2 - resolution: "@octokit/request@npm:9.2.2" +"@octokit/request@npm:^10.0.6": + version: 10.0.9 + resolution: "@octokit/request@npm:10.0.9" dependencies: - "@octokit/endpoint": "npm:^10.1.3" - "@octokit/request-error": "npm:^6.1.7" - "@octokit/types": "npm:^13.6.2" - fast-content-type-parse: "npm:^2.0.0" + "@octokit/endpoint": "npm:^11.0.3" + "@octokit/request-error": "npm:^7.0.2" + "@octokit/types": "npm:^16.0.0" + content-type: "npm:^2.0.0" + fast-content-type-parse: "npm:^3.0.0" + json-with-bigint: "npm:^3.5.3" universal-user-agent: "npm:^7.0.2" - checksum: 10c2/25db3fe21c55f38b636d59c721e822190463124161754c1d941e072975785a2964899c3780f4aefc70b22bf761c717504926c2234f914c69022e7d96cbe644be + checksum: 10c2/284bfa98559b1b29ebdbfba9b7678f5ef29f3acc3c4153dfd74b3951a79d593cd59171f327f427433bae0b9e6d45629a1f833b001da141ee1d6ce34e68109477 languageName: node linkType: hard -"@octokit/rest@npm:^21.1.0": - version: 21.1.1 - resolution: "@octokit/rest@npm:21.1.1" +"@octokit/rest@npm:^22.0.1": + version: 22.0.1 + resolution: "@octokit/rest@npm:22.0.1" dependencies: - "@octokit/core": "npm:^6.1.4" - "@octokit/plugin-paginate-rest": "npm:^11.4.2" - "@octokit/plugin-request-log": "npm:^5.3.1" - "@octokit/plugin-rest-endpoint-methods": "npm:^13.3.0" - checksum: 10c2/989e75f0a2f39e8eb83c710a73d9090683b208b5fee3b8dccef05869135f4769206e8582c2e6f202c199835a0d7691074f4a2109e578880caeeb6b57d7c366ad + "@octokit/core": "npm:^7.0.6" + "@octokit/plugin-paginate-rest": "npm:^14.0.0" + "@octokit/plugin-request-log": "npm:^6.0.0" + "@octokit/plugin-rest-endpoint-methods": "npm:^17.0.0" + checksum: 10c2/8753cf366c5612ea625b2774e66b9f9036253e7b2e8ea38199b0689f567d86720724d1b3d20523de2c063281cd47e8549540e68415d17d7c15b7854df9242444 languageName: node linkType: hard -"@octokit/types@npm:^13.6.2, @octokit/types@npm:^13.7.0, @octokit/types@npm:^13.8.0": - version: 13.8.0 - resolution: "@octokit/types@npm:13.8.0" +"@octokit/types@npm:^16.0.0": + version: 16.0.0 + resolution: "@octokit/types@npm:16.0.0" dependencies: - "@octokit/openapi-types": "npm:^23.0.1" - checksum: 10c2/18ba7ba33d10adee4cf71b8793cfc2bfd1d98970e260e5c592c20bfdde02bc4d541a989b8f1b2fc60a27b90d1bc794050dfdfba9a854099be78f93e20a934235 + "@octokit/openapi-types": "npm:^27.0.0" + checksum: 10c2/3e7ee243d4bd3c7ce65b5a333187792f99795ff46c2bd318d5b7b47e9f3a819c49be95fcab33316bf99e7e3b65a016623955da70e1474b2dfc05a1c324379471 + languageName: node + linkType: hard + +"@oxc-project/types@npm:=0.129.0": + version: 0.129.0 + resolution: "@oxc-project/types@npm:0.129.0" + checksum: 10c2/fc5c742e297c31f72aa8c9a1cdc69cd2940888457cbe8aed3b126a1a3c4ca4d5169a83910a042f045726779c4e4f999713d5e0a096e6830e4bed79cb21cf003f languageName: node linkType: hard @@ -1223,216 +1068,223 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.34.8" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@rollup/rollup-android-arm64@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-android-arm64@npm:4.34.8" +"@rolldown/binding-android-arm64@npm:1.0.0": + version: 1.0.0 + resolution: "@rolldown/binding-android-arm64@npm:1.0.0" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-darwin-arm64@npm:4.34.8" +"@rolldown/binding-darwin-arm64@npm:1.0.0": + version: 1.0.0 + resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-darwin-x64@npm:4.34.8" +"@rolldown/binding-darwin-x64@npm:1.0.0": + version: 1.0.0 + resolution: "@rolldown/binding-darwin-x64@npm:1.0.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.34.8" - conditions: os=freebsd & cpu=arm64 +"@rolldown/binding-freebsd-x64@npm:1.0.0": + version: 1.0.0 + resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-freebsd-x64@npm:4.34.8" - conditions: os=freebsd & cpu=x64 +"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0": + version: 1.0.0 + resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0" + conditions: os=linux & cpu=arm languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.34.8" - conditions: os=linux & cpu=arm & libc=glibc +"@rolldown/binding-linux-arm64-gnu@npm:1.0.0": + version: 1.0.0 + resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0" + conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.34.8" - conditions: os=linux & cpu=arm & libc=musl +"@rolldown/binding-linux-arm64-musl@npm:1.0.0": + version: 1.0.0 + resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0" + conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.34.8" - conditions: os=linux & cpu=arm64 & libc=glibc +"@rolldown/binding-linux-ppc64-gnu@npm:1.0.0": + version: 1.0.0 + resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0" + conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.34.8" - conditions: os=linux & cpu=arm64 & libc=musl +"@rolldown/binding-linux-s390x-gnu@npm:1.0.0": + version: 1.0.0 + resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.0" + conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-loongarch64-gnu@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.34.8" - conditions: os=linux & cpu=loong64 & libc=glibc +"@rolldown/binding-linux-x64-gnu@npm:1.0.0": + version: 1.0.0 + resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0" + conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.34.8" - conditions: os=linux & cpu=ppc64 & libc=glibc +"@rolldown/binding-linux-x64-musl@npm:1.0.0": + version: 1.0.0 + resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0" + conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.34.8" - conditions: os=linux & cpu=riscv64 & libc=glibc +"@rolldown/binding-openharmony-arm64@npm:1.0.0": + version: 1.0.0 + resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.0" + conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.34.8" - conditions: os=linux & cpu=s390x & libc=glibc +"@rolldown/binding-wasm32-wasi@npm:1.0.0": + version: 1.0.0 + resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0" + dependencies: + "@emnapi/core": "npm:1.10.0" + "@emnapi/runtime": "npm:1.10.0" + "@napi-rs/wasm-runtime": "npm:^1.1.4" + conditions: cpu=wasm32 languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.34.8" - conditions: os=linux & cpu=x64 & libc=glibc +"@rolldown/binding-win32-arm64-msvc@npm:1.0.0": + version: 1.0.0 + resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.34.8" - conditions: os=linux & cpu=x64 & libc=musl +"@rolldown/binding-win32-x64-msvc@npm:1.0.0": + version: 1.0.0 + resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.34.8" - conditions: os=win32 & cpu=arm64 +"@rolldown/pluginutils@npm:1.0.0": + version: 1.0.0 + resolution: "@rolldown/pluginutils@npm:1.0.0" + checksum: 10c2/7292285b913831677d7548c474c5773c4d8fed0f63b6ff465ce08e1d662c7d4f4cc441a9a9adb29e3344ad222b9c69b3dbb835ada757c7973f4f49660de1e2f1 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.34.8" - conditions: os=win32 & cpu=ia32 +"@sigstore/bundle@npm:^4.0.0": + version: 4.0.0 + resolution: "@sigstore/bundle@npm:4.0.0" + dependencies: + "@sigstore/protobuf-specs": "npm:^0.5.0" + checksum: 10c2/1c767a1c7dd91d3bff4f9d1347f0dbe3faee4fc642c9052c535875a9ca28fd58523c09ded779ea08cf8bc5c96f32eb459d5a2198cb8d391730ee8fbc6633fc31 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.34.8" - conditions: os=win32 & cpu=x64 +"@sigstore/core@npm:^3.1.0, @sigstore/core@npm:^3.2.0": + version: 3.2.0 + resolution: "@sigstore/core@npm:3.2.0" + checksum: 10c2/78ee912076b493ac3bc864eb58594539bff4c1a2db3cdd9cf6fb20ca33324280c15f103b703f8aa49a7225a1f5889e9cdd5ac164bc99ade982257f07be321dda languageName: node linkType: hard -"@sec-ant/readable-stream@npm:^0.4.1": - version: 0.4.1 - resolution: "@sec-ant/readable-stream@npm:0.4.1" - checksum: 10c2/2ea6c633acf16fd7aa3c77143645480fa64bf2f1752b471ff9a44240016d3fb3b0d5cd549a2c671c016c0564562ca0fdec53e23dc5c4b3c83134454ee00d7b4a +"@sigstore/protobuf-specs@npm:^0.5.0": + version: 0.5.1 + resolution: "@sigstore/protobuf-specs@npm:0.5.1" + checksum: 10c2/20524b1ccc46b2e8a227189f0450a9c188e656bbf88433a31f143f440a6c51a40d4b5558ebb35537feadb7709fe154fcf2379723d47b7e7dc7a27c54d4af1ee4 languageName: node linkType: hard -"@sigstore/bundle@npm:^2.3.0, @sigstore/bundle@npm:^2.3.1": - version: 2.3.1 - resolution: "@sigstore/bundle@npm:2.3.1" +"@sigstore/sign@npm:^4.1.0": + version: 4.1.1 + resolution: "@sigstore/sign@npm:4.1.1" dependencies: - "@sigstore/protobuf-specs": "npm:^0.3.1" - checksum: 10c2/793b9fafceaa558ce0dcdcef34d08aec057d08441e9ca0401d17fb83df9ad1df99a733f61c4675d82333098b9988f2c4141a57b13d458b5be877b1690ad7cf4d + "@gar/promise-retry": "npm:^1.0.2" + "@sigstore/bundle": "npm:^4.0.0" + "@sigstore/core": "npm:^3.2.0" + "@sigstore/protobuf-specs": "npm:^0.5.0" + make-fetch-happen: "npm:^15.0.4" + proc-log: "npm:^6.1.0" + checksum: 10c2/0d95071349c5e3e46b77c09d58968b5d655442be39f1de3e664973c59ac7899f8615408852e217a6e327f77545c49fd4858d11f7cc4b74a32c19e54b6f5f8118 languageName: node linkType: hard -"@sigstore/core@npm:^1.0.0, @sigstore/core@npm:^1.1.0": - version: 1.1.0 - resolution: "@sigstore/core@npm:1.1.0" - checksum: 10c2/86ff0124c922afd7e5a258dc98c9eade93940e3d30ea4a8f0eaa32323562a816b0091df797c7cfdbb92893e230ed704f189c811601305f2ce7aaafab4d0326f2 +"@sigstore/tuf@npm:^4.0.1": + version: 4.0.2 + resolution: "@sigstore/tuf@npm:4.0.2" + dependencies: + "@sigstore/protobuf-specs": "npm:^0.5.0" + tuf-js: "npm:^4.1.0" + checksum: 10c2/6326d7d0f344edf8f396b320b67c8ecbcaf7f9f5495578daee6aed051fcd6144948fcd83f2f47967ae18a00095cc995927270aa0eb4ec14fc637b4791c80d0d8 languageName: node linkType: hard -"@sigstore/protobuf-specs@npm:^0.3.0, @sigstore/protobuf-specs@npm:^0.3.1": - version: 0.3.2 - resolution: "@sigstore/protobuf-specs@npm:0.3.2" - checksum: 10c2/8bb16436bf3208eaf21bd00549f74a7851e2b9e003122ec140a0452f0361cebf66eb8ef79803ea9fd8f810c1238369e65925203394ac6acb23f0d5541bdfbdcf +"@sigstore/verify@npm:^3.1.0": + version: 3.1.0 + resolution: "@sigstore/verify@npm:3.1.0" + dependencies: + "@sigstore/bundle": "npm:^4.0.0" + "@sigstore/core": "npm:^3.1.0" + "@sigstore/protobuf-specs": "npm:^0.5.0" + checksum: 10c2/9bc2560e071646af3bd540845a072bc7c06395602bce06ee069b9f4f85c700d765db7d2d47b32c6d813051205b97515aad06ccf5ce9e117799027f7749d8b829 languageName: node linkType: hard -"@sigstore/sign@npm:^2.3.0": - version: 2.3.1 - resolution: "@sigstore/sign@npm:2.3.1" +"@simple-libs/child-process-utils@npm:^1.0.0": + version: 1.0.2 + resolution: "@simple-libs/child-process-utils@npm:1.0.2" dependencies: - "@sigstore/bundle": "npm:^2.3.0" - "@sigstore/core": "npm:^1.0.0" - "@sigstore/protobuf-specs": "npm:^0.3.1" - make-fetch-happen: "npm:^13.0.1" - proc-log: "npm:^4.2.0" - promise-retry: "npm:^2.0.1" - checksum: 10c2/c9da7c928bac0781a597cfcc6c7f039444e2ac0c306127a47688ba1394d06f4139f3f2b69da1f3c688750e5f4c410d1fd38c4a0443e047ba7a47271de9007b88 + "@simple-libs/stream-utils": "npm:^1.2.0" + checksum: 10c2/0aa6314b9fcd3f192c1cc55a0efe5f4357eff6ef5553854ce56f9f96f230b4ad60fbd01b082fb0cc599630a75b8f172cebd94fc07a8fb5e0dd629597357dfebd languageName: node linkType: hard -"@sigstore/tuf@npm:^2.3.1": - version: 2.3.3 - resolution: "@sigstore/tuf@npm:2.3.3" - dependencies: - "@sigstore/protobuf-specs": "npm:^0.3.0" - tuf-js: "npm:^2.2.1" - checksum: 10c2/141821b9e165430783fc06e14e48725616a242184c2d1eb8a1d04f50bb0e13f32519c25a18de151050a435755166bfa30ea9af3ea8ee2fa138db1d745f003b1b +"@simple-libs/hosted-git-info@npm:^1.0.2": + version: 1.0.2 + resolution: "@simple-libs/hosted-git-info@npm:1.0.2" + checksum: 10c2/8265a1f3dbec431db428869ec0d83ea7ada547c6f755969512f649717ca4dc898e12facec215563c0e94c3da9a70a90d5bec719ce2bf2714da4117531c81900b languageName: node linkType: hard -"@sigstore/verify@npm:^1.2.0": +"@simple-libs/stream-utils@npm:^1.2.0": version: 1.2.0 - resolution: "@sigstore/verify@npm:1.2.0" - dependencies: - "@sigstore/bundle": "npm:^2.3.1" - "@sigstore/core": "npm:^1.1.0" - "@sigstore/protobuf-specs": "npm:^0.3.1" - checksum: 10c2/b158670d5bd641d2311d0e8d6ba744a22b6007e9d18ccf374e0e542e3330f10dc8e7e421cae670ef65e6df5c8da350dacc6792a0f7d89500084a4a5a751a202e + resolution: "@simple-libs/stream-utils@npm:1.2.0" + checksum: 10c2/2aa1f873aadeea92e6f92dda6fb64747c2ba7cdcdb9c602ffa794bf6ac2a2f1f3ffa277f7a50746174f984f94177852564a49f501bb0a6423f80516919122b44 languageName: node linkType: hard -"@stylistic/eslint-plugin@npm:^3.0.1": - version: 3.1.0 - resolution: "@stylistic/eslint-plugin@npm:3.1.0" +"@standard-schema/spec@npm:^1.1.0": + version: 1.1.0 + resolution: "@standard-schema/spec@npm:1.1.0" + checksum: 10c2/6eecb5e6aeb8b109687b8475b54fb938bfa38a1884ca780f4989e7f211e0e4e563a5d5ad5fa01b17850785c904ee1b738667d82f27958376f35d35e6aa096481 + languageName: node + linkType: hard + +"@stylistic/eslint-plugin@npm:^5.10.0": + version: 5.10.0 + resolution: "@stylistic/eslint-plugin@npm:5.10.0" dependencies: - "@typescript-eslint/utils": "npm:^8.13.0" - eslint-visitor-keys: "npm:^4.2.0" - espree: "npm:^10.3.0" + "@eslint-community/eslint-utils": "npm:^4.9.1" + "@typescript-eslint/types": "npm:^8.56.0" + eslint-visitor-keys: "npm:^4.2.1" + espree: "npm:^10.4.0" estraverse: "npm:^5.3.0" - picomatch: "npm:^4.0.2" + picomatch: "npm:^4.0.3" peerDependencies: - eslint: ">=8.40.0" - checksum: 10c2/1b0cf1dd498a8f64f42c9ca79d11637860eda5072a50e78cee8cf981dfaa60264ebae4fe8947e986ad37ded1ee7b33053baf0b45d27facfaaade7796d949b384 + eslint: ^9.0.0 || ^10.0.0 + checksum: 10c2/aa454c67deb5fa28f0c22d08b37c5151c670e0f46c83c23813732c8b0b3095ebb2ae7a1029de3bfcc6510b67c2b805bd3dde103c1b06497aa8eeba13f6cea0cd languageName: node linkType: hard @@ -1440,13 +1292,13 @@ __metadata: version: 0.0.0-use.local resolution: "@systemd-js/conf@workspace:packages/conf" dependencies: - "@chyzwar/eslint-config": "npm:^0.2.34" - "@chyzwar/tsconfig": "npm:^0.3.2" - "@types/node": "npm:^22.13.4" - eslint: "npm:^9.20.1" - typescript: "npm:^5.7.3" - vitest: "npm:^3.0.5" - zod: "npm:^3.24.2" + "@chyzwar/eslint-config": "npm:^0.6.4" + "@chyzwar/tsconfig": "npm:^0.4.0" + "@types/node": "npm:^25.7.0" + eslint: "npm:^10.3.0" + typescript: "npm:^6.0.3" + vitest: "npm:^4.1.6" + zod: "npm:^4.4.3" languageName: unknown linkType: soft @@ -1454,13 +1306,13 @@ __metadata: version: 0.0.0-use.local resolution: "@systemd-js/ctl@workspace:packages/ctl" dependencies: - "@chyzwar/eslint-config": "npm:^0.2.34" - "@chyzwar/tsconfig": "npm:^0.3.2" + "@chyzwar/eslint-config": "npm:^0.6.4" + "@chyzwar/tsconfig": "npm:^0.4.0" "@systemd-js/conf": "npm:^0.10.0" - "@types/node": "npm:^22.13.4" - eslint: "npm:^9.20.1" - typescript: "npm:^5.7.3" - vitest: "npm:^3.0.5" + "@types/node": "npm:^25.7.0" + eslint: "npm:^10.3.0" + typescript: "npm:^6.0.3" + vitest: "npm:^4.1.6" languageName: unknown linkType: soft @@ -1468,20 +1320,20 @@ __metadata: version: 0.0.0-use.local resolution: "@systemd/root@workspace:." dependencies: - "@chyzwar/eslint-config": "npm:^0.2.34" - "@commitlint/cli": "npm:^19.7.1" - "@commitlint/config-conventional": "npm:^19.7.1" - "@lerna-lite/cli": "npm:^3.12.0" - "@lerna-lite/publish": "npm:^3.12.0" - "@lerna-lite/version": "npm:^3.12.0" - "@types/node": "npm:^22.13.4" - conventional-changelog-conventionalcommits: "npm:^7.0.2" - eslint: "npm:^9.20.1" + "@chyzwar/eslint-config": "npm:^0.6.4" + "@commitlint/cli": "npm:^21.0.1" + "@commitlint/config-conventional": "npm:^21.0.1" + "@lerna-lite/cli": "npm:^5.2.1" + "@lerna-lite/publish": "npm:^5.2.1" + "@lerna-lite/version": "npm:^5.2.1" + "@types/node": "npm:^25.7.0" + conventional-changelog-conventionalcommits: "npm:^9.3.1" + eslint: "npm:^10.3.0" husky: "npm:^9.1.7" - lint-staged: "npm:^15.4.3" + lint-staged: "npm:^17.0.4" ts-node: "npm:^10.9.2" - typescript: "npm:^5.7.3" - vitest: "npm:^3.0.5" + typescript: "npm:^6.0.3" + vitest: "npm:^4.1.6" languageName: unknown linkType: soft @@ -1520,29 +1372,53 @@ __metadata: languageName: node linkType: hard -"@tufjs/models@npm:2.0.1": - version: 2.0.1 - resolution: "@tufjs/models@npm:2.0.1" +"@tufjs/models@npm:4.1.0": + version: 4.1.0 + resolution: "@tufjs/models@npm:4.1.0" dependencies: "@tufjs/canonical-json": "npm:2.0.0" - minimatch: "npm:^9.0.4" - checksum: 10c2/5501e03cca5ba6cebb2b720f657031588cf2c4a936922444fe852648e43f32954e27d0b2994366a7db30ce98a050897919b8342d6743ba2469a55f0ca25f78b9 + minimatch: "npm:^10.1.1" + checksum: 10c2/dd73f038392a3a592fab60e1e4b5b73c41dcbdf1902cdad7af7c4a9d2759d35bc1cc10d3e3840b28370d734783d5e271f727c20ba747b5e2a99514e261cfbcc4 languageName: node linkType: hard -"@types/conventional-commits-parser@npm:^5.0.0": - version: 5.0.0 - resolution: "@types/conventional-commits-parser@npm:5.0.0" +"@tybys/wasm-util@npm:^0.10.1": + version: 0.10.2 + resolution: "@tybys/wasm-util@npm:0.10.2" dependencies: - "@types/node": "npm:*" - checksum: 10c2/35443026430786b1b0c687871ddea5e9de4c95e2ee9b1739492c2c422bdaa1e14e1a9f092d037a2701c19b466f1b846a68b3801ec95b11deab77f10581e9bcd5 + tslib: "npm:^2.4.0" + checksum: 10c2/9ce223d12a3ff45ef3d0e80f1150e65a7f798a50bf216edd7a38810f59a3b8c858249a85336fdfb973fa27d648a99d09c5b0e18f52eb95af629b1216648ad09c languageName: node linkType: hard -"@types/estree@npm:1.0.6, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": - version: 1.0.6 - resolution: "@types/estree@npm:1.0.6" - checksum: 10c2/ab0f66ad661e90db2f07f63e1ca45e381a88a5b1316aed460be26a2b483a5cffae3b0bc326e0b860017cbb869fb62e8554597787f2078d70983a946494738fa0 +"@types/chai@npm:^5.2.2": + version: 5.2.3 + resolution: "@types/chai@npm:5.2.3" + dependencies: + "@types/deep-eql": "npm:*" + assertion-error: "npm:^2.0.1" + checksum: 10c2/22fc1a09aa5e24d7563eb23cff119886856eaf361da306ae343502563652f8c9583955f3dee1c2764af18c77fa087ca7337d6b74d7413517162ce99fe4d5d0b2 + languageName: node + linkType: hard + +"@types/deep-eql@npm:*": + version: 4.0.2 + resolution: "@types/deep-eql@npm:4.0.2" + checksum: 10c2/1c809c61d4018354c8b93f6ed4f07751e7d1bd44276b089cfc5db89c20d5e7fd6ed916a6a09f421a7198c4b3434ef526fdbe9b14bba03c4033d568c4581c5bf0 + languageName: node + linkType: hard + +"@types/esrecurse@npm:^4.3.1": + version: 4.3.1 + resolution: "@types/esrecurse@npm:4.3.1" + checksum: 10c2/4bd27b590c6bb37365d80cc8636f24c456e9c9a0f238b1e7666edd6700f431e131ab1adc2d117f15e67f0ce3350f3b18ed7680914439ae8ceeaa38ed70896188 + languageName: node + linkType: hard + +"@types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6, @types/estree@npm:^1.0.8": + version: 1.0.9 + resolution: "@types/estree@npm:1.0.9" + checksum: 10c2/f4b737b41127a82a3020b285a77274c348b08ae608babdabc174b0537be9d2355236e3a55b942c3ca7fcca692aac282db35dc2aed278f85c357b5dde265b9140 languageName: node linkType: hard @@ -1553,16 +1429,16 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:^22.13.4": - version: 22.13.4 - resolution: "@types/node@npm:22.13.4" +"@types/node@npm:^25.7.0": + version: 25.7.0 + resolution: "@types/node@npm:25.7.0" dependencies: - undici-types: "npm:~6.20.0" - checksum: 10c2/7bc89a2d7c2d53e5e3aa5e9b889fb34c7fd40877be8fe5fc72edf947ba86ced7f50d47517bc957c9d8249a6d613d396216d8af9359c4da4e8f502c1868119272 + undici-types: "npm:~7.21.0" + checksum: 10c2/8078a8399a37ba98be55932f9ff261eb631df1a925149e913799834b3781668f26dd605abfd39ecef98964b6ae93c548de3e873117b58718f8d51dd006d7a50b languageName: node linkType: hard -"@types/normalize-package-data@npm:^2.4.1, @types/normalize-package-data@npm:^2.4.3": +"@types/normalize-package-data@npm:^2.4.4": version: 2.4.4 resolution: "@types/normalize-package-data@npm:2.4.4" checksum: 10c2/eb262a4c8d1639a295fc5d3848f13e7319bc988aebc836a4b359ec445bf62089d316c35f22b38ee80f24da5b1b899cd0f634fd9c59244424b4cb3be3d5621a37 @@ -1576,208 +1452,220 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.24.0": - version: 8.24.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.24.0" +"@typescript-eslint/eslint-plugin@npm:8.59.3": + version: 8.59.3 + resolution: "@typescript-eslint/eslint-plugin@npm:8.59.3" dependencies: - "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.24.0" - "@typescript-eslint/type-utils": "npm:8.24.0" - "@typescript-eslint/utils": "npm:8.24.0" - "@typescript-eslint/visitor-keys": "npm:8.24.0" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.3.1" + "@eslint-community/regexpp": "npm:^4.12.2" + "@typescript-eslint/scope-manager": "npm:8.59.3" + "@typescript-eslint/type-utils": "npm:8.59.3" + "@typescript-eslint/utils": "npm:8.59.3" + "@typescript-eslint/visitor-keys": "npm:8.59.3" + ignore: "npm:^7.0.5" natural-compare: "npm:^1.4.0" - ts-api-utils: "npm:^2.0.1" + ts-api-utils: "npm:^2.5.0" peerDependencies: - "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.8.0" - checksum: 10c2/604fe1e6e195fa8dfecdfca9d0decfa74ff1ce1d606d7cb9785e9d66ce7cfcc96a8de47655e0e9a28893538c6c65d23a08c7c119e5261ff89aebcf347020f91b + "@typescript-eslint/parser": ^8.59.3 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.1.0" + checksum: 10c2/f53f6daf0d6f675b908db1db1abf4f53a37c11907daa11c4182485baa956467f276dcfea4f5ef174edec69bcb61ecbd1529f235cc52aeb5d397d849464a44d7e languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.24.0": - version: 8.24.0 - resolution: "@typescript-eslint/parser@npm:8.24.0" +"@typescript-eslint/parser@npm:8.59.3": + version: 8.59.3 + resolution: "@typescript-eslint/parser@npm:8.59.3" dependencies: - "@typescript-eslint/scope-manager": "npm:8.24.0" - "@typescript-eslint/types": "npm:8.24.0" - "@typescript-eslint/typescript-estree": "npm:8.24.0" - "@typescript-eslint/visitor-keys": "npm:8.24.0" - debug: "npm:^4.3.4" + "@typescript-eslint/scope-manager": "npm:8.59.3" + "@typescript-eslint/types": "npm:8.59.3" + "@typescript-eslint/typescript-estree": "npm:8.59.3" + "@typescript-eslint/visitor-keys": "npm:8.59.3" + debug: "npm:^4.4.3" peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.8.0" - checksum: 10c2/61f6f595cb07d5ce971f42d68da71c6296801a6f914c9ee61a4ec3976906d90c1cf6cc7e56c4186b6f54ea8bee3a0a448817b71900202aec140fd19b96b6218f + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.1.0" + checksum: 10c2/7430bb8d23720f705f322a1c6d7fe7f844d0026284e22152945e88c76e13e3e27e7a2238c48023a117e49bb1b951a5894309ab37b2b941659549ffea66fe97ed languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.24.0": - version: 8.24.0 - resolution: "@typescript-eslint/scope-manager@npm:8.24.0" +"@typescript-eslint/project-service@npm:8.59.3": + version: 8.59.3 + resolution: "@typescript-eslint/project-service@npm:8.59.3" dependencies: - "@typescript-eslint/types": "npm:8.24.0" - "@typescript-eslint/visitor-keys": "npm:8.24.0" - checksum: 10c2/6666132f1f46545bc914a862ab409cf38e222295c4252382fa0abeb36d0b07e0d2fe1f9f219a31ddf1997a5f5558a1bdcc109718a9d7804f316643c7873fd295 + "@typescript-eslint/tsconfig-utils": "npm:^8.59.3" + "@typescript-eslint/types": "npm:^8.59.3" + debug: "npm:^4.4.3" + peerDependencies: + typescript: ">=4.8.4 <6.1.0" + checksum: 10c2/a9ddd968605229f53dfe5d41db49a4bb129ae4aa640b3ed3b05320708001c9829ed018c94902463d02ccbffdda9d5ff036c7fa9b073bf8bfda4dce38528ca1b9 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.24.0": - version: 8.24.0 - resolution: "@typescript-eslint/type-utils@npm:8.24.0" +"@typescript-eslint/scope-manager@npm:8.59.3": + version: 8.59.3 + resolution: "@typescript-eslint/scope-manager@npm:8.59.3" dependencies: - "@typescript-eslint/typescript-estree": "npm:8.24.0" - "@typescript-eslint/utils": "npm:8.24.0" - debug: "npm:^4.3.4" - ts-api-utils: "npm:^2.0.1" + "@typescript-eslint/types": "npm:8.59.3" + "@typescript-eslint/visitor-keys": "npm:8.59.3" + checksum: 10c2/0901d0b5368af19fdc75483039c136ab98ff524d8e8c4589e6121a0b53d4040fe813f749161062d6f69e10b062b85248f81ee8e0e622173e2a5881edf762f803 + languageName: node + linkType: hard + +"@typescript-eslint/tsconfig-utils@npm:8.59.3, @typescript-eslint/tsconfig-utils@npm:^8.59.3": + version: 8.59.3 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.59.3" + peerDependencies: + typescript: ">=4.8.4 <6.1.0" + checksum: 10c2/a178a4df6b8a63a7684de78e011fa922ea5b9e61b95dae3b070da04fc5da68ac73c4fdf21103a19f22c1abcb31e18073ec6aa507cd8bf5614f6db32ca06d3ec9 + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:8.59.3": + version: 8.59.3 + resolution: "@typescript-eslint/type-utils@npm:8.59.3" + dependencies: + "@typescript-eslint/types": "npm:8.59.3" + "@typescript-eslint/typescript-estree": "npm:8.59.3" + "@typescript-eslint/utils": "npm:8.59.3" + debug: "npm:^4.4.3" + ts-api-utils: "npm:^2.5.0" peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.8.0" - checksum: 10c2/f35e507087c12453475d6871206b67decd7179820a265a689ea046924c937ac63cf4a4825d7fd0f38acf4b190aa1e16466e7724493cb4c93026cf62e32309535 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.1.0" + checksum: 10c2/d5db93d01a9afca51ef6c3b919db1dfe554615e706a2363d37b260e02c5a7f313e9b2afe73e238465c881d4154a5e1fc898db4e37075d112eb49498b3e580257 languageName: node linkType: hard -"@typescript-eslint/types@npm:8.24.0": - version: 8.24.0 - resolution: "@typescript-eslint/types@npm:8.24.0" - checksum: 10c2/959f680037e95a18f4d730cd57d52c6ce897a300f4dc34b409cf5cd5db5f1ef5a63292dc006ced1234815757bbac69774eb926be99aaac98cbe3b43166a513db +"@typescript-eslint/types@npm:8.59.3, @typescript-eslint/types@npm:^8.56.0, @typescript-eslint/types@npm:^8.59.3": + version: 8.59.3 + resolution: "@typescript-eslint/types@npm:8.59.3" + checksum: 10c2/b4fe547220485c2ea9ff2dfdbe341c9ea9cfc524845ab9789368697a7963da7dde931a9aa62bc1e58fe22214e3736d23da4f03e69a15f3d2263912dce67f40b7 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.24.0": - version: 8.24.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.24.0" +"@typescript-eslint/typescript-estree@npm:8.59.3": + version: 8.59.3 + resolution: "@typescript-eslint/typescript-estree@npm:8.59.3" dependencies: - "@typescript-eslint/types": "npm:8.24.0" - "@typescript-eslint/visitor-keys": "npm:8.24.0" - debug: "npm:^4.3.4" - fast-glob: "npm:^3.3.2" - is-glob: "npm:^4.0.3" - minimatch: "npm:^9.0.4" - semver: "npm:^7.6.0" - ts-api-utils: "npm:^2.0.1" + "@typescript-eslint/project-service": "npm:8.59.3" + "@typescript-eslint/tsconfig-utils": "npm:8.59.3" + "@typescript-eslint/types": "npm:8.59.3" + "@typescript-eslint/visitor-keys": "npm:8.59.3" + debug: "npm:^4.4.3" + minimatch: "npm:^10.2.2" + semver: "npm:^7.7.3" + tinyglobby: "npm:^0.2.15" + ts-api-utils: "npm:^2.5.0" peerDependencies: - typescript: ">=4.8.4 <5.8.0" - checksum: 10c2/1c915eab894b5f77dd384d2d57207d2e5b41bb90531bc74d48f56cee432b14dec457a84e21d0f30363e81f256db1b5f963b3464384a55e3cb2ccc1941518e3a4 + typescript: ">=4.8.4 <6.1.0" + checksum: 10c2/dcdf5039b023a90a353844cf715c2bf1032a5498dc3ea2826df2a9c47a2bc6ebd66b16a535bd2b4d34e030dffb16059a12c75c67f0b7381ee9d409e5c4d1e3c2 languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.24.0, @typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/utils@npm:^8.13.0": - version: 8.24.0 - resolution: "@typescript-eslint/utils@npm:8.24.0" +"@typescript-eslint/utils@npm:8.59.3, @typescript-eslint/utils@npm:^8.0.0": + version: 8.59.3 + resolution: "@typescript-eslint/utils@npm:8.59.3" dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.24.0" - "@typescript-eslint/types": "npm:8.24.0" - "@typescript-eslint/typescript-estree": "npm:8.24.0" + "@eslint-community/eslint-utils": "npm:^4.9.1" + "@typescript-eslint/scope-manager": "npm:8.59.3" + "@typescript-eslint/types": "npm:8.59.3" + "@typescript-eslint/typescript-estree": "npm:8.59.3" peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.8.0" - checksum: 10c2/815e38892c5dff2ef1a68c57d052d942bb035088e64ac5d3adacad9f92af5ac5416e2ee58db1338d984112184176853236b0c6e9b2a562237d8a46fa0038b7d5 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.1.0" + checksum: 10c2/6ad17d5cf4cb1edf1b64499e7b0e8112a4ec056fc13eddb61c890a8e9781cc44c3f4762a9629c05cf09aceebaa287f97cf18dc1399ee958a49fe1cbbef33b9c7 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.24.0": - version: 8.24.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.24.0" +"@typescript-eslint/visitor-keys@npm:8.59.3": + version: 8.59.3 + resolution: "@typescript-eslint/visitor-keys@npm:8.59.3" dependencies: - "@typescript-eslint/types": "npm:8.24.0" - eslint-visitor-keys: "npm:^4.2.0" - checksum: 10c2/a83c17ed400a85182c5e69631b50c9a6f7f825da6102134b5ea74530d02a6ac00f5b52131a7c059b38a206d50daecca7b37ba265eab065fd6de4c2fa1e7b414b + "@typescript-eslint/types": "npm:8.59.3" + eslint-visitor-keys: "npm:^5.0.0" + checksum: 10c2/358bdd6aa7051ef8fe21e824808c53e53b39ab6443fd0b24bae96262a0d0d6981e59cbb4880b6e3a7bd3b5874ea4bffa6ef79e4ae2824146c07655f905a32ae1 languageName: node linkType: hard -"@vitest/expect@npm:3.0.5": - version: 3.0.5 - resolution: "@vitest/expect@npm:3.0.5" +"@vitest/expect@npm:4.1.6": + version: 4.1.6 + resolution: "@vitest/expect@npm:4.1.6" dependencies: - "@vitest/spy": "npm:3.0.5" - "@vitest/utils": "npm:3.0.5" - chai: "npm:^5.1.2" - tinyrainbow: "npm:^2.0.0" - checksum: 10c2/b4185a4bdba64824de67ff9ada3522460e8f0cf8e7425de52541377fc9912f12258650d1af0a184cb422526dd21c516de4dad8b073deb0422fd601649e57c16c + "@standard-schema/spec": "npm:^1.1.0" + "@types/chai": "npm:^5.2.2" + "@vitest/spy": "npm:4.1.6" + "@vitest/utils": "npm:4.1.6" + chai: "npm:^6.2.2" + tinyrainbow: "npm:^3.1.0" + checksum: 10c2/b9eec4e719bb72cdb89af73d330b680494ab45fd325600f9be5945bfd873550c0ed1b807a888da97cc285372f875721171163924ea40d88b91728556f070748c languageName: node linkType: hard -"@vitest/mocker@npm:3.0.5": - version: 3.0.5 - resolution: "@vitest/mocker@npm:3.0.5" +"@vitest/mocker@npm:4.1.6": + version: 4.1.6 + resolution: "@vitest/mocker@npm:4.1.6" dependencies: - "@vitest/spy": "npm:3.0.5" + "@vitest/spy": "npm:4.1.6" estree-walker: "npm:^3.0.3" - magic-string: "npm:^0.30.17" + magic-string: "npm:^0.30.21" peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - checksum: 10c2/465e60f357bc4a0eba97bb85c857531fd35597ea8c582ec2899f5b45b599ff39d222c3afb715ac8fcfefdda7a9940b8ee8ad4f1d20dfaf5e20939ba6db075b49 + checksum: 10c2/89243069cd0db4b58e535e1af82133ca7703812f4f9e3135c5411045cfa013f2a00873a93b5086233c52a6d0e87e0b194475f5fc9075acde583eead2a504d69b languageName: node linkType: hard -"@vitest/pretty-format@npm:3.0.5, @vitest/pretty-format@npm:^3.0.5": - version: 3.0.5 - resolution: "@vitest/pretty-format@npm:3.0.5" +"@vitest/pretty-format@npm:4.1.6": + version: 4.1.6 + resolution: "@vitest/pretty-format@npm:4.1.6" dependencies: - tinyrainbow: "npm:^2.0.0" - checksum: 10c2/4f51f8c3056d659741fb5ed40ef05c84d6aaae081943b11c137795e7e27aea49f438f0ec8d944dea1cda5b9ad945ff7b8f283b3b3fcd8d76f30faa639ddf54ef + tinyrainbow: "npm:^3.1.0" + checksum: 10c2/3ef453bfcc2f9d15d36dc4fbd78e2c4be77ef76ba1ff6e3dfa020c19e17fa746c1eb90d97ee25c8b7b67a5425d557c5931e6895ac499aca91d178d2a20cd44da languageName: node linkType: hard -"@vitest/runner@npm:3.0.5": - version: 3.0.5 - resolution: "@vitest/runner@npm:3.0.5" +"@vitest/runner@npm:4.1.6": + version: 4.1.6 + resolution: "@vitest/runner@npm:4.1.6" dependencies: - "@vitest/utils": "npm:3.0.5" - pathe: "npm:^2.0.2" - checksum: 10c2/cc6bac0f035fffdfd5ee12a4e914b862fc7376d0b24817bd84da37bc765244f68d2b1af64d93413bea1af3d65fc52689c21e932877519c80654c8131cb35b822 + "@vitest/utils": "npm:4.1.6" + pathe: "npm:^2.0.3" + checksum: 10c2/7829cc251a02b39820b5e7d0d60ec370d0473261f6b3af6374ea1eed0521acadad3ac85411f84d5f1254c9538fa5d905969cfdda565a378ea7e2ac972061eed7 languageName: node linkType: hard -"@vitest/snapshot@npm:3.0.5": - version: 3.0.5 - resolution: "@vitest/snapshot@npm:3.0.5" +"@vitest/snapshot@npm:4.1.6": + version: 4.1.6 + resolution: "@vitest/snapshot@npm:4.1.6" dependencies: - "@vitest/pretty-format": "npm:3.0.5" - magic-string: "npm:^0.30.17" - pathe: "npm:^2.0.2" - checksum: 10c2/a245f44843b7fe2034f37896500dab9531a008daf80d5a6ee0c7a70449e2e97ff5e8288c91d4bb03090b55f19110420f36a68127bb6b6abd7aa4beb0863501e9 + "@vitest/pretty-format": "npm:4.1.6" + "@vitest/utils": "npm:4.1.6" + magic-string: "npm:^0.30.21" + pathe: "npm:^2.0.3" + checksum: 10c2/a1cb41505fd39e38af76078eef459ac17e41acd10ae5d39ad96ef4a1b6e39e03e5c327e7ec53b7e154a2be83c0f35e714cbea9f1ddef9ddc27c987df52ae3ff6 languageName: node linkType: hard -"@vitest/spy@npm:3.0.5": - version: 3.0.5 - resolution: "@vitest/spy@npm:3.0.5" - dependencies: - tinyspy: "npm:^3.0.2" - checksum: 10c2/55f3d0519f41808cffa02e15cfe39bb454fb0a714091af8b0e3b9b848660d11bc937268deff87ea67b5b648a423d1c8b2854a76ed8a9f5bfb08da27aecd40a49 +"@vitest/spy@npm:4.1.6": + version: 4.1.6 + resolution: "@vitest/spy@npm:4.1.6" + checksum: 10c2/926e08c82056ecfe882e25a789927557217f378bfaf6d1e914c2b22214e059e3ba4c5e8e893d556a5a3824900ab1a1df4733fd9c20f7ab4a6c59ebe16be834db languageName: node linkType: hard -"@vitest/utils@npm:3.0.5": - version: 3.0.5 - resolution: "@vitest/utils@npm:3.0.5" +"@vitest/utils@npm:4.1.6": + version: 4.1.6 + resolution: "@vitest/utils@npm:4.1.6" dependencies: - "@vitest/pretty-format": "npm:3.0.5" - loupe: "npm:^3.1.2" - tinyrainbow: "npm:^2.0.0" - checksum: 10c2/3b6f158c1cb44fda2a68633db0dc608cf47bb8dc362c064de2b2c393b288e791f9759ee168d22f8659a96f4d101ec88fabd63fbb4592d8b9dc60047d6bc4f7e9 - languageName: node - linkType: hard - -"JSONStream@npm:^1.3.5": - version: 1.3.5 - resolution: "JSONStream@npm:1.3.5" - dependencies: - jsonparse: "npm:^1.2.0" - through: "npm:>=2.2.7 <3" - bin: - JSONStream: ./bin.js - checksum: 10c2/933179d7665329459460b826e3506344ac4957d8d3d9202deac7ba5dc9d9bff10eed951dd8374d18b2dba8b7cffe55a42865018323c59b41a1213841321a07e2 + "@vitest/pretty-format": "npm:4.1.6" + convert-source-map: "npm:^2.0.0" + tinyrainbow: "npm:^3.1.0" + checksum: 10c2/5ec416da319af3d708c5e641bdcedc3e77fb2f8b2f97cc2a73088346be432139847f92541122352be73c868f2649fa5b7c6d79d48fedfd92f9f2a17de0678b9f languageName: node linkType: hard @@ -1788,6 +1676,13 @@ __metadata: languageName: node linkType: hard +"abbrev@npm:^4.0.0": + version: 4.0.0 + resolution: "abbrev@npm:4.0.0" + checksum: 10c2/23ba7f9c18e419bdcdcf037161678c3e5e1d892afb5d3637c736d9dd41ba6e809b912f93c426fbb35873970e8f991811c030e86cb002b83803561d8324fff306 + languageName: node + linkType: hard + "acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" @@ -1804,19 +1699,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.14.0, acorn@npm:^8.4.1": - version: 8.14.0 - resolution: "acorn@npm:8.14.0" +"acorn@npm:^8.15.0, acorn@npm:^8.16.0, acorn@npm:^8.4.1": + version: 8.16.0 + resolution: "acorn@npm:8.16.0" bin: acorn: bin/acorn - checksum: 10c2/7fcf71ca53e9af5e421e9bf94c1cb0d8ca3a8f1598781aff510afe2882d1871372d47a6c1f790f78c9154b9ef7d46e62108c4879bee9394fa6752deb11c19d00 - languageName: node - linkType: hard - -"add-stream@npm:^1.0.0": - version: 1.0.0 - resolution: "add-stream@npm:1.0.0" - checksum: 10c2/43ff266742051d2adf518d11a820b8cfec857b16753394ac12a3b66cda9a781b7c00421bf5c24ffc1e784443f0c020874b8c758872bf46ae7c3e5b39769d5a44 + checksum: 10c2/4c9c97515ab9e916735417668cc04fdfa44e0d1d22ac1b1ccb73f1de28e72a4c6e4fb560fd5301413599b637682877ec0a09d17b9ef856cf547c447398776dde languageName: node linkType: hard @@ -1839,15 +1727,15 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.12.4": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" +"ajv@npm:^6.14.0": + version: 6.15.0 + resolution: "ajv@npm:6.15.0" dependencies: fast-deep-equal: "npm:^3.1.1" fast-json-stable-stringify: "npm:^2.0.0" json-schema-traverse: "npm:^0.4.1" uri-js: "npm:^4.2.2" - checksum: 10c2/f3097a2476f990d5644bb13e6cbb7c7e03dda88149522925f9635839fe4c7da54452ba742daab343cb4ec3989d4233952666b94ec76ec6e38a6dca93a1d5e9a3 + checksum: 10c2/a1a6a6dbac93cc8474cf42403aaef782c1bce6a177259f36ea60b42e738cc3593c7a8e4f663c60f305f6de1d77c348068448d081b252be57194f7148f1afedbd languageName: node linkType: hard @@ -1863,15 +1751,6 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^4.3.2": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: "npm:^0.21.3" - checksum: 10c2/34a0548073dccec916513af12e918befe47630947613ddfd4e8d7b73a0968b506da68d25f45dc73c282f22e87ef2ea98bdf98bd27bb0a63cce065b040e8980e1 - languageName: node - linkType: hard - "ansi-escapes@npm:^7.0.0": version: 7.0.0 resolution: "ansi-escapes@npm:7.0.0" @@ -1888,10 +1767,10 @@ __metadata: languageName: node linkType: hard -"ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 10c2/892daa8b2d0317a3717add4a41692f238055497f35dde2591d23dce4b79e89bfed584907c86423a368b2736c76013b7822ba104f3320d712baa6c4117209ec01 +"ansi-regex@npm:^6.2.2": + version: 6.2.2 + resolution: "ansi-regex@npm:6.2.2" + checksum: 10c2/ad332743a8ef28fb38b0806e4f254042cebf37b4072460204b08f0274a349d580349aace5c2a3c79bead1c88f41b73ca37a1ab76aa2d2c48d3ddc778cc20ab7b languageName: node linkType: hard @@ -1904,7 +1783,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": +"ansi-styles@npm:^4.0.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" dependencies: @@ -1913,17 +1792,10 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: 10c2/2ff507b8ed2982937e1b560edb5e70557840be8d1924c916868112404b8da176850172bcf08832467f90b45f4d7daa7fdd66b585aa3a9300929ff033c6dfca45 - languageName: node - linkType: hard - -"aproba@npm:^2.0.0": - version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: 10c2/6e069c8e5e62fde5a29abaf4f6ea2e5ab1b78be2c00175505f50e235d1cdd714cb6d3c0deab6c642ffe3b6b7bc109a86e908d50fe398a05d4fff4efe7e9e1aca +"ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1, ansi-styles@npm:^6.2.3": + version: 6.2.3 + resolution: "ansi-styles@npm:6.2.3" + checksum: 10c2/23899d9ee8e4cee9f50f5813c78aef9ac7e0f11b9d20ce0978977a9d46ba8443b470e6197b0c4d89e9df44ce49d181303f51d21e30f1bab76e20e30e51d8285a languageName: node linkType: hard @@ -1941,13 +1813,6 @@ __metadata: languageName: node linkType: hard -"array-differ@npm:^4.0.0": - version: 4.0.0 - resolution: "array-differ@npm:4.0.0" - checksum: 10c2/28fc37240f68529821c4b63b511407956cd9f9f4ed5692710da53d97a9c78d9d7a741703a6c8685229aa7320cb9d0419400d68bc0382047a7e9b21d8d5e5fdea - languageName: node - linkType: hard - "array-ify@npm:^1.0.0": version: 1.0.0 resolution: "array-ify@npm:1.0.0" @@ -1955,13 +1820,6 @@ __metadata: languageName: node linkType: hard -"array-union@npm:^3.0.1": - version: 3.0.1 - resolution: "array-union@npm:3.0.1" - checksum: 10c2/82c57f419bad9c9614d4fc402c98dd6542c81d3d6e48a88c7f589d9fc60eadd1ad15dc847088fa75c4fa02629fb58ed60c84a4e4144f3467b78e86986405fdca - languageName: node - linkType: hard - "assertion-error@npm:^2.0.1": version: 2.0.1 resolution: "assertion-error@npm:2.0.1" @@ -1976,32 +1834,30 @@ __metadata: languageName: node linkType: hard -"before-after-hook@npm:^3.0.2": - version: 3.0.2 - resolution: "before-after-hook@npm:3.0.2" - checksum: 10c2/914db0bb17da2f0fedd8ae83fc42eee6ff2fc212b4b4eb8887b7022ee59fd54fa230cd6ec330ea69477f29504201c507ba667c6c25d90a825fe8244d88d808eb +"balanced-match@npm:^4.0.2": + version: 4.0.4 + resolution: "balanced-match@npm:4.0.4" + checksum: 10c2/da2fd155b5e4e9284166b6de908db74e82928ad1df11b6eb9e697be40375c32bc3bdba8f109c6db7eb681da1b0ce0e9f9f827e9c06a1e725d47a529f7320982c languageName: node linkType: hard -"bin-links@npm:^4.0.4": - version: 4.0.4 - resolution: "bin-links@npm:4.0.4" - dependencies: - cmd-shim: "npm:^6.0.0" - npm-normalize-package-bin: "npm:^3.0.0" - read-cmd-shim: "npm:^4.0.0" - write-file-atomic: "npm:^5.0.0" - checksum: 10c2/98d3fe03c984330090962bee35d53aa09a33d5ed859b943ddf35e43b01fa40d63fb77b440b49a79ec1122ebffeb4fe05b212b5f2f6b7af2a2b5d5ec477d44352 +"before-after-hook@npm:^4.0.0": + version: 4.0.0 + resolution: "before-after-hook@npm:4.0.0" + checksum: 10c2/e9bde456aaa3f5790585d40ce7c11bca82137fba02e33ae1aceaf69a78391ff04166d4f7b146da0526f6483063c3cc02705b84b68f85914e2d515f47dcf6e13a languageName: node linkType: hard -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" +"bin-links@npm:^6.0.0": + version: 6.0.0 + resolution: "bin-links@npm:6.0.0" dependencies: - balanced-match: "npm:^1.0.0" - concat-map: "npm:0.0.1" - checksum: 10c2/9a5f964d883c234dc8410511fddd6532efc7ab37e00f40eee14309325106bf2dfcec5a348eef1aaabb9b8ca3ae4cedd9d3ba57b06c244b323aee7b8b3ab8e19b + cmd-shim: "npm:^8.0.0" + npm-normalize-package-bin: "npm:^5.0.0" + proc-log: "npm:^6.0.0" + read-cmd-shim: "npm:^6.0.0" + write-file-atomic: "npm:^7.0.0" + checksum: 10c2/2341f9c7f1e08d3bef83d185f8daef865233062819876e79a358d4c31a496ee046601474bd55f5dbf2a6a711bc4e3e0eec2f58ba15115321210fd3b8be2d69c5 languageName: node linkType: hard @@ -2014,35 +1870,16 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.3": - version: 3.0.3 - resolution: "braces@npm:3.0.3" +"brace-expansion@npm:^5.0.5": + version: 5.0.6 + resolution: "brace-expansion@npm:5.0.6" dependencies: - fill-range: "npm:^7.1.1" - checksum: 10c2/0fcf8974fcdf6acab83ea526fad9697c0f7b67c1c0306a889e6c0f472592a6772ecef17f4599358789be50d2367bb7f6222279ef6ae27de3a9448c6804d5b46a - languageName: node - linkType: hard - -"byte-size@npm:^9.0.1": - version: 9.0.1 - resolution: "byte-size@npm:9.0.1" - peerDependencies: - "@75lb/nature": "*" - peerDependenciesMeta: - "@75lb/nature": - optional: true - checksum: 10c2/19cd8439b716dea7415b80d5b1200ddcdef0798b3ad255208b2d1b9620d0a25f5a7a548a9deab855c37887e23e14f0ea6b464d35df9ab07a9d052b5292fb3c02 - languageName: node - linkType: hard - -"cac@npm:^6.7.14": - version: 6.7.14 - resolution: "cac@npm:6.7.14" - checksum: 10c2/5beac00153288f5e56d6635d94676cf5182b9072afc57a6850d43fd3469306d5ebefb4625b23caf69d9e7ddfe2cfabe69b1bab4330aa0209d3eb9d791d06dc5c + balanced-match: "npm:^4.0.2" + checksum: 10c2/1c002b2a089321a84364e36eab24575623018a3d8b11846e38315aa2b88ea99d8abb44b21ee06370c15f44b790a4df0220fb2ed1a5989710c22089fd3257cc76 languageName: node linkType: hard -"cacache@npm:^18.0.0, cacache@npm:^18.0.3": +"cacache@npm:^18.0.0": version: 18.0.4 resolution: "cacache@npm:18.0.4" dependencies: @@ -2062,6 +1899,24 @@ __metadata: languageName: node linkType: hard +"cacache@npm:^20.0.0, cacache@npm:^20.0.1": + version: 20.0.4 + resolution: "cacache@npm:20.0.4" + dependencies: + "@npmcli/fs": "npm:^5.0.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^13.0.0" + lru-cache: "npm:^11.1.0" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^7.0.2" + ssri: "npm:^13.0.0" + checksum: 10c2/e90743485acebb9e56d794f26b5c761f57ff5a8d8b0afae2d2f6be094ac47f96ae112869a33bcb63c3ce2d882e847a77ae6f416c09f0f3eb0d20350035d7d3c5 + languageName: node + linkType: hard + "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -2069,16 +1924,10 @@ __metadata: languageName: node linkType: hard -"chai@npm:^5.1.2": - version: 5.2.0 - resolution: "chai@npm:5.2.0" - dependencies: - assertion-error: "npm:^2.0.1" - check-error: "npm:^2.1.1" - deep-eql: "npm:^5.0.1" - loupe: "npm:^3.1.0" - pathval: "npm:^2.0.0" - checksum: 10c2/90b309b0b77773f31a3be8c48ce8ad0a14365b8f63dee7aafb24e014bce56a49f6d3648d4959a2b8fb9a2d45bace5375bcf4b9a97ab1a2ba328d0d358a8be916 +"chai@npm:^6.2.2": + version: 6.2.2 + resolution: "chai@npm:6.2.2" + checksum: 10c2/46e9c992e4a3a0d40c34fe37e76944339403e0cd0216b199ec48d534b9c69a7f215b180853e3956b47f62f08f93543c4526695262007f91b2e73ff54f1331130 languageName: node linkType: hard @@ -2093,30 +1942,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: "npm:^4.1.0" - supports-color: "npm:^7.1.0" - checksum: 10c2/2086830f3ed7dd2fd41a852da2f408e65e6503f7a462854443cc258395a970a1839c1f0e80a98cd7855a755fb5cac42d5e71752fc15657cc643b6a9c5118faf5 - languageName: node - linkType: hard - -"chalk@npm:^5.3.0, chalk@npm:^5.4.1": - version: 5.4.1 - resolution: "chalk@npm:5.4.1" - checksum: 10c2/dd90178333f46fe77236d81510cea840b9cb392b942232379fb6f0f3c10310705375f3c980c8830c7de1b2ecaebc16e36989c34f75eb90563db9aa1cf806a4f6 - languageName: node - linkType: hard - -"check-error@npm:^2.1.1": - version: 2.1.1 - resolution: "check-error@npm:2.1.1" - checksum: 10c2/88d936d4b879700e6a598de44ca10e9fa5b08b3fce90e52e0fe78d88d227155bd6d8e3a55de0c8e1383ffe7f1fc0032b4b886ebc4663d2984a68d8bffe1fc516 - languageName: node - linkType: hard - "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -2124,10 +1949,17 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^4.0.0, ci-info@npm:^4.1.0": - version: 4.1.0 - resolution: "ci-info@npm:4.1.0" - checksum: 10c2/4006e0cc501258a274b1670a27638785cd2c19ad1a071b24fce96e3a864e9eca9e506ced78827de27f32ea544b8aee0369bdea4706ab0c0728463504032894d3 +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: 10c2/44e21f6277a9db755e37ff43f1e55577028d56f09b52c04a78b1ac5856e2e5b3f2253a00b2b86c29947bf1ad8bd2bd0ec9aff226cea846a170d1d7063d53dfb0 + languageName: node + linkType: hard + +"ci-info@npm:^4.0.0, ci-info@npm:^4.4.0": + version: 4.4.0 + resolution: "ci-info@npm:4.4.0" + checksum: 10c2/b129b60e3887b7d72f9cf2040d5907f3e27318489260fbea04e2e8aca091f8cd8b8d4f3f69cf01592a40c356932f83e2214bb9ec4879cae2eb10df34c8568612 languageName: node linkType: hard @@ -2147,13 +1979,13 @@ __metadata: languageName: node linkType: hard -"cli-truncate@npm:^4.0.0": - version: 4.0.0 - resolution: "cli-truncate@npm:4.0.0" +"cli-truncate@npm:^5.2.0": + version: 5.2.0 + resolution: "cli-truncate@npm:5.2.0" dependencies: - slice-ansi: "npm:^5.0.0" - string-width: "npm:^7.0.0" - checksum: 10c2/699932e63466b55c69d43e2e9d663da155d65350052411751ff8e90eed06b2ca2a8ed97cb598fd5375028266a5ba955da71f656bbc5c9fef1f00f919fc139ea0 + slice-ansi: "npm:^8.0.0" + string-width: "npm:^8.2.0" + checksum: 10c2/3a8a650c33537107824e2610820720b54dca88721b782059c1367bc058ee2ff224a5b53268f1f3bf6058e29ec9b454b2d73a1532ab2eff3512530438624d57a9 languageName: node linkType: hard @@ -2164,25 +1996,14 @@ __metadata: languageName: node linkType: hard -"cliui@npm:^8.0.1": - version: 8.0.1 - resolution: "cliui@npm:8.0.1" - dependencies: - string-width: "npm:^4.2.0" - strip-ansi: "npm:^6.0.1" - wrap-ansi: "npm:^7.0.0" - checksum: 10c2/c9e0c5236091b45a70124526a581415fa4b02a487ec959e20d28e969fa6044a9fba91cf8c006f47e701e5da486178f53e38e0cfa4c367960ec4ad70fd000ce91 - languageName: node - linkType: hard - -"clone-deep@npm:^4.0.1": - version: 4.0.1 - resolution: "clone-deep@npm:4.0.1" +"cliui@npm:^9.0.1": + version: 9.0.1 + resolution: "cliui@npm:9.0.1" dependencies: - is-plain-object: "npm:^2.0.4" - kind-of: "npm:^6.0.2" - shallow-clone: "npm:^3.0.0" - checksum: 10c2/4522dbac74ced12d5ec906f9fe7b7a04cb6b1fe81dd5bb2f0a0c50690755ed06e97a2736e0fd9d01a007f1a3fe6214e8930441fe2ca13b1fa39423869f161443 + string-width: "npm:^7.2.0" + strip-ansi: "npm:^7.1.0" + wrap-ansi: "npm:^9.0.0" + checksum: 10c2/cf03543a4cba61327346ed3c6c10afa9d6f412b628d96f530ceca49c5dfbbcc58ac1645171cf035797c8222ce9d52000f5541c840c0c06002a4e0212e399a63b languageName: node linkType: hard @@ -2193,10 +2014,10 @@ __metadata: languageName: node linkType: hard -"cmd-shim@npm:^6.0.0": - version: 6.0.3 - resolution: "cmd-shim@npm:6.0.3" - checksum: 10c2/5604ff9c47ba5d6204bc66042e6068d3cfe6aa59ecb5dc594bc6a5845d709900de1c3bf9355a0d0e9b0779e8a2e3e8290d9506f17f8f64cecb608187890409f0 +"cmd-shim@npm:^8.0.0": + version: 8.0.0 + resolution: "cmd-shim@npm:8.0.0" + checksum: 10c2/d6a0097e4e75ce78e1371317279769414023a5573959f42784a3ef74e51587e6dbc948999de44d5d06532b4ffb8e2b94bf3cfbfc84282349a8bb0bd49b3d9da9 languageName: node linkType: hard @@ -2232,22 +2053,6 @@ __metadata: languageName: node linkType: hard -"color-support@npm:^1.1.3": - version: 1.1.3 - resolution: "color-support@npm:1.1.3" - bin: - color-support: bin.js - checksum: 10c2/5b6324b2b399ac526f9994ba9abc2d5451ca7ae1ac6eded4bbc3a3247a3c43f97b00fbd9cb7af27d6df31ebb3aecd81c1f3740482cc7d507520c23e2d24198f0 - languageName: node - linkType: hard - -"colorette@npm:^2.0.20": - version: 2.0.20 - resolution: "colorette@npm:2.0.20" - checksum: 10c2/308baa99c57159cd58f2afc387d7c4396d2559d372bccb8fc53643b2637e5f0c47e2575498917594c828dab39914ee097cdfaf80f2a05e51a79d6bd27edf2cf2 - languageName: node - linkType: hard - "columnify@npm:^1.6.0": version: 1.6.0 resolution: "columnify@npm:1.6.0" @@ -2258,17 +2063,10 @@ __metadata: languageName: node linkType: hard -"commander@npm:^13.1.0": - version: 13.1.0 - resolution: "commander@npm:13.1.0" - checksum: 10c2/9a57b7d15bf5f64da7bcf687cc7b8402884d1af24386dc9a77443ff22a4adbf3d2cfff03ce1387a340ee8a91f598c4e6f95119ebc609b0bf330473d0f0583a64 - languageName: node - linkType: hard - -"common-ancestor-path@npm:^1.0.1": - version: 1.0.1 - resolution: "common-ancestor-path@npm:1.0.1" - checksum: 10c2/8372a3096cb76a15513199bd554b4da4d7b75d532ae3f566e801f61a981605a8d71d0248a41a1ee67d23c3e2a5a6c6c3efe160e53286820336925585b0448378 +"common-ancestor-path@npm:^2.0.0": + version: 2.0.0 + resolution: "common-ancestor-path@npm:2.0.0" + checksum: 10c2/7e2d3f72a93f5fc80beb14ea4ab840a04100b3ad11f8fc64975636a28bd1ca8bcf242edad6fb7b0a6dcdd555e23e9ba713c755c63a24f323e7e9734a5bd22ae6 languageName: node linkType: hard @@ -2282,123 +2080,110 @@ __metadata: languageName: node linkType: hard -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 10c2/bf275ad3901e6b23509ad0ab3c29d61c5b64d38155794ff25c3e399ef3df27d7c05c27ed27009e596c9edcaf632f4d78542c3eb00ef0f88e18a5fb7739614971 - languageName: node - linkType: hard - -"config-chain@npm:^1.1.13": - version: 1.1.13 - resolution: "config-chain@npm:1.1.13" - dependencies: - ini: "npm:^1.3.4" - proto-list: "npm:~1.2.1" - checksum: 10c2/a4cf5696c6a8ae5d01dc3c01fd4c90d4f107f9a0711c4f95437291ecb44afff18c837102ba4e55654dd9d58f8825db2faf6aad6be02dc8560ede721422c25583 - languageName: node - linkType: hard - -"console-control-strings@npm:^1.1.0": - version: 1.1.0 - resolution: "console-control-strings@npm:1.1.0" - checksum: 10c2/47cdae379a6f9074d6e3277614ed1e8c624b8ddc8dca05bf54b611dbcaf95c42eb169aecfe6bf3cd09f24ec1c4f2c073dcace6ecbf586f5f57b775587d6985f2 +"content-type@npm:^2.0.0": + version: 2.0.0 + resolution: "content-type@npm:2.0.0" + checksum: 10c2/f8ce75ae6f43b27ec950c3ff7e83be12be2a0411efa05a7d952cfaf9942e7996a414366dec8c6c6899ad7f4fbdddb3d5b543d6a84709e1a430334d69aaba2f47 languageName: node linkType: hard -"conventional-changelog-angular@npm:^7.0.0": - version: 7.0.0 - resolution: "conventional-changelog-angular@npm:7.0.0" +"conventional-changelog-angular@npm:^8.2.0, conventional-changelog-angular@npm:^8.3.1": + version: 8.3.1 + resolution: "conventional-changelog-angular@npm:8.3.1" dependencies: compare-func: "npm:^2.0.0" - checksum: 10c2/74f03add471e26327d49faab4cc539aec380cf52949d314a75efcdf75ddd5be5bc2e60ad21d3ea195a7d11075618a0cdc22068d98f649a11f150c9c670a58961 + checksum: 10c2/ed740d53725ab406bb0b6e1cf8e32034e348fdf273a77e50526fd3d007456456a1daa41893b4bf7702edbb866c5f0c9f29e049815156b18409b65772e81499f1 languageName: node linkType: hard -"conventional-changelog-conventionalcommits@npm:^7.0.2": - version: 7.0.2 - resolution: "conventional-changelog-conventionalcommits@npm:7.0.2" +"conventional-changelog-conventionalcommits@npm:^9.2.0, conventional-changelog-conventionalcommits@npm:^9.3.1": + version: 9.3.1 + resolution: "conventional-changelog-conventionalcommits@npm:9.3.1" dependencies: compare-func: "npm:^2.0.0" - checksum: 10c2/a97040620f09ee6322012a59ff53699b1a67f764953de76a5247a6edfc3984e6e280965c41fec8c1b0d08726935916269da35e4b2594d846c17f78d2ad745778 - languageName: node - linkType: hard - -"conventional-changelog-core@npm:^7.0.0": - version: 7.0.0 - resolution: "conventional-changelog-core@npm:7.0.0" - dependencies: - "@hutson/parse-repository-url": "npm:^5.0.0" - add-stream: "npm:^1.0.0" - conventional-changelog-writer: "npm:^7.0.0" - conventional-commits-parser: "npm:^5.0.0" - git-raw-commits: "npm:^4.0.0" - git-semver-tags: "npm:^7.0.0" - hosted-git-info: "npm:^7.0.0" - normalize-package-data: "npm:^6.0.0" - read-pkg: "npm:^8.0.0" - read-pkg-up: "npm:^10.0.0" - checksum: 10c2/9c1184c03bf43aab749457ffb6d07af2d2acfb36a8fe1b4fe6839e1eadbfbe00ab811bad4c72e04085b955dbd251c34fa70ac0e8a3acffff26cd193e851507b3 + checksum: 10c2/2d9f6e31c851e294607436881b46190f069d6b928fa0201536116fbf7906bca27ef009d09c33b9f2f636d4f9dc302ddaea6894fa63888f0aa9a268f87328fa5b languageName: node linkType: hard -"conventional-changelog-preset-loader@npm:^4.1.0": - version: 4.1.0 - resolution: "conventional-changelog-preset-loader@npm:4.1.0" - checksum: 10c2/ce718ed9b389ae3a78d110c3efe33f11aebef3bb56210bbdf8f1ed7d12cd88ce2f72cdc66568d4b71027a6c0da0bae03fe334bb3b9b0fa84c39b10e2c9504f84 +"conventional-changelog-preset-loader@npm:^5.0.0": + version: 5.0.0 + resolution: "conventional-changelog-preset-loader@npm:5.0.0" + checksum: 10c2/16ec1b779a17256032df4ab53b1eda58ae5b414917db3222af31a71957b4bf3c4b44c5411de95d97897228815371caf7b81f1ce9505dad30e4498b86b8785b79 languageName: node linkType: hard -"conventional-changelog-writer@npm:^7.0.0, conventional-changelog-writer@npm:^7.0.1": - version: 7.0.1 - resolution: "conventional-changelog-writer@npm:7.0.1" +"conventional-changelog-writer@npm:^8.3.0, conventional-changelog-writer@npm:^8.4.0": + version: 8.4.0 + resolution: "conventional-changelog-writer@npm:8.4.0" dependencies: - conventional-commits-filter: "npm:^4.0.0" + "@simple-libs/stream-utils": "npm:^1.2.0" + conventional-commits-filter: "npm:^5.0.0" handlebars: "npm:^4.7.7" - json-stringify-safe: "npm:^5.0.1" - meow: "npm:^12.0.1" + meow: "npm:^13.0.0" semver: "npm:^7.5.2" - split2: "npm:^4.0.0" bin: - conventional-changelog-writer: cli.mjs - checksum: 10c2/78efa8cd5b7605b1482e6700e714d501245681c168ccd7bd3ee4a53e5d2069df8e8836a85a432ecb41b6abbb8f90ad44f0a7508b5a31c25a90fd75617c1ab626 + conventional-changelog-writer: dist/cli/index.js + checksum: 10c2/21e7aaff2badf1ed794ed63dc7a24b4704a08d019dcb52fa942b0dd2d8cbaa5dca17d87f6327370feca498daee02656ec7522628a8458990b2f66d1fdb517e15 languageName: node linkType: hard -"conventional-commits-filter@npm:^4.0.0": - version: 4.0.0 - resolution: "conventional-commits-filter@npm:4.0.0" - checksum: 10c2/8f86feb7e7856c1787e708f7fb8cb5ea0264b1f383ac3744c5aee33b7dd9b8337f50a53e1f1cebf776f61fdeda330e4f4641136a59865b60f13f9deb3a6c31c5 +"conventional-changelog@npm:^7.2.0": + version: 7.2.0 + resolution: "conventional-changelog@npm:7.2.0" + dependencies: + "@conventional-changelog/git-client": "npm:^2.6.0" + "@simple-libs/hosted-git-info": "npm:^1.0.2" + "@types/normalize-package-data": "npm:^2.4.4" + conventional-changelog-preset-loader: "npm:^5.0.0" + conventional-changelog-writer: "npm:^8.3.0" + conventional-commits-parser: "npm:^6.3.0" + fd-package-json: "npm:^2.0.0" + meow: "npm:^13.0.0" + normalize-package-data: "npm:^7.0.0" + bin: + conventional-changelog: dist/cli/index.js + checksum: 10c2/91e09b32bef78de381bd332ac51e2c636b56cbb50e5f5f096812ee54ed577c9a2dbd59b6922cf570c4bd28e3ded655d602fdc29f967932fe004a35012b14cca3 languageName: node linkType: hard -"conventional-commits-parser@npm:^5.0.0": +"conventional-commits-filter@npm:^5.0.0": version: 5.0.0 - resolution: "conventional-commits-parser@npm:5.0.0" + resolution: "conventional-commits-filter@npm:5.0.0" + checksum: 10c2/4dae528cad12d6efd494ce8de9e5750c88f2b4a4e55058aca78f5937116df69ac2cb3fa4ffc23bdc159b235e585956864e84f59fb23e5ecd5f40e37cc157a903 + languageName: node + linkType: hard + +"conventional-commits-parser@npm:^6.1.0, conventional-commits-parser@npm:^6.3.0, conventional-commits-parser@npm:^6.4.0": + version: 6.4.0 + resolution: "conventional-commits-parser@npm:6.4.0" dependencies: - JSONStream: "npm:^1.3.5" - is-text-path: "npm:^2.0.0" - meow: "npm:^12.0.1" - split2: "npm:^4.0.0" + "@simple-libs/stream-utils": "npm:^1.2.0" + meow: "npm:^13.0.0" bin: - conventional-commits-parser: cli.mjs - checksum: 10c2/03d40ed7c6fd70645459de7b469eeab22157bfedf028ba7069d5869eb73a8bab01ecd2c2c846b35bdb9586b3e097e219746f4603a14328895f94e22aff4b140d + conventional-commits-parser: dist/cli/index.js + checksum: 10c2/6e153d1f90a33b62a2785c6d659fb1aac8c0c5208caa02bb8c7af5c799a7028a5fdd2f02838a0a657d09579ffa0ad7df4f1b89695c5dd788ce86c811474a0d39 languageName: node linkType: hard -"conventional-recommended-bump@npm:^9.0.0": - version: 9.0.0 - resolution: "conventional-recommended-bump@npm:9.0.0" - dependencies: - conventional-changelog-preset-loader: "npm:^4.1.0" - conventional-commits-filter: "npm:^4.0.0" - conventional-commits-parser: "npm:^5.0.0" - git-raw-commits: "npm:^4.0.0" - git-semver-tags: "npm:^7.0.0" - meow: "npm:^12.0.1" +"conventional-recommended-bump@npm:^11.2.0": + version: 11.2.0 + resolution: "conventional-recommended-bump@npm:11.2.0" + dependencies: + "@conventional-changelog/git-client": "npm:^2.5.1" + conventional-changelog-preset-loader: "npm:^5.0.0" + conventional-commits-filter: "npm:^5.0.0" + conventional-commits-parser: "npm:^6.1.0" + meow: "npm:^13.0.0" bin: - conventional-recommended-bump: cli.mjs - checksum: 10c2/012bfe4b7316bed6a904fd0af48cc32c55b8844edcff4b5ea4bc22388e0b5d6ddea7b1eca441e028f964b908a9f015448a385ea1c82632ed544bb1d60d07ff73 + conventional-recommended-bump: dist/cli/index.js + checksum: 10c2/9ef38dba36751cd3115abfd810db14db7424627de808597246c030970b53d3ef66f628b996c8562bf9b34a9aecf76c892aa670a37f3da686262cf4714a17dec6 + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10c2/bd4178dede93cea4ce91f0af7c4e1b3b6eefa2d3521d52c3093d063ca4ccd6ed8e6c5f8dd1b85a89db682ae10d0ac5a5f8fa14a541debeddbf03b25077acbab2 languageName: node linkType: hard @@ -2415,9 +2200,9 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^9.0.0": - version: 9.0.0 - resolution: "cosmiconfig@npm:9.0.0" +"cosmiconfig@npm:^9.0.1": + version: 9.0.1 + resolution: "cosmiconfig@npm:9.0.1" dependencies: env-paths: "npm:^2.2.1" import-fresh: "npm:^3.3.0" @@ -2428,7 +2213,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c2/ffa08f47cacf0788b3ba86f9fda09de28bee1edb3dec8721157ab115337aea77e20146cbd29ef3723645d292acafb53d2a1f56b8ffdf0684d2c221ae3ce42489 + checksum: 10c2/baf9041d236638d40f6086a547f1e30682b13b01ea35299eeebf169e6b9b9deb1c5bc07e15082df7efc97ee2385b6981903b98850bdf0f1f752efa7d710d15d9 languageName: node linkType: hard @@ -2439,7 +2224,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -2459,48 +2244,27 @@ __metadata: languageName: node linkType: hard -"dargs@npm:^8.0.0": - version: 8.1.0 - resolution: "dargs@npm:8.1.0" - checksum: 10c2/37966cecd059cfb97c1db6223e92b2163d5af985315cf83cca91f26474c36313da1316b7799b2c0518a7ef8fbe7a480347792d2198a60fa772558c52b861cd0e - languageName: node - linkType: hard - -"data-uri-to-buffer@npm:^4.0.0": - version: 4.0.1 - resolution: "data-uri-to-buffer@npm:4.0.1" - checksum: 10c2/8d646abf2ce0b1846b178613999d3480cd68b3c059812a3aceb60f90b304a68390f2947466a0ab679c56e519b18d4c18f348467348f32853bf9611e52e6306d0 - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.4.0": - version: 4.4.0 - resolution: "debug@npm:4.4.0" +"debug@npm:4, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.4.3": + version: 4.4.3 + resolution: "debug@npm:4.4.3" dependencies: ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true - checksum: 10c2/d3b706ce86f595c7a13d52558d7343b9bc8ad06bf52cb5ba7f516b0dd936ea1a1b93a853b6968d833985fbcc5af65fb95b032bca2075e3aff0a1e06bd86103c7 + checksum: 10c2/4c7ef119b06622b8f2d0f5dbb410396e4272f953638f63e656f372faf40a7ef23cc6c2929918b39b34425cfea0bb47ee2ac4622ad56927071a7d065223023b1a languageName: node linkType: hard -"dedent@npm:^1.5.3": - version: 1.5.3 - resolution: "dedent@npm:1.5.3" +"dedent@npm:^1.7.2": + version: 1.7.2 + resolution: "dedent@npm:1.7.2" peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: babel-plugin-macros: optional: true - checksum: 10c2/1c22ecb721846a9eee240b4c2bf8da8550b1c37bd684ca9b5ab5a5be205e6874149f9e48587539ae7921a6e6971f8874163d59aca8f3420aaea99774427d7ced - languageName: node - linkType: hard - -"deep-eql@npm:^5.0.1": - version: 5.0.2 - resolution: "deep-eql@npm:5.0.2" - checksum: 10c2/9c7d0055074a189c3a28b51d2337bb02806848c4ffcac08e4dfe81448cd249a33452125e75f731443038913692807b55f0aa4843d11488879a63249e657344af + checksum: 10c2/4761c22eda43db25f951e66b70f00fe8e923ae8d0728336d1bf31776a47071f6d50aef4f5cd8c67ae3b5fccb11f9637c9368d873a2063365d1b2adfbfc0ec62a languageName: node linkType: hard @@ -2511,13 +2275,6 @@ __metadata: languageName: node linkType: hard -"deepmerge-ts@npm:^7.1.0": - version: 7.1.0 - resolution: "deepmerge-ts@npm:7.1.0" - checksum: 10c2/fa6fc201bba5228da137bfcd2ab620fb01d0cb2fa097046a6c35fd6a38122b5a934779ce6735a56bf7039679796f7aa495754b53e43ab6df1a41748603961467 - languageName: node - linkType: hard - "defaults@npm:^1.0.3": version: 1.0.4 resolution: "defaults@npm:1.0.4" @@ -2534,6 +2291,13 @@ __metadata: languageName: node linkType: hard +"detect-libc@npm:^2.0.3": + version: 2.1.2 + resolution: "detect-libc@npm:2.1.2" + checksum: 10c2/9cf493fed9708936ef39369c84bc6188294f2bdf8223e62b6c85b0b2e58823d65ee140b6e8c3e4b846a0d5b5c049de1865130604bb4c5097b9e235eec5abb4cc + languageName: node + linkType: hard + "diff@npm:^4.0.1": version: 4.0.2 resolution: "diff@npm:4.0.2" @@ -2550,17 +2314,10 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:^16.4.7": - version: 16.4.7 - resolution: "dotenv@npm:16.4.7" - checksum: 10c2/3324d796210d3d614137e5b66923fb5b66d2405e257761ee342d91d4610f89142e161fc118c8243158e088b262cfcd3b2ebf6519d7a6cecf3a73b223b0315550 - languageName: node - linkType: hard - -"duplexer@npm:^0.1.1": - version: 0.1.2 - resolution: "duplexer@npm:0.1.2" - checksum: 10c2/3a847f0ea25d527e7b72d3242ac85f9e4cd866104cb15e5998ca184dd8b08b9f61f98ae97e4dab96bbefe20d1f9c11ca9a51ffe9c0ae0f992cbc27e77a549281 +"dotenv@npm:^17.4.2": + version: 17.4.2 + resolution: "dotenv@npm:17.4.2" + checksum: 10c2/2924a03866dda3f919582dc7fadbe9ff292011b64a33b851d17154f2adfaf4e91988255cd6289090f259756a3268847b194e83df42ae127431fb0ce597a30ebb languageName: node linkType: hard @@ -2622,7 +2379,7 @@ __metadata: languageName: node linkType: hard -"error-ex@npm:^1.3.1, error-ex@npm:^1.3.2": +"error-ex@npm:^1.3.1": version: 1.3.2 resolution: "error-ex@npm:1.3.2" dependencies: @@ -2631,103 +2388,29 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^1.6.0": - version: 1.6.0 - resolution: "es-module-lexer@npm:1.6.0" - checksum: 10c2/2c69039c62d0707dffc3b0f6d6f766941373088d06009d543005883da63f7d9739e793af351cd933b02cd117db13dc4ad7510d598ea12be09eef3452ea854490 - languageName: node - linkType: hard - -"esbuild@npm:^0.24.2": - version: 0.24.2 - resolution: "esbuild@npm:0.24.2" - dependencies: - "@esbuild/aix-ppc64": "npm:0.24.2" - "@esbuild/android-arm": "npm:0.24.2" - "@esbuild/android-arm64": "npm:0.24.2" - "@esbuild/android-x64": "npm:0.24.2" - "@esbuild/darwin-arm64": "npm:0.24.2" - "@esbuild/darwin-x64": "npm:0.24.2" - "@esbuild/freebsd-arm64": "npm:0.24.2" - "@esbuild/freebsd-x64": "npm:0.24.2" - "@esbuild/linux-arm": "npm:0.24.2" - "@esbuild/linux-arm64": "npm:0.24.2" - "@esbuild/linux-ia32": "npm:0.24.2" - "@esbuild/linux-loong64": "npm:0.24.2" - "@esbuild/linux-mips64el": "npm:0.24.2" - "@esbuild/linux-ppc64": "npm:0.24.2" - "@esbuild/linux-riscv64": "npm:0.24.2" - "@esbuild/linux-s390x": "npm:0.24.2" - "@esbuild/linux-x64": "npm:0.24.2" - "@esbuild/netbsd-arm64": "npm:0.24.2" - "@esbuild/netbsd-x64": "npm:0.24.2" - "@esbuild/openbsd-arm64": "npm:0.24.2" - "@esbuild/openbsd-x64": "npm:0.24.2" - "@esbuild/sunos-x64": "npm:0.24.2" - "@esbuild/win32-arm64": "npm:0.24.2" - "@esbuild/win32-ia32": "npm:0.24.2" - "@esbuild/win32-x64": "npm:0.24.2" - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-arm64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-arm64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 10c2/e8b16c022a83d183f5e0ce780296d9bfd823ad1c054dece9f94c95458c9e2a4c6191ed9c8b8a548a7f9fe3d91d433a42a379b7b4cff970a18f0b2e09720b71ac +"es-module-lexer@npm:^2.0.0": + version: 2.1.0 + resolution: "es-module-lexer@npm:2.1.0" + checksum: 10c2/af3767f5e93b9c776419d32a7811ff047f133914dbd890e7d0f650d1d9e278f00093930c99c0a0f01ce396b28f347bc9a8a318d3a83cce536a723d159c1a85d3 languageName: node linkType: hard -"escalade@npm:^3.1.1": - version: 3.1.2 - resolution: "escalade@npm:3.1.2" - checksum: 10c2/e7a5b4f702af8e4ecce418c40df98eb5d0e91bf344df3f443c36c53ffac95a97ca6e94003a6842f886d1a045ea7dbf83ae972bea3dfa4ed526e7e39d8857ee80 +"es-toolkit@npm:^1.46.0": + version: 1.46.1 + resolution: "es-toolkit@npm:1.46.1" + dependenciesMeta: + "@trivago/prettier-plugin-sort-imports@4.3.0": + unplugged: true + prettier-plugin-sort-re-exports@0.0.1: + unplugged: true + checksum: 10c2/4f642b34ca67f145932da7b16c9e0c0a27ea6f07a80c09999e5f80f49d47312fb0276d5579b914990070d42e6c2c2154e01556d5e97b6d6cfebace48bcdba783 + languageName: node + linkType: hard + +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10c2/257d0850c99c0690126b4e57133aef42e45aa5ca335ba0565afb9c46d4d839c26412f4444b27d95951c43c76c722c3bd423f942ae20f45fd443115e7dbdd67da languageName: node linkType: hard @@ -2745,73 +2428,82 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jest@npm:^28.11.0": - version: 28.11.0 - resolution: "eslint-plugin-jest@npm:28.11.0" +"eslint-plugin-jest@npm:^29.15.2": + version: 29.15.2 + resolution: "eslint-plugin-jest@npm:29.15.2" dependencies: - "@typescript-eslint/utils": "npm:^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/utils": "npm:^8.0.0" peerDependencies: - "@typescript-eslint/eslint-plugin": ^6.0.0 || ^7.0.0 || ^8.0.0 - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + "@typescript-eslint/eslint-plugin": ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 jest: "*" + typescript: ">=4.8.4 <7.0.0" peerDependenciesMeta: "@typescript-eslint/eslint-plugin": optional: true jest: optional: true - checksum: 10c2/c7674e1ae10021e108e1a00777d01659862b9f0f4f97103ba9892989dd305eb11bd947341a85829c7c0ee2ad91d0a9b3c9138ae39b9b6dccc11433c03deb30c3 + typescript: + optional: true + checksum: 10c2/75643d662b07203fdc718bf126a599afb3d8261be05e189e754d8703e28658336be8a8a05ea38d203e36d68ac838cc35e8980f77b6543e23ba7a7f290c605ed4 languageName: node linkType: hard -"eslint-scope@npm:^8.2.0": - version: 8.2.0 - resolution: "eslint-scope@npm:8.2.0" +"eslint-scope@npm:^9.1.2": + version: 9.1.2 + resolution: "eslint-scope@npm:9.1.2" dependencies: + "@types/esrecurse": "npm:^4.3.1" + "@types/estree": "npm:^1.0.8" esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" - checksum: 10c2/48addfb8f87cf6aef28730335d16a685ccaa61bbebbf6fb789ecf224580d1f68cabfda7d6e6bbb6acd8fccf295d121eeeec191f8fa2a26f5f03dc85dae0a18f6 + checksum: 10c2/dcc85fb42ea315c75261cb2fa3da442688c622a236bfd19f9ad8c451050c81cb9d756a2ba601664b2c54614802686af78ed51c641eba51a2e7ac668997dee185 languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.3.0": +"eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10c2/f73f1988a7daed34cb05b52568c9cb22a29c3801a1fa8a3def1bd8f5be516042f3d5b536c02142656c67ac12140dfe087ab98bbd38654ef2c95f64a8cd9ca7c3 languageName: node linkType: hard -"eslint-visitor-keys@npm:^4.2.0": - version: 4.2.0 - resolution: "eslint-visitor-keys@npm:4.2.0" - checksum: 10c2/8f71315c0768aa2c774dbe2df46ba5c4392d0464bce3d1cee0d13ddbbf22baf3f13e7f8479ee6a68076bc17616c9e10746572b70319e94b1a92a2eee5c3215aa +"eslint-visitor-keys@npm:^4.2.1": + version: 4.2.1 + resolution: "eslint-visitor-keys@npm:4.2.1" + checksum: 10c2/f6037b36b4329b84bc1c749d0a5a9fc496f61f5e27fd0f0a312eaf40b5e51f8b5b92551d81c39d221375f51bd595d6e17a77a84e086d18ff8118a27d18b80c05 languageName: node linkType: hard -"eslint@npm:^9.20.1": - version: 9.20.1 - resolution: "eslint@npm:9.20.1" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.12.1" - "@eslint/config-array": "npm:^0.19.0" - "@eslint/core": "npm:^0.11.0" - "@eslint/eslintrc": "npm:^3.2.0" - "@eslint/js": "npm:9.20.0" - "@eslint/plugin-kit": "npm:^0.2.5" +"eslint-visitor-keys@npm:^5.0.0, eslint-visitor-keys@npm:^5.0.1": + version: 5.0.1 + resolution: "eslint-visitor-keys@npm:5.0.1" + checksum: 10c2/e44c531eba8a9401b94bd0ef2403723fb325be5695b1af601d7758bd9dbd5294774f0e1f47435a5155f6ee028436bc6e2565f046601b8bbd4e1682df7db44add + languageName: node + linkType: hard + +"eslint@npm:^10.3.0": + version: 10.3.0 + resolution: "eslint@npm:10.3.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.8.0" + "@eslint-community/regexpp": "npm:^4.12.2" + "@eslint/config-array": "npm:^0.23.5" + "@eslint/config-helpers": "npm:^0.5.5" + "@eslint/core": "npm:^1.2.1" + "@eslint/plugin-kit": "npm:^0.7.1" "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" - "@humanwhocodes/retry": "npm:^0.4.1" + "@humanwhocodes/retry": "npm:^0.4.2" "@types/estree": "npm:^1.0.6" - "@types/json-schema": "npm:^7.0.15" - ajv: "npm:^6.12.4" - chalk: "npm:^4.0.0" + ajv: "npm:^6.14.0" cross-spawn: "npm:^7.0.6" debug: "npm:^4.3.2" escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^8.2.0" - eslint-visitor-keys: "npm:^4.2.0" - espree: "npm:^10.3.0" - esquery: "npm:^1.5.0" + eslint-scope: "npm:^9.1.2" + eslint-visitor-keys: "npm:^5.0.1" + espree: "npm:^11.2.0" + esquery: "npm:^1.7.0" esutils: "npm:^2.0.2" fast-deep-equal: "npm:^3.1.3" file-entry-cache: "npm:^8.0.0" @@ -2821,8 +2513,7 @@ __metadata: imurmurhash: "npm:^0.1.4" is-glob: "npm:^4.0.0" json-stable-stringify-without-jsonify: "npm:^1.0.1" - lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.2" + minimatch: "npm:^10.2.4" natural-compare: "npm:^1.4.0" optionator: "npm:^0.9.3" peerDependencies: @@ -2832,27 +2523,38 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: 10c2/266b513960d47dd2e8c1abb71a275835aaf03f2215e3adbff73a4e540aae7e09bd52bad0804c126b694274301c4a8f9fbc974c4039e5f681ca525b69b7b12d27 + checksum: 10c2/4958151740de4992b2c44dafc741df5699be06d52202860a2595e06a4a027f17ea85212f36169776e0ab4decf7cdb6e6752beac595f09c04e28815bfedecaa03 languageName: node linkType: hard -"espree@npm:^10.0.1, espree@npm:^10.3.0": - version: 10.3.0 - resolution: "espree@npm:10.3.0" +"espree@npm:^10.4.0": + version: 10.4.0 + resolution: "espree@npm:10.4.0" + dependencies: + acorn: "npm:^8.15.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^4.2.1" + checksum: 10c2/3c0de2d225dc91e9856257127acab75f431735e7174a947c41a36c7ccc25ef84d38b6eb11e926f5155c443afa3338405b3de28ebab3fb99963c28253462f70f1 + languageName: node + linkType: hard + +"espree@npm:^11.2.0": + version: 11.2.0 + resolution: "espree@npm:11.2.0" dependencies: - acorn: "npm:^8.14.0" + acorn: "npm:^8.16.0" acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^4.2.0" - checksum: 10c2/723ec51aafa26763adcc6154c06ebcd9ecd3e73085cc310294169f0d518e4aa97bf53f0845f5c137b145764f7d09c733b7c2b00bc86392684bdce92bba694671 + eslint-visitor-keys: "npm:^5.0.1" + checksum: 10c2/0f6d0861914e44a476943e039d161e986ab3bf804ac6da7e0d7a446ee12c19c9127cf03fb5116838e703e5dc6040e4c844a267b213b4c38bf0a3f5668555760a languageName: node linkType: hard -"esquery@npm:^1.5.0": - version: 1.5.0 - resolution: "esquery@npm:1.5.0" +"esquery@npm:^1.7.0": + version: 1.7.0 + resolution: "esquery@npm:1.7.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10c2/014ef07199dc1033b2375d043e21cff246bed1a9e04cc17f223f5c40ebed6a0708962cbdefcbbe225f59ba243eab1cbd9a762e16d3eae3752c976ebfd55bb6f4 + checksum: 10c2/2fc15b2daeea00ddb93f652397d19c265dc79bef3919e4e70a9f17d2a33921069306ed1766a76f8e05aea4f0c2ed14e1e47c5f50a10b5f5d6b4505ee1ba799f2 languageName: node linkType: hard @@ -2888,34 +2590,17 @@ __metadata: languageName: node linkType: hard -"eventemitter3@npm:^5.0.1": - version: 5.0.1 - resolution: "eventemitter3@npm:5.0.1" - checksum: 10c2/0df57a96cd0802cfe52181e5dd8655f4e7dd8e68dba553f76bb30da315ffa5ce0c3661c0e971366d297fcb46f70c80f9629aa5e1dc076a794b0ad1935e58d721 - languageName: node - linkType: hard - -"execa@npm:^8.0.1": - version: 8.0.1 - resolution: "execa@npm:8.0.1" - dependencies: - cross-spawn: "npm:^7.0.3" - get-stream: "npm:^8.0.1" - human-signals: "npm:^5.0.0" - is-stream: "npm:^3.0.0" - merge-stream: "npm:^2.0.0" - npm-run-path: "npm:^5.1.0" - onetime: "npm:^6.0.0" - signal-exit: "npm:^4.1.0" - strip-final-newline: "npm:^3.0.0" - checksum: 10c2/b8fcff863438500e0845a0399f1bd9f54c28ca20016e1b0fa08fa6e4527c5f19916ca16f6584ae2ea7011417db82ab8ad174eae3d9c573eb9eee12ec31947ec6 +"eventemitter3@npm:^5.0.4": + version: 5.0.4 + resolution: "eventemitter3@npm:5.0.4" + checksum: 10c2/1f57a8901031f75f14b354a4d94285e9a68bd56973d9e995fbd8de737c6f14e030beea663caf0ee46a92a6af7d66f366ff09bbffee29ebb667368fbefb03ab96 languageName: node linkType: hard -"expect-type@npm:^1.1.0": - version: 1.1.0 - resolution: "expect-type@npm:1.1.0" - checksum: 10c2/6206ef564cf08562b0db072305d1464340a8e2612e119b64a1c35f5352715930223def45d3f3e339a5395a02d8e0ce337ced36516408022b3ee055f78ed60a4a +"expect-type@npm:^1.3.0": + version: 1.3.0 + resolution: "expect-type@npm:1.3.0" + checksum: 10c2/1ab3787b1b4d400aa77de257472ef416cbb6850bbca31b7ad6373897339b11930d20a0c6352c69c4065f0ad199716c798c26aa8fd08458de0f17a300164544c2 languageName: node linkType: hard @@ -2926,10 +2611,10 @@ __metadata: languageName: node linkType: hard -"fast-content-type-parse@npm:^2.0.0": - version: 2.0.1 - resolution: "fast-content-type-parse@npm:2.0.1" - checksum: 10c2/2b73d7b8acee2f8204811a8597e0bb7c10b47b8192f984676e25b0c0f72fb070b17fb8b32afd4aa91ad404d338d118b4c6a595aed097d2641349504310b624c5 +"fast-content-type-parse@npm:^3.0.0": + version: 3.0.0 + resolution: "fast-content-type-parse@npm:3.0.0" + checksum: 10c2/cdf8dc257d323788d34478a172d5a4fc95efe9337b2563b2eff5f43c30a899cb615941e3c4258a4d9b8bacf2a21a20b6be7dcefd1195cfd61b1f22e3bb67efc8 languageName: node linkType: hard @@ -2940,19 +2625,6 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.3.2": - version: 3.3.2 - resolution: "fast-glob@npm:3.3.2" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.4" - checksum: 10c2/71b89041d84c0031a84a2c2e0dbbd8b903c633d26ea04d2afa48b17b46d42dc57c53d5d639f00fae4637da24c3ac3abe9add84f2b55fee082eda107ba3eca08f - languageName: node - linkType: hard - "fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -2967,34 +2639,49 @@ __metadata: languageName: node linkType: hard -"fastq@npm:^1.6.0": - version: 1.17.1 - resolution: "fastq@npm:1.17.1" +"fast-string-truncated-width@npm:^3.0.2": + version: 3.0.3 + resolution: "fast-string-truncated-width@npm:3.0.3" + checksum: 10c2/0aa54d2f5b9adbcf46ca9e5a6318463bcf0c195e57c44bdd7e6e190d9e3c888c6e0600d5701a121561c6f1842b72788ddaf8526cd9d2d3e665ea01e8ba205530 + languageName: node + linkType: hard + +"fast-string-width@npm:^3.0.2": + version: 3.0.2 + resolution: "fast-string-width@npm:3.0.2" + dependencies: + fast-string-truncated-width: "npm:^3.0.2" + checksum: 10c2/599513c1d15980ce94d08d24ce8d5c6032d8fead356fe5a7fe4864f13e5d3f2c00e39da6a13e769ba9e6d9cbba8ae9f092cceda7ce7e44e2f05bf29241238853 + languageName: node + linkType: hard + +"fast-wrap-ansi@npm:^0.2.0": + version: 0.2.0 + resolution: "fast-wrap-ansi@npm:0.2.0" + dependencies: + fast-string-width: "npm:^3.0.2" + checksum: 10c2/53c9be568bdb18236af897acac93fac5a3801c6a65fedede7dfe5f222a89e7ed23fff91ff07cb04bda92200ef50e2b0c5265fd1a0b835ea7f86c8b15050ed8b2 + languageName: node + linkType: hard + +"fd-package-json@npm:^2.0.0": + version: 2.0.0 + resolution: "fd-package-json@npm:2.0.0" dependencies: - reusify: "npm:^1.0.4" - checksum: 10c2/5fe2763d5a19082f96d01a4c0186aad0104294886b7be0b4466507e4c3d2cd88075e8cee5c922810078179b35b275e0186b5848893c1e552abbafe7281a9e42c + walk-up-path: "npm:^4.0.0" + checksum: 10c2/16727e2d69e527cea03d5d34741fc11b9f46a85ce539d5e9322cdfce3d93a3351e158b6c20bd1ad807478cd2a9d5a07e3ef4fe8151780c9f5ed24b80a0b45d46 languageName: node linkType: hard -"fdir@npm:^6.4.2": - version: 6.4.3 - resolution: "fdir@npm:6.4.3" +"fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: picomatch: optional: true - checksum: 10c2/e0f170afb815c57a631f332e222f3fc271c7d4f2bba7a8d34afe0e51424fecd8ece1a4f1ee0b7c4d9755f75337140bbf4c5e0a083b59caa7ab90d0176befcc69 - languageName: node - linkType: hard - -"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": - version: 3.2.0 - resolution: "fetch-blob@npm:3.2.0" - dependencies: - node-domexception: "npm:^1.0.0" - web-streams-polyfill: "npm:^3.0.3" - checksum: 10c2/ac3d200dbe7f42d8662ddd59991fecdc5811c96c1274dc38999fad1de46f8f9578b72b2edda4a65dcd625676b2aa658fc52a7ce59a69314c8f18a54e730c3a99 + checksum: 10c2/9771a58ae9ea22a1856aca04b981a7c884ab855e4ce90a0ba197ef1088896a6b9f86a6e0690ce5ee4bd2f67787ce34c39b4caa191f3e03ef3b985bd2e6828b7c languageName: node linkType: hard @@ -3007,15 +2694,6 @@ __metadata: languageName: node linkType: hard -"fill-range@npm:^7.1.1": - version: 7.1.1 - resolution: "fill-range@npm:7.1.1" - dependencies: - to-regex-range: "npm:^5.0.1" - checksum: 10c2/1fad086c1d028caf894f8e97ba71d7552a4cc1d26ee34673207f7577c9f539f8332cd6e9acb9012c3b5bb18da828bbbc09cbfb066863d79550c4ac48976c9698 - languageName: node - linkType: hard - "find-up@npm:^4.0.0": version: 4.1.0 resolution: "find-up@npm:4.1.0" @@ -3036,27 +2714,6 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^6.3.0": - version: 6.3.0 - resolution: "find-up@npm:6.3.0" - dependencies: - locate-path: "npm:^7.1.0" - path-exists: "npm:^5.0.0" - checksum: 10c2/dc4093945c9cd3bbe9e001842fe8e86c795ef862e0ca0f74fde166a44187c73ea9d2630ba1b7f66759f0d309ac19b5e266faca3ff6ab5d700ec2d658c6eaa397 - languageName: node - linkType: hard - -"find-up@npm:^7.0.0": - version: 7.0.0 - resolution: "find-up@npm:7.0.0" - dependencies: - locate-path: "npm:^7.2.0" - path-exists: "npm:^5.0.0" - unicorn-magic: "npm:^0.1.0" - checksum: 10c2/80ee82319a31ff808d5f52f07949899d936b994370dad1e8ed2b5cf70833ec815e6907cae69f3fe8523e3d9f6f84305803cd2d465b45521b0d4f2a520e38d1b9 - languageName: node - linkType: hard - "flat-cache@npm:^4.0.0": version: 4.0.1 resolution: "flat-cache@npm:4.0.1" @@ -3084,26 +2741,6 @@ __metadata: languageName: node linkType: hard -"formdata-polyfill@npm:^4.0.10": - version: 4.0.10 - resolution: "formdata-polyfill@npm:4.0.10" - dependencies: - fetch-blob: "npm:^3.1.2" - checksum: 10c2/f86d937b7d295053947b313f1fc2c23c51831b96c15485286556a8a11b66f2921c9c83a389ca2ea70705ba7c63d1d6ae231078608aaa17fc0b888bf60b9b2d01 - languageName: node - linkType: hard - -"fs-extra@npm:^11.3.0": - version: 11.3.0 - resolution: "fs-extra@npm:11.3.0" - dependencies: - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^6.0.1" - universalify: "npm:^2.0.0" - checksum: 10c2/2dc8c7a4e442e01857a7fd52161a5eb6d04504d51647a6dc3686f962349ec0d7312a418e4debab3da364b08bde288e302a97bdcb4046d3b08c14b738b499933a - languageName: node - linkType: hard - "fs-minipass@npm:^2.0.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" @@ -3122,7 +2759,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": +"fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -3132,7 +2769,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": +"fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -3141,13 +2778,6 @@ __metadata: languageName: node linkType: hard -"function-bind@npm:^1.1.2": - version: 1.1.2 - resolution: "function-bind@npm:1.1.2" - checksum: 10c2/d18024c2b24212632516d310340e9edef0e4e4b20ea67168bfaad2045992a6c22c5f900260893689eb507fcf3a97365e29558f24c3caa6f2b1299809f768a886 - languageName: node - linkType: hard - "get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" @@ -3155,80 +2785,41 @@ __metadata: languageName: node linkType: hard -"get-east-asian-width@npm:^1.0.0": - version: 1.2.0 - resolution: "get-east-asian-width@npm:1.2.0" - checksum: 10c2/2be215cc9867c455aa11263b4c3d392dc7a89e41ca6d34fe9d5d576087fc82f822e76186273b81c078d3a77d8552598fe1a44940ceea6e1664ebb31d2f3c9b51 - languageName: node - linkType: hard - -"get-stream@npm:^8.0.1": - version: 8.0.1 - resolution: "get-stream@npm:8.0.1" - checksum: 10c2/6131c339a769f9aae65417e8405b3b03bbbcb577303545dc9e960ab165aa8877470a63cf0037032cd213bb483ff64c4d7565c1ee99e4c65cbd69c673900625e8 - languageName: node - linkType: hard - -"get-stream@npm:^9.0.1": - version: 9.0.1 - resolution: "get-stream@npm:9.0.1" - dependencies: - "@sec-ant/readable-stream": "npm:^0.4.1" - is-stream: "npm:^4.0.1" - checksum: 10c2/0e9dd1a001417bc82b5315f68a49ce911ac90ad0ac75be4c754cb1b0401b3c2451531a5cb56248ace2aeb8df4d772753b8f6549d6e3ba03c5bc61f7fcdf39990 - languageName: node - linkType: hard - -"git-raw-commits@npm:^4.0.0": - version: 4.0.0 - resolution: "git-raw-commits@npm:4.0.0" - dependencies: - dargs: "npm:^8.0.0" - meow: "npm:^12.0.1" - split2: "npm:^4.0.0" - bin: - git-raw-commits: cli.mjs - checksum: 10c2/554b2d684d8cb38193307b146b0337fe01501657dddaa750a2dd36fc2a3af147ee9640b5ba08ac10fc85ca4f3a423ce18b23e7649bb520a8604c9f8d875e55ee +"get-east-asian-width@npm:^1.0.0, get-east-asian-width@npm:^1.3.1, get-east-asian-width@npm:^1.5.0": + version: 1.6.0 + resolution: "get-east-asian-width@npm:1.6.0" + checksum: 10c2/7b161e87f38893a1e9784466d44c2611722933cea7862f2145b0efc816b1e25f7aa50f82e6740df796b45b06426f227b8530e1b5a6a9b105f01008932c0b9259 languageName: node linkType: hard -"git-semver-tags@npm:^7.0.0": - version: 7.0.1 - resolution: "git-semver-tags@npm:7.0.1" +"git-raw-commits@npm:^5.0.0": + version: 5.0.1 + resolution: "git-raw-commits@npm:5.0.1" dependencies: - meow: "npm:^12.0.1" - semver: "npm:^7.5.2" + "@conventional-changelog/git-client": "npm:^2.6.0" + meow: "npm:^13.0.0" bin: - git-semver-tags: cli.mjs - checksum: 10c2/36d082860e4abafbd389e78947b9742cab6fc379ed81ae35bb77acd9a9e1e16f746d4ca5e934732490c8ddd03a72f7bc41816cdb60b7d12b4768e6f24b46c8cd + git-raw-commits: src/cli.js + checksum: 10c2/9afc8d850147dcc0c6b61be449c61ae2eb549b076822a61311aed34c1f601a82388a12a5bba090699ef4e7c4375017cd8e69e4d87b9d0a967b8fd4e2d50c1093 languageName: node linkType: hard -"git-up@npm:^8.0.0": - version: 8.0.1 - resolution: "git-up@npm:8.0.1" +"git-up@npm:^8.1.0": + version: 8.1.1 + resolution: "git-up@npm:8.1.1" dependencies: is-ssh: "npm:^1.4.0" parse-url: "npm:^9.2.0" - checksum: 10c2/ce6b109d66d93808a183c25948f7931a71e2f2dd68cd727805d96a07db6d0f8ad41e2b36f6b5727c5e2e1bf8e7de5c03d96810ff0db32c859267cd99852c150c - languageName: node - linkType: hard - -"git-url-parse@npm:^16.0.0": - version: 16.0.1 - resolution: "git-url-parse@npm:16.0.1" - dependencies: - git-up: "npm:^8.0.0" - checksum: 10c2/3580cf755248cd915ad56b5532849e391aae9364e1df4aae77a55f46964bed7f03adfa9ee37d57fd59b0b4c02d35a393f44b24d9b6581b3aeb827a7cbe00ba62 + checksum: 10c2/660a61e1bcfc85a3543deccd8744eabbe47e57fb6655c0073cada284db2e2fcfc6f67b9a75b7a664ee2f91171da9bd23b7961720dee08e176643d17bbaebfe03 languageName: node linkType: hard -"glob-parent@npm:^5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" +"git-url-parse@npm:^16.1.0": + version: 16.1.0 + resolution: "git-url-parse@npm:16.1.0" dependencies: - is-glob: "npm:^4.0.1" - checksum: 10c2/59d4c7122a269a3fa2f12ee0da9f79f4b5fdebe11b1b0556da95a4fd6b54cd0332c8b637978aa471801fe4637efe2ca0ff9e47a1f229452bb75e2c87674bd82e + git-up: "npm:^8.1.0" + checksum: 10c2/5eea6e54260db25e129b8576839ce96c765df288829e08ac0dc7dfa6b1e2be34d281770be2a73a5f9618ce95f9b6fb03cce7f4813fd0a9a69c09de9218e44a8c languageName: node linkType: hard @@ -3257,40 +2848,51 @@ __metadata: languageName: node linkType: hard -"global-directory@npm:^4.0.1": - version: 4.0.1 - resolution: "global-directory@npm:4.0.1" +"glob@npm:^13.0.0": + version: 13.0.6 + resolution: "glob@npm:13.0.6" dependencies: - ini: "npm:4.1.1" - checksum: 10c2/afd88b21401c29499b25f33adf4afd15d3dd861460a9ddff11fa7e4eddba8954f3015ff88e946128882d12c498c9af258d8ad735560c58540b6a60eec5258c2c + minimatch: "npm:^10.2.2" + minipass: "npm:^7.1.3" + path-scurry: "npm:^2.0.2" + checksum: 10c2/f3d97e79cf519a49ff16128f9200712730fb7874bcb9c4a109a2a014898658679db2689634159cb8bb7d445e645c66b4726756afa065ebb7135f22058d4e0e8c languageName: node linkType: hard -"globals@npm:^14.0.0": - version: 14.0.0 - resolution: "globals@npm:14.0.0" - checksum: 10c2/20e3459e3f7e7fa05455269ddd3e1ce86ade768e2c9c3704ecc87d7c0a7c7faa6be6e328a58a0a3c6d5b43574a305f5d019be93ed1010b8619bc7ff0eb620ee1 +"global-directory@npm:^5.0.0": + version: 5.0.0 + resolution: "global-directory@npm:5.0.0" + dependencies: + ini: "npm:6.0.0" + checksum: 10c2/32a05deee74ff880e41970da193a0d218e725d10836a1e6fab4b43425c642eddadf061e6d55360ebcbf335abe07b41aaae52b2527ad7c51b097d7d147c950a89 languageName: node linkType: hard -"globals@npm:^15.14.0": - version: 15.15.0 - resolution: "globals@npm:15.15.0" - checksum: 10c2/ec544800aa1c6f1445d5abd79d5efe6a0a1a2bea1399d7969356d5e260d0d7fa635917850017062be30375dfa5b258cce3896f004afb7fd091cc361b223586d1 +"globals@npm:^17.6.0": + version: 17.6.0 + resolution: "globals@npm:17.6.0" + checksum: 10c2/3e920b21e13c3aea170d04a5fb70d13bec6376357acba442575c51164a8951599beec21eec2f6c0afbbbdfaf77be9b23da76e187c8cd93fd90bda0e2be0fba1a languageName: node linkType: hard -"graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c2/a9c3bdf628fd32cee563c1de8231d8b389e9c7f531f67ca563686c168b417f8ba39e11d823f38a762e81eea06a18acdfab040197e35222e8537c6ecf8653ed3d languageName: node linkType: hard -"graphemer@npm:^1.4.0": - version: 1.4.0 - resolution: "graphemer@npm:1.4.0" - checksum: 10c2/ec4dc7b6d3f855cef9c2391157978d575bb7d7c8b1dfe158e0f5fafe8b2a91191e865316ab7bb421d370fc3cd67bb493accfe3aec8cb20f852268f1cd4075fc5 +"grammex@npm:^3.1.11": + version: 3.1.12 + resolution: "grammex@npm:3.1.12" + checksum: 10c2/952c8f8b0f9b2a1eb95f9eb89a0900ed7915c9114ade47427804aadf7db8863db7cd70cf0b766de9405d3c20b0bbddafae56ae32465389724ab24c9f704a3ea4 + languageName: node + linkType: hard + +"graphmatch@npm:^1.1.0": + version: 1.1.1 + resolution: "graphmatch@npm:1.1.1" + checksum: 10c2/f41476ee03c14c63d2c5137800cf5d9cae37d9724464bdbc0c23e9521633eff6992c187edb141a7285e9a319ccde8bf68592d3d1f35492e8f38fd1ecfbfd0fcc languageName: node linkType: hard @@ -3319,35 +2921,21 @@ __metadata: languageName: node linkType: hard -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 10c2/16a1e3fb9b61f976e53fcc62b444c851b61503d7db503b039613dde4016a376888c15c11cbd989c66769661ca0ee7f4fad3e5a5ffd12256ba952af512ffa6e24 - languageName: node - linkType: hard - -"has-unicode@npm:^2.0.1": - version: 2.0.1 - resolution: "has-unicode@npm:2.0.1" - checksum: 10c2/39cb979c3270685bb8cfe89470080bc8d4702607f227daf11e9846d28d3926fac5998cbac1395d601c23da79884ec6685f4bed157e0a84b9c2309045d098f376 - languageName: node - linkType: hard - -"hasown@npm:^2.0.0": - version: 2.0.2 - resolution: "hasown@npm:2.0.2" +"hosted-git-info@npm:^8.0.0": + version: 8.1.0 + resolution: "hosted-git-info@npm:8.1.0" dependencies: - function-bind: "npm:^1.1.2" - checksum: 10c2/ebc5180789ef407d767c47dbd37b57a16df0018fd76d46117e9cbf4064099559f5bae8a77f367fe07bb4436bc81ac05be1f8715527934adad53076736d9df7e5 + lru-cache: "npm:^10.0.1" + checksum: 10c2/41382786fa61c0b3df45f7686b58dae8c83d020ad29396d22003d6b5f77e65f6a40a7d87398ec2de6fc74b61ee60fd42adcc85bc97357c5693f0b92ae2b7ef8b languageName: node linkType: hard -"hosted-git-info@npm:^7.0.0, hosted-git-info@npm:^7.0.2": - version: 7.0.2 - resolution: "hosted-git-info@npm:7.0.2" +"hosted-git-info@npm:^9.0.0": + version: 9.0.3 + resolution: "hosted-git-info@npm:9.0.3" dependencies: - lru-cache: "npm:^10.0.1" - checksum: 10c2/a13099b972b9a328a1d5211abb5cc8395bee34e6a3d15c901cc43fa900c974796c1b9d2a4b12c351bbdfc68a6fea424e4f5efd1c48af923b538015259023b6d8 + lru-cache: "npm:^11.1.0" + checksum: 10c2/26a37ad00e97412615b3236c36fd55f3ecb35ad74c8449fbb5b755fd4d8447049f1647e12bafb7d1d55a57c353a3913109404ca1f0e9d1e26cb8cbdcb484862b languageName: node linkType: hard @@ -3378,13 +2966,6 @@ __metadata: languageName: node linkType: hard -"human-signals@npm:^5.0.0": - version: 5.0.0 - resolution: "human-signals@npm:5.0.0" - checksum: 10c2/3722154538fc8b44318a8d1fcfa9ac71e6041324185caedb3b9ad7b5fdddedc0b3cb547ba0aebcb12bdc090e1d8c71d73657d087a6872d295df160a6c5e20648 - languageName: node - linkType: hard - "husky@npm:^9.1.7": version: 9.1.7 resolution: "husky@npm:9.1.7" @@ -3403,23 +2984,39 @@ __metadata: languageName: node linkType: hard -"ignore-walk@npm:^6.0.4": - version: 6.0.5 - resolution: "ignore-walk@npm:6.0.5" +"iconv-lite@npm:^0.7.2": + version: 0.7.2 + resolution: "iconv-lite@npm:0.7.2" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c2/7cc2bd6d99a58d2620431bbd3aea2ec526cc1d3fa02b3fbfb29e8dd30e61ac0957ffbeab479013d20067c7470335c7be65eb17779aaf626861850413abd9a291 + languageName: node + linkType: hard + +"ignore-walk@npm:^8.0.0": + version: 8.0.0 + resolution: "ignore-walk@npm:8.0.0" dependencies: - minimatch: "npm:^9.0.0" - checksum: 10c2/fd65e10e651f625d12b40b3133815fdc6cbc9ced041f682b3eec1f1d321e6f17bbc97bf01561349d2147d71258a146ff71f56db3a663af707be0a3e6a58a1082 + minimatch: "npm:^10.0.3" + checksum: 10c2/ea93c4cc7b2993d3099a1093ce6c1c6fd42e0008198f132918fc56c7b1f521980b7f45666ddfb09b9901ac20e09bba0687bca8b0565ffbfa82d60c4352aca423 languageName: node linkType: hard -"ignore@npm:^5.2.0, ignore@npm:^5.3.1": +"ignore@npm:^5.2.0": version: 5.3.1 resolution: "ignore@npm:5.3.1" checksum: 10c2/b44fb3256baddd956bb50234ee22828466e502b25e892b14d0807998994ad492c1bec9a7ec0e886028e6f92828eda74292d9decc094b7d619f557324bcdc570c languageName: node linkType: hard -"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": +"ignore@npm:^7.0.5": + version: 7.0.5 + resolution: "ignore@npm:7.0.5" + checksum: 10c2/4fe59ca7975b489085ce229c428fdbc8527aef0c8e6424cb8ee0b9b54dd063f045b733cfa705b61326e73aaa6dd8cc68a25f15f99eef57665fffb19b5ca30b70 + languageName: node + linkType: hard + +"import-fresh@npm:^3.3.0": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -3441,13 +3038,6 @@ __metadata: languageName: node linkType: hard -"import-meta-resolve@npm:^4.0.0": - version: 4.1.0 - resolution: "import-meta-resolve@npm:4.1.0" - checksum: 10c2/adefd9620afc90d396ee87b1d81e690143dfbfc7c896c72aeb1c01dac45ad17c1a87ffa630e98d110c64f18060987508a6cd25d7c06bbc3165f16d5e18562963 - languageName: node - linkType: hard - "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -3462,24 +3052,10 @@ __metadata: languageName: node linkType: hard -"index-to-position@npm:^0.1.2": - version: 0.1.2 - resolution: "index-to-position@npm:0.1.2" - checksum: 10c2/2e6156c40be2cd999624dd806d894eee8b0265b08d9d5bcca30e42665a065f64b4d87f3b0205f84538fdb2430caa29932491af8137a81d2a18c25aaedbf965ef - languageName: node - linkType: hard - -"ini@npm:4.1.1": - version: 4.1.1 - resolution: "ini@npm:4.1.1" - checksum: 10c2/f26a6ed7a1b364052ad654aa6c8eaa473808dba3b70ead81b7adaad56638cbf4045b7c2a76f551d6bf0c02a0d93db9439cbcfc9a33150e180cd11b7d50faa774 - languageName: node - linkType: hard - -"ini@npm:^1.3.4": - version: 1.3.8 - resolution: "ini@npm:1.3.8" - checksum: 10c2/7ccf00cff5524f0ab243ce5b0b443e75b8ab9952e475bfd021b09a99e01a49bc420a028519d9086cf871c917a0049c5c9f6bac467d3602a486ccfe1341e9fdd4 +"ini@npm:6.0.0, ini@npm:^6.0.0": + version: 6.0.0 + resolution: "ini@npm:6.0.0" + checksum: 10c2/c85685c1537c2d57f324a8584d54780a7832a35ab93c33ec6314cdc28b43b727ad7d628cded01d5a61a19b3078298fcdf2926a3eafa78c8f6e0902772020ac1c languageName: node linkType: hard @@ -3500,26 +3076,6 @@ __metadata: languageName: node linkType: hard -"is-ci@npm:^4.1.0": - version: 4.1.0 - resolution: "is-ci@npm:4.1.0" - dependencies: - ci-info: "npm:^4.1.0" - bin: - is-ci: bin.js - checksum: 10c2/c41d6fed99772268b0096219e818ee8f2e44951323535de368d760d6851f51e551b61c043aa8dfcea84d817079f1ab966e5a398dcb1eadcb5922c3da531f9576 - languageName: node - linkType: hard - -"is-core-module@npm:^2.8.1": - version: 2.13.1 - resolution: "is-core-module@npm:2.13.1" - dependencies: - hasown: "npm:^2.0.0" - checksum: 10c2/4080f4d6ea0d5cf4c790b708b5b482e9a7629a884e289cf07cb34171000377229c6dd5f343245879784ad2c27dac82fd1969812884227f45ca662c7085f29893 - languageName: node - linkType: hard - "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -3534,23 +3090,16 @@ __metadata: languageName: node linkType: hard -"is-fullwidth-code-point@npm:^4.0.0": - version: 4.0.0 - resolution: "is-fullwidth-code-point@npm:4.0.0" - checksum: 10c2/712110f3c985988a26a48c9dd14c89e31d30dd6a78e4406dd6f3f3548cbd872ddc6b4416991e519dee28284719cc65f332494eec7122a1a103754b3973b3bb84 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^5.0.0": - version: 5.0.0 - resolution: "is-fullwidth-code-point@npm:5.0.0" +"is-fullwidth-code-point@npm:^5.0.0, is-fullwidth-code-point@npm:^5.1.0": + version: 5.1.0 + resolution: "is-fullwidth-code-point@npm:5.1.0" dependencies: - get-east-asian-width: "npm:^1.0.0" - checksum: 10c2/54751feb38fca71f97fa4102d701f4e41919e27dad8bcc2b0bc144f30052a58c9a7b92111b725f0ff9b738ca687e8177fa6c10524eea5e65a30a23db7754fc81 + get-east-asian-width: "npm:^1.3.1" + checksum: 10c2/bff99eb1ef538e63668b97e0d8c4acfa207c757f3b80429612b4bf7d230741dfd1d6bba32d8e5157aadfddd1ee01cd54ce389a380e2f0cafe46514452cc641e6 languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.3": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -3566,13 +3115,6 @@ __metadata: languageName: node linkType: hard -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 10c2/96739fe67903cbb3476a86647a060d49786a36c3c0891d9d1f4d66ac07b7c8e7f0deb600d85990d9009e2a651f11cdc0b35188299244aa286e8197fb6661bb6a - languageName: node - linkType: hard - "is-obj@npm:^2.0.0": version: 2.0.0 resolution: "is-obj@npm:2.0.0" @@ -3580,22 +3122,13 @@ __metadata: languageName: node linkType: hard -"is-plain-obj@npm:^4.0.0, is-plain-obj@npm:^4.1.0": +"is-plain-obj@npm:^4.1.0": version: 4.1.0 resolution: "is-plain-obj@npm:4.1.0" checksum: 10c2/7882c14f35d2a3189babdbc2ac352e07831632da9c58af034ca9a20315ac66a1dc476c4eba8b7aa3bcc7ed65a5d97ff733d1f9a186af12e63b66b0029c3e519a languageName: node linkType: hard -"is-plain-object@npm:^2.0.4": - version: 2.0.4 - resolution: "is-plain-object@npm:2.0.4" - dependencies: - isobject: "npm:^3.0.1" - checksum: 10c2/796ddf2bcf487c04a5118f720403325f034a06c333e4aa418d93fa06cdf71b8d05432576026dc99ed87dcaaf38dc9f831d8a82d4c473dc7ef18eb93f160b4136 - languageName: node - linkType: hard - "is-ssh@npm:^1.4.0": version: 1.4.0 resolution: "is-ssh@npm:1.4.0" @@ -3605,29 +3138,6 @@ __metadata: languageName: node linkType: hard -"is-stream@npm:^3.0.0": - version: 3.0.0 - resolution: "is-stream@npm:3.0.0" - checksum: 10c2/3580ec0880e14a3f0dc03caf65887fb75c0ff5f3462d2be3e7c95b202473be98e3e592add9384d14a7559e32c88db37b1ef6deaeb69452d561496979f3f18dbe - languageName: node - linkType: hard - -"is-stream@npm:^4.0.1": - version: 4.0.1 - resolution: "is-stream@npm:4.0.1" - checksum: 10c2/09fc4f2ab1d419e6ac80cd732043b9db1ad600f4864ef7859c331b9f790e58a712e17dac71a29b3cc9edf6a7ddfbe087c5009cccf155a0b126d82c3d69628084 - languageName: node - linkType: hard - -"is-text-path@npm:^2.0.0": - version: 2.0.0 - resolution: "is-text-path@npm:2.0.0" - dependencies: - text-extensions: "npm:^2.0.0" - checksum: 10c2/c498503e0615af01fbb35150eb286420204fb562834120ca0460d95d7c3a8e655957357032ca7943981edd038a0cfe8cde611db624b65dd66bac074661688f9a - languageName: node - linkType: hard - "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -3642,10 +3152,10 @@ __metadata: languageName: node linkType: hard -"isobject@npm:^3.0.1": - version: 3.0.1 - resolution: "isobject@npm:3.0.1" - checksum: 10c2/3e5eac571a2de948bfe0bbdd471e75eb9c7b7124f836a444c28e100d77bef16991243c9db450ab10115a238ab7d2af3236e66b06c9c3bba8362b610a1f86e74b +"isexe@npm:^4.0.0": + version: 4.0.0 + resolution: "isexe@npm:4.0.0" + checksum: 10c2/ddc2e3d43c1e443f6e2ff9ff3e4264644b85e35e5b84bb5fa9b26029c508a9e6f9ec6f01a7adf3777958f7d1c5b074c3e117f2f93c94ca76da893b64153b7b2f languageName: node linkType: hard @@ -3710,10 +3220,10 @@ __metadata: languageName: node linkType: hard -"json-parse-even-better-errors@npm:^3.0.0, json-parse-even-better-errors@npm:^3.0.2": - version: 3.0.2 - resolution: "json-parse-even-better-errors@npm:3.0.2" - checksum: 10c2/6ebf3f4eac361020a25a9ad915aed362fffcf3ef4ad4fc13470145264cc46467a800baea9a74dc12144a262c55ec257b0d1b6f6d49486647c061b350646a8b73 +"json-parse-even-better-errors@npm:^5.0.0": + version: 5.0.0 + resolution: "json-parse-even-better-errors@npm:5.0.0" + checksum: 10c2/e1db9f59a0eaa72e13de75f8737f9e74d28bf49618eda82a01569b9c40a8ed0d090dea3b90564b18309cb4ef093a67199fc8b8eb56bf92c00956327a17c3dbcd languageName: node linkType: hard @@ -3745,10 +3255,10 @@ __metadata: languageName: node linkType: hard -"json-stringify-safe@npm:^5.0.1": - version: 5.0.1 - resolution: "json-stringify-safe@npm:5.0.1" - checksum: 10c2/47df235bed5f852b11a31f4377ad8b75e07677b1af187e95e631057952410b12f26f9e6761a7f5417f7d1ff24c38df005faeb17809061b49c5600b28555e9141 +"json-with-bigint@npm:^3.5.3": + version: 3.5.8 + resolution: "json-with-bigint@npm:3.5.8" + checksum: 10c2/a34ab1712aa5deaa925eb9d333cc955ab82c0d5c6d75ae784c58d66ed746916f51bb19d360f3d6eba7bd8d96cdf44bc09152a5afc92eb81d77311e2324f3334b languageName: node linkType: hard @@ -3761,89 +3271,189 @@ __metadata: languageName: node linkType: hard -"jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" +"jsonparse@npm:^1.3.1": + version: 1.3.1 + resolution: "jsonparse@npm:1.3.1" + checksum: 10c2/8189f51fe38911f7aa999110c75aba845b15f2b14a233658de58ea6f6a9ea676dac27c12093d29b49fd5ca67dc243878a8c392492cdedd3ddf2f1f5ae41884ab + languageName: node + linkType: hard + +"just-diff-apply@npm:^5.2.0": + version: 5.5.0 + resolution: "just-diff-apply@npm:5.5.0" + checksum: 10c2/90e679db0e101cbb79ff4ad79ddb03695593fe06599390e5d7e82586f92e4a3feb7cb6e0dacc894e92cd8905da58912acaf13013891d7c12bc05ac1da83e19b1 + languageName: node + linkType: hard + +"just-diff@npm:^6.0.0": + version: 6.0.2 + resolution: "just-diff@npm:6.0.2" + checksum: 10c2/cad0456e95cb4d8a3b6386c73f9a0063eb0014652d8608d62aa619186f256541c446a65ab177eccc0e2e1fbd520ab1505dff19b3427cb47a8c46d944d313db37 + languageName: node + linkType: hard + +"keyv@npm:^4.5.4": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" dependencies: - graceful-fs: "npm:^4.1.6" - universalify: "npm:^2.0.0" - dependenciesMeta: - graceful-fs: - optional: true - checksum: 10c2/fa6b75d4094ca45831ce589c690b9bc39f19eb0ea751b538a40c003002e50ece973bfc9f0dae1ca964c2de5932c4486a93a36aad413fdfd7109d3f7b2d789100 + json-buffer: "npm:3.0.1" + checksum: 10c2/4d340c37cdc22670b0521d0c135004a4b0e4aa37c5214fe819c1adc793daa7034e026398936ba8ab50c55fd59735dd84edfb2d0a87983145d51694164959f297 + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10c2/a3be1f9fd0ae1696947fbc7daeba3290f186489aca545a15f3e5b76448ff6f8187dd16a71233be5617a5f660f0434e5951fe0015e29c7053462c1c9c294c2836 + languageName: node + linkType: hard + +"libnpmaccess@npm:^10.0.3": + version: 10.0.3 + resolution: "libnpmaccess@npm:10.0.3" + dependencies: + npm-package-arg: "npm:^13.0.0" + npm-registry-fetch: "npm:^19.0.0" + checksum: 10c2/4f3f0c79941b5ce9e375a229771936e08e242fcc694ca23f7432e1d7270eabed84c1fe1c64b196288493685577d5953de2e4525f7f61a0d71fa333bbfc9088c3 + languageName: node + linkType: hard + +"libnpmpublish@npm:^11.1.3": + version: 11.1.3 + resolution: "libnpmpublish@npm:11.1.3" + dependencies: + "@npmcli/package-json": "npm:^7.0.0" + ci-info: "npm:^4.0.0" + npm-package-arg: "npm:^13.0.0" + npm-registry-fetch: "npm:^19.0.0" + proc-log: "npm:^6.0.0" + semver: "npm:^7.3.7" + sigstore: "npm:^4.0.0" + ssri: "npm:^13.0.0" + checksum: 10c2/a2372c8d3ad9d771c31368b6750931f5a7dcd232f88fd1cbba955dce15ea1bcf8ba7ba42431ed0d62368ab7297cd3c9b83699119e5fe05efcb597568dfa35c42 + languageName: node + linkType: hard + +"lightningcss-android-arm64@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-android-arm64@npm:1.32.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"lightningcss-darwin-arm64@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-darwin-arm64@npm:1.32.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"lightningcss-darwin-x64@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-darwin-x64@npm:1.32.0" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"jsonparse@npm:^1.2.0, jsonparse@npm:^1.3.1": - version: 1.3.1 - resolution: "jsonparse@npm:1.3.1" - checksum: 10c2/8189f51fe38911f7aa999110c75aba845b15f2b14a233658de58ea6f6a9ea676dac27c12093d29b49fd5ca67dc243878a8c392492cdedd3ddf2f1f5ae41884ab +"lightningcss-freebsd-x64@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-freebsd-x64@npm:1.32.0" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"just-diff-apply@npm:^5.2.0": - version: 5.5.0 - resolution: "just-diff-apply@npm:5.5.0" - checksum: 10c2/90e679db0e101cbb79ff4ad79ddb03695593fe06599390e5d7e82586f92e4a3feb7cb6e0dacc894e92cd8905da58912acaf13013891d7c12bc05ac1da83e19b1 +"lightningcss-linux-arm-gnueabihf@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-arm-gnueabihf@npm:1.32.0" + conditions: os=linux & cpu=arm languageName: node linkType: hard -"just-diff@npm:^6.0.0": - version: 6.0.2 - resolution: "just-diff@npm:6.0.2" - checksum: 10c2/cad0456e95cb4d8a3b6386c73f9a0063eb0014652d8608d62aa619186f256541c446a65ab177eccc0e2e1fbd520ab1505dff19b3427cb47a8c46d944d313db37 +"lightningcss-linux-arm64-gnu@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-arm64-gnu@npm:1.32.0" + conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"keyv@npm:^4.5.4": - version: 4.5.4 - resolution: "keyv@npm:4.5.4" - dependencies: - json-buffer: "npm:3.0.1" - checksum: 10c2/4d340c37cdc22670b0521d0c135004a4b0e4aa37c5214fe819c1adc793daa7034e026398936ba8ab50c55fd59735dd84edfb2d0a87983145d51694164959f297 +"lightningcss-linux-arm64-musl@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-arm64-musl@npm:1.32.0" + conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"kind-of@npm:^6.0.2": - version: 6.0.3 - resolution: "kind-of@npm:6.0.3" - checksum: 10c2/09f538b9e57ee979aafb47502ad94020c9b66ced7235e6e71dd9168eeb929495d95a8b42b6d92e703c7e2fd1b8eecaeb4b2d6effe7e1e48a51b88e760de8ccf0 +"lightningcss-linux-x64-gnu@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-x64-gnu@npm:1.32.0" + conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"levn@npm:^0.4.1": - version: 0.4.1 - resolution: "levn@npm:0.4.1" - dependencies: - prelude-ls: "npm:^1.2.1" - type-check: "npm:~0.4.0" - checksum: 10c2/a3be1f9fd0ae1696947fbc7daeba3290f186489aca545a15f3e5b76448ff6f8187dd16a71233be5617a5f660f0434e5951fe0015e29c7053462c1c9c294c2836 +"lightningcss-linux-x64-musl@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-x64-musl@npm:1.32.0" + conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"libnpmaccess@npm:^8.0.6": - version: 8.0.6 - resolution: "libnpmaccess@npm:8.0.6" - dependencies: - npm-package-arg: "npm:^11.0.2" - npm-registry-fetch: "npm:^17.0.1" - checksum: 10c2/b214fd80ca7127c07ca03f4c3b848599ee23c46c6a09af6248bbd07fe8e4bfa8d4b0e0dc9a5102cd338a5fb939f43651a9ceccff796ae6cebc73b0a4a6990fde +"lightningcss-win32-arm64-msvc@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-win32-arm64-msvc@npm:1.32.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"lightningcss-win32-x64-msvc@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-win32-x64-msvc@npm:1.32.0" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"libnpmpublish@npm:^9.0.9": - version: 9.0.9 - resolution: "libnpmpublish@npm:9.0.9" +"lightningcss@npm:^1.32.0": + version: 1.32.0 + resolution: "lightningcss@npm:1.32.0" dependencies: - ci-info: "npm:^4.0.0" - normalize-package-data: "npm:^6.0.1" - npm-package-arg: "npm:^11.0.2" - npm-registry-fetch: "npm:^17.0.1" - proc-log: "npm:^4.2.0" - semver: "npm:^7.3.7" - sigstore: "npm:^2.2.0" - ssri: "npm:^10.0.6" - checksum: 10c2/2d7d26b199c7a052fba6e78965dfc00bb5e5b3e1f037e63d49d6ca800c522f43c4ed69ad2fa425331ff5b4a258311b9606e2df2457e27c3b7396b9bb2bab3e9b + detect-libc: "npm:^2.0.3" + lightningcss-android-arm64: "npm:1.32.0" + lightningcss-darwin-arm64: "npm:1.32.0" + lightningcss-darwin-x64: "npm:1.32.0" + lightningcss-freebsd-x64: "npm:1.32.0" + lightningcss-linux-arm-gnueabihf: "npm:1.32.0" + lightningcss-linux-arm64-gnu: "npm:1.32.0" + lightningcss-linux-arm64-musl: "npm:1.32.0" + lightningcss-linux-x64-gnu: "npm:1.32.0" + lightningcss-linux-x64-musl: "npm:1.32.0" + lightningcss-win32-arm64-msvc: "npm:1.32.0" + lightningcss-win32-x64-msvc: "npm:1.32.0" + dependenciesMeta: + lightningcss-android-arm64: + optional: true + lightningcss-darwin-arm64: + optional: true + lightningcss-darwin-x64: + optional: true + lightningcss-freebsd-x64: + optional: true + lightningcss-linux-arm-gnueabihf: + optional: true + lightningcss-linux-arm64-gnu: + optional: true + lightningcss-linux-arm64-musl: + optional: true + lightningcss-linux-x64-gnu: + optional: true + lightningcss-linux-x64-musl: + optional: true + lightningcss-win32-arm64-msvc: + optional: true + lightningcss-win32-x64-msvc: + optional: true + checksum: 10c2/48fb6c0595418f87b18480f07748aec1b2cb06a9b0e0dd6ae24c1e8e696f49b2fe57c428f8663735731d6f71747a6007835732ebe34f8c4597ecc68c9730f5b5 languageName: node linkType: hard @@ -3861,44 +3471,34 @@ __metadata: languageName: node linkType: hard -"lines-and-columns@npm:^2.0.3": - version: 2.0.4 - resolution: "lines-and-columns@npm:2.0.4" - checksum: 10c2/fa4f4bce6b72aa87cac8097c6aa6142a771e95f9993768a0d9b5ded3aff270512ee2b2d70c0ba9b0ef8f4ad51f2be969bfbd7e75542bacf5dc03f4bb5be857fa - languageName: node - linkType: hard - -"lint-staged@npm:^15.4.3": - version: 15.4.3 - resolution: "lint-staged@npm:15.4.3" +"lint-staged@npm:^17.0.4": + version: 17.0.4 + resolution: "lint-staged@npm:17.0.4" dependencies: - chalk: "npm:^5.4.1" - commander: "npm:^13.1.0" - debug: "npm:^4.4.0" - execa: "npm:^8.0.1" - lilconfig: "npm:^3.1.3" - listr2: "npm:^8.2.5" - micromatch: "npm:^4.0.8" - pidtree: "npm:^0.6.0" + listr2: "npm:^10.2.1" + picomatch: "npm:^4.0.4" string-argv: "npm:^0.3.2" - yaml: "npm:^2.7.0" + tinyexec: "npm:^1.1.2" + yaml: "npm:^2.8.4" + dependenciesMeta: + yaml: + optional: true bin: lint-staged: bin/lint-staged.js - checksum: 10c2/444c4e10bbb49d9d3beb71c0992862fbd7e7166ed007758902ad76819cc122b9399e6bc901a49f148e14f9ce4659c3f95cdfafa9ea5fed4c4d02ed7669319bb4 + checksum: 10c2/6ccb9cd551722c9f5b06fbec15274c558c00d392279268f249e2e977c3cdd9a668902ec920ea0390a817438ab89f584c113de1174b8d2d15d3415fbba34647b6 languageName: node linkType: hard -"listr2@npm:^8.2.5": - version: 8.2.5 - resolution: "listr2@npm:8.2.5" +"listr2@npm:^10.2.1": + version: 10.2.1 + resolution: "listr2@npm:10.2.1" dependencies: - cli-truncate: "npm:^4.0.0" - colorette: "npm:^2.0.20" - eventemitter3: "npm:^5.0.1" + cli-truncate: "npm:^5.2.0" + eventemitter3: "npm:^5.0.4" log-update: "npm:^6.1.0" rfdc: "npm:^1.4.1" - wrap-ansi: "npm:^9.0.0" - checksum: 10c2/8dd19a432897698509dd174547175ebef91a84b1d1f1ea16f7e4a8e2faadef9862bcec0ab11bc9e470335e16c437e5d39efc38eb824e137b5feabf0588abc28f + wrap-ansi: "npm:^10.0.0" + checksum: 10c2/bfc8dfba5a431689ff2e18c033e5a6205373e88d8850e4a2e4e7093513a349835798dec0c4d478c39fff82ae23e97364bd77c4209726d3fa15863a7ee227e6f1 languageName: node linkType: hard @@ -3927,78 +3527,6 @@ __metadata: languageName: node linkType: hard -"locate-path@npm:^7.1.0, locate-path@npm:^7.2.0": - version: 7.2.0 - resolution: "locate-path@npm:7.2.0" - dependencies: - p-locate: "npm:^6.0.0" - checksum: 10c2/7f5bbd5471aaefe7fb787fd04b36cfddcd0067374ac7f557298a075d8c5a9832a192f14bb5a2e1cef80b7dcc3c5627c41717a0059356aa6ca771bdd9249ec79b - languageName: node - linkType: hard - -"lodash.camelcase@npm:^4.3.0": - version: 4.3.0 - resolution: "lodash.camelcase@npm:4.3.0" - checksum: 10c2/c4a9f264e44d75732fe41f73f6198da7c976181c11bbab91fafa982fd4c8150cc726b67ab189b569b92574bec767e76e69e60c354f74254210b4c231e2521f38 - languageName: node - linkType: hard - -"lodash.isplainobject@npm:^4.0.6": - version: 4.0.6 - resolution: "lodash.isplainobject@npm:4.0.6" - checksum: 10c2/af6ad10fcb1ab1499694aa24cbd9dbf39a04db34bb560f68de690e1f669276f1ef6326f8123c9ce16820e32537a5f502e28e37dba2d4c56a389492169b38a75d - languageName: node - linkType: hard - -"lodash.kebabcase@npm:^4.1.1": - version: 4.1.1 - resolution: "lodash.kebabcase@npm:4.1.1" - checksum: 10c2/d63e08f7737f47870522fa79989938a5fbbe81e9608a5c582b31740f710c2cd3083e95a2fc35fc3c5c593369b90de4ae77bec06be0e6e295f64306166252d77b - languageName: node - linkType: hard - -"lodash.merge@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.merge@npm:4.6.2" - checksum: 10c2/8cb38946c6bf0321e1feb70be237f19a215e88de16c27de1d403a6dac949b341206802c44e2d9d3495d24ad8bbcba33e20086293d978d6e7777e477a859ccd67 - languageName: node - linkType: hard - -"lodash.mergewith@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.mergewith@npm:4.6.2" - checksum: 10c2/70e157a68d96b730c93ab9f4258046e8ac42c03ada55a6666fc2230ce8697dd169f7614e23a32d98e390138fe6dcb788117e730aca5c7b59f890f73554920b1f - languageName: node - linkType: hard - -"lodash.snakecase@npm:^4.1.1": - version: 4.1.1 - resolution: "lodash.snakecase@npm:4.1.1" - checksum: 10c2/664d48c656f417bbd2f9d897463c70bd9bbad57c929bb2755f7df671b454c308479e00d07134aa61cf05981691a9c3686229ca95a22055107e5dc26ecbf9a846 - languageName: node - linkType: hard - -"lodash.startcase@npm:^4.4.0": - version: 4.4.0 - resolution: "lodash.startcase@npm:4.4.0" - checksum: 10c2/142cd1e1cb83ddb43c9d13f4350530a39bb0e5d68ea7ce9a87b431533a601e459a4e5ec4f033e93682ebaa58d6179e24eb0a48923e9cd1e4fce9442d24981ec2 - languageName: node - linkType: hard - -"lodash.uniq@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.uniq@npm:4.5.0" - checksum: 10c2/b6d896bc2c45ccea81434721fcb3534eee1b7754fba6bd3610c51411c2f393472c232d1cb79ddbf117d86c30b17f406291dc9fbd57257af7afcbbb59c7bfe267 - languageName: node - linkType: hard - -"lodash.upperfirst@npm:^4.3.1": - version: 4.3.1 - resolution: "lodash.upperfirst@npm:4.3.1" - checksum: 10c2/ba9afb788e8b10475bbe1ab63c6267866a9d3fe89d9862859fc96ca00b09bfbf9e2c892f701e0d52f72541e137787881d3f110488f72514f0fd5725fb7cb8478 - languageName: node - linkType: hard - "log-update@npm:^6.1.0": version: 6.1.0 resolution: "log-update@npm:6.1.0" @@ -4012,33 +3540,26 @@ __metadata: languageName: node linkType: hard -"loupe@npm:^3.1.0, loupe@npm:^3.1.2": - version: 3.1.3 - resolution: "loupe@npm:3.1.3" - checksum: 10c2/64d170771e2f6d56e7c75108cacffcaa09928fd4c9f8d0b79bd38f4b553bfd58a976b419f40a66515f6798f9b985714c5c16df3c039fb5f33d00df48e211d2e9 - languageName: node - linkType: hard - -"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.2.2": +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" checksum: 10c2/ceec41dd68a6216dff75843ab9e63916cffa282f438cd52e3fe8812542d253446f103659ce0dca2c514e2104d6f94e80c3897c027657312d00c678f0bd774316 languageName: node linkType: hard -"magic-string@npm:^0.30.17": - version: 0.30.17 - resolution: "magic-string@npm:0.30.17" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.5.0" - checksum: 10c2/94e1ff06947a3c969153ad71b5c01e91d126bf19efc4c2d67e315a504f91b8b6bf6f2dfc31d17e2f2cce1e8b04b8d4ebcba25ac96b53de964e9025a26f61bbd2 +"lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": + version: 11.3.6 + resolution: "lru-cache@npm:11.3.6" + checksum: 10c2/0ec488b656631cea0eb9276f9ea27ee436f5cf8a40f985f9c92a5ebf428eea21ad9b87b71d6b25e8669b72ab01c5f5066c79f4f0d57657353059733d004c16bc languageName: node linkType: hard -"make-dir@npm:^5.0.0": - version: 5.0.0 - resolution: "make-dir@npm:5.0.0" - checksum: 10c2/9a71de73705158c45f6f2bf4804bfff53f3a49ce49989aca3b5d5acfc01100c61009816f266a41dd837ec04798dc82387f57a662202238e9ac6777cf77433bae +"magic-string@npm:^0.30.21": + version: 0.30.21 + resolution: "magic-string@npm:0.30.21" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.5" + checksum: 10c2/fa053737c5b5b558a7af7ebc81b030ac728e5e3e996bf252daff020bab8823b2d63c2c3394013af8655e6a6efa883e346ccc7202a91e2aee323ba059314e2584 languageName: node linkType: hard @@ -4049,7 +3570,7 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^13.0.0, make-fetch-happen@npm:^13.0.1": +"make-fetch-happen@npm:^13.0.0": version: 13.0.1 resolution: "make-fetch-happen@npm:13.0.1" dependencies: @@ -4069,41 +3590,30 @@ __metadata: languageName: node linkType: hard -"meow@npm:^12.0.1": - version: 12.1.1 - resolution: "meow@npm:12.1.1" - checksum: 10c2/ada793a2e7f8cd15c0e2cd612689ed3b5fc845a376c2e7642719014244e664f59b1e3e061c75559abbf4f6bc9722846d9deaedf985deba91ec2af763d42398d9 - languageName: node - linkType: hard - -"merge-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "merge-stream@npm:2.0.0" - checksum: 10c2/b7bba78795a36906f373adb320091146233294987330016a3034f0f53aafd02540576aba46add6b0ffdbf3cdc9af22df4d9d4c41708efdfcbb9cfd399bdf8029 - languageName: node - linkType: hard - -"merge2@npm:^1.3.0": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 10c2/45d32fc832cecd588b9e0e2f32981ac28959d2d4f608a2b13611dd34eee473b2396902efb940e7d25251672aad62812da1870fb2e63e873b33bd923b6be0b3d8 - languageName: node - linkType: hard - -"micromatch@npm:^4.0.4, micromatch@npm:^4.0.8": - version: 4.0.8 - resolution: "micromatch@npm:4.0.8" +"make-fetch-happen@npm:^15.0.0, make-fetch-happen@npm:^15.0.1, make-fetch-happen@npm:^15.0.4": + version: 15.0.5 + resolution: "make-fetch-happen@npm:15.0.5" dependencies: - braces: "npm:^3.0.3" - picomatch: "npm:^2.3.1" - checksum: 10c2/63e9cfde15326821818110e049897fbc3c507125e8ab5c73b08ca468e2a668ea22d3c93aebc319e90beb22f48fe1e6ac506681cd0e06dabdd71b67bf0457e14d + "@gar/promise-retry": "npm:^1.0.0" + "@npmcli/agent": "npm:^4.0.0" + "@npmcli/redact": "npm:^4.0.0" + cacache: "npm:^20.0.1" + http-cache-semantics: "npm:^4.1.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^5.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^1.0.0" + proc-log: "npm:^6.0.0" + ssri: "npm:^13.0.0" + checksum: 10c2/033ba64ac5ad313b4fd294cd0abb615c27f0d10d9d107784379afdada80291f0e7b5ee353517dbce91a63a330f0551676e62c01d15460b057989086bf2889619 languageName: node linkType: hard -"mimic-fn@npm:^4.0.0": - version: 4.0.0 - resolution: "mimic-fn@npm:4.0.0" - checksum: 10c2/61adee7cbc064860576d8bcde5f6f2a4467b1e4079db0925bc79a4368826cff0d199187df2e659fe18d435cee655c387e9ce87ceea65310f75a6ad2c6ed9786e +"meow@npm:^13.0.0": + version: 13.2.0 + resolution: "meow@npm:13.2.0" + checksum: 10c2/db3b72e0fa071dd320d30ef7de892a7f64e4f0000c73daec4cf3e4b892a4d5cc30438d7125a05319385e03ad31f30f7dd136081663893822859b97deeb2cc508 languageName: node linkType: hard @@ -4114,16 +3624,16 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" +"minimatch@npm:^10.0.3, minimatch@npm:^10.1.1, minimatch@npm:^10.2.2, minimatch@npm:^10.2.4": + version: 10.2.5 + resolution: "minimatch@npm:10.2.5" dependencies: - brace-expansion: "npm:^1.1.7" - checksum: 10c2/ba99948ba0855ff3d4c84414bd88604ecb6949a9e308f1f4415116ab0c1284772844d8e8c18e4b587d8c4bedf55f9fde72cf4de211f2c6de48504274021c332a + brace-expansion: "npm:^5.0.5" + checksum: 10c2/eecc1c63365da827db4a2780206177a087bdd8581e8b5d9d8710cccf59eaf152089f79c99b58230b6ad7274a172298eedc985f6082d722b51dd5b625b6fcc052 languageName: node linkType: hard -"minimatch@npm:^9.0.0, minimatch@npm:^9.0.3, minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": +"minimatch@npm:^9.0.4": version: 9.0.5 resolution: "minimatch@npm:9.0.5" dependencies: @@ -4132,7 +3642,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.8": +"minimist@npm:^1.2.5": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 10c2/b7db6338024fce4ee75bf05309a6e0de3d6dda25924b256b0ecb8fa507e44eca24f8c52d69d75dbb53ce1db112c4b66b31ea1dd823064b2b3109a6f8f69d22a7 @@ -4163,6 +3673,21 @@ __metadata: languageName: node linkType: hard +"minipass-fetch@npm:^5.0.0": + version: 5.0.2 + resolution: "minipass-fetch@npm:5.0.2" + dependencies: + iconv-lite: "npm:^0.7.2" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^2.0.0" + minizlib: "npm:^3.0.1" + dependenciesMeta: + iconv-lite: + optional: true + checksum: 10c2/daf8cd2599729dd9ed32843a42cf62082f2ae19e0ea2f190d7263ac83a9ca6374337f98f01416373be214506518ca4bbc5b0aa703462839235ff89c5b43bae1b + languageName: node + linkType: hard + "minipass-flush@npm:^1.0.5": version: 1.0.5 resolution: "minipass-flush@npm:1.0.5" @@ -4190,6 +3715,15 @@ __metadata: languageName: node linkType: hard +"minipass-sized@npm:^2.0.0": + version: 2.0.0 + resolution: "minipass-sized@npm:2.0.0" + dependencies: + minipass: "npm:^7.1.2" + checksum: 10c2/92e47b29e556ec5417f74d2d3c9cc6517c3c928ed98ede005f10c591cc6bb292f84bccb5428dd6dd50a37ad31f40c33fafa813239b567160856902bdf7910411 + languageName: node + linkType: hard + "minipass@npm:^3.0.0": version: 3.3.6 resolution: "minipass@npm:3.3.6" @@ -4206,10 +3740,10 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": - version: 7.1.2 - resolution: "minipass@npm:7.1.2" - checksum: 10c2/1b81e982ce6faf0e89e8413f901a33af189c98c4776fd0b25f41100e44b2e7bc64dd196345b2a805dff5195833e0d8fd64e2395258ed446007507be0e7503c70 +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2, minipass@npm:^7.1.3": + version: 7.1.3 + resolution: "minipass@npm:7.1.3" + checksum: 10c2/cefda11cfdb1152c0757a20a8ebac1afe66226b09a816e3f30365d2da1ceabed26df6ecdf32817eac9eb9dec34dee40e216121c3b3b2315a18be17dfa12dd461 languageName: node linkType: hard @@ -4223,6 +3757,15 @@ __metadata: languageName: node linkType: hard +"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": + version: 3.1.0 + resolution: "minizlib@npm:3.1.0" + dependencies: + minipass: "npm:^7.1.2" + checksum: 10c2/071ca68587c3c8b1547d5364e81498df075a66e5cfa4bd1b7440de3ac7cd474a0fced49f938d1d11539b04790612195023fb7cc023bfeefa5f09e54aaf1d7b1e + languageName: node + linkType: hard + "mkdirp@npm:^1.0.3": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" @@ -4239,30 +3782,19 @@ __metadata: languageName: node linkType: hard -"multimatch@npm:^7.0.0": - version: 7.0.0 - resolution: "multimatch@npm:7.0.0" - dependencies: - array-differ: "npm:^4.0.0" - array-union: "npm:^3.0.1" - minimatch: "npm:^9.0.3" - checksum: 10c2/91baa14a48888f6785d7724643fe056340117e87308ab2fa35c8f5977674b2c6be9eeb498f7fa16b9478948f7b9210cb37652c2c8c1865ad0c4efc630aadea84 - languageName: node - linkType: hard - -"mute-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "mute-stream@npm:2.0.0" - checksum: 10c2/df2d5dd3ecd9f93b45fd3f7da8b0e8cbcffc4b2361e20aa3de53199d7b9bfad7860c990423a30e47b13d8e5d7b3130612fac1e2e099d02fd304c532f4e84cc03 +"mute-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "mute-stream@npm:3.0.0" + checksum: 10c2/8f287bc7e46fc88f832cf03468da045200ada2e5f1a8a78ac0788e82d59643f45fa21aeee0cbefafbbb3100e63abfdfbfe75825154955335d02ad25294cf37df languageName: node linkType: hard -"nanoid@npm:^3.3.8": - version: 3.3.8 - resolution: "nanoid@npm:3.3.8" +"nanoid@npm:^3.3.11": + version: 3.3.12 + resolution: "nanoid@npm:3.3.12" bin: nanoid: bin/nanoid.cjs - checksum: 10c2/0b4e5491b5a116f9ff29c0c825705d8d2e7f0ea00647161d781a2286297fed99a6cbfe04baaec050b7d5e7d2c0613376e82dad5badd3674c030f34cf417de842 + checksum: 10c2/8f88e83dd0b1ca92bd21b620b2b2da23c8152b451196d8f8b5693ff4690dd11a8fd49648a282d256becfc4b4d7e1bbd218d74b0bcc39ba565b72c719efab4ecb languageName: node linkType: hard @@ -4280,6 +3812,13 @@ __metadata: languageName: node linkType: hard +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10c2/ac791e2d45015f250665b887461ce62024a740d939f6b8c77236964afcca452590321458aff99aaf6b4f345c3f8ea33ec3185444a0df4c27b488cb6aa87387b9 + languageName: node + linkType: hard + "neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" @@ -4296,25 +3835,27 @@ __metadata: languageName: node linkType: hard -"node-domexception@npm:^1.0.0": - version: 1.0.0 - resolution: "node-domexception@npm:1.0.0" - checksum: 10c2/2cadaffc7b48f44b9ffc6c820968ec6bca958c647371ce4e1c3056edcdcb1968041eb8d3012eaa787744682b533f1ed45caff5e92d2370ced80a1b730aedd5a3 - languageName: node - linkType: hard - -"node-fetch@npm:^3.3.2": - version: 3.3.2 - resolution: "node-fetch@npm:3.3.2" +"node-gyp@npm:^12.1.0": + version: 12.3.0 + resolution: "node-gyp@npm:12.3.0" dependencies: - data-uri-to-buffer: "npm:^4.0.0" - fetch-blob: "npm:^3.1.4" - formdata-polyfill: "npm:^4.0.10" - checksum: 10c2/84d17dfe344fd37b5e5fe9c44ededf481719abb9de9cc73a9ec1b232244dcbdb8ab9f01939b1f7ac054c2c4c0ecf3aadafe624f6966497ac061cfd7f152a50fd + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + graceful-fs: "npm:^4.2.6" + nopt: "npm:^9.0.0" + proc-log: "npm:^6.0.0" + semver: "npm:^7.3.5" + tar: "npm:^7.5.4" + tinyglobby: "npm:^0.2.12" + undici: "npm:^6.25.0" + which: "npm:^6.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c2/6f7cc3f127a32320b9019e36384a8de14a5e93b14826a705d7f182746c53b6c25b2569309cd0acafd75959cd738caedcccd86649533acffed899da675b651dca languageName: node linkType: hard -"node-gyp@npm:^10.0.0, node-gyp@npm:latest": +"node-gyp@npm:latest": version: 10.1.0 resolution: "node-gyp@npm:10.1.0" dependencies: @@ -4334,7 +3875,7 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^7.0.0, nopt@npm:^7.2.1": +"nopt@npm:^7.0.0": version: 7.2.1 resolution: "nopt@npm:7.2.1" dependencies: @@ -4345,114 +3886,107 @@ __metadata: languageName: node linkType: hard -"normalize-package-data@npm:^6.0.0, normalize-package-data@npm:^6.0.1": - version: 6.0.1 - resolution: "normalize-package-data@npm:6.0.1" +"nopt@npm:^9.0.0": + version: 9.0.0 + resolution: "nopt@npm:9.0.0" dependencies: - hosted-git-info: "npm:^7.0.0" - is-core-module: "npm:^2.8.1" - semver: "npm:^7.3.5" - validate-npm-package-license: "npm:^3.0.4" - checksum: 10c2/dd407f85fd058ed701fa83ab1289b05076c22d9f0d9e851b1dffca623a5e0e72021eced98babe498255a74de1558594efcf7a2c8ba89986a05e1b7d01bc4ae22 + abbrev: "npm:^4.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c2/17a10c951490fb5b52851918d3535b4028ce96ebf9faee22afe73fed07792b89be0ed031648409cc417a049b1c7ef807f30f06eb89e182a768356aa8f233b8c5 languageName: node linkType: hard -"normalize-path@npm:^3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 10c2/44be02fb4e9dbfb132c3ec34d278b7be56e29a7fc5e5bf0c04ddb583082f249d946ad01c74e667e2f2eb1c1fe761b1d76cb76ef11fdc40bfa9e7264d0912eafb +"normalize-package-data@npm:^7.0.0": + version: 7.0.1 + resolution: "normalize-package-data@npm:7.0.1" + dependencies: + hosted-git-info: "npm:^8.0.0" + semver: "npm:^7.3.5" + validate-npm-package-license: "npm:^3.0.4" + checksum: 10c2/a2f145e6b400a49ee57ca4fd42c26f3ede31d5b29846b4c343dd276daf3b27cdf0e1cca3183d49317e96a27271a55106c2b53f7701ac223495d652744501620f languageName: node linkType: hard -"npm-bundled@npm:^3.0.0": - version: 3.0.1 - resolution: "npm-bundled@npm:3.0.1" +"npm-bundled@npm:^5.0.0": + version: 5.0.0 + resolution: "npm-bundled@npm:5.0.0" dependencies: - npm-normalize-package-bin: "npm:^3.0.0" - checksum: 10c2/0f2c3998c2fde873ae0d7ce622d7aa7f826c5b806b54dbdb62eed234531ea6ad6790ba2dec0c3f35707808aa6a54096caf8327d4e77fb31f26e0223a74a3f3e6 + npm-normalize-package-bin: "npm:^5.0.0" + checksum: 10c2/07072974d44c8ecb0a076477ab1429b2a5e031be2eac8d8e737e77a31c9cad84821eaf102ce372d17ab8d608025c76c2f83ec558756e93a9f45479b167e79bae languageName: node linkType: hard -"npm-install-checks@npm:^6.0.0, npm-install-checks@npm:^6.2.0": - version: 6.3.0 - resolution: "npm-install-checks@npm:6.3.0" +"npm-install-checks@npm:^8.0.0": + version: 8.0.0 + resolution: "npm-install-checks@npm:8.0.0" dependencies: semver: "npm:^7.1.1" - checksum: 10c2/9bc387ee79ba6a95706a1d28a81b11da0f49b36a98e04560a2fb6dca06fae9b3d1f1229780c0928fe1d4496099dc9aab9a885be95f0fb270bed4352a4a9a15c6 + checksum: 10c2/ee67adbbc1a5d2052ec5de62452d69fd7394a754652ff93d98ffbb047beabfb7af7de21aebbb41c78dca0a99ad927de8905bb7949c76a021fb4800516821862b languageName: node linkType: hard -"npm-normalize-package-bin@npm:^3.0.0": - version: 3.0.1 - resolution: "npm-normalize-package-bin@npm:3.0.1" - checksum: 10c2/2171d49b05ab483eae611058da7dcb3a0e17417dbe4a0429bc22f4730df658c743ead896852d10929fece0c8e54b8e03deb156c715dce36240a665e96d83e1ed +"npm-normalize-package-bin@npm:^5.0.0": + version: 5.0.0 + resolution: "npm-normalize-package-bin@npm:5.0.0" + checksum: 10c2/d87ecb9eccc1ac01d2998353395037a44e89361683aa440173e14eeab4b5ada8773842fbd86ebe8a6334d581b6db8003ea8323144c7b80b7970522bc5cf3b8bc languageName: node linkType: hard -"npm-package-arg@npm:^11.0.0, npm-package-arg@npm:^11.0.2, npm-package-arg@npm:^11.0.3": - version: 11.0.3 - resolution: "npm-package-arg@npm:11.0.3" +"npm-package-arg@npm:^13.0.0, npm-package-arg@npm:^13.0.2": + version: 13.0.2 + resolution: "npm-package-arg@npm:13.0.2" dependencies: - hosted-git-info: "npm:^7.0.0" - proc-log: "npm:^4.0.0" + hosted-git-info: "npm:^9.0.0" + proc-log: "npm:^6.0.0" semver: "npm:^7.3.5" - validate-npm-package-name: "npm:^5.0.0" - checksum: 10c2/a16994fc0cab33626e9a55568d0ba27db746b386b7db86e5c53b23602488deacb85fe5d9b6b1ed735a8a170bb9bb82053a6b9ad6bbda256777d5c0176bf88172 + validate-npm-package-name: "npm:^7.0.0" + checksum: 10c2/2bb4d017be87cecdc64f6237213388fb6fc09764e09e2bb038a4ea064e1a025a72ff7bf943fca0a33d20c75589e5a84ec24fc17f23347d1f32ed12aec2b1d5cb languageName: node linkType: hard -"npm-packlist@npm:^8.0.0, npm-packlist@npm:^8.0.2": - version: 8.0.2 - resolution: "npm-packlist@npm:8.0.2" +"npm-packlist@npm:^10.0.1, npm-packlist@npm:^10.0.4": + version: 10.0.4 + resolution: "npm-packlist@npm:10.0.4" dependencies: - ignore-walk: "npm:^6.0.4" - checksum: 10c2/beaa1c259ec0b5adf39ab727baaf1dbf5b4544ae1346d9935060e33987e268d5fa6b08560b420ba733aa9c9371b70ae385d0f0d57799259e5b56214829f6b668 + ignore-walk: "npm:^8.0.0" + proc-log: "npm:^6.0.0" + checksum: 10c2/04aa7744d9dbd5df14a0f56918fc551aa7e4766fca1ff085b1684e4a5fa7d608e9a277ef7b05eaf59d739f90de477fe4a8070445897b72fca50aa541d79cfbfb languageName: node linkType: hard -"npm-pick-manifest@npm:^9.0.0, npm-pick-manifest@npm:^9.0.1": - version: 9.1.0 - resolution: "npm-pick-manifest@npm:9.1.0" +"npm-pick-manifest@npm:^11.0.1": + version: 11.0.3 + resolution: "npm-pick-manifest@npm:11.0.3" dependencies: - npm-install-checks: "npm:^6.0.0" - npm-normalize-package-bin: "npm:^3.0.0" - npm-package-arg: "npm:^11.0.0" + npm-install-checks: "npm:^8.0.0" + npm-normalize-package-bin: "npm:^5.0.0" + npm-package-arg: "npm:^13.0.0" semver: "npm:^7.3.5" - checksum: 10c2/b04a5620e4f7322906cb0822a6e1d95bc93cf921c42967c30f392797d47b34b53043e27fc3ef31ab965085d9d40dc09939239a61cf4d6652bc3c8f451847ec17 + checksum: 10c2/9fe6763b6de5dbefd3a49b3aa5ba5f80027540cf524de084355ab4caf4e8032470138700fffdf0de13305e0c4f914706ec8975c0f0a93fac7087de3a4ab66478 languageName: node linkType: hard -"npm-registry-fetch@npm:^17.0.0, npm-registry-fetch@npm:^17.0.1, npm-registry-fetch@npm:^17.1.0": - version: 17.1.0 - resolution: "npm-registry-fetch@npm:17.1.0" +"npm-registry-fetch@npm:^19.0.0, npm-registry-fetch@npm:^19.1.1": + version: 19.1.1 + resolution: "npm-registry-fetch@npm:19.1.1" dependencies: - "@npmcli/redact": "npm:^2.0.0" + "@npmcli/redact": "npm:^4.0.0" jsonparse: "npm:^1.3.1" - make-fetch-happen: "npm:^13.0.0" + make-fetch-happen: "npm:^15.0.0" minipass: "npm:^7.0.2" - minipass-fetch: "npm:^3.0.0" - minizlib: "npm:^2.1.2" - npm-package-arg: "npm:^11.0.0" - proc-log: "npm:^4.0.0" - checksum: 10c2/cc3ec4d75b8a8d42238992ed89a10742dfe90d4b29abd08939981f7742bfceea4287558b7bc510aa5a0596c84b2b11df6005e8b419f01c06d285c7c909df784d + minipass-fetch: "npm:^5.0.0" + minizlib: "npm:^3.0.1" + npm-package-arg: "npm:^13.0.0" + proc-log: "npm:^6.0.0" + checksum: 10c2/b7fa216e9a8fd5256d86066a22189795f47f93646fd75d64a4d3fc010c3311318bb465f3fe9798abd76fe424e51d4af4ebea172bae49a9c8e298d82053ff5a0d languageName: node linkType: hard -"npm-run-path@npm:^5.1.0": - version: 5.3.0 - resolution: "npm-run-path@npm:5.3.0" - dependencies: - path-key: "npm:^4.0.0" - checksum: 10c2/7a213415c6ba3d84888b5dab368424855d42cf58338f2614e887e105cf72a4c898931c33a19c29b146479115cfc33014fa43f8e805c3316c2676099402e12d00 - languageName: node - linkType: hard - -"onetime@npm:^6.0.0": - version: 6.0.0 - resolution: "onetime@npm:6.0.0" - dependencies: - mimic-fn: "npm:^4.0.0" - checksum: 10c2/53a5d0004888f2c61a8169eba4e98c72a33d8f19a850b5ba3f6f2160fa5db55f25843c7f909e606061a2f1586d7269b54395ba6fb0df4f0d9953b28a5a779117 +"obug@npm:^2.1.1": + version: 2.1.1 + resolution: "obug@npm:2.1.1" + checksum: 10c2/50affdcf815015bd6b5a3a1329e4591e60d164e08f54cdc932c0be1ce5770eed914dfabf034cc3d17497746e10cead0bff112b92e3edee58423d50f2207a5387 languageName: node linkType: hard @@ -4497,21 +4031,12 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^4.0.0": - version: 4.0.0 - resolution: "p-limit@npm:4.0.0" - dependencies: - yocto-queue: "npm:^1.0.0" - checksum: 10c2/725a77c7f76ba4d55579da9a936c0a5a30794563a23b91dad901641895b5b3ef0abb47daaffba3fd31f856064d15b81d20c30f332ffcabec70e9ff7e90c44909 - languageName: node - linkType: hard - -"p-limit@npm:^6.2.0": - version: 6.2.0 - resolution: "p-limit@npm:6.2.0" +"p-limit@npm:^7.3.0": + version: 7.3.0 + resolution: "p-limit@npm:7.3.0" dependencies: - yocto-queue: "npm:^1.1.1" - checksum: 10c2/4f58318983e5ca725f4128ef06dd12df84d52c3051af8f6c70e9e7358ccb264749bb67ed69770eb69499fccde9711e73f2f08f59260a1ef7d1aa89ee4276288d + yocto-queue: "npm:^1.2.1" + checksum: 10c2/3a0b6199f343478feebb8dcad4426d8659f8d06acdaabeb949325853dec40055e104ce811e2207a570826b7919e4895c57a3a0e1a45c095a19855dc1e2804cc3 languageName: node linkType: hard @@ -4533,15 +4058,6 @@ __metadata: languageName: node linkType: hard -"p-locate@npm:^6.0.0": - version: 6.0.0 - resolution: "p-locate@npm:6.0.0" - dependencies: - p-limit: "npm:^4.0.0" - checksum: 10c2/1ba4a355b45340443da211a5d5a86819dc15f5db31f31f3e210fd8427239c0001464ae9bf10bd192a40a769ef286a5aa5649dbcf884ba3d1ac376354e38d7413 - languageName: node - linkType: hard - "p-map@npm:^4.0.0": version: 4.0.0 resolution: "p-map@npm:4.0.0" @@ -4551,41 +4067,27 @@ __metadata: languageName: node linkType: hard -"p-map@npm:^7.0.3": - version: 7.0.3 - resolution: "p-map@npm:7.0.3" - checksum: 10c2/fc4fd75868dc8919a7a06e1046ce951ac469817d8ed337ee7dff4678b9552d76cfe8fab3dac77b88b8c9934503ba2a92c80ec28f998a4d3ae93a7c3385ca5135 - languageName: node - linkType: hard - -"p-pipe@npm:^4.0.0": - version: 4.0.0 - resolution: "p-pipe@npm:4.0.0" - checksum: 10c2/580ce4ff25fef15e414945cbf1ce624ec3277869132169b682ffe46632b1d1ae628232d98715eaa1dba0d7ca65b7dd0f72f8432467e0c8d31e42e305b39f7a51 +"p-map@npm:^7.0.2, p-map@npm:^7.0.4": + version: 7.0.4 + resolution: "p-map@npm:7.0.4" + checksum: 10c2/d385af2aee392c1dcf8bceaca8ff824dd13322c5e3d803892cb2981859f10141306df0378750dd0e91a4021785f3fd4931a731f4f6cc186a7cf440be8a4dac1b languageName: node linkType: hard -"p-queue@npm:^8.1.0": - version: 8.1.0 - resolution: "p-queue@npm:8.1.0" +"p-queue@npm:^9.2.0": + version: 9.2.0 + resolution: "p-queue@npm:9.2.0" dependencies: - eventemitter3: "npm:^5.0.1" - p-timeout: "npm:^6.1.2" - checksum: 10c2/3692cdc0eee94d1603b290f9357ac495fe8c99f34634dd6d068263de84d2406e94398a5e88d3a2d784e8e3b907f9fd48fd82b53b7688ef11156e7c9b57477bff - languageName: node - linkType: hard - -"p-reduce@npm:^3.0.0": - version: 3.0.0 - resolution: "p-reduce@npm:3.0.0" - checksum: 10c2/54ddc41ae977a149bc6ad6e4d0485a8c02f6a5513a1db0ef1a08c470af299c3a3a1e187ccf2b8b6cfbd36f2b7eb780499aa6e10ab9701d55cd035252589e11c7 + eventemitter3: "npm:^5.0.4" + p-timeout: "npm:^7.0.0" + checksum: 10c2/31e87b68b7f3989539325efc115b8cda005c8d54477357aa3336354cf288c8c996b743352e486975805708f3368098a986d76d2d66e77a7789106f61549bd086 languageName: node linkType: hard -"p-timeout@npm:^6.1.2": - version: 6.1.2 - resolution: "p-timeout@npm:6.1.2" - checksum: 10c2/c0b6b2d32cae46986a97880769e95027986fb3d633d0e634bcb80a3182a19f27efd71263a00081caf7f73d983d45893b388a13fbf6131b4391dc5d84f8497e85 +"p-timeout@npm:^7.0.0": + version: 7.0.1 + resolution: "p-timeout@npm:7.0.1" + checksum: 10c2/3b32fde9eb96e18b327c1a9737f5cf7eeeeaaa5007d68c7a353117b20728b53732d305fa5e1e5ded2070b74d6497d0fdee73806c290a51aa1a3437bc9a3066f2 languageName: node linkType: hard @@ -4603,30 +4105,30 @@ __metadata: languageName: node linkType: hard -"pacote@npm:^18.0.0, pacote@npm:^18.0.6": - version: 18.0.6 - resolution: "pacote@npm:18.0.6" +"pacote@npm:^21.0.0, pacote@npm:^21.0.2, pacote@npm:^21.5.0": + version: 21.5.0 + resolution: "pacote@npm:21.5.0" dependencies: - "@npmcli/git": "npm:^5.0.0" - "@npmcli/installed-package-contents": "npm:^2.0.1" - "@npmcli/package-json": "npm:^5.1.0" - "@npmcli/promise-spawn": "npm:^7.0.0" - "@npmcli/run-script": "npm:^8.0.0" - cacache: "npm:^18.0.0" + "@gar/promise-retry": "npm:^1.0.0" + "@npmcli/git": "npm:^7.0.0" + "@npmcli/installed-package-contents": "npm:^4.0.0" + "@npmcli/package-json": "npm:^7.0.0" + "@npmcli/promise-spawn": "npm:^9.0.0" + "@npmcli/run-script": "npm:^10.0.0" + cacache: "npm:^20.0.0" fs-minipass: "npm:^3.0.0" minipass: "npm:^7.0.2" - npm-package-arg: "npm:^11.0.0" - npm-packlist: "npm:^8.0.0" - npm-pick-manifest: "npm:^9.0.0" - npm-registry-fetch: "npm:^17.0.0" - proc-log: "npm:^4.0.0" - promise-retry: "npm:^2.0.1" - sigstore: "npm:^2.2.0" - ssri: "npm:^10.0.0" - tar: "npm:^6.1.11" + npm-package-arg: "npm:^13.0.0" + npm-packlist: "npm:^10.0.1" + npm-pick-manifest: "npm:^11.0.1" + npm-registry-fetch: "npm:^19.0.0" + proc-log: "npm:^6.0.0" + sigstore: "npm:^4.0.0" + ssri: "npm:^13.0.0" + tar: "npm:^7.4.3" bin: pacote: bin/index.js - checksum: 10c2/1835f9973d5bbb58b76f1485599d2e6269afce7d6add649ee51ad845ebd0f82434d956fc6614c871523d95b0fe55b8273aa8df0a55bf6bdcd07a0d0e2305d2c1 + checksum: 10c2/5027d0e7d51656e269cdfcaf04ec631ae35f78ccc9d0a0979acd97edd0e8492b4aff58d518081e6e547c4428331bf53f7d0ececec643f57c3acfe64c7bbea648 languageName: node linkType: hard @@ -4639,14 +4141,14 @@ __metadata: languageName: node linkType: hard -"parse-conflict-json@npm:^3.0.0": - version: 3.0.1 - resolution: "parse-conflict-json@npm:3.0.1" +"parse-conflict-json@npm:^5.0.1": + version: 5.0.1 + resolution: "parse-conflict-json@npm:5.0.1" dependencies: - json-parse-even-better-errors: "npm:^3.0.0" + json-parse-even-better-errors: "npm:^5.0.0" just-diff: "npm:^6.0.0" just-diff-apply: "npm:^5.2.0" - checksum: 10c2/db882e4f607874da051057b27ae062a1a8fc2c818851baf7275ee5ca1d89c1051d88a5f344170d9f5719b768e80f7cb46d74a6fcfc59ef72cbb248b573a2e242 + checksum: 10c2/7179db3efe7598e620cbeae69c70ba1692d3897493b72d81ed7f2a25e4bf8b92611db9e727d2ca1404dd873324bc04effabaa57cd73ae130318dc151f3873516 languageName: node linkType: hard @@ -4662,30 +4164,6 @@ __metadata: languageName: node linkType: hard -"parse-json@npm:^7.0.0": - version: 7.1.1 - resolution: "parse-json@npm:7.1.1" - dependencies: - "@babel/code-frame": "npm:^7.21.4" - error-ex: "npm:^1.3.2" - json-parse-even-better-errors: "npm:^3.0.0" - lines-and-columns: "npm:^2.0.3" - type-fest: "npm:^3.8.0" - checksum: 10c2/69facfab6f160a3d47f79ff2a21430cded086977d01538b23c0feee866f825e514c6538eaf2ff51432d6f7537fc922a580dd550b667052694d17ad243d7fe376 - languageName: node - linkType: hard - -"parse-json@npm:^8.0.0": - version: 8.1.0 - resolution: "parse-json@npm:8.1.0" - dependencies: - "@babel/code-frame": "npm:^7.22.13" - index-to-position: "npm:^0.1.2" - type-fest: "npm:^4.7.1" - checksum: 10c2/928bf142ae05abd7a10b134ce1f7f4d01a37dc32829d63ab7e5896c277dbfd40ccc5715de7770452f4067f369799ac4dcd6b6a2df12ef3478308a998238965b3 - languageName: node - linkType: hard - "parse-path@npm:^7.0.0": version: 7.0.0 resolution: "parse-path@npm:7.0.0" @@ -4712,13 +4190,6 @@ __metadata: languageName: node linkType: hard -"path-exists@npm:^5.0.0": - version: 5.0.0 - resolution: "path-exists@npm:5.0.0" - checksum: 10c2/6ecc59d4767d3a0b240326f7d670541c57da087b35c00777c22abc4680000178641fa6f180cad739698e6531b286300396c5da63dc08b328b638cab5365ea3a2 - languageName: node - linkType: hard - "path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" @@ -4726,13 +4197,6 @@ __metadata: languageName: node linkType: hard -"path-key@npm:^4.0.0": - version: 4.0.0 - resolution: "path-key@npm:4.0.0" - checksum: 10c2/5b8e645704492b75ad54be0eaeb453573269c4285c507ff224be4af928a0c69daa606cfc3d3869500ba47c61f43fcf347c59eaba5c7df72ce03e4e364c8a2696 - languageName: node - linkType: hard - "path-scurry@npm:^1.11.1": version: 1.11.1 resolution: "path-scurry@npm:1.11.1" @@ -4743,54 +4207,34 @@ __metadata: languageName: node linkType: hard -"pathe@npm:^2.0.2": - version: 2.0.3 - resolution: "pathe@npm:2.0.3" - checksum: 10c2/50aee30b50b77f533c091c989aa7fea6b318a2e16794904f9f3aacd0e004201a37142f7caf483af12ef694503f1bc134986278e33499fd38502d47b990e429fa - languageName: node - linkType: hard - -"pathval@npm:^2.0.0": - version: 2.0.0 - resolution: "pathval@npm:2.0.0" - checksum: 10c2/295e8141b213d398cf4f2304bd1185ad4133ece56339ba593cc61dcf1b9a0e29932c06aad75d0f1c2c8a16cc660ce769d45440935fa2cc939da13cd9d2fcd295 - languageName: node - linkType: hard - -"picocolors@npm:^1.0.0, picocolors@npm:^1.1.1": - version: 1.1.1 - resolution: "picocolors@npm:1.1.1" - checksum: 10c2/8f45d7904cbb7154a7402c7aa68468180e1abe4b6fba1fc64c3a435db5a7e9e708e68e8abb4702df5006d4654708794c706459186024ebad907326febd818ff9 - languageName: node - linkType: hard - -"picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 10c2/c01120715dabcb2b93d91efca2edde3a043b82757f91a273b3b01a03a5335e13f3aa361b7a759767d5bc7cd963c5b40dbaa2ac872449e2b79d26e8eb8f563d25 +"path-scurry@npm:^2.0.2": + version: 2.0.2 + resolution: "path-scurry@npm:2.0.2" + dependencies: + lru-cache: "npm:^11.0.0" + minipass: "npm:^7.1.2" + checksum: 10c2/4e36f5449be057634882e6c3e56f3916a08358ad9c9e92a0d0c9aa267a2e5250141e4eece596212e2dbb8a2c61fa230dbadd3f922779dfee65aceecee1afe746 languageName: node linkType: hard -"picomatch@npm:^4.0.2": - version: 4.0.2 - resolution: "picomatch@npm:4.0.2" - checksum: 10c2/cfcdbe1795e49c56f87b51c8a28dec791a4bb0e7732142465876975ef868ba4a91d314e91c1521793b0e3e514b535da2ba2d85017f12772766a04121cb9d2e8b +"pathe@npm:^2.0.3": + version: 2.0.3 + resolution: "pathe@npm:2.0.3" + checksum: 10c2/50aee30b50b77f533c091c989aa7fea6b318a2e16794904f9f3aacd0e004201a37142f7caf483af12ef694503f1bc134986278e33499fd38502d47b990e429fa languageName: node linkType: hard -"pidtree@npm:^0.6.0": - version: 0.6.0 - resolution: "pidtree@npm:0.6.0" - bin: - pidtree: bin/pidtree.js - checksum: 10c2/231587eb851bbb6457e25198cc6f2a30e5d3f0ce392da7ad7f30e36e3847475f28a36c4cf56ccc96275292f466ba4251cbbe81fd6e4a4ef87fa54707c1a7c977 +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c2/8f45d7904cbb7154a7402c7aa68468180e1abe4b6fba1fc64c3a435db5a7e9e708e68e8abb4702df5006d4654708794c706459186024ebad907326febd818ff9 languageName: node linkType: hard -"pify@npm:^6.1.0": - version: 6.1.0 - resolution: "pify@npm:6.1.0" - checksum: 10c2/219a4ca6e6dd6c98ba2ea2e4f4bf8a465d1a2ef751d95a7c9720f28e77f763e1fcafc7dc7e8a2e1cdbe8ff09b01c15ca016fccf6261437fb7ce7dd14f3b7d826 +"picomatch@npm:^4.0.3, picomatch@npm:^4.0.4": + version: 4.0.4 + resolution: "picomatch@npm:4.0.4" + checksum: 10c2/16023a7ab9ee7c86cc6d57f8a17e8187797ab3c4fcb3a2f624333b0eaf0c45d6b323030f74600af70c87a21756197e490b8e295b284a45ce9e2691fd5527b3f2 languageName: node linkType: hard @@ -4803,24 +4247,24 @@ __metadata: languageName: node linkType: hard -"postcss-selector-parser@npm:^6.0.10": - version: 6.1.2 - resolution: "postcss-selector-parser@npm:6.1.2" +"postcss-selector-parser@npm:^7.0.0": + version: 7.1.1 + resolution: "postcss-selector-parser@npm:7.1.1" dependencies: cssesc: "npm:^3.0.0" util-deprecate: "npm:^1.0.2" - checksum: 10c2/d7ed12e042f607ef65cd06cf3e4277007c534f0f5ff9115ff79e3882bf767f433c5c617adcfa86d199fe1f92d35fc331dc31db7f99d5a5b89a48b28e072740c9 + checksum: 10c2/a3f27613501a71bcbc072c86a32899ad31e53a28840330af6aa2f8696e07288eeb76452957cc9ffcb355f1d97d225b0b13aeccc48a31219478dac95e594569f4 languageName: node linkType: hard -"postcss@npm:^8.5.1": - version: 8.5.2 - resolution: "postcss@npm:8.5.2" +"postcss@npm:^8.5.14": + version: 8.5.14 + resolution: "postcss@npm:8.5.14" dependencies: - nanoid: "npm:^3.3.8" + nanoid: "npm:^3.3.11" picocolors: "npm:^1.1.1" source-map-js: "npm:^1.2.1" - checksum: 10c2/5621553e092392c197b7e3e755d0c164f783e12fb56b73948df725ff5579a086274aff6c4b2f588af6d89376b8d524257bfd8f5e5a2cb809a625e5881c062965 + checksum: 10c2/8976a6fac71d200ca16d1678cc749623faa27ec6b29255da80fa3912c35a4d7c6c8f287f17b43e8192c8f4cf0e57cd5ad7e61844702089a2e5617eaa1244dbd8 languageName: node linkType: hard @@ -4838,17 +4282,24 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^4.0.0, proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": +"proc-log@npm:^4.2.0": version: 4.2.0 resolution: "proc-log@npm:4.2.0" checksum: 10c2/29f5aef6de5c907ceb4921bdff9c0d4140e15fa8729f6be005af66b6b534408be3b41705307593c29355d4848dd4627b5f1fa2877616b3ac2cf10c13489bd353 languageName: node linkType: hard -"proggy@npm:^2.0.0": - version: 2.0.0 - resolution: "proggy@npm:2.0.0" - checksum: 10c2/a98bd0441fbda32fbbfced640bf6981f3f2121322b618d97504173ede0ce6b6d08d89e9066fe97c9a4fedb22f378979692f898267a68cccfba695f1bc90ad8ee +"proc-log@npm:^6.0.0, proc-log@npm:^6.1.0": + version: 6.1.0 + resolution: "proc-log@npm:6.1.0" + checksum: 10c2/3ab29ae0a9728803903536c2d1fa059efd25de6f28413733337451729eb51cb3d942f78e8584502800d71049971e94041a30088d9ace61e4e13a7226377bb4b8 + languageName: node + linkType: hard + +"proggy@npm:^4.0.0": + version: 4.0.0 + resolution: "proggy@npm:4.0.0" + checksum: 10c2/805b5dc9ef8552b6459b7272fb1fc582c6687cd7615ceccc33bd394d53cc96e198fa855fd558b25bd35454730a008d5571d2781daffeeece57bfc882c90feb40 languageName: node linkType: hard @@ -4866,13 +4317,6 @@ __metadata: languageName: node linkType: hard -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 10c2/a7efc52b8a672ce1284e54d6eaa57b36d176abd7404660ef8b2434c4a3e9a402b3fb6addb8629702eca66a15cf09d7ee5b292f7865095b4504464b56793f5326 - languageName: node - linkType: hard - "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -4883,13 +4327,6 @@ __metadata: languageName: node linkType: hard -"proto-list@npm:~1.2.1": - version: 1.2.4 - resolution: "proto-list@npm:1.2.4" - checksum: 10c2/90ac175cf80e065779ca821e060cc9d072bfc6993b7b7eaa4eca23b3c86ec05eed2f9254117cd55c3626b5a8b91b374e7c642511b425af20c0bb0d419bc5388c - languageName: node - linkType: hard - "protocols@npm:^2.0.0, protocols@npm:^2.0.1": version: 2.0.1 resolution: "protocols@npm:2.0.1" @@ -4904,70 +4341,10 @@ __metadata: languageName: node linkType: hard -"queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3" - checksum: 10c2/57443c81287f790c412e31af31ce755f506965ce1499243233c27c2469f26dc01370645b826ba90b492ed0f85fd18001fe5de3e6a1fcd9b9fe5265cce5f42a34 - languageName: node - linkType: hard - -"read-cmd-shim@npm:^4.0.0": - version: 4.0.0 - resolution: "read-cmd-shim@npm:4.0.0" - checksum: 10c2/0b6e96efec7f67cb8c05e61e003e19cfeafdc0ad17154f3198a17a9f322041d7ce057b879e0a1f96c87e789a54b7aeb0d67ce135367fd41dab458174a3086529 - languageName: node - linkType: hard - -"read-package-json-fast@npm:^3.0.0, read-package-json-fast@npm:^3.0.2": - version: 3.0.2 - resolution: "read-package-json-fast@npm:3.0.2" - dependencies: - json-parse-even-better-errors: "npm:^3.0.0" - npm-normalize-package-bin: "npm:^3.0.0" - checksum: 10c2/f8dd05be0225e885a5015b3623bf9603453c5182c2c451e277039d219545a318ab204ee3599d8b0c221d3b53ebc31279f8391dc72088575243a8de0a02ac63fe - languageName: node - linkType: hard - -"read-pkg-up@npm:^10.0.0": - version: 10.1.0 - resolution: "read-pkg-up@npm:10.1.0" - dependencies: - find-up: "npm:^6.3.0" - read-pkg: "npm:^8.1.0" - type-fest: "npm:^4.2.0" - checksum: 10c2/b42ac84efe4a3f404babcd9e56a725a5a9ae148971ed319ea2f241753fbbdafbcf47c621e5843d1395e0540d10c43fb99903aac726059197ce737122584023b9 - languageName: node - linkType: hard - -"read-pkg@npm:^8.0.0, read-pkg@npm:^8.1.0": - version: 8.1.0 - resolution: "read-pkg@npm:8.1.0" - dependencies: - "@types/normalize-package-data": "npm:^2.4.1" - normalize-package-data: "npm:^6.0.0" - parse-json: "npm:^7.0.0" - type-fest: "npm:^4.2.0" - checksum: 10c2/64b4cb0201181a7fe1f31c175d6595672c1e313c085bcb01c7d5894214392ac4e192286a2fa86fd873940205e3d8c95c27760a86172423b3702cd1ee7af7f2c4 - languageName: node - linkType: hard - -"read-pkg@npm:^9.0.1": - version: 9.0.1 - resolution: "read-pkg@npm:9.0.1" - dependencies: - "@types/normalize-package-data": "npm:^2.4.3" - normalize-package-data: "npm:^6.0.0" - parse-json: "npm:^8.0.0" - type-fest: "npm:^4.6.0" - unicorn-magic: "npm:^0.1.0" - checksum: 10c2/5e0105bf0ca4af64f33b6d4d83d51c57309177c7e04dcd1e622a8d6e6e15be1797efb79358f99cbb06e957ee90427cc2c94ce807c501fd926a1adefcf1ab4ad3 - languageName: node - linkType: hard - -"require-directory@npm:^2.1.1": - version: 2.1.1 - resolution: "require-directory@npm:2.1.1" - checksum: 10c2/389e0910c0b3b8c6a0497e048ccd30e9c2b193b70767ca6d0ff4ae05fe835c8b45dc05bac9698e4c758c9304061b46462082e6bb47237ddb567c5a4730331d8d +"read-cmd-shim@npm:^6.0.0": + version: 6.0.0 + resolution: "read-cmd-shim@npm:6.0.0" + checksum: 10c2/f4b2f30ae088b43226e37ee26c1b605d7bf193b500d705828a2c9c4e5559f3307553ca41512578b6b8bab5599c54494abe3eca45e62316d181f9b1326388ce8e languageName: node linkType: hard @@ -5018,13 +4395,6 @@ __metadata: languageName: node linkType: hard -"reusify@npm:^1.0.4": - version: 1.0.4 - resolution: "reusify@npm:1.0.4" - checksum: 10c2/07488bc1cd5497430879bec8d6820fe64489fe2486a3b72af7b440aded321f6811bdd32621ff68fbaf9d58d33eab4ea9ec0ec44009ccb8f8c1bb19eaa71bf675 - languageName: node - linkType: hard - "rfdc@npm:^1.4.1": version: 1.4.1 resolution: "rfdc@npm:1.4.1" @@ -5032,84 +4402,61 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.30.1": - version: 4.34.8 - resolution: "rollup@npm:4.34.8" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.34.8" - "@rollup/rollup-android-arm64": "npm:4.34.8" - "@rollup/rollup-darwin-arm64": "npm:4.34.8" - "@rollup/rollup-darwin-x64": "npm:4.34.8" - "@rollup/rollup-freebsd-arm64": "npm:4.34.8" - "@rollup/rollup-freebsd-x64": "npm:4.34.8" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.34.8" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.34.8" - "@rollup/rollup-linux-arm64-gnu": "npm:4.34.8" - "@rollup/rollup-linux-arm64-musl": "npm:4.34.8" - "@rollup/rollup-linux-loongarch64-gnu": "npm:4.34.8" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.34.8" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.34.8" - "@rollup/rollup-linux-s390x-gnu": "npm:4.34.8" - "@rollup/rollup-linux-x64-gnu": "npm:4.34.8" - "@rollup/rollup-linux-x64-musl": "npm:4.34.8" - "@rollup/rollup-win32-arm64-msvc": "npm:4.34.8" - "@rollup/rollup-win32-ia32-msvc": "npm:4.34.8" - "@rollup/rollup-win32-x64-msvc": "npm:4.34.8" - "@types/estree": "npm:1.0.6" - fsevents: "npm:~2.3.2" +"rolldown@npm:1.0.0": + version: 1.0.0 + resolution: "rolldown@npm:1.0.0" + dependencies: + "@oxc-project/types": "npm:=0.129.0" + "@rolldown/binding-android-arm64": "npm:1.0.0" + "@rolldown/binding-darwin-arm64": "npm:1.0.0" + "@rolldown/binding-darwin-x64": "npm:1.0.0" + "@rolldown/binding-freebsd-x64": "npm:1.0.0" + "@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0" + "@rolldown/binding-linux-arm64-gnu": "npm:1.0.0" + "@rolldown/binding-linux-arm64-musl": "npm:1.0.0" + "@rolldown/binding-linux-ppc64-gnu": "npm:1.0.0" + "@rolldown/binding-linux-s390x-gnu": "npm:1.0.0" + "@rolldown/binding-linux-x64-gnu": "npm:1.0.0" + "@rolldown/binding-linux-x64-musl": "npm:1.0.0" + "@rolldown/binding-openharmony-arm64": "npm:1.0.0" + "@rolldown/binding-wasm32-wasi": "npm:1.0.0" + "@rolldown/binding-win32-arm64-msvc": "npm:1.0.0" + "@rolldown/binding-win32-x64-msvc": "npm:1.0.0" + "@rolldown/pluginutils": "npm:1.0.0" dependenciesMeta: - "@rollup/rollup-android-arm-eabi": + "@rolldown/binding-android-arm64": optional: true - "@rollup/rollup-android-arm64": + "@rolldown/binding-darwin-arm64": optional: true - "@rollup/rollup-darwin-arm64": + "@rolldown/binding-darwin-x64": optional: true - "@rollup/rollup-darwin-x64": + "@rolldown/binding-freebsd-x64": optional: true - "@rollup/rollup-freebsd-arm64": + "@rolldown/binding-linux-arm-gnueabihf": optional: true - "@rollup/rollup-freebsd-x64": + "@rolldown/binding-linux-arm64-gnu": optional: true - "@rollup/rollup-linux-arm-gnueabihf": + "@rolldown/binding-linux-arm64-musl": optional: true - "@rollup/rollup-linux-arm-musleabihf": + "@rolldown/binding-linux-ppc64-gnu": optional: true - "@rollup/rollup-linux-arm64-gnu": + "@rolldown/binding-linux-s390x-gnu": optional: true - "@rollup/rollup-linux-arm64-musl": + "@rolldown/binding-linux-x64-gnu": optional: true - "@rollup/rollup-linux-loongarch64-gnu": + "@rolldown/binding-linux-x64-musl": optional: true - "@rollup/rollup-linux-powerpc64le-gnu": + "@rolldown/binding-openharmony-arm64": optional: true - "@rollup/rollup-linux-riscv64-gnu": + "@rolldown/binding-wasm32-wasi": optional: true - "@rollup/rollup-linux-s390x-gnu": + "@rolldown/binding-win32-arm64-msvc": optional: true - "@rollup/rollup-linux-x64-gnu": - optional: true - "@rollup/rollup-linux-x64-musl": - optional: true - "@rollup/rollup-win32-arm64-msvc": - optional: true - "@rollup/rollup-win32-ia32-msvc": - optional: true - "@rollup/rollup-win32-x64-msvc": - optional: true - fsevents: + "@rolldown/binding-win32-x64-msvc": optional: true bin: - rollup: dist/bin/rollup - checksum: 10c2/8ee61b678aea533594253db0b68a2b6b87009c8b3d579c2db3fb2ad119a7e6141425c425c337970d42475c27cd36cac290b1a6175b806e6aa004e78254c40b6c - languageName: node - linkType: hard - -"run-parallel@npm:^1.1.9": - version: 1.2.0 - resolution: "run-parallel@npm:1.2.0" - dependencies: - queue-microtask: "npm:^1.2.2" - checksum: 10c2/ed06547e6a2384e72a5ff6aec5e97205805b168a5d22753be62592992db50c4bacfa64f69c88401ff523d4a88f04dc5f9ed5e7e673d425b70aae2b2759aa4eed + rolldown: bin/cli.mjs + checksum: 10c2/c4ce9adfa2e02316f67655d4d566d299320430e353aadae0cc8456ef5cfaeea6fb6ce63b763a2e36f94df6835c21125168c27ac203d05d357b0f1b0a328a8118 languageName: node linkType: hard @@ -5120,28 +4467,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.6.0, semver@npm:^7.7.0": - version: 7.7.1 - resolution: "semver@npm:7.7.1" +"semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.6.0, semver@npm:^7.7.3, semver@npm:^7.7.4": + version: 7.8.0 + resolution: "semver@npm:7.8.0" bin: semver: bin/semver.js - checksum: 10c2/7011947d5d69b38fad533b66d00a7213e66b0a05da0efe2a19c576476b29e00d66b600984ac5f59c2ff012b88668f6eb00830be3a3937410ed243b217f0e89c5 - languageName: node - linkType: hard - -"set-blocking@npm:^2.0.0": - version: 2.0.0 - resolution: "set-blocking@npm:2.0.0" - checksum: 10c2/0f466d99c9b26cc69c7e7afdb3057f008ecb6030b6b60f07fc21a218d20dacfd890f6199fc14ef8b8eb8ae85a7ebc49ce30af473be67b934bc7d4efaff4e4526 - languageName: node - linkType: hard - -"shallow-clone@npm:^3.0.0": - version: 3.0.1 - resolution: "shallow-clone@npm:3.0.1" - dependencies: - kind-of: "npm:^6.0.2" - checksum: 10c2/eb60d7611928d17a659daebd874d7c4e917669a6b853e17872042f518ae476c9d310057bbe8c6f4c3d4193d208df20edd19e5515126701d64c3defde503522aa + checksum: 10c2/3eb9443625dc96ab88846a23e0daf8c6948c981929ffb4cfbff745d3d38053b6cafc4a4b193a7ed91c5bf67d9e59afd29c2f9f4c243fe7290b989c78b118041e languageName: node linkType: hard @@ -5175,34 +4506,17 @@ __metadata: languageName: node linkType: hard -"sigstore@npm:^2.2.0": - version: 2.3.0 - resolution: "sigstore@npm:2.3.0" - dependencies: - "@sigstore/bundle": "npm:^2.3.1" - "@sigstore/core": "npm:^1.0.0" - "@sigstore/protobuf-specs": "npm:^0.3.1" - "@sigstore/sign": "npm:^2.3.0" - "@sigstore/tuf": "npm:^2.3.1" - "@sigstore/verify": "npm:^1.2.0" - checksum: 10c2/8f743dbafb52e6c1f4f024acdf1d3de958bb1d0355b9d88175a3197e61ba6add4c4cde55e690e062587dbe9add5c424e3e8b347028a4f2dbc75fbba95ad0f344 - languageName: node - linkType: hard - -"slash@npm:^5.1.0": - version: 5.1.0 - resolution: "slash@npm:5.1.0" - checksum: 10c2/2e5a40ce6f9d36e124ea1312029d6e4bbef31f66cd6fac79ca876e6b3c6bd668e6ace229a02d674eff3868cd1f716450f1a6f1f4421401f846efe4b4c1388885 - languageName: node - linkType: hard - -"slice-ansi@npm:^5.0.0": - version: 5.0.0 - resolution: "slice-ansi@npm:5.0.0" +"sigstore@npm:^4.0.0": + version: 4.1.0 + resolution: "sigstore@npm:4.1.0" dependencies: - ansi-styles: "npm:^6.0.0" - is-fullwidth-code-point: "npm:^4.0.0" - checksum: 10c2/b7c0590a5534df8b7d4c81e0c4b3917604257a41de27c62ceff9ac2fd76f348727cb0322e4f33ccaa92a39ebb6be2a0b9cb7c41832f8cae57ba231ec769752b0 + "@sigstore/bundle": "npm:^4.0.0" + "@sigstore/core": "npm:^3.1.0" + "@sigstore/protobuf-specs": "npm:^0.5.0" + "@sigstore/sign": "npm:^4.1.0" + "@sigstore/tuf": "npm:^4.0.1" + "@sigstore/verify": "npm:^3.1.0" + checksum: 10c2/25f49fbb2c356f91be169bee2c00abd54074da4659257eab45d3c5453ba9e4da1b6af8c2476b1828852e06bad2ee6e8f04e98f9adad5deed1825ab0730fbf853 languageName: node linkType: hard @@ -5216,6 +4530,16 @@ __metadata: languageName: node linkType: hard +"slice-ansi@npm:^8.0.0": + version: 8.0.0 + resolution: "slice-ansi@npm:8.0.0" + dependencies: + ansi-styles: "npm:^6.2.3" + is-fullwidth-code-point: "npm:^5.1.0" + checksum: 10c2/66b8af857ca15e7b6b0ac2465645e7e0535bf191c6c8a1035bcce97f5d54b01c3d4043c7b066ea05f30faf2654fa59abedeb86eba6b558b926139db2d0367b05 + languageName: node + linkType: hard + "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" @@ -5244,12 +4568,12 @@ __metadata: languageName: node linkType: hard -"sort-keys@npm:^5.0.0": - version: 5.0.0 - resolution: "sort-keys@npm:5.0.0" +"sort-keys@npm:^6.0.0": + version: 6.0.0 + resolution: "sort-keys@npm:6.0.0" dependencies: - is-plain-obj: "npm:^4.0.0" - checksum: 10c2/11f244de0495b068e697f89b6229ec90e001046fccbcd6e2b17c0b5ceaa4167645922f8d73fa4b4abd93642fbfcf6052ad630871d5b7b568b4245d94f5678169 + is-plain-obj: "npm:^4.1.0" + checksum: 10c2/49674686ef22057d10a0bb4d5b80fd91c89bf24adb00eab6a0ac6a21f770c27529074796ce193ce0210103b6e614b1497f78a8d6a1a6533c38e84ac246c9b896 languageName: node linkType: hard @@ -5294,6 +4618,16 @@ __metadata: languageName: node linkType: hard +"spdx-expression-parse@npm:^4.0.0": + version: 4.0.0 + resolution: "spdx-expression-parse@npm:4.0.0" + dependencies: + spdx-exceptions: "npm:^2.1.0" + spdx-license-ids: "npm:^3.0.0" + checksum: 10c2/eb0be3ebd458cca00357c21d25cb2303ffe3858d0a435e19b0b202e08d9e74249780e328c1201e776f08902282bd4ca5f4c46099c4cd9957c2eb897959ad3a11 + languageName: node + linkType: hard + "spdx-license-ids@npm:^3.0.0": version: 3.0.17 resolution: "spdx-license-ids@npm:3.0.17" @@ -5301,13 +4635,6 @@ __metadata: languageName: node linkType: hard -"split2@npm:^4.0.0": - version: 4.2.0 - resolution: "split2@npm:4.2.0" - checksum: 10c2/8aac3a2a8b688bd300e6824aef572a78c8c60a72a805b04fe2d08380c1b86deaf785f43d344c6881eb8a53563b682a1dee1f3ca61998587cb1cdd449f1b9cbb4 - languageName: node - linkType: hard - "sprintf-js@npm:^1.1.3": version: 1.1.3 resolution: "sprintf-js@npm:1.1.3" @@ -5315,7 +4642,7 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^10.0.0, ssri@npm:^10.0.6": +"ssri@npm:^10.0.0": version: 10.0.6 resolution: "ssri@npm:10.0.6" dependencies: @@ -5324,12 +4651,12 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^11.0.0": - version: 11.0.0 - resolution: "ssri@npm:11.0.0" +"ssri@npm:^13.0.0, ssri@npm:^13.0.1": + version: 13.0.1 + resolution: "ssri@npm:13.0.1" dependencies: minipass: "npm:^7.0.3" - checksum: 10c2/640afac83ee0eb76a66aec0f3271490f072c0714034a485721568dfb28eaa66501360263b7a122da3d6fb023fd8b1baaa31c4409c3f25ea920a753dca511388c + checksum: 10c2/571a4eddcde26f658c52879d486223b0a5b5504f67a1a2ef11a8131d7f57fa22a55f8abc3bfe306ab2d0bddd655cc7eb2acd201fe99025c736f3922cd6e274f7 languageName: node linkType: hard @@ -5340,10 +4667,10 @@ __metadata: languageName: node linkType: hard -"std-env@npm:^3.8.0": - version: 3.8.0 - resolution: "std-env@npm:3.8.0" - checksum: 10c2/de99d1b3bfc6bf0c268d4449a8006456d85754bc93617dad50aeb7b194a80357ee48924d4c68277fd075904329047cc2e7dca71e7e4b9ac20c9d93ace1b17b97 +"std-env@npm:^4.0.0-rc.1": + version: 4.1.0 + resolution: "std-env@npm:4.1.0" + checksum: 10c2/b81891e17250275d3fac5ae49f84ae05cc6d50901d2d887166eb30c5601e642de95c415186c5d1d0b469a2fa24b7fb03036d9b51ee0e597b7db76b991d1dff0b languageName: node linkType: hard @@ -5354,7 +4681,7 @@ __metadata: languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -5387,6 +4714,16 @@ __metadata: languageName: node linkType: hard +"string-width@npm:^8.2.0": + version: 8.2.1 + resolution: "string-width@npm:8.2.1" + dependencies: + get-east-asian-width: "npm:^1.5.0" + strip-ansi: "npm:^7.1.2" + checksum: 10c2/dc771d59f94587f6a17055d5a8c8be514e6738f536dba4bec50472db807514f853138876ee911c1e328128e5aa33284b58a4e9049c379c67aa30a313e72a8548 + languageName: node + linkType: hard + "strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" @@ -5396,39 +4733,12 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0": - version: 7.1.0 - resolution: "strip-ansi@npm:7.1.0" - dependencies: - ansi-regex: "npm:^6.0.1" - checksum: 10c2/d3e630a071bb8d61415260079d5bfed92a841aea5f5b7cab7491b3cecddd3efc2c9d958314a1e3362016bdb1747262a6b645e35d1e16d98d4f8ecb69ae35a904 - languageName: node - linkType: hard - -"strip-final-newline@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-final-newline@npm:3.0.0" - checksum: 10c2/ef719277a380dc54ba4e2a1852c6dc58cbb314e63646fff2de3db5dedd7a4e4742552629365c5426f3e3541ed119d8804329f70e09dc62c8e1de86240ce262e1 - languageName: node - linkType: hard - -"strip-json-comments@npm:^3.1.1": - version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" - checksum: 10c2/8d53f5e07e7895dd57b0aaf5785b1ee45287c1790cb4bb1c48214a5c1be7c7ac0b8661ae6fbbcd96ed0af117a30a0143497febb342e64fe3dca96e5fb9ef64d8 - languageName: node - linkType: hard - -"strong-log-transformer@npm:^2.1.0": - version: 2.1.0 - resolution: "strong-log-transformer@npm:2.1.0" +"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0, strip-ansi@npm:^7.1.2": + version: 7.2.0 + resolution: "strip-ansi@npm:7.2.0" dependencies: - duplexer: "npm:^0.1.1" - minimist: "npm:^1.2.0" - through: "npm:^2.3.4" - bin: - sl-log-transformer: bin/sl-log-transformer.js - checksum: 10c2/7c24dd8e62d6a6ee153908d8a41c9d7afb2e460f75cb8d6afb48e5fa296b227934b8471d0c2872cc4f5005555bb65da3cfe5ff544857285433b855434979083b + ansi-regex: "npm:^6.2.2" + checksum: 10c2/52f8e69370336eeb67629c7cdbfa66c7d65b9fad044760eeab11cec7d5743cbf9fb332ff3e37e1b38a448dd3725e05afa68ea71d8a7cf1de0e8e29b26afd9610 languageName: node linkType: hard @@ -5441,16 +4751,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^7.1.0": - version: 7.2.0 - resolution: "supports-color@npm:7.2.0" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 10c2/a67349e79e509d899fcadb1d3edbd632b5429e0de3553117754ec8427dac14a709e515010f43813938f227196ea261cc5cdec7e6b964499e0c8365885022f1a3 - languageName: node - linkType: hard - -"tar@npm:^6.1.11, tar@npm:^6.1.2, tar@npm:^6.2.1": +"tar@npm:^6.1.11, tar@npm:^6.1.2": version: 6.2.1 resolution: "tar@npm:6.2.1" dependencies: @@ -5464,24 +4765,16 @@ __metadata: languageName: node linkType: hard -"temp-dir@npm:^3.0.0": - version: 3.0.0 - resolution: "temp-dir@npm:3.0.0" - checksum: 10c2/f8f7c5d5ac11cf708827e31b7f94964aff54aa418759600bdda7a6806e6dc70d98f4cc005f536c3190e286fde66d8dcca66e0ce48a495b08fc1e64362ab3e70d - languageName: node - linkType: hard - -"text-extensions@npm:^2.0.0": - version: 2.4.0 - resolution: "text-extensions@npm:2.4.0" - checksum: 10c2/431c6527aa33f2eeeefb3fb6076bc217036b01965fc8a91bc2e2f361f33e877f3fe0356da2b7769acf18aa4282b02b9fe3a7f3a0dbe45d8eec37569edab2c060 - languageName: node - linkType: hard - -"through@npm:>=2.2.7 <3, through@npm:^2.3.4": - version: 2.3.8 - resolution: "through@npm:2.3.8" - checksum: 10c2/0d57989d6a6ed7a83ddb494f066f758e4a28efd825a842d3d57e2e975aaaebbdfd0cf1647f372e79bf3086fd66ba32aed07f6c5a3d18b794b41604fba96ca0cb +"tar@npm:^7.4.3, tar@npm:^7.5.13, tar@npm:^7.5.4": + version: 7.5.15 + resolution: "tar@npm:7.5.15" + dependencies: + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.1.0" + yallist: "npm:^5.0.0" + checksum: 10c2/18d3dd920d4f356082801cd52d565ad9b54fe860b73ae2647ecece51c9d5b33b2adaf3f69f603de4570fbedd91baf60f9d5baa2ddc5e39647f704e08d6ce6159 languageName: node linkType: hard @@ -5492,50 +4785,27 @@ __metadata: languageName: node linkType: hard -"tinyexec@npm:^0.3.0, tinyexec@npm:^0.3.2": - version: 0.3.2 - resolution: "tinyexec@npm:0.3.2" - checksum: 10c2/5cdb7672368316bad8c476e92459daa93e4705431d520f1eb4bcef5df13a8282a52be77ad732b50b6a3f2d07ecc13c87ac97260c921b57a1a9e663f935180d83 +"tinyexec@npm:^1.0.0, tinyexec@npm:^1.0.2, tinyexec@npm:^1.1.2": + version: 1.1.2 + resolution: "tinyexec@npm:1.1.2" + checksum: 10c2/436d13084c6b57f14fd3785bb28e557d1302a380df3e5ca2e96883b3db5cc82bceb576f7be56b02b56e9c948e760b1713d0b60ae31da762f4669a9a87d3df698 languageName: node linkType: hard -"tinyglobby@npm:^0.2.10": - version: 0.2.10 - resolution: "tinyglobby@npm:0.2.10" +"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15, tinyglobby@npm:^0.2.16": + version: 0.2.16 + resolution: "tinyglobby@npm:0.2.16" dependencies: - fdir: "npm:^6.4.2" - picomatch: "npm:^4.0.2" - checksum: 10c2/efeff4c00f8e026b392b898c36ca326da1ffdd339bef8793ad0aa12baae7b26183002d8863bed6fffcdfe389838faab3dc50b73d5cd97451673973d9dcced02a - languageName: node - linkType: hard - -"tinypool@npm:^1.0.2": - version: 1.0.2 - resolution: "tinypool@npm:1.0.2" - checksum: 10c2/19672d6dfda9bf134ef5cf0133d00e7a1c4bef12722394691ee2729c77f816fe343a4a0e2a09ac799f4776f8d08609be85565ffe281e947db3f44c3905fa93d8 - languageName: node - linkType: hard - -"tinyrainbow@npm:^2.0.0": - version: 2.0.0 - resolution: "tinyrainbow@npm:2.0.0" - checksum: 10c2/10895663e0387833cd5d2cf938b8fef79757a4003ed905fd94bc3679b2fa9146f9b31ef882c30de6bcc51aed6482a7c2d92c7e423550e900434b520410767171 - languageName: node - linkType: hard - -"tinyspy@npm:^3.0.2": - version: 3.0.2 - resolution: "tinyspy@npm:3.0.2" - checksum: 10c2/04c3b0c7d6fa84c5a1297335b5ddf8a95c2078a5268caf96c9236e5072669377a78ff3ce21a71fcef5005db2da82a62720e58d476376160ca8084298b222aa8d + fdir: "npm:^6.5.0" + picomatch: "npm:^4.0.4" + checksum: 10c2/5e9ca76432db7536d4d06cc9e8fda74fe980981a5fe66222b7a4db26f9d286fd28a160e5dc321f2131bcaea77bbc54774fced83e285436877c7dd66f6b79289e languageName: node linkType: hard -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: "npm:^7.0.0" - checksum: 10c2/5ba11aa5134793ad8afd002e6c493c27a8f7223c0ed1f22dd2cf1d2e29f0949d2b52d294baa818c8bb6a036982b90faae2035089eef27fe16b3407e0eee41246 +"tinyrainbow@npm:^3.1.0": + version: 3.1.0 + resolution: "tinyrainbow@npm:3.1.0" + checksum: 10c2/a8c258a1e729fc35d73d0c14f014811d2d173fcbd33f9f1d245516fbad80f7dae5cb9feaa9827aa69c69f942411d602fcda70e6818e106cf056bfaada35ba606 languageName: node linkType: hard @@ -5546,12 +4816,12 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^2.0.1": - version: 2.0.1 - resolution: "ts-api-utils@npm:2.0.1" +"ts-api-utils@npm:^2.5.0": + version: 2.5.0 + resolution: "ts-api-utils@npm:2.5.0" peerDependencies: typescript: ">=4.8.4" - checksum: 10c2/026e2ebae2fc0423e72a6f16549f1f4f83cdce60e1585c629f849c310f3524b1224807f44fabd8990a089e18f5cded277ba9b74842535dc3a89c094192933e01 + checksum: 10c2/fc44f73e78428c5403ab91e8d362c19cc091ba09c0181a4797bb566e757e0a58435a1ac7963890e8c4655c6891c989c2332fe1d843dcce397ede4efee255ed67 languageName: node linkType: hard @@ -5593,14 +4863,21 @@ __metadata: languageName: node linkType: hard -"tuf-js@npm:^2.2.1": - version: 2.2.1 - resolution: "tuf-js@npm:2.2.1" +"tslib@npm:^2.4.0": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10c2/90aa7d0bbc9a048c830f2e83c6c4e0e7715419824a75e3dacfd7e602c03bc00ed4397f731b9f50904087503e1ff855823b3ccbfaec0df45ddbc4cc4d27354d73 + languageName: node + linkType: hard + +"tuf-js@npm:^4.1.0": + version: 4.1.0 + resolution: "tuf-js@npm:4.1.0" dependencies: - "@tufjs/models": "npm:2.0.1" - debug: "npm:^4.3.4" - make-fetch-happen: "npm:^13.0.1" - checksum: 10c2/29498e2060d7a09aadb8c8d399f53f3621b1880660839bfe7863ee5f2e3f2e43e0d06b5e280b2980301ea72af66988787605aa6bcc28e84ce505e6fdbc370dde + "@tufjs/models": "npm:4.1.0" + debug: "npm:^4.4.3" + make-fetch-happen: "npm:^15.0.1" + checksum: 10c2/9692553f9b1fec20c1ada4832b21abf40f7fa324d6ab493dcdaaf92eaaabde0965b3931366663cbc5fa049a8d5c8273d29c5b730dd31f07838cdaf1345447597 languageName: node linkType: hard @@ -5613,13 +4890,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: 10c2/d3b0b4a7800141d293d35564eb6c2c8a366ad6ea6e72c18b293da126e59caab7b947dc80ffc23ee12d4d597596ef684807e192ae71f96194808136969efbdefb - languageName: node - linkType: hard - "type-fest@npm:^2.5.1": version: 2.19.0 resolution: "type-fest@npm:2.19.0" @@ -5627,51 +4897,38 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^3.8.0": - version: 3.13.1 - resolution: "type-fest@npm:3.13.1" - checksum: 10c2/29718082e4e08cfb785b8368fd6de152a57a58009d6fa79231978d6f54aba317efa10e29907d3ea4ae7b775d2982382682c47568cfcc973ffaf57357b908eb53 - languageName: node - linkType: hard - -"type-fest@npm:^4.2.0, type-fest@npm:^4.23.0, type-fest@npm:^4.6.0, type-fest@npm:^4.7.1": - version: 4.26.1 - resolution: "type-fest@npm:4.26.1" - checksum: 10c2/9e67b07eae194fbb0213557e749a6deb9b0e221d942b881171083a462e727b111c8722ba436786e1ccd0ae568509f0c4f40ada791a17edd534e9d0a94fed3cca - languageName: node - linkType: hard - -"typescript-eslint@npm:^8.23.0": - version: 8.24.0 - resolution: "typescript-eslint@npm:8.24.0" +"typescript-eslint@npm:^8.59.3": + version: 8.59.3 + resolution: "typescript-eslint@npm:8.59.3" dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.24.0" - "@typescript-eslint/parser": "npm:8.24.0" - "@typescript-eslint/utils": "npm:8.24.0" + "@typescript-eslint/eslint-plugin": "npm:8.59.3" + "@typescript-eslint/parser": "npm:8.59.3" + "@typescript-eslint/typescript-estree": "npm:8.59.3" + "@typescript-eslint/utils": "npm:8.59.3" peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.8.0" - checksum: 10c2/26cf63dc24ee16ce35bcd45deb922cbd68c79c04e06e662e419216c4d71b80a195628f6fe004f135f7a5f9249a2de715a7bba4bc2499276767c841b0dd856139 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.1.0" + checksum: 10c2/87e983039e4b1df943ddeb6cf3d363f0b77dc5a9e06d150a56a6aa0f4afb4b68b3ffc2c59359de60ba3df38f202715eae4af263163fbfbef7ff1142a57e95042 languageName: node linkType: hard -"typescript@npm:^5.7.3": - version: 5.7.3 - resolution: "typescript@npm:5.7.3" +"typescript@npm:^6.0.3": + version: 6.0.3 + resolution: "typescript@npm:6.0.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c2/8f957baf29a3f3967304d4567fc3db26152260f1e37cb0608e7404f6060e8f1c8ef01ad1be511ec43f5fd9bf9f70187387be478e4c01b31dcf8d379d70aa7698 + checksum: 10c2/01e8b6a9d4cbf359690287906479aa3a69b844674ccfb2369005605ce3946a366f23c7a70c4640e39076cfae063dbf3d0c800c3a74d98b5dba29f87a3ea5dd20 languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5.7.3#optional!builtin": - version: 5.7.3 - resolution: "typescript@patch:typescript@npm%3A5.7.3#optional!builtin::version=5.7.3&hash=8c6c40" +"typescript@patch:typescript@npm%3A^6.0.3#optional!builtin": + version: 6.0.3 + resolution: "typescript@patch:typescript@npm%3A6.0.3#optional!builtin::version=6.0.3&hash=8c6c40" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c2/228ffbab3dd82a589302e1457e9e626dcc2b84e6aef079a05a6859102dc24a5351af3d77c3867c8c55e9751785ab2e580457db2a8a114b069238b0f501a82b40 + checksum: 10c2/e4d7f9e8d04675da84f270ba1cdda8d99eda08f47fb74560f5dcea0d7dbb4a10b48d1710612b104d2489965ab0b968777a300ec0a0559ad03441da8b82831c5e languageName: node linkType: hard @@ -5684,17 +4941,17 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~6.20.0": - version: 6.20.0 - resolution: "undici-types@npm:6.20.0" - checksum: 10c2/fe6584f3e2920d3fc2c1eb60651024854254db0d555d452663d93a68ca8424dade2ae58721e93068b5c6768fb3c63f9da8d777280095d5dfec8232ee7a7b0c24 +"undici-types@npm:~7.21.0": + version: 7.21.0 + resolution: "undici-types@npm:7.21.0" + checksum: 10c2/f0ab2fd33c58b3632962c7ef0d426ae67f8c833cd8648b0895ac971135b7ef9c2425caf23ed70be60aceee0cfbf4fc59aaee740f10767893b89cd43a9ca94ed2 languageName: node linkType: hard -"unicorn-magic@npm:^0.1.0": - version: 0.1.0 - resolution: "unicorn-magic@npm:0.1.0" - checksum: 10c2/31cd4236dbb1812a89d2346e76827c4812c702d969b77991a4393882763d16f9db2dc151a16c2ad62860e3255f03093edbd653d3b9dbcc22463dea7a12aabdd4 +"undici@npm:^6.25.0": + version: 6.25.0 + resolution: "undici@npm:6.25.0" + checksum: 10c2/7ddb11ba91f8dfd33373c799e667fe536f9997f5062ce32c2515aafb88d3d5b9b98cc2768a401b6ac35c83e1d9437e249e4fcd75b0429b02a528c892dc451f13 languageName: node linkType: hard @@ -5723,13 +4980,6 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^2.0.0": - version: 2.0.1 - resolution: "universalify@npm:2.0.1" - checksum: 10c2/68368a333e8c0e7e6d8ff777be9c5e750f2d7b61f8fd022b75a41ed8f3634f507a06c7fcd9832e166bf15430eeecc2253de012dd359579bd06ca2a6f6076a462 - languageName: node - linkType: hard - "uri-js@npm:^4.2.2, uri-js@npm:^4.4.1": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -5746,15 +4996,6 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^11.0.5": - version: 11.0.5 - resolution: "uuid@npm:11.0.5" - bin: - uuid: dist/esm/bin/uuid - checksum: 10c2/121725cb19bae783f240fb43d31fca3bcbaf8403a9713416250bc043d1f8082c2762bf65eae03f82331a18d4fa8af346fd7d421f256918be1096bb571ac2e06b - languageName: node - linkType: hard - "v8-compile-cache-lib@npm:^3.0.1": version: 3.0.1 resolution: "v8-compile-cache-lib@npm:3.0.1" @@ -5772,45 +5013,33 @@ __metadata: languageName: node linkType: hard -"validate-npm-package-name@npm:^5.0.0": - version: 5.0.1 - resolution: "validate-npm-package-name@npm:5.0.1" - checksum: 10c2/e4cfdb5ed032dba7db15288b7b88d63756de13a367f4837590a5618cb4bbc318d801a946f97768f7c321a392b984eff2f949a3d42ba4abbf3e1b7fb8e0a319a6 - languageName: node - linkType: hard - -"vite-node@npm:3.0.5": - version: 3.0.5 - resolution: "vite-node@npm:3.0.5" - dependencies: - cac: "npm:^6.7.14" - debug: "npm:^4.4.0" - es-module-lexer: "npm:^1.6.0" - pathe: "npm:^2.0.2" - vite: "npm:^5.0.0 || ^6.0.0" - bin: - vite-node: vite-node.mjs - checksum: 10c2/2fc2e44122da94d007d9a105601b4220e78780c88f5afd3799fd1a873d206f515457b9cc6195063931f60bae7cb80d93efc1b60b6224bdbe474c8fef5224340c +"validate-npm-package-name@npm:^7.0.0": + version: 7.0.2 + resolution: "validate-npm-package-name@npm:7.0.2" + checksum: 10c2/485e43e42ec61bcf5f6b55f75a655225eec650ff7ca0633fc25a2ddcf1f4c8f023882af529d1fc1321329115e9efd04f9afa0b988685a9bf650b7c3799a9c56f languageName: node linkType: hard -"vite@npm:^5.0.0 || ^6.0.0": - version: 6.1.0 - resolution: "vite@npm:6.1.0" +"vite@npm:^6.0.0 || ^7.0.0 || ^8.0.0": + version: 8.0.12 + resolution: "vite@npm:8.0.12" dependencies: - esbuild: "npm:^0.24.2" fsevents: "npm:~2.3.3" - postcss: "npm:^8.5.1" - rollup: "npm:^4.30.1" + lightningcss: "npm:^1.32.0" + picomatch: "npm:^4.0.4" + postcss: "npm:^8.5.14" + rolldown: "npm:1.0.0" + tinyglobby: "npm:^0.2.16" peerDependencies: - "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + "@types/node": ^20.19.0 || >=22.12.0 + "@vitejs/devtools": ^0.1.18 + esbuild: ^0.27.0 || ^0.28.0 jiti: ">=1.21.0" - less: "*" - lightningcss: ^1.21.0 - sass: "*" - sass-embedded: "*" - stylus: "*" - sugarss: "*" + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: ">=0.54.8" + sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 @@ -5820,12 +5049,14 @@ __metadata: peerDependenciesMeta: "@types/node": optional: true + "@vitejs/devtools": + optional: true + esbuild: + optional: true jiti: optional: true less: optional: true - lightningcss: - optional: true sass: optional: true sass-embedded: @@ -5842,50 +5073,63 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10c2/a7335fdbc0dc7ee40614902c5ae2884df0c354a03e998e2cb148b02ac0c6ec9b3463a2d4639c34fabeb660b84c61ae2f4dc234b9475d697c12d729bc9af40594 + checksum: 10c2/0e9ddbd416467ea46151b02fb3cee16ba0685ab6e3dce0dfebb31a13bb78a5227110a5c965e133c7e98cd77b32e2aa8b70e8fef4a5735d58ccce756dcd20d5f9 languageName: node linkType: hard -"vitest@npm:^3.0.5": - version: 3.0.5 - resolution: "vitest@npm:3.0.5" - dependencies: - "@vitest/expect": "npm:3.0.5" - "@vitest/mocker": "npm:3.0.5" - "@vitest/pretty-format": "npm:^3.0.5" - "@vitest/runner": "npm:3.0.5" - "@vitest/snapshot": "npm:3.0.5" - "@vitest/spy": "npm:3.0.5" - "@vitest/utils": "npm:3.0.5" - chai: "npm:^5.1.2" - debug: "npm:^4.4.0" - expect-type: "npm:^1.1.0" - magic-string: "npm:^0.30.17" - pathe: "npm:^2.0.2" - std-env: "npm:^3.8.0" +"vitest@npm:^4.1.6": + version: 4.1.6 + resolution: "vitest@npm:4.1.6" + dependencies: + "@vitest/expect": "npm:4.1.6" + "@vitest/mocker": "npm:4.1.6" + "@vitest/pretty-format": "npm:4.1.6" + "@vitest/runner": "npm:4.1.6" + "@vitest/snapshot": "npm:4.1.6" + "@vitest/spy": "npm:4.1.6" + "@vitest/utils": "npm:4.1.6" + es-module-lexer: "npm:^2.0.0" + expect-type: "npm:^1.3.0" + magic-string: "npm:^0.30.21" + obug: "npm:^2.1.1" + pathe: "npm:^2.0.3" + picomatch: "npm:^4.0.3" + std-env: "npm:^4.0.0-rc.1" tinybench: "npm:^2.9.0" - tinyexec: "npm:^0.3.2" - tinypool: "npm:^1.0.2" - tinyrainbow: "npm:^2.0.0" - vite: "npm:^5.0.0 || ^6.0.0" - vite-node: "npm:3.0.5" + tinyexec: "npm:^1.0.2" + tinyglobby: "npm:^0.2.15" + tinyrainbow: "npm:^3.1.0" + vite: "npm:^6.0.0 || ^7.0.0 || ^8.0.0" why-is-node-running: "npm:^2.3.0" peerDependencies: "@edge-runtime/vm": "*" - "@types/debug": ^4.1.12 - "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 - "@vitest/browser": 3.0.5 - "@vitest/ui": 3.0.5 + "@opentelemetry/api": ^1.9.0 + "@types/node": ^20.0.0 || ^22.0.0 || >=24.0.0 + "@vitest/browser-playwright": 4.1.6 + "@vitest/browser-preview": 4.1.6 + "@vitest/browser-webdriverio": 4.1.6 + "@vitest/coverage-istanbul": 4.1.6 + "@vitest/coverage-v8": 4.1.6 + "@vitest/ui": 4.1.6 happy-dom: "*" jsdom: "*" + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: "@edge-runtime/vm": optional: true - "@types/debug": + "@opentelemetry/api": optional: true "@types/node": optional: true - "@vitest/browser": + "@vitest/browser-playwright": + optional: true + "@vitest/browser-preview": + optional: true + "@vitest/browser-webdriverio": + optional: true + "@vitest/coverage-istanbul": + optional: true + "@vitest/coverage-v8": optional: true "@vitest/ui": optional: true @@ -5893,16 +5137,18 @@ __metadata: optional: true jsdom: optional: true + vite: + optional: false bin: vitest: vitest.mjs - checksum: 10c2/938ff29e73d42d4e71c02d0962787a688eb290c1ebaf498bcf0964a5eb9cb6636d82654645712285c188fc28443fdf9b3340ac39f787ff4e51e8b3ddf4bb6138 + checksum: 10c2/381c7b3a0ec7abf114a7d33e2087d99c03c7517f22c7f8c64357a8545a2a0176e4a50b33dfefc5787d5b6506cdf1961b8b7d2f62e73943909fe736b27735a45f languageName: node linkType: hard -"walk-up-path@npm:^3.0.1": - version: 3.0.1 - resolution: "walk-up-path@npm:3.0.1" - checksum: 10c2/b1658fba49cd3f80f69121e1f23700beb3e5f8fb13183ed159ad579f2851f2cc9b18c35c3cf359bfea04b5c8726b566e9bd8c1af9f23284b531a7c34c1f96b4c +"walk-up-path@npm:^4.0.0": + version: 4.0.0 + resolution: "walk-up-path@npm:4.0.0" + checksum: 10c2/574ec8eb1fb8e762b2c17ff838f1c2bc7f4839e0cca12b2503df7bb3791e0f00e927fd3b7a239e2fc9adbd954457f147dac4d117d54efd92b6a381a3df7bb88f languageName: node linkType: hard @@ -5915,13 +5161,6 @@ __metadata: languageName: node linkType: hard -"web-streams-polyfill@npm:^3.0.3": - version: 3.3.3 - resolution: "web-streams-polyfill@npm:3.3.3" - checksum: 10c2/89b66f3f3dbc1c2f97ba0248de0e44d3b45cd7dc764171f78d2e731504769822fa205265737c85d3f35834ea643dcc86a514f041e97b6d2afe6b85e0d4aa09ac - languageName: node - linkType: hard - "which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -5944,6 +5183,17 @@ __metadata: languageName: node linkType: hard +"which@npm:^6.0.0": + version: 6.0.1 + resolution: "which@npm:6.0.1" + dependencies: + isexe: "npm:^4.0.0" + bin: + node-which: bin/which.js + checksum: 10c2/a595030669b79096c4e080c396bc93a6004795f732f13496276f70ebe0cad8a984a838f325b033a0de5ffb01dc2f10c86a9f8a1a645983a32695961aaba70f15 + languageName: node + linkType: hard + "why-is-node-running@npm:^2.3.0": version: 2.3.0 resolution: "why-is-node-running@npm:2.3.0" @@ -5956,15 +5206,6 @@ __metadata: languageName: node linkType: hard -"wide-align@npm:^1.1.5": - version: 1.1.5 - resolution: "wide-align@npm:1.1.5" - dependencies: - string-width: "npm:^1.0.2 || 2 || 3 || 4" - checksum: 10c2/713dfb320114cad6b913f0fc33534e34f12829cd05e8b8742361f61095ba1c5ad2216bcc77e07e1b530d690c9703f0182e8c159b6510484d46b8243ba5feff39 - languageName: node - linkType: hard - "word-wrap@npm:^1.2.5": version: 1.2.5 resolution: "word-wrap@npm:1.2.5" @@ -5979,7 +5220,7 @@ __metadata: languageName: node linkType: hard -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" dependencies: @@ -5990,14 +5231,14 @@ __metadata: languageName: node linkType: hard -"wrap-ansi@npm:^6.2.0": - version: 6.2.0 - resolution: "wrap-ansi@npm:6.2.0" +"wrap-ansi@npm:^10.0.0": + version: 10.0.0 + resolution: "wrap-ansi@npm:10.0.0" dependencies: - ansi-styles: "npm:^4.0.0" - string-width: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - checksum: 10c2/103fc9f345fdfd7b5b430cda3c06023ae3486f1d060f3862e5fc237056fa0f369ed87625dd1ff38c969454441494cba6c33c2cd0a2171c38cfa8e107351381c1 + ansi-styles: "npm:^6.2.3" + string-width: "npm:^8.2.0" + strip-ansi: "npm:^7.1.2" + checksum: 10c2/4ec710f4dbb89f117025353e782aa30f1e8098007bbc6c74d8a894fcb1c88f7fa913156fd19f173b91fe929ea5b25480651c3268888560a95c3a0d7da5e430ea languageName: node linkType: hard @@ -6023,38 +5264,34 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^5.0.0, write-file-atomic@npm:^5.0.1": - version: 5.0.1 - resolution: "write-file-atomic@npm:5.0.1" +"write-file-atomic@npm:^6.0.0": + version: 6.0.0 + resolution: "write-file-atomic@npm:6.0.0" dependencies: imurmurhash: "npm:^0.1.4" signal-exit: "npm:^4.0.1" - checksum: 10c2/05ca668358e35fa66d0077040aa414845b006e40128ec339646f8b87350fbc0d26b0ec5c96f2115aa1d10df7bc6f19caec29d38b2f19429eaca1ba6a0e1ecc74 + checksum: 10c2/53c2eaa59f9fbca73e7735885456819fb5c66a0dc5b4ff3ee4d49fddea593aec26cfc81ecf97ef36e86c3a50ebc66fe532317a7ea107a3b6703107ba48a3b7e5 languageName: node linkType: hard -"write-json-file@npm:^6.0.0": - version: 6.0.0 - resolution: "write-json-file@npm:6.0.0" +"write-file-atomic@npm:^7.0.0, write-file-atomic@npm:^7.0.1": + version: 7.0.1 + resolution: "write-file-atomic@npm:7.0.1" dependencies: - detect-indent: "npm:^7.0.1" - is-plain-obj: "npm:^4.1.0" - sort-keys: "npm:^5.0.0" - write-file-atomic: "npm:^5.0.1" - checksum: 10c2/3425d7612a5b7351cb8e9ebd6b3856b26e33b61b2b3b9222f7625221eaa2cab3fc2a4b4d5f6672aab7a06243f46435f65ef8b463e49b16ff9416c5401a5b31f3 + signal-exit: "npm:^4.0.1" + checksum: 10c2/a2db95f6b2baeec31fe6c4d4512beeab92de44e4cef8e1a19afd542187dc82cdbf8b967acf7004c4ea482ac2db5cf11b58b36b3c6250bc20ec843b3f8c5a26a6 languageName: node linkType: hard -"write-package@npm:^7.1.0": - version: 7.1.0 - resolution: "write-package@npm:7.1.0" +"write-json-file@npm:^7.0.0": + version: 7.0.0 + resolution: "write-json-file@npm:7.0.0" dependencies: - deepmerge-ts: "npm:^7.1.0" - read-pkg: "npm:^9.0.1" - sort-keys: "npm:^5.0.0" - type-fest: "npm:^4.23.0" - write-json-file: "npm:^6.0.0" - checksum: 10c2/393f731647300183c143a33f687bdb732012f5c642e5b8d9005c0d2c81e50f63b7b26359f70deb482be75aea1eaafd55dfefa19efddef3538c7b9ffba57a546f + detect-indent: "npm:^7.0.1" + is-plain-obj: "npm:^4.1.0" + sort-keys: "npm:^6.0.0" + write-file-atomic: "npm:^6.0.0" + checksum: 10c2/7b1059255e20d4eb1ce31fb94d9500bc242dbd89cf0bf5da6cc4de43c17ca19d4d6ab981a238bddc7f4379d60dab8bb4c84e6b722871c7b8933f034824c06639 languageName: node linkType: hard @@ -6072,34 +5309,40 @@ __metadata: languageName: node linkType: hard -"yaml@npm:2.7.0, yaml@npm:^2.7.0": - version: 2.7.0 - resolution: "yaml@npm:2.7.0" +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: 10c2/54859e8a89ef6e79dc0d4bcd8b4a7a7c1fdcc59328c023982d82911bc453d35f7e65a2e147fe38427ff4aaab303fb631637a0e56bffbfc1cbdd2c14961268a76 + languageName: node + linkType: hard + +"yaml@npm:^2.8.3, yaml@npm:^2.8.4": + version: 2.9.0 + resolution: "yaml@npm:2.9.0" bin: yaml: bin.mjs - checksum: 10c2/e77156fbdb07b5096ad11caa0b90e3f5ffedf74e6dd9ba0d72b4a3e5dc38feeb7c24167c5f2f7d3547ed09a0eda9af24421816a21d416e453b42fd12ace4d9fa + checksum: 10c2/c625854770ec03ace0a873c2475441f35159ae1d76a7e44445d627047c64f6a76103d9a38c1e35ccb39f23936907c5b29ede953fdbd2c68e1b1f9e1c570eb96f languageName: node linkType: hard -"yargs-parser@npm:^21.1.1": - version: 21.1.1 - resolution: "yargs-parser@npm:21.1.1" - checksum: 10c2/0a5ac96da004c031ea9f2dd4350df64284fcba1d0ff6589bb09990cd253526f48220f781b04deb06b0795064faa19cc4517a1dc6d750895303104628f2d13bda +"yargs-parser@npm:^22.0.0": + version: 22.0.0 + resolution: "yargs-parser@npm:22.0.0" + checksum: 10c2/77e0114bb33db1a2c74313ee631ee1d8dba1427970073c6ff6307d1025c75e9be1f9340890282f75d6b22d58acc8041ce65be309d047fb8f42bbf83106964e1a languageName: node linkType: hard -"yargs@npm:^17.0.0, yargs@npm:^17.7.2": - version: 17.7.2 - resolution: "yargs@npm:17.7.2" +"yargs@npm:^18.0.0": + version: 18.0.0 + resolution: "yargs@npm:18.0.0" dependencies: - cliui: "npm:^8.0.1" + cliui: "npm:^9.0.1" escalade: "npm:^3.1.1" get-caller-file: "npm:^2.0.5" - require-directory: "npm:^2.1.1" - string-width: "npm:^4.2.3" + string-width: "npm:^7.2.0" y18n: "npm:^5.0.5" - yargs-parser: "npm:^21.1.1" - checksum: 10c2/cc1f03798a8601ddb1b9956a39ab572440f796ac53884b78b50cbe478f5e2cbec7ea38b0eaaff9d4dcc409aca6a9e51bd5f9b13c24f1247c8faca1440df7da0e + yargs-parser: "npm:^22.0.0" + checksum: 10c2/f21701502b8d8b0df73c909b5e3fa859770b775a09a6ce1d04ff8996cfe3021d379bb02b66ce84a988954c1be7404fdbad8c94428e0a2db065634325ec3a79ea languageName: node linkType: hard @@ -6117,23 +5360,26 @@ __metadata: languageName: node linkType: hard -"yocto-queue@npm:^1.0.0, yocto-queue@npm:^1.1.1": - version: 1.1.1 - resolution: "yocto-queue@npm:1.1.1" - checksum: 10c2/b81ef2d4e0fa4b6755b2ad58f8d0f248573f777e69b1e300dbe415fe4289f65ac6f065c170f0282acb49a3d390f30eb3ad70ee79036207007257eb454b98a516 +"yocto-queue@npm:^1.2.1": + version: 1.2.2 + resolution: "yocto-queue@npm:1.2.2" + checksum: 10c2/226bde73aa326b839b5b42d4ab4f94b3966571e4a71a5ca2250841db61ede4b0f7745451a53849723c3736254951e0d701a636b416b1e9d57829aad545ff4550 languageName: node linkType: hard -"yoctocolors-cjs@npm:^2.1.2": - version: 2.1.2 - resolution: "yoctocolors-cjs@npm:2.1.2" - checksum: 10c2/d06f7907e9a0dcd49622ef25cf994b541a898a6cf88910d97544b1fb96b5652c4d0c0dd0c6deb3d7276a0349ab895bc71ecf62564b1280f6cb8bf1fe625f3cd0 +"zeptomatch@npm:^2.1.0": + version: 2.1.0 + resolution: "zeptomatch@npm:2.1.0" + dependencies: + grammex: "npm:^3.1.11" + graphmatch: "npm:^1.1.0" + checksum: 10c2/1dabf2b1caa65586c77aa299d029284fb4cd3e62e33d86dfb4aae9d01ce18984a3dc61736a14bf83a40bd933b4cf18eb9878dfbe1367ef8f8cf16d586e2c197c languageName: node linkType: hard -"zod@npm:^3.24.2": - version: 3.24.2 - resolution: "zod@npm:3.24.2" - checksum: 10c2/3a061e08fc5e7e85ed88add280e94ebb13b96bebb229ab4412f7f7571039c642cd31217cb75fa1cce22874a83655be25a9032f1fafd47d1660f33ca7d10442f9 +"zod@npm:^4.4.3": + version: 4.4.3 + resolution: "zod@npm:4.4.3" + checksum: 10c2/811e975a28b9392dfc71b3bed01560eb067ee6bf79b3ad262db0b70713359b08366cc439fb1bb91ed49dcc82739b693bae62775eb8f26ded80308bf39af47e1e languageName: node linkType: hard From 18888ed09086182ae5dfdaf19e0b27691102b35e Mon Sep 17 00:00:00 2001 From: chyzwar Date: Thu, 14 May 2026 10:30:17 +0200 Subject: [PATCH 2/6] docs(repo): add CLAUDE.md with build/test commands and architecture overview Covers monorepo scripts, release flow, the conf/ctl split, the implement().with({...}) zod-interface contract, runtime mixin pattern for section builders, and INI parser limitations. Co-Authored-By: Claude Opus 4.7 (1M context) --- CLAUDE.md | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..831c2ea --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,62 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Commands + +Yarn 4 + Lerna-lite monorepo. All scripts run from the repo root unless noted. + +- `yarn build` — `tsc --build` across the workspace via root project references in `tsconfig.json`. Builds emit to each package's `lib/`. +- `yarn build:watch` — incremental build in watch mode. +- `yarn test` — runs Vitest once (`vitest --run`) across both packages via `vitest.workspace.ts`. +- `yarn test:watch` — Vitest in watch mode. +- `yarn test:coverage` — Vitest with coverage. +- `yarn lint` / `yarn lint:fix` — ESLint with cache (`.eslintcache` is committed-ignored). Type-aware rules require a successful `yarn build` of the package's tsconfig because the ESLint config points `parserOptions.project` at each `packages/*/tsconfig.json`. +- Run a single package's scripts: `yarn workspace @systemd-js/conf test` (or `lint`, `build`, etc.). Same scripts exist on each package. +- Run a single test file or test name: `yarn workspace @systemd-js/conf test src/__tests__/service.test.ts` or filter with `-t ""`. + +Node `^24` is the declared engine; CI uses Node 24. Husky `pre-commit` runs `yarn test` (not lint-staged — `lint-staged` is configured but not wired into a hook); `commit-msg` runs commitlint with `@commitlint/config-conventional` and a **mandatory non-empty scope** (e.g. `feat(conf): ...`, `fix(ctl): ...`). + +## Releases + +`master` is the only release branch. Releases are fully automated by `.github/workflows/publish.yaml` on PR merge: it runs `lerna version --conventional-commits` then `lerna publish from-git`. Both packages are versioned in lockstep (`lerna.json` `version`). Don't bump versions or edit `CHANGELOG.md` by hand — conventional-commit messages drive both. + +## Architecture + +Two packages with a strict dependency direction: **`conf` is pure** (parse/build), **`ctl` wraps the OS** (`systemctl` + filesystem) and depends on `conf`. + +### `@systemd-js/conf` — unit file model + +The shape every unit follows (`Service`, `Timer`, `Container`): + +1. A TypeScript `interface` for each section (`UnitSection`, `ServiceSection`, `TimerSection`, `InstallSectionConfig`, `ExecSectionConfig`, `KillSectionConfig`, `ResourceSectionConfig`, `ContainerSection`) that mirrors the systemd man-page directives 1:1, with the man-page text preserved as JSDoc. +2. A Zod schema declared via the `implement().with({ ... })` helper in `utils.ts`. This helper *requires* the schema to cover every key of the interface (and only those keys) — it's how interface and runtime validator stay in sync. When you add a directive, add it to the interface, the schema, **and** the builder. +3. A `*SectionBuilder` class with chainable `setX()` setters and a `toObject()` that re-validates through the schema. +4. A top-level `Unit` class (`Service`/`Timer`/`Container`) that composes the section builders, exposes `getXSection()` accessors, and implements `AbstractUnit` (`toObject`, `toINIString`, `equals`) plus statics `getType()`, `fromObject(obj)`, `fromINI(ini)`. + +Section builders share behavior via **runtime mixins**, not inheritance: `ServiceSectionBuilder` declares `extends ExecSectionBuilder, KillSectionBuilder, ResourceSectionBuilder` as a TypeScript `interface` (declaration-merging on the class), and `applyMixins(...)` from `utils.ts` copies the prototypes at module load. `TimerSectionBuilder` does the same with `ExecSectionBuilder`. The `@typescript-eslint/no-unsafe-declaration-merging` rule is disabled in `eslint.config.js` specifically to allow this. + +`INI` (`ini.ts`) is the only (de)serializer. It is **not** a full systemd parser: no quoting, no escaping, no continuation-line semantics beyond a basic `\\\n` strip. Booleans round-trip as `yes`/`no`; multiple assignments to the same key collapse into a string array (e.g. multiple `ExecStartPre=`); `1`/`0` warn and are coerced to booleans. + +`Container` units are quadrux-wrapped: they have `[Unit]`, `[Container]`, optional `[Install]`, **and** optional `[Service]` (Quadlet/podman-systemd convention). + +All unit equality (`equals`) is `JSON.stringify(toObject())` — order-sensitive. Don't reorder builder keys casually. + +### `@systemd-js/ctl` — runtime control + +`ctl.ts` is the entire surface. It maps unit names to filesystem paths: +- `*.service`, `*.timer` → `/etc/systemd/system/.` +- `*.container` → `/etc/containers/systemd/.` (Quadlet location) + +Type detection: pass an explicit `Unit` instance (`(unit.constructor as typeof Service).getType()`) or it's parsed from the filename extension. `enable`/`disable` reject containers (Quadlet doesn't use systemctl enable). `write()` reads the existing on-disk unit (if any), compares via `unit.equals(current)`, and returns `"created" | "updated" | "unchanged"` — only writing on diff. + +Every other operation shells out via `execSync("systemctl ...")` — no daemon-reload is implicit, callers must invoke `daemonReload()` themselves after `write()` if they want systemd to pick up changes. There is no error wrapping; failures throw the raw `execSync` error. The README explicitly notes "lack proper error handling" — keep that in mind before adding swallowing try/catches. + +The `Ctl` class is a thin stateful wrapper around the same functions; it caches `current` (on-disk unit) at construction time, so a second `new Ctl(name)` is needed to see external changes. + +## Conventions + +- ESM only (`"type": "module"`). Relative imports must use the **`.js` extension** even from `.ts` source (e.g. `import { INI } from "./ini.js"`) — required by Node ESM resolution after `tsc` emits `.js`. +- The `@chyzwar/eslint-config/node` config and `@chyzwar/tsconfig/lib.json` are external; behavior is dictated there, not in-repo. Don't fight the formatter — run `yarn lint:fix`. +- Keep the man-page JSDoc verbatim when adding new directives (`exec.ts`, `service.ts` etc. follow this pattern). The pinned reference is systemd v255.4. +- Tests live in `packages/*/src/__tests__/*.test.ts` and import from sibling files using the `.js` extension. From b7e7021262bd524d1c8a0b712d2cc475ede9920b Mon Sep 17 00:00:00 2001 From: chyzwar Date: Thu, 14 May 2026 11:48:28 +0200 Subject: [PATCH 3/6] chore(conf): adopt zod 4 idioms (z.literal/z.enum/z.templateLiteral/z.strictObject) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Collapse pure-string literal unions in exec.ts to z.enum([...]) (StandardOutputSchema, LogLevelSchema, StandardInput, SyslogFacility), matching the existing convention in kill.ts and parts of service.ts. Replace the z.string().startsWith(...) as ZodType<`file:${string}`> casts with z.templateLiteral([prefix, z.string()]) — no more manual type assertions; Zod 4 infers the template-literal output type natively. Collapse mixed boolean+string literal unions to z.literal([true, false, ...]): exec.ts ProtectSystem / ProtectHome / RuntimeDirectoryPreserve, service.ts FileDescriptorStorePreserve. Replace .extend(...).extend(...).strict() chains with z.strictObject({...spread}) in service.ts and timer.ts. Tighten Implements in utils.ts so optional/nullable fields use z.ZodType, Strip> (Strip removes null|undefined) — matches the shape of z.X().optional() exactly. Non-optional fields use z.ZodType. Bump the explicit annotations on ResourceLimitSchema, ServiceSectionSchema, and TimerSectionSchema to the two-param form to satisfy the tightened helper. Co-Authored-By: Claude Opus 4.7 (1M context) --- packages/conf/src/exec.ts | 70 +++++++++-------------------------- packages/conf/src/resource.ts | 2 +- packages/conf/src/service.ts | 13 ++++--- packages/conf/src/timer.ts | 7 ++-- packages/conf/src/utils.ts | 10 +++-- 5 files changed, 35 insertions(+), 67 deletions(-) diff --git a/packages/conf/src/exec.ts b/packages/conf/src/exec.ts index c2c225b..2079a8d 100644 --- a/packages/conf/src/exec.ts +++ b/packages/conf/src/exec.ts @@ -2636,29 +2636,15 @@ export interface ExecSectionConfig { } const StandardOutputSchema = z.union([ - z.literal("inherit"), - z.literal("null"), - z.literal("tty"), - z.literal("journal"), - z.literal("kmsg"), - z.literal("journal+console"), - z.literal("kmsg+console"), - z.literal("socket"), - z.string().startsWith("file:") as z.ZodType<`file:${string}`>, - z.string().startsWith("append:") as z.ZodType<`append:${string}`>, - z.string().startsWith("truncate:") as z.ZodType<`truncate:${string}`>, - z.string().startsWith("fd:") as z.ZodType<`fd:${string}`>, + z.enum(["inherit", "null", "tty", "journal", "kmsg", "journal+console", "kmsg+console", "socket"]), + z.templateLiteral(["file:", z.string()]), + z.templateLiteral(["append:", z.string()]), + z.templateLiteral(["truncate:", z.string()]), + z.templateLiteral(["fd:", z.string()]), ]).optional(); -const LogLevelSchema = z.union([ - z.literal("emerg"), - z.literal("alert"), - z.literal("crit"), - z.literal("err"), - z.literal("warning"), - z.literal("notice"), - z.literal("info"), - z.literal("debug"), +const LogLevelSchema = z.enum([ + "emerg", "alert", "crit", "err", "warning", "notice", "info", "debug", ]).optional(); export const ExecSectionSchema = implement().with({ @@ -2734,8 +2720,8 @@ export const ExecSectionSchema = implement().with({ IgnoreSIGPIPE: z.boolean().optional(), // SANDBOXING - ProtectSystem: z.union([z.boolean(), z.literal("full"), z.literal("strict")]).optional(), - ProtectHome: z.union([z.boolean(), z.literal("read-only"), z.literal("tmpfs")]).optional(), + ProtectSystem: z.literal([true, false, "full", "strict"]).optional(), + ProtectHome: z.literal([true, false, "read-only", "tmpfs"]).optional(), RuntimeDirectory: z.string().optional(), StateDirectory: z.string().optional(), CacheDirectory: z.string().optional(), @@ -2746,7 +2732,7 @@ export const ExecSectionSchema = implement().with({ CacheDirectoryMode: z.string().optional(), LogsDirectoryMode: z.string().optional(), ConfigurationDirectoryMode: z.string().optional(), - RuntimeDirectoryPreserve: z.union([z.boolean(), z.literal("restart")]).optional(), + RuntimeDirectoryPreserve: z.literal([true, false, "restart"]).optional(), TimeoutCleanSec: z.number().optional(), ReadWritePaths: z.string().optional(), ReadOnlyPaths: z.string().optional(), @@ -2787,14 +2773,9 @@ export const ExecSectionSchema = implement().with({ // LOGGING AND STANDARD INPUT/OUTPUT StandardInput: z.union([ - z.literal("null"), - z.literal("tty"), - z.literal("tty-force"), - z.literal("tty-fail"), - z.literal("data"), - z.literal("socket"), - z.string().startsWith("file:") as z.ZodType<`file:${string}`>, - z.string().startsWith("fd:") as z.ZodType<`fd:${string}`>, + z.enum(["null", "tty", "tty-force", "tty-fail", "data", "socket"]), + z.templateLiteral(["file:", z.string()]), + z.templateLiteral(["fd:", z.string()]), ]).optional(), StandardOutput: StandardOutputSchema, StandardError: StandardOutputSchema, @@ -2807,27 +2788,10 @@ export const ExecSectionSchema = implement().with({ LogFilterPatterns: z.string().optional(), LogNamespace: z.string().optional(), SyslogIdentifier: z.string().optional(), - SyslogFacility: z.union([ - z.literal("kern"), - z.literal("user"), - z.literal("mail"), - z.literal("daemon"), - z.literal("auth"), - z.literal("syslog"), - z.literal("lpr"), - z.literal("news"), - z.literal("uucp"), - z.literal("cron"), - z.literal("authpriv"), - z.literal("ftp"), - z.literal("local0"), - z.literal("local1"), - z.literal("local2"), - z.literal("local3"), - z.literal("local4"), - z.literal("local5"), - z.literal("local6"), - z.literal("local7"), + SyslogFacility: z.enum([ + "kern", "user", "mail", "daemon", "auth", "syslog", "lpr", "news", "uucp", + "cron", "authpriv", "ftp", + "local0", "local1", "local2", "local3", "local4", "local5", "local6", "local7", ]).optional(), SyslogLevel: LogLevelSchema, SyslogLevelPrefix: z.boolean().optional(), diff --git a/packages/conf/src/resource.ts b/packages/conf/src/resource.ts index b3144d8..8db144e 100644 --- a/packages/conf/src/resource.ts +++ b/packages/conf/src/resource.ts @@ -1142,7 +1142,7 @@ Coredump Control export const ResourceLimitSchema = z.union([ z.string(), z.number(), -]) as ZodType; +]) as ZodType; export const ResourceSectionConfigSchema = implement().with({ CPUAccounting: z.boolean().optional(), diff --git a/packages/conf/src/service.ts b/packages/conf/src/service.ts index 76bf135..0b55208 100644 --- a/packages/conf/src/service.ts +++ b/packages/conf/src/service.ts @@ -1149,7 +1149,7 @@ export const ServiceSectionConfigSchema = implement().with /** * @see {@link ServiceSectionConfig.FileDescriptorStorePreserve} */ - FileDescriptorStorePreserve: z.union([z.boolean(), z.enum(["restart"])]).optional(), + FileDescriptorStorePreserve: z.literal([true, false, "restart"]).optional(), /** * @see {@link ServiceSectionConfig.USBFunctionDescriptors} */ @@ -1178,11 +1178,12 @@ export const ServiceSectionConfigSchema = implement().with * @see {@link ExecSectionConfig} * @see {@link KillSectionConfig} */ -export const ServiceSectionSchema: ZodType = ServiceSectionConfigSchema - .extend(ExecSectionSchema.shape) - .extend(KillSectionSchema.shape) - .extend(ResourceSectionConfigSchema.shape) - .strict(); +export const ServiceSectionSchema: ZodType = z.strictObject({ + ...ServiceSectionConfigSchema.shape, + ...ExecSectionSchema.shape, + ...KillSectionSchema.shape, + ...ResourceSectionConfigSchema.shape, +}); /** * Systemd Service schema in Zod diff --git a/packages/conf/src/timer.ts b/packages/conf/src/timer.ts index 0063636..df1728e 100644 --- a/packages/conf/src/timer.ts +++ b/packages/conf/src/timer.ts @@ -307,9 +307,10 @@ export const TimerSectionConfigSchema = implement().with({ * @see {@link TimerSectionConfigSchema} * @see {@link ExecSectionConfig} */ -export const TimerSectionSchema: ZodType = TimerSectionConfigSchema - .extend(ExecSectionSchema.shape) - .strict(); +export const TimerSectionSchema: ZodType = z.strictObject({ + ...TimerSectionConfigSchema.shape, + ...ExecSectionSchema.shape, +}); /** * Systemd Timer schema in Zod diff --git a/packages/conf/src/utils.ts b/packages/conf/src/utils.ts index 62a990c..af240b4 100644 --- a/packages/conf/src/utils.ts +++ b/packages/conf/src/utils.ts @@ -29,14 +29,16 @@ export function applyMixins(derivedCtor: Constructor, constructors: Constructor[ * Method for validating zod schema with interface * @see https://github.com/colinhacks/zod/issues/372#issuecomment-1280054492 */ +type Strip = Exclude; + export type Implements = { [key in keyof Model]-?: undefined extends Model[key] ? null extends Model[key] - ? z.ZodNullable>> - : z.ZodOptional> + ? z.ZodNullable, Strip>>> + : z.ZodOptional, Strip>> : null extends Model[key] - ? z.ZodNullable> - : z.ZodType; + ? z.ZodNullable, Strip>> + : z.ZodType; }; /** From 8494c0aa551f264d858fca4ce11b6ba9198ed2f7 Mon Sep 17 00:00:00 2001 From: chyzwar Date: Thu, 14 May 2026 12:04:47 +0200 Subject: [PATCH 4/6] chore(conf,ctl): pin module to nodenext in package tsconfigs The shared @chyzwar/tsconfig/lib.json sets module to "Node18" which TS 6.0.3 accepts but older TypeScript versions (e.g. those bundled with IDE ESLint servers) reject during tsconfig validation. Lowercase "nodenext" in each package's tsconfig overrides the parent and resolves identically under TS 6 while remaining valid for older TS too, silencing the IDE parsing error. Co-Authored-By: Claude Opus 4.7 (1M context) --- packages/conf/tsconfig.json | 1 + packages/ctl/tsconfig.json | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/conf/tsconfig.json b/packages/conf/tsconfig.json index e148df7..34390b7 100644 --- a/packages/conf/tsconfig.json +++ b/packages/conf/tsconfig.json @@ -2,6 +2,7 @@ "extends": "@chyzwar/tsconfig/lib.json", "compilerOptions": { "target": "ES2022", + "module": "nodenext", "outDir": "lib", "rootDir": "src", "composite": false, diff --git a/packages/ctl/tsconfig.json b/packages/ctl/tsconfig.json index 7943b3f..0fa2045 100644 --- a/packages/ctl/tsconfig.json +++ b/packages/ctl/tsconfig.json @@ -3,6 +3,7 @@ "compilerOptions": { "target": "ES2022", "outDir": "lib", + "module": "nodenext", "rootDir": "src", "composite": false, "tsBuildInfoFile": "./lib/buildInfo.json", From 3c10bb52a0fe3030b4404ab5100d71b2cff98c43 Mon Sep 17 00:00:00 2001 From: chyzwar Date: Fri, 15 May 2026 08:31:32 +0200 Subject: [PATCH 5/6] feat(conf): sync resource/service sections to systemd v257 (resolute) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bring `@systemd-js/conf` in line with the resolute (Ubuntu 25.10 / systemd v257) manpages. `@see` URLs bumped noble → resolute. resource.ts: - Add ~30 missing directives across IO, Network, BPF, Device, CGroup management, OOM/memory-pressure, and Coredump sections (IODeviceWeight, IOReadBandwidthMax, IPAddressAllow/Deny, SocketBindAllow/Deny, RestrictNetworkInterfaces, NFTSet, BPFProgram, DeviceAllow, DevicePolicy, Slice, Delegate, ManagedOOM*, MemoryPressure*, CoredumpReceive, MemoryZSwapWriteback, DefaultMemoryMin/Low, …). - Refactor `ResourceLimit` to `z.templateLiteral` (drops the `as ZodType<...>` cast and unused `ZodType` import). - Fix `TasksMax` schema: now accepts `number | "infinity" | \`${number}%\`` instead of bare `z.number()`. - Fix `CPUQuotaPeriodSec` schema to also accept strings. service.ts: - Add `Type=notify-reload` (v250), `RestartMode=debug` (v257), and the new `ExecReloadPost=` directive (v259). - Remove duplicate `"forking"` from the `Type` enum. - Widen time-duration fields to `number | string` (RestartSec, Restart/RuntimeMaxDelaySec, Timeout{Start,Stop,Abort,}Sec, WatchdogSec, RuntimeRandomizedExtraSec). Fixes a round-trip bug where the INI parser coerces `RestartSec=30` to a JS number that the old schema rejected. - JSDoc audit pass: 11 verbatim fixes against the resolute manpage (PIDFile XDG_RUNTIME_DIR, ExecReload notify-reload interaction, RestartSteps formula, RestartMaxDelaySec zero-RestartSec condition, TimeoutStartSec reload timeout, RuntimeMaxSec oneshot hint, Restart= OOM table row, RestartMode debug-version trailer, RestartForceExitStatus oneshot caveat, RootDirectoryStartOnly ExecReloadPost, OOMPolicy oom-kill state). - Add eight missing `Added in version N.` trailers. - Fix two stale `@see` cross-references. Tests: new `resource.test.ts` and v257 cases appended to `service.test.ts` covering round-trip through the INI emitter/parser, multi-assignment directives, time-duration string and numeric forms, and negative cases for invalid enums. Co-Authored-By: Claude Opus 4.7 (1M context) --- packages/conf/src/__tests__/resource.test.ts | 156 ++ packages/conf/src/__tests__/service.test.ts | 105 ++ packages/conf/src/resource.ts | 1587 +++++++++--------- packages/conf/src/service.ts | 158 +- 4 files changed, 1159 insertions(+), 847 deletions(-) create mode 100644 packages/conf/src/__tests__/resource.test.ts diff --git a/packages/conf/src/__tests__/resource.test.ts b/packages/conf/src/__tests__/resource.test.ts new file mode 100644 index 0000000..a4e065f --- /dev/null +++ b/packages/conf/src/__tests__/resource.test.ts @@ -0,0 +1,156 @@ +import { describe, expect, it } from "vitest"; +import { INI } from "../ini.js"; +import { Service } from "../service.js"; + +const baseObj = { + Unit: { Description: "rsrc test" }, + Service: { + Type: "simple" as const, + ExecStart: "/bin/true", + }, +}; + +describe("Resource section", () => { + describe("round-trip", () => { + it("preserves multi-assignment directives through INI string", () => { + const obj = { + ...baseObj, + Service: { + ...baseObj.Service, + IODeviceWeight: ["/dev/sda 200", "/dev/sdb 100"], + IOReadBandwidthMax: "/dev/sda 5M", + IPAddressAllow: ["10.0.0.0/8", "::1"], + IPAddressDeny: "any", + SocketBindAllow: ["ipv6:tcp", "ipv4:udp:10000-65535"], + RestrictNetworkInterfaces: ["eth0", "eth1"], + DeviceAllow: ["/dev/null rw", "char-pts rw"], + BPFProgram: "egress:/sys/fs/bpf/egress-hook", + }, + }; + + const svc = new Service(obj); + const round = Service.fromINI(INI.fromString(svc.toINIString())); + expect(round.toObject()).toMatchObject(obj); + }); + + it("preserves single-value enum and boolean directives", () => { + const obj = { + ...baseObj, + Service: { + ...baseObj.Service, + DevicePolicy: "strict" as const, + Delegate: "cpu io", + DelegateSubgroup: "supervisor", + ManagedOOMSwap: "kill" as const, + ManagedOOMMemoryPressure: "kill" as const, + ManagedOOMMemoryPressureLimit: "60%", + ManagedOOMMemoryPressureDurationSec: "5s", + ManagedOOMPreference: "avoid" as const, + MemoryPressureWatch: "auto" as const, + MemoryPressureThresholdSec: "150ms", + MemoryZSwapWriteback: false, + CoredumpReceive: true, + IPAccounting: true, + Slice: "system.slice", + }, + }; + + const svc = new Service(obj); + const round = Service.fromINI(INI.fromString(svc.toINIString())); + expect(round.toObject()).toMatchObject(obj); + }); + + it("accepts ResourceLimit suffix variants", () => { + const obj = { + ...baseObj, + Service: { + ...baseObj.Service, + MemoryMax: "512M" as const, + MemoryHigh: "1G" as const, + MemoryLow: "10%" as const, + MemoryMin: "infinity" as const, + MemorySwapMax: "256M" as const, + TasksMax: "50%" as const, + }, + }; + + const svc = new Service(obj); + const round = Service.fromINI(INI.fromString(svc.toINIString())); + expect(round.toObject()).toMatchObject(obj); + }); + + it("accepts Delegate as boolean", () => { + const obj = { + ...baseObj, + Service: { ...baseObj.Service, Delegate: true }, + }; + + const svc = new Service(obj); + const round = Service.fromINI(INI.fromString(svc.toINIString())); + expect(round.toObject()).toMatchObject(obj); + }); + }); + + describe("validation", () => { + it("rejects garbage TasksMax", () => { + expect(() => new Service({ + ...baseObj, + Service: { ...baseObj.Service, TasksMax: "garbage" as never }, + })).toThrow(); + }); + + it("rejects invalid ResourceLimit suffix", () => { + expect(() => new Service({ + ...baseObj, + Service: { ...baseObj.Service, MemoryMax: "10Q" as never }, + })).toThrow(); + }); + + it("rejects unknown DevicePolicy", () => { + expect(() => new Service({ + ...baseObj, + Service: { ...baseObj.Service, DevicePolicy: "open" as never }, + })).toThrow(); + }); + + it("rejects unknown ManagedOOMPreference", () => { + expect(() => new Service({ + ...baseObj, + Service: { ...baseObj.Service, ManagedOOMPreference: "preferred" as never }, + })).toThrow(); + }); + }); + + describe("builder", () => { + it("sets new resource directives via setters", () => { + const svc = new Service(); + svc.getUnitSection().setDescription("rsrc builder"); + svc.getServiceSection() + .setType("simple") + .setExecStart("/bin/true") + .setIODeviceWeight(["/dev/sda 200", "/dev/sdb 100"]) + .setIPAddressAllow(["10.0.0.0/8"]) + .setDevicePolicy("strict") + .setDelegate("cpu io") + .setManagedOOMSwap("kill") + .setMemoryZSwapWriteback(false) + .setCoredumpReceive(true) + .setTasksMax("50%"); + + expect(svc.toObject()).toMatchObject({ + Service: { + Type: "simple", + ExecStart: "/bin/true", + IODeviceWeight: ["/dev/sda 200", "/dev/sdb 100"], + IPAddressAllow: ["10.0.0.0/8"], + DevicePolicy: "strict", + Delegate: "cpu io", + ManagedOOMSwap: "kill", + MemoryZSwapWriteback: false, + CoredumpReceive: true, + TasksMax: "50%", + }, + }); + }); + }); +}); diff --git a/packages/conf/src/__tests__/service.test.ts b/packages/conf/src/__tests__/service.test.ts index 4403142..8306c8e 100644 --- a/packages/conf/src/__tests__/service.test.ts +++ b/packages/conf/src/__tests__/service.test.ts @@ -108,4 +108,109 @@ describe("Service", () => { expect(service.toObject()).toMatchObject(serviceObj); }); }); + + describe("v257 directives", () => { + const baseObj = { + Unit: { Description: "v257 test" }, + Service: { + Type: "simple" as const, + ExecStart: "/bin/true", + }, + }; + + it("round-trips notify-reload type with ExecReloadPost", () => { + const obj = { + ...baseObj, + Service: { + ...baseObj.Service, + Type: "notify-reload" as const, + ExecReload: "/bin/reload", + ExecReloadPost: ["/bin/post1", "/bin/post2"], + ReloadSignal: "SIGUSR1", + }, + }; + const svc = new Service(obj); + const round = Service.fromINI(INI.fromString(svc.toINIString())); + expect(round.toObject()).toMatchObject(obj); + }); + + it("round-trips RestartMode=debug", () => { + const obj = { + ...baseObj, + Service: { + ...baseObj.Service, + Restart: "always" as const, + RestartMode: "debug" as const, + }, + }; + const svc = new Service(obj); + const round = Service.fromINI(INI.fromString(svc.toINIString())); + expect(round.toObject()).toMatchObject(obj); + }); + + it("accepts numeric time-duration fields", () => { + const obj = { + ...baseObj, + Service: { + ...baseObj.Service, + RestartSec: 30, + TimeoutStartSec: 10, + WatchdogSec: 5, + }, + }; + const svc = new Service(obj); + const round = Service.fromINI(INI.fromString(svc.toINIString())); + expect(round.toObject()).toMatchObject(obj); + }); + + it("accepts time-span string forms (5min 20s, infinity)", () => { + const obj = { + ...baseObj, + Service: { + ...baseObj.Service, + RestartSec: "5min 20s", + RuntimeMaxSec: "1h30min", + RestartMaxDelaySec: "infinity", + TimeoutStopSec: "30s", + TimeoutAbortSec: "infinity", + }, + }; + const svc = new Service(obj); + const round = Service.fromINI(INI.fromString(svc.toINIString())); + expect(round.toObject()).toMatchObject(obj); + }); + + it("rejects unknown Type", () => { + expect(() => new Service({ + ...baseObj, + Service: { ...baseObj.Service, Type: "magic" as never }, + })).toThrow(); + }); + + it("rejects unknown RestartMode", () => { + expect(() => new Service({ + ...baseObj, + Service: { ...baseObj.Service, RestartMode: "fancy" as never }, + })).toThrow(); + }); + + it("exposes setExecReloadPost on the builder", () => { + const svc = new Service(); + svc.getUnitSection().setDescription("builder test"); + svc.getServiceSection() + .setType("notify-reload") + .setExecStart("/bin/true") + .setExecReload("/bin/reload") + .setExecReloadPost(["/bin/post"]) + .setRestartMode("debug"); + + expect(svc.toObject()).toMatchObject({ + Service: { + Type: "notify-reload", + ExecReloadPost: ["/bin/post"], + RestartMode: "debug", + }, + }); + }); + }); }); diff --git a/packages/conf/src/resource.ts b/packages/conf/src/resource.ts index 8db144e..da1adee 100644 --- a/packages/conf/src/resource.ts +++ b/packages/conf/src/resource.ts @@ -1,15 +1,13 @@ -import type { ZodType } from "zod"; import { z } from "zod"; import { implement } from "./utils.js"; type ResourceLimit = number | "infinity" | `${number}${"%" | "G" | "K" | "M" | "T"}`; /** - * @see https://manpages.ubuntu.com/manpages/noble/en/man5/systemd.resource-control.5.html + * @see https://manpages.ubuntu.com/manpages/resolute/man5/systemd.resource-control.5.html */ export interface ResourceSectionConfig { /** - CPU Accounting and Control CPUAccounting= Turn on CPU usage accounting for this unit. Takes a boolean argument. Note that turning on CPU accounting for one unit will also implicitly turn it on for all units @@ -51,12 +49,6 @@ export interface ResourceSectionConfig { to the startup and shutdown phases. Using StartupCPUWeight= allows prioritizing specific services at boot-up and shutdown differently than during normal runtime. - In addition to the resource allocation performed by the cpu controller, the kernel may - automatically divide resources based on session-id grouping, see "The autogroup - feature" in sched(7). The effect of this feature is similar to the cpu controller with - no explicit configuration, so users should be careful to not mistake one for the - other. - Added in version 232. */ CPUWeight?: number | "idle"; @@ -70,9 +62,8 @@ export interface ResourceSectionConfig { value, suffixed with "%". The percentage specifies how much CPU time the unit shall get at maximum, relative to the total CPU time available on one CPU. Use values > 100% for allotting CPU time on more than one CPU. This controls the "cpu.max" attribute on - the unified control group hierarchy and "cpu.cfs_quota_us" on legacy. For details - about these control group attributes, see Control Groups v2[2] and CFS Bandwidth - Control[4]. Setting CPUQuota= to an empty value unsets the quota. + the unified control group hierarchy and "cpu.cfs_quota_us" on legacy. Setting + CPUQuota= to an empty value unsets the quota. Example: CPUQuota=20% ensures that the executed processes will never get more than 20% CPU time on one CPU. @@ -92,98 +83,86 @@ export interface ResourceSectionConfig { is adjusted up so that the quota interval is also at least 1ms. Setting CPUQuotaPeriodSec= to an empty value resets it to the default. - This controls the second field of "cpu.max" attribute on the unified control group - hierarchy and "cpu.cfs_period_us" on legacy. For details about these control group - attributes, see Control Groups v2[2] and CFS Scheduler[3]. - - Example: CPUQuotaPeriodSec=10ms to request that the CPU quota is measured in periods - of 10ms. - Added in version 242. */ CPUQuotaPeriodSec?: number | string; /** AllowedCPUs=, StartupAllowedCPUs= - This setting controls the cpuset controller in the unified hierarchy. + This setting controls the cpuset controller in the unified hierarchy. - Restrict processes to be executed on specific CPUs. Takes a list of CPU indices or - ranges separated by either whitespace or commas. CPU ranges are specified by the lower - and upper CPU indices separated by a dash. + Restrict processes to be executed on specific CPUs. Takes a list of CPU indices or + ranges separated by either whitespace or commas. CPU ranges are specified by the lower + and upper CPU indices separated by a dash. - Setting AllowedCPUs= or StartupAllowedCPUs= doesn't guarantee that all of the CPUs - will be used by the processes as it may be limited by parent units. The effective - configuration is reported as EffectiveCPUs=. + Setting AllowedCPUs= or StartupAllowedCPUs= doesn't guarantee that all of the CPUs + will be used by the processes as it may be limited by parent units. The effective + configuration is reported as EffectiveCPUs=. - While StartupAllowedCPUs= applies to the startup and shutdown phases of the system, - AllowedCPUs= applies to normal runtime of the system, and if the former is not set - also to the startup and shutdown phases. Using StartupAllowedCPUs= allows prioritizing - specific services at boot-up and shutdown differently than during normal runtime. + While StartupAllowedCPUs= applies to the startup and shutdown phases of the system, + AllowedCPUs= applies to normal runtime of the system, and if the former is not set + also to the startup and shutdown phases. - This setting is supported only with the unified control group hierarchy. + This setting is supported only with the unified control group hierarchy. - Added in version 244. + Added in version 244. */ AllowedCPUs?: string; StartupAllowedCPUs?: string; /** - Memory Accounting and Control MemoryAccounting= - This setting controls the memory controller in the unified hierarchy. + This setting controls the memory controller in the unified hierarchy. - Turn on process and kernel memory accounting for this unit. Takes a boolean argument. - Note that turning on memory accounting for one unit will also implicitly turn it on - for all units contained in the same slice and for all its parent slices and the units - contained therein. The system default for this setting may be controlled with - DefaultMemoryAccounting= in systemd-system.conf(5). + Turn on process and kernel memory accounting for this unit. Takes a boolean argument. + Note that turning on memory accounting for one unit will also implicitly turn it on + for all units contained in the same slice and for all its parent slices and the units + contained therein. The system default for this setting may be controlled with + DefaultMemoryAccounting= in systemd-system.conf(5). - Added in version 208. + Added in version 208. */ MemoryAccounting?: boolean; /** MemoryMin=bytes, MemoryLow=bytes, StartupMemoryLow=bytes, DefaultStartupMemoryLow=bytes - These settings control the memory controller in the unified hierarchy. - - Specify the memory usage protection of the executed processes in this unit. When - reclaiming memory, the unit is treated as if it was using less memory resulting in - memory to be preferentially reclaimed from unprotected units. Using MemoryLow= results - in a weaker protection where memory may still be reclaimed to avoid invoking the OOM - killer in case there is no other reclaimable memory. - - For a protection to be effective, it is generally required to set a corresponding - allocation on all ancestors, which is then distributed between children (with the - exception of the root slice). Any MemoryMin= or MemoryLow= allocation that is not - explicitly distributed to specific children is used to create a shared protection for - all children. As this is a shared protection, the children will freely compete for the - memory. - - Takes a memory size in bytes. If the value is suffixed with K, M, G or T, the - specified memory size is parsed as Kilobytes, Megabytes, Gigabytes, or Terabytes (with - the base 1024), respectively. Alternatively, a percentage value may be specified, - which is taken relative to the installed physical memory on the system. If assigned - the special value "infinity", all available memory is protected, which may be useful - in order to always inherit all of the protection afforded by ancestors. This controls - the "memory.min" or "memory.low" control group attribute. For details about this - control group attribute, see Memory Interface Files[5]. - - Units may have their children use a default "memory.min" or "memory.low" value by - specifying DefaultMemoryMin= or DefaultMemoryLow=, which has the same semantics as - MemoryMin= and MemoryLow=, or DefaultStartupMemoryLow= which has the same semantics as - StartupMemoryLow=. This setting does not affect "memory.min" or "memory.low" in the - unit itself. Using it to set a default child allocation is only useful on kernels - older than 5.7, which do not support the "memory_recursiveprot" cgroup2 mount option. - - While StartupMemoryLow= applies to the startup and shutdown phases of the system, - MemoryMin= applies to normal runtime of the system, and if the former is not set also - to the startup and shutdown phases. Using StartupMemoryLow= allows prioritizing - specific services at boot-up and shutdown differently than during normal runtime. - - Added in version 240. + These settings control the memory controller in the unified hierarchy. + + Specify the memory usage protection of the executed processes in this unit. When + reclaiming memory, the unit is treated as if it was using less memory resulting in + memory to be preferentially reclaimed from unprotected units. Using MemoryLow= results + in a weaker protection where memory may still be reclaimed to avoid invoking the OOM + killer in case there is no other reclaimable memory. + + For a protection to be effective, it is generally required to set a corresponding + allocation on all ancestors, which is then distributed between children (with the + exception of the root slice). Any MemoryMin= or MemoryLow= allocation that is not + explicitly distributed to specific children is used to create a shared protection for + all children. + + Takes a memory size in bytes. If the value is suffixed with K, M, G or T, the + specified memory size is parsed as Kilobytes, Megabytes, Gigabytes, or Terabytes (with + the base 1024), respectively. Alternatively, a percentage value may be specified, + which is taken relative to the installed physical memory on the system. If assigned + the special value "infinity", all available memory is protected. This controls the + "memory.min" or "memory.low" control group attribute. + + Units may have their children use a default "memory.min" or "memory.low" value by + specifying DefaultMemoryMin= or DefaultMemoryLow=, which has the same semantics as + MemoryMin= and MemoryLow=, or DefaultStartupMemoryLow= which has the same semantics as + StartupMemoryLow=. This setting does not affect "memory.min" or "memory.low" in the + unit itself. Using it to set a default child allocation is only useful on kernels + older than 5.7, which do not support the "memory_recursiveprot" cgroup2 mount option. + + While StartupMemoryLow= applies to the startup and shutdown phases of the system, + MemoryMin= applies to normal runtime of the system. + + Added in version 240. */ MemoryMin?: ResourceLimit; + DefaultMemoryMin?: ResourceLimit; MemoryLow?: ResourceLimit; + DefaultMemoryLow?: ResourceLimit; StartupMemoryLow?: ResourceLimit; DefaultStartupMemoryLow?: ResourceLimit; @@ -201,13 +180,7 @@ export interface ResourceSectionConfig { the base 1024), respectively. Alternatively, a percentage value may be specified, which is taken relative to the installed physical memory on the system. If assigned the special value "infinity", no memory throttling is applied. This controls the - "memory.high" control group attribute. For details about this control group attribute, - see Memory Interface Files[5]. - - While StartupMemoryHigh= applies to the startup and shutdown phases of the system, - MemoryHigh= applies to normal runtime of the system, and if the former is not set also - to the startup and shutdown phases. Using StartupMemoryHigh= allows prioritizing - specific services at boot-up and shutdown differently than during normal runtime. + "memory.high" control group attribute. Added in version 231. */ @@ -216,27 +189,21 @@ export interface ResourceSectionConfig { /** MemoryMax=bytes, StartupMemoryMax=bytes - These settings control the memory controller in the unified hierarchy. - - Specify the absolute limit on memory usage of the executed processes in this unit. If - memory usage cannot be contained under the limit, out-of-memory killer is invoked - inside the unit. It is recommended to use MemoryHigh= as the main control mechanism - and use MemoryMax= as the last line of defense. - - Takes a memory size in bytes. If the value is suffixed with K, M, G or T, the - specified memory size is parsed as Kilobytes, Megabytes, Gigabytes, or Terabytes (with - the base 1024), respectively. Alternatively, a percentage value may be specified, - which is taken relative to the installed physical memory on the system. If assigned - the special value "infinity", no memory limit is applied. This controls the - "memory.max" control group attribute. For details about this control group attribute, - see Memory Interface Files[5]. - - While StartupMemoryMax= applies to the startup and shutdown phases of the system, - MemoryMax= applies to normal runtime of the system, and if the former is not set also - to the startup and shutdown phases. Using StartupMemoryMax= allows prioritizing - specific services at boot-up and shutdown differently than during normal runtime. - - Added in version 231. + These settings control the memory controller in the unified hierarchy. + + Specify the absolute limit on memory usage of the executed processes in this unit. If + memory usage cannot be contained under the limit, out-of-memory killer is invoked + inside the unit. It is recommended to use MemoryHigh= as the main control mechanism + and use MemoryMax= as the last line of defense. + + Takes a memory size in bytes. If the value is suffixed with K, M, G or T, the + specified memory size is parsed as Kilobytes, Megabytes, Gigabytes, or Terabytes (with + the base 1024), respectively. Alternatively, a percentage value may be specified, + which is taken relative to the installed physical memory on the system. If assigned + the special value "infinity", no memory limit is applied. This controls the + "memory.max" control group attribute. + + Added in version 231. */ MemoryMax?: ResourceLimit; StartupMemoryMax?: ResourceLimit; @@ -250,14 +217,7 @@ export interface ResourceSectionConfig { Takes a swap size in bytes. If the value is suffixed with K, M, G or T, the specified swap size is parsed as Kilobytes, Megabytes, Gigabytes, or Terabytes (with the base 1024), respectively. If assigned the special value "infinity", no swap limit is - applied. These settings control the "memory.swap.max" control group attribute. For - details about this control group attribute, see Memory Interface Files[5]. - - While StartupMemorySwapMax= applies to the startup and shutdown phases of the system, - MemorySwapMax= applies to normal runtime of the system, and if the former is not set - also to the startup and shutdown phases. Using StartupMemorySwapMax= allows - prioritizing specific services at boot-up and shutdown differently than during normal - runtime. + applied. These settings control the "memory.swap.max" control group attribute. Added in version 232. */ @@ -272,26 +232,31 @@ export interface ResourceSectionConfig { lightweight compressed cache for swap pages. It takes pages that are in the process of being swapped out and attempts to compress them into a dynamically allocated RAM-based memory pool. If the limit specified is hit, no entries from this unit will be stored - in the pool until existing entries are faulted back or written out to disk. See the - kernel's Zswap[6] documentation for more details. + in the pool until existing entries are faulted back or written out to disk. Takes a size in bytes. If the value is suffixed with K, M, G or T, the specified size is parsed as Kilobytes, Megabytes, Gigabytes, or Terabytes (with the base 1024), respectively. If assigned the special value "infinity", no limit is applied. These - settings control the "memory.zswap.max" control group attribute. For details about - this control group attribute, see Memory Interface Files[5]. - - While StartupMemoryZSwapMax= applies to the startup and shutdown phases of the system, - MemoryZSwapMax= applies to normal runtime of the system, and if the former is not set - also to the startup and shutdown phases. Using StartupMemoryZSwapMax= allows - prioritizing specific services at boot-up and shutdown differently than during normal - runtime. + settings control the "memory.zswap.max" control group attribute. Added in version 253. */ MemoryZSwapMax?: ResourceLimit; StartupMemoryZSwapMax?: ResourceLimit; + /** + MemoryZSwapWriteback= + This setting controls the memory controller in the unified hierarchy. + + Takes a boolean argument. When true, pages stored in the Zswap cache are permitted to + be written to the backing storage, false otherwise. Defaults to true. This allows + disabling writeback of swap pages for IO-intensive applications, while retaining the + ability to store compressed pages in Zswap. + + Added in version 256. + */ + MemoryZSwapWriteback?: boolean; + /** AllowedMemoryNodes=, StartupAllowedMemoryNodes= These settings control the cpuset controller in the unified hierarchy. @@ -305,12 +270,6 @@ export interface ResourceSectionConfig { of the memory NUMA nodes will be used by the processes as it may be limited by parent units. The effective configuration is reported as EffectiveMemoryNodes=. - While StartupAllowedMemoryNodes= applies to the startup and shutdown phases of the - system, AllowedMemoryNodes= applies to normal runtime of the system, and if the former - is not set also to the startup and shutdown phases. Using StartupAllowedMemoryNodes= - allows prioritizing specific services at boot-up and shutdown differently than during - normal runtime. - This setting is supported only with the unified control group hierarchy. Added in version 244. @@ -319,7 +278,6 @@ export interface ResourceSectionConfig { StartupAllowedMemoryNodes?: string; /** - Process Accounting and Control TasksAccounting= This setting controls the pids controller in the unified hierarchy. @@ -340,12 +298,11 @@ export interface ResourceSectionConfig { This setting controls the pids controller in the unified hierarchy. Specify the maximum number of tasks that may be created in the unit. This ensures that - the number of tasks accounted for the unit (see above) stays below a specific limit. - This either takes an absolute number of tasks or a percentage value that is taken - relative to the configured maximum number of tasks on the system. If assigned the - special value "infinity", no tasks limit is applied. This controls the "pids.max" - control group attribute. For details about this control group attribute, the pids - controller[7]. + the number of tasks accounted for the unit stays below a specific limit. This either + takes an absolute number of tasks or a percentage value that is taken relative to the + configured maximum number of tasks on the system. If assigned the special value + "infinity", no tasks limit is applied. This controls the "pids.max" control group + attribute. The system default for this setting may be controlled with DefaultTasksMax= in systemd-system.conf(5). @@ -355,7 +312,6 @@ export interface ResourceSectionConfig { TasksMax?: number | "infinity" | `${number}%`; /** - IO Accounting and Control IOAccounting= This setting controls the io controller in the unified hierarchy. @@ -363,8 +319,8 @@ export interface ResourceSectionConfig { used on the system. Takes a boolean argument. Note that turning on block I/O accounting for one unit will also implicitly turn it on for all units contained in the same slice and all for its parent slices and the units contained therein. The system - default for this setting may be controlled with DefaultIOAccounting= in systemd- - system.conf(5). + default for this setting may be controlled with DefaultIOAccounting= in + systemd-system.conf(5). Added in version 230. */ @@ -372,704 +328,390 @@ export interface ResourceSectionConfig { /** IOWeight=weight, StartupIOWeight=weight - These settings control the io controller in the unified hierarchy. - - Set the default overall block I/O weight for the executed processes, if the unified - control group hierarchy is used on the system. Takes a single weight value (between 1 - and 10000) to set the default block I/O weight. This controls the "io.weight" control - group attribute, which defaults to 100. For details about this control group - attribute, see IO Interface Files[8]. The available I/O bandwidth is split up among - all units within one slice relative to their block I/O weight. A higher weight means - more I/O bandwidth, a lower weight means less. - - While StartupIOWeight= applies to the startup and shutdown phases of the system, - IOWeight= applies to the later runtime of the system, and if the former is not set - also to the startup and shutdown phases. This allows prioritizing specific services at - boot-up and shutdown differently than during runtime. - - Added in version 230. + These settings control the io controller in the unified hierarchy. + + Set the default overall block I/O weight for the executed processes, if the unified + control group hierarchy is used on the system. Takes a single weight value (between 1 + and 10000) to set the default block I/O weight. This controls the "io.weight" control + group attribute, which defaults to 100. The available I/O bandwidth is split up among + all units within one slice relative to their block I/O weight. A higher weight means + more I/O bandwidth, a lower weight means less. + + While StartupIOWeight= applies to the startup and shutdown phases of the system, + IOWeight= applies to the later runtime of the system. + + Added in version 230. */ IOWeight?: number; StartupIOWeight?: number; /** IODeviceWeight=device weight - This setting controls the io controller in the unified hierarchy. - - Set the per-device overall block I/O weight for the executed processes, if the unified - control group hierarchy is used on the system. Takes a space-separated pair of a file - path and a weight value to specify the device specific weight value, between 1 and - 10000. (Example: "/dev/sda 1000"). The file path may be specified as path to a block - device node or as any other file, in which case the backing block device of the file - system of the file is determined. This controls the "io.weight" control group - attribute, which defaults to 100. Use this option multiple times to set weights for - multiple devices. For details about this control group attribute, see IO Interface - Files[8]. - - The specified device node should reference a block device that has an I/O scheduler - associated, i.e. should not refer to partition or loopback block devices, but to the - originating, physical device. When a path to a regular file or directory is specified - it is attempted to discover the correct originating device backing the file system of - the specified path. This works correctly only for simpler cases, where the file system - is directly placed on a partition or physical block device, or where simple 1:1 - encryption using dm-crypt/LUKS is used. This discovery does not cover complex storage - and in particular RAID and volume management storage devices. - - Added in version 230. + This setting controls the io controller in the unified hierarchy. + + Set the per-device overall block I/O weight for the executed processes, if the unified + control group hierarchy is used on the system. Takes a space-separated pair of a file + path and a weight value to specify the device specific weight value, between 1 and + 10000. (Example: "/dev/sda 1000"). The file path may be specified as path to a block + device node or as any other file, in which case the backing block device of the file + system of the file is determined. This controls the "io.weight" control group + attribute, which defaults to 100. Use this option multiple times to set weights for + multiple devices. + + Added in version 230. + */ + IODeviceWeight?: string | string[]; + /** IOReadBandwidthMax=device bytes, IOWriteBandwidthMax=device bytes - These settings control the io controller in the unified hierarchy. - - Set the per-device overall block I/O bandwidth maximum limit for the executed - processes, if the unified control group hierarchy is used on the system. This limit is - not work-conserving and the executed processes are not allowed to use more even if the - device has idle capacity. Takes a space-separated pair of a file path and a bandwidth - value (in bytes per second) to specify the device specific bandwidth. The file path - may be a path to a block device node, or as any other file in which case the backing - block device of the file system of the file is used. If the bandwidth is suffixed with - K, M, G, or T, the specified bandwidth is parsed as Kilobytes, Megabytes, Gigabytes, - or Terabytes, respectively, to the base of 1000. (Example: - "/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 5M"). This controls the "io.max" - control group attributes. Use this option multiple times to set bandwidth limits for - multiple devices. For details about this control group attribute, see IO Interface - Files[8]. - - Similar restrictions on block device discovery as for IODeviceWeight= apply, see - above. - - Added in version 230. + These settings control the io controller in the unified hierarchy. + + Set the per-device overall block I/O bandwidth maximum limit for the executed + processes, if the unified control group hierarchy is used on the system. This limit is + not work-conserving and the executed processes are not allowed to use more even if the + device has idle capacity. Takes a space-separated pair of a file path and a bandwidth + value (in bytes per second) to specify the device specific bandwidth. The file path + may be a path to a block device node, or as any other file in which case the backing + block device of the file system of the file is used. If the bandwidth is suffixed with + K, M, G, or T, the specified bandwidth is parsed as Kilobytes, Megabytes, Gigabytes, + or Terabytes, respectively, to the base of 1000. (Example: + "/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 5M"). This controls the "io.max" + control group attributes. Use this option multiple times to set bandwidth limits for + multiple devices. + + Added in version 230. + */ + IOReadBandwidthMax?: string | string[]; + IOWriteBandwidthMax?: string | string[]; + /** IOReadIOPSMax=device IOPS, IOWriteIOPSMax=device IOPS - These settings control the io controller in the unified hierarchy. - - Set the per-device overall block I/O IOs-Per-Second maximum limit for the executed - processes, if the unified control group hierarchy is used on the system. This limit is - not work-conserving and the executed processes are not allowed to use more even if the - device has idle capacity. Takes a space-separated pair of a file path and an IOPS - value to specify the device specific IOPS. The file path may be a path to a block - device node, or as any other file in which case the backing block device of the file - system of the file is used. If the IOPS is suffixed with K, M, G, or T, the specified - IOPS is parsed as KiloIOPS, MegaIOPS, GigaIOPS, or TeraIOPS, respectively, to the base - of 1000. (Example: "/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 1K"). This - controls the "io.max" control group attributes. Use this option multiple times to set - IOPS limits for multiple devices. For details about this control group attribute, see - IO Interface Files[8]. - - Similar restrictions on block device discovery as for IODeviceWeight= apply, see - above. - - Added in version 230. + These settings control the io controller in the unified hierarchy. + + Set the per-device overall block I/O IOs-Per-Second maximum limit for the executed + processes, if the unified control group hierarchy is used on the system. This limit is + not work-conserving and the executed processes are not allowed to use more even if the + device has idle capacity. Takes a space-separated pair of a file path and an IOPS + value to specify the device specific IOPS. The file path may be a path to a block + device node, or as any other file in which case the backing block device of the file + system of the file is used. If the IOPS is suffixed with K, M, G, or T, the specified + IOPS is parsed as KiloIOPS, MegaIOPS, GigaIOPS, or TeraIOPS, respectively, to the base + of 1000. (Example: "/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 1K"). This + controls the "io.max" control group attributes. Use this option multiple times to set + IOPS limits for multiple devices. + + Added in version 230. + */ + IOReadIOPSMax?: string | string[]; + IOWriteIOPSMax?: string | string[]; + /** IODeviceLatencyTargetSec=device target - This setting controls the io controller in the unified hierarchy. + This setting controls the io controller in the unified hierarchy. - Set the per-device average target I/O latency for the executed processes, if the - unified control group hierarchy is used on the system. Takes a file path and a - timespan separated by a space to specify the device specific latency target. (Example: - "/dev/sda 25ms"). The file path may be specified as path to a block device node or as - any other file, in which case the backing block device of the file system of the file - is determined. This controls the "io.latency" control group attribute. Use this option - multiple times to set latency target for multiple devices. For details about this - control group attribute, see IO Interface Files[8]. + Set the per-device average target I/O latency for the executed processes, if the + unified control group hierarchy is used on the system. Takes a file path and a + timespan separated by a space to specify the device specific latency target. (Example: + "/dev/sda 25ms"). The file path may be specified as path to a block device node or as + any other file, in which case the backing block device of the file system of the file + is determined. This controls the "io.latency" control group attribute. Use this option + multiple times to set latency target for multiple devices. - Implies "IOAccounting=yes". + Implies "IOAccounting=yes". - These settings are supported only if the unified control group hierarchy is used. + Added in version 240. + */ + IODeviceLatencyTargetSec?: string | string[]; - Similar restrictions on block device discovery as for IODeviceWeight= apply, see - above. + /** + IPAccounting= + Takes a boolean argument. If true, turns on IPv4 and IPv6 network traffic accounting + for packets sent or received by the unit. When this option is turned on, all IPv4 and + IPv6 sockets created by any process of the unit are accounted for. - Added in version 240. + The system default for this setting may be controlled with DefaultIPAccounting= in + systemd-system.conf(5). -Network Accounting and Control - IPAccounting= - Takes a boolean argument. If true, turns on IPv4 and IPv6 network traffic accounting - for packets sent or received by the unit. When this option is turned on, all IPv4 and - IPv6 sockets created by any process of the unit are accounted for. + Added in version 235. + */ + IPAccounting?: boolean; + + /** + IPAddressAllow=ADDRESS[/PREFIXLENGTH]..., IPAddressDeny=ADDRESS[/PREFIXLENGTH]... + Turn on network traffic filtering for IP packets sent and received over AF_INET and + AF_INET6 sockets. Both directives take a space separated list of IPv4 or IPv6 + addresses, each optionally suffixed with an address prefix length in bits after a "/" + character. If the suffix is omitted, the address is considered a host address. - When this option is used in socket units, it applies to all IPv4 and IPv6 sockets - associated with it (including both listening and connection sockets where this - applies). Note that for socket-activated services, this configuration setting and the - accounting data of the service unit and the socket unit are kept separate, and - displayed separately. No propagation of the setting and the collected statistics is - done, in either direction. Moreover, any traffic sent or received on any of the socket - unit's sockets is accounted to the socket unit — and never to the service unit it - might have activated, even if the socket is used by it. + The access lists configured with this option are applied to all sockets created by + processes of this unit (or in the case of socket units, associated with it). The lists + are implicitly combined with any lists configured for any of the parent slice units + this unit might be a member of. Both ingress and egress traffic is filtered by these + settings. - The system default for this setting may be controlled with DefaultIPAccounting= in - systemd-system.conf(5). + In place of explicit IPv4 or IPv6 address and prefix length specifications a small set + of symbolic names may be used: "any", "localhost", "link-local", "multicast". - Added in version 235. + If these settings are used multiple times in the same unit the specified lists are + combined. If an empty string is assigned to these settings the specific access list is + reset and all previous settings undone. - IPAddressAllow=ADDRESS[/PREFIXLENGTH]..., IPAddressDeny=ADDRESS[/PREFIXLENGTH]... - Turn on network traffic filtering for IP packets sent and received over AF_INET and - AF_INET6 sockets. Both directives take a space separated list of IPv4 or IPv6 - addresses, each optionally suffixed with an address prefix length in bits after a "/" - character. If the suffix is omitted, the address is considered a host address, i.e. - the filter covers the whole address (32 bits for IPv4, 128 bits for IPv6). - - The access lists configured with this option are applied to all sockets created by - processes of this unit (or in the case of socket units, associated with it). The lists - are implicitly combined with any lists configured for any of the parent slice units - this unit might be a member of. By default both access lists are empty. Both ingress - and egress traffic is filtered by these settings. In case of ingress traffic the - source IP address is checked against these access lists, in case of egress traffic the - destination IP address is checked. The following rules are applied in turn: - - • Access is granted when the checked IP address matches an entry in the - IPAddressAllow= list. - - • Otherwise, access is denied when the checked IP address matches an entry in the - IPAddressDeny= list. - - • Otherwise, access is granted. - - In order to implement an allow-listing IP firewall, it is recommended to use a - IPAddressDeny=any setting on an upper-level slice unit (such as the root slice -.slice - or the slice containing all system services system.slice – see systemd.special(7) for - details on these slice units), plus individual per-service IPAddressAllow= lines - permitting network access to relevant services, and only them. - - Note that for socket-activated services, the IP access list configured on the socket - unit applies to all sockets associated with it directly, but not to any sockets - created by the ultimately activated services for it. Conversely, the IP access list - configured for the service is not applied to any sockets passed into the service via - socket activation. Thus, it is usually a good idea to replicate the IP access lists on - both the socket and the service unit. Nevertheless, it may make sense to maintain one - list more open and the other one more restricted, depending on the use case. - - If these settings are used multiple times in the same unit the specified lists are - combined. If an empty string is assigned to these settings the specific access list is - reset and all previous settings undone. - - In place of explicit IPv4 or IPv6 address and prefix length specifications a small set - of symbolic names may be used. The following names are defined: - - Table 1. Special address/network names - ┌──────────────┬──────────────────────────┬──────────────────────┐ - │Symbolic Name │ Definition │ Meaning │ - ├──────────────┼──────────────────────────┼──────────────────────┤ - │any │ 0.0.0.0/0 ::/0 │ Any host │ - ├──────────────┼──────────────────────────┼──────────────────────┤ - │localhost │ 127.0.0.0/8 ::1/128 │ All addresses on the │ - │ │ │ local loopback │ - ├──────────────┼──────────────────────────┼──────────────────────┤ - │link-local │ 169.254.0.0/16 fe80::/64 │ All link-local IP │ - │ │ │ addresses │ - ├──────────────┼──────────────────────────┼──────────────────────┤ - │multicast │ 224.0.0.0/4 ff00::/8 │ All IP multicasting │ - │ │ │ addresses │ - └──────────────┴──────────────────────────┴──────────────────────┘ - Note that these settings might not be supported on some systems (for example if eBPF - control group support is not enabled in the underlying kernel or container manager). - These settings will have no effect in that case. If compatibility with such systems is - desired it is hence recommended to not exclusively rely on them for IP security. - - This option cannot be bypassed by prefixing "+" to the executable path in the service - unit, as it applies to the whole control group. - - Added in version 235. + Added in version 235. + */ + IPAddressAllow?: string | string[]; + IPAddressDeny?: string | string[]; + /** SocketBindAllow=bind-rule, SocketBindDeny=bind-rule - Allow or deny binding a socket address to a socket by matching it with the bind-rule - and applying a corresponding action if there is a match. + Allow or deny binding a socket address to a socket by matching it with the bind-rule + and applying a corresponding action if there is a match. - bind-rule describes socket properties such as address-family, transport-protocol and - ip-ports. + bind-rule describes socket properties such as address-family, transport-protocol and + ip-ports. bind-rule := { [address-family:][transport-protocol:][ip-ports] | any } - address-family := { ipv4 | ipv6 } - transport-protocol := { tcp | udp } - ip-ports := { ip-port | ip-port-range } - An optional address-family expects ipv4 or ipv6 values. If not specified, a rule will - be matched for both IPv4 and IPv6 addresses and applied depending on other socket - fields, e.g. transport-protocol, ip-port. - - An optional transport-protocol expects tcp or udp transport protocol names. If not - specified, a rule will be matched for any transport protocol. - - An optional ip-port value must lie within 1...65535 interval inclusively, i.e. dynamic - port 0 is not allowed. A range of sequential ports is described by ip-port-range := - ip-port-low-ip-port-high, where ip-port-low is smaller than or equal to ip-port-high - and both are within 1...65535 inclusively. - - A special value any can be used to apply a rule to any address family, transport - protocol and any port with a positive value. - - To allow multiple rules assign SocketBindAllow= or SocketBindDeny= multiple times. To - clear the existing assignments pass an empty SocketBindAllow= or SocketBindDeny= - assignment. - - For each of SocketBindAllow= and SocketBindDeny=, maximum allowed number of - assignments is 128. - - • Binding to a socket is allowed when a socket address matches an entry in the - SocketBindAllow= list. - - • Otherwise, binding is denied when the socket address matches an entry in the - SocketBindDeny= list. - - • Otherwise, binding is allowed. - - The feature is implemented with cgroup/bind4 and cgroup/bind6 cgroup-bpf hooks. - - Examples: - - ... - # Allow binding IPv6 socket addresses with a port greater than or equal to 10000. - [Service] - SocketBindAllow=ipv6:10000-65535 - SocketBindDeny=any - ... - # Allow binding IPv4 and IPv6 socket addresses with 1234 and 4321 ports. - [Service] - SocketBindAllow=1234 - SocketBindAllow=4321 - SocketBindDeny=any - ... - # Deny binding IPv6 socket addresses. - [Service] - SocketBindDeny=ipv6 - ... - # Deny binding IPv4 and IPv6 socket addresses. - [Service] - SocketBindDeny=any - ... - # Allow binding only over TCP - [Service] - SocketBindAllow=tcp - SocketBindDeny=any - ... - # Allow binding only over IPv6/TCP - [Service] - SocketBindAllow=ipv6:tcp - SocketBindDeny=any - ... - # Allow binding ports within 10000-65535 range over IPv4/UDP. - [Service] - SocketBindAllow=ipv4:udp:10000-65535 - SocketBindDeny=any - ... - - This option cannot be bypassed by prefixing "+" to the executable path in the service - unit, as it applies to the whole control group. - - Added in version 249. - - RestrictNetworkInterfaces= - Takes a list of space-separated network interface names. This option restricts the - network interfaces that processes of this unit can use. By default processes can only - use the network interfaces listed (allow-list). If the first character of the rule is - "~", the effect is inverted: the processes can only use network interfaces not listed - (deny-list). - - This option can appear multiple times, in which case the network interface names are - merged. If the empty string is assigned the set is reset, all prior assignments will - have not effect. - - If you specify both types of this option (i.e. allow-listing and deny-listing), the - first encountered will take precedence and will dictate the default action (allow vs - deny). Then the next occurrences of this option will add or delete the listed network - interface names from the set, depending of its type and the default action. - - The loopback interface ("lo") is not treated in any special way, you have to configure - it explicitly in the unit file. - - Example 1: allow-list - - RestrictNetworkInterfaces=eth1 - RestrictNetworkInterfaces=eth2 + To allow multiple rules assign SocketBindAllow= or SocketBindDeny= multiple times. To + clear the existing assignments pass an empty SocketBindAllow= or SocketBindDeny= + assignment. For each of SocketBindAllow= and SocketBindDeny=, maximum allowed number + of assignments is 128. - Programs in the unit will be only able to use the eth1 and eth2 network interfaces. - - Example 2: deny-list - - RestrictNetworkInterfaces=~eth1 eth2 - - Programs in the unit will be able to use any network interface but eth1 and eth2. - - Example 3: mixed + Added in version 249. + */ + SocketBindAllow?: string | string[]; + SocketBindDeny?: string | string[]; - RestrictNetworkInterfaces=eth1 eth2 - RestrictNetworkInterfaces=~eth1 + /** + RestrictNetworkInterfaces= + Takes a list of space-separated network interface names. This option restricts the + network interfaces that processes of this unit can use. By default processes can only + use the network interfaces listed (allow-list). If the first character of the rule is + "~", the effect is inverted: the processes can only use network interfaces not listed + (deny-list). - Programs in the unit will be only able to use the eth2 network interface. + This option can appear multiple times, in which case the network interface names are + merged. If the empty string is assigned the set is reset, all prior assignments will + have not effect. - This option cannot be bypassed by prefixing "+" to the executable path in the service - unit, as it applies to the whole control group. + The loopback interface ("lo") is not treated in any special way, you have to configure + it explicitly in the unit file. - Added in version 250. + Added in version 250. + */ + RestrictNetworkInterfaces?: string | string[]; + /** NFTSet=family:table:set - This setting provides a method for integrating dynamic cgroup, user and group IDs into - firewall rules with NFT[9] sets. The benefit of using this setting is to be able to - use the IDs as selectors in firewall rules easily and this in turn allows more fine - grained filtering. NFT rules for cgroup matching use numeric cgroup IDs, which change - every time a service is restarted, making them hard to use in systemd environment - otherwise. Dynamic and random IDs used by DynamicUser= can be also integrated with - this setting. - - This option expects a whitespace separated list of NFT set definitions. Each - definition consists of a colon-separated tuple of source type (one of "cgroup", "user" - or "group"), NFT address family (one of "arp", "bridge", "inet", "ip", "ip6", or - "netdev"), table name and set name. The names of tables and sets must conform to - lexical restrictions of NFT table names. The type of the element used in the NFT - filter must match the type implied by the directive ("cgroup", "user" or "group") as - shown in the table below. When a control group or a unit is realized, the - corresponding ID will be appended to the NFT sets and it will be be removed when the - control group or unit is removed. systemd only inserts elements to (or removes from) - the sets, so the related NFT rules, tables and sets must be prepared elsewhere in - advance. Failures to manage the sets will be ignored. - - Table 2. Defined source type values - ┌────────────┬──────────────────┬────────────────────────┐ - │Source type │ Description │ Corresponding NFT type │ - │ │ │ name │ - ├────────────┼──────────────────┼────────────────────────┤ - │"cgroup" │ control group ID │ "cgroupsv2" │ - ├────────────┼──────────────────┼────────────────────────┤ - │"user" │ user ID │ "meta skuid" │ - ├────────────┼──────────────────┼────────────────────────┤ - │"group" │ group ID │ "meta skgid" │ - └────────────┴──────────────────┴────────────────────────┘ - If the firewall rules are reinstalled so that the contents of NFT sets are destroyed, - command systemctl daemon-reload can be used to refill the sets. - - Example: - - [Unit] - NFTSet=cgroup:inet:filter:my_service user:inet:filter:serviceuser - - Corresponding NFT rules: - - table inet filter { - set my_service { - type cgroupsv2 - } - set serviceuser { - typeof meta skuid - } - chain x { - socket cgroupv2 level 2 @my_service accept - drop - } - chain y { - meta skuid @serviceuser accept - drop - } - } - - Added in version 255. - -BPF Programs - IPIngressFilterPath=BPF_FS_PROGRAM_PATH, IPEgressFilterPath=BPF_FS_PROGRAM_PATH - Add custom network traffic filters implemented as BPF programs, applying to all IP - packets sent and received over AF_INET and AF_INET6 sockets. Takes an absolute path to - a pinned BPF program in the BPF virtual filesystem (/sys/fs/bpf/). - - The filters configured with this option are applied to all sockets created by - processes of this unit (or in the case of socket units, associated with it). The - filters are loaded in addition to filters any of the parent slice units this unit - might be a member of as well as any IPAddressAllow= and IPAddressDeny= filters in any - of these units. By default there are no filters specified. - - If these settings are used multiple times in the same unit all the specified programs - are attached. If an empty string is assigned to these settings the program list is - reset and all previous specified programs ignored. - - If the path BPF_FS_PROGRAM_PATH in IPIngressFilterPath= assignment is already being - handled by BPFProgram= ingress hook, e.g. BPFProgram=ingress:BPF_FS_PROGRAM_PATH, the - assignment will be still considered valid and the program will be attached to a - cgroup. Same for IPEgressFilterPath= path and egress hook. - - Note that for socket-activated services, the IP filter programs configured on the - socket unit apply to all sockets associated with it directly, but not to any sockets - created by the ultimately activated services for it. Conversely, the IP filter - programs configured for the service are not applied to any sockets passed into the - service via socket activation. Thus, it is usually a good idea, to replicate the IP - filter programs on both the socket and the service unit, however it often makes sense - to maintain one configuration more open and the other one more restricted, depending - on the use case. - - Note that these settings might not be supported on some systems (for example if eBPF - control group support is not enabled in the underlying kernel or container manager). - These settings will fail the service in that case. If compatibility with such systems - is desired it is hence recommended to attach your filter manually (requires - Delegate=yes) instead of using this setting. - - Added in version 243. + This setting provides a method for integrating dynamic cgroup, user and group IDs into + firewall rules with NFT sets. The benefit of using this setting is to be able to use + the IDs as selectors in firewall rules easily and this in turn allows more fine + grained filtering. - BPFProgram=type:program-path - BPFProgram= allows attaching custom BPF programs to the cgroup of a unit. (This - generalizes the functionality exposed via IPEgressFilterPath= and IPIngressFilterPath= - for other hooks.) Cgroup-bpf hooks in the form of BPF programs loaded to the BPF - filesystem are attached with cgroup-bpf attach flags determined by the unit. For - details about attachment types and flags see bpf.h[10]. Also refer to the general BPF - documentation[11]. + This option expects a whitespace separated list of NFT set definitions. Each + definition consists of a colon-separated tuple of source type (one of "cgroup", "user" + or "group"), NFT address family (one of "arp", "bridge", "inet", "ip", "ip6", or + "netdev"), table name and set name. - The specification of BPF program consists of a pair of BPF program type and program - path in the file system, with ":" as the separator: type:program-path. + Added in version 255. + */ + NFTSet?: string | string[]; - The BPF program type is equivalent to the BPF attach type used in bpftool(8) It may be - one of egress, ingress, sock_create, sock_ops, device, bind4, bind6, connect4, - connect6, post_bind4, post_bind6, sendmsg4, sendmsg6, sysctl, recvmsg4, recvmsg6, - getsockopt, or setsockopt. + /** + IPIngressFilterPath=BPF_FS_PROGRAM_PATH, IPEgressFilterPath=BPF_FS_PROGRAM_PATH + Add custom network traffic filters implemented as BPF programs, applying to all IP + packets sent and received over AF_INET and AF_INET6 sockets. Takes an absolute path to + a pinned BPF program in the BPF virtual filesystem (/sys/fs/bpf/). - The specified program path must be an absolute path referencing a BPF program inode in - the bpffs file system (which generally means it must begin with /sys/fs/bpf/). If a - specified program does not exist (i.e. has not been uploaded to the BPF subsystem of - the kernel yet), it will not be installed but unit activation will continue (a warning - will be printed to the logs). + The filters configured with this option are applied to all sockets created by + processes of this unit (or in the case of socket units, associated with it). The + filters are loaded in addition to filters any of the parent slice units this unit + might be a member of as well as any IPAddressAllow= and IPAddressDeny= filters in any + of these units. - Setting BPFProgram= to an empty value makes previous assignments ineffective. + If these settings are used multiple times in the same unit all the specified programs + are attached. If an empty string is assigned to these settings the program list is + reset and all previous specified programs ignored. - Multiple assignments of the same program type/path pair have the same effect as a - single assignment: the program will be attached just once. + Added in version 243. + */ + IPIngressFilterPath?: string | string[]; + IPEgressFilterPath?: string | string[]; - If BPF egress pinned to program-path path is already being handled by - IPEgressFilterPath=, BPFProgram= assignment will be considered valid and BPFProgram= - will be attached to a cgroup. Similarly for ingress hook and IPIngressFilterPath= - assignment. + /** + BPFProgram=type:program-path + BPFProgram= allows attaching custom BPF programs to the cgroup of a unit. (This + generalizes the functionality exposed via IPEgressFilterPath= and IPIngressFilterPath= + for other hooks.) - BPF programs passed with BPFProgram= are attached to the cgroup of a unit with BPF - attach flag multi, that allows further attachments of the same type within cgroup - hierarchy topped by the unit cgroup. + The specification of BPF program consists of a pair of BPF program type and program + path in the file system, with ":" as the separator: type:program-path. - Examples: + The BPF program type may be one of egress, ingress, sock_create, sock_ops, device, + bind4, bind6, connect4, connect6, post_bind4, post_bind6, sendmsg4, sendmsg6, sysctl, + recvmsg4, recvmsg6, getsockopt, or setsockopt. - BPFProgram=egress:/sys/fs/bpf/egress-hook - BPFProgram=bind6:/sys/fs/bpf/sock-addr-hook + Setting BPFProgram= to an empty value makes previous assignments ineffective. + Multiple assignments of the same program type/path pair have the same effect as a + single assignment. - Added in version 249. + Added in version 249. + */ + BPFProgram?: string | string[]; -Device Access + /** DeviceAllow= - Control access to specific device nodes by the executed processes. Takes two - space-separated strings: a device node specifier followed by a combination of r, w, m - to control reading, writing, or creation of the specific device nodes by the unit - (mknod), respectively. This functionality is implemented using eBPF filtering. - - When access to all physical devices should be disallowed, PrivateDevices= may be used - instead. See systemd.exec(5). - - The device node specifier is either a path to a device node in the file system, - starting with /dev/, or a string starting with either "char-" or "block-" followed by - a device group name, as listed in /proc/devices. The latter is useful to allow-list - all current and future devices belonging to a specific device group at once. The - device group is matched according to filename globbing rules, you may hence use the - "*" and "?" wildcards. (Note that such globbing wildcards are not available for - device node path specifications!) In order to match device nodes by numeric - major/minor, use device node paths in the /dev/char/ and /dev/block/ directories. - However, matching devices by major/minor is generally not recommended as assignments - are neither stable nor portable between systems or different kernel versions. - - Examples: /dev/sda5 is a path to a device node, referring to an ATA or SCSI block - device. "char-pts" and "char-alsa" are specifiers for all pseudo TTYs and all ALSA - sound devices, respectively. "char-cpu/*" is a specifier matching all CPU related - device groups. - - Note that allow lists defined this way should only reference device groups which are - resolvable at the time the unit is started. Any device groups not resolvable then are - not added to the device allow list. In order to work around this limitation, consider - extending service units with a pair of After=modprobe@xyz.service and - Wants=modprobe@xyz.service lines that load the necessary kernel module implementing - the device group if missing. Example: - - ... - [Unit] - Wants=modprobe@loop.service - After=modprobe@loop.service - - [Service] - DeviceAllow=block-loop - DeviceAllow=/dev/loop-control - ... - - This option cannot be bypassed by prefixing "+" to the executable path in the service - unit, as it applies to the whole control group. - - Added in version 208. + Control access to specific device nodes by the executed processes. Takes two + space-separated strings: a device node specifier followed by a combination of r, w, m + to control reading, writing, or creation of the specific device nodes by the unit + (mknod), respectively. This functionality is implemented using eBPF filtering. + + The device node specifier is either a path to a device node in the file system, + starting with /dev/, or a string starting with either "char-" or "block-" followed by + a device group name, as listed in /proc/devices. The latter is useful to allow-list + all current and future devices belonging to a specific device group at once. The + device group is matched according to filename globbing rules, you may hence use the + "*" and "?" wildcards. - DevicePolicy=auto|closed|strict - Control the policy for allowing device access: - - strict - means to only allow types of access that are explicitly specified. - - Added in version 208. - - closed - in addition, allows access to standard pseudo devices including /dev/null, - /dev/zero, /dev/full, /dev/random, and /dev/urandom. + Added in version 208. + */ + DeviceAllow?: string | string[]; - Added in version 208. + /** + DevicePolicy=auto|closed|strict + Control the policy for allowing device access: - auto - in addition, allows access to all devices if no explicit DeviceAllow= is present. - This is the default. + strict + means to only allow types of access that are explicitly specified. - Added in version 208. + closed + in addition, allows access to standard pseudo devices including /dev/null, + /dev/zero, /dev/full, /dev/random, and /dev/urandom. - This option cannot be bypassed by prefixing "+" to the executable path in the service - unit, as it applies to the whole control group. + auto + in addition, allows access to all devices if no explicit DeviceAllow= is present. + This is the default. - Added in version 208. + Added in version 208. + */ + DevicePolicy?: "auto" | "closed" | "strict"; -Control Group Management + /** Slice= - The name of the slice unit to place the unit in. Defaults to system.slice for all - non-instantiated units of all unit types (except for slice units themselves see - below). Instance units are by default placed in a subslice of system.slice that is - named after the template name. + The name of the slice unit to place the unit in. Defaults to system.slice for all + non-instantiated units of all unit types (except for slice units themselves see + below). Instance units are by default placed in a subslice of system.slice that is + named after the template name. - This option may be used to arrange systemd units in a hierarchy of slices each of - which might have resource settings applied. + For units of type slice, the only accepted value for this setting is the parent slice. + Since the name of a slice unit implies the parent slice, it is hence redundant to ever + set this parameter directly for slice units. - For units of type slice, the only accepted value for this setting is the parent slice. - Since the name of a slice unit implies the parent slice, it is hence redundant to ever - set this parameter directly for slice units. + Added in version 208. + */ + Slice?: string; - Special care should be taken when relying on the default slice assignment in templated - service units that have DefaultDependencies=no set, see systemd.service(5), section - "Default Dependencies" for details. + /** + Delegate= + Turns on delegation of further resource control partitioning to processes of the unit. + Units where this is enabled may create and manage their own private subhierarchy of + control groups below the control group of the unit itself. - Added in version 208. + Takes either a boolean argument or a (possibly empty) list of control group controller + names. If true, delegation is turned on, and all supported controllers are enabled for + the unit, making them available to the unit's processes for management. If false, + delegation is turned off entirely. If set to a list of controllers, delegation is + turned on, and the specified controllers are enabled for the unit. Defaults to false. - Delegate= - Turns on delegation of further resource control partitioning to processes of the unit. - Units where this is enabled may create and manage their own private subhierarchy of - control groups below the control group of the unit itself. For unprivileged services - (i.e. those using the User= setting) the unit's control group will be made accessible - to the relevant user. - - When enabled the service manager will refrain from manipulating control groups or - moving processes below the unit's control group, so that a clear concept of ownership - is established: the control group tree at the level of the unit's control group and - above (i.e. towards the root control group) is owned and managed by the service - manager of the host, while the control group tree below the unit's control group is - owned and managed by the unit itself. - - Takes either a boolean argument or a (possibly empty) list of control group controller - names. If true, delegation is turned on, and all supported controllers are enabled for - the unit, making them available to the unit's processes for management. If false, - delegation is turned off entirely (and no additional controllers are enabled). If set - to a list of controllers, delegation is turned on, and the specified controllers are - enabled for the unit. Assigning the empty string will enable delegation, but reset the - list of controllers, and all assignments prior to this will have no effect. Note that - additional controllers other than the ones specified might be made available as well, - depending on configuration of the containing slice unit or other units contained in - it. Defaults to false. - - Note that controller delegation to less privileged code is only safe on the unified - control group hierarchy. Accordingly, access to the specified controllers will not be - granted to unprivileged services on the legacy hierarchy, even when requested. - - The following controller names may be specified: cpu, cpuacct, cpuset, io, blkio, - memory, devices, pids, bpf-firewall, and bpf-devices. - - Not all of these controllers are available on all kernels however, and some are - specific to the unified hierarchy while others are specific to the legacy hierarchy. - Also note that the kernel might support further controllers, which aren't covered here - yet as delegation is either not supported at all for them or not defined cleanly. - - Note that because of the hierarchical nature of cgroup hierarchy, any controllers that - are delegated will be enabled for the parent and sibling units of the unit with - delegation. - - For further details on the delegation model consult Control Group APIs and - Delegation[12]. - - Added in version 218. + The following controller names may be specified: cpu, cpuacct, cpuset, io, blkio, + memory, devices, pids, bpf-firewall, and bpf-devices. + Added in version 218. + */ + Delegate?: boolean | string; + + /** DelegateSubgroup= - Place unit processes in the specified subgroup of the unit's control group. Takes a - valid control group name (not a path!) as parameter, or an empty string to turn this - feature off. Defaults to off. The control group name must be usable as filename and - avoid conflicts with the kernel's control group attribute files (i.e. cgroup.procs is - not an acceptable name, since the kernel exposes a native control group attribute file - by that name). This option has no effect unless control group delegation is turned on - via Delegate=, see above. Note that this setting only applies to "main" processes of a - unit, i.e. for services to ExecStart=, but not for ExecReload= and similar. If - delegation is enabled, the latter are always placed inside a subgroup named .control. - The specified subgroup is automatically created (and potentially ownership is passed - to the unit's configured user/group) when a process is started in it. - - This option is useful to avoid manually moving the invoked process into a subgroup - after it has been started. Since no processes should live in inner nodes of the - control group tree it's almost always necessary to run the main ("supervising") - process of a unit that has delegation turned on in a subgroup. - - Added in version 254. + Place unit processes in the specified subgroup of the unit's control group. Takes a + valid control group name (not a path!) as parameter, or an empty string to turn this + feature off. Defaults to off. The control group name must be usable as filename and + avoid conflicts with the kernel's control group attribute files. This option has no + effect unless control group delegation is turned on via Delegate=. - DisableControllers= - Disables controllers from being enabled for a unit's children. If a controller listed - is already in use in its subtree, the controller will be removed from the subtree. - This can be used to avoid configuration in child units from being able to implicitly - or explicitly enable a controller. Defaults to empty. + Added in version 254. + */ + DelegateSubgroup?: string; - Multiple controllers may be specified, separated by spaces. You may also pass - DisableControllers= multiple times, in which case each new instance adds another - controller to disable. Passing DisableControllers= by itself with no controller name - present resets the disabled controller list. + /** + DisableControllers= + Disables controllers from being enabled for a unit's children. If a controller listed + is already in use in its subtree, the controller will be removed from the subtree. + This can be used to avoid configuration in child units from being able to implicitly + or explicitly enable a controller. Defaults to empty. - It may not be possible to disable a controller after units have been started, if the - unit or any child of the unit in question delegates controllers to its children, as - any delegated subtree of the cgroup hierarchy is unmanaged by systemd. + Multiple controllers may be specified, separated by spaces. You may also pass + DisableControllers= multiple times, in which case each new instance adds another + controller to disable. - The following controller names may be specified: cpu, cpuacct, cpuset, io, blkio, - memory, devices, pids, bpf-firewall, and bpf-devices. + The following controller names may be specified: cpu, cpuacct, cpuset, io, blkio, + memory, devices, pids, bpf-firewall, and bpf-devices. - Added in version 240. + Added in version 240. + */ + DisableControllers?: string | string[]; -Memory Pressure Control + /** ManagedOOMSwap=auto|kill, ManagedOOMMemoryPressure=auto|kill - Specifies how systemd-oomd.service(8) will act on this unit's cgroups. Defaults to - auto. + Specifies how systemd-oomd.service(8) will act on this unit's cgroups. Defaults to + auto. - When set to kill, the unit becomes a candidate for monitoring by systemd-oomd. If the - cgroup passes the limits set by oomd.conf(5) or the unit configuration, systemd-oomd - will select a descendant cgroup and send SIGKILL to all of the processes under it. You - can find more details on candidates and kill behavior at systemd-oomd.service(8) and - oomd.conf(5). + When set to kill, the unit becomes a candidate for monitoring by systemd-oomd. If the + cgroup passes the limits set by oomd.conf(5) or the unit configuration, systemd-oomd + will select a descendant cgroup and send SIGKILL to all of the processes under it. - Setting either of these properties to kill will also result in After= and Wants= - dependencies on systemd-oomd.service unless DefaultDependencies=no. + Setting either of these properties to kill will also result in After= and Wants= + dependencies on systemd-oomd.service unless DefaultDependencies=no. - When set to auto, systemd-oomd will not actively use this cgroup's data for monitoring - and detection. However, if an ancestor cgroup has one of these properties set to kill, - a unit with auto can still be a candidate for systemd-oomd to terminate. + When set to auto, systemd-oomd will not actively use this cgroup's data for monitoring + and detection. However, if an ancestor cgroup has one of these properties set to kill, + a unit with auto can still be a candidate for systemd-oomd to terminate. - Added in version 247. + Added in version 247. + */ + ManagedOOMSwap?: "auto" | "kill"; + ManagedOOMMemoryPressure?: "auto" | "kill"; + /** ManagedOOMMemoryPressureLimit= - Overrides the default memory pressure limit set by oomd.conf(5) for this unit - (cgroup). Takes a percentage value between 0% and 100%, inclusive. This property is - ignored unless ManagedOOMMemoryPressure=kill. Defaults to 0%, which means to use the - default set by oomd.conf(5). + Overrides the default memory pressure limit set by oomd.conf(5) for this unit + (cgroup). Takes a percentage value between 0% and 100%, inclusive. This property is + ignored unless ManagedOOMMemoryPressure=kill. Defaults to 0%, which means to use the + default set by oomd.conf(5). - Added in version 247. + Added in version 247. + */ + ManagedOOMMemoryPressureLimit?: string; + + /** + ManagedOOMMemoryPressureDurationSec= + Overrides the default memory pressure duration set by oomd.conf(5) for the cgroup of + this unit. The specified value supports a time unit such as "ms" or "μs", see + systemd.time(7) for details on the permitted syntax. Must be set to either empty or a + value of at least 1s. Defaults to empty, which means to use the default set by + oomd.conf(5). This property is ignored unless ManagedOOMMemoryPressure=kill. + + Added in version 257. + */ + ManagedOOMMemoryPressureDurationSec?: string; + /** ManagedOOMPreference=none|avoid|omit Allows deprioritizing or omitting this unit's cgroup as a candidate when systemd-oomd needs to act. Requires support for extended attributes (see xattr(7)) in order to use avoid or omit. - When calculating candidates to relieve swap usage, systemd-oomd will only respect - these extended attributes if the unit's cgroup is owned by root. - - When calculating candidates to relieve memory pressure, systemd-oomd will only respect - these extended attributes if the unit's cgroup is owned by root, or if the unit's - cgroup owner, and the owner of the monitored ancestor cgroup are the same. For - example, if systemd-oomd is calculating candidates for -.slice, then extended - attributes set on descendants of /user.slice/user-1000.slice/user@1000.service/ will - be ignored because the descendants are owned by UID 1000, and -.slice is owned by UID - 0. But, if calculating candidates for /user.slice/user-1000.slice/user@1000.service/, - then extended attributes set on the descendants would be respected. - If this property is set to avoid, the service manager will convey this to systemd-oomd, which will only select this cgroup if there are no other viable candidates. @@ -1077,84 +719,85 @@ Memory Pressure Control If this property is set to omit, the service manager will convey this to systemd-oomd, which will ignore this cgroup as a candidate and will not perform any actions on it. - It is recommended to use avoid and omit sparingly, as it can adversely affect - systemd-oomd's kill behavior. Also note that these extended attributes are not applied - recursively to cgroups under this unit's cgroup. - Defaults to none which means systemd-oomd will rank this unit's cgroup as defined in systemd-oomd.service(8) and oomd.conf(5). Added in version 248. + */ + ManagedOOMPreference?: "none" | "avoid" | "omit"; + /** MemoryPressureWatch= - Controls memory pressure monitoring for invoked processes. Takes one of "off", "on", - "auto" or "skip". If "off" tells the service not to watch for memory pressure events, - by setting the $MEMORY_PRESSURE_WATCH environment variable to the literal string - /dev/null. If "on" tells the service to watch for memory pressure events. This enables - memory accounting for the service, and ensures the memory.pressure cgroup attribute - file is accessible for reading and writing by the service's user. It then sets the - $MEMORY_PRESSURE_WATCH environment variable for processes invoked by the unit to the - file system path to this file. The threshold information configured with - MemoryPressureThresholdSec= is encoded in the $MEMORY_PRESSURE_WRITE environment - variable. If the "auto" value is set the protocol is enabled if memory accounting is - anyway enabled for the unit, and disabled otherwise. If set to "skip" the logic is - neither enabled, nor disabled and the two environment variables are not set. - - Note that services are free to use the two environment variables, but it's - unproblematic if they ignore them. Memory pressure handling must be implemented - individually in each service, and usually means different things for different - software. For further details on memory pressure handling see Memory Pressure Handling - in systemd[13]. - - Services implemented using sd-event(3) may use sd_event_add_memory_pressure(3) to - watch for and handle memory pressure events. - - If not explicit set, defaults to the DefaultMemoryPressureWatch= setting in systemd- - system.conf(5). - - Added in version 254. + Controls memory pressure monitoring for invoked processes. Takes one of "off", "on", + "auto" or "skip". If "off" tells the service not to watch for memory pressure events, + by setting the $MEMORY_PRESSURE_WATCH environment variable to the literal string + /dev/null. If "on" tells the service to watch for memory pressure events. This enables + memory accounting for the service, and ensures the memory.pressure cgroup attribute + file is accessible for reading and writing by the service's user. If the "auto" value + is set the protocol is enabled if memory accounting is anyway enabled for the unit, + and disabled otherwise. If set to "skip" the logic is neither enabled, nor disabled + and the two environment variables are not set. + + If not explicit set, defaults to the DefaultMemoryPressureWatch= setting in + systemd-system.conf(5). - MemoryPressureThresholdSec= - Sets the memory pressure threshold time for memory pressure monitor as configured via - MemoryPressureWatch=. Specifies the maximum allocation latency before a memory - pressure event is signalled to the service, per 2s window. If not specified defaults - to the DefaultMemoryPressureThresholdSec= setting in systemd-system.conf(5) (which in - turn defaults to 200ms). The specified value expects a time unit such as "ms" or "μs", - see systemd.time(7) for details on the permitted syntax. + Note: "on" and "off" are normalized to booleans by the INI parser of this library. - Added in version 254. + Added in version 254. + */ + MemoryPressureWatch?: boolean | "auto" | "skip"; -Coredump Control + /** + MemoryPressureThresholdSec= + Sets the memory pressure threshold time for memory pressure monitor as configured via + MemoryPressureWatch=. Specifies the maximum allocation latency before a memory + pressure event is signalled to the service, per 2s window. If not specified defaults + to the DefaultMemoryPressureThresholdSec= setting in systemd-system.conf(5) (which in + turn defaults to 200ms). The specified value expects a time unit such as "ms" or "μs", + see systemd.time(7) for details on the permitted syntax. + + Added in version 254. + */ + MemoryPressureThresholdSec?: string; + + /** CoredumpReceive= - Takes a boolean argument. This setting is used to enable coredump forwarding for - containers that belong to this unit's cgroup. Units with CoredumpReceive=yes must also - be configured with Delegate=yes. Defaults to false. + Takes a boolean argument. This setting is used to enable coredump forwarding for + containers that belong to this unit's cgroup. Units with CoredumpReceive=yes must also + be configured with Delegate=yes. Defaults to false. - When systemd-coredump is handling a coredump for a process from a container, if the - container's leader process is a descendant of a cgroup with CoredumpReceive=yes and - Delegate=yes, then systemd-coredump will attempt to forward the coredump to - systemd-coredump within the container. + When systemd-coredump is handling a coredump for a process from a container, if the + container's leader process is a descendant of a cgroup with CoredumpReceive=yes and + Delegate=yes, then systemd-coredump will attempt to forward the coredump to + systemd-coredump within the container. - Added in version 255. + Added in version 255. */ + CoredumpReceive?: boolean; } export const ResourceLimitSchema = z.union([ - z.string(), z.number(), -]) as ZodType; + z.literal("infinity"), + z.templateLiteral([z.number(), z.enum(["%", "G", "K", "M", "T"])]), +]); + +const StringOrStringArray = z.union([z.string(), z.array(z.string())]); export const ResourceSectionConfigSchema = implement().with({ CPUAccounting: z.boolean().optional(), CPUWeight: z.union([z.number(), z.literal("idle")]).optional(), StartupCPUWeight: z.union([z.number(), z.literal("idle")]).optional(), CPUQuota: z.string().optional(), - CPUQuotaPeriodSec: z.string().optional(), + CPUQuotaPeriodSec: z.union([z.number(), z.string()]).optional(), AllowedCPUs: z.string().optional(), StartupAllowedCPUs: z.string().optional(), + MemoryAccounting: z.boolean().optional(), MemoryMin: ResourceLimitSchema.optional(), + DefaultMemoryMin: ResourceLimitSchema.optional(), MemoryLow: ResourceLimitSchema.optional(), + DefaultMemoryLow: ResourceLimitSchema.optional(), StartupMemoryLow: ResourceLimitSchema.optional(), DefaultStartupMemoryLow: ResourceLimitSchema.optional(), MemoryHigh: ResourceLimitSchema.optional(), @@ -1165,13 +808,56 @@ export const ResourceSectionConfigSchema = implement().wi StartupMemorySwapMax: ResourceLimitSchema.optional(), MemoryZSwapMax: ResourceLimitSchema.optional(), StartupMemoryZSwapMax: ResourceLimitSchema.optional(), + MemoryZSwapWriteback: z.boolean().optional(), AllowedMemoryNodes: z.string().optional(), StartupAllowedMemoryNodes: z.string().optional(), + TasksAccounting: z.boolean().optional(), - TasksMax: z.number().optional(), + TasksMax: z.union([ + z.number(), + z.literal("infinity"), + z.templateLiteral([z.number(), "%"]), + ]).optional(), + IOAccounting: z.boolean().optional(), IOWeight: z.number().optional(), StartupIOWeight: z.number().optional(), + IODeviceWeight: StringOrStringArray.optional(), + IOReadBandwidthMax: StringOrStringArray.optional(), + IOWriteBandwidthMax: StringOrStringArray.optional(), + IOReadIOPSMax: StringOrStringArray.optional(), + IOWriteIOPSMax: StringOrStringArray.optional(), + IODeviceLatencyTargetSec: StringOrStringArray.optional(), + + IPAccounting: z.boolean().optional(), + IPAddressAllow: StringOrStringArray.optional(), + IPAddressDeny: StringOrStringArray.optional(), + SocketBindAllow: StringOrStringArray.optional(), + SocketBindDeny: StringOrStringArray.optional(), + RestrictNetworkInterfaces: StringOrStringArray.optional(), + NFTSet: StringOrStringArray.optional(), + + IPIngressFilterPath: StringOrStringArray.optional(), + IPEgressFilterPath: StringOrStringArray.optional(), + BPFProgram: StringOrStringArray.optional(), + + DeviceAllow: StringOrStringArray.optional(), + DevicePolicy: z.enum(["auto", "closed", "strict"]).optional(), + + Slice: z.string().optional(), + Delegate: z.union([z.boolean(), z.string()]).optional(), + DelegateSubgroup: z.string().optional(), + DisableControllers: StringOrStringArray.optional(), + + ManagedOOMSwap: z.enum(["auto", "kill"]).optional(), + ManagedOOMMemoryPressure: z.enum(["auto", "kill"]).optional(), + ManagedOOMMemoryPressureLimit: z.string().optional(), + ManagedOOMMemoryPressureDurationSec: z.string().optional(), + ManagedOOMPreference: z.enum(["none", "avoid", "omit"]).optional(), + MemoryPressureWatch: z.literal([true, false, "auto", "skip"]).optional(), + MemoryPressureThresholdSec: z.string().optional(), + + CoredumpReceive: z.boolean().optional(), }); export class ResourceSectionBuilder { @@ -1258,6 +944,15 @@ export class ResourceSectionBuilder { return this; } + /** + * Set resource DefaultMemoryMin + * @see {@link ResourceSectionConfig.DefaultMemoryMin} + */ + public setDefaultMemoryMin(value?: ResourceSectionConfig["DefaultMemoryMin"]): this { + this.section.DefaultMemoryMin = value; + return this; + } + /** * Set resource MemoryLow * @see {@link ResourceSectionConfig.MemoryLow} @@ -1267,6 +962,15 @@ export class ResourceSectionBuilder { return this; } + /** + * Set resource DefaultMemoryLow + * @see {@link ResourceSectionConfig.DefaultMemoryLow} + */ + public setDefaultMemoryLow(value?: ResourceSectionConfig["DefaultMemoryLow"]): this { + this.section.DefaultMemoryLow = value; + return this; + } + /** * Set resource StartupMemoryLow * @see {@link ResourceSectionConfig.StartupMemoryLow} @@ -1357,6 +1061,15 @@ export class ResourceSectionBuilder { return this; } + /** + * Set resource MemoryZSwapWriteback + * @see {@link ResourceSectionConfig.MemoryZSwapWriteback} + */ + public setMemoryZSwapWriteback(value?: ResourceSectionConfig["MemoryZSwapWriteback"]): this { + this.section.MemoryZSwapWriteback = value; + return this; + } + /** * Set resource AllowedMemoryNodes * @see {@link ResourceSectionConfig.AllowedMemoryNodes} @@ -1419,4 +1132,274 @@ export class ResourceSectionBuilder { this.section.StartupIOWeight = value; return this; } + + /** + * Set resource IODeviceWeight + * @see {@link ResourceSectionConfig.IODeviceWeight} + */ + public setIODeviceWeight(value?: ResourceSectionConfig["IODeviceWeight"]): this { + this.section.IODeviceWeight = value; + return this; + } + + /** + * Set resource IOReadBandwidthMax + * @see {@link ResourceSectionConfig.IOReadBandwidthMax} + */ + public setIOReadBandwidthMax(value?: ResourceSectionConfig["IOReadBandwidthMax"]): this { + this.section.IOReadBandwidthMax = value; + return this; + } + + /** + * Set resource IOWriteBandwidthMax + * @see {@link ResourceSectionConfig.IOWriteBandwidthMax} + */ + public setIOWriteBandwidthMax(value?: ResourceSectionConfig["IOWriteBandwidthMax"]): this { + this.section.IOWriteBandwidthMax = value; + return this; + } + + /** + * Set resource IOReadIOPSMax + * @see {@link ResourceSectionConfig.IOReadIOPSMax} + */ + public setIOReadIOPSMax(value?: ResourceSectionConfig["IOReadIOPSMax"]): this { + this.section.IOReadIOPSMax = value; + return this; + } + + /** + * Set resource IOWriteIOPSMax + * @see {@link ResourceSectionConfig.IOWriteIOPSMax} + */ + public setIOWriteIOPSMax(value?: ResourceSectionConfig["IOWriteIOPSMax"]): this { + this.section.IOWriteIOPSMax = value; + return this; + } + + /** + * Set resource IODeviceLatencyTargetSec + * @see {@link ResourceSectionConfig.IODeviceLatencyTargetSec} + */ + public setIODeviceLatencyTargetSec(value?: ResourceSectionConfig["IODeviceLatencyTargetSec"]): this { + this.section.IODeviceLatencyTargetSec = value; + return this; + } + + /** + * Set resource IPAccounting + * @see {@link ResourceSectionConfig.IPAccounting} + */ + public setIPAccounting(value?: ResourceSectionConfig["IPAccounting"]): this { + this.section.IPAccounting = value; + return this; + } + + /** + * Set resource IPAddressAllow + * @see {@link ResourceSectionConfig.IPAddressAllow} + */ + public setIPAddressAllow(value?: ResourceSectionConfig["IPAddressAllow"]): this { + this.section.IPAddressAllow = value; + return this; + } + + /** + * Set resource IPAddressDeny + * @see {@link ResourceSectionConfig.IPAddressDeny} + */ + public setIPAddressDeny(value?: ResourceSectionConfig["IPAddressDeny"]): this { + this.section.IPAddressDeny = value; + return this; + } + + /** + * Set resource SocketBindAllow + * @see {@link ResourceSectionConfig.SocketBindAllow} + */ + public setSocketBindAllow(value?: ResourceSectionConfig["SocketBindAllow"]): this { + this.section.SocketBindAllow = value; + return this; + } + + /** + * Set resource SocketBindDeny + * @see {@link ResourceSectionConfig.SocketBindDeny} + */ + public setSocketBindDeny(value?: ResourceSectionConfig["SocketBindDeny"]): this { + this.section.SocketBindDeny = value; + return this; + } + + /** + * Set resource RestrictNetworkInterfaces + * @see {@link ResourceSectionConfig.RestrictNetworkInterfaces} + */ + public setRestrictNetworkInterfaces(value?: ResourceSectionConfig["RestrictNetworkInterfaces"]): this { + this.section.RestrictNetworkInterfaces = value; + return this; + } + + /** + * Set resource NFTSet + * @see {@link ResourceSectionConfig.NFTSet} + */ + public setNFTSet(value?: ResourceSectionConfig["NFTSet"]): this { + this.section.NFTSet = value; + return this; + } + + /** + * Set resource IPIngressFilterPath + * @see {@link ResourceSectionConfig.IPIngressFilterPath} + */ + public setIPIngressFilterPath(value?: ResourceSectionConfig["IPIngressFilterPath"]): this { + this.section.IPIngressFilterPath = value; + return this; + } + + /** + * Set resource IPEgressFilterPath + * @see {@link ResourceSectionConfig.IPEgressFilterPath} + */ + public setIPEgressFilterPath(value?: ResourceSectionConfig["IPEgressFilterPath"]): this { + this.section.IPEgressFilterPath = value; + return this; + } + + /** + * Set resource BPFProgram + * @see {@link ResourceSectionConfig.BPFProgram} + */ + public setBPFProgram(value?: ResourceSectionConfig["BPFProgram"]): this { + this.section.BPFProgram = value; + return this; + } + + /** + * Set resource DeviceAllow + * @see {@link ResourceSectionConfig.DeviceAllow} + */ + public setDeviceAllow(value?: ResourceSectionConfig["DeviceAllow"]): this { + this.section.DeviceAllow = value; + return this; + } + + /** + * Set resource DevicePolicy + * @see {@link ResourceSectionConfig.DevicePolicy} + */ + public setDevicePolicy(value?: ResourceSectionConfig["DevicePolicy"]): this { + this.section.DevicePolicy = value; + return this; + } + + /** + * Set resource Slice + * @see {@link ResourceSectionConfig.Slice} + */ + public setSlice(value?: ResourceSectionConfig["Slice"]): this { + this.section.Slice = value; + return this; + } + + /** + * Set resource Delegate + * @see {@link ResourceSectionConfig.Delegate} + */ + public setDelegate(value?: ResourceSectionConfig["Delegate"]): this { + this.section.Delegate = value; + return this; + } + + /** + * Set resource DelegateSubgroup + * @see {@link ResourceSectionConfig.DelegateSubgroup} + */ + public setDelegateSubgroup(value?: ResourceSectionConfig["DelegateSubgroup"]): this { + this.section.DelegateSubgroup = value; + return this; + } + + /** + * Set resource DisableControllers + * @see {@link ResourceSectionConfig.DisableControllers} + */ + public setDisableControllers(value?: ResourceSectionConfig["DisableControllers"]): this { + this.section.DisableControllers = value; + return this; + } + + /** + * Set resource ManagedOOMSwap + * @see {@link ResourceSectionConfig.ManagedOOMSwap} + */ + public setManagedOOMSwap(value?: ResourceSectionConfig["ManagedOOMSwap"]): this { + this.section.ManagedOOMSwap = value; + return this; + } + + /** + * Set resource ManagedOOMMemoryPressure + * @see {@link ResourceSectionConfig.ManagedOOMMemoryPressure} + */ + public setManagedOOMMemoryPressure(value?: ResourceSectionConfig["ManagedOOMMemoryPressure"]): this { + this.section.ManagedOOMMemoryPressure = value; + return this; + } + + /** + * Set resource ManagedOOMMemoryPressureLimit + * @see {@link ResourceSectionConfig.ManagedOOMMemoryPressureLimit} + */ + public setManagedOOMMemoryPressureLimit(value?: ResourceSectionConfig["ManagedOOMMemoryPressureLimit"]): this { + this.section.ManagedOOMMemoryPressureLimit = value; + return this; + } + + /** + * Set resource ManagedOOMMemoryPressureDurationSec + * @see {@link ResourceSectionConfig.ManagedOOMMemoryPressureDurationSec} + */ + public setManagedOOMMemoryPressureDurationSec(value?: ResourceSectionConfig["ManagedOOMMemoryPressureDurationSec"]): this { + this.section.ManagedOOMMemoryPressureDurationSec = value; + return this; + } + + /** + * Set resource ManagedOOMPreference + * @see {@link ResourceSectionConfig.ManagedOOMPreference} + */ + public setManagedOOMPreference(value?: ResourceSectionConfig["ManagedOOMPreference"]): this { + this.section.ManagedOOMPreference = value; + return this; + } + + /** + * Set resource MemoryPressureWatch + * @see {@link ResourceSectionConfig.MemoryPressureWatch} + */ + public setMemoryPressureWatch(value?: ResourceSectionConfig["MemoryPressureWatch"]): this { + this.section.MemoryPressureWatch = value; + return this; + } + + /** + * Set resource MemoryPressureThresholdSec + * @see {@link ResourceSectionConfig.MemoryPressureThresholdSec} + */ + public setMemoryPressureThresholdSec(value?: ResourceSectionConfig["MemoryPressureThresholdSec"]): this { + this.section.MemoryPressureThresholdSec = value; + return this; + } + + /** + * Set resource CoredumpReceive + * @see {@link ResourceSectionConfig.CoredumpReceive} + */ + public setCoredumpReceive(value?: ResourceSectionConfig["CoredumpReceive"]): this { + this.section.CoredumpReceive = value; + return this; + } } diff --git a/packages/conf/src/service.ts b/packages/conf/src/service.ts index 0b55208..f0d8254 100644 --- a/packages/conf/src/service.ts +++ b/packages/conf/src/service.ts @@ -15,8 +15,7 @@ import { ResourceSectionBuilder, ResourceSectionConfigSchema } from "./resource. import type { AbstractUnit, Unit } from "./types.js"; /** - * @see https://manpages.ubuntu.com/manpages/noble/en/man5/systemd.service.5.html - * @see https://man.archlinux.org/man/systemd.service.5 + * @see https://manpages.ubuntu.com/manpages/resolute/man5/systemd.service.5.html */ export interface ServiceSectionConfig { /** @@ -154,7 +153,7 @@ export interface ServiceSectionConfig { for such service execution setup operations to complete before proceeding. */ Type?: - "dbus" | "exec" | "forking" | "idle" | "notify" | "oneshot" | "simple"; + "dbus" | "exec" | "forking" | "idle" | "notify" | "notify-reload" | "oneshot" | "simple"; /** ExitType= @@ -201,8 +200,9 @@ export interface ServiceSectionConfig { PIDFile= Takes a path referring to the PID file of the service. Usage of this option is recommended for services where Type= is set to forking. The path specified typically - points to a file below /run/. If a relative path is specified it is hence prefixed - with /run/. The service manager will read the PID of the main process of the service + points to a file below /run/. If a relative path is specified for system service, then + it is hence prefixed with /run/, and prefixed with $XDG_RUNTIME_DIR if specified in a + user service. The service manager will read the PID of the main process of the service from this file after start-up of the service. The service manager will not write to the file configured here, although it will remove the file after the service has shut down if it still exists. The PID file does not need to be owned by a privileged user, @@ -306,6 +306,8 @@ export interface ServiceSectionConfig { also applies to ExecCondition=. ExecCondition= will also run the commands in ExecStopPost=, as part of stopping the service, in the case of any non-zero or abnormal exits, like the ones described above. + + Added in version 243. */ ExecCondition?: string[] | string; @@ -330,9 +332,23 @@ export interface ServiceSectionConfig { broker(1) uses the following: ExecReload=busctl call org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus ReloadConfig + + This setting can be combined with Type=notify-reload, in which case the service main + process is signaled after all specified command lines finish execution. Specially, if + "RELOADING=1" notification is received before ExecReload= completes, the signaling is + skipped and the service manager immediately starts listening for "READY=1". */ ExecReload?: string[] | string; + /** + ExecReloadPost= + Commands to execute after a successful reload operation. Syntax for this setting is + exactly the same as ExecReload=. + + Added in version 259. + */ + ExecReloadPost?: string[] | string; + /** ExecStop= Commands to execute to stop the service started via ExecStart=. This argument takes @@ -406,15 +422,19 @@ export interface ServiceSectionConfig { Restart=). Takes a unit-less value in seconds, or a time span value such as "5min 20s". Defaults to 100ms. */ - RestartSec?: string; + RestartSec?: number | string; /** RestartSteps= Configures the number of steps to take to increase the interval of auto-restarts from RestartSec= to RestartMaxDelaySec=. Takes a positive integer or 0 to disable it. - Defaults to 0. + Defaults to 0. The formula for the ratio is + (RestartMaxDelaySec / RestartSec)^(1 / RestartSteps). - This setting is effective only if RestartMaxDelaySec= is also set. + Hint: values between 3 and 5 are good choices when exponential backoff is desired. + + This setting is effective only if RestartMaxDelaySec= is also set and RestartSec= is + not zero. Added in version 254. */ @@ -426,11 +446,12 @@ export interface ServiceSectionConfig { up with RestartSteps=. Takes a value in the same format as RestartSec=, or "infinity" to disable the setting. Defaults to "infinity". - This setting is effective only if RestartSteps= is also set. + This setting is effective only if RestartSteps= is also set and RestartSec= is not + zero. Added in version 254. */ - RestartMaxDelaySec?: number | "infinity"; + RestartMaxDelaySec?: number | string; /** TimeoutStartSec= @@ -449,8 +470,15 @@ export interface ServiceSectionConfig { continue to start, provided the service repeats "EXTEND_TIMEOUT_USEC=..." within the interval specified until the service startup status is finished by "READY=1". (see sd_notify(3)). + + Note that the start timeout is also applied to service reloads, regardless of whether + implemented through ExecReload= or via the reload logic enabled via Type=notify-reload. + If the reload does not complete within the configured time, the reload will be + considered failed and the service will continue running with the old configuration. + + Added in version 188. */ - TimeoutStartSec?: string; + TimeoutStartSec?: number | string; /** TimeoutStopSec= @@ -471,8 +499,10 @@ export interface ServiceSectionConfig { extended beyond TimeoutStopSec=, the service manager will allow the service to continue to stop, provided the service repeats "EXTEND_TIMEOUT_USEC=..." within the interval specified, or terminates itself (see sd_notify(3)). + + Added in version 188. */ - TimeoutStopSec?: string; + TimeoutStopSec?: number | string; /** TimeoutAbortSec= @@ -498,15 +528,17 @@ export interface ServiceSectionConfig { beyond TimeoutAbortSec=, the service manager will allow the service to continue to abort, provided the service repeats "EXTEND_TIMEOUT_USEC=..." within the interval specified, or terminates itself (see sd_notify(3)). + + Added in version 243. */ - TimeoutAbortSec?: string; + TimeoutAbortSec?: number | string; /** TimeoutSec= A shorthand for configuring both TimeoutStartSec= and TimeoutStopSec= to the specified value. */ - TimeoutSec?: string; + TimeoutSec?: number | string; /** TimeoutStartFailureMode=, TimeoutStopFailureMode= @@ -523,6 +555,8 @@ export interface ServiceSectionConfig { or shut-down intermittently. By using kill the service is immediately terminated by sending FinalKillSignal= without any further timeout. This setting can be used to expedite the shutdown of failing services. + + Added in version 246. */ TimeoutStartFailureMode?: "abort" | "kill" | "terminate"; @@ -536,8 +570,8 @@ export interface ServiceSectionConfig { Configures a maximum time for the service to run. If this is used and the service has been active for longer than the specified time it is terminated and put into a failure state. Note that this setting does not have any effect on Type=oneshot services, as - they terminate immediately after activation completed. Pass "infinity" (the default) - to configure no runtime limit. + they terminate immediately after activation completed (use TimeoutStartSec= to limit + their activation). Pass "infinity" (the default) to configure no runtime limit. If a service of Type=notify/Type=notify-reload sends "EXTEND_TIMEOUT_USEC=...", this may cause the runtime to be extended beyond RuntimeMaxSec=. The first receipt of this @@ -546,16 +580,20 @@ export interface ServiceSectionConfig { to run, provided the service repeats "EXTEND_TIMEOUT_USEC=..." within the interval specified until the service shutdown is achieved by "STOPPING=1" (or termination). (see sd_notify(3)). + + Added in version 229. */ - RuntimeMaxSec?: number | "infinity"; + RuntimeMaxSec?: number | string; /** RuntimeRandomizedExtraSec= This option modifies RuntimeMaxSec= by increasing the maximum runtime by an evenly distributed duration between 0 and the specified value (in seconds). If RuntimeMaxSec= is unspecified, then this feature will be disabled. + + Added in version 250. */ - RuntimeRandomizedExtraSec?: number; + RuntimeRandomizedExtraSec?: number | string; /** WatchdogSec= @@ -575,7 +613,7 @@ export interface ServiceSectionConfig { notifications. See sd_watchdog_enabled(3) for details. sd_event_set_watchdog(3) may be used to enable automatic watchdog notification support. */ - WatchdogSec?: string; + WatchdogSec?: number | string; /** Restart= @@ -632,6 +670,9 @@ export interface ServiceSectionConfig { │Timeout │ │ X │ │ X │ X │ │ │ ├──────────────┼────┼────────┼────────────┼────────────┼─────────────┼──────────┼─────────────┤ │Watchdog │ │ X │ │ X │ X │ │ X │ + ├──────────────┼────┼────────┼────────────┼────────────┼─────────────┼──────────┼─────────────┤ + │Termination │ │ X │ │ X │ X │ │ │ + │due to OOM │ │ │ │ │ │ │ │ └──────────────┴────┴────────┴────────────┴────────────┴─────────────┴──────────┴─────────────┘ As exceptions to the setting above, the service will not be restarted if the exit code or signal is specified in RestartPreventExitStatus= (see below) or the service is @@ -660,13 +701,20 @@ export interface ServiceSectionConfig { auto-restart, skipping failed/inactive state. ExecStopPost= is invoked. OnSuccess= and OnFailure= are skipped. + • If set to debug, the service manager will log messages that are related to this + unit at debug level while automated restarts are attempted, until either the + service hits the rate limit or it succeeds, and the $DEBUG_INVOCATION=1 + environment variable will be set for the unit. + + Added in version 257. + This option is useful in cases where a dependency can fail temporarily but we don't want these temporary failures to make the dependent units fail. When this option is set to direct, dependent units are not notified of these temporary failures. Added in version 254. */ - RestartMode?: "direct" | "normal"; + RestartMode?: "debug" | "direct" | "normal"; /** SuccessExitStatus= @@ -736,6 +784,10 @@ export interface ServiceSectionConfig { process, will force automatic service restarts, regardless of the restart setting configured with Restart=. The argument format is similar to RestartPreventExitStatus=. + Note that for Type=oneshot services, a success exit status will prevent them from + auto-restarting, no matter whether the corresponding exit statuses are listed in this + option or not. + Added in version 215. */ RestartForceExitStatus?: string; @@ -745,8 +797,9 @@ export interface ServiceSectionConfig { Takes a boolean argument. If true, the root directory, as configured with the RootDirectory= option (see systemd.exec(5) for more information), is only applied to the process started with ExecStart=, and not to the various other ExecStartPre=, - ExecStartPost=, ExecReload=, ExecStop=, and ExecStopPost= commands. If false, the - setting is applied to all configured commands the same way. Defaults to false. + ExecStartPost=, ExecReload=, ExecReloadPost=, ExecStop=, and ExecStopPost= commands. + If false, the setting is applied to all configured commands the same way. Defaults to + false. */ RootDirectoryStartOnly?: boolean; @@ -915,7 +968,9 @@ export interface ServiceSectionConfig { If set to stop the event is logged but the unit is terminated cleanly by the service manager. If set to kill and one of the unit's processes is killed by the OOM killer the kernel is instructed to kill all remaining processes of the unit too, by setting - the memory.oom.group attribute to 1; also see kernel page Control Group v2[3]. + the memory.oom.group attribute to 1; also see kernel page Control Group v2[3]. In + case of both stop and kill, the service ultimately ends up in the oom-kill failed + state after which Restart= may apply. Defaults to the setting DefaultOOMPolicy= in systemd-system.conf(5) is set to, except for units where Delegate= is turned on, where it defaults to continue. @@ -995,7 +1050,7 @@ export const ServiceSectionConfigSchema = implement().with "oneshot", "dbus", "notify", - "forking", + "notify-reload", "idle", ]).optional(), /** @@ -1042,6 +1097,10 @@ export const ServiceSectionConfigSchema = implement().with * @see {@link ServiceSectionConfig.ExecReload} */ ExecReload: z.union([z.string(), z.array(z.string())]).optional(), + /** + * @see {@link ServiceSectionConfig.ExecReloadPost} + */ + ExecReloadPost: z.union([z.string(), z.array(z.string())]).optional(), /** * @see {@link ServiceSectionConfig.ExecStop} */ @@ -1053,31 +1112,31 @@ export const ServiceSectionConfigSchema = implement().with /** * @see {@link ServiceSectionConfig.RestartSec} */ - RestartSec: z.string().optional(), + RestartSec: z.union([z.number(), z.string()]).optional(), /** - * @see {@link ServiceSectionConfig.TimeoutStartSec} + * @see {@link ServiceSectionConfig.RestartSteps} */ RestartSteps: z.number().optional(), /** * @see {@link ServiceSectionConfig.RestartMaxDelaySec} */ - RestartMaxDelaySec: z.union([z.literal("infinity"), z.number()]).optional(), + RestartMaxDelaySec: z.union([z.number(), z.string()]).optional(), /** * @see {@link ServiceSectionConfig.TimeoutStartSec} */ - TimeoutStartSec: z.string().optional(), + TimeoutStartSec: z.union([z.number(), z.string()]).optional(), /** * @see {@link ServiceSectionConfig.TimeoutStopSec} */ - TimeoutStopSec: z.string().optional(), + TimeoutStopSec: z.union([z.number(), z.string()]).optional(), /** * @see {@link ServiceSectionConfig.TimeoutAbortSec} */ - TimeoutAbortSec: z.string().optional(), + TimeoutAbortSec: z.union([z.number(), z.string()]).optional(), /** * @see {@link ServiceSectionConfig.TimeoutSec} */ - TimeoutSec: z.string().optional(), + TimeoutSec: z.union([z.number(), z.string()]).optional(), /** * @see {@link ServiceSectionConfig.TimeoutStartFailureMode} */ @@ -1089,15 +1148,15 @@ export const ServiceSectionConfigSchema = implement().with /** * @see {@link ServiceSectionConfig.RuntimeMaxSec} */ - RuntimeMaxSec: z.union([z.literal("infinity"), z.number()]).optional(), + RuntimeMaxSec: z.union([z.number(), z.string()]).optional(), /** * @see {@link ServiceSectionConfig.RuntimeRandomizedExtraSec} */ - RuntimeRandomizedExtraSec: z.number().optional(), + RuntimeRandomizedExtraSec: z.union([z.number(), z.string()]).optional(), /** * @see {@link ServiceSectionConfig.WatchdogSec} */ - WatchdogSec: z.string().optional(), + WatchdogSec: z.union([z.number(), z.string()]).optional(), /** * @see {@link ServiceSectionConfig.Restart} */ @@ -1113,7 +1172,7 @@ export const ServiceSectionConfigSchema = implement().with /** * @see {@link ServiceSectionConfig.RestartMode} */ - RestartMode: z.enum(["normal", "direct"]).optional(), + RestartMode: z.enum(["normal", "direct", "debug"]).optional(), /** * @see {@link ServiceSectionConfig.SuccessExitStatus} */ @@ -1293,7 +1352,7 @@ export class ServiceSectionBuilder { /** * Set service ExecStartPost - * @see {@link ServiceSectionConfig.ExecStartPre} + * @see {@link ServiceSectionConfig.ExecStartPost} */ public setExecStartPost(execStartPost: string[] | string) { this.section.ExecStartPost = execStartPost; @@ -1318,6 +1377,15 @@ export class ServiceSectionBuilder { return this; } + /** + * Set service ExecReloadPost + * @see {@link ServiceSectionConfig.ExecReloadPost} + */ + public setExecReloadPost(execReloadPost: string[] | string) { + this.section.ExecReloadPost = execReloadPost; + return this; + } + /** * Set service ExecStop * @see {@link ServiceSectionConfig.ExecStop} @@ -1340,7 +1408,7 @@ export class ServiceSectionBuilder { * Set service RestartSec * @see {@link ServiceSectionConfig.RestartSec} */ - public setRestartSec(restartSec: string) { + public setRestartSec(restartSec: ServiceSectionConfig["RestartSec"]) { this.section.RestartSec = restartSec; return this; } @@ -1358,7 +1426,7 @@ export class ServiceSectionBuilder { * Set service RestartMaxDelaySec * @see {@link ServiceSectionConfig.RestartMaxDelaySec} */ - public setRestartMaxDelaySec(restartMaxDelaySec: number | "infinity") { + public setRestartMaxDelaySec(restartMaxDelaySec: ServiceSectionConfig["RestartMaxDelaySec"]) { this.section.RestartMaxDelaySec = restartMaxDelaySec; return this; } @@ -1367,7 +1435,7 @@ export class ServiceSectionBuilder { * Set service TimeoutStartSec * @see {@link ServiceSectionConfig.TimeoutStartSec} */ - public setTimeoutStartSec(timeoutStartSec: string) { + public setTimeoutStartSec(timeoutStartSec: ServiceSectionConfig["TimeoutStartSec"]) { this.section.TimeoutStartSec = timeoutStartSec; return this; } @@ -1376,7 +1444,7 @@ export class ServiceSectionBuilder { * Set service TimeoutStopSec * @see {@link ServiceSectionConfig.TimeoutStopSec} */ - public setTimeoutStopSec(timeoutStopSec: string) { + public setTimeoutStopSec(timeoutStopSec: ServiceSectionConfig["TimeoutStopSec"]) { this.section.TimeoutStopSec = timeoutStopSec; return this; } @@ -1385,7 +1453,7 @@ export class ServiceSectionBuilder { * Set service TimeoutAbortSec * @see {@link ServiceSectionConfig.TimeoutAbortSec} */ - public setTimeoutAbortSec(timeoutAbortSec: string) { + public setTimeoutAbortSec(timeoutAbortSec: ServiceSectionConfig["TimeoutAbortSec"]) { this.section.TimeoutAbortSec = timeoutAbortSec; return this; } @@ -1394,7 +1462,7 @@ export class ServiceSectionBuilder { * Set service TimeoutSec * @see {@link ServiceSectionConfig.TimeoutSec} */ - public setTimeoutSec(timeoutSec: string) { + public setTimeoutSec(timeoutSec: ServiceSectionConfig["TimeoutSec"]) { this.section.TimeoutSec = timeoutSec; return this; } @@ -1425,7 +1493,7 @@ export class ServiceSectionBuilder { * Set service RuntimeMaxSec * @see {@link ServiceSectionConfig.RuntimeMaxSec} */ - public setRuntimeMaxSec(runtimeMaxSec: number | "infinity") { + public setRuntimeMaxSec(runtimeMaxSec: ServiceSectionConfig["RuntimeMaxSec"]) { this.section.RuntimeMaxSec = runtimeMaxSec; return this; } @@ -1435,7 +1503,7 @@ export class ServiceSectionBuilder { * @see {@link ServiceSectionConfig.RuntimeRandomizedExtraSec} */ public setRuntimeRandomizedExtraSec( - runtimeRandomizedExtraSec: number, + runtimeRandomizedExtraSec: ServiceSectionConfig["RuntimeRandomizedExtraSec"], ) { this.section.RuntimeRandomizedExtraSec = runtimeRandomizedExtraSec; return this; @@ -1445,7 +1513,7 @@ export class ServiceSectionBuilder { * Set service WatchdogSec * @see {@link ServiceSectionConfig.WatchdogSec} */ - public setWatchdogSec(watchdogSec: string) { + public setWatchdogSec(watchdogSec: ServiceSectionConfig["WatchdogSec"]) { this.section.WatchdogSec = watchdogSec; return this; } From d754641e02654f3969bf028fa1a22dbf62758bc8 Mon Sep 17 00:00:00 2001 From: chyzwar Date: Sat, 16 May 2026 09:15:50 +0200 Subject: [PATCH 6/6] feat(conf): sync remaining sections to systemd v259 (resolute) URLs: - exec.ts, install.ts, kill.ts: bump @see manpage links noble -> resolute - install.ts: adopt new lowercase-hyphenated #install-section-options anchor (replaces noble's URL-encoded "#[install]%20section%20options" which would not resolve on the resolute page) timer.ts content sync (v259): - Add OnTimezoneChange (v242 - documented in the combined JSDoc but never had a field), DeferReactivation (v257), RandomizedOffsetSec (v258) - Drop section-end trailer ("Check systemd.unit(5), ...") leaked into RemainAfterElapse's JSDoc - Fix wrong description on TimerSectionBuilder.toObject() and remove redundant @returns {Type} tags (TS80004) unit.ts content sync (v259): - Full [Unit] section sync. Add 94 directives (25 non-condition, 35 Condition*, 34 Assert*) with verbatim manpage JSDoc, schema entries, and chainable builder setters - Add shared UnitAction / UnitJobMode / UnitCollectMode type aliases and matching const arrays for z.enum - Widen 11 dependency directives (Requires through JoinsNamespaceOf) from string to string[] | string, matching Documentation/Wants/After/Before - Split the 729-line orphan JSDoc into per-directive blocks; drop the "Conditions and Asserts" narrative intro and the inverses-mapping table (already encoded in the type system) - Remove redundant @returns {UnitSection} (TS80004) Note: the prior 3c10bb5 commit message says "v257 (resolute)", but the resolute release now ships systemd 259.5-0ubuntu3. URLs verified via WebFetch against the live manpage. Co-Authored-By: Claude Opus 4.7 (1M context) --- packages/conf/src/exec.ts | 2 +- packages/conf/src/install.ts | 2 +- packages/conf/src/kill.ts | 2 +- packages/conf/src/timer.ts | 98 +- packages/conf/src/unit.ts | 1903 ++++++++++++++++++++++++++-------- 5 files changed, 1540 insertions(+), 467 deletions(-) diff --git a/packages/conf/src/exec.ts b/packages/conf/src/exec.ts index 2079a8d..d44fd05 100644 --- a/packages/conf/src/exec.ts +++ b/packages/conf/src/exec.ts @@ -2,7 +2,7 @@ import { z } from "zod"; import { implement } from "./utils.js"; /** - * @see https://manpages.ubuntu.com/manpages/noble/en/man5/systemd.exec.5.html + * @see https://manpages.ubuntu.com/manpages/resolute/man5/systemd.exec.5.html */ export interface ExecSectionConfig { // PATHS diff --git a/packages/conf/src/install.ts b/packages/conf/src/install.ts index 334756a..4d8db6f 100644 --- a/packages/conf/src/install.ts +++ b/packages/conf/src/install.ts @@ -9,7 +9,7 @@ import { implement } from "./utils.js"; * The following specifiers are interpreted in the Install section: %a, %b, %B, %g, %G, %H, * %i, %j, %l, %m, %n, %N, %o, %p, %u, %U, %v, %w, %W, %%. For their meaning see the next * section. - * @see https://manpages.ubuntu.com/manpages/noble/en/man5/systemd.unit.5.html#[install]%20section%20options + * @see https://manpages.ubuntu.com/manpages/resolute/man5/systemd.unit.5.html#install-section-options */ export interface InstallSectionConfig { /** diff --git a/packages/conf/src/kill.ts b/packages/conf/src/kill.ts index 0431ad6..efb5fed 100644 --- a/packages/conf/src/kill.ts +++ b/packages/conf/src/kill.ts @@ -15,7 +15,7 @@ import { implement } from "./utils.js"; The kill procedure configuration options are configured in the [Service], [Socket], [Mount] or [Swap] section, depending on the unit type. - * @see https://manpages.ubuntu.com/manpages/noble/en/man5/systemd.kill.5.html + * @see https://manpages.ubuntu.com/manpages/resolute/man5/systemd.kill.5.html */ export interface KillSectionConfig { /** diff --git a/packages/conf/src/timer.ts b/packages/conf/src/timer.ts index df1728e..3a8b632 100644 --- a/packages/conf/src/timer.ts +++ b/packages/conf/src/timer.ts @@ -12,7 +12,7 @@ import type { AbstractUnit, Unit } from "./types.js"; /** * Timer section of a systemd unit file. - * @see https://manpages.ubuntu.com/manpages/noble/en/man5/systemd.timer.5.html + * @see https://manpages.ubuntu.com/manpages/resolute/man5/systemd.timer.5.html */ export interface TimerSectionConfig { /** @@ -197,6 +197,57 @@ export interface TimerSectionConfig { */ FixedRandomDelay?: boolean; + /** + RandomizedOffsetSec= + Offsets the timer by a stable, randomly-selected, and evenly distributed amount of + time between 0 and the specified time value. Defaults to 0, indicating that no such + offset shall be applied. The offset is chosen deterministically, and is derived the + same way as FixedRandomDelay=, see above. The offset is added on top of the next + determined elapsing time. This setting only has an effect on timers configured with + OnCalendar=, and it can be combined with RandomizedDelaySec=. + + Much like RandomizedDelaySec=, this setting is for distributing timer events to + prevent them from firing all at once. However, this setting is most useful to + prevent resource congestion on a remote service, from a fleet of + similarly-configured clients. Unlike RandomizedDelaySec=, this setting applies its + offset with no regard to manager startup time. This maintains the periodicity of + configured OnCalendar= events across manager restarts. + + For example, let's say you're running a backup service and have a fleet of laptops + that wish to make backups weekly. To distribute load on the backup service, each + laptop should randomly pick a weekday to upload its backups. This could be + achieved by setting OnCalendar= to "weekly", and then configuring a + RandomizedDelaySec= of "5 days" with FixedRandomDelay= enabled. Let's say that + some laptop randomly chooses a delay of 4 days. If this laptop is restarted more + often than that, then the timer will never fire: on each fresh boot, the 4 day + delay is restarted and will not be finished by the time of the next shutdown. + Instead, you should use RandomizedOffsetSec=, which will maintain the configured + weekly cadence of timer events, even across reboots. + + Added in version 258. + */ + RandomizedOffsetSec?: number | string; + + /** + DeferReactivation= + Takes a boolean argument. When enabled, the timer schedules the next elapse based + on the trigger unit entering inactivity, instead of the last trigger time. This is + most apparent in the case where the service unit takes longer to run than the + timer interval. With this setting enabled, the timer will schedule the next elapse + based on when the service finishes running, and so it will have to wait until the + next realtime elapse time to trigger. Otherwise, the default behavior is for the + timer unit to immediately trigger again once the service finishes running. This + happens because the timer schedules the next elapse based on the previous trigger + time, and since the interval is shorter than the service runtime, that elapse will + be in the past, causing it to immediately trigger once done. + + This setting has an effect only if a realtime timer has been specified with + OnCalendar=. Defaults to false. + + Added in version 257. + */ + DeferReactivation?: boolean; + /** OnClockChange=, OnTimezoneChange= These options take boolean arguments. When true, the service unit will be triggered @@ -208,6 +259,7 @@ export interface TimerSectionConfig { Added in version 242. */ OnClockChange?: boolean; + OnTimezoneChange?: boolean; /** Unit= @@ -272,8 +324,6 @@ export interface TimerSectionConfig { multiple times. Defaults to true. Added in version 229. - - Check systemd.unit(5), systemd.exec(5), and systemd.kill(5) for more settings. */ RemainAfterElapse?: boolean; } @@ -296,7 +346,10 @@ export const TimerSectionConfigSchema = implement().with({ AccuracySec: z.union([z.number(), z.string()]).optional(), RandomizedDelaySec: z.union([z.number(), z.string()]).optional(), FixedRandomDelay: z.boolean().optional(), + RandomizedOffsetSec: z.union([z.number(), z.string()]).optional(), + DeferReactivation: z.boolean().optional(), OnClockChange: z.boolean().optional(), + OnTimezoneChange: z.boolean().optional(), Unit: z.string().optional(), Persistent: z.boolean().optional(), WakeSystem: z.boolean().optional(), @@ -340,8 +393,7 @@ export class TimerSectionBuilder { } /** - * Validate and return the UnitSection - * @returns {TimerSection} + * Validate and return the TimerSection */ public toObject() { return TimerSectionSchema.parse(this.section); @@ -447,6 +499,28 @@ export class TimerSectionBuilder { return this; } + /** + * Set timer RandomizedOffsetSec + * @see {@link TimerSectionConfig.RandomizedOffsetSec} + */ + public setRandomizedOffsetSec( + randomizedOffsetSec?: TimerSectionConfig["RandomizedOffsetSec"], + ) { + this.section.RandomizedOffsetSec = randomizedOffsetSec; + return this; + } + + /** + * Set timer DeferReactivation + * @see {@link TimerSectionConfig.DeferReactivation} + */ + public setDeferReactivation( + deferReactivation?: TimerSectionConfig["DeferReactivation"], + ) { + this.section.DeferReactivation = deferReactivation; + return this; + } + /** * Set timer OnClockChange * @see {@link TimerSectionConfig.OnClockChange} @@ -458,6 +532,17 @@ export class TimerSectionBuilder { return this; } + /** + * Set timer OnTimezoneChange + * @see {@link TimerSectionConfig.OnTimezoneChange} + */ + public setOnTimezoneChange( + onTimezoneChange?: TimerSectionConfig["OnTimezoneChange"], + ) { + this.section.OnTimezoneChange = onTimezoneChange; + return this; + } + /** * Set timer Unit * @see {@link TimerSectionConfig.Unit} @@ -531,7 +616,6 @@ export class Timer implements AbstractUnit { /** * Get the [Timer] section of the timer - * @returns {TimerSectionBuilder} */ public getTimerSection() { return this.timerSection; @@ -539,7 +623,6 @@ export class Timer implements AbstractUnit { /** * Get the [Unit] section of the timer - * @returns {UnitSectionBuilder} */ public getUnitSection() { return this.unitSection; @@ -547,7 +630,6 @@ export class Timer implements AbstractUnit { /** * Get the [Install] section of the timer - * @returns {InstallSectionBuilder} */ public getInstallSection() { return this.installSection; diff --git a/packages/conf/src/unit.ts b/packages/conf/src/unit.ts index dfadf9b..d6ee5a2 100644 --- a/packages/conf/src/unit.ts +++ b/packages/conf/src/unit.ts @@ -1,9 +1,56 @@ import { z } from "zod"; import { implement } from "./utils.js"; +/** + * Allowed values for FailureAction=, SuccessAction=, JobTimeoutAction=, and + * StartLimitAction=. See systemd.unit(5). + */ +export const UNIT_ACTION_VALUES = [ + "none", + "reboot", + "reboot-force", + "reboot-immediate", + "poweroff", + "poweroff-force", + "poweroff-immediate", + "exit", + "exit-force", + "soft-reboot", + "soft-reboot-force", + "kexec", + "kexec-force", + "halt", + "halt-force", + "halt-immediate", +] as const; + +export type UnitAction = (typeof UNIT_ACTION_VALUES)[number]; + +/** + * Allowed values for OnSuccessJobMode= and OnFailureJobMode=. See systemd.unit(5). + */ +export const UNIT_JOB_MODE_VALUES = [ + "fail", + "replace", + "replace-irreversibly", + "isolate", + "flush", + "ignore-dependencies", + "ignore-requirements", +] as const; + +export type UnitJobMode = (typeof UNIT_JOB_MODE_VALUES)[number]; + +/** + * Allowed values for CollectMode=. See systemd.unit(5). + */ +export const UNIT_COLLECT_MODE_VALUES = ["inactive", "inactive-or-failed"] as const; + +export type UnitCollectMode = (typeof UNIT_COLLECT_MODE_VALUES)[number]; + /** * UnitSection - * @see https://manpages.ubuntu.com/manpages/noble/en/man5/systemd.unit.5.html + * @see https://manpages.ubuntu.com/manpages/resolute/man5/systemd.unit.5.html */ export interface UnitSection { /** @@ -90,7 +137,7 @@ export interface UnitSection { Added in version 201. */ - Requires?: string; + Requires?: string[] | string; /** Requisite= @@ -106,7 +153,7 @@ export interface UnitSection { Added in version 201. */ - Requisite?: string; + Requisite?: string[] | string; /** BindsTo= @@ -133,7 +180,7 @@ export interface UnitSection { Added in version 201. */ - BindsTo?: string; + BindsTo?: string[] | string; /** PartOf= @@ -148,7 +195,7 @@ export interface UnitSection { Added in version 201. */ - PartOf?: string; + PartOf?: string[] | string; /** Upholds= @@ -165,7 +212,7 @@ export interface UnitSection { Added in version 249. */ - Upholds?: string; + Upholds?: string[] | string; /** Conflicts= @@ -189,7 +236,7 @@ export interface UnitSection { Added in version 201. */ - Conflicts?: string; + Conflicts?: string[] | string; /** Before=, After= @@ -240,7 +287,7 @@ export interface UnitSection { Added in version 201. */ - OnFailure?: string; + OnFailure?: string[] | string; /** OnSuccess= @@ -249,7 +296,7 @@ export interface UnitSection { Added in version 249. */ - OnSuccess?: string; + OnSuccess?: string[] | string; /** PropagatesReloadTo=, ReloadPropagatedFrom= @@ -260,7 +307,7 @@ export interface UnitSection { Added in version 201. */ - PropagatesReloadTo?: string; + PropagatesReloadTo?: string[] | string; /** PropagatesStopTo=, StopPropagatedFrom= @@ -271,7 +318,7 @@ export interface UnitSection { Added in version 249. */ - PropagatesStopTo?: string; + PropagatesStopTo?: string[] | string; /** JoinsNamespaceOf= @@ -291,7 +338,7 @@ export interface UnitSection { Added in version 209. */ - JoinsNamespaceOf?: string; + JoinsNamespaceOf?: string[] | string; /** RequiresMountsFor= @@ -303,7 +350,19 @@ export interface UnitSection { this unit. Added in version 201. + */ + RequiresMountsFor?: string[] | string; + + /** + WantsMountsFor= + Same as RequiresMountsFor=, but adds dependencies of type Wants= instead of + Requires=. + + Added in version 256. + */ + WantsMountsFor?: string[] | string; + /** OnSuccessJobMode=, OnFailureJobMode= Takes a value of "fail", "replace", "replace-irreversibly", "isolate", "flush", "ignore-dependencies" or "ignore-requirements". Defaults to "replace". Specifies how @@ -312,14 +371,21 @@ export interface UnitSection { only a single unit may be listed in OnSuccess=/OnFailure=. Added in version 209. + */ + OnSuccessJobMode?: UnitJobMode; + OnFailureJobMode?: UnitJobMode; + /** IgnoreOnIsolate= Takes a boolean argument. If true, this unit will not be stopped when isolating another unit. Defaults to false for service, target, socket, timer, and path units, and true for slice, scope, device, swap, mount, and automount units. Added in version 201. + */ + IgnoreOnIsolate?: boolean; + /** StopWhenUnneeded= Takes a boolean argument. If true, this unit will be stopped when it is no longer used. Note that, in order to minimize the work to be executed, systemd will not stop @@ -328,7 +394,10 @@ export interface UnitSection { up if no other active unit requires it. Defaults to false. Added in version 201. + */ + StopWhenUnneeded?: boolean; + /** RefuseManualStart=, RefuseManualStop= Takes a boolean argument. If true, this unit can only be activated or deactivated indirectly. In this case, explicit start-up or termination requested by the user is @@ -339,7 +408,11 @@ export interface UnitSection { options default to false. Added in version 201. + */ + RefuseManualStart?: boolean; + RefuseManualStop?: boolean; + /** AllowIsolate= Takes a boolean argument. If true, this unit may be used with the systemctl isolate command. Otherwise, this will be refused. It probably is a good idea to leave this @@ -348,7 +421,10 @@ export interface UnitSection { false. Added in version 201. + */ + AllowIsolate?: boolean; + /** DefaultDependencies= Takes a boolean argument. If yes, (the default), a few default dependencies will implicitly be created for the unit. The actual dependencies created depend on the unit @@ -360,7 +436,10 @@ export interface UnitSection { no, this option does not disable all implicit dependencies, just non-essential ones. Added in version 201. + */ + DefaultDependencies?: boolean; + /** SurviveFinalKillSignal= Takes a boolean argument. Defaults to no. If yes, processes belonging to this unit will not be sent the final "SIGTERM" and "SIGKILL" signals during the final phase of @@ -369,7 +448,10 @@ export interface UnitSection { Daemons for the Root File System[2], which however continues to be supported. Added in version 255. + */ + SurviveFinalKillSignal?: boolean; + /** CollectMode= Tweaks the "garbage collection" algorithm for this unit. Takes one of inactive or inactive-or-failed. If set to inactive the unit will be unloaded if it is in the @@ -384,7 +466,10 @@ export interface UnitSection { is stored in the logging subsystem. Defaults to inactive. Added in version 236. + */ + CollectMode?: UnitCollectMode; + /** FailureAction=, SuccessAction= Configure the action to take when the unit stops and enters a failed state or inactive state. Takes one of none, reboot, reboot-force, reboot-immediate, poweroff, @@ -410,7 +495,11 @@ export interface UnitSection { that too, but does not go through the shutdown transaction beforehand. Added in version 236. + */ + FailureAction?: UnitAction; + SuccessAction?: UnitAction; + /** FailureActionExitStatus=, SuccessActionExitStatus= Controls the exit status to propagate back to an invoking container manager (in case of a system service) or service manager (in case of a user manager) when the @@ -420,7 +509,11 @@ export interface UnitSection { request default behaviour. Added in version 240. + */ + FailureActionExitStatus?: number | string; + SuccessActionExitStatus?: number | string; + /** JobTimeoutSec=, JobRunningTimeoutSec= JobTimeoutSec= specifies a timeout for the whole job that starts running when the job is queued. JobRunningTimeoutSec= specifies a timeout that starts running when the @@ -439,7 +532,11 @@ export interface UnitSection { to abort only the job waiting for the unit state to change. Added in version 201. + */ + JobTimeoutSec?: number | string; + JobRunningTimeoutSec?: number | string; + /** JobTimeoutAction=, JobTimeoutRebootArgument= JobTimeoutAction= optionally configures an additional action to take when the timeout is hit, see description of JobTimeoutSec= and JobRunningTimeoutSec= above. It takes @@ -449,7 +546,11 @@ export interface UnitSection { reboot(2) system call. Added in version 240. + */ + JobTimeoutAction?: UnitAction; + JobTimeoutRebootArgument?: string; + /** StartLimitIntervalSec=interval, StartLimitBurst=burst Configure unit start rate limiting. Units which are started more than burst times within an interval time span are not permitted to start any more. Use @@ -484,7 +585,11 @@ export interface UnitSection { unit types whose activation may either never fail, or may succeed only a single time. Added in version 229. + */ + StartLimitIntervalSec?: number | string; + StartLimitBurst?: number; + /** StartLimitAction= Configure an additional action to take if the rate limit configured with StartLimitIntervalSec= and StartLimitBurst= is hit. Takes the same values as the @@ -492,398 +597,445 @@ export interface UnitSection { trigger no action except that the start will not be permitted. Defaults to none. Added in version 229. + */ + StartLimitAction?: UnitAction; + /** RebootArgument= - Configure the optional argument for the reboot(2) system call if StartLimitAction= or - FailureAction= is a reboot action. This works just like the optional argument to - systemctl reboot command. + Configure the optional argument for the reboot(2) system call if StartLimitAction= or + FailureAction= is a reboot action. This works just like the optional argument to + systemctl reboot command. - Added in version 229. + Added in version 229. + */ + RebootArgument?: string; + /** SourcePath= - A path to a configuration file this unit has been generated from. This is primarily - useful for implementation of generator tools that convert configuration from an - external configuration file format into native unit files. This functionality should - not be used in normal units. - - Added in version 201. - -Conditions and Asserts - Unit files may also include a number of Condition...= and Assert...= settings. Before the - unit is started, systemd will verify that the specified conditions and asserts are true. - If not, the starting of the unit will be (mostly silently) skipped (in case of - conditions), or aborted with an error message (in case of asserts). Failing conditions or - asserts will not result in the unit being moved into the "failed" state. The conditions - and asserts are checked at the time the queued start job is to be executed. The ordering - dependencies are still respected, so other units are still pulled in and ordered as if - this unit was successfully activated, and the conditions and asserts are executed the - precise moment the unit would normally start and thus can validate system state after the - units ordered before completed initialization. Use condition expressions for skipping - units that do not apply to the local system, for example because the kernel or runtime - environment doesn't require their functionality. - - If multiple conditions are specified, the unit will be executed if all of them apply (i.e. - a logical AND is applied). Condition checks can use a pipe symbol ("|") after the equals - sign ("Condition...=|..."), which causes the condition to become a triggering condition. - If at least one triggering condition is defined for a unit, then the unit will be started - if at least one of the triggering conditions of the unit applies and all of the regular - (i.e. non-triggering) conditions apply. If you prefix an argument with the pipe symbol and - an exclamation mark, the pipe symbol must be passed first, the exclamation second. If any - of these options is assigned the empty string, the list of conditions is reset completely, - all previous condition settings (of any kind) will have no effect. - - The AssertArchitecture=, AssertVirtualization=, ... options are similar to conditions but - cause the start job to fail (instead of being skipped). The failed check is logged. Units - with unmet conditions are considered to be in a clean state and will be garbage collected - if they are not referenced. This means that when queried, the condition failure may or may - not show up in the state of the unit. - - Note that neither assertion nor condition expressions result in unit state changes. Also - note that both are checked at the time the job is to be executed, i.e. long after - depending jobs and it itself were queued. Thus, neither condition nor assertion - expressions are suitable for conditionalizing unit dependencies. - - The condition verb of systemd-analyze(1) can be used to test condition and assert - expressions. - - Except for ConditionPathIsSymbolicLink=, all path checks follow symlinks. + A path to a configuration file this unit has been generated from. This is primarily + useful for implementation of generator tools that convert configuration from an + external configuration file format into native unit files. This functionality should + not be used in normal units. - ConditionArchitecture= - Check whether the system is running on a specific architecture. Takes one of "x86", - "x86-64", "ppc", "ppc-le", "ppc64", "ppc64-le", "ia64", "parisc", "parisc64", "s390", - "s390x", "sparc", "sparc64", "mips", "mips-le", "mips64", "mips64-le", "alpha", "arm", - "arm-be", "arm64", "arm64-be", "sh", "sh64", "m68k", "tilegx", "cris", "arc", - "arc-be", or "native". + Added in version 201. + */ + SourcePath?: string; - The architecture is determined from the information returned by uname(2) and is thus - subject to personality(2). Note that a Personality= setting in the same unit file has - no effect on this condition. A special architecture name "native" is mapped to the - architecture the system manager itself is compiled for. The test may be negated by - prepending an exclamation mark. + /** + ConditionArchitecture= + Check whether the system is running on a specific architecture. Takes one of "x86", + "x86-64", "ppc", "ppc-le", "ppc64", "ppc64-le", "ia64", "parisc", "parisc64", "s390", + "s390x", "sparc", "sparc64", "mips", "mips-le", "mips64", "mips64-le", "alpha", "arm", + "arm-be", "arm64", "arm64-be", "sh", "sh64", "m68k", "tilegx", "cris", "arc", + "arc-be", or "native". + + The architecture is determined from the information returned by uname(2) and is thus + subject to personality(2). Note that a Personality= setting in the same unit file has + no effect on this condition. A special architecture name "native" is mapped to the + architecture the system manager itself is compiled for. The test may be negated by + prepending an exclamation mark. + + Before the unit is started, systemd will verify that the specified conditions are + true. If not, the starting of the unit will be (mostly silently) skipped. Failing + conditions or asserts will not result in the unit being moved into the "failed" state. + Conditions are checked at the time the queued start job is to be executed. Use the + pipe symbol ("|") after the equals sign to mark a condition as triggering: if at least + one triggering condition is defined, the unit will be started when at least one of the + triggering conditions applies and all of the regular (non-triggering) conditions + apply. If a pipe symbol and an exclamation mark are used together, the pipe must come + first. Assigning the empty string resets the list of conditions. - Added in version 201. + Added in version 201. + */ + ConditionArchitecture?: string[] | string; + /** ConditionFirmware= - Check whether the system's firmware is of a certain type. The following values are - possible: + Check whether the system's firmware is of a certain type. The following values are + possible: - • "uefi" matches systems with EFI. + • "uefi" matches systems with EFI. - • "device-tree" matches systems with a device tree. + • "device-tree" matches systems with a device tree. - • "device-tree-compatible(value)" matches systems with a device tree that are - compatible with "value". + • "device-tree-compatible(value)" matches systems with a device tree that are + compatible with "value". - • "smbios-field(field operator value)" matches systems with a SMBIOS field - containing a certain value. field is the name of the SMBIOS field exposed as - "sysfs" attribute file below /sys/class/dmi/id/. operator is one of "<", "<=", - ">=", ">", "==", "<>" for version comparisons, "=" and "!=" for literal string - comparisons, or "$=", "!$=" for shell-style glob comparisons. value is the - expected value of the SMBIOS field value (possibly containing shell style globs in - case "$="/"!$=" is used). + • "smbios-field(field operator value)" matches systems with a SMBIOS field + containing a certain value. field is the name of the SMBIOS field exposed as + "sysfs" attribute file below /sys/class/dmi/id/. operator is one of "<", "<=", + ">=", ">", "==", "<>" for version comparisons, "=" and "!=" for literal string + comparisons, or "$=", "!$=" for shell-style glob comparisons. value is the + expected value of the SMBIOS field value (possibly containing shell style globs in + case "$="/"!$=" is used). - Added in version 249. + Added in version 249. + */ + ConditionFirmware?: string[] | string; + /** ConditionVirtualization= - Check whether the system is executed in a virtualized environment and optionally test - whether it is a specific implementation. Takes either boolean value to check if being - executed in any virtualized environment, or one of "vm" and "container" to test - against a generic type of virtualization solution, or one of "qemu", "kvm", "amazon", - "zvm", "vmware", "microsoft", "oracle", "powervm", "xen", "bochs", "uml", "bhyve", - "qnx", "apple", "sre", "openvz", "lxc", "lxc-libvirt", "systemd-nspawn", "docker", - "podman", "rkt", "wsl", "proot", "pouch", "acrn" to test against a specific - implementation, or "private-users" to check whether we are running in a user - namespace. See systemd-detect-virt(1) for a full list of known virtualization - technologies and their identifiers. If multiple virtualization technologies are - nested, only the innermost is considered. The test may be negated by prepending an - exclamation mark. - - Added in version 244. + Check whether the system is executed in a virtualized environment and optionally test + whether it is a specific implementation. Takes either boolean value to check if being + executed in any virtualized environment, or one of "vm" and "container" to test + against a generic type of virtualization solution, or one of "qemu", "kvm", "amazon", + "zvm", "vmware", "microsoft", "oracle", "powervm", "xen", "bochs", "uml", "bhyve", + "qnx", "apple", "sre", "openvz", "lxc", "lxc-libvirt", "systemd-nspawn", "docker", + "podman", "rkt", "wsl", "proot", "pouch", "acrn" to test against a specific + implementation, or "private-users" to check whether we are running in a user + namespace. See systemd-detect-virt(1) for a full list of known virtualization + technologies and their identifiers. If multiple virtualization technologies are + nested, only the innermost is considered. The test may be negated by prepending an + exclamation mark. + + Added in version 244. + */ + ConditionVirtualization?: string[] | string; + /** ConditionHost= - ConditionHost= may be used to match against the hostname or machine ID of the host. - This either takes a hostname string (optionally with shell style globs) which is - tested against the locally set hostname as returned by gethostname(2), or a machine ID - formatted as string (see machine-id(5)). The test may be negated by prepending an - exclamation mark. + ConditionHost= may be used to match against the hostname or machine ID of the host. + This either takes a hostname string (optionally with shell style globs) which is + tested against the locally set hostname as returned by gethostname(2), or a machine ID + formatted as string (see machine-id(5)). The test may be negated by prepending an + exclamation mark. - Added in version 244. + Added in version 244. + */ + ConditionHost?: string[] | string; + /** ConditionKernelCommandLine= - ConditionKernelCommandLine= may be used to check whether a specific kernel command - line option is set (or if prefixed with the exclamation mark — unset). The argument - must either be a single word, or an assignment (i.e. two words, separated by "="). In - the former case the kernel command line is searched for the word appearing as is, or - as left hand side of an assignment. In the latter case, the exact assignment is looked - for with right and left hand side matching. This operates on the kernel command line - communicated to userspace via /proc/cmdline, except when the service manager is - invoked as payload of a container manager, in which case the command line of PID 1 is - used instead (i.e. /proc/1/cmdline). - - Added in version 244. + ConditionKernelCommandLine= may be used to check whether a specific kernel command + line option is set (or if prefixed with the exclamation mark — unset). The argument + must either be a single word, or an assignment (i.e. two words, separated by "="). In + the former case the kernel command line is searched for the word appearing as is, or + as left hand side of an assignment. In the latter case, the exact assignment is looked + for with right and left hand side matching. This operates on the kernel command line + communicated to userspace via /proc/cmdline, except when the service manager is + invoked as payload of a container manager, in which case the command line of PID 1 is + used instead (i.e. /proc/1/cmdline). + + Added in version 244. + */ + ConditionKernelCommandLine?: string[] | string; + /** ConditionKernelVersion= - ConditionKernelVersion= may be used to check whether the kernel version (as reported - by uname -r) matches a certain expression, or if prefixed with the exclamation mark, - does not match. The argument must be a list of (potentially quoted) expressions. Each - expression starts with one of "=" or "!=" for string comparisons, "<", "<=", "==", - "<>", ">=", ">" for version comparisons, or "$=", "!$=" for a shell-style glob match. - If no operator is specified, "$=" is implied. + ConditionKernelVersion= may be used to check whether the kernel version (as reported + by uname -r) matches a certain expression, or if prefixed with the exclamation mark, + does not match. The argument must be a list of (potentially quoted) expressions. Each + expression starts with one of "=" or "!=" for string comparisons, "<", "<=", "==", + "<>", ">=", ">" for version comparisons, or "$=", "!$=" for a shell-style glob match. + If no operator is specified, "$=" is implied. + + Note that using the kernel version string is an unreliable way to determine which + features are supported by a kernel, because of the widespread practice of backporting + drivers, features, and fixes from newer upstream kernels into older versions provided + by distributions. Hence, this check is inherently unportable and should not be used + for units which may be used on different distributions. - Note that using the kernel version string is an unreliable way to determine which - features are supported by a kernel, because of the widespread practice of backporting - drivers, features, and fixes from newer upstream kernels into older versions provided - by distributions. Hence, this check is inherently unportable and should not be used - for units which may be used on different distributions. + Added in version 244. + */ + ConditionKernelVersion?: string[] | string; - Added in version 244. + /** + ConditionVersion= + ConditionVersion= may be used to check whether a software version matches a certain + expression, or if prefixed with the exclamation mark, does not match. The first + argument is the software whose version has to be checked. Currently "kernel", + "systemd" and "glibc" are supported. If this argument is omitted, "kernel" is implied. + The second argument must be a list of (potentially quoted) expressions. Each + expression starts with one of "=" or "!=" for string comparisons, "<", "<=", "==", + "<>", ">=", ">" for version comparisons, or "$=", "!$=" for a shell-style glob match. + If no operator is specified, "$=" is implied. + + Added in version 258. + */ + ConditionVersion?: string[] | string; + /** ConditionCredential= - ConditionCredential= may be used to check whether a credential by the specified name - was passed into the service manager. See System and Service Credentials[3] for details - about credentials. If used in services for the system service manager this may be used - to conditionalize services based on system credentials passed in. If used in services - for the per-user service manager this may be used to conditionalize services based on - credentials passed into the unit@.service service instance belonging to the user. The - argument must be a valid credential name. - - Added in version 252. + ConditionCredential= may be used to check whether a credential by the specified name + was passed into the service manager. See System and Service Credentials[3] for details + about credentials. If used in services for the system service manager this may be used + to conditionalize services based on system credentials passed in. If used in services + for the per-user service manager this may be used to conditionalize services based on + credentials passed into the unit@.service service instance belonging to the user. The + argument must be a valid credential name. + + Added in version 252. + */ + ConditionCredential?: string[] | string; + /** ConditionEnvironment= - ConditionEnvironment= may be used to check whether a specific environment variable is - set (or if prefixed with the exclamation mark — unset) in the service manager's - environment block. The argument may be a single word, to check if the variable with - this name is defined in the environment block, or an assignment ("name=value"), to - check if the variable with this exact value is defined. Note that the environment - block of the service manager itself is checked, i.e. not any variables defined with - Environment= or EnvironmentFile=, as described above. This is particularly useful when - the service manager runs inside a containerized environment or as per-user service - manager, in order to check for variables passed in by the enclosing container manager - or PAM. - - Added in version 246. + ConditionEnvironment= may be used to check whether a specific environment variable is + set (or if prefixed with the exclamation mark — unset) in the service manager's + environment block. The argument may be a single word, to check if the variable with + this name is defined in the environment block, or an assignment ("name=value"), to + check if the variable with this exact value is defined. Note that the environment + block of the service manager itself is checked, i.e. not any variables defined with + Environment= or EnvironmentFile=, as described above. This is particularly useful when + the service manager runs inside a containerized environment or as per-user service + manager, in order to check for variables passed in by the enclosing container manager + or PAM. + + Added in version 246. + */ + ConditionEnvironment?: string[] | string; + /** ConditionSecurity= - ConditionSecurity= may be used to check whether the given security technology is - enabled on the system. Currently, the following values are recognized: - - Table 3. Recognized security technologies - ┌────────────────┬──────────────────────────────────┐ - │Value │ Description │ - ├────────────────┼──────────────────────────────────┤ - │selinux │ SELinux MAC │ - ├────────────────┼──────────────────────────────────┤ - │apparmor │ AppArmor MAC │ - ├────────────────┼──────────────────────────────────┤ - │tomoyo │ Tomoyo MAC │ - ├────────────────┼──────────────────────────────────┤ - │smack │ SMACK MAC │ - ├────────────────┼──────────────────────────────────┤ - │ima │ Integrity Measurement │ - │ │ Architecture (IMA) │ - ├────────────────┼──────────────────────────────────┤ - │audit │ Linux Audit Framework │ - ├────────────────┼──────────────────────────────────┤ - │uefi-secureboot │ UEFI SecureBoot │ - ├────────────────┼──────────────────────────────────┤ - │tpm2 │ Trusted Platform Module 2.0 │ - │ │ (TPM2) │ - ├────────────────┼──────────────────────────────────┤ - │cvm │ Confidential virtual machine │ - │ │ (SEV/TDX) │ - ├────────────────┼──────────────────────────────────┤ - │measured-uki │ Unified Kernel Image with PCR 11 │ - │ │ Measurements, as per systemd- │ - │ │ stub(7). Added in version 255. │ - └────────────────┴──────────────────────────────────┘ - The test may be negated by prepending an exclamation mark. - - Added in version 244. + ConditionSecurity= may be used to check whether the given security technology is + enabled on the system. Currently, the recognized values include "selinux", "apparmor", + "tomoyo", "smack", "ima", "audit", "uefi-secureboot", "tpm2", "cvm", and + "measured-uki" (the last added in version 255). The test may be negated by prepending + an exclamation mark. + + Added in version 244. + */ + ConditionSecurity?: string[] | string; + /** ConditionCapability= - Check whether the given capability exists in the capability bounding set of the - service manager (i.e. this does not check whether capability is actually available in - the permitted or effective sets, see capabilities(7) for details). Pass a capability - name such as "CAP_MKNOD", possibly prefixed with an exclamation mark to negate the - check. + Check whether the given capability exists in the capability bounding set of the + service manager (i.e. this does not check whether capability is actually available in + the permitted or effective sets, see capabilities(7) for details). Pass a capability + name such as "CAP_MKNOD", possibly prefixed with an exclamation mark to negate the + check. - Added in version 244. + Added in version 244. + */ + ConditionCapability?: string[] | string; + /** ConditionACPower= - Check whether the system has AC power, or is exclusively battery powered at the time - of activation of the unit. This takes a boolean argument. If set to "true", the - condition will hold only if at least one AC connector of the system is connected to a - power source, or if no AC connectors are known. Conversely, if set to "false", the - condition will hold only if there is at least one AC connector known and all AC - connectors are disconnected from a power source. + Check whether the system has AC power, or is exclusively battery powered at the time + of activation of the unit. This takes a boolean argument. If set to "true", the + condition will hold only if at least one AC connector of the system is connected to a + power source, or if no AC connectors are known. Conversely, if set to "false", the + condition will hold only if there is at least one AC connector known and all AC + connectors are disconnected from a power source. - Added in version 244. + Added in version 244. + */ + ConditionACPower?: string[] | string; + /** ConditionNeedsUpdate= - Takes one of /var/ or /etc/ as argument, possibly prefixed with a "!" (to invert the - condition). This condition may be used to conditionalize units on whether the - specified directory requires an update because /usr/'s modification time is newer than - the stamp file .updated in the specified directory. This is useful to implement - offline updates of the vendor operating system resources in /usr/ that require - updating of /etc/ or /var/ on the next following boot. Units making use of this - condition should order themselves before systemd-update-done.service(8), to make sure - they run before the stamp file's modification time gets reset indicating a completed - update. - - If the systemd.condition-needs-update= option is specified on the kernel command line - (taking a boolean), it will override the result of this condition check, taking - precedence over any file modification time checks. If the kernel command line option - is used, systemd-update-done.service will not have immediate effect on any following - ConditionNeedsUpdate= checks, until the system is rebooted where the kernel command - line option is not specified anymore. - - Note that to make this scheme effective, the timestamp of /usr/ should be explicitly - updated after its contents are modified. The kernel will automatically update - modification timestamp on a directory only when immediate children of a directory are - modified; an modification of nested files will not automatically result in mtime of - /usr/ being updated. - - Also note that if the update method includes a call to execute appropriate post-update - steps itself, it should not touch the timestamp of /usr/. In a typical distribution - packaging scheme, packages will do any required update steps as part of the - installation or upgrade, to make package contents immediately usable. - ConditionNeedsUpdate= should be used with other update mechanisms where such an - immediate update does not happen. - - Added in version 244. + Takes one of /var/ or /etc/ as argument, possibly prefixed with a "!" (to invert the + condition). This condition may be used to conditionalize units on whether the + specified directory requires an update because /usr/'s modification time is newer than + the stamp file .updated in the specified directory. This is useful to implement + offline updates of the vendor operating system resources in /usr/ that require + updating of /etc/ or /var/ on the next following boot. Units making use of this + condition should order themselves before systemd-update-done.service(8), to make sure + they run before the stamp file's modification time gets reset indicating a completed + update. + + If the systemd.condition-needs-update= option is specified on the kernel command line + (taking a boolean), it will override the result of this condition check, taking + precedence over any file modification time checks. If the kernel command line option + is used, systemd-update-done.service will not have immediate effect on any following + ConditionNeedsUpdate= checks, until the system is rebooted where the kernel command + line option is not specified anymore. + + Note that to make this scheme effective, the timestamp of /usr/ should be explicitly + updated after its contents are modified. The kernel will automatically update + modification timestamp on a directory only when immediate children of a directory are + modified; an modification of nested files will not automatically result in mtime of + /usr/ being updated. + + Also note that if the update method includes a call to execute appropriate post-update + steps itself, it should not touch the timestamp of /usr/. In a typical distribution + packaging scheme, packages will do any required update steps as part of the + installation or upgrade, to make package contents immediately usable. + ConditionNeedsUpdate= should be used with other update mechanisms where such an + immediate update does not happen. + + Added in version 244. + */ + ConditionNeedsUpdate?: string[] | string; + /** ConditionFirstBoot= - Takes a boolean argument. This condition may be used to conditionalize units on - whether the system is booting up for the first time. This roughly means that /etc/ was - unpopulated when the system started booting (for details, see "First Boot Semantics" - in machine-id(5)). First boot is considered finished (this condition will evaluate as - false) after the manager has finished the startup phase. + Takes a boolean argument. This condition may be used to conditionalize units on + whether the system is booting up for the first time. This roughly means that /etc/ was + unpopulated when the system started booting (for details, see "First Boot Semantics" + in machine-id(5)). First boot is considered finished (this condition will evaluate as + false) after the manager has finished the startup phase. - This condition may be used to populate /etc/ on the first boot after factory reset, or - when a new system instance boots up for the first time. + This condition may be used to populate /etc/ on the first boot after factory reset, or + when a new system instance boots up for the first time. - For robustness, units with ConditionFirstBoot=yes should order themselves before - first-boot-complete.target and pull in this passive target with Wants=. This ensures - that in a case of an aborted first boot, these units will be re-run during the next - system startup. + For robustness, units with ConditionFirstBoot=yes should order themselves before + first-boot-complete.target and pull in this passive target with Wants=. This ensures + that in a case of an aborted first boot, these units will be re-run during the next + system startup. - If the systemd.condition-first-boot= option is specified on the kernel command line - (taking a boolean), it will override the result of this condition check, taking - precedence over /etc/machine-id existence checks. + If the systemd.condition-first-boot= option is specified on the kernel command line + (taking a boolean), it will override the result of this condition check, taking + precedence over /etc/machine-id existence checks. - Added in version 244. + Added in version 244. + */ + ConditionFirstBoot?: string[] | string; + /** ConditionPathExists= - Check for the existence of a file. If the specified absolute path name does not exist, - the condition will fail. If the absolute path name passed to ConditionPathExists= is - prefixed with an exclamation mark ("!"), the test is negated, and the unit is only - started if the path does not exist. + Check for the existence of a file. If the specified absolute path name does not exist, + the condition will fail. If the absolute path name passed to ConditionPathExists= is + prefixed with an exclamation mark ("!"), the test is negated, and the unit is only + started if the path does not exist. - Added in version 244. + Added in version 244. + */ + ConditionPathExists?: string[] | string; + /** ConditionPathExistsGlob= - ConditionPathExistsGlob= is similar to ConditionPathExists=, but checks for the - existence of at least one file or directory matching the specified globbing pattern. + ConditionPathExistsGlob= is similar to ConditionPathExists=, but checks for the + existence of at least one file or directory matching the specified globbing pattern. - Added in version 244. + Added in version 244. + */ + ConditionPathExistsGlob?: string[] | string; + /** ConditionPathIsDirectory= - ConditionPathIsDirectory= is similar to ConditionPathExists= but verifies that a - certain path exists and is a directory. + ConditionPathIsDirectory= is similar to ConditionPathExists= but verifies that a + certain path exists and is a directory. - Added in version 244. + Added in version 244. + */ + ConditionPathIsDirectory?: string[] | string; + /** ConditionPathIsSymbolicLink= - ConditionPathIsSymbolicLink= is similar to ConditionPathExists= but verifies that a - certain path exists and is a symbolic link. + ConditionPathIsSymbolicLink= is similar to ConditionPathExists= but verifies that a + certain path exists and is a symbolic link. - Added in version 244. + Added in version 244. + */ + ConditionPathIsSymbolicLink?: string[] | string; + /** ConditionPathIsMountPoint= - ConditionPathIsMountPoint= is similar to ConditionPathExists= but verifies that a - certain path exists and is a mount point. + ConditionPathIsMountPoint= is similar to ConditionPathExists= but verifies that a + certain path exists and is a mount point. - Added in version 244. + Added in version 244. + */ + ConditionPathIsMountPoint?: string[] | string; + /** ConditionPathIsReadWrite= - ConditionPathIsReadWrite= is similar to ConditionPathExists= but verifies that the - underlying file system is readable and writable (i.e. not mounted read-only). + ConditionPathIsReadWrite= is similar to ConditionPathExists= but verifies that the + underlying file system is readable and writable (i.e. not mounted read-only). - Added in version 244. + Added in version 244. + */ + ConditionPathIsReadWrite?: string[] | string; + /** ConditionPathIsEncrypted= - ConditionPathIsEncrypted= is similar to ConditionPathExists= but verifies that the - underlying file system's backing block device is encrypted using dm-crypt/LUKS. Note - that this check does not cover ext4 per-directory encryption, and only detects block - level encryption. Moreover, if the specified path resides on a file system on top of a - loopback block device, only encryption above the loopback device is detected. It is - not detected whether the file system backing the loopback block device is encrypted. - - Added in version 246. + ConditionPathIsEncrypted= is similar to ConditionPathExists= but verifies that the + underlying file system's backing block device is encrypted using dm-crypt/LUKS. Note + that this check does not cover ext4 per-directory encryption, and only detects block + level encryption. Moreover, if the specified path resides on a file system on top of a + loopback block device, only encryption above the loopback device is detected. It is + not detected whether the file system backing the loopback block device is encrypted. + + Added in version 246. + */ + ConditionPathIsEncrypted?: string[] | string; + /** ConditionDirectoryNotEmpty= - ConditionDirectoryNotEmpty= is similar to ConditionPathExists= but verifies that a - certain path exists and is a non-empty directory. + ConditionDirectoryNotEmpty= is similar to ConditionPathExists= but verifies that a + certain path exists and is a non-empty directory. - Added in version 244. + Added in version 244. + */ + ConditionDirectoryNotEmpty?: string[] | string; + /** ConditionFileNotEmpty= - ConditionFileNotEmpty= is similar to ConditionPathExists= but verifies that a certain - path exists and refers to a regular file with a non-zero size. + ConditionFileNotEmpty= is similar to ConditionPathExists= but verifies that a certain + path exists and refers to a regular file with a non-zero size. - Added in version 244. + Added in version 244. + */ + ConditionFileNotEmpty?: string[] | string; + /** ConditionFileIsExecutable= - ConditionFileIsExecutable= is similar to ConditionPathExists= but verifies that a - certain path exists, is a regular file, and marked executable. + ConditionFileIsExecutable= is similar to ConditionPathExists= but verifies that a + certain path exists, is a regular file, and marked executable. - Added in version 244. + Added in version 244. + */ + ConditionFileIsExecutable?: string[] | string; + /** ConditionUser= - ConditionUser= takes a numeric "UID", a UNIX user name, or the special value - "@system". This condition may be used to check whether the service manager is running - as the given user. The special value "@system" can be used to check if the user id is - within the system user range. This option is not useful for system services, as the - system manager exclusively runs as the root user, and thus the test result is - constant. + ConditionUser= takes a numeric "UID", a UNIX user name, or the special value + "@system". This condition may be used to check whether the service manager is running + as the given user. The special value "@system" can be used to check if the user id is + within the system user range. This option is not useful for system services, as the + system manager exclusively runs as the root user, and thus the test result is + constant. - Added in version 244. + Added in version 244. + */ + ConditionUser?: string[] | string; + /** ConditionGroup= - ConditionGroup= is similar to ConditionUser= but verifies that the service manager's - real or effective group, or any of its auxiliary groups, match the specified group or - GID. This setting does not support the special value "@system". + ConditionGroup= is similar to ConditionUser= but verifies that the service manager's + real or effective group, or any of its auxiliary groups, match the specified group or + GID. This setting does not support the special value "@system". - Added in version 244. + Added in version 244. + */ + ConditionGroup?: string[] | string; + /** ConditionControlGroupController= - Check whether given cgroup controllers (e.g. "cpu") are available for use on the - system or whether the legacy v1 cgroup or the modern v2 cgroup hierarchy is used. + Check whether given cgroup controllers (e.g. "cpu") are available for use on the + system or whether the legacy v1 cgroup or the modern v2 cgroup hierarchy is used. - Multiple controllers may be passed with a space separating them; in this case the - condition will only pass if all listed controllers are available for use. Controllers - unknown to systemd are ignored. Valid controllers are "cpu", "io", "memory", and - "pids". Even if available in the kernel, a particular controller may not be available - if it was disabled on the kernel command line with cgroup_disable=controller. + Multiple controllers may be passed with a space separating them; in this case the + condition will only pass if all listed controllers are available for use. Controllers + unknown to systemd are ignored. Valid controllers are "cpu", "io", "memory", and + "pids". Even if available in the kernel, a particular controller may not be available + if it was disabled on the kernel command line with cgroup_disable=controller. - Alternatively, two special strings "v1" and "v2" may be specified (without any - controller names). "v2" will pass if the unified v2 cgroup hierarchy is used, and - "v1" will pass if the legacy v1 hierarchy or the hybrid hierarchy are used. Note that - legacy or hybrid hierarchies have been deprecated. See systemd(1) for more - information. + Alternatively, two special strings "v1" and "v2" may be specified (without any + controller names). "v2" will pass if the unified v2 cgroup hierarchy is used, and + "v1" will pass if the legacy v1 hierarchy or the hybrid hierarchy are used. Note that + legacy or hybrid hierarchies have been deprecated. See systemd(1) for more + information. - Added in version 244. + Added in version 244. + */ + ConditionControlGroupController?: string[] | string; + /** ConditionMemory= - Verify that the specified amount of system memory is available to the current system. - Takes a memory size in bytes as argument, optionally prefixed with a comparison - operator "<", "<=", "=" (or "=="), "!=" (or "<>"), ">=", ">". On bare-metal systems - compares the amount of physical memory in the system with the specified size, adhering - to the specified comparison operator. In containers compares the amount of memory - assigned to the container instead. + Verify that the specified amount of system memory is available to the current system. + Takes a memory size in bytes as argument, optionally prefixed with a comparison + operator "<", "<=", "=" (or "=="), "!=" (or "<>"), ">=", ">". On bare-metal systems + compares the amount of physical memory in the system with the specified size, adhering + to the specified comparison operator. In containers compares the amount of memory + assigned to the container instead. - Added in version 244. + Added in version 244. + */ + ConditionMemory?: string[] | string; + /** ConditionCPUs= Verify that the specified number of CPUs is available to the current system. Takes a number of CPUs as argument, optionally prefixed with a comparison operator "<", "<=", @@ -896,151 +1048,239 @@ Conditions and Asserts container and not the physically available ones. Added in version 244. + */ + ConditionCPUs?: string[] | string; + /** ConditionCPUFeature= - Verify that a given CPU feature is available via the "CPUID" instruction. This - condition only does something on i386 and x86-64 processors. On other processors it is - assumed that the CPU does not support the given feature. It checks the leaves "1", - "7", "0x80000001", and "0x80000007". Valid values are: "fpu", "vme", "de", "pse", - "tsc", "msr", "pae", "mce", "cx8", "apic", "sep", "mtrr", "pge", "mca", "cmov", "pat", - "pse36", "clflush", "mmx", "fxsr", "sse", "sse2", "ht", "pni", "pclmul", "monitor", - "ssse3", "fma3", "cx16", "sse4_1", "sse4_2", "movbe", "popcnt", "aes", "xsave", - "osxsave", "avx", "f16c", "rdrand", "bmi1", "avx2", "bmi2", "rdseed", "adx", "sha_ni", - "syscall", "rdtscp", "lm", "lahf_lm", "abm", "constant_tsc". - - Added in version 248. + Verify that a given CPU feature is available via the "CPUID" instruction. This + condition only does something on i386 and x86-64 processors. On other processors it is + assumed that the CPU does not support the given feature. It checks the leaves "1", + "7", "0x80000001", and "0x80000007". Valid values are: "fpu", "vme", "de", "pse", + "tsc", "msr", "pae", "mce", "cx8", "apic", "sep", "mtrr", "pge", "mca", "cmov", "pat", + "pse36", "clflush", "mmx", "fxsr", "sse", "sse2", "ht", "pni", "pclmul", "monitor", + "ssse3", "fma3", "cx16", "sse4_1", "sse4_2", "movbe", "popcnt", "aes", "xsave", + "osxsave", "avx", "f16c", "rdrand", "bmi1", "avx2", "bmi2", "rdseed", "adx", "sha_ni", + "syscall", "rdtscp", "lm", "lahf_lm", "abm", "constant_tsc". + + Added in version 248. + */ + ConditionCPUFeature?: string[] | string; + /** ConditionOSRelease= - Verify that a specific "key=value" pair is set in the host's os-release(5). + Verify that a specific "key=value" pair is set in the host's os-release(5). - Other than exact string matching (with "=" and "!="), relative comparisons are - supported for versioned parameters (e.g. "VERSION_ID"; with "<", "<=", "==", "<>", - ">=", ">"), and shell-style wildcard comparisons ("*", "?", "[]") are supported with - the "$=" (match) and "!$=" (non-match). + Other than exact string matching (with "=" and "!="), relative comparisons are + supported for versioned parameters (e.g. "VERSION_ID"; with "<", "<=", "==", "<>", + ">=", ">"), and shell-style wildcard comparisons ("*", "?", "[]") are supported with + the "$=" (match) and "!$=" (non-match). - Added in version 249. + Added in version 249. + */ + ConditionOSRelease?: string[] | string; + /** ConditionMemoryPressure=, ConditionCPUPressure=, ConditionIOPressure= - Verify that the overall system (memory, CPU or IO) pressure is below or equal to a - threshold. This setting takes a threshold value as argument. It can be specified as a - simple percentage value, suffixed with "%", in which case the pressure will be - measured as an average over the last five minutes before the attempt to start the unit - is performed. Alternatively, the average timespan can also be specified using "/" as a - separator, for example: "10%/1min". The supported timespans match what the kernel - provides, and are limited to "10sec", "1min" and "5min". The "full" PSI will be - checked first, and if not found "some" will be checked. For more details, see the - documentation on PSI (Pressure Stall Information)[4]. - - Optionally, the threshold value can be prefixed with the slice unit under which the - pressure will be checked, followed by a ":". If the slice unit is not specified, the - overall system pressure will be measured, instead of a particular cgroup's. - - Added in version 250. + Verify that the overall system (memory, CPU or IO) pressure is below or equal to a + threshold. This setting takes a threshold value as argument. It can be specified as a + simple percentage value, suffixed with "%", in which case the pressure will be + measured as an average over the last five minutes before the attempt to start the unit + is performed. Alternatively, the average timespan can also be specified using "/" as a + separator, for example: "10%/1min". The supported timespans match what the kernel + provides, and are limited to "10sec", "1min" and "5min". The "full" PSI will be + checked first, and if not found "some" will be checked. For more details, see the + documentation on PSI (Pressure Stall Information)[4]. + + Optionally, the threshold value can be prefixed with the slice unit under which the + pressure will be checked, followed by a ":". If the slice unit is not specified, the + overall system pressure will be measured, instead of a particular cgroup's. + + Added in version 250. + */ + ConditionMemoryPressure?: string[] | string; + ConditionCPUPressure?: string[] | string; + ConditionIOPressure?: string[] | string; + + /** + ConditionKernelModuleLoaded= + Test whether the specified kernel module has been loaded and is already fully + initialized. + Added in version 258. + */ + ConditionKernelModuleLoaded?: string[] | string; + + /** AssertArchitecture=, AssertVirtualization=, AssertHost=, AssertKernelCommandLine=, - AssertKernelVersion=, AssertCredential=, AssertEnvironment=, AssertSecurity=, - AssertCapability=, AssertACPower=, AssertNeedsUpdate=, AssertFirstBoot=, + AssertKernelVersion=, AssertVersion=, AssertCredential=, AssertEnvironment=, + AssertSecurity=, AssertCapability=, AssertACPower=, AssertNeedsUpdate=, AssertFirstBoot=, AssertPathExists=, AssertPathExistsGlob=, AssertPathIsDirectory=, AssertPathIsSymbolicLink=, AssertPathIsMountPoint=, AssertPathIsReadWrite=, AssertPathIsEncrypted=, AssertDirectoryNotEmpty=, AssertFileNotEmpty=, AssertFileIsExecutable=, AssertUser=, AssertGroup=, AssertControlGroupController=, AssertMemory=, AssertCPUs=, AssertCPUFeature=, AssertOSRelease=, AssertMemoryPressure=, - AssertCPUPressure=, AssertIOPressure= - Similar to the ConditionArchitecture=, ConditionVirtualization=, ..., condition - settings described above, these settings add assertion checks to the start-up of the - unit. However, unlike the conditions settings, any assertion setting that is not met - results in failure of the start job (which means this is logged loudly). Note that - hitting a configured assertion does not cause the unit to enter the "failed" state (or - in fact result in any state change of the unit), it affects only the job queued for - it. Use assertion expressions for units that cannot operate when specific requirements - are not met, and when this is something the administrator or user should look into. - - Added in version 218. - -MAPPING OF UNIT PROPERTIES TO THEIR INVERSES - Unit settings that create a relationship with a second unit usually show up in properties - of both units, for example in systemctl show output. In some cases the name of the - property is the same as the name of the configuration setting, but not always. This table - lists the properties that are shown on two units which are connected through some - dependency, and shows which property on "source" unit corresponds to which property on the - "target" unit. - - Table 4. Forward and reverse unit properties - ┌──────────────────────┬───────────────────────┬───────────────────────────────────────┐ - │"Forward" property │ "Reverse" property │ Where used │ - ├──────────────────────┼───────────────────────┼───────────────────────────────────────┤ - │Before= │ After= │ │ - ├──────────────────────┼───────────────────────┤ [Unit] section │ - │After= │ Before= │ │ - ├──────────────────────┼───────────────────────┼──────────────────┬────────────────────┤ - │Requires= │ RequiredBy= │ [Unit] section │[Install] section │ - ├──────────────────────┼───────────────────────┼──────────────────┼────────────────────┤ - │Wants= │ WantedBy= │ [Unit] section │[Install] section │ - ├──────────────────────┼───────────────────────┼──────────────────┼────────────────────┤ - │Upholds= │ UpheldBy= │ [Unit] section │[Install] section │ - ├──────────────────────┼───────────────────────┼──────────────────┼────────────────────┤ - │PartOf= │ ConsistsOf= │ [Unit] section │an automatic │ - │ │ │ │property │ - ├──────────────────────┼───────────────────────┼──────────────────┼────────────────────┤ - │BindsTo= │ BoundBy= │ [Unit] section │an automatic │ - │ │ │ │property │ - ├──────────────────────┼───────────────────────┼──────────────────┼────────────────────┤ - │Requisite= │ RequisiteOf= │ [Unit] section │an automatic │ - │ │ │ │property │ - ├──────────────────────┼───────────────────────┼──────────────────┼────────────────────┤ - │Conflicts= │ ConflictedBy= │ [Unit] section │an automatic │ - │ │ │ │property │ - ├──────────────────────┼───────────────────────┼──────────────────┴────────────────────┤ - │Triggers= │ TriggeredBy= │ Automatic properties, see notes below │ - ├──────────────────────┼───────────────────────┼───────────────────────────────────────┤ - │PropagatesReloadTo= │ ReloadPropagatedFrom= │ │ - ├──────────────────────┼───────────────────────┤ [Unit] section │ - │ReloadPropagatedFrom= │ PropagatesReloadTo= │ │ - ├──────────────────────┼───────────────────────┼───────────────────────────────────────┤ - │PropagatesStopTo= │ StopPropagatedFrom= │ │ - ├──────────────────────┼───────────────────────┤ [Unit] section │ - │StopPropagatedFrom= │ PropagatesStopTo= │ │ - ├──────────────────────┼───────────────────────┼──────────────────┬────────────────────┤ - │Following= │ n/a │ An automatic │ │ - │ │ │ property │ │ - └──────────────────────┴───────────────────────┴──────────────────┴────────────────────┘ - - Note: WantedBy=, RequiredBy=, and UpheldBy= are used in the [Install] section to create - symlinks in .wants/, .requires/, and .upholds/ directories. They cannot be used directly - as a unit configuration setting. - - Note: ConsistsOf=, BoundBy=, RequisiteOf=, ConflictedBy= are created implicitly along with - their reverses and cannot be specified directly. - - Note: Triggers= is created implicitly between a socket, path unit, or an automount unit, - and the unit they activate. By default a unit with the same name is triggered, but this - can be overridden using Sockets=, Service=, and Unit= settings. See systemd.service(5), - systemd.socket(5), systemd.path(5), and systemd.automount(5) for details. TriggeredBy= is - created implicitly on the triggered unit. - - Note: Following= is used to group device aliases and points to the "primary" device unit - that systemd is using to track device state, usually corresponding to a sysfs path. It - does not show up in the "target" unit. + AssertCPUPressure=, AssertIOPressure=, AssertKernelModuleLoaded= + Similar to the ConditionArchitecture=, ConditionVirtualization=, ..., condition + settings described above, these settings add assertion checks to the start-up of the + unit. However, unlike the conditions settings, any assertion setting that is not met + results in failure of the start job (which means this is logged loudly). Note that + hitting a configured assertion does not cause the unit to enter the "failed" state (or + in fact result in any state change of the unit), it affects only the job queued for + it. Use assertion expressions for units that cannot operate when specific requirements + are not met, and when this is something the administrator or user should look into. + + Added in version 218. */ + AssertArchitecture?: string[] | string; + AssertVirtualization?: string[] | string; + AssertHost?: string[] | string; + AssertKernelCommandLine?: string[] | string; + AssertKernelVersion?: string[] | string; + AssertVersion?: string[] | string; + AssertCredential?: string[] | string; + AssertEnvironment?: string[] | string; + AssertSecurity?: string[] | string; + AssertCapability?: string[] | string; + AssertACPower?: string[] | string; + AssertNeedsUpdate?: string[] | string; + AssertFirstBoot?: string[] | string; + AssertPathExists?: string[] | string; + AssertPathExistsGlob?: string[] | string; + AssertPathIsDirectory?: string[] | string; + AssertPathIsSymbolicLink?: string[] | string; + AssertPathIsMountPoint?: string[] | string; + AssertPathIsReadWrite?: string[] | string; + AssertPathIsEncrypted?: string[] | string; + AssertDirectoryNotEmpty?: string[] | string; + AssertFileNotEmpty?: string[] | string; + AssertFileIsExecutable?: string[] | string; + AssertUser?: string[] | string; + AssertGroup?: string[] | string; + AssertControlGroupController?: string[] | string; + AssertMemory?: string[] | string; + AssertCPUs?: string[] | string; + AssertCPUFeature?: string[] | string; + AssertOSRelease?: string[] | string; + AssertMemoryPressure?: string[] | string; + AssertCPUPressure?: string[] | string; + AssertIOPressure?: string[] | string; + AssertKernelModuleLoaded?: string[] | string; } +const stringOrArray = z.union([z.string(), z.array(z.string())]).optional(); + export const UnitSectionSchema = implement().with({ Description: z.string().optional(), - Documentation: z.union([z.string(), z.array(z.string())]).optional(), - Wants: z.union([z.string(), z.array(z.string())]).optional(), - Requires: z.string().optional(), - Requisite: z.string().optional(), - BindsTo: z.string().optional(), - PartOf: z.string().optional(), - Upholds: z.string().optional(), - Conflicts: z.string().optional(), - After: z.union([z.string(), z.array(z.string())]).optional(), - Before: z.union([z.string(), z.array(z.string())]).optional(), - OnFailure: z.string().optional(), - OnSuccess: z.string().optional(), - PropagatesReloadTo: z.string().optional(), - PropagatesStopTo: z.string().optional(), - JoinsNamespaceOf: z.string().optional(), + Documentation: stringOrArray, + Wants: stringOrArray, + Requires: stringOrArray, + Requisite: stringOrArray, + BindsTo: stringOrArray, + PartOf: stringOrArray, + Upholds: stringOrArray, + Conflicts: stringOrArray, + After: stringOrArray, + Before: stringOrArray, + OnFailure: stringOrArray, + OnSuccess: stringOrArray, + PropagatesReloadTo: stringOrArray, + PropagatesStopTo: stringOrArray, + JoinsNamespaceOf: stringOrArray, + RequiresMountsFor: stringOrArray, + WantsMountsFor: stringOrArray, + OnSuccessJobMode: z.enum(UNIT_JOB_MODE_VALUES).optional(), + OnFailureJobMode: z.enum(UNIT_JOB_MODE_VALUES).optional(), + IgnoreOnIsolate: z.boolean().optional(), + StopWhenUnneeded: z.boolean().optional(), + RefuseManualStart: z.boolean().optional(), + RefuseManualStop: z.boolean().optional(), + AllowIsolate: z.boolean().optional(), + DefaultDependencies: z.boolean().optional(), + SurviveFinalKillSignal: z.boolean().optional(), + CollectMode: z.enum(UNIT_COLLECT_MODE_VALUES).optional(), + FailureAction: z.enum(UNIT_ACTION_VALUES).optional(), + SuccessAction: z.enum(UNIT_ACTION_VALUES).optional(), + FailureActionExitStatus: z.union([z.number(), z.string()]).optional(), + SuccessActionExitStatus: z.union([z.number(), z.string()]).optional(), + JobTimeoutSec: z.union([z.number(), z.string()]).optional(), + JobRunningTimeoutSec: z.union([z.number(), z.string()]).optional(), + JobTimeoutAction: z.enum(UNIT_ACTION_VALUES).optional(), + JobTimeoutRebootArgument: z.string().optional(), + StartLimitIntervalSec: z.union([z.number(), z.string()]).optional(), + StartLimitBurst: z.number().optional(), + StartLimitAction: z.enum(UNIT_ACTION_VALUES).optional(), + RebootArgument: z.string().optional(), + SourcePath: z.string().optional(), + ConditionArchitecture: stringOrArray, + ConditionFirmware: stringOrArray, + ConditionVirtualization: stringOrArray, + ConditionHost: stringOrArray, + ConditionKernelCommandLine: stringOrArray, + ConditionKernelVersion: stringOrArray, + ConditionVersion: stringOrArray, + ConditionCredential: stringOrArray, + ConditionEnvironment: stringOrArray, + ConditionSecurity: stringOrArray, + ConditionCapability: stringOrArray, + ConditionACPower: stringOrArray, + ConditionNeedsUpdate: stringOrArray, + ConditionFirstBoot: stringOrArray, + ConditionPathExists: stringOrArray, + ConditionPathExistsGlob: stringOrArray, + ConditionPathIsDirectory: stringOrArray, + ConditionPathIsSymbolicLink: stringOrArray, + ConditionPathIsMountPoint: stringOrArray, + ConditionPathIsReadWrite: stringOrArray, + ConditionPathIsEncrypted: stringOrArray, + ConditionDirectoryNotEmpty: stringOrArray, + ConditionFileNotEmpty: stringOrArray, + ConditionFileIsExecutable: stringOrArray, + ConditionUser: stringOrArray, + ConditionGroup: stringOrArray, + ConditionControlGroupController: stringOrArray, + ConditionMemory: stringOrArray, + ConditionCPUs: stringOrArray, + ConditionCPUFeature: stringOrArray, + ConditionOSRelease: stringOrArray, + ConditionMemoryPressure: stringOrArray, + ConditionCPUPressure: stringOrArray, + ConditionIOPressure: stringOrArray, + ConditionKernelModuleLoaded: stringOrArray, + AssertArchitecture: stringOrArray, + AssertVirtualization: stringOrArray, + AssertHost: stringOrArray, + AssertKernelCommandLine: stringOrArray, + AssertKernelVersion: stringOrArray, + AssertVersion: stringOrArray, + AssertCredential: stringOrArray, + AssertEnvironment: stringOrArray, + AssertSecurity: stringOrArray, + AssertCapability: stringOrArray, + AssertACPower: stringOrArray, + AssertNeedsUpdate: stringOrArray, + AssertFirstBoot: stringOrArray, + AssertPathExists: stringOrArray, + AssertPathExistsGlob: stringOrArray, + AssertPathIsDirectory: stringOrArray, + AssertPathIsSymbolicLink: stringOrArray, + AssertPathIsMountPoint: stringOrArray, + AssertPathIsReadWrite: stringOrArray, + AssertPathIsEncrypted: stringOrArray, + AssertDirectoryNotEmpty: stringOrArray, + AssertFileNotEmpty: stringOrArray, + AssertFileIsExecutable: stringOrArray, + AssertUser: stringOrArray, + AssertGroup: stringOrArray, + AssertControlGroupController: stringOrArray, + AssertMemory: stringOrArray, + AssertCPUs: stringOrArray, + AssertCPUFeature: stringOrArray, + AssertOSRelease: stringOrArray, + AssertMemoryPressure: stringOrArray, + AssertCPUPressure: stringOrArray, + AssertIOPressure: stringOrArray, + AssertKernelModuleLoaded: stringOrArray, }); export class UnitSectionBuilder { @@ -1052,7 +1292,6 @@ export class UnitSectionBuilder { /** * Validate and return the UnitSection - * @returns {UnitSection} */ public toObject() { return UnitSectionSchema.parse(this.section); @@ -1061,7 +1300,7 @@ export class UnitSectionBuilder { /** * @see {@link UnitSection.Description} */ - public setDescription(description?: string) { + public setDescription(description?: UnitSection["Description"]) { this.section.Description = description; return this; } @@ -1069,7 +1308,7 @@ export class UnitSectionBuilder { /** * @see {@link UnitSection.Documentation} */ - public setDocumentation(documentation?: string[] | string) { + public setDocumentation(documentation?: UnitSection["Documentation"]) { this.section.Documentation = documentation; return this; } @@ -1077,7 +1316,7 @@ export class UnitSectionBuilder { /** * @see {@link UnitSection.Wants} */ - public setWants(wants?: string) { + public setWants(wants?: UnitSection["Wants"]) { this.section.Wants = wants; return this; } @@ -1085,7 +1324,7 @@ export class UnitSectionBuilder { /** * @see {@link UnitSection.Requires} */ - public setRequires(requires?: string) { + public setRequires(requires?: UnitSection["Requires"]) { this.section.Requires = requires; return this; } @@ -1093,7 +1332,7 @@ export class UnitSectionBuilder { /** * @see {@link UnitSection.Requisite} */ - public setRequisite(requisite?: string) { + public setRequisite(requisite?: UnitSection["Requisite"]) { this.section.Requisite = requisite; return this; } @@ -1101,7 +1340,7 @@ export class UnitSectionBuilder { /** * @see {@link UnitSection.BindsTo} */ - public setBindsTo(bindsTo?: string) { + public setBindsTo(bindsTo?: UnitSection["BindsTo"]) { this.section.BindsTo = bindsTo; return this; } @@ -1109,7 +1348,7 @@ export class UnitSectionBuilder { /** * @see {@link UnitSection.PartOf} */ - public setPartOf(partOf?: string) { + public setPartOf(partOf?: UnitSection["PartOf"]) { this.section.PartOf = partOf; return this; } @@ -1117,7 +1356,7 @@ export class UnitSectionBuilder { /** * @see {@link UnitSection.Upholds} */ - public setUpholds(upholds?: string) { + public setUpholds(upholds?: UnitSection["Upholds"]) { this.section.Upholds = upholds; return this; } @@ -1125,7 +1364,7 @@ export class UnitSectionBuilder { /** * @see {@link UnitSection.Conflicts} */ - public setConflicts(conflicts?: string) { + public setConflicts(conflicts?: UnitSection["Conflicts"]) { this.section.Conflicts = conflicts; return this; } @@ -1133,7 +1372,7 @@ export class UnitSectionBuilder { /** * @see {@link UnitSection.After} */ - public setAfter(after?: string[] | string) { + public setAfter(after?: UnitSection["After"]) { this.section.After = after; return this; } @@ -1141,7 +1380,7 @@ export class UnitSectionBuilder { /** * @see {@link UnitSection.Before} */ - public setBefore(before?: string[] | string) { + public setBefore(before?: UnitSection["Before"]) { this.section.Before = before; return this; } @@ -1149,7 +1388,7 @@ export class UnitSectionBuilder { /** * @see {@link UnitSection.OnFailure} */ - public setOnFailure(onFailure?: string) { + public setOnFailure(onFailure?: UnitSection["OnFailure"]) { this.section.OnFailure = onFailure; return this; } @@ -1157,7 +1396,7 @@ export class UnitSectionBuilder { /** * @see {@link UnitSection.OnSuccess} */ - public setOnSuccess(onSuccess?: string) { + public setOnSuccess(onSuccess?: UnitSection["OnSuccess"]) { this.section.OnSuccess = onSuccess; return this; } @@ -1165,7 +1404,7 @@ export class UnitSectionBuilder { /** * @see {@link UnitSection.PropagatesReloadTo} */ - public setPropagatesReloadTo(propagatesReloadTo?: string) { + public setPropagatesReloadTo(propagatesReloadTo?: UnitSection["PropagatesReloadTo"]) { this.section.PropagatesReloadTo = propagatesReloadTo; return this; } @@ -1173,7 +1412,7 @@ export class UnitSectionBuilder { /** * @see {@link UnitSection.PropagatesStopTo} */ - public setPropagatesStopTo(propagatesStopTo?: string) { + public setPropagatesStopTo(propagatesStopTo?: UnitSection["PropagatesStopTo"]) { this.section.PropagatesStopTo = propagatesStopTo; return this; } @@ -1181,8 +1420,760 @@ export class UnitSectionBuilder { /** * @see {@link UnitSection.JoinsNamespaceOf} */ - public setJoinsNamespaceOf(joinsNamespaceOf?: string) { + public setJoinsNamespaceOf(joinsNamespaceOf?: UnitSection["JoinsNamespaceOf"]) { this.section.JoinsNamespaceOf = joinsNamespaceOf; return this; } + + /** + * @see {@link UnitSection.RequiresMountsFor} + */ + public setRequiresMountsFor(requiresMountsFor?: UnitSection["RequiresMountsFor"]) { + this.section.RequiresMountsFor = requiresMountsFor; + return this; + } + + /** + * @see {@link UnitSection.WantsMountsFor} + */ + public setWantsMountsFor(wantsMountsFor?: UnitSection["WantsMountsFor"]) { + this.section.WantsMountsFor = wantsMountsFor; + return this; + } + + /** + * @see {@link UnitSection.OnSuccessJobMode} + */ + public setOnSuccessJobMode(onSuccessJobMode?: UnitSection["OnSuccessJobMode"]) { + this.section.OnSuccessJobMode = onSuccessJobMode; + return this; + } + + /** + * @see {@link UnitSection.OnFailureJobMode} + */ + public setOnFailureJobMode(onFailureJobMode?: UnitSection["OnFailureJobMode"]) { + this.section.OnFailureJobMode = onFailureJobMode; + return this; + } + + /** + * @see {@link UnitSection.IgnoreOnIsolate} + */ + public setIgnoreOnIsolate(ignoreOnIsolate?: UnitSection["IgnoreOnIsolate"]) { + this.section.IgnoreOnIsolate = ignoreOnIsolate; + return this; + } + + /** + * @see {@link UnitSection.StopWhenUnneeded} + */ + public setStopWhenUnneeded(stopWhenUnneeded?: UnitSection["StopWhenUnneeded"]) { + this.section.StopWhenUnneeded = stopWhenUnneeded; + return this; + } + + /** + * @see {@link UnitSection.RefuseManualStart} + */ + public setRefuseManualStart(refuseManualStart?: UnitSection["RefuseManualStart"]) { + this.section.RefuseManualStart = refuseManualStart; + return this; + } + + /** + * @see {@link UnitSection.RefuseManualStop} + */ + public setRefuseManualStop(refuseManualStop?: UnitSection["RefuseManualStop"]) { + this.section.RefuseManualStop = refuseManualStop; + return this; + } + + /** + * @see {@link UnitSection.AllowIsolate} + */ + public setAllowIsolate(allowIsolate?: UnitSection["AllowIsolate"]) { + this.section.AllowIsolate = allowIsolate; + return this; + } + + /** + * @see {@link UnitSection.DefaultDependencies} + */ + public setDefaultDependencies(defaultDependencies?: UnitSection["DefaultDependencies"]) { + this.section.DefaultDependencies = defaultDependencies; + return this; + } + + /** + * @see {@link UnitSection.SurviveFinalKillSignal} + */ + public setSurviveFinalKillSignal(surviveFinalKillSignal?: UnitSection["SurviveFinalKillSignal"]) { + this.section.SurviveFinalKillSignal = surviveFinalKillSignal; + return this; + } + + /** + * @see {@link UnitSection.CollectMode} + */ + public setCollectMode(collectMode?: UnitSection["CollectMode"]) { + this.section.CollectMode = collectMode; + return this; + } + + /** + * @see {@link UnitSection.FailureAction} + */ + public setFailureAction(failureAction?: UnitSection["FailureAction"]) { + this.section.FailureAction = failureAction; + return this; + } + + /** + * @see {@link UnitSection.SuccessAction} + */ + public setSuccessAction(successAction?: UnitSection["SuccessAction"]) { + this.section.SuccessAction = successAction; + return this; + } + + /** + * @see {@link UnitSection.FailureActionExitStatus} + */ + public setFailureActionExitStatus(failureActionExitStatus?: UnitSection["FailureActionExitStatus"]) { + this.section.FailureActionExitStatus = failureActionExitStatus; + return this; + } + + /** + * @see {@link UnitSection.SuccessActionExitStatus} + */ + public setSuccessActionExitStatus(successActionExitStatus?: UnitSection["SuccessActionExitStatus"]) { + this.section.SuccessActionExitStatus = successActionExitStatus; + return this; + } + + /** + * @see {@link UnitSection.JobTimeoutSec} + */ + public setJobTimeoutSec(jobTimeoutSec?: UnitSection["JobTimeoutSec"]) { + this.section.JobTimeoutSec = jobTimeoutSec; + return this; + } + + /** + * @see {@link UnitSection.JobRunningTimeoutSec} + */ + public setJobRunningTimeoutSec(jobRunningTimeoutSec?: UnitSection["JobRunningTimeoutSec"]) { + this.section.JobRunningTimeoutSec = jobRunningTimeoutSec; + return this; + } + + /** + * @see {@link UnitSection.JobTimeoutAction} + */ + public setJobTimeoutAction(jobTimeoutAction?: UnitSection["JobTimeoutAction"]) { + this.section.JobTimeoutAction = jobTimeoutAction; + return this; + } + + /** + * @see {@link UnitSection.JobTimeoutRebootArgument} + */ + public setJobTimeoutRebootArgument(jobTimeoutRebootArgument?: UnitSection["JobTimeoutRebootArgument"]) { + this.section.JobTimeoutRebootArgument = jobTimeoutRebootArgument; + return this; + } + + /** + * @see {@link UnitSection.StartLimitIntervalSec} + */ + public setStartLimitIntervalSec(startLimitIntervalSec?: UnitSection["StartLimitIntervalSec"]) { + this.section.StartLimitIntervalSec = startLimitIntervalSec; + return this; + } + + /** + * @see {@link UnitSection.StartLimitBurst} + */ + public setStartLimitBurst(startLimitBurst?: UnitSection["StartLimitBurst"]) { + this.section.StartLimitBurst = startLimitBurst; + return this; + } + + /** + * @see {@link UnitSection.StartLimitAction} + */ + public setStartLimitAction(startLimitAction?: UnitSection["StartLimitAction"]) { + this.section.StartLimitAction = startLimitAction; + return this; + } + + /** + * @see {@link UnitSection.RebootArgument} + */ + public setRebootArgument(rebootArgument?: UnitSection["RebootArgument"]) { + this.section.RebootArgument = rebootArgument; + return this; + } + + /** + * @see {@link UnitSection.SourcePath} + */ + public setSourcePath(sourcePath?: UnitSection["SourcePath"]) { + this.section.SourcePath = sourcePath; + return this; + } + + /** + * @see {@link UnitSection.ConditionArchitecture} + */ + public setConditionArchitecture(conditionArchitecture?: UnitSection["ConditionArchitecture"]) { + this.section.ConditionArchitecture = conditionArchitecture; + return this; + } + + /** + * @see {@link UnitSection.ConditionFirmware} + */ + public setConditionFirmware(conditionFirmware?: UnitSection["ConditionFirmware"]) { + this.section.ConditionFirmware = conditionFirmware; + return this; + } + + /** + * @see {@link UnitSection.ConditionVirtualization} + */ + public setConditionVirtualization(conditionVirtualization?: UnitSection["ConditionVirtualization"]) { + this.section.ConditionVirtualization = conditionVirtualization; + return this; + } + + /** + * @see {@link UnitSection.ConditionHost} + */ + public setConditionHost(conditionHost?: UnitSection["ConditionHost"]) { + this.section.ConditionHost = conditionHost; + return this; + } + + /** + * @see {@link UnitSection.ConditionKernelCommandLine} + */ + public setConditionKernelCommandLine(conditionKernelCommandLine?: UnitSection["ConditionKernelCommandLine"]) { + this.section.ConditionKernelCommandLine = conditionKernelCommandLine; + return this; + } + + /** + * @see {@link UnitSection.ConditionKernelVersion} + */ + public setConditionKernelVersion(conditionKernelVersion?: UnitSection["ConditionKernelVersion"]) { + this.section.ConditionKernelVersion = conditionKernelVersion; + return this; + } + + /** + * @see {@link UnitSection.ConditionVersion} + */ + public setConditionVersion(conditionVersion?: UnitSection["ConditionVersion"]) { + this.section.ConditionVersion = conditionVersion; + return this; + } + + /** + * @see {@link UnitSection.ConditionCredential} + */ + public setConditionCredential(conditionCredential?: UnitSection["ConditionCredential"]) { + this.section.ConditionCredential = conditionCredential; + return this; + } + + /** + * @see {@link UnitSection.ConditionEnvironment} + */ + public setConditionEnvironment(conditionEnvironment?: UnitSection["ConditionEnvironment"]) { + this.section.ConditionEnvironment = conditionEnvironment; + return this; + } + + /** + * @see {@link UnitSection.ConditionSecurity} + */ + public setConditionSecurity(conditionSecurity?: UnitSection["ConditionSecurity"]) { + this.section.ConditionSecurity = conditionSecurity; + return this; + } + + /** + * @see {@link UnitSection.ConditionCapability} + */ + public setConditionCapability(conditionCapability?: UnitSection["ConditionCapability"]) { + this.section.ConditionCapability = conditionCapability; + return this; + } + + /** + * @see {@link UnitSection.ConditionACPower} + */ + public setConditionACPower(conditionACPower?: UnitSection["ConditionACPower"]) { + this.section.ConditionACPower = conditionACPower; + return this; + } + + /** + * @see {@link UnitSection.ConditionNeedsUpdate} + */ + public setConditionNeedsUpdate(conditionNeedsUpdate?: UnitSection["ConditionNeedsUpdate"]) { + this.section.ConditionNeedsUpdate = conditionNeedsUpdate; + return this; + } + + /** + * @see {@link UnitSection.ConditionFirstBoot} + */ + public setConditionFirstBoot(conditionFirstBoot?: UnitSection["ConditionFirstBoot"]) { + this.section.ConditionFirstBoot = conditionFirstBoot; + return this; + } + + /** + * @see {@link UnitSection.ConditionPathExists} + */ + public setConditionPathExists(conditionPathExists?: UnitSection["ConditionPathExists"]) { + this.section.ConditionPathExists = conditionPathExists; + return this; + } + + /** + * @see {@link UnitSection.ConditionPathExistsGlob} + */ + public setConditionPathExistsGlob(conditionPathExistsGlob?: UnitSection["ConditionPathExistsGlob"]) { + this.section.ConditionPathExistsGlob = conditionPathExistsGlob; + return this; + } + + /** + * @see {@link UnitSection.ConditionPathIsDirectory} + */ + public setConditionPathIsDirectory(conditionPathIsDirectory?: UnitSection["ConditionPathIsDirectory"]) { + this.section.ConditionPathIsDirectory = conditionPathIsDirectory; + return this; + } + + /** + * @see {@link UnitSection.ConditionPathIsSymbolicLink} + */ + public setConditionPathIsSymbolicLink(conditionPathIsSymbolicLink?: UnitSection["ConditionPathIsSymbolicLink"]) { + this.section.ConditionPathIsSymbolicLink = conditionPathIsSymbolicLink; + return this; + } + + /** + * @see {@link UnitSection.ConditionPathIsMountPoint} + */ + public setConditionPathIsMountPoint(conditionPathIsMountPoint?: UnitSection["ConditionPathIsMountPoint"]) { + this.section.ConditionPathIsMountPoint = conditionPathIsMountPoint; + return this; + } + + /** + * @see {@link UnitSection.ConditionPathIsReadWrite} + */ + public setConditionPathIsReadWrite(conditionPathIsReadWrite?: UnitSection["ConditionPathIsReadWrite"]) { + this.section.ConditionPathIsReadWrite = conditionPathIsReadWrite; + return this; + } + + /** + * @see {@link UnitSection.ConditionPathIsEncrypted} + */ + public setConditionPathIsEncrypted(conditionPathIsEncrypted?: UnitSection["ConditionPathIsEncrypted"]) { + this.section.ConditionPathIsEncrypted = conditionPathIsEncrypted; + return this; + } + + /** + * @see {@link UnitSection.ConditionDirectoryNotEmpty} + */ + public setConditionDirectoryNotEmpty(conditionDirectoryNotEmpty?: UnitSection["ConditionDirectoryNotEmpty"]) { + this.section.ConditionDirectoryNotEmpty = conditionDirectoryNotEmpty; + return this; + } + + /** + * @see {@link UnitSection.ConditionFileNotEmpty} + */ + public setConditionFileNotEmpty(conditionFileNotEmpty?: UnitSection["ConditionFileNotEmpty"]) { + this.section.ConditionFileNotEmpty = conditionFileNotEmpty; + return this; + } + + /** + * @see {@link UnitSection.ConditionFileIsExecutable} + */ + public setConditionFileIsExecutable(conditionFileIsExecutable?: UnitSection["ConditionFileIsExecutable"]) { + this.section.ConditionFileIsExecutable = conditionFileIsExecutable; + return this; + } + + /** + * @see {@link UnitSection.ConditionUser} + */ + public setConditionUser(conditionUser?: UnitSection["ConditionUser"]) { + this.section.ConditionUser = conditionUser; + return this; + } + + /** + * @see {@link UnitSection.ConditionGroup} + */ + public setConditionGroup(conditionGroup?: UnitSection["ConditionGroup"]) { + this.section.ConditionGroup = conditionGroup; + return this; + } + + /** + * @see {@link UnitSection.ConditionControlGroupController} + */ + public setConditionControlGroupController(conditionControlGroupController?: UnitSection["ConditionControlGroupController"]) { + this.section.ConditionControlGroupController = conditionControlGroupController; + return this; + } + + /** + * @see {@link UnitSection.ConditionMemory} + */ + public setConditionMemory(conditionMemory?: UnitSection["ConditionMemory"]) { + this.section.ConditionMemory = conditionMemory; + return this; + } + + /** + * @see {@link UnitSection.ConditionCPUs} + */ + public setConditionCPUs(conditionCPUs?: UnitSection["ConditionCPUs"]) { + this.section.ConditionCPUs = conditionCPUs; + return this; + } + + /** + * @see {@link UnitSection.ConditionCPUFeature} + */ + public setConditionCPUFeature(conditionCPUFeature?: UnitSection["ConditionCPUFeature"]) { + this.section.ConditionCPUFeature = conditionCPUFeature; + return this; + } + + /** + * @see {@link UnitSection.ConditionOSRelease} + */ + public setConditionOSRelease(conditionOSRelease?: UnitSection["ConditionOSRelease"]) { + this.section.ConditionOSRelease = conditionOSRelease; + return this; + } + + /** + * @see {@link UnitSection.ConditionMemoryPressure} + */ + public setConditionMemoryPressure(conditionMemoryPressure?: UnitSection["ConditionMemoryPressure"]) { + this.section.ConditionMemoryPressure = conditionMemoryPressure; + return this; + } + + /** + * @see {@link UnitSection.ConditionCPUPressure} + */ + public setConditionCPUPressure(conditionCPUPressure?: UnitSection["ConditionCPUPressure"]) { + this.section.ConditionCPUPressure = conditionCPUPressure; + return this; + } + + /** + * @see {@link UnitSection.ConditionIOPressure} + */ + public setConditionIOPressure(conditionIOPressure?: UnitSection["ConditionIOPressure"]) { + this.section.ConditionIOPressure = conditionIOPressure; + return this; + } + + /** + * @see {@link UnitSection.ConditionKernelModuleLoaded} + */ + public setConditionKernelModuleLoaded(conditionKernelModuleLoaded?: UnitSection["ConditionKernelModuleLoaded"]) { + this.section.ConditionKernelModuleLoaded = conditionKernelModuleLoaded; + return this; + } + + /** + * @see {@link UnitSection.AssertArchitecture} + */ + public setAssertArchitecture(assertArchitecture?: UnitSection["AssertArchitecture"]) { + this.section.AssertArchitecture = assertArchitecture; + return this; + } + + /** + * @see {@link UnitSection.AssertVirtualization} + */ + public setAssertVirtualization(assertVirtualization?: UnitSection["AssertVirtualization"]) { + this.section.AssertVirtualization = assertVirtualization; + return this; + } + + /** + * @see {@link UnitSection.AssertHost} + */ + public setAssertHost(assertHost?: UnitSection["AssertHost"]) { + this.section.AssertHost = assertHost; + return this; + } + + /** + * @see {@link UnitSection.AssertKernelCommandLine} + */ + public setAssertKernelCommandLine(assertKernelCommandLine?: UnitSection["AssertKernelCommandLine"]) { + this.section.AssertKernelCommandLine = assertKernelCommandLine; + return this; + } + + /** + * @see {@link UnitSection.AssertKernelVersion} + */ + public setAssertKernelVersion(assertKernelVersion?: UnitSection["AssertKernelVersion"]) { + this.section.AssertKernelVersion = assertKernelVersion; + return this; + } + + /** + * @see {@link UnitSection.AssertVersion} + */ + public setAssertVersion(assertVersion?: UnitSection["AssertVersion"]) { + this.section.AssertVersion = assertVersion; + return this; + } + + /** + * @see {@link UnitSection.AssertCredential} + */ + public setAssertCredential(assertCredential?: UnitSection["AssertCredential"]) { + this.section.AssertCredential = assertCredential; + return this; + } + + /** + * @see {@link UnitSection.AssertEnvironment} + */ + public setAssertEnvironment(assertEnvironment?: UnitSection["AssertEnvironment"]) { + this.section.AssertEnvironment = assertEnvironment; + return this; + } + + /** + * @see {@link UnitSection.AssertSecurity} + */ + public setAssertSecurity(assertSecurity?: UnitSection["AssertSecurity"]) { + this.section.AssertSecurity = assertSecurity; + return this; + } + + /** + * @see {@link UnitSection.AssertCapability} + */ + public setAssertCapability(assertCapability?: UnitSection["AssertCapability"]) { + this.section.AssertCapability = assertCapability; + return this; + } + + /** + * @see {@link UnitSection.AssertACPower} + */ + public setAssertACPower(assertACPower?: UnitSection["AssertACPower"]) { + this.section.AssertACPower = assertACPower; + return this; + } + + /** + * @see {@link UnitSection.AssertNeedsUpdate} + */ + public setAssertNeedsUpdate(assertNeedsUpdate?: UnitSection["AssertNeedsUpdate"]) { + this.section.AssertNeedsUpdate = assertNeedsUpdate; + return this; + } + + /** + * @see {@link UnitSection.AssertFirstBoot} + */ + public setAssertFirstBoot(assertFirstBoot?: UnitSection["AssertFirstBoot"]) { + this.section.AssertFirstBoot = assertFirstBoot; + return this; + } + + /** + * @see {@link UnitSection.AssertPathExists} + */ + public setAssertPathExists(assertPathExists?: UnitSection["AssertPathExists"]) { + this.section.AssertPathExists = assertPathExists; + return this; + } + + /** + * @see {@link UnitSection.AssertPathExistsGlob} + */ + public setAssertPathExistsGlob(assertPathExistsGlob?: UnitSection["AssertPathExistsGlob"]) { + this.section.AssertPathExistsGlob = assertPathExistsGlob; + return this; + } + + /** + * @see {@link UnitSection.AssertPathIsDirectory} + */ + public setAssertPathIsDirectory(assertPathIsDirectory?: UnitSection["AssertPathIsDirectory"]) { + this.section.AssertPathIsDirectory = assertPathIsDirectory; + return this; + } + + /** + * @see {@link UnitSection.AssertPathIsSymbolicLink} + */ + public setAssertPathIsSymbolicLink(assertPathIsSymbolicLink?: UnitSection["AssertPathIsSymbolicLink"]) { + this.section.AssertPathIsSymbolicLink = assertPathIsSymbolicLink; + return this; + } + + /** + * @see {@link UnitSection.AssertPathIsMountPoint} + */ + public setAssertPathIsMountPoint(assertPathIsMountPoint?: UnitSection["AssertPathIsMountPoint"]) { + this.section.AssertPathIsMountPoint = assertPathIsMountPoint; + return this; + } + + /** + * @see {@link UnitSection.AssertPathIsReadWrite} + */ + public setAssertPathIsReadWrite(assertPathIsReadWrite?: UnitSection["AssertPathIsReadWrite"]) { + this.section.AssertPathIsReadWrite = assertPathIsReadWrite; + return this; + } + + /** + * @see {@link UnitSection.AssertPathIsEncrypted} + */ + public setAssertPathIsEncrypted(assertPathIsEncrypted?: UnitSection["AssertPathIsEncrypted"]) { + this.section.AssertPathIsEncrypted = assertPathIsEncrypted; + return this; + } + + /** + * @see {@link UnitSection.AssertDirectoryNotEmpty} + */ + public setAssertDirectoryNotEmpty(assertDirectoryNotEmpty?: UnitSection["AssertDirectoryNotEmpty"]) { + this.section.AssertDirectoryNotEmpty = assertDirectoryNotEmpty; + return this; + } + + /** + * @see {@link UnitSection.AssertFileNotEmpty} + */ + public setAssertFileNotEmpty(assertFileNotEmpty?: UnitSection["AssertFileNotEmpty"]) { + this.section.AssertFileNotEmpty = assertFileNotEmpty; + return this; + } + + /** + * @see {@link UnitSection.AssertFileIsExecutable} + */ + public setAssertFileIsExecutable(assertFileIsExecutable?: UnitSection["AssertFileIsExecutable"]) { + this.section.AssertFileIsExecutable = assertFileIsExecutable; + return this; + } + + /** + * @see {@link UnitSection.AssertUser} + */ + public setAssertUser(assertUser?: UnitSection["AssertUser"]) { + this.section.AssertUser = assertUser; + return this; + } + + /** + * @see {@link UnitSection.AssertGroup} + */ + public setAssertGroup(assertGroup?: UnitSection["AssertGroup"]) { + this.section.AssertGroup = assertGroup; + return this; + } + + /** + * @see {@link UnitSection.AssertControlGroupController} + */ + public setAssertControlGroupController(assertControlGroupController?: UnitSection["AssertControlGroupController"]) { + this.section.AssertControlGroupController = assertControlGroupController; + return this; + } + + /** + * @see {@link UnitSection.AssertMemory} + */ + public setAssertMemory(assertMemory?: UnitSection["AssertMemory"]) { + this.section.AssertMemory = assertMemory; + return this; + } + + /** + * @see {@link UnitSection.AssertCPUs} + */ + public setAssertCPUs(assertCPUs?: UnitSection["AssertCPUs"]) { + this.section.AssertCPUs = assertCPUs; + return this; + } + + /** + * @see {@link UnitSection.AssertCPUFeature} + */ + public setAssertCPUFeature(assertCPUFeature?: UnitSection["AssertCPUFeature"]) { + this.section.AssertCPUFeature = assertCPUFeature; + return this; + } + + /** + * @see {@link UnitSection.AssertOSRelease} + */ + public setAssertOSRelease(assertOSRelease?: UnitSection["AssertOSRelease"]) { + this.section.AssertOSRelease = assertOSRelease; + return this; + } + + /** + * @see {@link UnitSection.AssertMemoryPressure} + */ + public setAssertMemoryPressure(assertMemoryPressure?: UnitSection["AssertMemoryPressure"]) { + this.section.AssertMemoryPressure = assertMemoryPressure; + return this; + } + + /** + * @see {@link UnitSection.AssertCPUPressure} + */ + public setAssertCPUPressure(assertCPUPressure?: UnitSection["AssertCPUPressure"]) { + this.section.AssertCPUPressure = assertCPUPressure; + return this; + } + + /** + * @see {@link UnitSection.AssertIOPressure} + */ + public setAssertIOPressure(assertIOPressure?: UnitSection["AssertIOPressure"]) { + this.section.AssertIOPressure = assertIOPressure; + return this; + } + + /** + * @see {@link UnitSection.AssertKernelModuleLoaded} + */ + public setAssertKernelModuleLoaded(assertKernelModuleLoaded?: UnitSection["AssertKernelModuleLoaded"]) { + this.section.AssertKernelModuleLoaded = assertKernelModuleLoaded; + return this; + } }