chore: add script to check import / export type sorting (#900)

* Enforce separate type imports

* chore: enforce separate type exports

* refactor: flatten sdk index exports

* updates

* fix improperly sorted types

* fixes and prettier

* prettier
This commit is contained in:
Justin Hernandez
2025-08-15 10:11:44 -07:00
committed by GitHub
parent d33e329164
commit 76f4980ef6
14 changed files with 297 additions and 233 deletions

View File

@@ -78,13 +78,6 @@ module.exports = {
{ sortDir: 'asc', ignoreCase: false, sortExportKindFirst: 'type' },
],
// Type import enforcement
'@typescript-eslint/consistent-type-imports': [
'error',
{ prefer: 'type-imports' },
],
// Standard import rules
'import/first': 'error',

View File

@@ -25,7 +25,7 @@ GEM
artifactory (3.0.17)
atomos (0.1.3)
aws-eventstream (1.4.0)
aws-partitions (1.1146.0)
aws-partitions (1.1147.0)
aws-sdk-core (3.229.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)

View File

@@ -25,6 +25,7 @@
"fmt": "prettier --check .",
"fmt:fix": "prettier --write .",
"format": "yarn nice",
"find:type-imports": "node scripts/find-type-import-issues.mjs",
"ia": "yarn install-app",
"imports:fix": "node ./scripts/alias-imports.cjs",
"install-app": "yarn install-app:setup && cd ios && bundle install && bundle exec pod install && cd .. && yarn clean:xcode-env-local",
@@ -166,8 +167,8 @@
"@types/react-native-sqlite-storage": "^6.0.5",
"@types/react-native-web": "^0",
"@types/react-test-renderer": "^18",
"@typescript-eslint/eslint-plugin": "^8.0.0",
"@typescript-eslint/parser": "^8.0.0",
"@typescript-eslint/eslint-plugin": "^8.39.0",
"@typescript-eslint/parser": "^8.39.0",
"@vitejs/plugin-react-swc": "^3.10.2",
"babel-plugin-module-resolver": "^5.0.2",
"eslint": "^8.57.0",

View File

@@ -0,0 +1,189 @@
#!/usr/bin/env node
/**
* Script to find improperly formatted import/export types
*
* This script identifies TypeScript imports and exports that use inline type syntax
* (e.g., `import { type X }`) instead of the preferred separate type syntax
* (e.g., `import type { X }`).
*/
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// Patterns to match
const PATTERNS = {
// Inline type imports: import { type X, Y, type Z } from 'module'
inlineTypeImport:
/^[^/]*import\s*{\s*[^}]*\btype\s+\w+[^}]*}\s+from\s+['"`][^'"`]+['"`]/gm,
// Inline type exports: export { type X, Y, type Z } from 'module'
inlineTypeExport:
/^[^/]*export\s*{\s*[^}]*\btype\s+\w+[^}]*}\s+from\s+['"`][^'"`]+['"`]/gm,
// Inline type re-exports: export { type X, Y, type Z }
inlineTypeReExport: /^[^/]*export\s*{\s*[^}]*\btype\s+\w+[^}]*}\s*(?!from)/gm,
// Inline type destructuring: const { type X, Y, type Z } = require('module')
inlineTypeDestructuring:
/^[^/]*const\s*{\s*[^}]*\btype\s+\w+[^}]*}\s*=\s*require\s*\(/gm,
};
// Directories to scan
const SCAN_DIRS = ['src', 'tests/src', 'scripts'];
// File extensions to scan
const SCAN_EXTENSIONS = ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'];
// Directories to ignore
const IGNORE_DIRS = [
'node_modules',
'ios',
'android',
'deployments',
'web/dist',
'.tamagui',
'tests/e2e',
];
// Files to ignore
const IGNORE_FILES = [
'scripts/find-type-import-issues.mjs', // Ignore this script itself
];
function shouldIgnoreFile(filePath) {
return IGNORE_DIRS.some(dir => filePath.includes(`/${dir}/`));
}
function shouldIgnoreFileByName(filePath) {
return IGNORE_FILES.some(file => filePath.endsWith(file));
}
function shouldScanFile(filePath) {
const ext = path.extname(filePath);
return SCAN_EXTENSIONS.includes(ext);
}
function findIssuesInFile(filePath) {
const content = fs.readFileSync(filePath, 'utf8');
const lines = content.split('\n');
const issues = [];
lines.forEach((line, index) => {
const lineNum = index + 1;
// Check each pattern
Object.entries(PATTERNS).forEach(([patternName, pattern]) => {
if (pattern.test(line)) {
issues.push({
line: lineNum,
content: line.trim(),
pattern: patternName,
});
}
});
});
return issues;
}
function scanDirectory(dirPath) {
const results = [];
if (!fs.existsSync(dirPath)) {
return results;
}
const items = fs.readdirSync(dirPath);
for (const item of items) {
const fullPath = path.join(dirPath, item);
const stat = fs.statSync(fullPath);
if (stat.isDirectory()) {
if (!shouldIgnoreFile(fullPath)) {
results.push(...scanDirectory(fullPath));
}
} else if (
stat.isFile() &&
shouldScanFile(fullPath) &&
!shouldIgnoreFileByName(fullPath)
) {
const issues = findIssuesInFile(fullPath);
if (issues.length > 0) {
results.push({
file: fullPath,
issues,
});
}
}
}
return results;
}
function formatResults(results) {
if (results.length === 0) {
console.log('✅ No improperly formatted type imports/exports found!');
return;
}
console.log(
`\n❌ Found ${results.length} files with improperly formatted type imports/exports:\n`,
);
results.forEach(({ file, issues }) => {
console.log(`📁 ${file}`);
issues.forEach(({ line, content, pattern }) => {
console.log(` Line ${line}: ${pattern}`);
console.log(` ${content}`);
console.log('');
});
});
const totalIssues = results.reduce(
(sum, { issues }) => sum + issues.length,
0,
);
console.log(
`\n📊 Summary: ${totalIssues} total issues found in ${results.length} files`,
);
console.log('\n💡 To fix these issues, convert:');
console.log(' ❌ import { type X, Y, type Z } from "module"');
console.log(' ✅ import type { X, Y, Z } from "module"');
console.log('');
console.log(' ❌ export { type X, Y, type Z } from "module"');
console.log(' ✅ export type { X, Y, Z } from "module"');
}
function main() {
const projectRoot = path.resolve(__dirname, '..');
process.chdir(projectRoot);
console.log('🔍 Scanning for improperly formatted type imports/exports...\n');
const allResults = [];
SCAN_DIRS.forEach(dir => {
const fullPath = path.join(projectRoot, dir);
if (fs.existsSync(fullPath)) {
const results = scanDirectory(fullPath);
allResults.push(...results);
}
});
formatResults(allResults);
if (allResults.length > 0) {
process.exit(1);
}
}
if (import.meta.url === `file://${process.argv[1]}`) {
main();
}

View File

@@ -1,14 +1,8 @@
// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11
import React, { useCallback } from 'react';
import {
type NativeSyntheticEvent,
PixelRatio,
Platform,
requireNativeComponent,
type StyleProp,
type ViewStyle,
} from 'react-native';
import type { NativeSyntheticEvent, StyleProp, ViewStyle } from 'react-native';
import { PixelRatio, Platform, requireNativeComponent } from 'react-native';
import { extractMRZInfo } from '@selfxyz/mobile-sdk-alpha';

View File

@@ -1,7 +1,7 @@
// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11
import { cloneElement, isValidElement, type PropsWithChildren } from 'react';
import React, { useMemo, useState } from 'react';
import type { PropsWithChildren } from 'react';
import React, { cloneElement, isValidElement, useMemo, useState } from 'react';
import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
import { Alert, ScrollView } from 'react-native';
import { Adapt, Button, Select, Sheet, Text, XStack, YStack } from 'tamagui';

View File

@@ -13,11 +13,11 @@ import { SecondaryButton } from '@/components/buttons/SecondaryButton';
import ButtonsContainer from '@/components/ButtonsContainer';
import { DocumentEvents } from '@/consts/analytics';
import type { RootStackParamList } from '@/navigation';
import {
type DocumentCatalog,
type DocumentMetadata,
usePassport,
import type {
DocumentCatalog,
DocumentMetadata,
} from '@/providers/passportDataProvider';
import { usePassport } from '@/providers/passportDataProvider';
import analytics from '@/utils/analytics';
import { borderColor, textBlack, white } from '@/utils/colors';
import { extraYPadding } from '@/utils/constants';

View File

@@ -3,11 +3,7 @@
// Only export what's actually used elsewhere to enable proper tree shaking
// From provingMachine - used in screens and tests
export {
type ProvingStateType,
useProvingStore,
} from '@/utils/proving/provingMachine';
export type { ProvingStateType } from '@/utils/proving/provingMachine';
// From provingUtils - used in tests (keeping these for testing purposes)
export {
encryptAES256GCM,
@@ -23,3 +19,5 @@ export {
hasAnyValidRegisteredDocument,
isUserRegisteredWithAlternativeCSCA,
} from '@/utils/proving/validateDocument';
export { useProvingStore } from '@/utils/proving/provingMachine';

View File

@@ -20,10 +20,8 @@ import {
generateNullifier,
} from '@selfxyz/common/utils/passports';
import { getLeafDscTree } from '@selfxyz/common/utils/trees';
import {
isPassportDataValid,
type PassportValidationCallbacks,
} from '@selfxyz/mobile-sdk-alpha';
import type { PassportValidationCallbacks } from '@selfxyz/mobile-sdk-alpha';
import { isPassportDataValid } from '@selfxyz/mobile-sdk-alpha';
import { DocumentEvents } from '@/consts/analytics';
import {

View File

@@ -58,9 +58,6 @@ module.exports = {
{ sortDir: 'asc', ignoreCase: false, sortExportKindFirst: 'type' },
],
// Type import enforcement - critical for tree shaking
'@typescript-eslint/consistent-type-imports': ['error', { prefer: 'type-imports' }],
// Standard import rules
'import/first': 'error',
'import/newline-after-import': 'error',

View File

@@ -34,6 +34,10 @@
"postinstall-postinstall": "^2.1.0",
"typescript": "^5.9.2"
},
"resolutions": {
"@typescript-eslint/eslint-plugin": "^8.39.0",
"@typescript-eslint/parser": "^8.39.0"
},
"packageManager": "yarn@4.6.0",
"engines": {
"node": ">=22 <23"

View File

@@ -45,7 +45,7 @@ module.exports = {
],
// Export sorting - using sort-exports for better type prioritization
'sort-exports/sort-exports': ['error', { sortDir: 'asc', ignoreCase: false, sortExportKindFirst: 'type' }],
'@typescript-eslint/consistent-type-imports': ['error', { prefer: 'type-imports' }],
'import/first': 'error',
'import/newline-after-import': 'error',
'import/no-duplicates': 'error',

View File

@@ -27,10 +27,27 @@ module.exports = {
'error',
{ sortDir: 'asc', ignoreCase: false, sortExportKindFirst: 'type' },
],
'@typescript-eslint/consistent-type-imports': ['error', { prefer: 'type-imports' }],
'import/first': 'error',
'import/no-duplicates': 'error',
'import/newline-after-import': 'error',
},
ignorePatterns: ['dist/', 'node_modules/'],
overrides: [
{
files: ['*.cjs'],
env: {
node: true,
commonjs: true,
es6: true,
},
parserOptions: {
ecmaVersion: 2020,
sourceType: 'script',
},
rules: {
'@typescript-eslint/no-var-requires': 'off',
},
},
],
};

263
yarn.lock
View File

@@ -1497,7 +1497,7 @@ __metadata:
languageName: node
linkType: hard
"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.7.0":
"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.7.0":
version: 4.7.0
resolution: "@eslint-community/eslint-utils@npm:4.7.0"
dependencies:
@@ -5114,8 +5114,8 @@ __metadata:
"@types/react-native-sqlite-storage": "npm:^6.0.5"
"@types/react-native-web": "npm:^0"
"@types/react-test-renderer": "npm:^18"
"@typescript-eslint/eslint-plugin": "npm:^8.0.0"
"@typescript-eslint/parser": "npm:^8.0.0"
"@typescript-eslint/eslint-plugin": "npm:^8.39.0"
"@typescript-eslint/parser": "npm:^8.39.0"
"@vitejs/plugin-react-swc": "npm:^3.10.2"
"@xstate/react": "npm:^5.0.3"
add: "npm:^2.0.6"
@@ -10022,81 +10022,40 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/eslint-plugin@npm:^7.1.1":
version: 7.18.0
resolution: "@typescript-eslint/eslint-plugin@npm:7.18.0"
"@typescript-eslint/eslint-plugin@npm:^8.39.0":
version: 8.39.1
resolution: "@typescript-eslint/eslint-plugin@npm:8.39.1"
dependencies:
"@eslint-community/regexpp": "npm:^4.10.0"
"@typescript-eslint/scope-manager": "npm:7.18.0"
"@typescript-eslint/type-utils": "npm:7.18.0"
"@typescript-eslint/utils": "npm:7.18.0"
"@typescript-eslint/visitor-keys": "npm:7.18.0"
graphemer: "npm:^1.4.0"
ignore: "npm:^5.3.1"
natural-compare: "npm:^1.4.0"
ts-api-utils: "npm:^1.3.0"
peerDependencies:
"@typescript-eslint/parser": ^7.0.0
eslint: ^8.56.0
peerDependenciesMeta:
typescript:
optional: true
checksum: 10c0/2b37948fa1b0dab77138909dabef242a4d49ab93e4019d4ef930626f0a7d96b03e696cd027fa0087881c20e73be7be77c942606b4a76fa599e6b37f6985304c3
languageName: node
linkType: hard
"@typescript-eslint/eslint-plugin@npm:^8.0.0":
version: 8.39.0
resolution: "@typescript-eslint/eslint-plugin@npm:8.39.0"
dependencies:
"@eslint-community/regexpp": "npm:^4.10.0"
"@typescript-eslint/scope-manager": "npm:8.39.0"
"@typescript-eslint/type-utils": "npm:8.39.0"
"@typescript-eslint/utils": "npm:8.39.0"
"@typescript-eslint/visitor-keys": "npm:8.39.0"
"@typescript-eslint/scope-manager": "npm:8.39.1"
"@typescript-eslint/type-utils": "npm:8.39.1"
"@typescript-eslint/utils": "npm:8.39.1"
"@typescript-eslint/visitor-keys": "npm:8.39.1"
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.39.0
"@typescript-eslint/parser": ^8.39.1
eslint: ^8.57.0 || ^9.0.0
typescript: ">=4.8.4 <6.0.0"
checksum: 10c0/c735a99622e2a4a95d89fa02cc47e65279f61972a68b62f58c32a384e766473289b6234cdaa34b5caa9372d4bdf1b22ad34b45feada482c4ed7320784fa19312
checksum: 10c0/7a55de558ed6ea6f09ee0b0d994b4a70e1df9f72e4afc7b3073de1b41504a36d905779304d59c34db700af60da3bb438c62480d30462a13b8b72d0b50318aeee
languageName: node
linkType: hard
"@typescript-eslint/parser@npm:^7.1.1":
version: 7.18.0
resolution: "@typescript-eslint/parser@npm:7.18.0"
"@typescript-eslint/parser@npm:^8.39.0":
version: 8.39.1
resolution: "@typescript-eslint/parser@npm:8.39.1"
dependencies:
"@typescript-eslint/scope-manager": "npm:7.18.0"
"@typescript-eslint/types": "npm:7.18.0"
"@typescript-eslint/typescript-estree": "npm:7.18.0"
"@typescript-eslint/visitor-keys": "npm:7.18.0"
debug: "npm:^4.3.4"
peerDependencies:
eslint: ^8.56.0
peerDependenciesMeta:
typescript:
optional: true
checksum: 10c0/370e73fca4278091bc1b657f85e7d74cd52b24257ea20c927a8e17546107ce04fbf313fec99aed0cc2a145ddbae1d3b12e9cc2c1320117636dc1281bcfd08059
languageName: node
linkType: hard
"@typescript-eslint/parser@npm:^8.0.0":
version: 8.39.0
resolution: "@typescript-eslint/parser@npm:8.39.0"
dependencies:
"@typescript-eslint/scope-manager": "npm:8.39.0"
"@typescript-eslint/types": "npm:8.39.0"
"@typescript-eslint/typescript-estree": "npm:8.39.0"
"@typescript-eslint/visitor-keys": "npm:8.39.0"
"@typescript-eslint/scope-manager": "npm:8.39.1"
"@typescript-eslint/types": "npm:8.39.1"
"@typescript-eslint/typescript-estree": "npm:8.39.1"
"@typescript-eslint/visitor-keys": "npm:8.39.1"
debug: "npm:^4.3.4"
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: ">=4.8.4 <6.0.0"
checksum: 10c0/cb437362ea80303e728eccada1ba630769e90d863471d2cb65abbeda540679f93a566bb4ecdcd3aca39c01f48f865a70aed3e94fbaacc6a81e79bb804c596f0b
checksum: 10c0/da30372c4e8dee48a0c421996bf0bf73a62a57039ee6b817eda64de2d70fdb88dd20b50615c81be7e68fd29cdd7852829b859bb8539b4a4c78030f93acaf5664
languageName: node
linkType: hard
@@ -10113,16 +10072,16 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/project-service@npm:8.39.0":
version: 8.39.0
resolution: "@typescript-eslint/project-service@npm:8.39.0"
"@typescript-eslint/project-service@npm:8.39.1":
version: 8.39.1
resolution: "@typescript-eslint/project-service@npm:8.39.1"
dependencies:
"@typescript-eslint/tsconfig-utils": "npm:^8.39.0"
"@typescript-eslint/types": "npm:^8.39.0"
"@typescript-eslint/tsconfig-utils": "npm:^8.39.1"
"@typescript-eslint/types": "npm:^8.39.1"
debug: "npm:^4.3.4"
peerDependencies:
typescript: ">=4.8.4 <6.0.0"
checksum: 10c0/67ac21bcc715d8e3281b8cab36a7e285b01244a48817ea74910186e76e714918dd2e939b465d0e4e9a30c4ceffa6c8946eb9b1f0ec0dab6708c4416d3a66e731
checksum: 10c0/40207af4f4e2a260ea276766d502c4736f6dc5488e84bbab6444e2786289ece2dbca2686323c48d4e9c265e409a309bf3d97d4aa03767dff8cc7642b436bda35
languageName: node
linkType: hard
@@ -10136,16 +10095,6 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/scope-manager@npm:7.18.0":
version: 7.18.0
resolution: "@typescript-eslint/scope-manager@npm:7.18.0"
dependencies:
"@typescript-eslint/types": "npm:7.18.0"
"@typescript-eslint/visitor-keys": "npm:7.18.0"
checksum: 10c0/038cd58c2271de146b3a594afe2c99290034033326d57ff1f902976022c8b0138ffd3cb893ae439ae41003b5e4bcc00cabf6b244ce40e8668f9412cc96d97b8e
languageName: node
linkType: hard
"@typescript-eslint/scope-manager@npm:8.34.1":
version: 8.34.1
resolution: "@typescript-eslint/scope-manager@npm:8.34.1"
@@ -10156,13 +10105,13 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/scope-manager@npm:8.39.0":
version: 8.39.0
resolution: "@typescript-eslint/scope-manager@npm:8.39.0"
"@typescript-eslint/scope-manager@npm:8.39.1":
version: 8.39.1
resolution: "@typescript-eslint/scope-manager@npm:8.39.1"
dependencies:
"@typescript-eslint/types": "npm:8.39.0"
"@typescript-eslint/visitor-keys": "npm:8.39.0"
checksum: 10c0/ae61721e85fa67f64cab02db88599a6e78e9395dd13c211ab60c5728abdf01b9ceb970c0722671d1958e83c8f00a8ee4f9b3a5c462ea21fb117729b73d53a7e7
"@typescript-eslint/types": "npm:8.39.1"
"@typescript-eslint/visitor-keys": "npm:8.39.1"
checksum: 10c0/9466db557c1a0eaaf24b0ece5810413d11390d046bf6e47c4074879e8dba0348b835a21106c842ab20ff85f2384312cf9e20bfe7684e31640696e29957003511
languageName: node
linkType: hard
@@ -10175,45 +10124,28 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/tsconfig-utils@npm:8.39.0, @typescript-eslint/tsconfig-utils@npm:^8.39.0":
version: 8.39.0
resolution: "@typescript-eslint/tsconfig-utils@npm:8.39.0"
"@typescript-eslint/tsconfig-utils@npm:8.39.1, @typescript-eslint/tsconfig-utils@npm:^8.39.1":
version: 8.39.1
resolution: "@typescript-eslint/tsconfig-utils@npm:8.39.1"
peerDependencies:
typescript: ">=4.8.4 <6.0.0"
checksum: 10c0/1437c0004d4d852128c72559232470e82c9b9635156c6d8eec7be7c5b08c01e9528cda736587bdaba0d5c71f2f5480855c406f224eab45ba81c6850210280fc3
checksum: 10c0/664dff0b4ae908cb98c78f9ca73c36cf57c3a2206965d9d0659649ffc02347eb30e1452499671a425592f14a2a5c5eb82ae389b34f3c415a12119506b4ebb61c
languageName: node
linkType: hard
"@typescript-eslint/type-utils@npm:7.18.0":
version: 7.18.0
resolution: "@typescript-eslint/type-utils@npm:7.18.0"
"@typescript-eslint/type-utils@npm:8.39.1":
version: 8.39.1
resolution: "@typescript-eslint/type-utils@npm:8.39.1"
dependencies:
"@typescript-eslint/typescript-estree": "npm:7.18.0"
"@typescript-eslint/utils": "npm:7.18.0"
debug: "npm:^4.3.4"
ts-api-utils: "npm:^1.3.0"
peerDependencies:
eslint: ^8.56.0
peerDependenciesMeta:
typescript:
optional: true
checksum: 10c0/ad92a38007be620f3f7036f10e234abdc2fdc518787b5a7227e55fd12896dacf56e8b34578723fbf9bea8128df2510ba8eb6739439a3879eda9519476d5783fd
languageName: node
linkType: hard
"@typescript-eslint/type-utils@npm:8.39.0":
version: 8.39.0
resolution: "@typescript-eslint/type-utils@npm:8.39.0"
dependencies:
"@typescript-eslint/types": "npm:8.39.0"
"@typescript-eslint/typescript-estree": "npm:8.39.0"
"@typescript-eslint/utils": "npm:8.39.0"
"@typescript-eslint/types": "npm:8.39.1"
"@typescript-eslint/typescript-estree": "npm:8.39.1"
"@typescript-eslint/utils": "npm:8.39.1"
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/918de86cc99e90a74a02ee5dfe26f0d7a22872ac00d84e59630a15f50fa9688c2db545c8bf26ba8923c72a74c09386b994d0b7da3dac4104da4ca8c80b4353ac
checksum: 10c0/430dfefe040eae5f0c8dfbce37b5ce071095a28f335e74793923d113682e26313586e90f7bbe2c2f9bffb0da52ffdf5055ea36b96d9f218cef35aa14853122d5
languageName: node
linkType: hard
@@ -10224,13 +10156,6 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/types@npm:7.18.0":
version: 7.18.0
resolution: "@typescript-eslint/types@npm:7.18.0"
checksum: 10c0/eb7371ac55ca77db8e59ba0310b41a74523f17e06f485a0ef819491bc3dd8909bb930120ff7d30aaf54e888167e0005aa1337011f3663dc90fb19203ce478054
languageName: node
linkType: hard
"@typescript-eslint/types@npm:8.34.1, @typescript-eslint/types@npm:^8.34.1":
version: 8.34.1
resolution: "@typescript-eslint/types@npm:8.34.1"
@@ -10238,10 +10163,10 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/types@npm:8.39.0, @typescript-eslint/types@npm:^8.39.0":
version: 8.39.0
resolution: "@typescript-eslint/types@npm:8.39.0"
checksum: 10c0/4240b01b218f3ef8a4f6343cb78cd531c12b2a134b6edd6ab67a9de4d1808790bc468f7579d5d38e507a206457d14a5e8970f6f74d29b9858633f77258f7e43b
"@typescript-eslint/types@npm:8.39.1, @typescript-eslint/types@npm:^8.39.1":
version: 8.39.1
resolution: "@typescript-eslint/types@npm:8.39.1"
checksum: 10c0/0e188d2d52509a24c500a87adf561387ffcac56b62cb9fd0ca1f929bb3d4eedb6b8f9d516c1890855d39930c9dd8d502d5b4600b8c9cc832d3ebb595d81c7533
languageName: node
linkType: hard
@@ -10263,25 +10188,6 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/typescript-estree@npm:7.18.0":
version: 7.18.0
resolution: "@typescript-eslint/typescript-estree@npm:7.18.0"
dependencies:
"@typescript-eslint/types": "npm:7.18.0"
"@typescript-eslint/visitor-keys": "npm:7.18.0"
debug: "npm:^4.3.4"
globby: "npm:^11.1.0"
is-glob: "npm:^4.0.3"
minimatch: "npm:^9.0.4"
semver: "npm:^7.6.0"
ts-api-utils: "npm:^1.3.0"
peerDependenciesMeta:
typescript:
optional: true
checksum: 10c0/0c7f109a2e460ec8a1524339479cf78ff17814d23c83aa5112c77fb345e87b3642616291908dcddea1e671da63686403dfb712e4a4435104f92abdfddf9aba81
languageName: node
linkType: hard
"@typescript-eslint/typescript-estree@npm:8.34.1":
version: 8.34.1
resolution: "@typescript-eslint/typescript-estree@npm:8.34.1"
@@ -10302,14 +10208,14 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/typescript-estree@npm:8.39.0":
version: 8.39.0
resolution: "@typescript-eslint/typescript-estree@npm:8.39.0"
"@typescript-eslint/typescript-estree@npm:8.39.1":
version: 8.39.1
resolution: "@typescript-eslint/typescript-estree@npm:8.39.1"
dependencies:
"@typescript-eslint/project-service": "npm:8.39.0"
"@typescript-eslint/tsconfig-utils": "npm:8.39.0"
"@typescript-eslint/types": "npm:8.39.0"
"@typescript-eslint/visitor-keys": "npm:8.39.0"
"@typescript-eslint/project-service": "npm:8.39.1"
"@typescript-eslint/tsconfig-utils": "npm:8.39.1"
"@typescript-eslint/types": "npm:8.39.1"
"@typescript-eslint/visitor-keys": "npm:8.39.1"
debug: "npm:^4.3.4"
fast-glob: "npm:^3.3.2"
is-glob: "npm:^4.0.3"
@@ -10318,36 +10224,22 @@ __metadata:
ts-api-utils: "npm:^2.1.0"
peerDependencies:
typescript: ">=4.8.4 <6.0.0"
checksum: 10c0/9eaf44af35b7bd8a8298909c0b2153f4c69e582b86f84dbe4a58c6afb6496253e955ee2b6ff0517e7717a6e8557537035ce631e0aa10fa848354a15620c387d2
checksum: 10c0/1de1a37fed354600a08bc971492c2f14238f0a4bf07a43bedb416c17b7312d18bec92c68c8f2790bb0a1bffcd757f7962914be9f6213068f18f6c4fdde259af4
languageName: node
linkType: hard
"@typescript-eslint/utils@npm:7.18.0":
version: 7.18.0
resolution: "@typescript-eslint/utils@npm:7.18.0"
dependencies:
"@eslint-community/eslint-utils": "npm:^4.4.0"
"@typescript-eslint/scope-manager": "npm:7.18.0"
"@typescript-eslint/types": "npm:7.18.0"
"@typescript-eslint/typescript-estree": "npm:7.18.0"
peerDependencies:
eslint: ^8.56.0
checksum: 10c0/a25a6d50eb45c514469a01ff01f215115a4725fb18401055a847ddf20d1b681409c4027f349033a95c4ff7138d28c3b0a70253dfe8262eb732df4b87c547bd1e
languageName: node
linkType: hard
"@typescript-eslint/utils@npm:8.39.0":
version: 8.39.0
resolution: "@typescript-eslint/utils@npm:8.39.0"
"@typescript-eslint/utils@npm:8.39.1":
version: 8.39.1
resolution: "@typescript-eslint/utils@npm:8.39.1"
dependencies:
"@eslint-community/eslint-utils": "npm:^4.7.0"
"@typescript-eslint/scope-manager": "npm:8.39.0"
"@typescript-eslint/types": "npm:8.39.0"
"@typescript-eslint/typescript-estree": "npm:8.39.0"
"@typescript-eslint/scope-manager": "npm:8.39.1"
"@typescript-eslint/types": "npm:8.39.1"
"@typescript-eslint/typescript-estree": "npm:8.39.1"
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: ">=4.8.4 <6.0.0"
checksum: 10c0/61956004dea90835b9f8de581019bc4f360dd44cebb9e0f8014ede39fc7cbc71d7d0093a65547bea004a865a1eff81dfd822520ba0a37e636f359291c27e1bd2
checksum: 10c0/ebc01d736af43728df9a0915058d0c771dec9cc58846ffdcbb986c78e7dabf547ea7daecd75db58b2af88a3c2a43de8a7e5f81feefacfa31be173fc384d25d77
languageName: node
linkType: hard
@@ -10394,16 +10286,6 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/visitor-keys@npm:7.18.0":
version: 7.18.0
resolution: "@typescript-eslint/visitor-keys@npm:7.18.0"
dependencies:
"@typescript-eslint/types": "npm:7.18.0"
eslint-visitor-keys: "npm:^3.4.3"
checksum: 10c0/538b645f8ff1d9debf264865c69a317074eaff0255e63d7407046176b0f6a6beba34a6c51d511f12444bae12a98c69891eb6f403c9f54c6c2e2849d1c1cb73c0
languageName: node
linkType: hard
"@typescript-eslint/visitor-keys@npm:8.34.1":
version: 8.34.1
resolution: "@typescript-eslint/visitor-keys@npm:8.34.1"
@@ -10414,13 +10296,13 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/visitor-keys@npm:8.39.0":
version: 8.39.0
resolution: "@typescript-eslint/visitor-keys@npm:8.39.0"
"@typescript-eslint/visitor-keys@npm:8.39.1":
version: 8.39.1
resolution: "@typescript-eslint/visitor-keys@npm:8.39.1"
dependencies:
"@typescript-eslint/types": "npm:8.39.0"
"@typescript-eslint/types": "npm:8.39.1"
eslint-visitor-keys: "npm:^4.2.1"
checksum: 10c0/657766d4e9ad01e8fd8e8fd39f8f3d043ecdffb78f1ab9653acbed3c971e221b1f680e90752394308c532703211f9f441bb449f62c0f61a48750b24ccb4379ef
checksum: 10c0/4d81f6826a211bc2752e25cd16d1f415f28ebc92b35142402ec23f3765f2d00963b75ac06266ad9c674ca5b057d07d8c114116e5bf14f5465dde1d1aa60bc72f
languageName: node
linkType: hard
@@ -17149,7 +17031,7 @@ __metadata:
languageName: node
linkType: hard
"ignore@npm:^5.0.5, ignore@npm:^5.1.1, ignore@npm:^5.2.0, ignore@npm:^5.2.4, ignore@npm:^5.3.1":
"ignore@npm:^5.0.5, ignore@npm:^5.1.1, ignore@npm:^5.2.0, ignore@npm:^5.2.4":
version: 5.3.2
resolution: "ignore@npm:5.3.2"
checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337
@@ -25146,15 +25028,6 @@ __metadata:
languageName: node
linkType: hard
"ts-api-utils@npm:^1.3.0":
version: 1.4.3
resolution: "ts-api-utils@npm:1.4.3"
peerDependencies:
typescript: ">=4.2.0"
checksum: 10c0/e65dc6e7e8141140c23e1dc94984bf995d4f6801919c71d6dc27cf0cd51b100a91ffcfe5217626193e5bea9d46831e8586febdc7e172df3f1091a7384299e23a
languageName: node
linkType: hard
"ts-api-utils@npm:^2.1.0":
version: 2.1.0
resolution: "ts-api-utils@npm:2.1.0"