diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 42da9d9..9d158bc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,7 @@ jobs: run: yarn --frozen-lockfile - name: build - run: yarn build-prod + run: yarn build - name: release env: diff --git a/.husky/commit-msg b/.husky/commit-msg index b44680e..009e226 100755 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -1,6 +1,3 @@ -#!/bin/sh [ -n "$CI" ] && exit 0 -. "$(dirname "$0")/_/husky.sh" -./node_modules/.bin/commitlint-def $1 -# exit 1 # uncomment to debug +dev-lib commitlint $1 diff --git a/.husky/pre-commit b/.husky/pre-commit index 4541682..f28735c 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,5 +1,3 @@ -#!/bin/sh [ -n "$CI" ] && exit 0 -. "$(dirname "$0")/_/husky.sh" -./node_modules/.bin/lint-staged-def +dev-lib lint-staged diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..f4864dd --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,4 @@ +// prettier-ignore +module.exports = [ + ...require('@naturalcycles/dev-lib/cfg/eslint.config'), +] diff --git a/package.json b/package.json index 70893c1..84976ab 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,11 @@ "version": "2.61.0", "scripts": { "prepare": "husky", + "build": "dev-lib build", + "test": "dev-lib test", + "lint": "dev-lib lint", + "bt": "dev-lib bt", + "lbt": "dev-lib lbt", "dev": "APP_ENV=dev node -r ts-node/register --watch ./src/test/server/server.ts", "docs-serve": "NODE_OPTIONS=--openssl-legacy-provider vuepress dev docs", "docs-build": "NODE_OPTIONS=--openssl-legacy-provider vuepress build docs", @@ -37,7 +42,7 @@ }, "devDependencies": { "@naturalcycles/bench-lib": "^3.0.0", - "@naturalcycles/dev-lib": "^13.0.0", + "@naturalcycles/dev-lib": "^15.0.4", "@sentry/node": "^7.0.0", "@types/ejs": "^3.0.0", "@types/node": "^20.1.0", @@ -71,7 +76,7 @@ "url": "https://github.com/NaturalCycles/backend-lib" }, "engines": { - "node": ">=18.12.0" + "node": ">=20.12.0" }, "type": "commonjs", "description": "Standard library for making Express.js / AppEngine based backend services", diff --git a/scripts/validation.bench.script.ts b/scripts/validation.bench.script.ts index d163b36..0eb4431 100644 --- a/scripts/validation.bench.script.ts +++ b/scripts/validation.bench.script.ts @@ -7,7 +7,7 @@ yarn tsn validation.bench import http from 'node:http' import { runCannon } from '@naturalcycles/bench-lib' import { jsonSchema } from '@naturalcycles/js-lib' -import { objectSchema, stringSchema, runScript } from '@naturalcycles/nodejs-lib' +import { objectSchema, runScript, stringSchema } from '@naturalcycles/nodejs-lib' import express = require('express') import { BackendApplication, validateBody, validateRequest } from '../src' diff --git a/src/admin/secureHeaderMiddleware.ts b/src/admin/secureHeaderMiddleware.ts index 449fbc7..6723a71 100644 --- a/src/admin/secureHeaderMiddleware.ts +++ b/src/admin/secureHeaderMiddleware.ts @@ -42,8 +42,9 @@ function requireSecureHeaderOrAdmin( // Header provided - don't check for Admin if (providedHeader) { - if (!secureHeaderValue || timingSafeStringEqual(providedHeader, secureHeaderValue)) + if (!secureHeaderValue || timingSafeStringEqual(providedHeader, secureHeaderValue)) { return next() + } return next( new AppError('secureHeader or adminToken is required', { diff --git a/src/deploy/deployGae.ts b/src/deploy/deployGae.ts index 540eb04..c68e8c0 100644 --- a/src/deploy/deployGae.ts +++ b/src/deploy/deployGae.ts @@ -1,4 +1,3 @@ -import { buildProdCommand } from '@naturalcycles/dev-lib' import { _anyToError, _objectAssign, pRetry } from '@naturalcycles/js-lib' import { appendToGithubSummary, execVoidCommandSync } from '@naturalcycles/nodejs-lib' import { getBackendCfg } from './backend.cfg.util' @@ -11,9 +10,9 @@ export interface DeployGaeOptions extends DeployPrepareOptions, DeployHealthChec export async function deployGae(opt: DeployGaeOptions = {}): Promise { const { logOnFailure, logOnSuccess } = opt - // 1. build-prod + // 1. build - buildProdCommand() + execVoidCommandSync('yarn', ['build']) // 2. deploy-prepare diff --git a/src/deploy/deployHealthCheck.ts b/src/deploy/deployHealthCheck.ts index dc925cd..cd00508 100644 --- a/src/deploy/deployHealthCheck.ts +++ b/src/deploy/deployHealthCheck.ts @@ -1,6 +1,6 @@ import { inspect, InspectOptions } from 'node:util' -import { pDelay, _filterFalsyValues, _ms, _since, getFetcher } from '@naturalcycles/js-lib' -import { execVoidCommandSync, dimGrey, red } from '@naturalcycles/nodejs-lib' +import { _filterFalsyValues, _ms, _since, getFetcher, pDelay } from '@naturalcycles/js-lib' +import { dimGrey, execVoidCommandSync, red } from '@naturalcycles/nodejs-lib' import { coloredHttpCode } from '../server/request.log.util' export interface DeployHealthCheckOptions { diff --git a/src/deploy/index.ts b/src/deploy/index.ts index 23a2ae4..15767a5 100644 --- a/src/deploy/index.ts +++ b/src/deploy/index.ts @@ -5,13 +5,13 @@ import { deployGae } from './deployGae' import { deployHealthCheck, DeployHealthCheckOptions } from './deployHealthCheck' import { deployPrepare } from './deployPrepare' -export type { BackendCfg, DeployInfo, DeployHealthCheckOptions } +export type { BackendCfg, DeployHealthCheckOptions, DeployInfo } export { - getBackendCfg, - createDeployInfo, createAppYaml, + createDeployInfo, deployGae, - deployPrepare, deployHealthCheck, + deployPrepare, + getBackendCfg, } diff --git a/src/general.server.test.ts b/src/general.server.test.ts index ed4c3e7..dc6faec 100644 --- a/src/general.server.test.ts +++ b/src/general.server.test.ts @@ -7,9 +7,9 @@ import { pExpectedError, } from '@naturalcycles/js-lib' import { arraySchema, deflateString, objectSchema } from '@naturalcycles/nodejs-lib' +import { getDefaultRouter, validateRequest } from './index' import { safeJsonMiddleware } from './server/safeJsonMiddleware' import { expressTestService } from './testing' -import { getDefaultRouter, validateRequest } from './index' const router = getDefaultRouter() router.get('/circular', safeJsonMiddleware(), async req => { diff --git a/src/index.ts b/src/index.ts index d02686e..ad32433 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,31 +7,31 @@ export * from './env/env.model' export * from './env/env.shared.service' export * from './gae/appEngine.util' export * from './sentry/sentry.shared.service' +export * from './server/appEngineLogMiddleware' +export * from './server/asyncLocalStorageMiddleware' +export * from './server/basicAuthMiddleware' +export * from './server/bodyParserTimeoutMiddleware' export * from './server/catchWrapper' export * from './server/createDefaultApp' export * from './server/createDefaultApp.model' export * from './server/deployInfo.util' -export * from './server/getDefaultRouter' -export * from './server/bodyParserTimeoutMiddleware' export * from './server/genericErrorMiddleware' -export * from './server/serverStatsMiddleware' +export * from './server/getDefaultRouter' export * from './server/methodOverrideMiddleware' export * from './server/notFoundMiddleware' export * from './server/okMiddleware' -export * from './server/basicAuthMiddleware' +export * from './server/request.log.util' +export * from './server/request.util' export * from './server/requestTimeoutMiddleware' -export * from './server/validation/validateRequest' -export * from './server/simpleRequestLoggerMiddleware' +export * from './server/safeJsonMiddleware' +export * from './server/server.model' +export * from './server/serverStatsMiddleware' export * from './server/serverStatusMiddleware' -export * from './server/validation/validateMiddleware' -export * from './server/validation/zodValidateMiddleware' -export * from './server/request.log.util' +export * from './server/simpleRequestLoggerMiddleware' export * from './server/startServer' export * from './server/startServer.model' -export * from './server/asyncLocalStorageMiddleware' -export * from './server/server.model' -export * from './server/appEngineLogMiddleware' -export * from './server/safeJsonMiddleware' -export * from './server/request.util' +export * from './server/validation/validateMiddleware' +export * from './server/validation/validateRequest' +export * from './server/validation/zodValidateMiddleware' export { onFinished } diff --git a/src/sentry/sentry.shared.service.ts b/src/sentry/sentry.shared.service.ts index 991fe23..45e9c18 100644 --- a/src/sentry/sentry.shared.service.ts +++ b/src/sentry/sentry.shared.service.ts @@ -126,8 +126,9 @@ export class SentrySharedService { if ( data?.reportRate && // E.g rate of 0.1 means 10% of errors are reported Math.random() > data.reportRate - ) + ) { return + } // This is to avoid Sentry cutting err.message to 253 characters // It will log additional "breadcrumb object" before the error diff --git a/src/server/appEngineLogMiddleware.ts b/src/server/appEngineLogMiddleware.ts index 15adffa..c5a5bda 100644 --- a/src/server/appEngineLogMiddleware.ts +++ b/src/server/appEngineLogMiddleware.ts @@ -1,6 +1,6 @@ import { inspect } from 'node:util' import { AnyObject, CommonLogger } from '@naturalcycles/js-lib' -import { dimGrey, _inspect } from '@naturalcycles/nodejs-lib' +import { _inspect, dimGrey } from '@naturalcycles/nodejs-lib' import { BackendRequestHandler } from './server.model' const { GOOGLE_CLOUD_PROJECT, GAE_INSTANCE } = process.env diff --git a/src/server/asyncLocalStorageMiddleware.ts b/src/server/asyncLocalStorageMiddleware.ts index 6930ff3..6ae81b6 100644 --- a/src/server/asyncLocalStorageMiddleware.ts +++ b/src/server/asyncLocalStorageMiddleware.ts @@ -1,6 +1,6 @@ import { AsyncLocalStorage } from 'node:async_hooks' import { _lazyValue, CommonLogger } from '@naturalcycles/js-lib' -import { gaeLogger, devLogger, ciLogger } from './appEngineLogMiddleware' +import { ciLogger, devLogger, gaeLogger } from './appEngineLogMiddleware' import { BackendRequest, BackendRequestHandler } from './server.model' const { GAE_INSTANCE, CI } = process.env diff --git a/src/server/createDefaultApp.ts b/src/server/createDefaultApp.ts index 791c66a..8d837d7 100644 --- a/src/server/createDefaultApp.ts +++ b/src/server/createDefaultApp.ts @@ -5,9 +5,9 @@ import { BackendApplication, isGAE, methodOverrideMiddleware } from '..' import { appEngineLogMiddleware } from './appEngineLogMiddleware' import { asyncLocalStorageMiddleware } from './asyncLocalStorageMiddleware' import { - DefaultAppCfg, BackendRequestHandlerCfg, BackendRequestHandlerWithPath, + DefaultAppCfg, } from './createDefaultApp.model' import { genericErrorMiddleware } from './genericErrorMiddleware' import { notFoundMiddleware } from './notFoundMiddleware' diff --git a/src/server/server.model.ts b/src/server/server.model.ts index a5afe38..19e209a 100644 --- a/src/server/server.model.ts +++ b/src/server/server.model.ts @@ -1,5 +1,5 @@ import type { CommonLogFunction, Promisable } from '@naturalcycles/js-lib' -import type { IRouter, Request, NextFunction, Response, Application } from 'express' +import type { Application, IRouter, NextFunction, Request, Response } from 'express' /** * Use this interface instead of express.Request in cases when TypeScript gives an error, because it haven't "included" this very file. diff --git a/src/server/validation/validateMiddleware.ts b/src/server/validation/validateMiddleware.ts index 642ac81..5113ede 100644 --- a/src/server/validation/validateMiddleware.ts +++ b/src/server/validation/validateMiddleware.ts @@ -1,4 +1,4 @@ -import { JsonSchema, JsonSchemaBuilder, _get, AppError } from '@naturalcycles/js-lib' +import { _get, AppError, JsonSchema, JsonSchemaBuilder } from '@naturalcycles/js-lib' import { AjvSchema, AjvValidationError } from '@naturalcycles/nodejs-lib' import { BackendRequestHandler } from '../server.model' import { ReqValidationOptions } from './validateRequest' diff --git a/src/test/env/test1.env.ts b/src/test/env/test1.env.ts index 32a78ac..c14ba93 100644 --- a/src/test/env/test1.env.ts +++ b/src/test/env/test1.env.ts @@ -3,5 +3,4 @@ const test1Env = { a: 'a1', } -// eslint-disable-next-line import/no-default-export export default test1Env diff --git a/src/test/env/test2.env.ts b/src/test/env/test2.env.ts index 79d14bd..90720aa 100644 --- a/src/test/env/test2.env.ts +++ b/src/test/env/test2.env.ts @@ -3,5 +3,4 @@ const test2Env = { a: 'a2', } -// eslint-disable-next-line import/no-default-export export default test2Env diff --git a/src/test/globalSetup.ts b/src/test/globalSetup.ts index e0565ce..45b4d4f 100644 --- a/src/test/globalSetup.ts +++ b/src/test/globalSetup.ts @@ -18,7 +18,7 @@ declare global { } } -// eslint-disable-next-line import/no-anonymous-default-export, import/no-default-export, unicorn/no-anonymous-default-export +// eslint-disable-next-line import/no-anonymous-default-export, unicorn/no-anonymous-default-export export default async (): Promise => { const resources = [debugResource] diff --git a/src/test/globalTeardown.ts b/src/test/globalTeardown.ts index e66b212..fe1c34c 100644 --- a/src/test/globalTeardown.ts +++ b/src/test/globalTeardown.ts @@ -1,6 +1,6 @@ import { _since } from '@naturalcycles/js-lib' -// eslint-disable-next-line import/no-anonymous-default-export, import/no-default-export, unicorn/no-anonymous-default-export +// eslint-disable-next-line import/no-anonymous-default-export, unicorn/no-anonymous-default-export export default async (): Promise => { const started = Date.now() // @ts-expect-error diff --git a/src/test/server/server.ts b/src/test/server/server.ts index 441beef..a629a7f 100644 --- a/src/test/server/server.ts +++ b/src/test/server/server.ts @@ -15,12 +15,12 @@ console.log('startServer... ') import { _errorLikeToErrorObject, AppError, pDelay } from '@naturalcycles/js-lib' import { loginHtml } from '../../admin/adminMiddleware' import { - startServer, + basicAuthMiddleware, getDefaultRouter, - serverStatusMiddleware, okMiddleware, SentrySharedService, - basicAuthMiddleware, + serverStatusMiddleware, + startServer, } from '../../index' import { getRequest, diff --git a/yarn.lock b/yarn.lock index c030fb5..cb537a3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,37 +24,37 @@ picocolors "^1.0.0" "@babel/compat-data@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.8.tgz#f9196455334c38d059ac8b1a16a51decda9d30d3" - integrity sha512-c4IM7OTg6k1Q+AJ153e2mc2QVTezTwnb4VzquwcyiEzGnW0Kedv4do/TrkU98qPeC5LNiMt/QXwIjzYXLBpyZg== + version "7.24.9" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.9.tgz#53eee4e68f1c1d0282aa0eb05ddb02d033fc43a0" + integrity sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng== "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.8.tgz#c24f83985214f599cee5fc26d393d9ab320342f4" - integrity sha512-6AWcmZC/MZCO0yKys4uhg5NlxL0ESF3K6IAaoQ+xSXvPyPyxNWRafP+GDbI88Oh68O7QkJgmEtedWPM9U0pZNg== + version "7.24.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.9.tgz#dc07c9d307162c97fa9484ea997ade65841c7c82" + integrity sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.8" + "@babel/generator" "^7.24.9" "@babel/helper-compilation-targets" "^7.24.8" - "@babel/helper-module-transforms" "^7.24.8" + "@babel/helper-module-transforms" "^7.24.9" "@babel/helpers" "^7.24.8" "@babel/parser" "^7.24.8" "@babel/template" "^7.24.7" "@babel/traverse" "^7.24.8" - "@babel/types" "^7.24.8" + "@babel/types" "^7.24.9" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.24.8", "@babel/generator@^7.7.2": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.8.tgz#1802d6ac4d77a9199c75ae3eb6a08336e5d1d39a" - integrity sha512-47DG+6F5SzOi0uEvK4wMShmn5yY0mVjVJoWTphdY2B4Rx9wHgjK7Yhtr0ru6nE+sn0v38mzrWOlah0p/YlHHOQ== +"@babel/generator@^7.24.8", "@babel/generator@^7.24.9", "@babel/generator@^7.7.2": + version "7.24.10" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.10.tgz#a4ab681ec2a78bbb9ba22a3941195e28a81d8e76" + integrity sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg== dependencies: - "@babel/types" "^7.24.8" + "@babel/types" "^7.24.9" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" @@ -100,10 +100,10 @@ "@babel/traverse" "^7.24.7" "@babel/types" "^7.24.7" -"@babel/helper-module-transforms@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.8.tgz#b1f2df4f96f3465b0d035b697ec86cb51ff348fe" - integrity sha512-m4vWKVqvkVAWLXfHCCfff2luJj86U+J0/x+0N3ArG/tP0Fq7zky2dYwMbtPmkc/oulkkbjdL3uWzuoBwQ8R00Q== +"@babel/helper-module-transforms@^7.24.9": + version "7.24.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz#e13d26306b89eea569180868e652e7f514de9d29" + integrity sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw== dependencies: "@babel/helper-environment-visitor" "^7.24.7" "@babel/helper-module-imports" "^7.24.7" @@ -292,10 +292,10 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.3.3": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.8.tgz#d51ffa9043b17d36622efa44e861a49e69e130a8" - integrity sha512-SkSBEHwwJRU52QEVZBmMBnE5Ux2/6WU1grdYyOhpbCNxbmJrDuDCphBzKZSO3taf0zztp+qkWlymE5tVL5l0TA== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.24.9", "@babel/types@^7.3.3": + version "7.24.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.9.tgz#228ce953d7b0d16646e755acf204f4cf3d08cc73" + integrity sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ== dependencies: "@babel/helper-string-parser" "^7.24.8" "@babel/helper-validator-identifier" "^7.24.7" @@ -490,15 +490,15 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0": version "4.11.0" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== "@eslint/config-array@^0.17.0": - version "0.17.0" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.17.0.tgz#ff305e1ee618a00e6e5d0485454c8d92d94a860d" - integrity sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA== + version "0.17.1" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.17.1.tgz#d9b8b8b6b946f47388f32bedfd3adf29ca8f8910" + integrity sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA== dependencies: "@eslint/object-schema" "^2.1.4" debug "^4.3.1" @@ -519,10 +519,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.6.0": - version "9.6.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.6.0.tgz#5b0cb058cc13d9c92d4e561d3538807fa5127c95" - integrity sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A== +"@eslint/js@9.7.0", "@eslint/js@^9.7.0": + version "9.7.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.7.0.tgz#b712d802582f02b11cfdf83a85040a296afec3f0" + integrity sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng== "@eslint/object-schema@^2.1.4": version "2.1.4" @@ -661,9 +661,9 @@ integrity sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g== "@google-cloud/storage@^7.7.0": - version "7.11.3" - resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-7.11.3.tgz#dff6796174c5349eaa20bc937c91547d5098ab14" - integrity sha512-dFAR/IRENn+ZTTwBbMgoBGSrPrqNKoCEIjG7Wmq2+IpmyyjDk5BLip9HG9TUdMVRRP6xOQFrkEr7zIY1ZsoTSQ== + version "7.12.0" + resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-7.12.0.tgz#3a1a0f683e6f31d1d280e0b2d2e47d36fe812f99" + integrity sha512-122Ui67bhnf8MkRnxQAC5lf7wPGkPP5hL3+J5s9HHDw2J9RpaMmnV8iahn+RUn9BH70W6uRe6nMZLXiRaJM/3g== dependencies: "@google-cloud/paginator" "^5.0.0" "@google-cloud/projectify" "^4.0.0" @@ -682,9 +682,9 @@ uuid "^8.0.0" "@grpc/grpc-js@^1.10.9": - version "1.10.11" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.10.11.tgz#ecc37165593f5608d6d682ffb476a5f9d3c65865" - integrity sha512-3RaoxOqkHHN2c05bwtBNVJmOf/UwMam0rZYtdl7dsRpsvDwcNpv6LkGgzltQ7xVf822LzBoKEPRvf4D7+xeIDw== + version "1.11.1" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.11.1.tgz#a92f33e98f1959feffcd1b25a33b113d2c977b70" + integrity sha512-gyt/WayZrVPH2w/UTLansS7F9Nwld472JxxaETamrM8HNlsa+jSLNyKAZmhxI2Me4c3mQHFiS1wWHDY1g1Kthw== dependencies: "@grpc/proto-loader" "^0.7.13" "@js-sdsl/ordered-map" "^4.4.2" @@ -721,6 +721,145 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570" integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew== +"@inquirer/checkbox@^2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@inquirer/checkbox/-/checkbox-2.4.2.tgz#8da196f4e3c4c4fc2df8762a51c8637fb82ba616" + integrity sha512-iZRNbTlSB9xXt/+jdMFViBdxw1ILWu3365rzfM5OLwAyOScbDFFGSH7LEUwoq1uOIo48ymOEwYSqP5y8hQMlmA== + dependencies: + "@inquirer/core" "^9.0.5" + "@inquirer/figures" "^1.0.5" + "@inquirer/type" "^1.5.1" + ansi-escapes "^4.3.2" + yoctocolors-cjs "^2.1.2" + +"@inquirer/confirm@^3.1.17": + version "3.1.17" + resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-3.1.17.tgz#adca3b0f35e2d2ace53f652a92f987aaccb8482a" + integrity sha512-qCpt/AABzPynz8tr69VDvhcjwmzAryipWXtW8Vi6m651da4H/d0Bdn55LkxXD7Rp2gfgxvxzTdb66AhIA8gzBA== + dependencies: + "@inquirer/core" "^9.0.5" + "@inquirer/type" "^1.5.1" + +"@inquirer/core@^9.0.5": + version "9.0.5" + resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-9.0.5.tgz#b5e14d80e87419231981f48fa86f63d15cb8805b" + integrity sha512-QWG41I7vn62O9stYKg/juKXt1PEbr/4ZZCPb4KgXDQGwgA9M5NBTQ7FnOvT1ridbxkm/wTxLCNraUs7y47pIRQ== + dependencies: + "@inquirer/figures" "^1.0.5" + "@inquirer/type" "^1.5.1" + "@types/mute-stream" "^0.0.4" + "@types/node" "^20.14.11" + "@types/wrap-ansi" "^3.0.0" + ansi-escapes "^4.3.2" + cli-spinners "^2.9.2" + cli-width "^4.1.0" + mute-stream "^1.0.0" + signal-exit "^4.1.0" + strip-ansi "^6.0.1" + wrap-ansi "^6.2.0" + yoctocolors-cjs "^2.1.2" + +"@inquirer/editor@^2.1.17": + version "2.1.17" + resolved "https://registry.yarnpkg.com/@inquirer/editor/-/editor-2.1.17.tgz#954dffb07a362edabdec3e8205c2efc215ab44a7" + integrity sha512-hwx3VpFQzOY2hFWnY+XPsUGCIUVQ5kYxH6+CExv/RbMiAoN3zXtzj8DyrWBOHami0vBrrnPS8CTq3uQWc7N2BA== + dependencies: + "@inquirer/core" "^9.0.5" + "@inquirer/type" "^1.5.1" + external-editor "^3.1.0" + +"@inquirer/expand@^2.1.17": + version "2.1.17" + resolved "https://registry.yarnpkg.com/@inquirer/expand/-/expand-2.1.17.tgz#29872a9577fc2faba0aac6341c48db0334e7399f" + integrity sha512-s4V/dC+GeE5s97xoTtZSmC440uNKePKqZgzqEf0XM63ciilnXAtKGvoAWOePFdlK+oGTz0d8bhbPKwpKGvRYfg== + dependencies: + "@inquirer/core" "^9.0.5" + "@inquirer/type" "^1.5.1" + yoctocolors-cjs "^2.1.2" + +"@inquirer/figures@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.5.tgz#57f9a996d64d3e3345d2a3ca04d36912e94f8790" + integrity sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA== + +"@inquirer/input@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-2.2.4.tgz#5e98e7d24145ab9513374000f3de61f98b8c54f1" + integrity sha512-wvYnDITPQn+ltktj/O9kQjPxOvpmwcpxLWh8brAyD+jlEbihxtrx9cZdZcxqaCVQj3caw4eZa2Uq5xELo4yXkA== + dependencies: + "@inquirer/core" "^9.0.5" + "@inquirer/type" "^1.5.1" + +"@inquirer/number@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@inquirer/number/-/number-1.0.5.tgz#541524d8509a265f03c6583fd23e7017191cab4c" + integrity sha512-+H6TJPU2AJEcoF6nVTWssxS7gnhxWvf6CkILAdfq/yGm/htBKNDrvYLYaJvi1Be/aXQoKID9FaP94bUCjOvJNQ== + dependencies: + "@inquirer/core" "^9.0.5" + "@inquirer/type" "^1.5.1" + +"@inquirer/password@^2.1.17": + version "2.1.17" + resolved "https://registry.yarnpkg.com/@inquirer/password/-/password-2.1.17.tgz#0fe306721360b53bf172a66f4c48780039f91061" + integrity sha512-/u6DM/fDHXoBWyA+9aRhghkeo5smE7wO9k4E2UoJbgiRCkt3JjBEuBqLOJNrz8E16M0ez4UM1vd5cXrmICHW+A== + dependencies: + "@inquirer/core" "^9.0.5" + "@inquirer/type" "^1.5.1" + ansi-escapes "^4.3.2" + +"@inquirer/prompts@^5.3.2": + version "5.3.2" + resolved "https://registry.yarnpkg.com/@inquirer/prompts/-/prompts-5.3.2.tgz#95856acfba761a1bb4e06052b55b91afcc6a940f" + integrity sha512-8Jv+6rbY98ilFAZMYYfetu6XGXF/ZU44i5Z6Jx4t0xmwDh/AihdBV/FgetzDDZZMv5AMW1MT35LI0FiS55LoXw== + dependencies: + "@inquirer/checkbox" "^2.4.2" + "@inquirer/confirm" "^3.1.17" + "@inquirer/editor" "^2.1.17" + "@inquirer/expand" "^2.1.17" + "@inquirer/input" "^2.2.4" + "@inquirer/number" "^1.0.5" + "@inquirer/password" "^2.1.17" + "@inquirer/rawlist" "^2.1.17" + "@inquirer/search" "^1.0.2" + "@inquirer/select" "^2.4.2" + +"@inquirer/rawlist@^2.1.17": + version "2.1.17" + resolved "https://registry.yarnpkg.com/@inquirer/rawlist/-/rawlist-2.1.17.tgz#c17da20af917e35dcc13bf5929748d15c589645d" + integrity sha512-RFrw34xU5aVlMA3ZJCaeKGxYjhu3j4i46O2GMmaRRGeLObCRM1yOKQOsRclSTzjd4A7+M5QleR2iuW/68J9Kwg== + dependencies: + "@inquirer/core" "^9.0.5" + "@inquirer/type" "^1.5.1" + yoctocolors-cjs "^2.1.2" + +"@inquirer/search@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@inquirer/search/-/search-1.0.2.tgz#1650beab88145f7130c78f7865df6320160c0ccf" + integrity sha512-E/JD3MeJwJeNilOnRDmHGnlUksyVqrTQEUNqkRpioj8J0sVxW7+pFRHBM2coFsiCpvI4XKRRhWsai5VP8rrfrQ== + dependencies: + "@inquirer/core" "^9.0.5" + "@inquirer/figures" "^1.0.5" + "@inquirer/type" "^1.5.1" + yoctocolors-cjs "^2.1.2" + +"@inquirer/select@^2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-2.4.2.tgz#d76a7a4ced94ddf195942133cc40e63f92d97035" + integrity sha512-r78JlgShqRxyAtBDeBHSDtfrOhSQwm2ecWGGaxe7kD9JwgL3UN563G1ncVRYdsWD7/tigflcskfipVeoDLhLJg== + dependencies: + "@inquirer/core" "^9.0.5" + "@inquirer/figures" "^1.0.5" + "@inquirer/type" "^1.5.1" + ansi-escapes "^4.3.2" + yoctocolors-cjs "^2.1.2" + +"@inquirer/type@^1.5.1": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-1.5.1.tgz#cdd36732e38ea5d2b1a4336aada65ebe7d2765e0" + integrity sha512-m3YgGQlKNS0BM+8AFiJkCsTqHEFCWn6s/Rqye3mYwvqY6LdfUv12eSwbsgNzrYyrLXiy7IrrjDLPysaSBwEfhw== + dependencies: + mute-stream "^1.0.0" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -997,49 +1136,50 @@ benchmark "^2.1.4" "@naturalcycles/cli@^1.0.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@naturalcycles/cli/-/cli-1.5.0.tgz#7b2aed87b54bc292447b1db35a81c160ff331753" - integrity sha512-RnKIvTUjBfRA1ft/NcZXt4djFGn/0zmkSI9qwoch4i3QJ8u51K8WYuP3eb8E2I+it71wwWL2G2lZS7quU0xomw== + version "1.6.0" + resolved "https://registry.yarnpkg.com/@naturalcycles/cli/-/cli-1.6.0.tgz#089e1acb3793958e9cd81380f964fd0bfbaaf032" + integrity sha512-8X//J9iS0oXENPH+Q9i8jtf++MMWw9HegUGlAhGdEztMAIY00i9i27zp9PUW1ZsuGXr0wjo7aaFHwL7g35Aauw== dependencies: "@naturalcycles/nodejs-lib" "^13.0.1" - chalk "^4.0.0" dotenv "^16.0.0" ts-node "^10.0.0" tslib "^2.6.2" typescript "^5.0.2" "@naturalcycles/db-lib@^9.1.0": - version "9.14.2" - resolved "https://registry.yarnpkg.com/@naturalcycles/db-lib/-/db-lib-9.14.2.tgz#da0fb14236ab3750bbf0bad524ff585bde446467" - integrity sha512-sE5Em3GnSmb0dyaLCs9S9iR4a1oxLzQ+IPdpNdcxyQCSEOsI5EilSvordkaTWBJBeMQWS8FKukK2gcPmhpYkig== + version "9.14.3" + resolved "https://registry.yarnpkg.com/@naturalcycles/db-lib/-/db-lib-9.14.3.tgz#76b68937dc1d1a990ff0a58db02f6c7eb61eb131" + integrity sha512-5NYv9uPomlwTNYuasxk76HQQPuHRyG1IlLjOgFfzmEulf5jbqCE8qagKYiAafPagrJ0YKxYjBSXSxsO16VczRA== dependencies: "@naturalcycles/js-lib" "^14.116.0" "@naturalcycles/nodejs-lib" "^13.1.1" -"@naturalcycles/dev-lib@^13.0.0": - version "13.55.0" - resolved "https://registry.yarnpkg.com/@naturalcycles/dev-lib/-/dev-lib-13.55.0.tgz#e23942fbcd74452ddbd465817351514201e77909" - integrity sha512-TwYDx2jdlOwCxfFXRzynmqIAjv30tdKGGp8ExecrqqmNiflHAqLpLYX/r6u2kosBzhw9Fo05qKinJLIJ77p8Tw== +"@naturalcycles/dev-lib@^15.0.4": + version "15.0.4" + resolved "https://registry.yarnpkg.com/@naturalcycles/dev-lib/-/dev-lib-15.0.4.tgz#2aa98b23f6af3618a4d277fc9d23975a5e1750f5" + integrity sha512-iZuwXMjhduQvf15kQ9P2z99+bZV5rRZv0ZQR504/L+8RgMVAq1uV4U0tG0enH9dU+0irYzup0hLA3Bx2LidRvg== dependencies: "@commitlint/cli" "^19.0.0" "@commitlint/config-conventional" "^19.0.0" + "@eslint/js" "^9.7.0" + "@inquirer/prompts" "^5.3.2" "@naturalcycles/cli" "^1.0.0" "@naturalcycles/js-lib" "^14.0.0" "@naturalcycles/nodejs-lib" "^13.0.1" "@types/jest" "^29.0.0" "@types/node" "^20.1.0" "@types/yargs" "^16.0.0" - "@typescript-eslint/eslint-plugin" "^7.0.1" - "@typescript-eslint/parser" "^7.0.1" eslint "^9.0.0" eslint-config-prettier "^9.0.0" eslint-plugin-import "^2.22.1" eslint-plugin-jest "^28.0.0" eslint-plugin-jsdoc "^48.0.1" + eslint-plugin-simple-import-sort "^12.1.1" eslint-plugin-unicorn "^54.0.0" eslint-plugin-unused-imports "^4.0.0" eslint-plugin-vue "^9.0.0" expect-type "^0.19.0" + globals "^15.8.0" husky "^9.0.2" jest-junit "^16.0.0" lint-staged "^15.0.1" @@ -1049,20 +1189,21 @@ timekeeper "^2.2.0" ts-jest "^29.0.0" typescript "^5.0.2" + typescript-eslint "^7.16.1" yargs "^17.0.0" "@naturalcycles/js-lib@^14.0.0", "@naturalcycles/js-lib@^14.116.0", "@naturalcycles/js-lib@^14.244.0": - version "14.244.0" - resolved "https://registry.yarnpkg.com/@naturalcycles/js-lib/-/js-lib-14.244.0.tgz#a8c38b99dee32dc25814c52eca98fd0fa87d8634" - integrity sha512-lQMPWGrZz1QxC8YzBQhQwwV3WBL8AX2/Z+ki9ZNZwByu/wZ5PrHIFgnndNxuDg9+KLx+oB2UnYwrV9yuuhHIBA== + version "14.247.0" + resolved "https://registry.yarnpkg.com/@naturalcycles/js-lib/-/js-lib-14.247.0.tgz#d28991e98a028055d79f52935074c6e549f140e7" + integrity sha512-efz54Kkzgbc05Y+AubVrvP1aSdOpIAfZ8+mVoMOcbT7WCOQNalhxc+vC5xA2A3gbG4y4sU/RCQajXFTzEvlpGA== dependencies: tslib "^2.0.0" zod "^3.20.2" "@naturalcycles/nodejs-lib@^13.0.1", "@naturalcycles/nodejs-lib@^13.0.2", "@naturalcycles/nodejs-lib@^13.1.0", "@naturalcycles/nodejs-lib@^13.1.1": - version "13.28.1" - resolved "https://registry.yarnpkg.com/@naturalcycles/nodejs-lib/-/nodejs-lib-13.28.1.tgz#7959717184d6d0fe89994fc8190fd24a08fb2ada" - integrity sha512-U1uoMmKLTtY1LwX7ULSZvNMrB64V1IEwuJY9uZvnR2zLCtKfLB8Jmv99O++hm92/sCqkTV2xI2wVXgYHOQ5Fsw== + version "13.31.1" + resolved "https://registry.yarnpkg.com/@naturalcycles/nodejs-lib/-/nodejs-lib-13.31.1.tgz#4db32e7bac621f6d2179e439bb3480315178f353" + integrity sha512-RMyACm18PJTJUTAcRtGUe7huVLfSWqvsA75IJ/3cXGOryVVAbAAtj9wn4ZYJwRdLP/bJWglCrYlthu8G+/kb3Q== dependencies: "@naturalcycles/js-lib" "^14.244.0" "@types/js-yaml" "^4.0.9" @@ -1438,10 +1579,17 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== -"@types/node@*", "@types/node@>=13.7.0", "@types/node@^20.1.0", "@types/node@^20.10.3": - version "20.14.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.10.tgz#a1a218290f1b6428682e3af044785e5874db469a" - integrity sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ== +"@types/mute-stream@^0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@types/mute-stream/-/mute-stream-0.0.4.tgz#77208e56a08767af6c5e1237be8888e2f255c478" + integrity sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow== + dependencies: + "@types/node" "*" + +"@types/node@*", "@types/node@>=13.7.0", "@types/node@^20.1.0", "@types/node@^20.10.3", "@types/node@^20.14.11": + version "20.14.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.12.tgz#129d7c3a822cb49fc7ff661235f19cfefd422b49" + integrity sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ== dependencies: undici-types "~5.26.4" @@ -1519,6 +1667,11 @@ resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== +"@types/wrap-ansi@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz#18b97a972f94f60a679fd5c796d96421b9abb9fd" + integrity sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g== + "@types/yargs-parser@*": version "21.0.3" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" @@ -1538,62 +1691,62 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^7.0.1": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.0.tgz#b3563927341eca15124a18c6f94215f779f5c02a" - integrity sha512-py1miT6iQpJcs1BiJjm54AMzeuMPBSPuKPlnT8HlfudbcS5rYeX5jajpLf3mrdRh9dA/Ec2FVUY0ifeVNDIhZw== +"@typescript-eslint/eslint-plugin@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.17.0.tgz#c8ed1af1ad2928ede5cdd207f7e3090499e1f77b" + integrity sha512-pyiDhEuLM3PuANxH7uNYan1AaFs5XE0zw1hq69JBvGvE7gSuEoQl1ydtEe/XQeoC3GQxLXyOVa5kNOATgM638A== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "7.16.0" - "@typescript-eslint/type-utils" "7.16.0" - "@typescript-eslint/utils" "7.16.0" - "@typescript-eslint/visitor-keys" "7.16.0" + "@typescript-eslint/scope-manager" "7.17.0" + "@typescript-eslint/type-utils" "7.17.0" + "@typescript-eslint/utils" "7.17.0" + "@typescript-eslint/visitor-keys" "7.17.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" ts-api-utils "^1.3.0" -"@typescript-eslint/parser@^7.0.1": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.16.0.tgz#53fae8112f8c912024aea7b499cf7374487af6d8" - integrity sha512-ar9E+k7CU8rWi2e5ErzQiC93KKEFAXA2Kky0scAlPcxYblLt8+XZuHUZwlyfXILyQa95P6lQg+eZgh/dDs3+Vw== +"@typescript-eslint/parser@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.17.0.tgz#be8e32c159190cd40a305a2121220eadea5a88e7" + integrity sha512-puiYfGeg5Ydop8eusb/Hy1k7QmOU6X3nvsqCgzrB2K4qMavK//21+PzNE8qeECgNOIoertJPUC1SpegHDI515A== dependencies: - "@typescript-eslint/scope-manager" "7.16.0" - "@typescript-eslint/types" "7.16.0" - "@typescript-eslint/typescript-estree" "7.16.0" - "@typescript-eslint/visitor-keys" "7.16.0" + "@typescript-eslint/scope-manager" "7.17.0" + "@typescript-eslint/types" "7.17.0" + "@typescript-eslint/typescript-estree" "7.17.0" + "@typescript-eslint/visitor-keys" "7.17.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.16.0.tgz#eb0757af5720c9c53c8010d7a0355ae27e17b7e5" - integrity sha512-8gVv3kW6n01Q6TrI1cmTZ9YMFi3ucDT7i7aI5lEikk2ebk1AEjrwX8MDTdaX5D7fPXMBLvnsaa0IFTAu+jcfOw== +"@typescript-eslint/scope-manager@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz#e072d0f914662a7bfd6c058165e3c2b35ea26b9d" + integrity sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA== dependencies: - "@typescript-eslint/types" "7.16.0" - "@typescript-eslint/visitor-keys" "7.16.0" + "@typescript-eslint/types" "7.17.0" + "@typescript-eslint/visitor-keys" "7.17.0" -"@typescript-eslint/type-utils@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.16.0.tgz#ec52b1932b8fb44a15a3e20208e0bd49d0b6bd00" - integrity sha512-j0fuUswUjDHfqV/UdW6mLtOQQseORqfdmoBNDFOqs9rvNVR2e+cmu6zJu/Ku4SDuqiJko6YnhwcL8x45r8Oqxg== +"@typescript-eslint/type-utils@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.17.0.tgz#c5da78feb134c9c9978cbe89e2b1a589ed22091a" + integrity sha512-XD3aaBt+orgkM/7Cei0XNEm1vwUxQ958AOLALzPlbPqb8C1G8PZK85tND7Jpe69Wualri81PLU+Zc48GVKIMMA== dependencies: - "@typescript-eslint/typescript-estree" "7.16.0" - "@typescript-eslint/utils" "7.16.0" + "@typescript-eslint/typescript-estree" "7.17.0" + "@typescript-eslint/utils" "7.17.0" debug "^4.3.4" ts-api-utils "^1.3.0" -"@typescript-eslint/types@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.16.0.tgz#60a19d7e7a6b1caa2c06fac860829d162a036ed2" - integrity sha512-fecuH15Y+TzlUutvUl9Cc2XJxqdLr7+93SQIbcZfd4XRGGKoxyljK27b+kxKamjRkU7FYC6RrbSCg0ALcZn/xw== +"@typescript-eslint/types@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.17.0.tgz#7ce8185bdf06bc3494e73d143dbf3293111b9cff" + integrity sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A== -"@typescript-eslint/typescript-estree@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.0.tgz#98ac779d526fab2a781e5619c9250f3e33867c09" - integrity sha512-a5NTvk51ZndFuOLCh5OaJBELYc2O3Zqxfl3Js78VFE1zE46J2AaVuW+rEbVkQznjkmlzWsUI15BG5tQMixzZLw== +"@typescript-eslint/typescript-estree@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz#dcab3fea4c07482329dd6107d3c6480e228e4130" + integrity sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw== dependencies: - "@typescript-eslint/types" "7.16.0" - "@typescript-eslint/visitor-keys" "7.16.0" + "@typescript-eslint/types" "7.17.0" + "@typescript-eslint/visitor-keys" "7.17.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -1601,22 +1754,22 @@ semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/utils@7.16.0", "@typescript-eslint/utils@^6.0.0 || ^7.0.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.16.0.tgz#b38dc0ce1778e8182e227c98d91d3418449aa17f" - integrity sha512-PqP4kP3hb4r7Jav+NiRCntlVzhxBNWq6ZQ+zQwII1y/G/1gdIPeYDCKr2+dH6049yJQsWZiHU6RlwvIFBXXGNA== +"@typescript-eslint/utils@7.17.0", "@typescript-eslint/utils@^6.0.0 || ^7.0.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.17.0.tgz#815cd85b9001845d41b699b0ce4f92d6dfb84902" + integrity sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "7.16.0" - "@typescript-eslint/types" "7.16.0" - "@typescript-eslint/typescript-estree" "7.16.0" + "@typescript-eslint/scope-manager" "7.17.0" + "@typescript-eslint/types" "7.17.0" + "@typescript-eslint/typescript-estree" "7.17.0" -"@typescript-eslint/visitor-keys@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.0.tgz#a1d99fa7a3787962d6e0efd436575ef840e23b06" - integrity sha512-rMo01uPy9C7XxG7AFsxa8zLnWXTF8N3PYclekWSrurvhwiw1eW88mrKiAYe6s53AUY57nTRz8dJsuuXdkAhzCg== +"@typescript-eslint/visitor-keys@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz#680465c734be30969e564b4647f38d6cdf49bfb0" + integrity sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A== dependencies: - "@typescript-eslint/types" "7.16.0" + "@typescript-eslint/types" "7.17.0" eslint-visitor-keys "^3.4.3" JSONStream@^1.3.5: @@ -1710,16 +1863,16 @@ ajv@^6.12.4: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.10.0, ajv@^8.11.0, ajv@^8.6.2: - version "8.16.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.16.0.tgz#22e2a92b94f005f7e0f9c9d39652ef0b8f6f0cb4" - integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== dependencies: fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" - uri-js "^4.4.1" -ansi-escapes@^4.2.1: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -2162,9 +2315,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001640: - version "1.0.30001641" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001641.tgz#3572862cd18befae3f637f2a1101cc033c6782ac" - integrity sha512-Phv5thgl67bHYo1TtMY/MurjkHhV4EDaCosezRXgZ8jzA/Ub+wjxAvbGvjoFENStinwi5kCyOYV3mi5tOGykwA== + version "1.0.30001643" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz#9c004caef315de9452ab970c3da71085f8241dbd" + integrity sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg== chalk@^2.4.2: version "2.4.2" @@ -2198,6 +2351,11 @@ char-spinner@^1.0.1: resolved "https://registry.yarnpkg.com/char-spinner/-/char-spinner-1.0.1.tgz#e6ea67bd247e107112983b7ab0479ed362800081" integrity sha512-acv43vqJ0+N0rD+Uw3pDHSxP30FHrywu2NO6/wBaHChJIizpDeBUd6NjqhNhy9LGaEAhZAXn46QzmlAvIWd16g== +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + ci-info@^3.2.0: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" @@ -2227,6 +2385,11 @@ cli-cursor@^4.0.0: dependencies: restore-cursor "^4.0.0" +cli-spinners@^2.9.2: + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + cli-table3@^0.6.0: version "0.6.5" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.5.tgz#013b91351762739c16a9567c21a04632e449bf2f" @@ -2244,6 +2407,11 @@ cli-truncate@^4.0.0: slice-ansi "^5.0.0" string-width "^7.0.0" +cli-width@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" + integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== + cliui@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" @@ -2629,7 +2797,7 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -ejs@^3.0.0, ejs@^3.0.1: +ejs@^3.0.1, ejs@^3.1.10: version "3.1.10" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== @@ -2637,9 +2805,9 @@ ejs@^3.0.0, ejs@^3.0.1: jake "^10.8.5" electron-to-chromium@^1.4.820: - version "1.4.827" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz#76068ed1c71dd3963e1befc8ae815004b2da6a02" - integrity sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ== + version "1.5.0" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.0.tgz#0d3123a9f09189b9c7ab4b5d6848d71b3c1fd0e8" + integrity sha512-Vb3xHHYnLseK8vlMJQKJYXJ++t4u1/qJ3vykuVrVjvdiOEhYyT1AuP4x03G8EnPmYvYOhe9T+dADTmthjRQMkA== emittery@^0.13.1: version "0.13.1" @@ -2858,9 +3026,9 @@ eslint-plugin-jest@^28.0.0: "@typescript-eslint/utils" "^6.0.0 || ^7.0.0" eslint-plugin-jsdoc@^48.0.1: - version "48.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.7.0.tgz#1450e5bccc320dee01a8d24ac71651a539857692" - integrity sha512-5oiVf7Y+ZxGYQTlLq81X72n+S+hjvS/u0upAdbpPEeaIZILK3MKN8lm/6QqKioBjm/qZ0B5XpMQUtc2fUkqXAg== + version "48.8.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.8.3.tgz#0a651bc0ab5b0732c39e12b26771fca78c830c1c" + integrity sha512-AtIvwwW9D17MRkM0Z0y3/xZYaa9mdAvJrkY6fU/HNUwGbmMtHVvK4qRM9CDixGVtfNrQitb8c6zQtdh6cTOvLg== dependencies: "@es-joy/jsdoccomment" "~0.46.0" are-docs-informative "^0.0.2" @@ -2869,9 +3037,14 @@ eslint-plugin-jsdoc@^48.0.1: escape-string-regexp "^4.0.0" esquery "^1.6.0" parse-imports "^2.1.1" - semver "^7.6.2" + semver "^7.6.3" spdx-expression-parse "^4.0.0" - synckit "^0.9.0" + synckit "^0.9.1" + +eslint-plugin-simple-import-sort@^12.1.1: + version "12.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz#e64bfdaf91c5b98a298619aa634a9f7aa43b709e" + integrity sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA== eslint-plugin-unicorn@^54.0.0: version "54.0.0" @@ -2896,9 +3069,9 @@ eslint-plugin-unicorn@^54.0.0: strip-indent "^3.0.0" eslint-plugin-unused-imports@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.0.0.tgz#93f3a7ee6088221e4a1d7127866e05d5917a9f65" - integrity sha512-mzM+y2B7XYpQryVa1usT+Y/BdNAtAZiXzwpSyDCboFoJN/LZRN67TNvQxKtuTK/Aplya3sLNQforiubzPPaIcQ== + version "4.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.0.1.tgz#b78916ecb82ae6d0f54efb33879c6c7ecb52f080" + integrity sha512-rax76s05z64uQgG9YXsWFmXrgjkaK79AvfeAWiSxhPP6RVGxeRaj4+2u+wxxu/mDy2pmJoOy1QTOEALMia2xGQ== dependencies: eslint-rule-composer "^0.3.0" @@ -2929,10 +3102,10 @@ eslint-scope@^7.1.1: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-scope@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.1.tgz#a9601e4b81a0b9171657c343fb13111688963cfc" - integrity sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og== +eslint-scope@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.2.tgz#5cbb33d4384c9136083a71190d548158fe128f94" + integrity sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -2948,15 +3121,15 @@ eslint-visitor-keys@^4.0.0: integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== eslint@^9.0.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.6.0.tgz#9f54373afa15e1ba356656a8d96233182027fb49" - integrity sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w== + version "9.7.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.7.0.tgz#bedb48e1cdc2362a0caaa106a4c6ed943e8b09e4" + integrity sha512-FzJ9D/0nGiCGBf8UXO/IGLTgLVzIxze1zpfA8Ton2mjLovXdAPlYDv+MQDcqj3TmrhAGYfOpz9RfR+ent0AgAw== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" + "@eslint-community/regexpp" "^4.11.0" "@eslint/config-array" "^0.17.0" "@eslint/eslintrc" "^3.1.0" - "@eslint/js" "9.6.0" + "@eslint/js" "9.7.0" "@humanwhocodes/module-importer" "^1.0.1" "@humanwhocodes/retry" "^0.3.0" "@nodelib/fs.walk" "^1.2.8" @@ -2965,7 +3138,7 @@ eslint@^9.0.0: cross-spawn "^7.0.2" debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^8.0.1" + eslint-scope "^8.0.2" eslint-visitor-keys "^4.0.0" espree "^10.1.0" esquery "^1.5.0" @@ -3156,6 +3329,15 @@ extend@^3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +external-editor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + farmhash-modern@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/farmhash-modern/-/farmhash-modern-1.1.0.tgz#c36b34ad196290d57b0b482dc89e637d0b59835f" @@ -3227,6 +3409,11 @@ fast-uri@^2.0.0, fast-uri@^2.1.0: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-2.4.0.tgz#67eae6fbbe9f25339d5d3f4c4234787b65d7d55e" integrity sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA== +fast-uri@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" + integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== + fast-xml-parser@^4.3.0: version "4.4.0" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz#341cc98de71e9ba9e651a67f41f1752d1441a501" @@ -3575,6 +3762,11 @@ globals@^14.0.0: resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== +globals@^15.8.0: + version "15.8.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.8.0.tgz#e64bb47b619dd8cbf32b3c1a0a61714e33cbbb41" + integrity sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw== + globalthis@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" @@ -3787,9 +3979,9 @@ human-signals@^5.0.0: integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== husky@^9.0.2: - version "9.0.11" - resolved "https://registry.yarnpkg.com/husky/-/husky-9.0.11.tgz#fc91df4c756050de41b3e478b2158b87c1e79af9" - integrity sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw== + version "9.1.1" + resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.1.tgz#73f8f1b58329f377654293148c1a6458f54ca224" + integrity sha512-fCqlqLXcBnXa/TJXmT93/A36tJsjdJkibQ1MuIiFyCCYUlpYpIaj2mv1w+3KR6Rzu1IC3slFTje5f6DUp2A2rg== hyperid@^3.0.0: version "3.2.0" @@ -3800,7 +3992,7 @@ hyperid@^3.0.0: uuid "^8.3.2" uuid-parse "^1.1.0" -iconv-lite@0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3831,9 +4023,9 @@ import-fresh@^3.2.1, import-fresh@^3.3.0: resolve-from "^4.0.0" import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" @@ -3926,9 +4118,9 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-core-module@^2.13.0, is-core-module@^2.13.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.14.0.tgz#43b8ef9f46a6a08888db67b1ffd4ec9e3dfd59d1" - integrity sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A== + version "2.15.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea" + integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA== dependencies: hasown "^2.0.2" @@ -4141,9 +4333,9 @@ istanbul-reports@^3.1.3: istanbul-lib-report "^3.0.0" jake@^10.8.5: - version "10.9.1" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.1.tgz#8dc96b7fcc41cb19aa502af506da4e1d56f5e62b" - integrity sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w== + version "10.9.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" + integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== dependencies: async "^3.2.3" chalk "^4.0.2" @@ -5110,6 +5302,11 @@ ms@2.1.3, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +mute-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" + integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -5138,9 +5335,9 @@ node-int64@^0.4.0: integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== normalize-package-data@^2.5.0: version "2.5.0" @@ -5286,6 +5483,11 @@ optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -5437,9 +5639,9 @@ pino-std-serializers@^7.0.0: integrity sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA== pino@^9.0.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/pino/-/pino-9.2.0.tgz#e77a9516f3a3e5550d9b76d9f65ac6118ef02bdd" - integrity sha512-g3/hpwfujK5a4oVbaefoJxezLzsDgLcNJeITvC6yrfwYeT9la+edCK42j5QpEQSQCZgTKapXvnQIdgZwvRaZug== + version "9.3.1" + resolved "https://registry.yarnpkg.com/pino/-/pino-9.3.1.tgz#1a2720a58ed2dbc41bdf063366dd3dd717d050c8" + integrity sha512-afSfrq/hUiW/MFmQcLEwV9Zh8Ry6MrMTOyBU53o/fc0gEl+1OZ/Fks/xQCM2nOC0C/OfDtQMnT2d8c3kpcfSzA== dependencies: atomic-sleep "^1.0.0" fast-redact "^3.1.1" @@ -5494,9 +5696,9 @@ prelude-ls@^1.2.1: integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prettier@^3.0.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.2.tgz#03ff86dc7c835f2d2559ee76876a3914cec4a90a" - integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA== + version "3.3.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" + integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== pretty-bytes@^5.4.1: version "5.6.0" @@ -5855,10 +6057,10 @@ semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.6, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.1, semver@^7.6.2: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== +semver@^7.3.2, semver@^7.3.6, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.1, semver@^7.6.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== send@0.18.0: version "0.18.0" @@ -6243,10 +6445,10 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -synckit@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.0.tgz#5b33b458b3775e4466a5b377fba69c63572ae449" - integrity sha512-7RnqIMq572L8PeEzKeBINYEJDDxpcH8JEgLwUqBd3TkofhFRbkq4QLR0u+36avGAhCRbk2nnmjcW9SE531hPDg== +synckit@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.1.tgz#febbfbb6649979450131f64735aa3f6c14575c88" + integrity sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A== dependencies: "@pkgr/core" "^0.1.0" tslib "^2.6.2" @@ -6318,6 +6520,13 @@ timestring@^6.0.0: resolved "https://registry.yarnpkg.com/timestring/-/timestring-6.0.0.tgz#b0c7c331981ecf2066ce88bcfb8ee3ae32e7a0f6" integrity sha512-wMctrWD2HZZLuIlchlkE2dfXJh7J2KDI9Dwl+2abPYg0mswQHfOAyQW3jJg1pY5VfttSINZuKcXoB3FGypVklA== +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -6356,12 +6565,12 @@ ts-api-utils@^1.3.0: integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== ts-jest@^29.0.0: - version "29.2.2" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.2.2.tgz#0d2387bb04d39174b20a05172a968f258aedff4d" - integrity sha512-sSW7OooaKT34AAngP6k1VS669a0HdLxkQZnlC7T76sckGCokXFnvJ3yRlQZGRTAoV5K19HfSgCiSwWOSIfcYlg== + version "29.2.3" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.2.3.tgz#3d226ac36b8b820151a38f164414f9f6b412131f" + integrity sha512-yCcfVdiBFngVz9/keHin9EnsrQtQtEu3nRykNy9RVp+FiPFFbPJ3Sg6Qg4+TkmH0vMP5qsTKgXSsk80HRwvdgQ== dependencies: bs-logger "0.x" - ejs "^3.0.0" + ejs "^3.1.10" fast-json-stable-stringify "2.x" jest-util "^29.0.0" json5 "^2.2.3" @@ -6488,10 +6697,19 @@ typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" +typescript-eslint@^7.16.1: + version "7.17.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-7.17.0.tgz#cc5eddafd38b3c1fe8a52826469d5c78700b7aa7" + integrity sha512-spQxsQvPguduCUfyUvLItvKqK3l8KJ/kqs5Pb/URtzQ5AC53Z6us32St37rpmlt2uESG23lOFpV4UErrmy4dZQ== + dependencies: + "@typescript-eslint/eslint-plugin" "7.17.0" + "@typescript-eslint/parser" "7.17.0" + "@typescript-eslint/utils" "7.17.0" + typescript@^5.0.2: - version "5.5.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.3.tgz#e1b0a3c394190838a0b168e771b0ad56a0af0faa" - integrity sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ== + version "5.5.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" + integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== unbox-primitive@^1.0.2: version "1.0.2" @@ -6504,9 +6722,9 @@ unbox-primitive@^1.0.2: which-boxed-primitive "^1.0.2" "underscore@>= 1.1.6 < 1.14": - version "1.13.6" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" - integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== + version "1.13.7" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.7.tgz#970e33963af9a7dda228f17ebe8399e5fbe63a10" + integrity sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g== undici-types@~5.26.4: version "5.26.5" @@ -6531,7 +6749,7 @@ update-browserslist-db@^1.1.0: escalade "^3.1.2" picocolors "^1.0.1" -uri-js@^4.2.2, uri-js@^4.4.1: +uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== @@ -6676,6 +6894,15 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -6775,6 +7002,11 @@ yocto-queue@^1.0.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.1.1.tgz#fef65ce3ac9f8a32ceac5a634f74e17e5b232110" integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g== +yoctocolors-cjs@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz#f4b905a840a37506813a7acaa28febe97767a242" + integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA== + zod@^3.20.2: version "3.23.8" resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d"