diff --git a/packages/casl-angular/package.json b/packages/casl-angular/package.json index e7db052fe..dd6dfadc3 100644 --- a/packages/casl-angular/package.json +++ b/packages/casl-angular/package.json @@ -67,7 +67,7 @@ "jest-preset-angular": "^14.0.0", "rxjs": "^7.5.5", "tslib": "^2.0.0", - "typescript": "~5.3.0", + "typescript": "~5.4.0", "zone.js": "~0.14.0" }, "files": [ diff --git a/packages/dx/package.json b/packages/dx/package.json index c2c176fe8..a9f8be914 100644 --- a/packages/dx/package.json +++ b/packages/dx/package.json @@ -29,7 +29,7 @@ "rollup-plugin-sourcemaps": "^0.6.3", "semantic-release": "^17.4.2", "ts-jest": "^29.0.0", - "typescript": "~5.3.0" + "typescript": "~5.4.0" }, "devDependencies": { "@types/jest": "^29.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f7f5a8cd4..461adc136 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,7 +41,7 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: ^18.0.0 - version: 18.0.1(@angular/compiler-cli@17.3.10)(jest@29.7.0)(typescript@5.3.3) + version: 18.0.1(@angular/compiler-cli@17.3.10)(jest@29.7.0)(typescript@5.4.5) '@angular/common': specifier: ^17.0.0 version: 17.3.10(@angular/core@17.3.10)(rxjs@7.8.1) @@ -50,7 +50,7 @@ importers: version: 17.3.10(@angular/core@17.3.10) '@angular/compiler-cli': specifier: ^17.0.0 - version: 17.3.10(@angular/compiler@17.3.10)(typescript@5.3.3) + version: 17.3.10(@angular/compiler@17.3.10)(typescript@5.4.5) '@angular/core': specifier: ^17.0.0 version: 17.3.10(rxjs@7.8.1)(zone.js@0.14.6) @@ -74,7 +74,7 @@ importers: version: 29.7.0 jest-preset-angular: specifier: ^14.0.0 - version: 14.1.0(@angular-devkit/build-angular@18.0.1)(@angular/compiler-cli@17.3.10)(@angular/core@17.3.10)(@angular/platform-browser-dynamic@17.3.10)(@babel/core@7.24.6)(jest@29.7.0)(typescript@5.3.3) + version: 14.1.0(@angular-devkit/build-angular@18.0.1)(@angular/compiler-cli@17.3.10)(@angular/core@17.3.10)(@angular/platform-browser-dynamic@17.3.10)(@babel/core@7.24.6)(jest@29.7.0)(typescript@5.4.5) rxjs: specifier: ^7.5.5 version: 7.8.1 @@ -82,8 +82,8 @@ importers: specifier: ^2.0.0 version: 2.6.2 typescript: - specifier: ~5.3.0 - version: 5.3.3 + specifier: ~5.4.0 + version: 5.4.5 zone.js: specifier: ~0.14.0 version: 0.14.6 @@ -258,10 +258,10 @@ importers: version: 9.0.1(semantic-release@17.4.7) '@typescript-eslint/eslint-plugin': specifier: ^6.0.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.3.3) + version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^6.0.0 - version: 6.21.0(eslint@8.57.0)(typescript@5.3.3) + version: 6.21.0(eslint@8.57.0)(typescript@5.4.5) eslint: specifier: ^8.30.0 version: 8.57.0 @@ -285,10 +285,10 @@ importers: version: 17.4.7 ts-jest: specifier: ^29.0.0 - version: 29.1.3(@babel/core@7.24.6)(esbuild@0.21.4)(jest@29.7.0)(typescript@5.3.3) + version: 29.1.3(@babel/core@7.24.6)(esbuild@0.21.4)(jest@29.7.0)(typescript@5.4.5) typescript: - specifier: ~5.3.0 - version: 5.3.3 + specifier: ~5.4.0 + version: 5.4.5 devDependencies: '@types/jest': specifier: ^29.0.0 @@ -313,7 +313,7 @@ packages: - chokidar dev: true - /@angular-devkit/build-angular@18.0.1(@angular/compiler-cli@17.3.10)(jest@29.7.0)(typescript@5.3.3): + /@angular-devkit/build-angular@18.0.1(@angular/compiler-cli@17.3.10)(jest@29.7.0)(typescript@5.4.5): resolution: {integrity: sha512-FDVxR+VR0WP/lukOrnhEdy+hcGNBzqyfmrW0fyIthwP+A/gHlB3Qd/lehkeLngTjPwtBXssxuwR6BgWmpjy69Q==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: @@ -358,8 +358,8 @@ packages: '@angular-devkit/architect': 0.1800.1 '@angular-devkit/build-webpack': 0.1800.1(webpack-dev-server@5.0.4)(webpack@5.91.0) '@angular-devkit/core': 18.0.1 - '@angular/build': 18.0.1(@angular/compiler-cli@17.3.10)(less@4.2.0)(postcss@8.4.38)(terser@5.31.0)(typescript@5.3.3) - '@angular/compiler-cli': 17.3.10(@angular/compiler@17.3.10)(typescript@5.3.3) + '@angular/build': 18.0.1(@angular/compiler-cli@17.3.10)(less@4.2.0)(postcss@8.4.38)(terser@5.31.0)(typescript@5.4.5) + '@angular/compiler-cli': 17.3.10(@angular/compiler@17.3.10)(typescript@5.4.5) '@babel/core': 7.24.5 '@babel/generator': 7.24.5 '@babel/helper-annotate-as-pure': 7.22.5 @@ -370,7 +370,7 @@ packages: '@babel/preset-env': 7.24.5(@babel/core@7.24.5) '@babel/runtime': 7.24.5 '@discoveryjs/json-ext': 0.5.7 - '@ngtools/webpack': 18.0.1(@angular/compiler-cli@17.3.10)(typescript@5.3.3)(webpack@5.91.0) + '@ngtools/webpack': 18.0.1(@angular/compiler-cli@17.3.10)(typescript@5.4.5)(webpack@5.91.0) '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.2.11) ansi-colors: 4.1.3 autoprefixer: 10.4.19(postcss@8.4.38) @@ -401,7 +401,7 @@ packages: picomatch: 4.0.2 piscina: 4.5.0 postcss: 8.4.38 - postcss-loader: 8.1.1(postcss@8.4.38)(typescript@5.3.3)(webpack@5.91.0) + postcss-loader: 8.1.1(postcss@8.4.38)(typescript@5.4.5)(webpack@5.91.0) resolve-url-loader: 5.0.0 rxjs: 7.8.1 sass: 1.77.2 @@ -412,7 +412,7 @@ packages: terser: 5.31.0 tree-kill: 1.2.2 tslib: 2.6.2 - typescript: 5.3.3 + typescript: 5.4.5 undici: 6.18.0 vite: 5.2.11(less@4.2.0)(sass@1.77.2)(terser@5.31.0) watchpack: 2.4.1 @@ -474,7 +474,7 @@ packages: source-map: 0.7.4 dev: true - /@angular/build@18.0.1(@angular/compiler-cli@17.3.10)(less@4.2.0)(postcss@8.4.38)(terser@5.31.0)(typescript@5.3.3): + /@angular/build@18.0.1(@angular/compiler-cli@17.3.10)(less@4.2.0)(postcss@8.4.38)(terser@5.31.0)(typescript@5.4.5): resolution: {integrity: sha512-n2So6inJ4Prw3NOPC6keyVyFDryFNCJ4UUzmjtPOS8FyYqThWBcuXFzsUsUCFbXSUqVBZh9vxEqHqggnCAs9Og==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: @@ -502,7 +502,7 @@ packages: dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.1800.1 - '@angular/compiler-cli': 17.3.10(@angular/compiler@17.3.10)(typescript@5.3.3) + '@angular/compiler-cli': 17.3.10(@angular/compiler@17.3.10)(typescript@5.4.5) '@babel/core': 7.24.5 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-split-export-declaration': 7.24.5 @@ -525,7 +525,7 @@ packages: postcss: 8.4.38 sass: 1.77.2 semver: 7.6.2 - typescript: 5.3.3 + typescript: 5.4.5 undici: 6.18.0 vite: 5.2.11(less@4.2.0)(sass@1.77.2)(terser@5.31.0) watchpack: 2.4.1 @@ -551,7 +551,7 @@ packages: tslib: 2.6.2 dev: true - /@angular/compiler-cli@17.3.10(@angular/compiler@17.3.10)(typescript@5.3.3): + /@angular/compiler-cli@17.3.10(@angular/compiler@17.3.10)(typescript@5.4.5): resolution: {integrity: sha512-85SBphqRj3szac3FbeYgEZ+I6WaAlo5h7JX06BdjOLLiaoIwlFhLeAuG+jVekseV+95grFUxIsCMphWHi2e6hQ==} engines: {node: ^18.13.0 || >=20.9.0} hasBin: true @@ -567,7 +567,7 @@ packages: reflect-metadata: 0.2.2 semver: 7.6.2 tslib: 2.6.2 - typescript: 5.3.3 + typescript: 5.4.5 yargs: 17.7.2 transitivePeerDependencies: - supports-color @@ -3949,7 +3949,7 @@ packages: dev: true optional: true - /@ngtools/webpack@18.0.1(@angular/compiler-cli@17.3.10)(typescript@5.3.3)(webpack@5.91.0): + /@ngtools/webpack@18.0.1(@angular/compiler-cli@17.3.10)(typescript@5.4.5)(webpack@5.91.0): resolution: {integrity: sha512-uetWaviDUK3lgjKxN/FOxhEuZ5O3PVY8vWFAv1LkPSLFJbcKAQZlYbKnrn7uvQzyrkUc3W5+bYEGx2OcXMpb9g==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: @@ -3957,8 +3957,8 @@ packages: typescript: '>=5.4 <5.5' webpack: ^5.54.0 dependencies: - '@angular/compiler-cli': 17.3.10(@angular/compiler@17.3.10)(typescript@5.3.3) - typescript: 5.3.3 + '@angular/compiler-cli': 17.3.10(@angular/compiler@17.3.10)(typescript@5.4.5) + typescript: 5.4.5 webpack: 5.91.0(esbuild@0.21.3) dev: true @@ -4780,7 +4780,7 @@ packages: dependencies: '@types/yargs-parser': 21.0.3 - /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.3.3): + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -4792,10 +4792,10 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 eslint: 8.57.0 @@ -4803,13 +4803,13 @@ packages: ignore: 5.3.1 natural-compare: 1.4.0 semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.3.3) - typescript: 5.3.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3): + /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -4821,11 +4821,11 @@ packages: dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 eslint: 8.57.0 - typescript: 5.3.3 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: false @@ -4838,7 +4838,7 @@ packages: '@typescript-eslint/visitor-keys': 6.21.0 dev: false - /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.3.3): + /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -4848,12 +4848,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) debug: 4.3.4 eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.3.3) - typescript: 5.3.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: false @@ -4863,7 +4863,7 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dev: false - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5): resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -4879,13 +4879,13 @@ packages: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.3.3) - typescript: 5.3.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.3.3): + /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -4896,7 +4896,7 @@ packages: '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) eslint: 8.57.0 semver: 7.6.2 transitivePeerDependencies: @@ -6416,7 +6416,7 @@ packages: yaml: 1.10.2 dev: false - /cosmiconfig@9.0.0(typescript@5.3.3): + /cosmiconfig@9.0.0(typescript@5.4.5): resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: @@ -6429,7 +6429,7 @@ packages: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 - typescript: 5.3.3 + typescript: 5.4.5 dev: true /create-jest@29.7.0: @@ -7180,7 +7180,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -7198,7 +7198,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 @@ -8812,7 +8812,7 @@ packages: dependencies: jest-resolve: 29.7.0 - /jest-preset-angular@14.1.0(@angular-devkit/build-angular@18.0.1)(@angular/compiler-cli@17.3.10)(@angular/core@17.3.10)(@angular/platform-browser-dynamic@17.3.10)(@babel/core@7.24.6)(jest@29.7.0)(typescript@5.3.3): + /jest-preset-angular@14.1.0(@angular-devkit/build-angular@18.0.1)(@angular/compiler-cli@17.3.10)(@angular/core@17.3.10)(@angular/platform-browser-dynamic@17.3.10)(@babel/core@7.24.6)(jest@29.7.0)(typescript@5.4.5): resolution: {integrity: sha512-UJwPtpsAMl30UtBjHW0Ai0hhoKsNURC1dXH5tSYjumUsWR7iDke+oBEykz7uXv4rN+PWgeNIqkxo4KHQjOITlw==} engines: {node: ^14.15.0 || >=16.10.0} peerDependencies: @@ -8823,8 +8823,8 @@ packages: jest: ^29.0.0 typescript: '>=4.8' dependencies: - '@angular-devkit/build-angular': 18.0.1(@angular/compiler-cli@17.3.10)(jest@29.7.0)(typescript@5.3.3) - '@angular/compiler-cli': 17.3.10(@angular/compiler@17.3.10)(typescript@5.3.3) + '@angular-devkit/build-angular': 18.0.1(@angular/compiler-cli@17.3.10)(jest@29.7.0)(typescript@5.4.5) + '@angular/compiler-cli': 17.3.10(@angular/compiler@17.3.10)(typescript@5.4.5) '@angular/core': 17.3.10(rxjs@7.8.1)(zone.js@0.14.6) '@angular/platform-browser-dynamic': 17.3.10(@angular/common@17.3.10)(@angular/compiler@17.3.10)(@angular/core@17.3.10)(@angular/platform-browser@17.3.10) bs-logger: 0.2.6 @@ -8833,8 +8833,8 @@ packages: jest-environment-jsdom: 29.7.0 jest-util: 29.7.0 pretty-format: 29.7.0 - ts-jest: 29.1.3(@babel/core@7.24.6)(esbuild@0.21.4)(jest@29.7.0)(typescript@5.3.3) - typescript: 5.3.3 + ts-jest: 29.1.3(@babel/core@7.24.6)(esbuild@0.21.4)(jest@29.7.0)(typescript@5.4.5) + typescript: 5.4.5 optionalDependencies: esbuild: 0.21.4 transitivePeerDependencies: @@ -10459,7 +10459,7 @@ packages: engines: {node: '>= 0.4'} dev: false - /postcss-loader@8.1.1(postcss@8.4.38)(typescript@5.3.3)(webpack@5.91.0): + /postcss-loader@8.1.1(postcss@8.4.38)(typescript@5.4.5)(webpack@5.91.0): resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==} engines: {node: '>= 18.12.0'} peerDependencies: @@ -10472,7 +10472,7 @@ packages: webpack: optional: true dependencies: - cosmiconfig: 9.0.0(typescript@5.3.3) + cosmiconfig: 9.0.0(typescript@5.4.5) jiti: 1.21.0 postcss: 8.4.38 semver: 7.6.2 @@ -11827,16 +11827,16 @@ packages: engines: {node: '>=8'} dev: false - /ts-api-utils@1.3.0(typescript@5.3.3): + /ts-api-utils@1.3.0(typescript@5.4.5): resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.3.3 + typescript: 5.4.5 dev: false - /ts-jest@29.1.3(@babel/core@7.24.6)(esbuild@0.21.4)(jest@29.7.0)(typescript@5.3.3): + /ts-jest@29.1.3(@babel/core@7.24.6)(esbuild@0.21.4)(jest@29.7.0)(typescript@5.4.5): resolution: {integrity: sha512-6L9qz3ginTd1NKhOxmkP0qU3FyKjj5CPoY+anszfVn6Pmv/RIKzhiMCsH7Yb7UvJR9I2A64rm4zQl531s2F1iw==} engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true @@ -11870,7 +11870,7 @@ packages: lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.6.2 - typescript: 5.3.3 + typescript: 5.4.5 yargs-parser: 21.1.1 /tsconfig-paths@3.15.0: @@ -11999,8 +11999,8 @@ packages: typed-array-byte-offset: 1.0.2 dev: false - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} hasBin: true