From a4513aa0dd99a8735e9948944af48066c392105d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 22:22:50 +0000 Subject: [PATCH 1/5] build(deps-dev): Bump @linzjs/style from 5.1.0 to 5.2.0 Bumps [@linzjs/style](https://github.com/linz/style-js) from 5.1.0 to 5.2.0. - [Release notes](https://github.com/linz/style-js/releases) - [Changelog](https://github.com/linz/style-js/blob/master/CHANGELOG.md) - [Commits](https://github.com/linz/style-js/compare/v5.1.0...v5.2.0) --- updated-dependencies: - dependency-name: "@linzjs/style" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 683 ++++++++++------------------------------------ package.json | 2 +- 2 files changed, 145 insertions(+), 540 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7a7f3648..19421982 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,7 +34,7 @@ }, "devDependencies": { "@chunkd/source-memory": "^10.1.0", - "@linzjs/style": "^5.1.0", + "@linzjs/style": "^5.2.0", "@types/node": "^20.12.10", "@types/prettier": "^3.0.0", "stac-ts": "^1.0.0" @@ -1123,9 +1123,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -1168,9 +1168,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", - "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1269,13 +1269,13 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -1296,9 +1296,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "node_modules/@linzjs/geojson": { @@ -1315,21 +1315,21 @@ } }, "node_modules/@linzjs/style": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@linzjs/style/-/style-5.1.0.tgz", - "integrity": "sha512-uMMtbqHwnvC4t4jSKRb2govImblH84Dn72NIAJUfFmaLEKplxKxf7r9dr+gRwKfZ2dU3/hsSnzt/F/2lMrjULQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@linzjs/style/-/style-5.2.0.tgz", + "integrity": "sha512-GrSItsMptMnyADLRE2k70jAdOxXB3mSiQE8u+aCqEDSUJyQoHl9Wh1q1spCjIODItVTbpuuFA3aemav0T6wamw==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "^6.11.0", - "@typescript-eslint/parser": "^6.11.0", - "eslint": "^8.53.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-prettier": "^5.0.1", + "@typescript-eslint/eslint-plugin": "^6.18.1", + "@typescript-eslint/parser": "^6.18.1", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.2", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-simple-import-sort": "^10.0.0", - "prettier": "^3.1.0", - "typescript": "^5.2.2" + "prettier": "^3.1.1", + "typescript": "^5.3.3" }, "bin": { "linz-style-install": "linz-style-install.mjs" @@ -1513,19 +1513,11 @@ "integrity": "sha512-kB+NJ5Br56ZhElKsf0pM7/PQfrDdDVMRz8f0JM6eVOGE+L89z9hwcst9QvWBBnazzuqGTGtPsJNZoQ1JdNiGSQ==", "peer": true }, - "node_modules/@pkgr/utils": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", - "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "fast-glob": "^3.3.0", - "is-glob": "^4.0.3", - "open": "^9.1.0", - "picocolors": "^1.0.0", - "tslib": "^2.6.0" - }, "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -2206,22 +2198,22 @@ } }, "node_modules/@types/semver": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.5.tgz", - "integrity": "sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.11.0.tgz", - "integrity": "sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.11.0", - "@typescript-eslint/type-utils": "6.11.0", - "@typescript-eslint/utils": "6.11.0", - "@typescript-eslint/visitor-keys": "6.11.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -2247,15 +2239,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.11.0.tgz", - "integrity": "sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.11.0", - "@typescript-eslint/types": "6.11.0", - "@typescript-eslint/typescript-estree": "6.11.0", - "@typescript-eslint/visitor-keys": "6.11.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4" }, "engines": { @@ -2275,13 +2267,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.11.0.tgz", - "integrity": "sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.11.0", - "@typescript-eslint/visitor-keys": "6.11.0" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2292,13 +2284,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.11.0.tgz", - "integrity": "sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.11.0", - "@typescript-eslint/utils": "6.11.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -2319,9 +2311,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.11.0.tgz", - "integrity": "sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2332,16 +2324,17 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.11.0.tgz", - "integrity": "sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.11.0", - "@typescript-eslint/visitor-keys": "6.11.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", + "minimatch": "9.0.3", "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, @@ -2358,18 +2351,42 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/utils": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.11.0.tgz", - "integrity": "sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.11.0", - "@typescript-eslint/types": "6.11.0", - "@typescript-eslint/typescript-estree": "6.11.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", "semver": "^7.5.4" }, "engines": { @@ -2384,12 +2401,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.11.0.tgz", - "integrity": "sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.11.0", + "@typescript-eslint/types": "6.21.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -2426,9 +2443,9 @@ } }, "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2721,15 +2738,6 @@ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/bignumber.js": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", @@ -2753,18 +2761,6 @@ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" }, - "node_modules/bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "dev": true, - "dependencies": { - "big-integer": "^1.6.44" - }, - "engines": { - "node": ">= 5.10.0" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2803,21 +2799,6 @@ "optional": true, "peer": true }, - "node_modules/bundle-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", - "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", - "dev": true, - "dependencies": { - "run-applescript": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -2937,52 +2918,6 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/default-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", - "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", - "dev": true, - "dependencies": { - "bundle-name": "^3.0.0", - "default-browser-id": "^3.0.0", - "execa": "^7.1.1", - "titleize": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", - "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", - "dev": true, - "dependencies": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/define-properties": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", @@ -3207,16 +3142,16 @@ } }, "node_modules/eslint": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", - "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.53.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -3262,9 +3197,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -3274,23 +3209,24 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", - "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.5" + "synckit": "^0.8.6" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/prettier" + "url": "https://opencollective.com/eslint-plugin-prettier" }, "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", + "eslint-config-prettier": "*", "prettier": ">=3.0.0" }, "peerDependenciesMeta": { @@ -3499,41 +3435,6 @@ "node": ">=0.8.x" } }, - "node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -3826,18 +3727,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -3887,9 +3776,9 @@ } }, "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -4115,15 +4004,6 @@ "node": ">= 6" } }, - "node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "dev": true, - "engines": { - "node": ">=14.18.0" - } - }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -4302,21 +4182,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -4365,24 +4230,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", @@ -4486,7 +4333,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "devOptional": true, + "optional": true, + "peer": true, "engines": { "node": ">=8" }, @@ -4577,33 +4425,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-wsl/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -4760,7 +4581,8 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "devOptional": true, + "optional": true, + "peer": true, "dependencies": { "yallist": "^4.0.0" }, @@ -4768,12 +4590,6 @@ "node": ">=10" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -4837,18 +4653,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -4903,33 +4707,6 @@ "node": ">= 6.13.0" } }, - "node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -5065,39 +4842,6 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", - "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", - "dev": true, - "dependencies": { - "default-browser": "^4.0.0", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -5250,12 +4994,6 @@ "pbf": "bin/pbf" } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -5359,9 +5097,9 @@ } }, "node_modules/prettier": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", - "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "bin": { "prettier": "bin/prettier.cjs" }, @@ -5654,98 +5392,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/run-applescript": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", - "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", - "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/run-applescript/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/run-applescript/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/run-applescript/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/run-applescript/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -5835,13 +5481,10 @@ } }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.1.tgz", + "integrity": "sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -5884,12 +5527,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -6040,18 +5677,6 @@ "node": ">=8" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -6100,13 +5725,13 @@ } }, "node_modules/synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", "dev": true, "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -6156,18 +5781,6 @@ "real-require": "^0.2.0" } }, - "node_modules/titleize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", - "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -6188,12 +5801,12 @@ "peer": true }, "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "engines": { - "node": ">=16.13.0" + "node": ">=16" }, "peerDependencies": { "typescript": ">=4.2.0" @@ -6294,9 +5907,9 @@ } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -6340,15 +5953,6 @@ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -6511,7 +6115,8 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "devOptional": true + "optional": true, + "peer": true }, "node_modules/yocto-queue": { "version": "1.0.0", diff --git a/package.json b/package.json index 7b3e5ea2..1600afc5 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ }, "devDependencies": { "@chunkd/source-memory": "^10.1.0", - "@linzjs/style": "^5.1.0", + "@linzjs/style": "^5.2.0", "@types/node": "^20.12.10", "@types/prettier": "^3.0.0", "stac-ts": "^1.0.0" From c910ca6af3b0f2c4197f13a1d2b001c7133dc77a Mon Sep 17 00:00:00 2001 From: Victor Engmark Date: Wed, 8 May 2024 10:25:09 +1200 Subject: [PATCH 2/5] fix: Auto-format code with new style library --- .../__test__/tileindex.validate.test.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/commands/tileindex-validate/__test__/tileindex.validate.test.ts b/src/commands/tileindex-validate/__test__/tileindex.validate.test.ts index 464198dc..4708c23b 100644 --- a/src/commands/tileindex-validate/__test__/tileindex.validate.test.ts +++ b/src/commands/tileindex-validate/__test__/tileindex.validate.test.ts @@ -100,14 +100,14 @@ describe('tiffLocation', () => { TiffAy29.images[0].origin[1] = 6018000; const location = await extractTiffLocations([TiffAs21, TiffAy29, TiffAs21, TiffAy29], 1000); const duplicates = groupByTileName(location); - assert.deepEqual(duplicates.get('AS21_1000_0101')?.map((c) => c.source), [ - 's3://path/AS21_1000_0101.tiff', - 's3://path/AS21_1000_0101.tiff', - ]); - assert.deepEqual(duplicates.get('AY29_1000_0101')?.map((c) => c.source), [ - 's3://path/AY29_1000_0101.tiff', - 's3://path/AY29_1000_0101.tiff', - ]); + assert.deepEqual( + duplicates.get('AS21_1000_0101')?.map((c) => c.source), + ['s3://path/AS21_1000_0101.tiff', 's3://path/AS21_1000_0101.tiff'], + ); + assert.deepEqual( + duplicates.get('AY29_1000_0101')?.map((c) => c.source), + ['s3://path/AY29_1000_0101.tiff', 's3://path/AY29_1000_0101.tiff'], + ); }); it('should find tiles from 3857', async () => { From 3d529763783cf137484f7eecb46da93ed7c76c3a Mon Sep 17 00:00:00 2001 From: Victor Engmark Date: Wed, 8 May 2024 10:25:40 +1200 Subject: [PATCH 3/5] fix: Avoid implicit conversion --- src/commands/path/path.generate.ts | 6 +++--- src/commands/stac-github-import/stac.github.import.ts | 2 +- .../tileindex-validate/__test__/tileindex.validate.test.ts | 2 +- src/commands/tileindex-validate/tileindex.validate.ts | 6 +++--- src/utils/geotiff.ts | 3 ++- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/commands/path/path.generate.ts b/src/commands/path/path.generate.ts index 105040bc..c967a0ea 100644 --- a/src/commands/path/path.generate.ts +++ b/src/commands/path/path.generate.ts @@ -196,7 +196,7 @@ export async function loadFirstTiff(source: string, collection: StacCollection): export function extractGsd(tiff: Tiff): number { const gsd = tiff.images[0]?.resolution[0]; if (gsd == null) { - throw new Error(`Missing resolution tiff tag: ${tiff.source.url}`); + throw new Error(`Missing resolution tiff tag: ${tiff.source.url.href}`); } return gsd; } @@ -204,9 +204,9 @@ export function extractGsd(tiff: Tiff): number { export function extractEpsg(tiff: Tiff): number { const epsg = tiff.images[0]?.epsg; if (epsg == null) { - throw new Error(`Missing epsg tiff tag: ${tiff.source.url}`); + throw new Error(`Missing epsg tiff tag: ${tiff.source.url.href}`); } else if (!Epsg.Codes.has(epsg)) { - throw new Error(`Invalid EPSG code: ${epsg} on tiff: ${tiff.source.url}`); + throw new Error(`Invalid EPSG code: ${epsg} on tiff: ${tiff.source.url.href}`); } return epsg; } diff --git a/src/commands/stac-github-import/stac.github.import.ts b/src/commands/stac-github-import/stac.github.import.ts index 20c33988..fbfd789b 100644 --- a/src/commands/stac-github-import/stac.github.import.ts +++ b/src/commands/stac-github-import/stac.github.import.ts @@ -83,7 +83,7 @@ export const commandStacGithubImport = command({ } catch (e) { if (args.repoName === imageryRepo) throw e; } - prBody.push(`**ODR destination path:** \`${args.target}\``); + prBody.push(`**ODR destination path:** \`${args.target.href}\``); // Load information from the template inside the repo logger.info({ template: fsa.joinAll('template', 'catalog.json') }, 'Stac:ReadTemplate'); diff --git a/src/commands/tileindex-validate/__test__/tileindex.validate.test.ts b/src/commands/tileindex-validate/__test__/tileindex.validate.test.ts index 4708c23b..d0652d3a 100644 --- a/src/commands/tileindex-validate/__test__/tileindex.validate.test.ts +++ b/src/commands/tileindex-validate/__test__/tileindex.validate.test.ts @@ -288,7 +288,7 @@ describe('is8BitsTiff', () => { const testTiff = await createTiff('./src/commands/tileindex-validate/__test__/data/16b.tiff'); await assert.rejects(validate8BitsTiff(testTiff), { name: 'Error', - message: `${testTiff.source.url} is not a 8 bits TIFF`, + message: `${testTiff.source.url.href} is not a 8 bits TIFF`, }); }); }); diff --git a/src/commands/tileindex-validate/tileindex.validate.ts b/src/commands/tileindex-validate/tileindex.validate.ts index 8032817d..c3cba926 100644 --- a/src/commands/tileindex-validate/tileindex.validate.ts +++ b/src/commands/tileindex-validate/tileindex.validate.ts @@ -456,14 +456,14 @@ export function getTileName(x: number, y: number, gridSize: GridSize): string { */ export async function validate8BitsTiff(tiff: Tiff): Promise { const baseImage = tiff.images[0]; - if (baseImage === undefined) throw new Error(`Can't get base image for ${tiff.source.url}`); + if (baseImage === undefined) throw new Error(`Can't get base image for ${tiff.source.url.href}`); const bitsPerSample = await baseImage.fetch(TiffTag.BitsPerSample); if (bitsPerSample == null) { - throw new Error(`Failed to extract band information from ${tiff.source.url}`); + throw new Error(`Failed to extract band information from ${tiff.source.url.href}`); } if (!bitsPerSample.every((currentNumberBits) => currentNumberBits === 8)) { - throw new Error(`${tiff.source.url} is not a 8 bits TIFF`); + throw new Error(`${tiff.source.url.href} is not a 8 bits TIFF`); } } diff --git a/src/utils/geotiff.ts b/src/utils/geotiff.ts index 5ade834c..12dd1651 100644 --- a/src/utils/geotiff.ts +++ b/src/utils/geotiff.ts @@ -54,7 +54,8 @@ export const PixelIsPoint = 2; */ export async function findBoundingBox(tiff: Tiff): Promise<[number, number, number, number]> { const img = tiff.images[0]; - if (img == null) throw new Error(`Failed to find bounding box/origin - no images found in file: ${tiff.source.url}`); + if (img == null) + throw new Error(`Failed to find bounding box/origin - no images found in file: ${tiff.source.url.href}`); const size = img.size; // If the tiff has geo location information just read it from the tiff From 74fce047aba0373ebe7141faf9354170d79be021 Mon Sep 17 00:00:00 2001 From: Victor Engmark Date: Wed, 8 May 2024 10:46:53 +1200 Subject: [PATCH 4/5] fix: Mark ignored void promises as such --- src/__test__/eai_againRetry.test.ts | 10 +-- src/__test__/fqdn.test.ts | 10 +-- .../__test__/create-mapsheet.test.ts | 6 +- src/commands/copy/__test__/copy.test.ts | 8 +-- .../__test__/create-manifest.test.ts | 14 ++-- src/commands/group/__test__/group.test.ts | 18 ++--- .../path/__test__/generate.path.test.ts | 68 +++++++++---------- .../__test__/stac.catalog.test.ts | 14 ++-- .../__test__/stac.link.test.ts | 8 +-- .../stac-sync/__test__/stac.sync.test.ts | 8 +-- .../__test__/stac.validate.test.ts | 20 +++--- .../__test__/tileindex.validate.test.ts | 50 +++++++------- src/utils/__test__/argo.test.ts | 8 +-- src/utils/__test__/config.test.ts | 4 +- src/utils/__test__/filter.test.ts | 14 ++-- src/utils/__test__/geotiff.test.ts | 20 +++--- src/utils/__test__/mapsheet.test.ts | 18 ++--- src/utils/__test__/slugify.test.ts | 28 ++++---- 18 files changed, 163 insertions(+), 163 deletions(-) diff --git a/src/__test__/eai_againRetry.test.ts b/src/__test__/eai_againRetry.test.ts index 3f1decac..04965c19 100644 --- a/src/__test__/eai_againRetry.test.ts +++ b/src/__test__/eai_againRetry.test.ts @@ -20,23 +20,23 @@ function fakeNextBuilder(failCount: number): BuildHandler { +void describe('eai_againRetryMiddleware', () => { beforeEach(() => { callCount = 0; }); - it('should run next once if it succeeds', () => { + void it('should run next once if it succeeds', () => { const fakeNext = fakeNextBuilder(0); eaiAgainBuilder(() => 0)(fakeNext, {})({ input: {}, request: {} }); assert.equal(callCount, 1); }); - it('should try three times when getting EAI_AGAIN errors', async () => { + void it('should try three times when getting EAI_AGAIN errors', async () => { const fakeNext = fakeNextBuilder(2); await eaiAgainBuilder(() => 0)(fakeNext, {})({ input: {}, request: {} }); assert.equal(callCount, 3); }); - it('should throw error if fails with unknown error type', () => { + void it('should throw error if fails with unknown error type', () => { const fakeNext: BuildHandler = () => { return Promise.reject({ message: 'ERROR MESSAGE' }); }; @@ -45,7 +45,7 @@ describe('eai_againRetryMiddleware', () => { }); }); - it('should throw error if next fails with EAI_AGAIN three times', () => { + void it('should throw error if next fails with EAI_AGAIN three times', () => { const fakeNext = fakeNextBuilder(3); assert.rejects(eaiAgainBuilder(() => 0)(fakeNext, {})({ input: {}, request: {} }), { message: 'EAI_AGAIN maximum tries (3) exceeded', diff --git a/src/__test__/fqdn.test.ts b/src/__test__/fqdn.test.ts index 64e7f3ff..95ca1b46 100644 --- a/src/__test__/fqdn.test.ts +++ b/src/__test__/fqdn.test.ts @@ -5,31 +5,31 @@ import { FinalizeHandler, MetadataBearer } from '@smithy/types'; import { fqdn } from '../fs.register.js'; -describe('fqdnMiddleware', () => { +void describe('fqdnMiddleware', () => { const fakeNext: FinalizeHandler = () => { return Promise.resolve({ output: { $metadata: {} }, response: {} }); }; const fakeRequest = { input: {}, request: { hostname: 'nz-imagery.s3.ap-southeast-2.amazonaws.com' } }; - it('should add FQDN to s3 requests', () => { + void it('should add FQDN to s3 requests', () => { fakeRequest.request.hostname = 'nz-imagery.s3.ap-southeast-2.amazonaws.com'; fqdn(fakeNext, {})(fakeRequest); assert.equal(fakeRequest.request.hostname, 'nz-imagery.s3.ap-southeast-2.amazonaws.com.'); }); - it('should not add for other services', () => { + void it('should not add for other services', () => { fakeRequest.request.hostname = 'logs.ap-southeast-2.amazonaws.com'; fqdn(fakeNext, {})(fakeRequest); assert.equal(fakeRequest.request.hostname, 'logs.ap-southeast-2.amazonaws.com'); }); - it('should not add for other regions', () => { + void it('should not add for other regions', () => { fakeRequest.request.hostname = 'nz-imagery.s3.us-east-1.amazonaws.com'; fqdn(fakeNext, {})(fakeRequest); assert.equal(fakeRequest.request.hostname, 'nz-imagery.s3.us-east-1.amazonaws.com'); }); - it('should not add for unknown hosts', () => { + void it('should not add for unknown hosts', () => { fakeRequest.request.hostname = 'google.com'; fqdn(fakeNext, {})(fakeRequest); assert.equal(fakeRequest.request.hostname, 'google.com'); diff --git a/src/commands/basemaps-mapsheet/__test__/create-mapsheet.test.ts b/src/commands/basemaps-mapsheet/__test__/create-mapsheet.test.ts index 72587337..3b0728e5 100644 --- a/src/commands/basemaps-mapsheet/__test__/create-mapsheet.test.ts +++ b/src/commands/basemaps-mapsheet/__test__/create-mapsheet.test.ts @@ -6,7 +6,7 @@ import { FeatureCollection } from 'geojson'; import { createMapSheet } from '../create-mapsheet.js'; -describe('copyFiles', () => { +void describe('copyFiles', () => { const rest: FeatureCollection = { type: 'FeatureCollection', features: [ @@ -123,7 +123,7 @@ describe('copyFiles', () => { mem.put(satellite); mem.put(southland); - it('Should create the correct map sheets', async () => { + void it('Should create the correct map sheets', async () => { const outputs = await createMapSheet(aerial, mem, rest, undefined, undefined); assert.deepEqual(outputs, [ @@ -137,7 +137,7 @@ describe('copyFiles', () => { ]); }); - it('Should exclude the satellite', async () => { + void it('Should exclude the satellite', async () => { const outputs = await createMapSheet(aerial, mem, rest, undefined, new RegExp('satellite', 'i')); assert.deepEqual(outputs, [ diff --git a/src/commands/copy/__test__/copy.test.ts b/src/commands/copy/__test__/copy.test.ts index 864c9f83..517d2b7e 100644 --- a/src/commands/copy/__test__/copy.test.ts +++ b/src/commands/copy/__test__/copy.test.ts @@ -6,7 +6,7 @@ import { FsMemory } from '@chunkd/source-memory'; import { worker } from '../copy-worker.js'; -describe('copyFiles', () => { +void describe('copyFiles', () => { const memory = new FsMemory(); fsa.register('memory://', memory); @@ -14,7 +14,7 @@ describe('copyFiles', () => { memory.files.clear(); }); - it('should copy to the target location', async () => { + void it('should copy to the target location', async () => { await Promise.all([ fsa.write('memory://source/topographic.json', Buffer.from(JSON.stringify({ test: true })), { contentType: 'application/json', @@ -64,7 +64,7 @@ describe('copyFiles', () => { assert.equal(String(memory.files.get('memory://target/topographic.png')?.buffer), 'test'); }); - it('should default to COG/json', async () => { + void it('should default to COG/json', async () => { await Promise.all([ fsa.write('memory://source/topographic.json', Buffer.from(JSON.stringify({ test: true })), { contentType: 'application/octet-stream', @@ -108,7 +108,7 @@ describe('copyFiles', () => { assert.equal(tiffTarget?.contentType, 'image/tiff; application=geotiff; profile=cloud-optimized'); }); - it('should not default COG/json when fixContentType=false', async () => { + void it('should not default COG/json when fixContentType=false', async () => { await Promise.all([ fsa.write('memory://source/topographic.json', Buffer.from(JSON.stringify({ test: true })), { contentType: 'application/octet-stream', diff --git a/src/commands/create-manifest/__test__/create-manifest.test.ts b/src/commands/create-manifest/__test__/create-manifest.test.ts index 26f9a2b7..7dd1070c 100644 --- a/src/commands/create-manifest/__test__/create-manifest.test.ts +++ b/src/commands/create-manifest/__test__/create-manifest.test.ts @@ -6,13 +6,13 @@ import { FsMemory } from '@chunkd/source-memory'; import { createManifest, validatePaths } from '../create-manifest.js'; -describe('createManifest', () => { +void describe('createManifest', () => { beforeEach(() => { memory.files.clear(); }); const memory = new FsMemory(); fsa.register('memory://', memory); - it('should copy to the target location', async () => { + void it('should copy to the target location', async () => { await Promise.all([ fsa.write('memory://source/topographic.json', Buffer.from(JSON.stringify({ test: true }))), fsa.write('memory://source/foo/bar/topographic.png', Buffer.from('test')), @@ -31,7 +31,7 @@ describe('createManifest', () => { ]); }); - it('should transform files', async () => { + void it('should transform files', async () => { await Promise.all([ fsa.write('memory://source/topographic.json', Buffer.from(JSON.stringify({ test: true }))), fsa.write('memory://source/foo/bar/topographic.png', Buffer.from('test')), @@ -52,7 +52,7 @@ describe('createManifest', () => { ]); }); - it('should copy to the target location without flattening', async () => { + void it('should copy to the target location without flattening', async () => { await Promise.all([ fsa.write('memory://source/topographic.json', Buffer.from(JSON.stringify({ test: true }))), fsa.write('memory://source/foo/bar/topographic.png', Buffer.from('test')), @@ -71,7 +71,7 @@ describe('createManifest', () => { ]); }); - it('should copy single file to the target location without a trailing /', async () => { + void it('should copy single file to the target location without a trailing /', async () => { await Promise.all([fsa.write('memory://source/topographic.json', Buffer.from(JSON.stringify({ test: true })))]); const outputFiles = await createManifest( @@ -87,12 +87,12 @@ describe('createManifest', () => { ]); }); describe('validatePaths', () => { - it('Should throw error for mismatched paths', () => { + void it('Should throw error for mismatched paths', () => { assert.throws(() => { validatePaths('memory://source/', 'memory://target/sub/test.tiff'); }, Error); }); - it('Should also throw error for mismatched paths', () => { + void it('Should also throw error for mismatched paths', () => { assert.throws(() => { validatePaths('memory://source/test.tiff', 'memory://target/sub/'); }, Error); diff --git a/src/commands/group/__test__/group.test.ts b/src/commands/group/__test__/group.test.ts index 112564b9..d69ae892 100644 --- a/src/commands/group/__test__/group.test.ts +++ b/src/commands/group/__test__/group.test.ts @@ -6,8 +6,8 @@ import { FsMemory } from '@chunkd/source-memory'; import { commandGroup, groupItems } from '../group.js'; -describe('groupItems', () => { - it('should group items', () => { +void describe('groupItems', () => { + void it('should group items', () => { assert.deepEqual(groupItems([1, 2, 3, 4], 2), [ [1, 2], [3, 4], @@ -16,23 +16,23 @@ describe('groupItems', () => { assert.deepEqual(groupItems([1, 2, 3, 4], 3), [[1, 2, 3], [4]]); }); - it('should group max', () => { + void it('should group max', () => { assert.deepEqual(groupItems([1, 2, 3, 4], 100), [[1, 2, 3, 4]]); }); - it('should group min', () => { + void it('should group min', () => { assert.deepEqual(groupItems([1, 2, 3, 4], 1), [[1], [2], [3], [4]]); }); }); -describe('group', () => { +void describe('group', () => { const memoryFs = new FsMemory(); before(() => { fsa.register('/tmp/group', memoryFs); }); - it('should load from a JSON array', async () => { + void it('should load from a JSON array', async () => { await commandGroup.handler({ inputs: [JSON.stringify([1, 2, 3, 4])], forceOutput: true, size: 50, ...values }); assert.deepEqual(await fsa.readJson('/tmp/group/output.json'), ['000']); assert.deepEqual(await fsa.readJson('/tmp/group/output/000.json'), [1, 2, 3, 4]); @@ -44,7 +44,7 @@ describe('group', () => { fromFile: undefined, }; - it('should load from multiple JSON arrays', async () => { + void it('should load from multiple JSON arrays', async () => { await commandGroup.handler({ inputs: [JSON.stringify([1, 2, 3, 4]), JSON.stringify(['alpha'])], forceOutput: true, @@ -57,7 +57,7 @@ describe('group', () => { assert.deepEqual(await fsa.readJson('/tmp/group/output/001.json'), [4, 'alpha']); }); - it('should load from strings', async () => { + void it('should load from strings', async () => { await commandGroup.handler({ inputs: ['s3://foo/bar', JSON.stringify([1, 2, 3, 4]), JSON.stringify(['alpha'])], forceOutput: true, @@ -69,7 +69,7 @@ describe('group', () => { assert.deepEqual(await fsa.readJson('/tmp/group/output/001.json'), [3, 4, 'alpha']); }); - it('should load from a file', async () => { + void it('should load from a file', async () => { await fsa.write('/tmp/group/input.json', Buffer.from(JSON.stringify([1, 2, 3, 4, 5]))); await commandGroup.handler({ inputs: [], diff --git a/src/commands/path/__test__/generate.path.test.ts b/src/commands/path/__test__/generate.path.test.ts index 7f4316f8..1522dcef 100644 --- a/src/commands/path/__test__/generate.path.test.ts +++ b/src/commands/path/__test__/generate.path.test.ts @@ -15,8 +15,8 @@ import { StacCollectionLinz, } from '../path.generate.js'; -describe('GeneratePathImagery', () => { - it('Should match - geographic description', () => { +void describe('GeneratePathImagery', () => { + void it('Should match - geographic description', () => { const metadata: PathMetadata = { targetBucketName: 'nz-imagery', category: 'urban-aerial-photos', @@ -28,7 +28,7 @@ describe('GeneratePathImagery', () => { }; assert.equal(generatePath(metadata), 's3://nz-imagery/hawkes-bay/napier_2017-2018_0.05m/rgb/2193/'); }); - it('Should match - event', () => { + void it('Should match - event', () => { const metadata: PathMetadata = { targetBucketName: 'nz-imagery', category: 'rural-aerial-photos', @@ -40,7 +40,7 @@ describe('GeneratePathImagery', () => { }; assert.equal(generatePath(metadata), 's3://nz-imagery/hawkes-bay/north-island-weather-event_2023_0.25m/rgb/2193/'); }); - it('Should match - no optional metadata', () => { + void it('Should match - no optional metadata', () => { const metadata: PathMetadata = { targetBucketName: 'nz-imagery', category: 'urban-aerial-photos', @@ -54,8 +54,8 @@ describe('GeneratePathImagery', () => { }); }); -describe('GeneratePathElevation', () => { - it('Should match - dem (no optional metadata)', () => { +void describe('GeneratePathElevation', () => { + void it('Should match - dem (no optional metadata)', () => { const metadata: PathMetadata = { targetBucketName: 'nz-elevation', category: 'dem', @@ -67,7 +67,7 @@ describe('GeneratePathElevation', () => { }; assert.equal(generatePath(metadata), 's3://nz-elevation/auckland/auckland_2023/dem_1m/2193/'); }); - it('Should match - dsm (no optional metadata)', () => { + void it('Should match - dsm (no optional metadata)', () => { const metadata: PathMetadata = { targetBucketName: 'nz-elevation', category: 'dsm', @@ -81,8 +81,8 @@ describe('GeneratePathElevation', () => { }); }); -describe('GeneratePathSatelliteImagery', () => { - it('Should match - geographic description & event', () => { +void describe('GeneratePathSatelliteImagery', () => { + void it('Should match - geographic description & event', () => { const metadata: PathMetadata = { targetBucketName: 'nz-imagery', category: 'satellite-imagery', @@ -99,8 +99,8 @@ describe('GeneratePathSatelliteImagery', () => { }); }); -describe('GeneratePathHistoricImagery', () => { - it('Should error', () => { +void describe('GeneratePathHistoricImagery', () => { + void it('Should error', () => { const metadata: PathMetadata = { targetBucketName: 'nz-imagery', category: 'scanned-aerial-imagery', @@ -116,58 +116,58 @@ describe('GeneratePathHistoricImagery', () => { }); }); -describe('formatName', () => { - it('Should match - region', () => { +void describe('formatName', () => { + void it('Should match - region', () => { assert.equal(formatName('hawkes-bay', undefined), 'hawkes-bay'); }); - it('Should match - region & geographic description', () => { + void it('Should match - region & geographic description', () => { assert.equal(formatName('hawkes-bay', 'Napier'), 'napier'); }); - it('Should match - region & event', () => { + void it('Should match - region & event', () => { assert.equal(formatName('canterbury', 'Christchurch Earthquake'), 'christchurch-earthquake'); }); }); -describe('epsg', () => { +void describe('epsg', () => { const TiffEPSG = new FakeCogTiff('s3://path/fake.tiff', { epsg: 2193, }); - it('Should return EPSG code', () => { + void it('Should return EPSG code', () => { assert.equal(extractEpsg(TiffEPSG), '2193'); }); const TiffNoEPSG = new FakeCogTiff('s3://path/fake.tiff', { epsg: undefined }); - it('Should fail - unable to find EPSG code', () => { + void it('Should fail - unable to find EPSG code', () => { assert.throws(() => { extractEpsg(TiffNoEPSG); }, Error); }); const TiffInvalidEPSG = new FakeCogTiff('s3://path/fake.tiff', { epsg: 2319 }); - it('Should fail - invalid EPSG code', () => { + void it('Should fail - invalid EPSG code', () => { assert.throws(() => { extractEpsg(TiffInvalidEPSG); }, Error); }); }); -describe('gsd', () => { +void describe('gsd', () => { const TiffGsd = new FakeCogTiff('s3://path/fake.tiff', { resolution: [0.3], }); - it('Should return resolution', () => { + void it('Should return resolution', () => { assert.equal(extractGsd(TiffGsd), 0.3); }); const TiffNoGsd = new FakeCogTiff('s3://path/fake.tiff', { resolution: [], }); - it('Should fail - unable to find resolution', () => { + void it('Should fail - unable to find resolution', () => { assert.throws(() => { extractGsd(TiffNoGsd); }, Error); }); }); -describe('category', async () => { - it('Should return category', async () => { +void describe('category', () => { + void it('Should return category', async () => { const collection = await fsa.readJson( './src/commands/path/__test__/sample.json', ); @@ -175,8 +175,8 @@ describe('category', async () => { }); }); -describe('geographicDescription', async () => { - it('Should return geographic description', async () => { +void describe('geographicDescription', () => { + void it('Should return geographic description', async () => { const collection = await fsa.readJson( './src/commands/path/__test__/sample.json', ); @@ -192,7 +192,7 @@ describe('geographicDescription', async () => { }; assert.equal(generatePath(metadata), 's3://bucket/manawatu-whanganui/palmerston-north_2020_0.05m/rgb/2193/'); }); - it('Should return undefined - no geographic description metadata', async () => { + void it('Should return undefined - no geographic description metadata', async () => { const collection = await fsa.readJson( './src/commands/path/__test__/sample.json', ); @@ -211,8 +211,8 @@ describe('geographicDescription', async () => { }); }); -describe('region', async () => { - it('Should return region', async () => { +void describe('region', () => { + void it('Should return region', async () => { const collection = await fsa.readJson( './src/commands/path/__test__/sample.json', ); @@ -220,28 +220,28 @@ describe('region', async () => { }); }); -describe('formatDate', async () => { - it('Should return date as single year', async () => { +void describe('formatDate', () => { + void it('Should return date as single year', async () => { const collection = await fsa.readJson( './src/commands/path/__test__/sample.json', ); assert.equal(formatDate(collection), '2023'); }); - it('Should return date as two years', async () => { + void it('Should return date as two years', async () => { const collection = await fsa.readJson( './src/commands/path/__test__/sample.json', ); collection.extent.temporal.interval[0] = ['2022-06-01T11:00:00Z', '2023-06-01T11:00:00Z']; assert.equal(formatDate(collection), '2022-2023'); }); - it('Should use Pacific/Auckland time zone', async () => { + void it('Should use Pacific/Auckland time zone', async () => { const collection = await fsa.readJson( './src/commands/path/__test__/sample.json', ); collection.extent.temporal.interval[0] = ['2012-12-31T11:00:00Z', '2014-12-30T11:00:00Z']; assert.equal(formatDate(collection), '2013-2014'); }); - it('Should fail - unable to retrieve date', async () => { + void it('Should fail - unable to retrieve date', async () => { const collection = await fsa.readJson( './src/commands/path/__test__/sample.json', ); diff --git a/src/commands/stac-catalog/__test__/stac.catalog.test.ts b/src/commands/stac-catalog/__test__/stac.catalog.test.ts index 8a9a02fc..2ee5b9f9 100644 --- a/src/commands/stac-catalog/__test__/stac.catalog.test.ts +++ b/src/commands/stac-catalog/__test__/stac.catalog.test.ts @@ -6,14 +6,14 @@ import { FsMemory } from '@chunkd/source-memory'; import { createLinks, makeRelative } from '../stac.catalog.js'; -describe('stacCatalog', () => { +void describe('stacCatalog', () => { const fs = new FsMemory(); beforeEach(() => { fs.files.clear(); fsa.register('m://', fs); }); - it('listLocation', async () => { + void it('listLocation', async () => { await fs.write('m://base/directory1/collection.json', JSON.stringify({ title: 'CollectionA' })); await fs.write('m://base/directory2/collection.json', JSON.stringify({ title: 'CollectionB' })); @@ -42,20 +42,20 @@ describe('stacCatalog', () => { }); }); -describe('makeRelative', () => { - it('should make relative urls', () => { +void describe('makeRelative', () => { + void it('should make relative urls', () => { assert.equal(makeRelative('s3://linz-imagery/', 's3://linz-imagery/catalog.json'), 'catalog.json'); }); - it('should make relative from absolute paths', () => { + void it('should make relative from absolute paths', () => { assert.equal(makeRelative('/home/blacha/', '/home/blacha/catalog.json'), 'catalog.json'); }); - it('should make relative relative paths', () => { + void it('should make relative relative paths', () => { assert.equal(makeRelative('/home/blacha/', './catalog.json'), './catalog.json'); }); - it('should not make relative on different paths', () => { + void it('should not make relative on different paths', () => { assert.throws(() => makeRelative('/home/blacha/', '/home/test/catalog.json'), Error); }); }); diff --git a/src/commands/stac-github-import/__test__/stac.link.test.ts b/src/commands/stac-github-import/__test__/stac.link.test.ts index 2b0604fc..615e4c20 100644 --- a/src/commands/stac-github-import/__test__/stac.link.test.ts +++ b/src/commands/stac-github-import/__test__/stac.link.test.ts @@ -23,8 +23,8 @@ function shuffle(array: T[]): T[] { return array; } -describe('sortLinks', () => { - it('should make root first', () => { +void describe('sortLinks', () => { + void it('should make root first', () => { const links = [ { rel: 'self', href: './collection.json', type: 'application/json' }, { rel: 'item', href: './AY30_1000_4643.json', type: 'application/json' }, @@ -46,7 +46,7 @@ describe('sortLinks', () => { assert.equal(links[0]?.rel, 'root'); }); - it('should sort alphabetically the items', () => { + void it('should sort alphabetically the items', () => { const links = [ { rel: 'self', href: './collection.json', type: 'application/json' }, { rel: 'item', href: './AY30_1000_4643.json', type: 'application/json' }, @@ -79,7 +79,7 @@ describe('sortLinks', () => { ]); }); - it('should be stable', () => { + void it('should be stable', () => { const links = [ { rel: 'self', href: './collection.json', type: 'application/json' }, { rel: 'test', href: './AY30_1000_4643.json', type: 'application/json' }, diff --git a/src/commands/stac-sync/__test__/stac.sync.test.ts b/src/commands/stac-sync/__test__/stac.sync.test.ts index 9a0d3bf7..bdbd2c95 100644 --- a/src/commands/stac-sync/__test__/stac.sync.test.ts +++ b/src/commands/stac-sync/__test__/stac.sync.test.ts @@ -7,14 +7,14 @@ import { createHash } from 'crypto'; import { HashKey, synchroniseFiles } from '../stac.sync.js'; -describe('stacSync', () => { +void describe('stacSync', () => { const fs = new FsMemory(); beforeEach(() => { fs.files.clear(); fsa.register('m://', fs); }); - it('shouldUploadFile', async () => { + void it('shouldUploadFile', async () => { await fs.write( 'm://source/stac/wellington/collection.json', JSON.stringify({ title: 'Wellington Collection', description: 'abcd' }), @@ -27,7 +27,7 @@ describe('stacSync', () => { assert.equal(await synchroniseFiles('m://source/stac/', destinationURL), 1); }); - it('shouldUploadFileOnlyOnce', async () => { + void it('shouldUploadFileOnlyOnce', async () => { await fs.write( 'm://source/stac/wellington/collection.json', JSON.stringify({ title: 'Wellington Collection', description: 'abcd' }), @@ -41,7 +41,7 @@ describe('stacSync', () => { assert.equal(await synchroniseFiles('m://source/stac/', destinationURL), 0); }); - it('shouldNotUploadFile', async () => { + void it('shouldNotUploadFile', async () => { await fs.write( 'm://source/stac/wellington/collection.json', JSON.stringify({ title: 'Wellington Collection', description: 'abcd' }), diff --git a/src/commands/stac-validate/__test__/stac.validate.test.ts b/src/commands/stac-validate/__test__/stac.validate.test.ts index eddde0aa..55e3684a 100644 --- a/src/commands/stac-validate/__test__/stac.validate.test.ts +++ b/src/commands/stac-validate/__test__/stac.validate.test.ts @@ -3,14 +3,14 @@ import { describe, it } from 'node:test'; import { getStacSchemaUrl, isURL, listLocation, normaliseHref } from '../stac.validate.js'; -describe('stacValidate', function () { - it('listLocation', async function () { +void describe('stacValidate', function () { + void it('listLocation', async function () { assert.deepEqual(listLocation(['s3://example-bucket/test/collection.json', 's3://example-bucket/test/item.json']), [ 's3://example-bucket/test/collection.json', 's3://example-bucket/test/item.json', ]); }); - it('listLocationAwsList', async function () { + void it('listLocationAwsList', async function () { assert.deepEqual( listLocation(['["s3://example-bucket/test/collection.json","s3://example-bucket/test/item.json"]']), ['s3://example-bucket/test/collection.json', 's3://example-bucket/test/item.json'], @@ -18,37 +18,37 @@ describe('stacValidate', function () { }); describe('getStacSchemaUrl', () => { - it('should return a item url', () => { + void it('should return a item url', () => { assert.equal( getStacSchemaUrl('Feature', '1.0.0', 'placeholder path'), 'https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json', ); }); - it('should return a catalog url', () => { + void it('should return a catalog url', () => { assert.equal( getStacSchemaUrl('Catalog', '1.0.0', 'placeholder path'), 'https://schemas.stacspec.org/v1.0.0/catalog-spec/json-schema/catalog.json', ); }); - it('should return a collection url', () => { + void it('should return a collection url', () => { assert.equal( getStacSchemaUrl('Collection', '1.0.0', 'placeholder path'), 'https://schemas.stacspec.org/v1.0.0/collection-spec/json-schema/collection.json', ); }); - it('should return null on invalid version', () => { + void it('should return null on invalid version', () => { assert.equal(getStacSchemaUrl('Collection', '0.0.8', 'placeholder path'), null); }); - it('should return null on invalid type', () => { + void it('should return null on invalid type', () => { assert.equal(getStacSchemaUrl('CollectionItem', '1.0.0', 'placeholder path'), null); }); }); - it('isURL', () => { + void it('isURL', () => { assert.equal(isURL('s3://test-bucket/test-survey/collection.json'), true); assert.equal(isURL('data/test-survey/collection.json'), false); }); - it('normaliseHref', () => { + void it('normaliseHref', () => { assert.equal( normaliseHref('./item.json', 's3://test-bucket/test-survey/collection.json'), 's3://test-bucket/test-survey/item.json', diff --git a/src/commands/tileindex-validate/__test__/tileindex.validate.test.ts b/src/commands/tileindex-validate/__test__/tileindex.validate.test.ts index d0652d3a..790dc746 100644 --- a/src/commands/tileindex-validate/__test__/tileindex.validate.test.ts +++ b/src/commands/tileindex-validate/__test__/tileindex.validate.test.ts @@ -27,34 +27,34 @@ function convertTileName(fileName: string, gridSize: GridSize): string | null { return getTileName(mapTileIndex.bbox[0], mapTileIndex.bbox[3], gridSize); } -describe('getTileName', () => { - it('should get correct parent tile 1:1k', () => { +void describe('getTileName', () => { + void it('should get correct parent tile 1:1k', () => { assert.equal(convertTileName('CH11_1000_0101', 1000), 'CH11_1000_0101'); assert.equal(convertTileName('CH11_1000_0105', 1000), 'CH11_1000_0105'); assert.equal(convertTileName('CH11_1000_0501', 1000), 'CH11_1000_0501'); assert.equal(convertTileName('CH11_1000_0505', 1000), 'CH11_1000_0505'); }); - it('should get correct parent tile 1:5k', () => { + void it('should get correct parent tile 1:5k', () => { assert.equal(convertTileName('CH11_1000_0101', 5000), 'CH11_5000_0101'); assert.equal(convertTileName('CH11_1000_0105', 5000), 'CH11_5000_0101'); assert.equal(convertTileName('CH11_1000_0501', 5000), 'CH11_5000_0101'); assert.equal(convertTileName('CH11_1000_0505', 5000), 'CH11_5000_0101'); }); - it('should get correct parent tile 1:10k', () => { + void it('should get correct parent tile 1:10k', () => { assert.equal(convertTileName('CH11_1000_0101', 10000), 'CH11_10000_0101'); assert.equal(convertTileName('CH11_1000_0110', 10000), 'CH11_10000_0101'); assert.equal(convertTileName('CH11_1000_1010', 10000), 'CH11_10000_0101'); assert.equal(convertTileName('CH11_1000_1001', 10000), 'CH11_10000_0101'); }); - it('should get correct parent tile 1:50k', () => { + void it('should get correct parent tile 1:50k', () => { assert.equal(convertTileName('AT24_50000_0101', 50000), 'AT24'); assert.equal(convertTileName('AT25_50000_0101', 50000), 'AT25'); assert.equal(convertTileName('CK08_50000_0101', 50000), 'CK08'); }); for (const sheet of MapSheetData) { - it('should get the top left 1:50k, 1:10k, 1:5k, 1:1k, and 1:500 for ' + sheet.code, () => { + void it('should get the top left 1:50k, 1:10k, 1:5k, 1:1k, and 1:500 for ' + sheet.code, () => { assert.equal(getTileName(sheet.origin.x, sheet.origin.y, 50000), sheet.code); assert.equal(getTileName(sheet.origin.x, sheet.origin.y, 10000), sheet.code + '_10000_0101'); assert.equal(getTileName(sheet.origin.x, sheet.origin.y, 5000), sheet.code + '_5000_0101'); @@ -62,7 +62,7 @@ describe('getTileName', () => { assert.equal(getTileName(sheet.origin.x, sheet.origin.y, 500), sheet.code + '_500_001001'); }); - it('should get the bottom right 1:50k, 1:10k, 1:5k, 1:1k for ' + sheet.code, () => { + void it('should get the bottom right 1:50k, 1:10k, 1:5k, 1:1k for ' + sheet.code, () => { // for each scale calculate the bottom right tile then find the mid point of it // then look up the tile name from the midpoint and ensure it is the same for (const scale of [10_000, 5_000, 1_000, 500] as const) { @@ -78,8 +78,8 @@ describe('getTileName', () => { } }); -describe('tiffLocation', () => { - it('get location from tiff', async () => { +void describe('tiffLocation', () => { + void it('get location from tiff', async () => { const TiffAs21 = FakeCogTiff.fromTileName('AS21_1000_0101'); TiffAs21.images[0].origin[0] = 1492000; TiffAs21.images[0].origin[1] = 6234000; @@ -91,7 +91,7 @@ describe('tiffLocation', () => { assert.equal(location[1]?.tileName, 'AY29_1000_0101'); }); - it('should find duplicates', async () => { + void it('should find duplicates', async () => { const TiffAs21 = FakeCogTiff.fromTileName('AS21_1000_0101'); TiffAs21.images[0].origin[0] = 1492000; TiffAs21.images[0].origin[1] = 6234000; @@ -110,7 +110,7 @@ describe('tiffLocation', () => { ); }); - it('should find tiles from 3857', async () => { + void it('should find tiles from 3857', async () => { const TiffAy29 = FakeCogTiff.fromTileName('AY29_1000_0101'); TiffAy29.images[0].epsg = 3857; TiffAy29.images[0].origin[0] = 19128043.69337794; @@ -119,7 +119,7 @@ describe('tiffLocation', () => { assert.equal(location[0]?.tileName, 'AS21_1000_0101'); }); - it('should fail if one location is not extracted', async () => { + void it('should fail if one location is not extracted', async () => { const TiffAs21 = FakeCogTiff.fromTileName('AS21_1000_0101'); TiffAs21.images[0].origin[0] = 1492000; TiffAs21.images[0].origin[1] = 6234000; @@ -131,7 +131,7 @@ describe('tiffLocation', () => { }); }); -describe('validate', () => { +void describe('validate', () => { const memory = new FsMemory(); before(() => { @@ -139,7 +139,7 @@ describe('validate', () => { }); beforeEach(() => memory.files.clear()); - it('should fail if duplicate tiles are detected', async (t) => { + void it('should fail if duplicate tiles are detected', async (t) => { // Input source/a/AS21_1000_0101.tiff source/b/AS21_1000_0101.tiff const stub = t.mock.method(TiffLoader, 'load', () => Promise.resolve([FakeCogTiff.fromTileName('AS21_1000_0101'), FakeCogTiff.fromTileName('AS21_1000_0101')]), @@ -171,7 +171,7 @@ describe('validate', () => { ]); }); - it('should not fail if duplicate tiles are detected but --retile is used', async (t) => { + void it('should not fail if duplicate tiles are detected but --retile is used', async (t) => { // Input source/a/AS21_1000_0101.tiff source/b/AS21_1000_0101.tiff t.mock.method(TiffLoader, 'load', () => Promise.resolve([FakeCogTiff.fromTileName('AS21_1000_0101'), FakeCogTiff.fromTileName('AS21_1000_0101')]), @@ -190,7 +190,7 @@ describe('validate', () => { }); for (const offset of [0.05, -0.05]) { - it(`should fail if input tiff origin X is offset by ${offset}m`, async (t) => { + void it(`should fail if input tiff origin X is offset by ${offset}m`, async (t) => { const fakeTiff = FakeCogTiff.fromTileName('AS21_1000_0101'); fakeTiff.images[0].origin[0] = fakeTiff.images[0].origin[0] + offset; t.mock.method(TiffLoader, 'load', () => Promise.resolve([fakeTiff])); @@ -207,7 +207,7 @@ describe('validate', () => { assert.equal(String(e), 'Error: Tile alignment validation failed'); } }); - it(`should fail if input tiff origin Y is offset by ${offset}m`, async (t) => { + void it(`should fail if input tiff origin Y is offset by ${offset}m`, async (t) => { const fakeTiff = FakeCogTiff.fromTileName('AS21_1000_0101'); fakeTiff.images[0].origin[1] = fakeTiff.images[0].origin[1] + offset; t.mock.method(TiffLoader, 'load', () => Promise.resolve([fakeTiff])); @@ -230,7 +230,7 @@ describe('validate', () => { // 720x480 => 721x480 // 720x481 => 720x481 // 721x481 => 721x481 - it(`should fail if input tiff width is off by ${offset}m`, async (t) => { + void it(`should fail if input tiff width is off by ${offset}m`, async (t) => { const fakeTiff = FakeCogTiff.fromTileName('AS21_1000_0101'); fakeTiff.images[0].size.width = fakeTiff.images[0].size.width + offset; t.mock.method(TiffLoader, 'load', () => Promise.resolve([fakeTiff])); @@ -247,7 +247,7 @@ describe('validate', () => { assert.equal(String(e), 'Error: Tile alignment validation failed'); } }); - it(`should fail if input tiff height is off by ${offset}m`, async (t) => { + void it(`should fail if input tiff height is off by ${offset}m`, async (t) => { const fakeTiff = FakeCogTiff.fromTileName('AS21_1000_0101'); fakeTiff.images[0].size.height = fakeTiff.images[0].size.height + offset; t.mock.method(TiffLoader, 'load', () => Promise.resolve([fakeTiff])); @@ -267,11 +267,11 @@ describe('validate', () => { } }); -describe('GridSizeFromString', () => { - it('should return grid size number', async () => { +void describe('GridSizeFromString', () => { + void it('should return grid size number', async () => { assert.equal(await GridSizeFromString.from('500'), 500); }); - it('should throw error when converting invalid grid size', async () => { + void it('should throw error when converting invalid grid size', async () => { await assert.rejects( GridSizeFromString.from('-1'), new Error('Invalid grid size "-1"; valid values: "50000", "10000", "5000", "2000", "1000", "500"'), @@ -279,12 +279,12 @@ describe('GridSizeFromString', () => { }); }); -describe('is8BitsTiff', () => { - it('should be a 8 bits TIFF', async () => { +void describe('is8BitsTiff', () => { + void it('should be a 8 bits TIFF', async () => { const testTiff = await createTiff('./src/commands/tileindex-validate/__test__/data/8b.tiff'); await assert.doesNotReject(validate8BitsTiff(testTiff)); }); - it('should not be a 8 bits TIFF', async () => { + void it('should not be a 8 bits TIFF', async () => { const testTiff = await createTiff('./src/commands/tileindex-validate/__test__/data/16b.tiff'); await assert.rejects(validate8BitsTiff(testTiff), { name: 'Error', diff --git a/src/utils/__test__/argo.test.ts b/src/utils/__test__/argo.test.ts index 07910a55..c47e62ae 100644 --- a/src/utils/__test__/argo.test.ts +++ b/src/utils/__test__/argo.test.ts @@ -3,17 +3,17 @@ import { beforeEach, describe, it } from 'node:test'; import { getActionLocation } from '../action.storage.js'; -describe('argoLocation', () => { +void describe('argoLocation', () => { beforeEach(() => { delete process.env['ARGO_TEMPLATE']; delete process.env['ARGO_NODE_ID']; }); - it("should not die if ARGO_TEMPLATE doesn't exist", () => { + void it("should not die if ARGO_TEMPLATE doesn't exist", () => { delete process.env['ARGO_TEMPLATE']; assert.equal(getActionLocation(), null); }); - it('should not die if ARGO_TEMPLATE in missing keys', () => { + void it('should not die if ARGO_TEMPLATE in missing keys', () => { process.env['ARGO_TEMPLATE'] = '{}'; assert.equal(getActionLocation(), null); @@ -24,7 +24,7 @@ describe('argoLocation', () => { assert.equal(getActionLocation(), null); }); - it('should actually parse the ARGO_TEMPLATE', () => { + void it('should actually parse the ARGO_TEMPLATE', () => { process.env['ARGO_NODE_ID'] = 'test-env-n9d2x'; process.env['ARGO_TEMPLATE'] = JSON.stringify({ name: 'env', diff --git a/src/utils/__test__/config.test.ts b/src/utils/__test__/config.test.ts index b5060b82..629fb5cf 100644 --- a/src/utils/__test__/config.test.ts +++ b/src/utils/__test__/config.test.ts @@ -5,8 +5,8 @@ import prettier from 'prettier'; import { DEFAULT_PRETTIER_FORMAT } from '../config.js'; -describe('DefaultPrettierFormat', () => { - it('should be the same prettier format with @linzjs/style', async () => { +void describe('DefaultPrettierFormat', () => { + void it('should be the same prettier format with @linzjs/style', async () => { const cfg = await prettier.resolveConfigFile('@linzjs/style/.prettierrc.cjs'); assert.ok(cfg, 'Failed to read @linzjs/style/.prettierrc.cjs'); const options = await prettier.resolveConfig(cfg); diff --git a/src/utils/__test__/filter.test.ts b/src/utils/__test__/filter.test.ts index fb379b9a..7342915c 100644 --- a/src/utils/__test__/filter.test.ts +++ b/src/utils/__test__/filter.test.ts @@ -5,44 +5,44 @@ import { fsa } from '@chunkd/fs'; import { asyncFilter } from '../chunk.js'; -describe('AsyncFilter', () => { +void describe('AsyncFilter', () => { function makeGenerator(list: string[]): () => AsyncGenerator<{ path: string }> { return async function* gen(): AsyncGenerator<{ path: string }> { for (const path of list) yield { path }; }; } - it('should include all', async () => { + void it('should include all', async () => { const gen = makeGenerator(['a.tiff', 'b.tiff', 'c.tiff']); const result = await fsa.toArray(asyncFilter(gen())); assert.equal(result.length, 3); }); - it('should match include exact', async () => { + void it('should match include exact', async () => { const gen = makeGenerator(['a.tiff', 'b.tiff', 'c.tiff']); const result = await fsa.toArray(asyncFilter(gen(), { include: 'a.tiff' })); assert.deepEqual(result, [{ path: 'a.tiff' }]); }); - it('should match include regex', async () => { + void it('should match include regex', async () => { const gen = makeGenerator(['a.tiff', 'ba.tiff', 'ca.tiff']); const result = await fsa.toArray(asyncFilter(gen(), { include: '^a' })); assert.deepEqual(result, [{ path: 'a.tiff' }]); }); - it('should exclude', async () => { + void it('should exclude', async () => { const gen = makeGenerator(['a.tiff', 'ba.tiff', 'ca.tiff']); const result = await fsa.toArray(asyncFilter(gen(), { exclude: '^a' })); assert.deepEqual(result, [{ path: 'ba.tiff' }, { path: 'ca.tiff' }]); }); - it('should include and exclude', async () => { + void it('should include and exclude', async () => { const gen = makeGenerator(['a.tiff', 'ba.prj', 'ca.tiff']); const result = await fsa.toArray(asyncFilter(gen(), { exclude: '^a', include: '.tiff$' })); assert.deepEqual(result, [{ path: 'ca.tiff' }]); }); - it('should include exclude case insensitive', async () => { + void it('should include exclude case insensitive', async () => { const gen = makeGenerator(['A.tiff', 'BA.prj', 'CA.TIFF']); const result = await fsa.toArray(asyncFilter(gen(), { exclude: '^a', include: '.tiff$' })); assert.deepEqual(result, [{ path: 'CA.TIFF' }]); diff --git a/src/utils/__test__/geotiff.test.ts b/src/utils/__test__/geotiff.test.ts index 9ffd4525..84ad84bc 100644 --- a/src/utils/__test__/geotiff.test.ts +++ b/src/utils/__test__/geotiff.test.ts @@ -8,14 +8,14 @@ import { Source, Tiff, TiffImage } from '@cogeotiff/core'; import { createTiff } from '../../commands/common.js'; import { findBoundingBox, parseTfw, PixelIsPoint } from '../geotiff.js'; -describe('geotiff', () => { +void describe('geotiff', () => { describe('parseTfw', () => { - it('should parse tfw', () => { + void it('should parse tfw', () => { const output = parseTfw(`0.075\n0\n0\n-0.075\n1460800.0375\n5079479.9625`); assert.deepEqual(output, { scale: { x: 0.075, y: -0.075 }, origin: { x: 1460800, y: 5079480 } }); }); - it('should fail on invalid numbers', () => { + void it('should fail on invalid numbers', () => { assert.throws(() => parseTfw(`0.075\n0\n0\n-0.075\n1460800.0375`)); // Too Short assert.throws(() => parseTfw(`0.075a\n0\n0\n-0.075\n1460800.0375\n5079479.9625`)); // scaleX number is NaN assert.throws(() => parseTfw(`0.075\n0\n0\n-0.075a\n1460800.0375\n5079479.9625`)); // scaleY number is NaN @@ -23,17 +23,17 @@ describe('geotiff', () => { assert.throws(() => parseTfw(`0.075\n0\n0\n-0.075\n1460800.0375\n5079479.9625a`)); // originY number is NaN }); - it('should fail on invalid input', () => { + void it('should fail on invalid input', () => { assert.throws(() => parseTfw(null as unknown as string)); }); - it('should not allow rotations or skews', () => { + void it('should not allow rotations or skews', () => { assert.throws(() => parseTfw(`0.075\n1\n0\n-0.075\n1460800.0375\n5079479.9625`)); // Y Rotation assert.throws(() => parseTfw(`0.075\n0\n1\n-0.075\n1460800.0375\n5079479.9625`)); // X Rotation }); }); - it('should parse tiff location', async () => { + void it('should parse tiff location', async () => { const source = new FsMemory(); // Actual tiff file await source.write( @@ -75,12 +75,12 @@ describe('geotiff', () => { const url = new URL('memory://BX20_500_023098.tif'); const fakeSource: Source = { url: url, fetch: async () => new ArrayBuffer(1) }; - it('should not parse a tiff with no information ', async () => { + void it('should not parse a tiff with no information ', async () => { // tiff with no location information and no TFW await assert.rejects(() => findBoundingBox({ source: fakeSource, images: [] } as unknown as Tiff)); }); - it('should parse a tiff with TFW', async () => { + void it('should parse a tiff with TFW', async () => { // Write a sidecar tfw await fsa.write('memory://BX20_500_023098.tfw', `0.075\n0\n0\n-0.075\n1460800.0375\n5079479.9625`); // tiff with no location information and no TFW @@ -92,7 +92,7 @@ describe('geotiff', () => { await fsa.delete('memory://BX20_500_023098.tfw'); }); - it('should parse standard tiff', async () => { + void it('should parse standard tiff', async () => { const bbox = await findBoundingBox({ source: fakeSource, images: [ @@ -109,7 +109,7 @@ describe('geotiff', () => { } as unknown as Tiff); assert.deepEqual(bbox, [1460800, 5079120, 1461040, 5079480]); }); - it('should parse with pixel offset', async () => { + void it('should parse with pixel offset', async () => { const bbox = await findBoundingBox({ source: fakeSource, images: [ diff --git a/src/utils/__test__/mapsheet.test.ts b/src/utils/__test__/mapsheet.test.ts index 985b3c92..5492e344 100644 --- a/src/utils/__test__/mapsheet.test.ts +++ b/src/utils/__test__/mapsheet.test.ts @@ -4,8 +4,8 @@ import { describe, it } from 'node:test'; import { MapSheet, MapTileIndex, SheetRanges } from '../mapsheet.js'; import { MapSheetData } from './mapsheet.data.js'; -describe('MapSheets', () => { - it('should extract MapTileIndex from 1:500 tile filename', () => { +void describe('MapSheets', () => { + void it('should extract MapTileIndex from 1:500 tile filename', () => { assert.deepEqual(MapSheet.getMapTileIndex('2022_CG10_500_080037.tiff'), { mapSheet: 'CG10', gridSize: 500, @@ -18,7 +18,7 @@ describe('MapSheets', () => { bbox: [1236640, 4837200, 1236880, 4837560], }); }); - it('should extract MapTileIndex from 1:50k tile filename', () => { + void it('should extract MapTileIndex from 1:50k tile filename', () => { assert.deepEqual(MapSheet.getMapTileIndex('AS21.tiff'), { mapSheet: 'AS21', gridSize: 50_000, @@ -37,7 +37,7 @@ describe('MapSheets', () => { }); }); - it('should calculate offsets', () => { + void it('should calculate offsets', () => { assert.deepEqual(MapSheet.offset('AS00'), { x: 988000, y: 6234000 }); assert.deepEqual(MapSheet.offset('AS21'), { x: 1492000, y: 6234000 }); assert.deepEqual(MapSheet.offset('BG33'), { x: 1780000, y: 5730000 }); @@ -45,13 +45,13 @@ describe('MapSheets', () => { }); for (const ms of MapSheetData) { - it('should calculate for ' + ms.code, () => { + void it('should calculate for ' + ms.code, () => { assert.deepEqual(MapSheet.offset(ms.code), ms.origin); assert.equal(MapSheet.isKnown(ms.code), true); }); } - it('should not know invalid mapsheets', () => { + void it('should not know invalid mapsheets', () => { assert.equal(MapSheet.isKnown('BC39'), false); assert.equal(MapSheet.isKnown('AAAA'), false); assert.equal(MapSheet.isKnown('A'), false); @@ -60,7 +60,7 @@ describe('MapSheets', () => { assert.equal(MapSheet.isKnown('AA14'), false); }); - it('should validate map sheet range', () => { + void it('should validate map sheet range', () => { const validSheet = new Set(); for (const [key, ranges] of Object.entries(SheetRanges)) { for (const [low, high] of ranges) { @@ -84,7 +84,7 @@ describe('MapSheets', () => { ] as const; for (const test of TestBounds) { - it('should get expected size with file ' + test.name, () => { + void it('should get expected size with file ' + test.name, () => { const mapTileIndex = MapSheet.getMapTileIndex(test.name) as MapTileIndex; assert.equal(mapTileIndex.origin.x, test.bbox[0]); assert.equal(mapTileIndex.origin.y, test.bbox[3]); @@ -92,7 +92,7 @@ describe('MapSheets', () => { assert.equal(mapTileIndex.height, test.bbox[3] - test.bbox[1]); }); - it('should get expected bounds with file ' + test.name, () => { + void it('should get expected bounds with file ' + test.name, () => { const mapTileIndex = MapSheet.getMapTileIndex(test.name) as MapTileIndex; assert.equal(String(mapTileIndex.bbox), String(test.bbox)); }); diff --git a/src/utils/__test__/slugify.test.ts b/src/utils/__test__/slugify.test.ts index fb26dd7f..660feee9 100644 --- a/src/utils/__test__/slugify.test.ts +++ b/src/utils/__test__/slugify.test.ts @@ -5,36 +5,36 @@ import { slugify } from '../slugify.js'; const slugChars = 'abcdefghijklmnopqrstuvwxyz0123456789_.-'; -describe('slugify', () => { - it('should pass through output alphabet unchanged', () => { +void describe('slugify', () => { + void it('should pass through output alphabet unchanged', () => { assert.equal(slugify(slugChars), slugChars); }); - it('should pass through random slug unchanged', () => { + void it('should pass through random slug unchanged', () => { const input = anySlug(); assert.equal(slugify(slugify(input)), slugify(input)); }); - it('should lowercase uppercase ASCII characters', () => { + void it('should lowercase uppercase ASCII characters', () => { assert.equal(slugify('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), 'abcdefghijklmnopqrstuvwxyz'); }); - it('should replace spaces with hyphens', () => { + void it('should replace spaces with hyphens', () => { assert.equal(slugify('Upper North Island'), 'upper-north-island'); }); - it('should remove apostrophes', () => { + void it('should remove apostrophes', () => { assert.equal(slugify("Hawke's Bay"), 'hawkes-bay'); }); - it('should replace slashes with hyphens', () => { + void it('should replace slashes with hyphens', () => { assert.equal(slugify('Tikitapu/Blue Lake'), 'tikitapu-blue-lake'); }); - it('should replace commas with hyphens', () => { + void it('should replace commas with hyphens', () => { assert.equal(slugify('Omere, Janus or Toby Rock'), 'omere-janus-or-toby-rock'); }); - it('should replace ampersands with "and"', () => { + void it('should replace ampersands with "and"', () => { assert.equal(slugify('Gore A&P Showgrounds'), 'gore-a-and-p-showgrounds'); }); - it('should collapse multiple hyphens', () => { + void it('should collapse multiple hyphens', () => { assert.equal(slugify("Butlers 'V' Hut"), 'butlers-v-hut'); }); - it('should remove diacritics', () => { + void it('should remove diacritics', () => { ['á', 'Á', 'ä', 'Ä', 'ā', 'Ā'].forEach((value) => { assert.equal(slugify(value), 'a'); }); @@ -51,15 +51,15 @@ describe('slugify', () => { assert.equal(slugify(value), 'u'); }); }); - it('should convert "ø" (U+00F8) and "Ø" (U+00D8) to "o"', () => { + void it('should convert "ø" (U+00F8) and "Ø" (U+00D8) to "o"', () => { ['ø', 'Ø'].forEach((value) => { assert.equal(slugify(value), 'o'); }); }); - it('should handle decomposed characters', () => { + void it('should handle decomposed characters', () => { assert.equal(slugify('\u0041\u0304'), 'a'); }); - it('should treat any unhandled characters as an error', () => { + void it('should treat any unhandled characters as an error', () => { assert.throws( () => { slugify('“a\\b//c—;\n”'); From e68d25a3bb4c39ed749a386ed276c534b578cc2d Mon Sep 17 00:00:00 2001 From: Victor Engmark Date: Wed, 8 May 2024 11:11:30 +1200 Subject: [PATCH 5/5] fix: Properly construct a string with a list --- src/commands/tileindex-validate/tileindex.validate.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/tileindex-validate/tileindex.validate.ts b/src/commands/tileindex-validate/tileindex.validate.ts index c3cba926..5db43bbf 100644 --- a/src/commands/tileindex-validate/tileindex.validate.ts +++ b/src/commands/tileindex-validate/tileindex.validate.ts @@ -245,7 +245,7 @@ export const commandTileIndexValidate = command({ type: 'FeatureCollection', features: [...outputs.values()].map((locs) => { const firstLoc = locs[0]; - if (firstLoc == null) throw new Error('Unable to extract tiff locations from: ' + args.location); + if (firstLoc == null) throw new Error(`Unable to extract tiff locations from: ${args.location.join('; ')}`); const mapTileIndex = MapSheet.getMapTileIndex(firstLoc.tileName); if (mapTileIndex == null) throw new Error('Failed to extract tile information from: ' + firstLoc.tileName); return Projection.get(2193).boundsToGeoJsonFeature(Bounds.fromBbox(mapTileIndex.bbox), {