From 1c574306d8f42f3caab0bd02cdf45068c1672a7d Mon Sep 17 00:00:00 2001 From: Timothy Cyrus <4201229+tcyrus@users.noreply.github.com> Date: Sat, 21 Dec 2024 11:33:20 -0500 Subject: [PATCH] lex-cli: fix codegen issues Fixes type-only imports as well as other strict errors with codegen output. --- packages/lex-cli/package.json | 2 +- packages/lex-cli/src/codegen/client.ts | 16 +++--- packages/lex-cli/src/codegen/common.ts | 18 +++--- packages/lex-cli/src/codegen/lex-gen.ts | 18 +++--- packages/lex-cli/src/codegen/server.ts | 15 ++--- packages/lex-cli/src/codegen/util.ts | 2 +- packages/lex-cli/src/mdgen/index.ts | 2 +- packages/lex-cli/src/util.ts | 6 +- pnpm-lock.yaml | 76 ++++++++++++++++++++----- 9 files changed, 103 insertions(+), 52 deletions(-) diff --git a/packages/lex-cli/package.json b/packages/lex-cli/package.json index 0d3f3cffac3..0a70ccf350a 100644 --- a/packages/lex-cli/package.json +++ b/packages/lex-cli/package.json @@ -27,7 +27,7 @@ "chalk": "^4.1.2", "commander": "^9.4.0", "prettier": "^3.2.5", - "ts-morph": "^16.0.0", + "ts-morph": "^24.0.0", "yesno": "^0.4.0", "zod": "^3.23.8" }, diff --git a/packages/lex-cli/src/codegen/client.ts b/packages/lex-cli/src/codegen/client.ts index eee06071277..61c2867c31f 100644 --- a/packages/lex-cli/src/codegen/client.ts +++ b/packages/lex-cli/src/codegen/client.ts @@ -4,10 +4,10 @@ import { SourceFile, VariableDeclarationKind, } from 'ts-morph' -import { Lexicons, LexiconDoc, LexRecord } from '@atproto/lexicon' +import { Lexicons, type LexiconDoc, type LexRecord } from '@atproto/lexicon' import { NSID } from '@atproto/syntax' import { gen, utilTs, lexiconsTs } from './common' -import { GeneratedAPI } from '../types' +import { type GeneratedAPI } from '../types' import { genImports, genUserType, @@ -19,7 +19,7 @@ import { } from './lex-gen' import { lexiconsToDefTree, - DefTreeNode, + type DefTreeNode, schemasToNsidTokens, toCamelCase, toTitleCase, @@ -61,14 +61,14 @@ const indexTs = ( nsidTokens: Record, ) => gen(project, '/index.ts', async (file) => { - //= import { XrpcClient, FetchHandler, FetchHandlerOptions } from '@atproto/xrpc' + //= import { XrpcClient, type FetchHandler, type FetchHandlerOptions } from '@atproto/xrpc' const xrpcImport = file.addImportDeclaration({ moduleSpecifier: '@atproto/xrpc', }) xrpcImport.addNamedImports([ { name: 'XrpcClient' }, - { name: 'FetchHandler' }, - { name: 'FetchHandlerOptions' }, + { name: 'FetchHandler', isTypeOnly: true }, + { name: 'FetchHandlerOptions', isTypeOnly: true }, ]) //= import {schemas} from './lexicons' file @@ -446,12 +446,12 @@ const lexiconTs = (project, lexicons: Lexicons, lexiconDoc: LexiconDoc) => { name: 'XRPCError' }, ]) } - //= import {ValidationResult, BlobRef} from '@atproto/lexicon' + //= import { type ValidationResult, BlobRef } from '@atproto/lexicon' file .addImportDeclaration({ moduleSpecifier: '@atproto/lexicon', }) - .addNamedImports([{ name: 'ValidationResult' }, { name: 'BlobRef' }]) + .addNamedImports([{ name: 'ValidationResult', isTypeOnly: true }, { name: 'BlobRef' }]) //= import {isObj, hasProp} from '../../util.ts' file .addImportDeclaration({ diff --git a/packages/lex-cli/src/codegen/common.ts b/packages/lex-cli/src/codegen/common.ts index caff2caf889..4f9ce399944 100644 --- a/packages/lex-cli/src/codegen/common.ts +++ b/packages/lex-cli/src/codegen/common.ts @@ -1,7 +1,7 @@ import { Project, SourceFile, VariableDeclarationKind } from 'ts-morph' -import { LexiconDoc } from '@atproto/lexicon' +import { type LexiconDoc } from '@atproto/lexicon' import prettier from 'prettier' -import { GeneratedFile } from '../types' +import { type GeneratedFile } from '../types' const PRETTIER_OPTS = { parser: 'typescript', @@ -18,10 +18,10 @@ export function isObj(v: unknown): v is Record { return typeof v === 'object' && v !== null } -export function hasProp( - data: object, +export function hasProp( + data: T, prop: K, -): data is Record { +): data is T & Record { return prop in data } `) @@ -36,12 +36,12 @@ export const lexiconsTs = (project, lexicons: LexiconDoc[]) => .join('') } - //= import {LexiconDoc} from '@atproto/lexicon' + //= import { type LexiconDoc, Lexicons } from '@atproto/lexicon' file .addImportDeclaration({ moduleSpecifier: '@atproto/lexicon', }) - .addNamedImports([{ name: 'LexiconDoc' }, { name: 'Lexicons' }]) + .addNamedImports([{ name: 'LexiconDoc', isTypeOnly: true }, { name: 'Lexicons' }]) //= export const schemaDict = {...} as const satisfies Record file.addVariableStatement({ @@ -66,14 +66,14 @@ export const lexiconsTs = (project, lexicons: LexiconDoc[]) => ], }) - //= export const schemas = Object.values(schemaDict) + //= export const schemas = Object.values(schemaDict) satisfies LexiconDoc[] file.addVariableStatement({ isExported: true, declarationKind: VariableDeclarationKind.Const, declarations: [ { name: 'schemas', - initializer: 'Object.values(schemaDict)', + initializer: 'Object.values(schemaDict) satisfies LexiconDoc[]', }, ], }) diff --git a/packages/lex-cli/src/codegen/lex-gen.ts b/packages/lex-cli/src/codegen/lex-gen.ts index a50eae9c2e5..c24a43e0d18 100644 --- a/packages/lex-cli/src/codegen/lex-gen.ts +++ b/packages/lex-cli/src/codegen/lex-gen.ts @@ -2,15 +2,15 @@ import { SourceFile, VariableDeclarationKind } from 'ts-morph' import { relative as getRelativePath } from 'path' import { Lexicons, - LexUserType, - LexObject, - LexArray, - LexPrimitive, - LexBlob, - LexToken, - LexCidLink, - LexBytes, - LexIpldType, + type LexUserType, + type LexObject, + type LexArray, + type LexPrimitive, + type LexBlob, + type LexToken, + type LexCidLink, + type LexBytes, + type LexIpldType, } from '@atproto/lexicon' import { toCamelCase, toTitleCase, toScreamingSnakeCase } from './util' diff --git a/packages/lex-cli/src/codegen/server.ts b/packages/lex-cli/src/codegen/server.ts index ec03c7a037b..4fe3a7f4599 100644 --- a/packages/lex-cli/src/codegen/server.ts +++ b/packages/lex-cli/src/codegen/server.ts @@ -4,10 +4,10 @@ import { SourceFile, VariableDeclarationKind, } from 'ts-morph' -import { Lexicons, LexiconDoc } from '@atproto/lexicon' +import { Lexicons, type LexiconDoc } from '@atproto/lexicon' import { NSID } from '@atproto/syntax' import { gen, lexiconsTs, utilTs } from './common' -import { GeneratedAPI } from '../types' +import { type GeneratedAPI } from '../types' import { genImports, genUserType, @@ -19,7 +19,7 @@ import { } from './lex-gen' import { lexiconsToDefTree, - DefTreeNode, + type DefTreeNode, schemasToNsidTokens, toCamelCase, toTitleCase, @@ -68,9 +68,10 @@ const indexTs = ( { name: 'Options', alias: 'XrpcOptions', + isTypeOnly: true }, - { name: 'AuthVerifier' }, - { name: 'StreamAuthVerifier' }, + { name: 'AuthVerifier', isTypeOnly: true }, + { name: 'StreamAuthVerifier', isTypeOnly: true }, ], }) //= import {schemas} from './lexicons' @@ -342,12 +343,12 @@ const lexiconTs = (project, lexicons: Lexicons, lexiconDoc: LexiconDoc) => }) } } - //= import {ValidationResult, BlobRef} from '@atproto/lexicon' + //= import { type ValidationResult, BlobRef } from '@atproto/lexicon' file .addImportDeclaration({ moduleSpecifier: '@atproto/lexicon', }) - .addNamedImports([{ name: 'ValidationResult' }, { name: 'BlobRef' }]) + .addNamedImports([{ name: 'ValidationResult', isTypeOnly: true }, { name: 'BlobRef' }]) //= import {lexicons} from '../../lexicons.ts' file .addImportDeclaration({ diff --git a/packages/lex-cli/src/codegen/util.ts b/packages/lex-cli/src/codegen/util.ts index c3b7a7322d4..fbae7911248 100644 --- a/packages/lex-cli/src/codegen/util.ts +++ b/packages/lex-cli/src/codegen/util.ts @@ -1,4 +1,4 @@ -import { LexiconDoc, LexUserType } from '@atproto/lexicon' +import { type LexiconDoc, type LexUserType } from '@atproto/lexicon' import { NSID } from '@atproto/syntax' export interface DefTreeNodeUserType { diff --git a/packages/lex-cli/src/mdgen/index.ts b/packages/lex-cli/src/mdgen/index.ts index ada79595897..2f85d1b64e8 100644 --- a/packages/lex-cli/src/mdgen/index.ts +++ b/packages/lex-cli/src/mdgen/index.ts @@ -1,5 +1,5 @@ import fs from 'fs' -import { LexiconDoc } from '@atproto/lexicon' +import { type LexiconDoc } from '@atproto/lexicon' const INSERT_START = [ '', diff --git a/packages/lex-cli/src/util.ts b/packages/lex-cli/src/util.ts index b3fc5668a52..50fab317e12 100644 --- a/packages/lex-cli/src/util.ts +++ b/packages/lex-cli/src/util.ts @@ -1,9 +1,9 @@ import fs from 'fs' import { join } from 'path' -import { parseLexiconDoc, LexiconDoc } from '@atproto/lexicon' -import { ZodError, ZodFormattedError } from 'zod' +import { parseLexiconDoc, type LexiconDoc } from '@atproto/lexicon' +import { ZodError, type ZodFormattedError } from 'zod' import chalk from 'chalk' -import { GeneratedAPI, FileDiff } from './types' +import { type GeneratedAPI, type FileDiff } from './types' export function readAllLexicons(paths: string[]): LexiconDoc[] { const docs: LexiconDoc[] = [] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0abdcf7ada4..5cc91aca5e7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -718,8 +718,8 @@ importers: specifier: ^3.2.5 version: 3.2.5 ts-morph: - specifier: ^16.0.0 - version: 16.0.0 + specifier: ^24.0.0 + version: 24.0.0 yesno: specifier: ^0.4.0 version: 0.4.0 @@ -5577,10 +5577,12 @@ packages: dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 + dev: true /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} + dev: true /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -5588,6 +5590,7 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 + dev: true /@npmcli/fs@2.1.2: resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} @@ -6169,13 +6172,12 @@ packages: engines: {node: '>=10.13.0'} dev: true - /@ts-morph/common@0.17.0: - resolution: {integrity: sha512-RMSSvSfs9kb0VzkvQ2NWobwnj7TxCA9vI/IjR9bDHqgAyVbu2T0DN4wiKVqomyDWqO7dPr/tErSfq7urQ1Q37g==} + /@ts-morph/common@0.25.0: + resolution: {integrity: sha512-kMnZz+vGGHi4GoHnLmMhGNjm44kGtKUXGnOvrKmMwAuvNjM/PgKVGfUnL7IDvK7Jb2QQ82jq3Zmp04Gy+r3Dkg==} dependencies: - fast-glob: 3.3.1 - minimatch: 5.1.6 - mkdirp: 1.0.4 + minimatch: 9.0.5 path-browserify: 1.0.1 + tinyglobby: 0.2.10 dev: false /@tsconfig/node10@1.0.9: @@ -7154,6 +7156,7 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.0.1 + dev: true /breakword@1.0.6: resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} @@ -7447,8 +7450,8 @@ packages: engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true - /code-block-writer@11.0.3: - resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==} + /code-block-writer@13.0.3: + resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} dev: false /collect-v8-coverage@1.0.2: @@ -8760,6 +8763,7 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 + dev: true /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -8807,6 +8811,7 @@ packages: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 + dev: true /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} @@ -8820,6 +8825,17 @@ packages: pend: 1.2.0 dev: true + /fdir@6.4.2(picomatch@4.0.2): + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + dependencies: + picomatch: 4.0.2 + dev: false + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -8843,6 +8859,7 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 + dev: true /finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} @@ -9115,6 +9132,7 @@ packages: engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 + dev: true /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} @@ -9644,6 +9662,7 @@ packages: /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + dev: true /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} @@ -9659,6 +9678,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 + dev: true /is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} @@ -9683,6 +9703,7 @@ packages: /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + dev: true /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} @@ -10667,6 +10688,7 @@ packages: /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + dev: true /methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} @@ -10678,6 +10700,7 @@ packages: dependencies: braces: 3.0.2 picomatch: 2.3.1 + dev: true /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} @@ -10737,6 +10760,7 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: true /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} @@ -10744,6 +10768,13 @@ packages: dependencies: brace-expansion: 2.0.1 + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: false + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -10830,6 +10861,7 @@ packages: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true + dev: true /module-details-from-path@1.0.3: resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} @@ -11359,6 +11391,12 @@ packages: /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + dev: true + + /picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + dev: false /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} @@ -12115,6 +12153,7 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true /queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} @@ -12356,6 +12395,7 @@ packages: /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true /rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} @@ -12446,6 +12486,7 @@ packages: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 + dev: true /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} @@ -13246,6 +13287,14 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + /tinyglobby@0.2.10: + resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} + engines: {node: '>=12.0.0'} + dependencies: + fdir: 6.4.2(picomatch@4.0.2) + picomatch: 4.0.2 + dev: false + /tlds@1.234.0: resolution: {integrity: sha512-TNDfeyDIC+oroH44bMbWC+Jn/2qNrfRvDK2EXt1icOXYG5NMqoRyUosADrukfb4D8lJ3S1waaBWSvQro0erdng==} hasBin: true @@ -13272,6 +13321,7 @@ packages: engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 + dev: true /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} @@ -13309,11 +13359,11 @@ packages: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true - /ts-morph@16.0.0: - resolution: {integrity: sha512-jGNF0GVpFj0orFw55LTsQxVYEUOCWBAbR5Ls7fTYE5pQsbW18ssTb/6UXx/GYAEjS+DQTp8VoTw0vqYMiaaQuw==} + /ts-morph@24.0.0: + resolution: {integrity: sha512-2OAOg/Ob5yx9Et7ZX4CvTCc0UFoZHwLEJ+dpDPSUi5TgwwlTlX47w+iFRrEwzUZwYACjq83cgjS/Da50Ga37uw==} dependencies: - '@ts-morph/common': 0.17.0 - code-block-writer: 11.0.3 + '@ts-morph/common': 0.25.0 + code-block-writer: 13.0.3 dev: false /ts-node@10.8.2(@swc/core@1.3.42)(@types/node@18.19.56)(typescript@5.6.3):