Mirror: TypeScript LSP plugin that finds GraphQL documents in your code and provides diagnostics, auto-complete and hover-information.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: retire automatic typegen (#148)

* retire codegen

* update deps and prune tests

* update docs

* add comments

* Create long-garlics-compare.md

* Update .changeset/long-garlics-compare.md

authored by

Jovi De Croock and committed by
GitHub
19b20fea e63c3d01

+261 -546
+6
.changeset/long-garlics-compare.md
··· 1 + --- 2 + "@0no-co/graphqlsp": major 3 + --- 4 + 5 + Retire automatic typegen with tagged-templates, we encourage folks to either try out 6 + [gql.tada](https://github.com/0no-co/gql.tada) or the [client-preset](https://the-guild.dev/graphql/codegen/docs/guides/react-vue)
+2 -6
README.md
··· 1 1 # GraphQLSP 2 2 3 3 This is a TypeScript LSP Plugin that will recognise documents in your 4 - TypeScript code and help you out with hover-information, diagnostics, 5 - auto-complete and automatically generating [Typed-Document-nodes](https://the-guild.dev/graphql/codegen/plugins/typescript/typed-document-node) 4 + TypeScript code and help you out with hover-information, diagnostics and 5 + auto-complete. 6 6 7 7 ## Features 8 8 9 9 - Hover information showing the decriptions of fields 10 10 - Diagnostics for adding fields that don't exist, are deprecated, missmatched argument types, ... 11 11 - Auto-complete inside your editor for fields 12 - - When you save it will generate `typed-document-nodes` for your documents and cast them to the correct type 13 12 - Will warn you when you are importing from a file that is exporting fragments that you're not using 14 13 15 14 > Note that this plugin does not do syntax highlighting, for that you still need something like ··· 63 62 64 63 - `template` the shape of your template, by default `gql` 65 64 - `templateIsCallExpression` this tells our client that you are using `graphql('doc')` 66 - - `disableTypegen` disables type-generation in general, this could be needed if offset bugs are introduced 67 - - `scalars` allows you to pass an object of scalars that we'll feed into `graphql-code-generator` 68 - - `extraTypes` allows you to specify imports or declare types to help with `scalar` definitions 69 65 - `shouldCheckForColocatedFragments` when turned on, this will scan your imports to find 70 66 unused fragments and provide a message notifying you about them 71 67 - `trackFieldUsage` this only works with the client-preset, when turned on it will warn you about
+11 -7
packages/graphqlsp/README.md
··· 1 1 # GraphQLSP 2 2 3 3 This is a TypeScript LSP Plugin that will recognise documents in your 4 - TypeScript code and help you out with hover-information, diagnostics, 5 - auto-complete and automatically generating [Typed-Document-nodes](https://the-guild.dev/graphql/codegen/plugins/typescript/typed-document-node) 4 + TypeScript code and help you out with hover-information, diagnostics and 5 + auto-complete. 6 6 7 7 ## Features 8 8 9 9 - Hover information showing the decriptions of fields 10 10 - Diagnostics for adding fields that don't exist, are deprecated, missmatched argument types, ... 11 11 - Auto-complete inside your editor for fields 12 - - When you save it will generate `typed-document-nodes` for your documents and cast them to the correct type 13 12 - Will warn you when you are importing from a file that is exporting fragments that you're not using 14 13 15 14 > Note that this plugin does not do syntax highlighting, for that you still need something like ··· 42 41 workspace version of TypeScript. In VSCode you can do so by clicking the bottom right 43 42 when on a TypeScript file or adding a file like [this](https://github.com/0no-co/GraphQLSP/blob/main/packages/example/.vscode/settings.json). 44 43 45 - > If you are using VSCode ensure that your editor is using the Workspace Version of TypeScript 44 + > If you are using VSCode ensure that your editor is using [the Workspace Version of TypeScript](https://code.visualstudio.com/docs/typescript/typescript-compiling#_using-the-workspace-version-of-typescript) 45 + > this can be done by manually selecting it or adding a `.vscode/config.json` with the contents of 46 + > 47 + > ```json 48 + > { 49 + > "typescript.tsdk": "node_modules/typescript/lib", 50 + > "typescript.enablePromptUseWorkspaceTsdk": true 51 + > } 52 + > ``` 46 53 47 54 ### Configuration 48 55 ··· 55 62 56 63 - `template` the shape of your template, by default `gql` 57 64 - `templateIsCallExpression` this tells our client that you are using `graphql('doc')` 58 - - `disableTypegen` disables type-generation in general, this could be needed if offset bugs are introduced 59 - - `scalars` allows you to pass an object of scalars that we'll feed into `graphql-code-generator` 60 - - `extraTypes` allows you to specify imports or declare types to help with `scalar` definitions 61 65 - `shouldCheckForColocatedFragments` when turned on, this will scan your imports to find 62 66 unused fragments and provide a message notifying you about them 63 67 - `trackFieldUsage` this only works with the client-preset, when turned on it will warn you about
-6
packages/graphqlsp/package.json
··· 40 40 "typescript": "^5.3.3" 41 41 }, 42 42 "dependencies": { 43 - "@graphql-codegen/add": "^5.0.0", 44 - "@graphql-codegen/core": "^4.0.0", 45 - "@graphql-codegen/typed-document-node": "^5.0.1", 46 - "@graphql-codegen/typescript": "^4.0.1", 47 - "@graphql-codegen/typescript-operations": "^4.0.1", 48 - "@graphql-typed-document-node/core": "^3.2.0", 49 43 "@sindresorhus/fnv1a": "^2.0.0", 50 44 "graphql-language-service": "^5.2.0", 51 45 "lru-cache": "^10.0.1",
-8
packages/graphqlsp/src/ast/index.ts
··· 1 1 import ts from 'typescript/lib/tsserverlibrary'; 2 - import fs from 'fs'; 3 2 import { FragmentDefinitionNode, parse } from 'graphql'; 4 3 import { Logger } from '..'; 5 - 6 - export function isFileDirty(fileName: string, source: ts.SourceFile) { 7 - const contents = fs.readFileSync(fileName, 'utf-8'); 8 - const currentText = source.getFullText(); 9 - 10 - return currentText !== contents; 11 - } 12 4 13 5 export function getSource(info: ts.server.PluginCreateInfo, filename: string) { 14 6 const program = info.languageService.getProgram();
+9 -169
packages/graphqlsp/src/diagnostics.ts
··· 16 16 findAllCallExpressions, 17 17 findAllTaggedTemplateNodes, 18 18 getSource, 19 - isFileDirty, 20 19 } from './ast'; 21 20 import { resolveTemplate } from './ast/resolve'; 22 - import { generateTypedDocumentNodes } from './graphql/generateTypes'; 23 21 import { checkFieldUsageInFile } from './fieldUsage'; 24 22 import { 25 23 MISSING_FRAGMENT_CODE, ··· 55 53 }); 56 54 57 55 export function getGraphQLDiagnostics( 58 - // This is so that we don't change offsets when there are 59 - // TypeScript errors 60 - hasTSErrors: boolean, 61 56 filename: string, 62 - baseTypesPath: string, 63 57 schema: { current: GraphQLSchema | null; version: number }, 64 58 info: ts.server.PluginCreateInfo 65 59 ): ts.Diagnostic[] | undefined { ··· 95 89 return resolveTemplate(node, filename, info).combinedText; 96 90 }); 97 91 98 - let tsDiagnostics: ts.Diagnostic[] = []; 99 92 const cacheKey = fnv1a( 100 93 isCallExpression 101 94 ? source.getText() + ··· 103 96 schema.version 104 97 : texts.join('-') + schema.version 105 98 ); 99 + 106 100 if (cache.has(cacheKey)) { 107 - tsDiagnostics = cache.get(cacheKey)!; 101 + return cache.get(cacheKey)!; 108 102 } else { 109 - tsDiagnostics = runDiagnostics(source, { nodes, fragments }, schema, info); 103 + const tsDiagnostics = runDiagnostics( 104 + source, 105 + { nodes, fragments }, 106 + schema, 107 + info 108 + ); 110 109 cache.set(cacheKey, tsDiagnostics); 110 + return tsDiagnostics; 111 111 } 112 - 113 - runTypedDocumentNodes( 114 - nodes, 115 - texts, 116 - schema, 117 - tsDiagnostics, 118 - hasTSErrors, 119 - baseTypesPath, 120 - source, 121 - info 122 - ); 123 - 124 - return tsDiagnostics; 125 112 } 126 113 127 114 const runDiagnostics = ( ··· 373 360 return [...tsDiagnostics, ...importDiagnostics]; 374 361 } 375 362 }; 376 - 377 - const runTypedDocumentNodes = ( 378 - nodes: (ts.TaggedTemplateExpression | ts.NoSubstitutionTemplateLiteral)[], 379 - texts: (string | undefined)[], 380 - schema: { current: GraphQLSchema | null }, 381 - diagnostics: ts.Diagnostic[], 382 - hasTSErrors: boolean, 383 - baseTypesPath: string, 384 - sourceFile: ts.SourceFile, 385 - info: ts.server.PluginCreateInfo 386 - ) => { 387 - const filename = sourceFile.fileName; 388 - const scalars = info.config.scalars || {}; 389 - const disableTypegen = info.config.disableTypegen ?? false; 390 - let source: ts.SourceFile | undefined = sourceFile; 391 - 392 - if ( 393 - !diagnostics.filter( 394 - x => 395 - x.category === ts.DiagnosticCategory.Error || 396 - x.category === ts.DiagnosticCategory.Warning 397 - ).length && 398 - !disableTypegen 399 - ) { 400 - try { 401 - if (isFileDirty(filename, source) && !isGeneratingTypes) { 402 - return; 403 - } 404 - 405 - isGeneratingTypes = true; 406 - 407 - const parts = source.fileName.split('/'); 408 - const name = parts[parts.length - 1]; 409 - const nameParts = name.split('.'); 410 - nameParts[nameParts.length - 1] = 'generated.ts'; 411 - parts[parts.length - 1] = nameParts.join('.'); 412 - 413 - generateTypedDocumentNodes( 414 - schema.current, 415 - parts.join('/'), 416 - texts.join('\n'), 417 - scalars, 418 - baseTypesPath 419 - ).then(({ success }) => { 420 - if (!success || hasTSErrors) return; 421 - 422 - source = getSource(info, filename); 423 - if (!source || isFileDirty(filename, source)) { 424 - return; 425 - } 426 - 427 - let addedLength = 0; 428 - const finalSourceText = nodes.reduce((sourceText, node, i) => { 429 - source = getSource(info, filename); 430 - if (!source) return sourceText; 431 - 432 - const queryText = texts[i] || ''; 433 - const parsed = parse(queryText, { noLocation: true }); 434 - const isFragment = parsed.definitions.every( 435 - x => x.kind === Kind.FRAGMENT_DEFINITION 436 - ); 437 - let name = ''; 438 - 439 - if (isFragment) { 440 - const fragmentNode = parsed 441 - .definitions[0] as FragmentDefinitionNode; 442 - name = fragmentNode.name.value; 443 - } else { 444 - const operationNode = parsed 445 - .definitions[0] as OperationDefinitionNode; 446 - name = operationNode.name?.value || ''; 447 - } 448 - 449 - if (!name) return sourceText; 450 - 451 - name = name.charAt(0).toUpperCase() + name.slice(1); 452 - const parentChildren = node.parent.getChildren(); 453 - 454 - const exportName = isFragment 455 - ? `${name}FragmentDoc` 456 - : `${name}Document`; 457 - let imp = ` as typeof import('./${nameParts 458 - .join('.') 459 - .replace('.ts', '')}').${exportName}\n`; 460 - 461 - // This checks whether one of the children is an import-type 462 - // which is a short-circuit if there is no as 463 - const typeImport = parentChildren.find(x => 464 - ts.isImportTypeNode(x) 465 - ) as ts.ImportTypeNode; 466 - 467 - if (typeImport && typeImport.getText().includes(exportName)) 468 - return sourceText; 469 - 470 - const span = { length: 1, start: node.end }; 471 - 472 - let text = ''; 473 - if (typeImport) { 474 - // We only want the oldExportName here to be present 475 - // that way we can diff its length vs the new one 476 - const oldExportName = typeImport.getText().split('.').pop(); 477 - 478 - // Remove ` as ` from the beginning, 479 - // this because getText() gives us everything 480 - // but ` as ` meaning we need to keep that part 481 - // around. 482 - imp = imp.slice(4); 483 - // We remove the \n 484 - imp = imp.substring(0, imp.length - 1); 485 - const from = node.getStart(); 486 - text = 487 - sourceText.slice(0, from) + 488 - sourceText.slice(from).replace(typeImport.getText(), imp); 489 - span.length = 490 - imp.length + ((oldExportName || '').length - exportName.length); 491 - } else { 492 - text = 493 - sourceText.substring(0, span.start) + 494 - imp + 495 - sourceText.substring(span.start + span.length, sourceText.length); 496 - } 497 - 498 - sourceText = text; 499 - addedLength = addedLength + imp.length; 500 - // @ts-ignore 501 - source.hasBeenIncrementallyParsed = false; 502 - source.update(text, { span, newLength: imp.length }); 503 - source.text = text; 504 - 505 - return sourceText; 506 - }, source.text); 507 - 508 - const scriptInfo = info.project.projectService.getScriptInfo(filename); 509 - const snapshot = scriptInfo!.getSnapshot(); 510 - scriptInfo!.editContent(0, snapshot.getLength(), finalSourceText); 511 - info.languageServiceHost.writeFile!(source.fileName, finalSourceText); 512 - scriptInfo!.reloadFromFile(); 513 - scriptInfo!.registerFileUpdate(); 514 - isGeneratingTypes = false; 515 - }); 516 - } catch (e) { 517 - const scriptInfo = info.project.projectService.getScriptInfo(filename); 518 - scriptInfo!.reloadFromFile(); 519 - isGeneratingTypes = false; 520 - } 521 - } 522 - };
-114
packages/graphqlsp/src/graphql/generateTypes.ts
··· 1 - import fs from 'fs'; 2 - import { posix as path } from 'path'; 3 - import { printSchema, parse, GraphQLSchema } from 'graphql'; 4 - import { codegen } from '@graphql-codegen/core'; 5 - import * as typescriptPlugin from '@graphql-codegen/typescript'; 6 - import * as typescriptOperationsPlugin from '@graphql-codegen/typescript-operations'; 7 - import * as typedDocumentNodePlugin from '@graphql-codegen/typed-document-node'; 8 - import * as addPlugin from '@graphql-codegen/add'; 9 - 10 - export const generateBaseTypes = async ( 11 - schema: GraphQLSchema | null, 12 - outputFile: string, 13 - scalars: Record<string, unknown>, 14 - extraImports?: string 15 - ) => { 16 - if (!schema) return; 17 - 18 - const config = { 19 - documents: [], 20 - config: { 21 - scalars, 22 - avoidOptionals: false, 23 - enumsAsTypes: true, 24 - globalNamespace: true, 25 - nonOptionalTypename: true, 26 - }, 27 - filename: outputFile, 28 - schema: parse(printSchema(schema)), 29 - plugins: [ 30 - { typescript: {} }, 31 - extraImports && { add: { content: extraImports } }, 32 - ].filter(Boolean), 33 - pluginMap: extraImports 34 - ? { 35 - typescript: typescriptPlugin, 36 - add: addPlugin, 37 - } 38 - : { 39 - typescript: typescriptPlugin, 40 - }, 41 - }; 42 - 43 - // @ts-ignore 44 - const output = await codegen(config); 45 - let folderParts = outputFile.split('/'); 46 - folderParts.pop(); 47 - const folder = path.join(folderParts.join('/')); 48 - if (!fs.existsSync(folder)) { 49 - fs.mkdirSync(folder); 50 - } 51 - fs.writeFile(path.join(outputFile), output, 'utf8', err => { 52 - console.error(err); 53 - }); 54 - }; 55 - 56 - export const generateTypedDocumentNodes = async ( 57 - schema: GraphQLSchema | null, 58 - outputFile: string, 59 - doc: string, 60 - scalars: Record<string, unknown>, 61 - baseTypesPath: string 62 - ): Promise<{ success: boolean }> => { 63 - try { 64 - if (!schema) return { success: false }; 65 - 66 - const parts = outputFile.split('/'); 67 - parts.pop(); 68 - let basePath = path 69 - .relative(parts.join('/'), baseTypesPath) 70 - .replace('.ts', ''); 71 - // case where files are declared globally, we need to prefix with ./ 72 - if (basePath === '__generated__/baseGraphQLSP') { 73 - basePath = './' + basePath; 74 - } 75 - 76 - const config = { 77 - documents: [ 78 - { 79 - location: 'operation.graphql', 80 - document: parse(doc), 81 - }, 82 - ], 83 - config: { 84 - scalars, 85 - avoidOptionals: false, 86 - enumsAsTypes: true, 87 - nonOptionalTypename: true, 88 - namespacedImportName: 'Types', 89 - }, 90 - filename: outputFile, 91 - schema: parse(printSchema(schema)), 92 - plugins: [ 93 - { 'typescript-operations': {} }, 94 - { 'typed-document-node': {} }, 95 - { add: { content: `import * as Types from "${basePath}"` } }, 96 - ], 97 - pluginMap: { 98 - 'typescript-operations': typescriptOperationsPlugin, 99 - 'typed-document-node': typedDocumentNodePlugin, 100 - add: addPlugin, 101 - }, 102 - }; 103 - 104 - // @ts-ignore 105 - const output = await codegen(config); 106 - fs.writeFile(path.join(outputFile), output, 'utf8', err => { 107 - console.error(err); 108 - }); 109 - 110 - return { success: true }; 111 - } catch (e) { 112 - return { success: false }; 113 - } 114 - };
+1 -17
packages/graphqlsp/src/graphql/getSchema.ts
··· 10 10 import fs from 'fs'; 11 11 12 12 import { Logger } from '../index'; 13 - import { generateBaseTypes } from './generateTypes'; 14 13 15 14 export type SchemaOrigin = { 16 15 url: string; ··· 20 19 export const loadSchema = ( 21 20 root: string, 22 21 schema: SchemaOrigin | string, 23 - logger: Logger, 24 - baseTypesPath: string, 25 - shouldTypegen: boolean, 26 - scalars: Record<string, unknown>, 27 - extraTypes?: string 22 + logger: Logger 28 23 ): { current: GraphQLSchema | null; version: number } => { 29 24 const ref: { current: GraphQLSchema | null; version: number } = { 30 25 current: null, ··· 81 76 ); 82 77 ref.version = ref.version + 1; 83 78 logger(`Got schema for ${url!.toString()}`); 84 - if (shouldTypegen) 85 - generateBaseTypes( 86 - ref.current, 87 - baseTypesPath, 88 - scalars, 89 - extraTypes 90 - ); 91 79 } catch (e: any) { 92 80 logger(`Got schema error for ${e.message}`); 93 81 } ··· 113 101 ? buildClientSchema(JSON.parse(contents)) 114 102 : buildSchema(contents); 115 103 ref.version = ref.version + 1; 116 - 117 - if (shouldTypegen) generateBaseTypes(ref.current, baseTypesPath, scalars); 118 104 }); 119 105 120 106 ref.current = isJson ··· 122 108 : buildSchema(contents); 123 109 ref.version = ref.version + 1; 124 110 125 - if (shouldTypegen) 126 - generateBaseTypes(ref.current, baseTypesPath, scalars, extraTypes); 127 111 logger(`Got schema and initialized watcher for ${schema}`); 128 112 } 129 113
+15 -22
packages/graphqlsp/src/index.ts
··· 22 22 23 23 type Config = { 24 24 schema: SchemaOrigin | string; 25 + // TODO: rename to tag or just remove entirely and always check for 26 + // gql and graphql. 25 27 template?: string; 28 + // TODO: we need a bettername, gql.tada will also have 29 + // call expressions, we can differentiate by means of 30 + // tada having a second argument containing the fragments. 26 31 templateIsCallExpression?: boolean; 27 - disableTypegen?: boolean; 28 - extraTypes?: string; 29 - scalars?: Record<string, unknown>; 32 + // Up in the air whether we want to keep supporting 33 + // this. Current limitation are barrel-file exports 34 + // could be counter-acted with an opinion on 35 + // fragment-naming. Could become more relevant 36 + // with gql.tada and could be useful for 37 + // client-preset as well however the component type-annotations 38 + // can better indicate a missing spread for the 39 + // client-preset. 30 40 shouldCheckForColocatedFragments?: boolean; 31 41 }; 32 42 ··· 43 53 44 54 logger('Setting up the GraphQL Plugin'); 45 55 46 - const scalars = config.scalars || {}; 47 - const extraTypes = config.extraTypes || ''; 48 - const disableTypegen = config.disableTypegen ?? false; 49 - 50 56 const proxy = createBasicDecorator(info); 51 57 52 - const baseTypesPath = 53 - info.project.getCurrentDirectory() + '/__generated__/baseGraphQLSP.ts'; 54 - 55 58 const schema = loadSchema( 56 59 info.project.getProjectName(), 57 60 config.schema, 58 - logger, 59 - baseTypesPath, 60 - !disableTypegen, 61 - scalars, 62 - extraTypes 61 + logger 63 62 ); 64 63 65 64 proxy.getSemanticDiagnostics = (filename: string): ts.Diagnostic[] => { 66 65 const originalDiagnostics = 67 66 info.languageService.getSemanticDiagnostics(filename); 68 67 69 - const graphQLDiagnostics = getGraphQLDiagnostics( 70 - originalDiagnostics.length > 0, 71 - filename, 72 - baseTypesPath, 73 - schema, 74 - info 75 - ); 68 + const graphQLDiagnostics = getGraphQLDiagnostics(filename, schema, info); 76 69 77 70 return graphQLDiagnostics 78 71 ? [...graphQLDiagnostics, ...originalDiagnostics]
+211 -19
pnpm-lock.yaml
··· 146 146 147 147 packages/graphqlsp: 148 148 dependencies: 149 - '@graphql-codegen/add': 150 - specifier: ^5.0.0 151 - version: 5.0.0(graphql@16.8.1) 152 - '@graphql-codegen/core': 153 - specifier: ^4.0.0 154 - version: 4.0.0(graphql@16.8.1) 155 - '@graphql-codegen/typed-document-node': 156 - specifier: ^5.0.1 157 - version: 5.0.1(graphql@16.8.1) 158 - '@graphql-codegen/typescript': 159 - specifier: ^4.0.1 160 - version: 4.0.1(graphql@16.8.1) 161 - '@graphql-codegen/typescript-operations': 162 - specifier: ^4.0.1 163 - version: 4.0.1(graphql@16.8.1) 164 - '@graphql-typed-document-node/core': 165 - specifier: ^3.2.0 166 - version: 3.2.0(graphql@16.8.1) 167 149 '@sindresorhus/fnv1a': 168 150 specifier: ^2.0.0 169 151 version: 2.0.0 ··· 277 259 dependencies: 278 260 '@jridgewell/gen-mapping': 0.1.1 279 261 '@jridgewell/trace-mapping': 0.3.15 262 + dev: true 280 263 281 264 /@ardatan/relay-compiler@12.0.0(graphql@16.8.1): 282 265 resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==} ··· 305 288 transitivePeerDependencies: 306 289 - encoding 307 290 - supports-color 291 + dev: true 308 292 309 293 /@ardatan/sync-fetch@0.0.1: 310 294 resolution: {integrity: sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==} ··· 320 304 engines: {node: '>=6.9.0'} 321 305 dependencies: 322 306 '@babel/highlight': 7.18.6 307 + dev: true 323 308 324 309 /@babel/code-frame@7.23.4: 325 310 resolution: {integrity: sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==} ··· 327 312 dependencies: 328 313 '@babel/highlight': 7.23.4 329 314 chalk: 2.4.2 315 + dev: true 330 316 331 317 /@babel/compat-data@7.20.5: 332 318 resolution: {integrity: sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==} 333 319 engines: {node: '>=6.9.0'} 320 + dev: true 334 321 335 322 /@babel/compat-data@7.23.3: 336 323 resolution: {integrity: sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==} ··· 358 345 semver: 7.5.4 359 346 transitivePeerDependencies: 360 347 - supports-color 348 + dev: true 361 349 362 350 /@babel/core@7.23.3: 363 351 resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} ··· 389 377 '@babel/types': 7.20.5 390 378 '@jridgewell/gen-mapping': 0.3.2 391 379 jsesc: 2.5.2 380 + dev: true 392 381 393 382 /@babel/generator@7.23.4: 394 383 resolution: {integrity: sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==} ··· 398 387 '@jridgewell/gen-mapping': 0.3.2 399 388 '@jridgewell/trace-mapping': 0.3.20 400 389 jsesc: 2.5.2 390 + dev: true 401 391 402 392 /@babel/helper-annotate-as-pure@7.18.6: 403 393 resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} 404 394 engines: {node: '>=6.9.0'} 405 395 dependencies: 406 396 '@babel/types': 7.20.5 397 + dev: true 407 398 408 399 /@babel/helper-compilation-targets@7.20.0(@babel/core@7.20.5): 409 400 resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} ··· 416 407 '@babel/helper-validator-option': 7.18.6 417 408 browserslist: 4.21.4 418 409 semver: 7.5.4 410 + dev: true 419 411 420 412 /@babel/helper-compilation-targets@7.22.15: 421 413 resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} ··· 444 436 '@babel/helper-split-export-declaration': 7.18.6 445 437 transitivePeerDependencies: 446 438 - supports-color 439 + dev: true 447 440 448 441 /@babel/helper-environment-visitor@7.18.9: 449 442 resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} 450 443 engines: {node: '>=6.9.0'} 444 + dev: true 451 445 452 446 /@babel/helper-environment-visitor@7.22.20: 453 447 resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} 454 448 engines: {node: '>=6.9.0'} 449 + dev: true 455 450 456 451 /@babel/helper-function-name@7.19.0: 457 452 resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} ··· 459 454 dependencies: 460 455 '@babel/template': 7.18.10 461 456 '@babel/types': 7.20.5 457 + dev: true 462 458 463 459 /@babel/helper-function-name@7.23.0: 464 460 resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} ··· 466 462 dependencies: 467 463 '@babel/template': 7.22.15 468 464 '@babel/types': 7.23.4 465 + dev: true 469 466 470 467 /@babel/helper-hoist-variables@7.22.5: 471 468 resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} 472 469 engines: {node: '>=6.9.0'} 473 470 dependencies: 474 471 '@babel/types': 7.23.4 472 + dev: true 475 473 476 474 /@babel/helper-member-expression-to-functions@7.18.9: 477 475 resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} 478 476 engines: {node: '>=6.9.0'} 479 477 dependencies: 480 478 '@babel/types': 7.20.5 479 + dev: true 481 480 482 481 /@babel/helper-module-imports@7.18.6: 483 482 resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} 484 483 engines: {node: '>=6.9.0'} 485 484 dependencies: 486 485 '@babel/types': 7.20.5 486 + dev: true 487 487 488 488 /@babel/helper-module-imports@7.22.15: 489 489 resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} ··· 506 506 '@babel/types': 7.23.4 507 507 transitivePeerDependencies: 508 508 - supports-color 509 + dev: true 509 510 510 511 /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.3): 511 512 resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} ··· 526 527 engines: {node: '>=6.9.0'} 527 528 dependencies: 528 529 '@babel/types': 7.20.5 530 + dev: true 529 531 530 532 /@babel/helper-plugin-utils@7.20.2: 531 533 resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} 532 534 engines: {node: '>=6.9.0'} 535 + dev: true 533 536 534 537 /@babel/helper-plugin-utils@7.22.5: 535 538 resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} ··· 547 550 '@babel/types': 7.20.5 548 551 transitivePeerDependencies: 549 552 - supports-color 553 + dev: true 550 554 551 555 /@babel/helper-simple-access@7.20.2: 552 556 resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} 553 557 engines: {node: '>=6.9.0'} 554 558 dependencies: 555 559 '@babel/types': 7.20.5 560 + dev: true 556 561 557 562 /@babel/helper-simple-access@7.22.5: 558 563 resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} ··· 566 571 engines: {node: '>=6.9.0'} 567 572 dependencies: 568 573 '@babel/types': 7.20.5 574 + dev: true 569 575 570 576 /@babel/helper-split-export-declaration@7.18.6: 571 577 resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} 572 578 engines: {node: '>=6.9.0'} 573 579 dependencies: 574 580 '@babel/types': 7.20.5 581 + dev: true 575 582 576 583 /@babel/helper-split-export-declaration@7.22.6: 577 584 resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} 578 585 engines: {node: '>=6.9.0'} 579 586 dependencies: 580 587 '@babel/types': 7.23.4 588 + dev: true 581 589 582 590 /@babel/helper-string-parser@7.19.4: 583 591 resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} 584 592 engines: {node: '>=6.9.0'} 593 + dev: true 585 594 586 595 /@babel/helper-string-parser@7.23.4: 587 596 resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} 588 597 engines: {node: '>=6.9.0'} 598 + dev: true 589 599 590 600 /@babel/helper-validator-identifier@7.19.1: 591 601 resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 592 602 engines: {node: '>=6.9.0'} 603 + dev: true 593 604 594 605 /@babel/helper-validator-identifier@7.22.20: 595 606 resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} 596 607 engines: {node: '>=6.9.0'} 608 + dev: true 597 609 598 610 /@babel/helper-validator-option@7.18.6: 599 611 resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} 600 612 engines: {node: '>=6.9.0'} 613 + dev: true 601 614 602 615 /@babel/helper-validator-option@7.22.15: 603 616 resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} ··· 613 626 '@babel/types': 7.23.4 614 627 transitivePeerDependencies: 615 628 - supports-color 629 + dev: true 616 630 617 631 /@babel/helpers@7.23.4: 618 632 resolution: {integrity: sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==} ··· 632 646 '@babel/helper-validator-identifier': 7.19.1 633 647 chalk: 2.4.2 634 648 js-tokens: 4.0.0 649 + dev: true 635 650 636 651 /@babel/highlight@7.23.4: 637 652 resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} ··· 640 655 '@babel/helper-validator-identifier': 7.22.20 641 656 chalk: 2.4.2 642 657 js-tokens: 4.0.0 658 + dev: true 643 659 644 660 /@babel/parser@7.20.5: 645 661 resolution: {integrity: sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==} ··· 647 663 hasBin: true 648 664 dependencies: 649 665 '@babel/types': 7.20.5 666 + dev: true 650 667 651 668 /@babel/parser@7.23.4: 652 669 resolution: {integrity: sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==} ··· 654 671 hasBin: true 655 672 dependencies: 656 673 '@babel/types': 7.23.4 674 + dev: true 657 675 658 676 /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.20.5): 659 677 resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} ··· 667 685 '@babel/helper-plugin-utils': 7.20.2 668 686 transitivePeerDependencies: 669 687 - supports-color 688 + dev: true 670 689 671 690 /@babel/plugin-proposal-object-rest-spread@7.20.2(@babel/core@7.20.5): 672 691 resolution: {integrity: sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==} ··· 681 700 '@babel/helper-plugin-utils': 7.20.2 682 701 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.20.5) 683 702 '@babel/plugin-transform-parameters': 7.20.5(@babel/core@7.20.5) 703 + dev: true 684 704 685 705 /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.20.5): 686 706 resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} ··· 689 709 dependencies: 690 710 '@babel/core': 7.20.5 691 711 '@babel/helper-plugin-utils': 7.20.2 712 + dev: true 692 713 693 714 /@babel/plugin-syntax-flow@7.18.6(@babel/core@7.20.5): 694 715 resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} ··· 698 719 dependencies: 699 720 '@babel/core': 7.20.5 700 721 '@babel/helper-plugin-utils': 7.20.2 722 + dev: true 701 723 702 724 /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.3): 703 725 resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} ··· 717 739 dependencies: 718 740 '@babel/core': 7.20.5 719 741 '@babel/helper-plugin-utils': 7.20.2 742 + dev: true 720 743 721 744 /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.20.5): 722 745 resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} ··· 725 748 dependencies: 726 749 '@babel/core': 7.20.5 727 750 '@babel/helper-plugin-utils': 7.20.2 751 + dev: true 728 752 729 753 /@babel/plugin-transform-arrow-functions@7.18.6(@babel/core@7.20.5): 730 754 resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} ··· 734 758 dependencies: 735 759 '@babel/core': 7.20.5 736 760 '@babel/helper-plugin-utils': 7.20.2 761 + dev: true 737 762 738 763 /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.20.5): 739 764 resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} ··· 743 768 dependencies: 744 769 '@babel/core': 7.20.5 745 770 '@babel/helper-plugin-utils': 7.20.2 771 + dev: true 746 772 747 773 /@babel/plugin-transform-block-scoping@7.20.5(@babel/core@7.20.5): 748 774 resolution: {integrity: sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==} ··· 752 778 dependencies: 753 779 '@babel/core': 7.20.5 754 780 '@babel/helper-plugin-utils': 7.20.2 781 + dev: true 755 782 756 783 /@babel/plugin-transform-classes@7.20.2(@babel/core@7.20.5): 757 784 resolution: {integrity: sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==} ··· 771 798 globals: 11.12.0 772 799 transitivePeerDependencies: 773 800 - supports-color 801 + dev: true 774 802 775 803 /@babel/plugin-transform-computed-properties@7.18.9(@babel/core@7.20.5): 776 804 resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} ··· 780 808 dependencies: 781 809 '@babel/core': 7.20.5 782 810 '@babel/helper-plugin-utils': 7.20.2 811 + dev: true 783 812 784 813 /@babel/plugin-transform-destructuring@7.20.2(@babel/core@7.20.5): 785 814 resolution: {integrity: sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==} ··· 789 818 dependencies: 790 819 '@babel/core': 7.20.5 791 820 '@babel/helper-plugin-utils': 7.20.2 821 + dev: true 792 822 793 823 /@babel/plugin-transform-flow-strip-types@7.19.0(@babel/core@7.20.5): 794 824 resolution: {integrity: sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==} ··· 799 829 '@babel/core': 7.20.5 800 830 '@babel/helper-plugin-utils': 7.20.2 801 831 '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.20.5) 832 + dev: true 802 833 803 834 /@babel/plugin-transform-for-of@7.18.8(@babel/core@7.20.5): 804 835 resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} ··· 808 839 dependencies: 809 840 '@babel/core': 7.20.5 810 841 '@babel/helper-plugin-utils': 7.20.2 842 + dev: true 811 843 812 844 /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.20.5): 813 845 resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} ··· 819 851 '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.20.5) 820 852 '@babel/helper-function-name': 7.19.0 821 853 '@babel/helper-plugin-utils': 7.20.2 854 + dev: true 822 855 823 856 /@babel/plugin-transform-literals@7.18.9(@babel/core@7.20.5): 824 857 resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} ··· 828 861 dependencies: 829 862 '@babel/core': 7.20.5 830 863 '@babel/helper-plugin-utils': 7.20.2 864 + dev: true 831 865 832 866 /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.20.5): 833 867 resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} ··· 837 871 dependencies: 838 872 '@babel/core': 7.20.5 839 873 '@babel/helper-plugin-utils': 7.20.2 874 + dev: true 840 875 841 876 /@babel/plugin-transform-modules-commonjs@7.19.6(@babel/core@7.20.5): 842 877 resolution: {integrity: sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==} ··· 850 885 '@babel/helper-simple-access': 7.20.2 851 886 transitivePeerDependencies: 852 887 - supports-color 888 + dev: true 853 889 854 890 /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.20.5): 855 891 resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} ··· 862 898 '@babel/helper-replace-supers': 7.19.1 863 899 transitivePeerDependencies: 864 900 - supports-color 901 + dev: true 865 902 866 903 /@babel/plugin-transform-parameters@7.20.5(@babel/core@7.20.5): 867 904 resolution: {integrity: sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==} ··· 871 908 dependencies: 872 909 '@babel/core': 7.20.5 873 910 '@babel/helper-plugin-utils': 7.20.2 911 + dev: true 874 912 875 913 /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.20.5): 876 914 resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} ··· 880 918 dependencies: 881 919 '@babel/core': 7.20.5 882 920 '@babel/helper-plugin-utils': 7.20.2 921 + dev: true 883 922 884 923 /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.20.5): 885 924 resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} ··· 889 928 dependencies: 890 929 '@babel/core': 7.20.5 891 930 '@babel/helper-plugin-utils': 7.20.2 931 + dev: true 892 932 893 933 /@babel/plugin-transform-react-jsx@7.19.0(@babel/core@7.20.5): 894 934 resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} ··· 902 942 '@babel/helper-plugin-utils': 7.20.2 903 943 '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.20.5) 904 944 '@babel/types': 7.20.5 945 + dev: true 905 946 906 947 /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.20.5): 907 948 resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} ··· 911 952 dependencies: 912 953 '@babel/core': 7.20.5 913 954 '@babel/helper-plugin-utils': 7.20.2 955 + dev: true 914 956 915 957 /@babel/plugin-transform-spread@7.19.0(@babel/core@7.20.5): 916 958 resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} ··· 921 963 '@babel/core': 7.20.5 922 964 '@babel/helper-plugin-utils': 7.20.2 923 965 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 966 + dev: true 924 967 925 968 /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.20.5): 926 969 resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} ··· 930 973 dependencies: 931 974 '@babel/core': 7.20.5 932 975 '@babel/helper-plugin-utils': 7.20.2 976 + dev: true 933 977 934 978 /@babel/runtime@7.20.6: 935 979 resolution: {integrity: sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==} 936 980 engines: {node: '>=6.9.0'} 937 981 dependencies: 938 982 regenerator-runtime: 0.13.11 983 + dev: true 939 984 940 985 /@babel/template@7.18.10: 941 986 resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} ··· 944 989 '@babel/code-frame': 7.18.6 945 990 '@babel/parser': 7.20.5 946 991 '@babel/types': 7.20.5 992 + dev: true 947 993 948 994 /@babel/template@7.22.15: 949 995 resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} ··· 952 998 '@babel/code-frame': 7.23.4 953 999 '@babel/parser': 7.23.4 954 1000 '@babel/types': 7.23.4 1001 + dev: true 955 1002 956 1003 /@babel/traverse@7.23.4: 957 1004 resolution: {integrity: sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==} ··· 969 1016 globals: 11.12.0 970 1017 transitivePeerDependencies: 971 1018 - supports-color 1019 + dev: true 972 1020 973 1021 /@babel/types@7.20.5: 974 1022 resolution: {integrity: sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==} ··· 977 1025 '@babel/helper-string-parser': 7.19.4 978 1026 '@babel/helper-validator-identifier': 7.19.1 979 1027 to-fast-properties: 2.0.0 1028 + dev: true 980 1029 981 1030 /@babel/types@7.23.4: 982 1031 resolution: {integrity: sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==} ··· 985 1034 '@babel/helper-string-parser': 7.23.4 986 1035 '@babel/helper-validator-identifier': 7.22.20 987 1036 to-fast-properties: 2.0.0 1037 + dev: true 988 1038 989 1039 /@changesets/apply-release-plan@6.1.4: 990 1040 resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} ··· 1392 1442 '@graphql-codegen/plugin-helpers': 5.0.0(graphql@16.8.1) 1393 1443 graphql: 16.8.1 1394 1444 tslib: 2.5.0 1445 + dev: true 1395 1446 1396 1447 /@graphql-codegen/cli@5.0.0(@types/node@18.15.11)(graphql@16.8.1)(typescript@5.3.3): 1397 1448 resolution: {integrity: sha512-A7J7+be/a6e+/ul2KI5sfJlpoqeqwX8EzktaKCeduyVKgOLA6W5t+NUGf6QumBDXU8PEOqXk3o3F+RAwCWOiqA==} ··· 1483 1534 '@graphql-tools/utils': 10.0.1(graphql@16.8.1) 1484 1535 graphql: 16.8.1 1485 1536 tslib: 2.5.0 1537 + dev: true 1486 1538 1487 1539 /@graphql-codegen/gql-tag-operations@4.0.1(graphql@16.8.1): 1488 1540 resolution: {integrity: sha512-qF6wIbBzW8BNT+wiVsBxrYOs2oYcsxQ7mRvCpfEI3HnNZMAST/uX76W8MqFEJvj4mw7NIDv7xYJAcAZIWM5LWw==} ··· 1512 1564 import-from: 4.0.0 1513 1565 lodash: 4.17.21 1514 1566 tslib: 2.5.0 1567 + dev: true 1515 1568 1516 1569 /@graphql-codegen/plugin-helpers@5.0.1(graphql@16.8.1): 1517 1570 resolution: {integrity: sha512-6L5sb9D8wptZhnhLLBcheSPU7Tg//DGWgc5tQBWX46KYTOTQHGqDpv50FxAJJOyFVJrveN9otWk9UT9/yfY4ww==} ··· 1536 1589 '@graphql-tools/utils': 10.0.1(graphql@16.8.1) 1537 1590 graphql: 16.8.1 1538 1591 tslib: 2.5.0 1592 + dev: true 1539 1593 1540 1594 /@graphql-codegen/typed-document-node@5.0.1(graphql@16.8.1): 1541 1595 resolution: {integrity: sha512-VFkhCuJnkgtbbgzoCAwTdJe2G1H6sd3LfCrDqWUrQe53y2ukfSb5Ov1PhAIkCBStKCMQBUY9YgGz9GKR40qQ8g==} ··· 1551 1605 transitivePeerDependencies: 1552 1606 - encoding 1553 1607 - supports-color 1608 + dev: true 1554 1609 1555 1610 /@graphql-codegen/typescript-operations@4.0.1(graphql@16.8.1): 1556 1611 resolution: {integrity: sha512-GpUWWdBVUec/Zqo23aFLBMrXYxN2irypHqDcKjN78JclDPdreasAEPcIpMfqf4MClvpmvDLy4ql+djVAwmkjbw==} ··· 1566 1621 transitivePeerDependencies: 1567 1622 - encoding 1568 1623 - supports-color 1624 + dev: true 1569 1625 1570 1626 /@graphql-codegen/typescript@4.0.1(graphql@16.8.1): 1571 1627 resolution: {integrity: sha512-3YziQ21dCVdnHb+Us1uDb3pA6eG5Chjv0uTK+bt9dXeMlwYBU8MbtzvQTo4qvzWVC1AxSOKj0rgfNu1xCXqJyA==} ··· 1581 1637 transitivePeerDependencies: 1582 1638 - encoding 1583 1639 - supports-color 1640 + dev: true 1584 1641 1585 1642 /@graphql-codegen/visitor-plugin-common@4.0.1(graphql@16.8.1): 1586 1643 resolution: {integrity: sha512-Bi/1z0nHg4QMsAqAJhds+ForyLtk7A3HQOlkrZNm3xEkY7lcBzPtiOTLBtvziwopBsXUxqeSwVjOOFPLS5Yw1Q==} ··· 1601 1658 transitivePeerDependencies: 1602 1659 - encoding 1603 1660 - supports-color 1661 + dev: true 1604 1662 1605 1663 /@graphql-tools/apollo-engine-loader@8.0.0(graphql@16.8.1): 1606 1664 resolution: {integrity: sha512-axQTbN5+Yxs1rJ6cWQBOfw3AEeC+fvIuZSfJLPLLvFJLj4pUm9fhxey/g6oQZAAQJqKPfw+tLDUQvnfvRK8Kmg==} ··· 1855 1913 '@graphql-tools/utils': 10.0.1(graphql@16.8.1) 1856 1914 graphql: 16.8.1 1857 1915 tslib: 2.5.0 1916 + dev: true 1858 1917 1859 1918 /@graphql-tools/optimize@2.0.0(graphql@16.8.1): 1860 1919 resolution: {integrity: sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==} ··· 1864 1923 dependencies: 1865 1924 graphql: 16.8.1 1866 1925 tslib: 2.5.0 1926 + dev: true 1867 1927 1868 1928 /@graphql-tools/prisma-loader@8.0.2(@types/node@18.15.11)(graphql@16.8.1): 1869 1929 resolution: {integrity: sha512-8d28bIB0bZ9Bj0UOz9sHagVPW+6AHeqvGljjERtwCnWl8OCQw2c2pNboYXISLYUG5ub76r4lDciLLTU+Ks7Q0w==} ··· 1911 1971 transitivePeerDependencies: 1912 1972 - encoding 1913 1973 - supports-color 1974 + dev: true 1914 1975 1915 1976 /@graphql-tools/schema@10.0.0(graphql@16.8.1): 1916 1977 resolution: {integrity: sha512-kf3qOXMFcMs2f/S8Y3A8fm/2w+GaHAkfr3Gnhh2LOug/JgpY/ywgFVxO3jOeSpSEdoYcDKLcXVjMigNbY4AdQg==} ··· 1923 1984 graphql: 16.8.1 1924 1985 tslib: 2.5.0 1925 1986 value-or-promise: 1.0.12 1987 + dev: true 1926 1988 1927 1989 /@graphql-tools/url-loader@8.0.0(@types/node@18.15.11)(graphql@16.8.1): 1928 1990 resolution: {integrity: sha512-rPc9oDzMnycvz+X+wrN3PLrhMBQkG4+sd8EzaFN6dypcssiefgWKToXtRKI8HHK68n2xEq1PyrOpkjHFJB+GwA==} ··· 1960 2022 '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) 1961 2023 graphql: 16.8.1 1962 2024 tslib: 2.5.0 2025 + dev: true 1963 2026 1964 2027 /@graphql-tools/utils@10.0.11(graphql@16.8.1): 1965 2028 resolution: {integrity: sha512-vVjXgKn6zjXIlYBd7yJxCVMYGb5j18gE3hx3Qw3mNsSEsYQXbJbPdlwb7Fc9FogsJei5AaqiQerqH4kAosp1nQ==} ··· 2008 2071 dependencies: 2009 2072 '@jridgewell/set-array': 1.1.2 2010 2073 '@jridgewell/sourcemap-codec': 1.4.14 2074 + dev: true 2011 2075 2012 2076 /@jridgewell/gen-mapping@0.3.2: 2013 2077 resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} ··· 2016 2080 '@jridgewell/set-array': 1.1.2 2017 2081 '@jridgewell/sourcemap-codec': 1.4.14 2018 2082 '@jridgewell/trace-mapping': 0.3.15 2083 + dev: true 2019 2084 2020 2085 /@jridgewell/resolve-uri@3.1.0: 2021 2086 resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 2022 2087 engines: {node: '>=6.0.0'} 2088 + dev: true 2023 2089 2024 2090 /@jridgewell/set-array@1.1.2: 2025 2091 resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 2026 2092 engines: {node: '>=6.0.0'} 2093 + dev: true 2027 2094 2028 2095 /@jridgewell/source-map@0.3.3: 2029 2096 resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==} ··· 2034 2101 2035 2102 /@jridgewell/sourcemap-codec@1.4.14: 2036 2103 resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 2104 + dev: true 2037 2105 2038 2106 /@jridgewell/sourcemap-codec@1.4.15: 2039 2107 resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 2108 + dev: true 2040 2109 2041 2110 /@jridgewell/trace-mapping@0.3.15: 2042 2111 resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} 2043 2112 dependencies: 2044 2113 '@jridgewell/resolve-uri': 3.1.0 2045 2114 '@jridgewell/sourcemap-codec': 1.4.14 2115 + dev: true 2046 2116 2047 2117 /@jridgewell/trace-mapping@0.3.20: 2048 2118 resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} 2049 2119 dependencies: 2050 2120 '@jridgewell/resolve-uri': 3.1.0 2051 2121 '@jridgewell/sourcemap-codec': 1.4.15 2122 + dev: true 2052 2123 2053 2124 /@jridgewell/trace-mapping@0.3.9: 2054 2125 resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} ··· 2557 2628 /ansi-regex@5.0.1: 2558 2629 resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 2559 2630 engines: {node: '>=8'} 2631 + dev: true 2560 2632 2561 2633 /ansi-regex@6.0.1: 2562 2634 resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} ··· 2568 2640 engines: {node: '>=4'} 2569 2641 dependencies: 2570 2642 color-convert: 1.9.3 2643 + dev: true 2571 2644 2572 2645 /ansi-styles@4.3.0: 2573 2646 resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 2574 2647 engines: {node: '>=8'} 2575 2648 dependencies: 2576 2649 color-convert: 2.0.1 2650 + dev: true 2577 2651 2578 2652 /ansi-styles@5.2.0: 2579 2653 resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} ··· 2628 2702 2629 2703 /asap@2.0.6: 2630 2704 resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} 2705 + dev: true 2631 2706 2632 2707 /asn1js@3.0.5: 2633 2708 resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} ··· 2654 2729 /auto-bind@4.0.0: 2655 2730 resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} 2656 2731 engines: {node: '>=8'} 2732 + dev: true 2657 2733 2658 2734 /available-typed-arrays@1.0.5: 2659 2735 resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} ··· 2662 2738 2663 2739 /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: 2664 2740 resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} 2741 + dev: true 2665 2742 2666 2743 /babel-preset-fbjs@3.4.0(@babel/core@7.20.5): 2667 2744 resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} ··· 2698 2775 babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 2699 2776 transitivePeerDependencies: 2700 2777 - supports-color 2778 + dev: true 2701 2779 2702 2780 /balanced-match@1.0.2: 2703 2781 resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 2782 + dev: true 2704 2783 2705 2784 /base64-js@1.5.1: 2706 2785 resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} ··· 2726 2805 dependencies: 2727 2806 balanced-match: 1.0.2 2728 2807 concat-map: 0.0.1 2808 + dev: true 2729 2809 2730 2810 /braces@3.0.2: 2731 2811 resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} ··· 2749 2829 electron-to-chromium: 1.4.284 2750 2830 node-releases: 2.0.6 2751 2831 update-browserslist-db: 1.0.10(browserslist@4.21.4) 2832 + dev: true 2752 2833 2753 2834 /browserslist@4.22.1: 2754 2835 resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} ··· 2765 2846 resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} 2766 2847 dependencies: 2767 2848 node-int64: 0.4.0 2849 + dev: true 2768 2850 2769 2851 /buffer-from@1.1.2: 2770 2852 resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} ··· 2814 2896 dependencies: 2815 2897 pascal-case: 3.1.2 2816 2898 tslib: 2.5.0 2899 + dev: true 2817 2900 2818 2901 /camelcase-keys@6.2.2: 2819 2902 resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} ··· 2827 2910 /camelcase@5.3.1: 2828 2911 resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 2829 2912 engines: {node: '>=6'} 2913 + dev: true 2830 2914 2831 2915 /caniuse-lite@1.0.30001436: 2832 2916 resolution: {integrity: sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==} 2917 + dev: true 2833 2918 2834 2919 /caniuse-lite@1.0.30001564: 2835 2920 resolution: {integrity: sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==} ··· 2841 2926 no-case: 3.0.4 2842 2927 tslib: 2.5.0 2843 2928 upper-case-first: 2.0.2 2929 + dev: true 2844 2930 2845 2931 /chai@4.3.10: 2846 2932 resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} ··· 2862 2948 ansi-styles: 3.2.1 2863 2949 escape-string-regexp: 1.0.5 2864 2950 supports-color: 5.5.0 2951 + dev: true 2865 2952 2866 2953 /chalk@4.1.2: 2867 2954 resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} ··· 2869 2956 dependencies: 2870 2957 ansi-styles: 4.3.0 2871 2958 supports-color: 7.2.0 2959 + dev: true 2872 2960 2873 2961 /chalk@5.3.0: 2874 2962 resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} ··· 2888 2976 title-case: 3.0.3 2889 2977 upper-case: 2.0.2 2890 2978 upper-case-first: 2.0.2 2979 + dev: true 2891 2980 2892 2981 /change-case@4.1.2: 2893 2982 resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} ··· 2904 2993 sentence-case: 3.0.4 2905 2994 snake-case: 3.0.4 2906 2995 tslib: 2.5.0 2996 + dev: true 2907 2997 2908 2998 /chardet@0.7.0: 2909 2999 resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} ··· 2971 3061 string-width: 4.2.3 2972 3062 strip-ansi: 6.0.1 2973 3063 wrap-ansi: 6.2.0 3064 + dev: true 2974 3065 2975 3066 /cliui@8.0.1: 2976 3067 resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} ··· 2990 3081 resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 2991 3082 dependencies: 2992 3083 color-name: 1.1.3 3084 + dev: true 2993 3085 2994 3086 /color-convert@2.0.1: 2995 3087 resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 2996 3088 engines: {node: '>=7.0.0'} 2997 3089 dependencies: 2998 3090 color-name: 1.1.4 3091 + dev: true 2999 3092 3000 3093 /color-name@1.1.3: 3001 3094 resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 3095 + dev: true 3002 3096 3003 3097 /color-name@1.1.4: 3004 3098 resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 3099 + dev: true 3005 3100 3006 3101 /colorette@2.0.20: 3007 3102 resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} ··· 3026 3121 /common-tags@1.8.2: 3027 3122 resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} 3028 3123 engines: {node: '>=4.0.0'} 3124 + dev: true 3029 3125 3030 3126 /concat-map@0.0.1: 3031 3127 resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 3128 + dev: true 3032 3129 3033 3130 /constant-case@3.0.4: 3034 3131 resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} ··· 3036 3133 no-case: 3.0.4 3037 3134 tslib: 2.5.0 3038 3135 upper-case: 2.0.2 3136 + dev: true 3039 3137 3040 3138 /convert-source-map@1.9.0: 3041 3139 resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 3140 + dev: true 3042 3141 3043 3142 /convert-source-map@2.0.0: 3044 3143 resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} ··· 3070 3169 node-fetch: 2.6.7 3071 3170 transitivePeerDependencies: 3072 3171 - encoding 3172 + dev: true 3073 3173 3074 3174 /cross-inspect@1.0.0: 3075 3175 resolution: {integrity: sha512-4PFfn4b5ZN6FMNGSZlyb7wUhuN8wvj8t/VQHZdM4JsDcruGJ8L2kf9zao98QIrBPFCpdk27qst/AGTl7pL3ypQ==} ··· 3143 3243 optional: true 3144 3244 dependencies: 3145 3245 ms: 2.1.2 3246 + dev: true 3146 3247 3147 3248 /decamelize-keys@1.1.1: 3148 3249 resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} ··· 3155 3256 /decamelize@1.2.0: 3156 3257 resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} 3157 3258 engines: {node: '>=0.10.0'} 3259 + dev: true 3158 3260 3159 3261 /deep-eql@4.1.3: 3160 3262 resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} ··· 3194 3296 /dependency-graph@0.11.0: 3195 3297 resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} 3196 3298 engines: {node: '>= 0.6.0'} 3299 + dev: true 3197 3300 3198 3301 /detect-indent@6.1.0: 3199 3302 resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} ··· 3222 3325 dependencies: 3223 3326 no-case: 3.0.4 3224 3327 tslib: 2.5.0 3328 + dev: true 3225 3329 3226 3330 /dotenv@16.0.3: 3227 3331 resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} ··· 3239 3343 3240 3344 /electron-to-chromium@1.4.284: 3241 3345 resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} 3346 + dev: true 3242 3347 3243 3348 /electron-to-chromium@1.4.593: 3244 3349 resolution: {integrity: sha512-c7+Hhj87zWmdpmjDONbvNKNo24tvmD4mjal1+qqTYTrlF0/sNpAcDlU0Ki84ftA/5yj3BF2QhSGEC0Rky6larg==} ··· 3246 3351 3247 3352 /emoji-regex@8.0.0: 3248 3353 resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 3354 + dev: true 3249 3355 3250 3356 /emoji-regex@9.2.2: 3251 3357 resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} ··· 3361 3467 /escalade@3.1.1: 3362 3468 resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 3363 3469 engines: {node: '>=6'} 3470 + dev: true 3364 3471 3365 3472 /escape-string-regexp@1.0.5: 3366 3473 resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 3367 3474 engines: {node: '>=0.8.0'} 3475 + dev: true 3368 3476 3369 3477 /esprima@4.0.1: 3370 3478 resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} ··· 3450 3558 resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} 3451 3559 dependencies: 3452 3560 bser: 2.1.1 3561 + dev: true 3453 3562 3454 3563 /fbjs-css-vars@1.0.2: 3455 3564 resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} 3565 + dev: true 3456 3566 3457 3567 /fbjs@3.0.4: 3458 3568 resolution: {integrity: sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==} ··· 3466 3576 ua-parser-js: 1.0.37 3467 3577 transitivePeerDependencies: 3468 3578 - encoding 3579 + dev: true 3469 3580 3470 3581 /figures@3.2.0: 3471 3582 resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} ··· 3487 3598 dependencies: 3488 3599 locate-path: 5.0.0 3489 3600 path-exists: 4.0.0 3601 + dev: true 3490 3602 3491 3603 /find-up@5.0.0: 3492 3604 resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} ··· 3538 3650 3539 3651 /fs.realpath@1.0.0: 3540 3652 resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 3653 + dev: true 3541 3654 3542 3655 /fsevents@2.3.3: 3543 3656 resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} ··· 3572 3685 /gensync@1.0.0-beta.2: 3573 3686 resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 3574 3687 engines: {node: '>=6.9.0'} 3688 + dev: true 3575 3689 3576 3690 /get-caller-file@2.0.5: 3577 3691 resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 3578 3692 engines: {node: 6.* || 8.* || >= 10.*} 3693 + dev: true 3579 3694 3580 3695 /get-func-name@2.0.2: 3581 3696 resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} ··· 3627 3742 minimatch: 3.1.2 3628 3743 once: 1.4.0 3629 3744 path-is-absolute: 1.0.1 3745 + dev: true 3630 3746 3631 3747 /globals@11.12.0: 3632 3748 resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 3633 3749 engines: {node: '>=4'} 3750 + dev: true 3634 3751 3635 3752 /globalthis@1.0.3: 3636 3753 resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} ··· 3733 3850 dependencies: 3734 3851 graphql: 16.8.1 3735 3852 tslib: 2.5.0 3853 + dev: true 3736 3854 3737 3855 /graphql-ws@5.14.2(graphql@16.8.1): 3738 3856 resolution: {integrity: sha512-LycmCwhZ+Op2GlHz4BZDsUYHKRiiUz+3r9wbhBATMETNlORQJAaFlAgTFoeRh6xQoQegwYwIylVD1Qns9/DA3w==} ··· 3759 3877 /has-flag@3.0.0: 3760 3878 resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 3761 3879 engines: {node: '>=4'} 3880 + dev: true 3762 3881 3763 3882 /has-flag@4.0.0: 3764 3883 resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 3765 3884 engines: {node: '>=8'} 3885 + dev: true 3766 3886 3767 3887 /has-property-descriptors@1.0.0: 3768 3888 resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} ··· 3806 3926 dependencies: 3807 3927 capital-case: 1.0.4 3808 3928 tslib: 2.5.0 3929 + dev: true 3809 3930 3810 3931 /hosted-git-info@2.8.9: 3811 3932 resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} ··· 3865 3986 /immutable@3.7.6: 3866 3987 resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} 3867 3988 engines: {node: '>=0.8.0'} 3989 + dev: true 3868 3990 3869 3991 /import-fresh@3.3.0: 3870 3992 resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} ··· 3877 3999 /import-from@4.0.0: 3878 4000 resolution: {integrity: sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==} 3879 4001 engines: {node: '>=12.2'} 4002 + dev: true 3880 4003 3881 4004 /indent-string@4.0.0: 3882 4005 resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} ··· 3888 4011 dependencies: 3889 4012 once: 1.4.0 3890 4013 wrappy: 1.0.2 4014 + dev: true 3891 4015 3892 4016 /inherits@2.0.4: 3893 4017 resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 4018 + dev: true 3894 4019 3895 4020 /inquirer@8.2.6: 3896 4021 resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} ··· 3926 4051 resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} 3927 4052 dependencies: 3928 4053 loose-envify: 1.4.0 4054 + dev: true 3929 4055 3930 4056 /is-absolute@1.0.0: 3931 4057 resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} ··· 3933 4059 dependencies: 3934 4060 is-relative: 1.0.0 3935 4061 is-windows: 1.0.2 4062 + dev: true 3936 4063 3937 4064 /is-array-buffer@3.0.2: 3938 4065 resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} ··· 3993 4120 /is-fullwidth-code-point@3.0.0: 3994 4121 resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 3995 4122 engines: {node: '>=8'} 4123 + dev: true 3996 4124 3997 4125 /is-fullwidth-code-point@4.0.0: 3998 4126 resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} ··· 4015 4143 resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} 4016 4144 dependencies: 4017 4145 tslib: 2.5.0 4146 + dev: true 4018 4147 4019 4148 /is-negative-zero@2.0.2: 4020 4149 resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} ··· 4051 4180 engines: {node: '>=0.10.0'} 4052 4181 dependencies: 4053 4182 is-unc-path: 1.0.0 4183 + dev: true 4054 4184 4055 4185 /is-shared-array-buffer@1.0.2: 4056 4186 resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} ··· 4100 4230 engines: {node: '>=0.10.0'} 4101 4231 dependencies: 4102 4232 unc-path-regex: 0.1.2 4233 + dev: true 4103 4234 4104 4235 /is-unicode-supported@0.1.0: 4105 4236 resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} ··· 4110 4241 resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} 4111 4242 dependencies: 4112 4243 tslib: 2.5.0 4244 + dev: true 4113 4245 4114 4246 /is-weakref@1.0.2: 4115 4247 resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} ··· 4120 4252 /is-windows@1.0.2: 4121 4253 resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 4122 4254 engines: {node: '>=0.10.0'} 4255 + dev: true 4123 4256 4124 4257 /isarray@2.0.5: 4125 4258 resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} ··· 4168 4301 resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 4169 4302 engines: {node: '>=4'} 4170 4303 hasBin: true 4304 + dev: true 4171 4305 4172 4306 /json-parse-even-better-errors@2.3.1: 4173 4307 resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} ··· 4195 4329 resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 4196 4330 engines: {node: '>=6'} 4197 4331 hasBin: true 4332 + dev: true 4198 4333 4199 4334 /jsonc-parser@3.2.0: 4200 4335 resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} ··· 4299 4434 engines: {node: '>=8'} 4300 4435 dependencies: 4301 4436 p-locate: 4.1.0 4437 + dev: true 4302 4438 4303 4439 /locate-path@6.0.0: 4304 4440 resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} ··· 4317 4453 4318 4454 /lodash@4.17.21: 4319 4455 resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 4456 + dev: true 4320 4457 4321 4458 /log-symbols@4.1.0: 4322 4459 resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} ··· 4363 4500 resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} 4364 4501 dependencies: 4365 4502 tslib: 2.5.0 4503 + dev: true 4366 4504 4367 4505 /lower-case@2.0.2: 4368 4506 resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} 4369 4507 dependencies: 4370 4508 tslib: 2.5.0 4509 + dev: true 4371 4510 4372 4511 /lru-cache@10.0.1: 4373 4512 resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} ··· 4391 4530 engines: {node: '>=10'} 4392 4531 dependencies: 4393 4532 yallist: 4.0.0 4533 + dev: true 4394 4534 4395 4535 /magic-string@0.30.5: 4396 4536 resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} ··· 4406 4546 /map-cache@0.2.2: 4407 4547 resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} 4408 4548 engines: {node: '>=0.10.0'} 4549 + dev: true 4409 4550 4410 4551 /map-obj@1.0.1: 4411 4552 resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} ··· 4494 4635 resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 4495 4636 dependencies: 4496 4637 brace-expansion: 1.1.11 4638 + dev: true 4497 4639 4498 4640 /minimatch@4.2.3: 4499 4641 resolution: {integrity: sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng==} ··· 4527 4669 4528 4670 /ms@2.1.2: 4529 4671 resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 4672 + dev: true 4530 4673 4531 4674 /mute-stream@0.0.8: 4532 4675 resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} ··· 4543 4686 dependencies: 4544 4687 lower-case: 2.0.2 4545 4688 tslib: 2.5.0 4689 + dev: true 4546 4690 4547 4691 /node-fetch@2.6.7: 4548 4692 resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} ··· 4557 4701 4558 4702 /node-int64@0.4.0: 4559 4703 resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} 4704 + dev: true 4560 4705 4561 4706 /node-releases@2.0.13: 4562 4707 resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} ··· 4564 4709 4565 4710 /node-releases@2.0.6: 4566 4711 resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} 4712 + dev: true 4567 4713 4568 4714 /normalize-package-data@2.5.0: 4569 4715 resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} ··· 4594 4740 /object-assign@4.1.1: 4595 4741 resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 4596 4742 engines: {node: '>=0.10.0'} 4743 + dev: true 4597 4744 4598 4745 /object-inspect@1.12.3: 4599 4746 resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} ··· 4618 4765 resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 4619 4766 dependencies: 4620 4767 wrappy: 1.0.2 4768 + dev: true 4621 4769 4622 4770 /onetime@5.1.2: 4623 4771 resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} ··· 4669 4817 engines: {node: '>=6'} 4670 4818 dependencies: 4671 4819 p-try: 2.2.0 4820 + dev: true 4672 4821 4673 4822 /p-limit@3.1.0: 4674 4823 resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} ··· 4689 4838 engines: {node: '>=8'} 4690 4839 dependencies: 4691 4840 p-limit: 2.3.0 4841 + dev: true 4692 4842 4693 4843 /p-locate@5.0.0: 4694 4844 resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} ··· 4712 4862 /p-try@2.2.0: 4713 4863 resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 4714 4864 engines: {node: '>=6'} 4865 + dev: true 4715 4866 4716 4867 /param-case@3.0.4: 4717 4868 resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} 4718 4869 dependencies: 4719 4870 dot-case: 3.0.4 4720 4871 tslib: 2.5.0 4872 + dev: true 4721 4873 4722 4874 /parent-module@1.0.1: 4723 4875 resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} ··· 4733 4885 is-absolute: 1.0.0 4734 4886 map-cache: 0.2.2 4735 4887 path-root: 0.1.1 4888 + dev: true 4736 4889 4737 4890 /parse-json@5.2.0: 4738 4891 resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} ··· 4749 4902 dependencies: 4750 4903 no-case: 3.0.4 4751 4904 tslib: 2.5.0 4905 + dev: true 4752 4906 4753 4907 /path-case@3.0.4: 4754 4908 resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} 4755 4909 dependencies: 4756 4910 dot-case: 3.0.4 4757 4911 tslib: 2.5.0 4912 + dev: true 4758 4913 4759 4914 /path-exists@4.0.0: 4760 4915 resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 4761 4916 engines: {node: '>=8'} 4917 + dev: true 4762 4918 4763 4919 /path-is-absolute@1.0.1: 4764 4920 resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 4765 4921 engines: {node: '>=0.10.0'} 4922 + dev: true 4766 4923 4767 4924 /path-key@3.1.1: 4768 4925 resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} ··· 4781 4938 /path-root-regex@0.1.2: 4782 4939 resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} 4783 4940 engines: {node: '>=0.10.0'} 4941 + dev: true 4784 4942 4785 4943 /path-root@0.1.1: 4786 4944 resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} 4787 4945 engines: {node: '>=0.10.0'} 4788 4946 dependencies: 4789 4947 path-root-regex: 0.1.2 4948 + dev: true 4790 4949 4791 4950 /path-type@4.0.0: 4792 4951 resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} ··· 4803 4962 4804 4963 /picocolors@1.0.0: 4805 4964 resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 4965 + dev: true 4806 4966 4807 4967 /picomatch@2.3.1: 4808 4968 resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} ··· 4873 5033 resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} 4874 5034 dependencies: 4875 5035 asap: 2.0.6 5036 + dev: true 4876 5037 4877 5038 /pseudomap@1.0.2: 4878 5039 resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} ··· 4967 5128 4968 5129 /regenerator-runtime@0.13.11: 4969 5130 resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} 5131 + dev: true 4970 5132 4971 5133 /regexp.prototype.flags@1.4.3: 4972 5134 resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} ··· 4985 5147 invariant: 2.2.4 4986 5148 transitivePeerDependencies: 4987 5149 - encoding 5150 + dev: true 4988 5151 4989 5152 /remedial@1.0.8: 4990 5153 resolution: {integrity: sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==} ··· 5001 5164 /require-directory@2.1.1: 5002 5165 resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 5003 5166 engines: {node: '>=0.10.0'} 5167 + dev: true 5004 5168 5005 5169 /require-main-filename@2.0.0: 5006 5170 resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} 5171 + dev: true 5007 5172 5008 5173 /resolve-from@4.0.0: 5009 5174 resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} ··· 5126 5291 hasBin: true 5127 5292 dependencies: 5128 5293 lru-cache: 6.0.0 5294 + dev: true 5129 5295 5130 5296 /sentence-case@3.0.4: 5131 5297 resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} ··· 5133 5299 no-case: 3.0.4 5134 5300 tslib: 2.5.0 5135 5301 upper-case-first: 2.0.2 5302 + dev: true 5136 5303 5137 5304 /serialize-javascript@6.0.1: 5138 5305 resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} ··· 5142 5309 5143 5310 /set-blocking@2.0.0: 5144 5311 resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} 5312 + dev: true 5145 5313 5146 5314 /set-function-length@1.1.1: 5147 5315 resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} ··· 5155 5323 5156 5324 /setimmediate@1.0.5: 5157 5325 resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} 5326 + dev: true 5158 5327 5159 5328 /shebang-command@1.2.0: 5160 5329 resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} ··· 5207 5376 5208 5377 /signedsource@1.0.0: 5209 5378 resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} 5379 + dev: true 5210 5380 5211 5381 /slash@3.0.0: 5212 5382 resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} ··· 5261 5431 dependencies: 5262 5432 dot-case: 3.0.4 5263 5433 tslib: 2.5.0 5434 + dev: true 5264 5435 5265 5436 /source-map-js@1.0.2: 5266 5437 resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} ··· 5312 5483 resolution: {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==} 5313 5484 dependencies: 5314 5485 tslib: 2.5.0 5486 + dev: true 5315 5487 5316 5488 /sprintf-js@1.0.3: 5317 5489 resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} ··· 5352 5524 emoji-regex: 8.0.0 5353 5525 is-fullwidth-code-point: 3.0.0 5354 5526 strip-ansi: 6.0.1 5527 + dev: true 5355 5528 5356 5529 /string-width@5.1.2: 5357 5530 resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} ··· 5398 5571 engines: {node: '>=8'} 5399 5572 dependencies: 5400 5573 ansi-regex: 5.0.1 5574 + dev: true 5401 5575 5402 5576 /strip-ansi@7.0.1: 5403 5577 resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} ··· 5434 5608 engines: {node: '>=4'} 5435 5609 dependencies: 5436 5610 has-flag: 3.0.0 5611 + dev: true 5437 5612 5438 5613 /supports-color@7.2.0: 5439 5614 resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 5440 5615 engines: {node: '>=8'} 5441 5616 dependencies: 5442 5617 has-flag: 4.0.0 5618 + dev: true 5443 5619 5444 5620 /supports-preserve-symlinks-flag@1.0.0: 5445 5621 resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} ··· 5450 5626 resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} 5451 5627 dependencies: 5452 5628 tslib: 2.5.0 5629 + dev: true 5453 5630 5454 5631 /term-size@2.2.1: 5455 5632 resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} ··· 5489 5666 resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} 5490 5667 dependencies: 5491 5668 tslib: 2.5.0 5669 + dev: true 5492 5670 5493 5671 /tmp@0.0.33: 5494 5672 resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} ··· 5500 5678 /to-fast-properties@2.0.0: 5501 5679 resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 5502 5680 engines: {node: '>=4'} 5681 + dev: true 5503 5682 5504 5683 /to-regex-range@5.0.1: 5505 5684 resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} ··· 5553 5732 5554 5733 /tslib@2.5.0: 5555 5734 resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} 5735 + dev: true 5556 5736 5557 5737 /tslib@2.6.2: 5558 5738 resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} ··· 5618 5798 5619 5799 /ua-parser-js@1.0.37: 5620 5800 resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} 5801 + dev: true 5621 5802 5622 5803 /ufo@1.3.1: 5623 5804 resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} ··· 5635 5816 /unc-path-regex@0.1.2: 5636 5817 resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} 5637 5818 engines: {node: '>=0.10.0'} 5819 + dev: true 5638 5820 5639 5821 /universalify@0.1.2: 5640 5822 resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} ··· 5657 5839 browserslist: 4.21.4 5658 5840 escalade: 3.1.1 5659 5841 picocolors: 1.0.0 5842 + dev: true 5660 5843 5661 5844 /update-browserslist-db@1.0.13(browserslist@4.22.1): 5662 5845 resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} ··· 5673 5856 resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} 5674 5857 dependencies: 5675 5858 tslib: 2.5.0 5859 + dev: true 5676 5860 5677 5861 /upper-case@2.0.2: 5678 5862 resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} 5679 5863 dependencies: 5680 5864 tslib: 2.5.0 5865 + dev: true 5681 5866 5682 5867 /urlpattern-polyfill@8.0.2: 5683 5868 resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} ··· 5717 5902 /value-or-promise@1.0.12: 5718 5903 resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} 5719 5904 engines: {node: '>=12'} 5905 + dev: true 5720 5906 5721 5907 /vite-node@0.34.6(@types/node@18.15.11): 5722 5908 resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} ··· 5886 6072 5887 6073 /which-module@2.0.0: 5888 6074 resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} 6075 + dev: true 5889 6076 5890 6077 /which-pm@2.0.0: 5891 6078 resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} ··· 5946 6133 ansi-styles: 4.3.0 5947 6134 string-width: 4.2.3 5948 6135 strip-ansi: 6.0.1 6136 + dev: true 5949 6137 5950 6138 /wrap-ansi@7.0.0: 5951 6139 resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} ··· 5967 6155 5968 6156 /wrappy@1.0.2: 5969 6157 resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 6158 + dev: true 5970 6159 5971 6160 /ws@8.14.2: 5972 6161 resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} ··· 5983 6172 5984 6173 /y18n@4.0.3: 5985 6174 resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} 6175 + dev: true 5986 6176 5987 6177 /y18n@5.0.8: 5988 6178 resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} ··· 5999 6189 6000 6190 /yallist@4.0.0: 6001 6191 resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 6192 + dev: true 6002 6193 6003 6194 /yaml-ast-parser@0.0.43: 6004 6195 resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} ··· 6015 6206 dependencies: 6016 6207 camelcase: 5.3.1 6017 6208 decamelize: 1.2.0 6209 + dev: true 6018 6210 6019 6211 /yargs-parser@21.1.1: 6020 6212 resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} ··· 6036 6228 which-module: 2.0.0 6037 6229 y18n: 4.0.3 6038 6230 yargs-parser: 18.1.3 6231 + dev: true 6039 6232 6040 6233 /yargs@17.7.1: 6041 6234 resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} ··· 6083 6276 transitivePeerDependencies: 6084 6277 - encoding 6085 6278 - graphql 6086 - - supports-color 6087 6279 dev: true
+6 -38
test/e2e/fragments.test.ts
··· 4 4 import fs from 'node:fs'; 5 5 import url from 'node:url'; 6 6 import ts from 'typescript/lib/tsserverlibrary'; 7 - import { waitForExpect } from './util'; 8 7 9 8 const __dirname = path.dirname(url.fileURLToPath(import.meta.url)); 10 9 ··· 12 11 describe('Fragments', () => { 13 12 const outFilePost = path.join(projectPath, 'Post.ts'); 14 13 const outFilePosts = path.join(projectPath, 'Posts.ts'); 15 - const genFilePost = path.join(projectPath, 'Post.generated.ts'); 16 - const genFilePosts = path.join(projectPath, 'Posts.generated.ts'); 17 - const baseGenFile = path.join(projectPath, '__generated__/baseGraphQLSP.ts'); 18 14 19 15 let server: TSServer; 20 16 beforeAll(async () => { ··· 25 21 try { 26 22 fs.unlinkSync(outFilePost); 27 23 fs.unlinkSync(outFilePosts); 28 - fs.unlinkSync(genFilePost); 29 - fs.unlinkSync(genFilePosts); 30 - fs.unlinkSync(baseGenFile); 31 24 } catch {} 32 25 }); 33 26 ··· 68 61 tmpfile: outFilePost, 69 62 } satisfies ts.server.protocol.SavetoRequestArgs); 70 63 71 - await waitForExpect(() => { 72 - expect(fs.readFileSync(outFilePost, 'utf-8')).toContain( 73 - `as typeof import('./Post.generated').PostFieldsFragmentDoc` 74 - ); 75 - }); 76 - 77 - await waitForExpect(() => { 78 - const generatedPostFileContents = fs.readFileSync(genFilePost, 'utf-8'); 79 - expect(generatedPostFileContents).toContain( 80 - 'export const PostFieldsFragmentDoc = ' 81 - ); 82 - expect(generatedPostFileContents).toContain( 83 - 'import * as Types from "./__generated__/baseGraphQLSP"' 84 - ); 85 - }); 86 - 87 64 server.sendCommand('saveto', { 88 65 file: outFilePosts, 89 66 tmpfile: outFilePosts, ··· 94 71 tmpfile: outFilePosts, 95 72 } satisfies ts.server.protocol.SavetoRequestArgs); 96 73 97 - await waitForExpect(() => { 98 - expect(fs.readFileSync(outFilePosts, 'utf-8')).toContain( 99 - `as typeof import('./Posts.generated').PostsListDocument` 100 - ); 101 - }); 102 - 103 - await waitForExpect(() => { 104 - const generatedPostsFileContents = fs.readFileSync(genFilePosts, 'utf-8'); 105 - expect(generatedPostsFileContents).toContain( 106 - 'export const PostsListDocument = ' 107 - ); 108 - expect(generatedPostsFileContents).toContain( 109 - 'import * as Types from "./__generated__/baseGraphQLSP"' 110 - ); 111 - }); 74 + await server.waitForResponse( 75 + response => 76 + response.type === 'event' && 77 + response.event === 'semanticDiag' && 78 + response.body.file === outFilePosts 79 + ); 112 80 113 81 const res = server.responses 114 82 .reverse()
-140
test/e2e/generate-types.test.ts
··· 1 - import { expect, afterAll, beforeAll, it, describe } from 'vitest'; 2 - import { TSServer } from './server'; 3 - import path from 'node:path'; 4 - import fs from 'node:fs'; 5 - import url from 'node:url'; 6 - import ts from 'typescript/lib/tsserverlibrary'; 7 - import { waitForExpect } from './util'; 8 - 9 - const __dirname = path.dirname(url.fileURLToPath(import.meta.url)); 10 - 11 - const projectPath = path.resolve(__dirname, 'fixture-project'); 12 - describe('Type-generation', () => { 13 - const outFile = path.join(projectPath, 'rename.ts'); 14 - const outFileComplex = path.join(projectPath, 'rename-complex.ts'); 15 - const genFile = path.join(projectPath, 'rename.generated.ts'); 16 - const genFileComplex = path.join(projectPath, 'rename-complex.generated.ts'); 17 - const baseGenFile = path.join(projectPath, '__generated__/baseGraphQLSP.ts'); 18 - 19 - let server: TSServer; 20 - beforeAll(async () => { 21 - server = new TSServer(projectPath, { debugLog: false }); 22 - }); 23 - 24 - afterAll(() => { 25 - try { 26 - fs.unlinkSync(outFile); 27 - fs.unlinkSync(outFileComplex); 28 - fs.unlinkSync(genFile); 29 - fs.unlinkSync(genFileComplex); 30 - fs.unlinkSync(baseGenFile); 31 - } catch {} 32 - }); 33 - 34 - it('gets renamed correctly', async () => { 35 - server.sendCommand('open', { 36 - file: outFile, 37 - fileContent: '// empty', 38 - scriptKindName: 'TS', 39 - } satisfies ts.server.protocol.OpenRequestArgs); 40 - 41 - server.sendCommand('updateOpen', { 42 - openFiles: [ 43 - { 44 - file: outFile, 45 - fileContent: fs.readFileSync( 46 - path.join(projectPath, 'fixtures/rename.ts'), 47 - 'utf-8' 48 - ), 49 - }, 50 - ], 51 - } satisfies ts.server.protocol.UpdateOpenRequestArgs); 52 - 53 - server.sendCommand('saveto', { 54 - file: outFile, 55 - tmpfile: outFile, 56 - } satisfies ts.server.protocol.SavetoRequestArgs); 57 - 58 - await waitForExpect(() => { 59 - expect(fs.readFileSync(outFile, 'utf-8')).toContain( 60 - `as typeof import('./rename.generated').PostsDocument` 61 - ); 62 - const generatedFileContents = fs.readFileSync(genFile, 'utf-8'); 63 - expect(generatedFileContents).toContain('export const PostsDocument = '); 64 - expect(generatedFileContents).toContain( 65 - 'import * as Types from "./__generated__/baseGraphQLSP"' 66 - ); 67 - }); 68 - 69 - expect(() => { 70 - fs.lstatSync(outFile); 71 - fs.lstatSync(genFile); 72 - fs.lstatSync(baseGenFile); 73 - }).not.toThrow(); 74 - 75 - server.sendCommand('updateOpen', { 76 - openFiles: [ 77 - { 78 - file: outFile, 79 - fileContent: fs 80 - .readFileSync(outFile, 'utf-8') 81 - .replace('query Posts', 'query PostList'), 82 - }, 83 - ], 84 - } satisfies ts.server.protocol.UpdateOpenRequestArgs); 85 - 86 - server.sendCommand('saveto', { 87 - file: outFile, 88 - tmpfile: outFile, 89 - } satisfies ts.server.protocol.SavetoRequestArgs); 90 - 91 - await waitForExpect(() => { 92 - expect(fs.readFileSync(outFile, 'utf-8')).toContain( 93 - `as typeof import('./rename.generated').PostListDocument` 94 - ); 95 - expect(fs.readFileSync(genFile, 'utf-8')).toContain( 96 - 'export const PostListDocument =' 97 - ); 98 - }); 99 - }, 20000); 100 - 101 - it('gets renamed correctly (complex)', async () => { 102 - server.sendCommand('open', { 103 - file: outFileComplex, 104 - fileContent: '// empty', 105 - scriptKindName: 'TS', 106 - } satisfies ts.server.protocol.OpenRequestArgs); 107 - 108 - server.sendCommand('updateOpen', { 109 - openFiles: [ 110 - { 111 - file: outFileComplex, 112 - fileContent: fs.readFileSync( 113 - path.join(projectPath, 'fixtures/rename-complex.ts'), 114 - 'utf-8' 115 - ), 116 - }, 117 - ], 118 - } satisfies ts.server.protocol.UpdateOpenRequestArgs); 119 - 120 - server.sendCommand('saveto', { 121 - file: outFileComplex, 122 - tmpfile: outFileComplex, 123 - } satisfies ts.server.protocol.SavetoRequestArgs); 124 - 125 - server.sendCommand('saveto', { 126 - file: outFileComplex, 127 - tmpfile: outFileComplex, 128 - } satisfies ts.server.protocol.SavetoRequestArgs); 129 - 130 - await waitForExpect(() => { 131 - const contents = fs.readFileSync(outFileComplex, 'utf-8'); 132 - expect(contents).toContain(` id 133 - } 134 - \` as typeof import('./rename-complex.generated').PostFieldsFragmentDoc`); 135 - expect(contents).toContain(` title 136 - } 137 - \` as typeof import('./rename-complex.generated').Post2FieldsFragmentDoc`); 138 - }); 139 - }, 30000); 140 - });