wip on adding linting

This commit is contained in:
bkellam 2025-11-01 16:46:17 -07:00
parent 7e161e6df3
commit d2003c94bb
7 changed files with 412 additions and 34 deletions

View file

@ -0,0 +1,21 @@
// @ts-check
import eslint from '@eslint/js';
import { defineConfig } from 'eslint/config';
import tseslint from 'typescript-eslint';
export default defineConfig(
eslint.configs.recommended,
tseslint.configs.recommendedTypeChecked,
{
// @see: https://typescript-eslint.io/getting-started/typed-linting/
languageOptions: {
parserOptions: {
projectService: true,
},
},
rules: {
"@typescript-eslint/no-floating-promises": "error"
},
}
);

View file

@ -8,17 +8,21 @@
"dev:watch": "tsc-watch --preserveWatchOutput --onSuccess \"yarn dev\"", "dev:watch": "tsc-watch --preserveWatchOutput --onSuccess \"yarn dev\"",
"dev": "node ./dist/index.js", "dev": "node ./dist/index.js",
"build": "tsc", "build": "tsc",
"test": "cross-env SKIP_ENV_VALIDATION=1 vitest --config ./vitest.config.ts" "test": "cross-env SKIP_ENV_VALIDATION=1 vitest --config ./vitest.config.ts",
"lint": "eslint ."
}, },
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.39.0",
"@types/argparse": "^2.0.16", "@types/argparse": "^2.0.16",
"@types/micromatch": "^4.0.9", "@types/micromatch": "^4.0.9",
"@types/node": "^22.7.5", "@types/node": "^22.7.5",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"eslint": "^9.39.0",
"json-schema-to-typescript": "^15.0.4", "json-schema-to-typescript": "^15.0.4",
"tsc-watch": "^6.2.0", "tsc-watch": "^6.2.0",
"tsx": "^4.19.1", "tsx": "^4.19.1",
"typescript": "^5.6.2", "typescript": "^5.9.3",
"typescript-eslint": "^8.46.2",
"vitest": "^2.1.9" "vitest": "^2.1.9"
}, },
"dependencies": { "dependencies": {

View file

@ -65,7 +65,7 @@ export class ConnectionManager {
this.worker.on('error', this.onWorkerError.bind(this)); this.worker.on('error', this.onWorkerError.bind(this));
} }
public startScheduler() { public async startScheduler() {
logger.debug('Starting scheduler'); logger.debug('Starting scheduler');
this.interval = setInterval(async () => { this.interval = setInterval(async () => {
const thresholdDate = new Date(Date.now() - this.settings.resyncConnectionIntervalMs); const thresholdDate = new Date(Date.now() - this.settings.resyncConnectionIntervalMs);
@ -114,7 +114,7 @@ export class ConnectionManager {
} }
}, this.settings.resyncConnectionPollingIntervalMs); }, this.settings.resyncConnectionPollingIntervalMs);
this.worker.run(); await this.worker.run();
} }
@ -179,25 +179,25 @@ export class ConnectionManager {
const result = await (async () => { const result = await (async () => {
switch (config.type) { switch (config.type) {
case 'github': { case 'github': {
return await compileGithubConfig(config, job.data.connectionId, abortController); return compileGithubConfig(config, job.data.connectionId, abortController);
} }
case 'gitlab': { case 'gitlab': {
return await compileGitlabConfig(config, job.data.connectionId); return compileGitlabConfig(config, job.data.connectionId);
} }
case 'gitea': { case 'gitea': {
return await compileGiteaConfig(config, job.data.connectionId); return compileGiteaConfig(config, job.data.connectionId);
} }
case 'gerrit': { case 'gerrit': {
return await compileGerritConfig(config, job.data.connectionId); return compileGerritConfig(config, job.data.connectionId);
} }
case 'bitbucket': { case 'bitbucket': {
return await compileBitbucketConfig(config, job.data.connectionId); return compileBitbucketConfig(config, job.data.connectionId);
} }
case 'azuredevops': { case 'azuredevops': {
return await compileAzureDevOpsConfig(config, job.data.connectionId); return compileAzureDevOpsConfig(config, job.data.connectionId);
} }
case 'git': { case 'git': {
return await compileGenericGitHostConfig(config, job.data.connectionId); return compileGenericGitHostConfig(config, job.data.connectionId);
} }
} }
})(); })();
@ -269,7 +269,7 @@ export class ConnectionManager {
} }
private onJobCompleted = async (job: Job<JobPayload>) => private onJobCompleted = (job: Job<JobPayload>) =>
groupmqLifecycleExceptionWrapper('onJobCompleted', logger, async () => { groupmqLifecycleExceptionWrapper('onJobCompleted', logger, async () => {
const logger = createJobLogger(job.id); const logger = createJobLogger(job.id);
const { connectionId, connectionName, orgId } = job.data; const { connectionId, connectionName, orgId } = job.data;
@ -318,7 +318,7 @@ export class ConnectionManager {
}); });
}); });
private onJobFailed = async (job: Job<JobPayload>) => private onJobFailed = (job: Job<JobPayload>) =>
groupmqLifecycleExceptionWrapper('onJobFailed', logger, async () => { groupmqLifecycleExceptionWrapper('onJobFailed', logger, async () => {
const logger = createJobLogger(job.id); const logger = createJobLogger(job.id);
@ -358,7 +358,7 @@ export class ConnectionManager {
}); });
}); });
private onJobStalled = async (jobId: string) => private onJobStalled = (jobId: string) =>
groupmqLifecycleExceptionWrapper('onJobStalled', logger, async () => { groupmqLifecycleExceptionWrapper('onJobStalled', logger, async () => {
const logger = createJobLogger(jobId); const logger = createJobLogger(jobId);
const { connection } = await this.db.connectionSyncJob.update({ const { connection } = await this.db.connectionSyncJob.update({
@ -384,7 +384,7 @@ export class ConnectionManager {
}); });
}); });
private async onWorkerError(error: Error) { private onWorkerError(error: Error) {
Sentry.captureException(error); Sentry.captureException(error);
logger.error(`Connection syncer worker error.`, error); logger.error(`Connection syncer worker error.`, error);
} }

View file

@ -56,8 +56,8 @@ const userPermissionSyncer = new UserPermissionSyncer(prisma, settings, redis);
const repoIndexManager = new RepoIndexManager(prisma, settings, redis, promClient); const repoIndexManager = new RepoIndexManager(prisma, settings, redis, promClient);
const configManager = new ConfigManager(prisma, connectionManager, env.CONFIG_PATH); const configManager = new ConfigManager(prisma, connectionManager, env.CONFIG_PATH);
connectionManager.startScheduler(); await connectionManager.startScheduler();
repoIndexManager.startScheduler(); await repoIndexManager.startScheduler();
if (env.EXPERIMENT_EE_PERMISSION_SYNC_ENABLED === 'true' && !hasEntitlement('permission-syncing')) { if (env.EXPERIMENT_EE_PERMISSION_SYNC_ENABLED === 'true' && !hasEntitlement('permission-syncing')) {
logger.error('Permission syncing is not supported in current plan. Please contact team@sourcebot.dev for assistance.'); logger.error('Permission syncing is not supported in current plan. Please contact team@sourcebot.dev for assistance.');

View file

@ -80,7 +80,7 @@ export class RepoIndexManager {
await this.scheduleCleanupJobs(); await this.scheduleCleanupJobs();
}, this.settings.reindexRepoPollingIntervalMs); }, this.settings.reindexRepoPollingIntervalMs);
this.worker.run(); await this.worker.run();
} }
private async scheduleIndexJobs() { private async scheduleIndexJobs() {
@ -432,7 +432,7 @@ export class RepoIndexManager {
} }
} }
private onJobCompleted = async (job: Job<JobPayload>) => private onJobCompleted = (job: Job<JobPayload>) =>
groupmqLifecycleExceptionWrapper('onJobCompleted', logger, async () => { groupmqLifecycleExceptionWrapper('onJobCompleted', logger, async () => {
const logger = createJobLogger(job.data.jobId); const logger = createJobLogger(job.data.jobId);
const jobData = await this.db.repoIndexingJob.update({ const jobData = await this.db.repoIndexingJob.update({
@ -484,7 +484,7 @@ export class RepoIndexManager {
this.promClient.repoIndexJobSuccessTotal.inc({ repo: job.data.repoName, type: jobTypeLabel }); this.promClient.repoIndexJobSuccessTotal.inc({ repo: job.data.repoName, type: jobTypeLabel });
}); });
private onJobFailed = async (job: Job<JobPayload>) => private onJobFailed = (job: Job<JobPayload>) =>
groupmqLifecycleExceptionWrapper('onJobFailed', logger, async () => { groupmqLifecycleExceptionWrapper('onJobFailed', logger, async () => {
const logger = createJobLogger(job.data.jobId); const logger = createJobLogger(job.data.jobId);
@ -519,7 +519,7 @@ export class RepoIndexManager {
} }
}); });
private onJobStalled = async (jobId: string) => private onJobStalled = (jobId: string) =>
groupmqLifecycleExceptionWrapper('onJobStalled', logger, async () => { groupmqLifecycleExceptionWrapper('onJobStalled', logger, async () => {
const logger = createJobLogger(jobId); const logger = createJobLogger(jobId);
const { repo, type } = await this.db.repoIndexingJob.update({ const { repo, type } = await this.db.repoIndexingJob.update({
@ -539,7 +539,7 @@ export class RepoIndexManager {
logger.error(`Job ${jobId} stalled for repo ${repo.name} (id: ${repo.id})`); logger.error(`Job ${jobId} stalled for repo ${repo.name} (id: ${repo.id})`);
}); });
private async onWorkerError(error: Error) { private onWorkerError(error: Error) {
Sentry.captureException(error); Sentry.captureException(error);
logger.error(`Index syncer worker error.`, error); logger.error(`Index syncer worker error.`, error);
} }

View file

@ -259,12 +259,10 @@ const createGitCloneUrlWithToken = (cloneUrl: string, credentials: { username?:
* the app. * the app.
* @see: https://openpanel-dev.github.io/groupmq/api-worker/#events * @see: https://openpanel-dev.github.io/groupmq/api-worker/#events
*/ */
export const groupmqLifecycleExceptionWrapper = async (name: string, logger: Logger, fn: () => Promise<void>) => { export const groupmqLifecycleExceptionWrapper = (name: string, logger: Logger, fn: () => Promise<void>) => {
try { fn().catch((error) => {
await fn();
} catch (error) {
Sentry.captureException(error); Sentry.captureException(error);
logger.error(`Exception thrown while executing lifecycle function \`${name}\`.`, error); logger.error(`Exception thrown while executing lifecycle function \`${name}\`.`, error);
} })
} }

369
yarn.lock
View file

@ -2186,6 +2186,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@eslint-community/eslint-utils@npm:^4.8.0":
version: 4.9.0
resolution: "@eslint-community/eslint-utils@npm:4.9.0"
dependencies:
eslint-visitor-keys: "npm:^3.4.3"
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
checksum: 10c0/8881e22d519326e7dba85ea915ac7a143367c805e6ba1374c987aa2fbdd09195cc51183d2da72c0e2ff388f84363e1b220fd0d19bef10c272c63455162176817
languageName: node
linkType: hard
"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1": "@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1":
version: 4.12.1 version: 4.12.1
resolution: "@eslint-community/regexpp@npm:4.12.1" resolution: "@eslint-community/regexpp@npm:4.12.1"
@ -2193,6 +2204,42 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@eslint-community/regexpp@npm:^4.12.1":
version: 4.12.2
resolution: "@eslint-community/regexpp@npm:4.12.2"
checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d
languageName: node
linkType: hard
"@eslint/config-array@npm:^0.21.1":
version: 0.21.1
resolution: "@eslint/config-array@npm:0.21.1"
dependencies:
"@eslint/object-schema": "npm:^2.1.7"
debug: "npm:^4.3.1"
minimatch: "npm:^3.1.2"
checksum: 10c0/2f657d4edd6ddcb920579b72e7a5b127865d4c3fb4dda24f11d5c4f445a93ca481aebdbd6bf3291c536f5d034458dbcbb298ee3b698bc6c9dd02900fe87eec3c
languageName: node
linkType: hard
"@eslint/config-helpers@npm:^0.4.2":
version: 0.4.2
resolution: "@eslint/config-helpers@npm:0.4.2"
dependencies:
"@eslint/core": "npm:^0.17.0"
checksum: 10c0/92efd7a527b2d17eb1a148409d71d80f9ac160b565ac73ee092252e8bf08ecd08670699f46b306b94f13d22e88ac88a612120e7847570dd7cdc72f234d50dcb4
languageName: node
linkType: hard
"@eslint/core@npm:^0.17.0":
version: 0.17.0
resolution: "@eslint/core@npm:0.17.0"
dependencies:
"@types/json-schema": "npm:^7.0.15"
checksum: 10c0/9a580f2246633bc752298e7440dd942ec421860d1946d0801f0423830e67887e4aeba10ab9a23d281727a978eb93d053d1922a587d502942a713607f40ed704e
languageName: node
linkType: hard
"@eslint/eslintrc@npm:^2.1.4": "@eslint/eslintrc@npm:^2.1.4":
version: 2.1.4 version: 2.1.4
resolution: "@eslint/eslintrc@npm:2.1.4" resolution: "@eslint/eslintrc@npm:2.1.4"
@ -2210,7 +2257,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@eslint/eslintrc@npm:^3": "@eslint/eslintrc@npm:^3, @eslint/eslintrc@npm:^3.3.1":
version: 3.3.1 version: 3.3.1
resolution: "@eslint/eslintrc@npm:3.3.1" resolution: "@eslint/eslintrc@npm:3.3.1"
dependencies: dependencies:
@ -2234,6 +2281,30 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@eslint/js@npm:9.39.0, @eslint/js@npm:^9.39.0":
version: 9.39.0
resolution: "@eslint/js@npm:9.39.0"
checksum: 10c0/f0ac65784932f1a5d3b9c0db12eb1ff9dcb480dbd03da1045e5da820bd97a35875fb7790f1fbe652763270b1327b770c79a9ba0396e2ad91fbd97822493e67eb
languageName: node
linkType: hard
"@eslint/object-schema@npm:^2.1.7":
version: 2.1.7
resolution: "@eslint/object-schema@npm:2.1.7"
checksum: 10c0/936b6e499853d1335803f556d526c86f5fe2259ed241bc665000e1d6353828edd913feed43120d150adb75570cae162cf000b5b0dfc9596726761c36b82f4e87
languageName: node
linkType: hard
"@eslint/plugin-kit@npm:^0.4.1":
version: 0.4.1
resolution: "@eslint/plugin-kit@npm:0.4.1"
dependencies:
"@eslint/core": "npm:^0.17.0"
levn: "npm:^0.4.1"
checksum: 10c0/51600f78b798f172a9915dffb295e2ffb44840d583427bc732baf12ecb963eb841b253300e657da91d890f4b323d10a1bd12934bf293e3018d8bb66fdce5217b
languageName: node
linkType: hard
"@floating-ui/core@npm:^1.6.0": "@floating-ui/core@npm:^1.6.0":
version: 1.6.9 version: 1.6.9
resolution: "@floating-ui/core@npm:1.6.9" resolution: "@floating-ui/core@npm:1.6.9"
@ -2328,6 +2399,23 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@humanfs/core@npm:^0.19.1":
version: 0.19.1
resolution: "@humanfs/core@npm:0.19.1"
checksum: 10c0/aa4e0152171c07879b458d0e8a704b8c3a89a8c0541726c6b65b81e84fd8b7564b5d6c633feadc6598307d34564bd53294b533491424e8e313d7ab6c7bc5dc67
languageName: node
linkType: hard
"@humanfs/node@npm:^0.16.6":
version: 0.16.7
resolution: "@humanfs/node@npm:0.16.7"
dependencies:
"@humanfs/core": "npm:^0.19.1"
"@humanwhocodes/retry": "npm:^0.4.0"
checksum: 10c0/9f83d3cf2cfa37383e01e3cdaead11cd426208e04c44adcdd291aa983aaf72d7d3598844d2fe9ce54896bb1bf8bd4b56883376611c8905a19c44684642823f30
languageName: node
linkType: hard
"@humanwhocodes/config-array@npm:^0.13.0": "@humanwhocodes/config-array@npm:^0.13.0":
version: 0.13.0 version: 0.13.0
resolution: "@humanwhocodes/config-array@npm:0.13.0" resolution: "@humanwhocodes/config-array@npm:0.13.0"
@ -2353,6 +2441,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2":
version: 0.4.3
resolution: "@humanwhocodes/retry@npm:0.4.3"
checksum: 10c0/3775bb30087d4440b3f7406d5a057777d90e4b9f435af488a4923ef249e93615fb78565a85f173a186a076c7706a81d0d57d563a2624e4de2c5c9c66c486ce42
languageName: node
linkType: hard
"@iconify/react@npm:^5.1.0": "@iconify/react@npm:^5.1.0":
version: 5.2.0 version: 5.2.0
resolution: "@iconify/react@npm:5.2.0" resolution: "@iconify/react@npm:5.2.0"
@ -7774,6 +7869,7 @@ __metadata:
resolution: "@sourcebot/backend@workspace:packages/backend" resolution: "@sourcebot/backend@workspace:packages/backend"
dependencies: dependencies:
"@coderabbitai/bitbucket": "npm:^1.1.3" "@coderabbitai/bitbucket": "npm:^1.1.3"
"@eslint/js": "npm:^9.39.0"
"@gitbeaker/rest": "npm:^40.5.1" "@gitbeaker/rest": "npm:^40.5.1"
"@octokit/app": "npm:^16.1.1" "@octokit/app": "npm:^16.1.1"
"@octokit/rest": "npm:^21.0.2" "@octokit/rest": "npm:^21.0.2"
@ -7798,6 +7894,7 @@ __metadata:
cross-env: "npm:^7.0.3" cross-env: "npm:^7.0.3"
cross-fetch: "npm:^4.0.0" cross-fetch: "npm:^4.0.0"
dotenv: "npm:^16.4.5" dotenv: "npm:^16.4.5"
eslint: "npm:^9.39.0"
express: "npm:^4.21.2" express: "npm:^4.21.2"
git-url-parse: "npm:^16.1.0" git-url-parse: "npm:^16.1.0"
gitea-js: "npm:^1.22.0" gitea-js: "npm:^1.22.0"
@ -7813,7 +7910,8 @@ __metadata:
simple-git: "npm:^3.27.0" simple-git: "npm:^3.27.0"
tsc-watch: "npm:^6.2.0" tsc-watch: "npm:^6.2.0"
tsx: "npm:^4.19.1" tsx: "npm:^4.19.1"
typescript: "npm:^5.6.2" typescript: "npm:^5.9.3"
typescript-eslint: "npm:^8.46.2"
vitest: "npm:^2.1.9" vitest: "npm:^2.1.9"
zod: "npm:^3.24.3" zod: "npm:^3.24.3"
languageName: unknown languageName: unknown
@ -8542,6 +8640,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/estree@npm:^1.0.6":
version: 1.0.8
resolution: "@types/estree@npm:1.0.8"
checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5
languageName: node
linkType: hard
"@types/express-serve-static-core@npm:^5.0.0": "@types/express-serve-static-core@npm:^5.0.0":
version: 5.0.6 version: 5.0.6
resolution: "@types/express-serve-static-core@npm:5.0.6" resolution: "@types/express-serve-static-core@npm:5.0.6"
@ -8861,6 +8966,27 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/eslint-plugin@npm:8.46.2":
version: 8.46.2
resolution: "@typescript-eslint/eslint-plugin@npm:8.46.2"
dependencies:
"@eslint-community/regexpp": "npm:^4.10.0"
"@typescript-eslint/scope-manager": "npm:8.46.2"
"@typescript-eslint/type-utils": "npm:8.46.2"
"@typescript-eslint/utils": "npm:8.46.2"
"@typescript-eslint/visitor-keys": "npm:8.46.2"
graphemer: "npm:^1.4.0"
ignore: "npm:^7.0.0"
natural-compare: "npm:^1.4.0"
ts-api-utils: "npm:^2.1.0"
peerDependencies:
"@typescript-eslint/parser": ^8.46.2
eslint: ^8.57.0 || ^9.0.0
typescript: ">=4.8.4 <6.0.0"
checksum: 10c0/24d1257bd023525754dc130e99bad1404c46f997729a060e3764b7f80dd43edcc43767b60fd89244cba82157918609e3922e408d0f7be4223e2056c1447fb387
languageName: node
linkType: hard
"@typescript-eslint/eslint-plugin@npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/eslint-plugin@npm:^8.40.0": "@typescript-eslint/eslint-plugin@npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/eslint-plugin@npm:^8.40.0":
version: 8.40.0 version: 8.40.0
resolution: "@typescript-eslint/eslint-plugin@npm:8.40.0" resolution: "@typescript-eslint/eslint-plugin@npm:8.40.0"
@ -8882,6 +9008,22 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/parser@npm:8.46.2":
version: 8.46.2
resolution: "@typescript-eslint/parser@npm:8.46.2"
dependencies:
"@typescript-eslint/scope-manager": "npm:8.46.2"
"@typescript-eslint/types": "npm:8.46.2"
"@typescript-eslint/typescript-estree": "npm:8.46.2"
"@typescript-eslint/visitor-keys": "npm:8.46.2"
debug: "npm:^4.3.4"
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: ">=4.8.4 <6.0.0"
checksum: 10c0/9556bf8ec039c6d1751a37cf76cf70912e80dc45337731a304509309e67472c3f5b5abe6ac5021a7ae9361ea65b2e1f66b626603cecca6506a4533152a77b28f
languageName: node
linkType: hard
"@typescript-eslint/parser@npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/parser@npm:^8.40.0": "@typescript-eslint/parser@npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/parser@npm:^8.40.0":
version: 8.40.0 version: 8.40.0
resolution: "@typescript-eslint/parser@npm:8.40.0" resolution: "@typescript-eslint/parser@npm:8.40.0"
@ -8911,6 +9053,19 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/project-service@npm:8.46.2":
version: 8.46.2
resolution: "@typescript-eslint/project-service@npm:8.46.2"
dependencies:
"@typescript-eslint/tsconfig-utils": "npm:^8.46.2"
"@typescript-eslint/types": "npm:^8.46.2"
debug: "npm:^4.3.4"
peerDependencies:
typescript: ">=4.8.4 <6.0.0"
checksum: 10c0/03e87bcbca6af3f95bf54d4047a8b4d12434126c27d7312e804499a9459e1c847fe045f83fe8e3b22c3dc3925baad0aa2a1a5476d0d51f73a493dc5909a53dbf
languageName: node
linkType: hard
"@typescript-eslint/scope-manager@npm:8.32.1": "@typescript-eslint/scope-manager@npm:8.32.1":
version: 8.32.1 version: 8.32.1
resolution: "@typescript-eslint/scope-manager@npm:8.32.1" resolution: "@typescript-eslint/scope-manager@npm:8.32.1"
@ -8931,6 +9086,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/scope-manager@npm:8.46.2":
version: 8.46.2
resolution: "@typescript-eslint/scope-manager@npm:8.46.2"
dependencies:
"@typescript-eslint/types": "npm:8.46.2"
"@typescript-eslint/visitor-keys": "npm:8.46.2"
checksum: 10c0/42f52ee621a3a0ef2233e7d3384d9dbd76218f5c906a9cce3152a1f55c060a3d3614c7b8fff5270bdf48e8fcc003e732d3f003f283ea6fb204d64a2f6bb3ea9c
languageName: node
linkType: hard
"@typescript-eslint/tsconfig-utils@npm:8.40.0, @typescript-eslint/tsconfig-utils@npm:^8.40.0": "@typescript-eslint/tsconfig-utils@npm:8.40.0, @typescript-eslint/tsconfig-utils@npm:^8.40.0":
version: 8.40.0 version: 8.40.0
resolution: "@typescript-eslint/tsconfig-utils@npm:8.40.0" resolution: "@typescript-eslint/tsconfig-utils@npm:8.40.0"
@ -8940,6 +9105,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/tsconfig-utils@npm:8.46.2, @typescript-eslint/tsconfig-utils@npm:^8.46.2":
version: 8.46.2
resolution: "@typescript-eslint/tsconfig-utils@npm:8.46.2"
peerDependencies:
typescript: ">=4.8.4 <6.0.0"
checksum: 10c0/23e34ad296347417e42234945138022fb045d180fde69941483884a38e85fa55d5449420d2a660c0ebf1794a445add2f13e171c8dd64e4e83f594e2c4e35bf4d
languageName: node
linkType: hard
"@typescript-eslint/type-utils@npm:8.40.0": "@typescript-eslint/type-utils@npm:8.40.0":
version: 8.40.0 version: 8.40.0
resolution: "@typescript-eslint/type-utils@npm:8.40.0" resolution: "@typescript-eslint/type-utils@npm:8.40.0"
@ -8956,6 +9130,22 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/type-utils@npm:8.46.2":
version: 8.46.2
resolution: "@typescript-eslint/type-utils@npm:8.46.2"
dependencies:
"@typescript-eslint/types": "npm:8.46.2"
"@typescript-eslint/typescript-estree": "npm:8.46.2"
"@typescript-eslint/utils": "npm:8.46.2"
debug: "npm:^4.3.4"
ts-api-utils: "npm:^2.1.0"
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: ">=4.8.4 <6.0.0"
checksum: 10c0/e12fc65e4b58c1ab6fe65f5486265b7afe9a9a6730e3529aca927ddfc22e5913eb28999fc83e68ea1b49097e1edbbae1f61dd724b0bb0e7586fb24ecda1d4938
languageName: node
linkType: hard
"@typescript-eslint/types@npm:8.32.1": "@typescript-eslint/types@npm:8.32.1":
version: 8.32.1 version: 8.32.1
resolution: "@typescript-eslint/types@npm:8.32.1" resolution: "@typescript-eslint/types@npm:8.32.1"
@ -8970,6 +9160,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/types@npm:8.46.2, @typescript-eslint/types@npm:^8.46.2":
version: 8.46.2
resolution: "@typescript-eslint/types@npm:8.46.2"
checksum: 10c0/611716bae2369a1b8001c7f6cc03c5ecadfb956643cbbe27269defd28a61d43fe52eda008d7a09568b0be50c502e8292bf767b246366004283476e9a971b6fbc
languageName: node
linkType: hard
"@typescript-eslint/typescript-estree@npm:8.32.1": "@typescript-eslint/typescript-estree@npm:8.32.1":
version: 8.32.1 version: 8.32.1
resolution: "@typescript-eslint/typescript-estree@npm:8.32.1" resolution: "@typescript-eslint/typescript-estree@npm:8.32.1"
@ -9008,6 +9205,26 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/typescript-estree@npm:8.46.2":
version: 8.46.2
resolution: "@typescript-eslint/typescript-estree@npm:8.46.2"
dependencies:
"@typescript-eslint/project-service": "npm:8.46.2"
"@typescript-eslint/tsconfig-utils": "npm:8.46.2"
"@typescript-eslint/types": "npm:8.46.2"
"@typescript-eslint/visitor-keys": "npm:8.46.2"
debug: "npm:^4.3.4"
fast-glob: "npm:^3.3.2"
is-glob: "npm:^4.0.3"
minimatch: "npm:^9.0.4"
semver: "npm:^7.6.0"
ts-api-utils: "npm:^2.1.0"
peerDependencies:
typescript: ">=4.8.4 <6.0.0"
checksum: 10c0/ad7dbf352982bc6e16473ef19fc7d209fffeb147a732db8a2464e0ec33e7fbbc24ce3f23d01bdf99d503626c582a476debf4c90c527d755eeb99b863476d9f5f
languageName: node
linkType: hard
"@typescript-eslint/utils@npm:8.40.0": "@typescript-eslint/utils@npm:8.40.0":
version: 8.40.0 version: 8.40.0
resolution: "@typescript-eslint/utils@npm:8.40.0" resolution: "@typescript-eslint/utils@npm:8.40.0"
@ -9023,6 +9240,21 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/utils@npm:8.46.2":
version: 8.46.2
resolution: "@typescript-eslint/utils@npm:8.46.2"
dependencies:
"@eslint-community/eslint-utils": "npm:^4.7.0"
"@typescript-eslint/scope-manager": "npm:8.46.2"
"@typescript-eslint/types": "npm:8.46.2"
"@typescript-eslint/typescript-estree": "npm:8.46.2"
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: ">=4.8.4 <6.0.0"
checksum: 10c0/600b70730077ed85a6e278e06771f3933cdafce242f979e4af1c1b41290bf1efb14d20823c25c38a3a792def69b18eb9410af28bb228fe86027ad7859753c62d
languageName: node
linkType: hard
"@typescript-eslint/utils@npm:^8.18.1": "@typescript-eslint/utils@npm:^8.18.1":
version: 8.32.1 version: 8.32.1
resolution: "@typescript-eslint/utils@npm:8.32.1" resolution: "@typescript-eslint/utils@npm:8.32.1"
@ -9058,6 +9290,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/visitor-keys@npm:8.46.2":
version: 8.46.2
resolution: "@typescript-eslint/visitor-keys@npm:8.46.2"
dependencies:
"@typescript-eslint/types": "npm:8.46.2"
eslint-visitor-keys: "npm:^4.2.1"
checksum: 10c0/2067cd9a3c90b3817242cc49b5fa77428e1b92b28e16a12f45c2b399acbba7bd17e503553e5e68924e40078477a5c247dfa12e7709c24fe11c0b17a0c8486c33
languageName: node
linkType: hard
"@uidotdev/usehooks@npm:^2.4.1": "@uidotdev/usehooks@npm:^2.4.1":
version: 2.4.1 version: 2.4.1
resolution: "@uidotdev/usehooks@npm:2.4.1" resolution: "@uidotdev/usehooks@npm:2.4.1"
@ -12231,6 +12473,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"eslint-scope@npm:^8.4.0":
version: 8.4.0
resolution: "eslint-scope@npm:8.4.0"
dependencies:
esrecurse: "npm:^4.3.0"
estraverse: "npm:^5.2.0"
checksum: 10c0/407f6c600204d0f3705bd557f81bd0189e69cd7996f408f8971ab5779c0af733d1af2f1412066b40ee1588b085874fc37a2333986c6521669cdbdd36ca5058e0
languageName: node
linkType: hard
"eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": "eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3":
version: 3.4.3 version: 3.4.3
resolution: "eslint-visitor-keys@npm:3.4.3" resolution: "eslint-visitor-keys@npm:3.4.3"
@ -12300,7 +12552,56 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"espree@npm:^10.0.1": "eslint@npm:^9.39.0":
version: 9.39.0
resolution: "eslint@npm:9.39.0"
dependencies:
"@eslint-community/eslint-utils": "npm:^4.8.0"
"@eslint-community/regexpp": "npm:^4.12.1"
"@eslint/config-array": "npm:^0.21.1"
"@eslint/config-helpers": "npm:^0.4.2"
"@eslint/core": "npm:^0.17.0"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:9.39.0"
"@eslint/plugin-kit": "npm:^0.4.1"
"@humanfs/node": "npm:^0.16.6"
"@humanwhocodes/module-importer": "npm:^1.0.1"
"@humanwhocodes/retry": "npm:^0.4.2"
"@types/estree": "npm:^1.0.6"
ajv: "npm:^6.12.4"
chalk: "npm:^4.0.0"
cross-spawn: "npm:^7.0.6"
debug: "npm:^4.3.2"
escape-string-regexp: "npm:^4.0.0"
eslint-scope: "npm:^8.4.0"
eslint-visitor-keys: "npm:^4.2.1"
espree: "npm:^10.4.0"
esquery: "npm:^1.5.0"
esutils: "npm:^2.0.2"
fast-deep-equal: "npm:^3.1.3"
file-entry-cache: "npm:^8.0.0"
find-up: "npm:^5.0.0"
glob-parent: "npm:^6.0.2"
ignore: "npm:^5.2.0"
imurmurhash: "npm:^0.1.4"
is-glob: "npm:^4.0.0"
json-stable-stringify-without-jsonify: "npm:^1.0.1"
lodash.merge: "npm:^4.6.2"
minimatch: "npm:^3.1.2"
natural-compare: "npm:^1.4.0"
optionator: "npm:^0.9.3"
peerDependencies:
jiti: "*"
peerDependenciesMeta:
jiti:
optional: true
bin:
eslint: bin/eslint.js
checksum: 10c0/4035f7a3d01b3a6026d0ade899713286ed9514e5b65afe5eb671b66834a4c211769de18d1329dadb4e0bb487ea61e6a5ba0905c2b92144b8b9a2216c1ccca3e8
languageName: node
linkType: hard
"espree@npm:^10.0.1, espree@npm:^10.4.0":
version: 10.4.0 version: 10.4.0
resolution: "espree@npm:10.4.0" resolution: "espree@npm:10.4.0"
dependencies: dependencies:
@ -12322,7 +12623,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"esquery@npm:^1.4.2": "esquery@npm:^1.4.2, esquery@npm:^1.5.0":
version: 1.6.0 version: 1.6.0
resolution: "esquery@npm:1.6.0" resolution: "esquery@npm:1.6.0"
dependencies: dependencies:
@ -12694,6 +12995,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"file-entry-cache@npm:^8.0.0":
version: 8.0.0
resolution: "file-entry-cache@npm:8.0.0"
dependencies:
flat-cache: "npm:^4.0.0"
checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638
languageName: node
linkType: hard
"fill-range@npm:^7.1.1": "fill-range@npm:^7.1.1":
version: 7.1.1 version: 7.1.1
resolution: "fill-range@npm:7.1.1" resolution: "fill-range@npm:7.1.1"
@ -12753,6 +13063,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"flat-cache@npm:^4.0.0":
version: 4.0.1
resolution: "flat-cache@npm:4.0.1"
dependencies:
flatted: "npm:^3.2.9"
keyv: "npm:^4.5.4"
checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc
languageName: node
linkType: hard
"flatted@npm:^3.2.9": "flatted@npm:^3.2.9":
version: 3.3.3 version: 3.3.3
resolution: "flatted@npm:3.3.3" resolution: "flatted@npm:3.3.3"
@ -14509,7 +14829,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"keyv@npm:^4.5.3": "keyv@npm:^4.5.3, keyv@npm:^4.5.4":
version: 4.5.4 version: 4.5.4
resolution: "keyv@npm:4.5.4" resolution: "keyv@npm:4.5.4"
dependencies: dependencies:
@ -19891,7 +20211,22 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"typescript@npm:^5, typescript@npm:^5.6.2, typescript@npm:^5.7.3": "typescript-eslint@npm:^8.46.2":
version: 8.46.2
resolution: "typescript-eslint@npm:8.46.2"
dependencies:
"@typescript-eslint/eslint-plugin": "npm:8.46.2"
"@typescript-eslint/parser": "npm:8.46.2"
"@typescript-eslint/typescript-estree": "npm:8.46.2"
"@typescript-eslint/utils": "npm:8.46.2"
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: ">=4.8.4 <6.0.0"
checksum: 10c0/9c1bef1887ee984e63cbf4f4321f22ed232b192597400b74220aaecd42235bccc3c7786e002d283f81e1a0812a1c6d83ea5860bffa5e87d119204ecb9db0296a
languageName: node
linkType: hard
"typescript@npm:^5, typescript@npm:^5.7.3":
version: 5.8.2 version: 5.8.2
resolution: "typescript@npm:5.8.2" resolution: "typescript@npm:5.8.2"
bin: bin:
@ -19911,7 +20246,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"typescript@patch:typescript@npm%3A^5#optional!builtin<compat/typescript>, typescript@patch:typescript@npm%3A^5.6.2#optional!builtin<compat/typescript>, typescript@patch:typescript@npm%3A^5.7.3#optional!builtin<compat/typescript>": "typescript@npm:^5.9.3":
version: 5.9.3
resolution: "typescript@npm:5.9.3"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: 10c0/6bd7552ce39f97e711db5aa048f6f9995b53f1c52f7d8667c1abdc1700c68a76a308f579cd309ce6b53646deb4e9a1be7c813a93baaf0a28ccd536a30270e1c5
languageName: node
linkType: hard
"typescript@patch:typescript@npm%3A^5#optional!builtin<compat/typescript>, typescript@patch:typescript@npm%3A^5.7.3#optional!builtin<compat/typescript>":
version: 5.8.2 version: 5.8.2
resolution: "typescript@patch:typescript@npm%3A5.8.2#optional!builtin<compat/typescript>::version=5.8.2&hash=5786d5" resolution: "typescript@patch:typescript@npm%3A5.8.2#optional!builtin<compat/typescript>::version=5.8.2&hash=5786d5"
bin: bin:
@ -19931,6 +20276,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"typescript@patch:typescript@npm%3A^5.9.3#optional!builtin<compat/typescript>":
version: 5.9.3
resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin<compat/typescript>::version=5.9.3&hash=5786d5"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: 10c0/ad09fdf7a756814dce65bc60c1657b40d44451346858eea230e10f2e95a289d9183b6e32e5c11e95acc0ccc214b4f36289dcad4bf1886b0adb84d711d336a430
languageName: node
linkType: hard
"ua-parser-js@npm:^1.0.33": "ua-parser-js@npm:^1.0.33":
version: 1.0.40 version: 1.0.40
resolution: "ua-parser-js@npm:1.0.40" resolution: "ua-parser-js@npm:1.0.40"