diff --git a/package-lock.json b/package-lock.json index 8969c11..5c71b00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,7 +44,7 @@ "@commitlint/cli": "^19.8.0", "@faker-js/faker": "^9.6.0", "@map-colonies/commitlint-config": "^2.0.0", - "@map-colonies/eslint-config": "^7.1.0", + "@map-colonies/eslint-config": "^8.0.0", "@map-colonies/infra-copilot-instructions": "^1.0.0", "@map-colonies/openapi-helpers": "^5.1.0", "@map-colonies/prettier-config": "^1.0.0", @@ -2288,9 +2288,9 @@ } }, "node_modules/@map-colonies/eslint-config": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@map-colonies/eslint-config/-/eslint-config-7.1.0.tgz", - "integrity": "sha512-jYgpokmKfl7mfB3tGMNESLaZV4wCEQ5MDkdHn5PT+EXwKudQOSg38lb2nJg4ew4DcBWZ7Yh+VW2LhvaHyPCPeA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@map-colonies/eslint-config/-/eslint-config-8.0.0.tgz", + "integrity": "sha512-680PEx+d6dQCGRF0oSJz7miAsp8JqDndxe7MNpXGHJbyVqQg2CEFjxD18fF0K9w58trZkWFfELgOcy0pUfBPrg==", "dev": true, "dependencies": { "@eslint/js": "^9.19.0", @@ -2299,12 +2299,14 @@ "eslint-config-prettier": "^10.0.1", "eslint-import-resolver-typescript": "^4.0.0", "eslint-plugin-import-x": "^4.16.1", + "eslint-plugin-unicorn": "^63.0.0", "typescript-eslint": "^8.23.0" }, "engines": { "node": ">=24" }, "peerDependencies": { + "@vitest/eslint-plugin": "^1.6.7", "eslint": "^9.19.0", "eslint-plugin-jest": "^28.11.0 || ^29.0.0", "eslint-plugin-react": "^7.37.4", @@ -2312,6 +2314,9 @@ "globals": "^15.14.0 || ^17.0.0" }, "peerDependenciesMeta": { + "@vitest/eslint-plugin": { + "optional": true + }, "eslint-plugin-jest": { "optional": true }, @@ -7398,6 +7403,19 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", + "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/better-ajv-errors": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/better-ajv-errors/-/better-ajv-errors-1.2.0.tgz", @@ -7552,11 +7570,59 @@ "node": ">=8" } }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "node_modules/builtin-modules": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-5.0.0.tgz", + "integrity": "sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bundle-name": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", @@ -7648,6 +7714,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/caniuse-lite": { + "version": "1.0.30001775", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001775.tgz", + "integrity": "sha512-s3Qv7Lht9zbVKE9XoTyRG6wVDCKdtOFIjBGg3+Yhn6JaytuNKPIjBMTMIY1AnOH3seL5mvF+x33oGAyK3hVt3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, "node_modules/chai": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", @@ -7705,6 +7792,22 @@ "fsevents": "~2.3.2" } }, + "node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/classnames": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", @@ -7712,6 +7815,19 @@ "dev": true, "license": "MIT" }, + "node_modules/clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/cli-cursor": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", @@ -8125,6 +8241,20 @@ "url": "https://opencollective.com/core-js" } }, + "node_modules/core-js-compat": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", + "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -8544,6 +8674,13 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "node_modules/electron-to-chromium": { + "version": "1.5.302", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz", + "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==", + "dev": true, + "license": "ISC" + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -8715,6 +8852,16 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/eslint": { "version": "9.39.2", "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", @@ -8902,6 +9049,53 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/eslint-plugin-unicorn": { + "version": "63.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-63.0.0.tgz", + "integrity": "sha512-Iqecl9118uQEXYh7adylgEmGfkn5es3/mlQTLLkd4pXkIk9CTGrAbeUux+YljSa2ohXCBmQQ0+Ej1kZaFgcfkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "@eslint-community/eslint-utils": "^4.9.0", + "change-case": "^5.4.4", + "ci-info": "^4.3.1", + "clean-regexp": "^1.0.0", + "core-js-compat": "^3.46.0", + "find-up-simple": "^1.0.1", + "globals": "^16.4.0", + "indent-string": "^5.0.0", + "is-builtin-module": "^5.0.0", + "jsesc": "^3.1.0", + "pluralize": "^8.0.0", + "regexp-tree": "^0.1.27", + "regjsparser": "^0.13.0", + "semver": "^7.7.3", + "strip-indent": "^4.1.1" + }, + "engines": { + "node": "^20.10.0 || >=21.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" + }, + "peerDependencies": { + "eslint": ">=9.38.0" + } + }, + "node_modules/eslint-plugin-unicorn/node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint-scope": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", @@ -9465,6 +9659,19 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, + "node_modules/find-up-simple": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", + "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/flat-cache": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", @@ -10087,6 +10294,19 @@ "node": ">=0.8.19" } }, + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/index-to-position": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", @@ -10141,6 +10361,22 @@ "node": ">=8" } }, + "node_modules/is-builtin-module": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-5.0.0.tgz", + "integrity": "sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-modules": "^5.0.0" + }, + "engines": { + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-bun-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", @@ -10700,6 +10936,19 @@ "node": ">= 10.16.0" } }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/json-bigint": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", @@ -11461,6 +11710,13 @@ "es6-promise": "^3.2.1" } }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, "node_modules/node-sql-parser": { "version": "4.18.0", "resolved": "https://registry.npmjs.org/node-sql-parser/-/node-sql-parser-4.18.0.tgz", @@ -13286,6 +13542,29 @@ "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "dev": true, + "license": "MIT", + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -14104,6 +14383,19 @@ "node": ">=8" } }, + "node_modules/strip-indent": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.1.tgz", + "integrity": "sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==", + "dev": true, + "license": "MIT", + "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", @@ -14733,6 +15025,37 @@ "node": ">=8" } }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", diff --git a/package.json b/package.json index 715f777..ca31e96 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "@commitlint/cli": "^19.8.0", "@faker-js/faker": "^9.6.0", "@map-colonies/commitlint-config": "^2.0.0", - "@map-colonies/eslint-config": "^7.1.0", + "@map-colonies/eslint-config": "^8.0.0", "@map-colonies/infra-copilot-instructions": "^1.0.0", "@map-colonies/openapi-helpers": "^5.1.0", "@map-colonies/prettier-config": "^1.0.0", diff --git a/src/capabilities/routes/capabilitiesRouter.ts b/src/capabilities/routes/capabilitiesRouter.ts index a2f7ff5..258ab9a 100644 --- a/src/capabilities/routes/capabilitiesRouter.ts +++ b/src/capabilities/routes/capabilitiesRouter.ts @@ -1,5 +1,5 @@ import { Router } from 'express'; -import { FactoryFunction } from 'tsyringe'; +import type { FactoryFunction } from 'tsyringe'; import { CapabilitiesController } from '../controllers/capabilitiesController'; export const capabilitiesRouterFactory: FactoryFunction = (dependencyContainer) => { diff --git a/src/common/dependencyRegistration.ts b/src/common/dependencyRegistration.ts index a591ff9..69fb39d 100644 --- a/src/common/dependencyRegistration.ts +++ b/src/common/dependencyRegistration.ts @@ -1,5 +1,6 @@ -import { ClassProvider, container as defaultContainer, FactoryProvider, InjectionToken, ValueProvider } from 'tsyringe'; -import { constructor, DependencyContainer } from 'tsyringe/dist/typings/types'; +import type { ClassProvider, FactoryProvider, InjectionToken, ValueProvider, DependencyContainer } from 'tsyringe'; +import { container as defaultContainer } from 'tsyringe'; +import type { constructor } from 'tsyringe/dist/typings/types'; export type Providers = ValueProvider | FactoryProvider | ClassProvider | constructor; diff --git a/src/common/logger.ts b/src/common/logger.ts index 2a9ff10..f4dd49f 100644 --- a/src/common/logger.ts +++ b/src/common/logger.ts @@ -1,14 +1,14 @@ import { AsyncLocalStorage } from 'node:async_hooks'; -import { type IncomingMessage, ServerResponse } from 'node:http'; +import type { IncomingMessage, ServerResponse } from 'node:http'; import { get } from 'lodash'; import * as api from '@opentelemetry/api'; -import { Logger, LoggerOptions, jsLogger } from '@map-colonies/js-logger'; +import { type Logger, type LoggerOptions, jsLogger } from '@map-colonies/js-logger'; import { getOtelMixin } from '@map-colonies/tracing-utils'; -import { NextFunction, Request, Response } from 'express'; +import type { NextFunction, Request, Response } from 'express'; import type { AttributeValue, Attributes } from '@opentelemetry/api'; -import { DependencyContainer } from 'tsyringe'; +import type { DependencyContainer } from 'tsyringe'; import { SERVICES } from './constants'; -import { IConfig } from './interfaces'; +import type { IConfig } from './interfaces'; const logContext = new AsyncLocalStorage(); diff --git a/src/common/utils.ts b/src/common/utils.ts index 6e2f277..cf6dd42 100644 --- a/src/common/utils.ts +++ b/src/common/utils.ts @@ -1,8 +1,8 @@ -import fs, { promises as fsPromise } from 'node:fs'; +import { promises as fsPromise, type Dirent } from 'node:fs'; const LAST_INDEX = -1; -export async function* filesTreeGenerator(directory: string, filenameFilter?: (filename: string) => boolean): AsyncGenerator { +export async function* filesTreeGenerator(directory: string, filenameFilter?: (filename: string) => boolean): AsyncGenerator { for await (const dirent of await fsPromise.opendir(directory, { recursive: true })) { if (dirent.isFile() && (!filenameFilter || filenameFilter(dirent.name))) { yield dirent; diff --git a/src/configs/routes/configRouter.ts b/src/configs/routes/configRouter.ts index a5031c2..e645620 100644 --- a/src/configs/routes/configRouter.ts +++ b/src/configs/routes/configRouter.ts @@ -1,5 +1,5 @@ import { Router } from 'express'; -import { FactoryFunction } from 'tsyringe'; +import type { FactoryFunction } from 'tsyringe'; import { logEnrichmentParamMiddlewareFactory } from '@common/logger'; import { ConfigController } from '../controllers/configController'; diff --git a/src/containerConfig.ts b/src/containerConfig.ts index 9460d2e..c8edc9b 100644 --- a/src/containerConfig.ts +++ b/src/containerConfig.ts @@ -1,10 +1,10 @@ -import config, { IConfig } from 'config'; +import config, { type IConfig } from 'config'; import { metrics as OtelMetrics } from '@opentelemetry/api'; -import { DependencyContainer } from 'tsyringe/dist/typings/types'; +import type { DependencyContainer } from 'tsyringe/dist/typings/types'; import { instancePerContainerCachingFactory } from 'tsyringe'; import type { Pool } from 'pg'; -import { initConnection, createDrizzle, createConnectionOptions, DbConfig, Drizzle } from '@db'; -import { InjectionObject, registerDependencies } from '@common/dependencyRegistration'; +import { initConnection, createDrizzle, createConnectionOptions, type DbConfig, type Drizzle } from '@db'; +import { type InjectionObject, registerDependencies } from '@common/dependencyRegistration'; import { SERVICES, SERVICE_NAME } from '@common/constants'; import { tracing } from '@common/tracing'; import { SCHEMA_ROUTER_SYMBOL, schemaRouterFactory } from './schemas/routes/schemaRouter'; diff --git a/src/db/utils.ts b/src/db/utils.ts index a42ade7..d4496a9 100644 --- a/src/db/utils.ts +++ b/src/db/utils.ts @@ -1,7 +1,7 @@ -import { HealthCheck } from '@godaddy/terminus'; +import type { HealthCheck } from '@godaddy/terminus'; import { sql } from 'drizzle-orm'; import { promiseTimeout } from '@src/common/utils/promiseTimeout'; -import { Drizzle } from './createConnection'; +import type { Drizzle } from './createConnection'; export const healthCheck = (drizzle: Drizzle, timeoutMs: number): HealthCheck => { return async (): Promise => { diff --git a/src/index.ts b/src/index.ts index 358a42f..fad373d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,8 +2,8 @@ import 'reflect-metadata'; import { performance } from 'node:perf_hooks'; import { createServer } from 'node:http'; -import { createTerminus, HealthCheck } from '@godaddy/terminus'; -import { Logger } from '@map-colonies/js-logger'; +import { createTerminus, type HealthCheck } from '@godaddy/terminus'; +import type { Logger } from '@map-colonies/js-logger'; import { container } from 'tsyringe'; import config from 'config'; import { DEFAULT_SERVER_PORT, MILLISECONDS_IN_SECOND, SERVICES } from '@common/constants'; diff --git a/src/locks/routes/lockRouter.ts b/src/locks/routes/lockRouter.ts index 49e72fb..415419f 100644 --- a/src/locks/routes/lockRouter.ts +++ b/src/locks/routes/lockRouter.ts @@ -1,5 +1,5 @@ import { Router } from 'express'; -import { FactoryFunction } from 'tsyringe'; +import type { FactoryFunction } from 'tsyringe'; import { logEnrichmentParamMiddlewareFactory } from '@common/logger'; import { LockController } from '../controllers/lockController'; diff --git a/src/schemas/models/schemaManager.ts b/src/schemas/models/schemaManager.ts index c46bdb8..1a20704 100644 --- a/src/schemas/models/schemaManager.ts +++ b/src/schemas/models/schemaManager.ts @@ -160,10 +160,8 @@ export class SchemaManager { const objRecord = obj as Record; - if (objRecord.$ref !== undefined && typeof objRecord.$ref === 'string') { - if (objRecord.$ref.startsWith('https://')) { - external.add(objRecord.$ref); - } + if (objRecord.$ref !== undefined && typeof objRecord.$ref === 'string' && objRecord.$ref.startsWith('https://')) { + external.add(objRecord.$ref); } // Recursively traverse all properties diff --git a/src/schemas/routes/schemaRouter.ts b/src/schemas/routes/schemaRouter.ts index 78da8e3..38ac323 100644 --- a/src/schemas/routes/schemaRouter.ts +++ b/src/schemas/routes/schemaRouter.ts @@ -1,5 +1,5 @@ import { Router } from 'express'; -import { FactoryFunction } from 'tsyringe'; +import type { FactoryFunction } from 'tsyringe'; import { SchemaController } from '../controllers/schemaController'; export const schemaRouterFactory: FactoryFunction = (dependencyContainer) => { diff --git a/tests/integration/capabilities/capabilities.spec.ts b/tests/integration/capabilities/capabilities.spec.ts index ab23dd9..01359d0 100644 --- a/tests/integration/capabilities/capabilities.spec.ts +++ b/tests/integration/capabilities/capabilities.spec.ts @@ -1,9 +1,9 @@ import { describe, beforeEach, afterEach, it, expect } from 'vitest'; import { jsLogger } from '@map-colonies/js-logger'; import httpStatusCodes from 'http-status-codes'; -import { DependencyContainer } from 'tsyringe'; -import { createRequestSender, RequestSender } from '@map-colonies/openapi-helpers/requestSender'; -import { paths, operations } from '@openapi'; +import type { DependencyContainer } from 'tsyringe'; +import { createRequestSender, type RequestSender } from '@map-colonies/openapi-helpers/requestSender'; +import type { paths, operations } from '@openapi'; import { getApp } from '@src/app'; import { SERVICES } from '@common/constants'; diff --git a/tests/integration/configs/configs.spec.ts b/tests/integration/configs/configs.spec.ts index 7635e74..abafd4d 100644 --- a/tests/integration/configs/configs.spec.ts +++ b/tests/integration/configs/configs.spec.ts @@ -5,20 +5,25 @@ import 'jest-sorted'; import fs from 'node:fs'; import { describe, beforeAll, afterAll, it, expect, vi } from 'vitest'; -import { Logger, jsLogger } from '@map-colonies/js-logger'; +import { type Logger, jsLogger } from '@map-colonies/js-logger'; import httpStatusCodes from 'http-status-codes'; -import { DependencyContainer } from 'tsyringe'; +import type { DependencyContainer } from 'tsyringe'; import { faker } from '@faker-js/faker'; -import { JSONSchema } from '@apidevtools/json-schema-ref-parser'; -import { createRequestSender, RequestSender, expectResponseStatusFactory, ExpectResponseStatus } from '@map-colonies/openapi-helpers/requestSender'; -import { paths, operations } from '@openapi'; +import type { JSONSchema } from '@apidevtools/json-schema-ref-parser'; +import { + createRequestSender, + type RequestSender, + expectResponseStatusFactory, + type ExpectResponseStatus, +} from '@map-colonies/openapi-helpers/requestSender'; +import type { paths, operations } from '@openapi'; import { ConfigRepository } from '@src/configs/repositories/configRepository'; import { SchemaManager } from '@src/schemas/models/schemaManager'; -import { Drizzle } from '@src/db/createConnection'; +import type { Drizzle } from '@src/db/createConnection'; import { getApp } from '@src/app'; import { ConfigManager } from '@src/configs/models/configManager'; import { SERVICES } from '@common/constants'; -import { Config, configs, configsRefs } from '@src/configs/models/config'; +import { type Config, configs, configsRefs } from '@src/configs/models/config'; import * as utils from '@common/utils'; import { SchemaNotFoundError } from '@src/schemas/models/errors'; import { diff --git a/tests/integration/configs/defaultConfigs.spec.ts b/tests/integration/configs/defaultConfigs.spec.ts index cb09a66..d33a96a 100644 --- a/tests/integration/configs/defaultConfigs.spec.ts +++ b/tests/integration/configs/defaultConfigs.spec.ts @@ -4,7 +4,7 @@ import 'jest-sorted'; import { describe, beforeAll, it, expect } from 'vitest'; import { jsLogger } from '@map-colonies/js-logger'; -import { DependencyContainer } from 'tsyringe'; +import type { DependencyContainer } from 'tsyringe'; import { getApp } from '@src/app'; import { ConfigManager } from '@src/configs/models/configManager'; import { SERVICES } from '@common/constants'; diff --git a/tests/integration/configs/helpers/data.ts b/tests/integration/configs/helpers/data.ts index 03fb620..c1732fc 100644 --- a/tests/integration/configs/helpers/data.ts +++ b/tests/integration/configs/helpers/data.ts @@ -1,5 +1,5 @@ -import { JSONSchema } from '@apidevtools/json-schema-ref-parser'; -import { ConfigRef, NewConfig } from '@src/configs/models/config'; +import type { JSONSchema } from '@apidevtools/json-schema-ref-parser'; +import type { ConfigRef, NewConfig } from '@src/configs/models/config'; export const simpleSchema: JSONSchema = { type: 'object', diff --git a/tests/integration/docs/docs.spec.ts b/tests/integration/docs/docs.spec.ts index fb0c969..ac96e6f 100644 --- a/tests/integration/docs/docs.spec.ts +++ b/tests/integration/docs/docs.spec.ts @@ -1,6 +1,6 @@ import { describe, beforeEach, afterEach, it, expect } from 'vitest'; import { jsLogger } from '@map-colonies/js-logger'; -import { DependencyContainer } from 'tsyringe'; +import type { DependencyContainer } from 'tsyringe'; import httpStatusCodes from 'http-status-codes'; import { getApp } from '@src/app'; import { SERVICES } from '@common/constants'; diff --git a/tests/integration/locks/locks.spec.ts b/tests/integration/locks/locks.spec.ts index 7909e76..b9d0af9 100644 --- a/tests/integration/locks/locks.spec.ts +++ b/tests/integration/locks/locks.spec.ts @@ -5,10 +5,15 @@ import { eq } from 'drizzle-orm'; import { describe, beforeAll, afterAll, beforeEach, afterEach, it, expect, vi } from 'vitest'; import { jsLogger } from '@map-colonies/js-logger'; import httpStatusCodes from 'http-status-codes'; -import { DependencyContainer } from 'tsyringe'; -import { createRequestSender, RequestSender, expectResponseStatusFactory, ExpectResponseStatus } from '@map-colonies/openapi-helpers/requestSender'; -import { paths, operations } from '@openapi'; -import { Drizzle } from '@src/db/createConnection'; +import type { DependencyContainer } from 'tsyringe'; +import { + createRequestSender, + type RequestSender, + expectResponseStatusFactory, + type ExpectResponseStatus, +} from '@map-colonies/openapi-helpers/requestSender'; +import type { paths, operations } from '@openapi'; +import type { Drizzle } from '@src/db/createConnection'; import { getApp } from '@src/app'; import { SERVICES } from '@common/constants'; import { locks } from '@src/locks/models/lock'; diff --git a/tests/integration/schemas/schemas.spec.ts b/tests/integration/schemas/schemas.spec.ts index 0817563..0299eea 100644 --- a/tests/integration/schemas/schemas.spec.ts +++ b/tests/integration/schemas/schemas.spec.ts @@ -1,12 +1,17 @@ import { describe, beforeEach, afterEach, it, expect } from 'vitest'; -import { createRequestSender, ExpectResponseStatus, expectResponseStatusFactory, RequestSender } from '@map-colonies/openapi-helpers/requestSender'; +import { + createRequestSender, + type ExpectResponseStatus, + expectResponseStatusFactory, + type RequestSender, +} from '@map-colonies/openapi-helpers/requestSender'; import { jsLogger } from '@map-colonies/js-logger'; import httpStatusCodes from 'http-status-codes'; -import { DependencyContainer } from 'tsyringe'; -import { paths, operations } from '@openapi'; +import type { DependencyContainer } from 'tsyringe'; +import type { paths, operations } from '@openapi'; import { getApp } from '@src/app'; import { SERVICES } from '@common/constants'; -import { SchemaReference } from '@src/schemas/models/types'; +import type { SchemaReference } from '@src/schemas/models/types'; const expectResponseStatus: ExpectResponseStatus = expectResponseStatusFactory(expect); diff --git a/tests/unit/config/configManager.spec.ts b/tests/unit/config/configManager.spec.ts index dcfb18c..6ba7016 100644 --- a/tests/unit/config/configManager.spec.ts +++ b/tests/unit/config/configManager.spec.ts @@ -1,14 +1,14 @@ import fs, { Dirent } from 'node:fs'; import { describe, beforeEach, it, expect, vi, afterEach } from 'vitest'; -import { Logger, jsLogger } from '@map-colonies/js-logger'; +import { type Logger, jsLogger } from '@map-colonies/js-logger'; import { ConfigManager } from '@src/configs/models/configManager'; -import { ConfigRefResponse, ConfigRepository } from '@src/configs/repositories/configRepository'; -import { Validator } from '@src/configs/models/configValidator'; +import type { ConfigRefResponse, ConfigRepository } from '@src/configs/repositories/configRepository'; +import type { Validator } from '@src/configs/models/configValidator'; import { ConfigNotFoundError, ConfigVersionMismatchError, ConfigValidationError, ConfigSchemaMismatchError } from '@src/configs/models/errors'; import * as utils from '@src/common/utils'; -import { ConfigReference } from '@src/configs/models/configReference'; -import { HashPropagationHelper } from '@src/configs/models/hashPropagationHelpers'; -import { SchemaManager } from '@src/schemas/models/schemaManager'; +import type { ConfigReference } from '@src/configs/models/configReference'; +import type { HashPropagationHelper } from '@src/configs/models/hashPropagationHelpers'; +import type { SchemaManager } from '@src/schemas/models/schemaManager'; vi.mock('../../../src/common/utils', async () => { return { diff --git a/tests/unit/config/configValidator.spec.ts b/tests/unit/config/configValidator.spec.ts index 0db6d78..4ce939c 100644 --- a/tests/unit/config/configValidator.spec.ts +++ b/tests/unit/config/configValidator.spec.ts @@ -1,9 +1,9 @@ -import { describe, beforeEach, it, expect, vi, Mock } from 'vitest'; +import { describe, beforeEach, it, expect, vi, type Mock } from 'vitest'; import betterAjvErrors from '@sidvind/better-ajv-errors'; import { jsLogger } from '@map-colonies/js-logger'; import { Validator } from '@src/configs/models/configValidator'; -import { SchemaManager } from '@src/schemas/models/schemaManager'; +import type { SchemaManager } from '@src/schemas/models/schemaManager'; vi.mock('@sidvind/better-ajv-errors');