From 2bdd08ec0a35c60f94e0844ae4e3c5d86361a597 Mon Sep 17 00:00:00 2001 From: Stijn Van Hulle Date: Mon, 30 Sep 2024 22:03:51 +0200 Subject: [PATCH] Internal documentation(Plugin, CLI, ...) part 1 (#1221) * docs: add mermaid graphs * docs: more documentation for client and ts plugin * chore: format --- .gitignore | 1 + docs/.vitepress/config.ts | 5 + docs/.vitepress/mermaid.ts | 103 ++ docs/.vitepress/theme/style.css | 35 +- docs/blog/v3.md | 3 + docs/changelog.md | 2 +- docs/comparison.md | 39 - docs/getting-started/configure.md | 40 +- docs/knowledge-base/plugins/index.md | 103 ++ docs/package.json | 2 + docs/plugins/core/barrelTypes.md | 10 + docs/plugins/core/exclude.md | 15 + docs/plugins/core/generators.md | 0 docs/plugins/core/group.md | 26 + docs/plugins/core/groupTypes.md | 1 + docs/plugins/core/include.md | 15 + docs/plugins/core/override.md | 15 + docs/plugins/core/transformers.md | 0 docs/plugins/plugin-client/index.md | 275 ++---- docs/plugins/plugin-oas/index.md | 36 +- docs/plugins/plugin-redoc/index.md | 3 +- docs/plugins/plugin-ts/index.md | 299 +++--- examples/client/kubb.config.ts | 6 +- examples/react-query/package.json | 2 +- packages/cli/src/generate.ts | 6 +- packages/core/src/FileManager.ts | 3 +- packages/core/src/PluginManager.ts | 44 +- packages/core/src/types.ts | 27 +- packages/oas/package.json | 2 +- packages/plugin-client/src/plugin.ts | 1 - packages/plugin-client/src/types.ts | 9 +- packages/plugin-ts/src/plugin.ts | 15 +- packages/plugin-ts/src/types.ts | 23 +- pnpm-lock.yaml | 1299 +++++++++++++++++++++++++- 34 files changed, 1856 insertions(+), 609 deletions(-) create mode 100644 docs/.vitepress/mermaid.ts delete mode 100644 docs/comparison.md create mode 100644 docs/plugins/core/barrelTypes.md create mode 100644 docs/plugins/core/exclude.md create mode 100644 docs/plugins/core/generators.md create mode 100644 docs/plugins/core/group.md create mode 100644 docs/plugins/core/groupTypes.md create mode 100644 docs/plugins/core/include.md create mode 100644 docs/plugins/core/override.md create mode 100644 docs/plugins/core/transformers.md diff --git a/.gitignore b/.gitignore index f9d86bb1a..d75c404c3 100755 --- a/.gitignore +++ b/.gitignore @@ -48,6 +48,7 @@ test.json .next docs/.vitepress/cache/** docs/.vitepress/dist/** +docs/.vitepress/graphs/** !__snapshots__ kubb-files.json kubb.log diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 5ee159be2..1a26e67a7 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -5,6 +5,9 @@ import { groupIconMdPlugin, groupIconVitePlugin, localIconLoader } from 'vitepre import { transformerTwoslash } from '@shikijs/vitepress-twoslash' import { SitemapStream } from 'sitemap' import { defineConfig } from 'vitepress' + +import { renderMermaidGraphsPlugin } from './mermaid' +import { transposeTables } from './transposeTables.ts' import { transposeTables } from './transposeTables.ts' import { version } from '../../packages/core/package.json' @@ -36,6 +39,7 @@ const knowledgeBaseSidebar = [ { text: 'Plugins', collapsed: false, + link: '/knowledge-base/plugins/', items: [ { text: 'Plugin system', @@ -658,6 +662,7 @@ export default defineConfig({ }, vite: { plugins: [ + renderMermaidGraphsPlugin(), groupIconVitePlugin({ customIcon: { 'kubb.config.ts': localIconLoader(import.meta.url, '../public/logo.svg'), diff --git a/docs/.vitepress/mermaid.ts b/docs/.vitepress/mermaid.ts new file mode 100644 index 000000000..1492a8003 --- /dev/null +++ b/docs/.vitepress/mermaid.ts @@ -0,0 +1,103 @@ +import { createHash } from 'node:crypto' +import { fileURLToPath } from 'node:url' +import { promisify } from 'node:util' +import { readdir, mkdir, readFile, writeFile } from 'node:fs/promises' +import { run } from '@mermaid-js/mermaid-cli' + +import type { Plugin } from 'vite' + +async function getFilesInDirectory(directory: URL): Promise { + return (await readdir(directory)).filter((file) => file[0] !== '.') +} + +const graphsDirectory = new URL('graphs/', import.meta.url) + +const mermaidRegExp = /^```mermaid\n([\S\s]*?)\n```/gm +const greaterThanRegExp = />/g +const svgIdRegExp = /my-svg/g +const styleTagRegExp = / + +
+
+ hookFirst +
+
+ hookForPlugin +
+
+ hookParallel +
+
+ hookSeq +
+
+ +```mermaid +--- +config: + layout: elk +--- +flowchart + classDef default fill:#e1e1e1, color:#000; + classDef hookFirst fill:#ff6565,stroke:#000; + classDef hookForPlugin fill:#f58517,stroke:#000; + classDef hookParallel fill:#5bff89,stroke:#000; + classDef hookSeq fill:#ffee55,stroke:#f00; + + buildEnd("buildEnd"):::hookParallel + click buildEnd "#buildend" _parent + + buildStart("buildStart"):::hookParallel + click buildStart "#buildstart" _parent + + resolvePath("resolvePath"):::hookForPlugin + click resolvePath "#resolvePath" _parent + + resolveName("resolveName"):::hookForPlugin + click resolveName "#resolveName" _parent + + safeBuild +--> setup +--> read +--> clean +--> pre + +buildStart +--> createBarrelFiles +--> processFiles +--> post +--> buildEnd +--> clear + +subgraph plugin[ Plugin x ] +pre +.-> buildStart + +name +options +pre +post +context +resolvePath +resolveName +buildEnd +buildStart +end +``` + +```mermaid +flowchart LR + orderFiles + --> processFile + .-> getSource + .-> write + .-> processFile +``` diff --git a/docs/package.json b/docs/package.json index 0bfd897bd..2e94c4428 100644 --- a/docs/package.json +++ b/docs/package.json @@ -22,6 +22,7 @@ }, "dependencies": { "@shikijs/vitepress-twoslash": "^1.21.0", + "mermaid": "^11.2.1", "sitemap": "^8.0.0", "vitepress": "^1.3.4", "vitepress-plugin-group-icons": "^1.2.4", @@ -43,6 +44,7 @@ "@kubb/plugin-vue-query": "workspace:*", "@kubb/plugin-zod": "workspace:*", "@kubb/react": "workspace:*", + "@mermaid-js/mermaid-cli": "^11.2.0", "@types/node": "^20.16.10", "@types/react": "^18.3.10", "cross-env": "^7.0.3", diff --git a/docs/plugins/core/barrelTypes.md b/docs/plugins/core/barrelTypes.md new file mode 100644 index 000000000..f1a96b22a --- /dev/null +++ b/docs/plugins/core/barrelTypes.md @@ -0,0 +1,10 @@ +::: code-group +```typescript [all] +export * from "./gen/petService.ts" +``` +```typescript [named] +export { PetService } from "./gen/petService.ts" +``` +```typescript [false] +``` +::: diff --git a/docs/plugins/core/exclude.md b/docs/plugins/core/exclude.md new file mode 100644 index 000000000..2e9d642ac --- /dev/null +++ b/docs/plugins/core/exclude.md @@ -0,0 +1,15 @@ +Array containing exclude parameters to exclude/skip tags/operations/methods/paths. + +| | | +|----------:|:-----------------| +| Type: | `Array` | +| Required: | `false` | + + +```typescript [Exclude] +export type Exclude = { + type: 'tag' | 'operationId' | 'path' | 'method' + pattern: string | RegExp +} +``` + diff --git a/docs/plugins/core/generators.md b/docs/plugins/core/generators.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/plugins/core/group.md b/docs/plugins/core/group.md new file mode 100644 index 000000000..aa962c8ad --- /dev/null +++ b/docs/plugins/core/group.md @@ -0,0 +1,26 @@ +Grouping makes it possible to combine files in a folder based on specific `type`. + +Imagine you have the following setup: + +```typescript +group: { + type: 'tag', + name({ group }){ + return `${group}Controller` + } +} +``` +That will create a structure like this: +``` +. +├── src/ +│ └── petController/ +│ │ ├── addPet.ts +│ │ └── getPet.ts +│ └── storeController/ +│ ├── createStore.ts +│ └── getStoreById.ts +├── petStore.yaml +├── kubb.config.ts +└── package.json +``` diff --git a/docs/plugins/core/groupTypes.md b/docs/plugins/core/groupTypes.md new file mode 100644 index 000000000..af05d40ff --- /dev/null +++ b/docs/plugins/core/groupTypes.md @@ -0,0 +1 @@ +- `'tag'`: Use of operation.getTags().at(0)?.name diff --git a/docs/plugins/core/include.md b/docs/plugins/core/include.md new file mode 100644 index 000000000..ae0200b09 --- /dev/null +++ b/docs/plugins/core/include.md @@ -0,0 +1,15 @@ +Array containing include parameters to include tags/operations/methods/paths. + +| | | +|----------:|:-----------------| +| Type: | `Array` | +| Required: | `false` | + +```typescript [Include] +export type Include = { + type: 'tag' | 'operationId' | 'path' | 'method' + pattern: string | RegExp +} +``` + + diff --git a/docs/plugins/core/override.md b/docs/plugins/core/override.md new file mode 100644 index 000000000..6d0ade6fe --- /dev/null +++ b/docs/plugins/core/override.md @@ -0,0 +1,15 @@ +Array containing override parameters to override `options` based on tags/operations/methods/paths. + +| | | +|----------:|:------------------| +| Type: | `Array` | +| Required: | `false` | + + +```typescript [Override] +export type Override = { + type: 'tag' | 'operationId' | 'path' | 'method' + pattern: string | RegExp + options: PluginOptions +} +``` diff --git a/docs/plugins/core/transformers.md b/docs/plugins/core/transformers.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/plugins/plugin-client/index.md b/docs/plugins/plugin-client/index.md index d43d518d8..b2612f8a8 100644 --- a/docs/plugins/plugin-client/index.md +++ b/docs/plugins/plugin-client/index.md @@ -7,7 +7,7 @@ outline: deep # @kubb/plugin-client -With the Client plugin you can generate [Axios](https://axios-http.com/docs/intro) API controllers. +The Client plugin enables you to generate [Axios](https://axios-http.com/docs/intro) API controllers, simplifying the process of handling API requests and improving integration between frontend and backend services. ## Installation @@ -32,10 +32,14 @@ yarn add @kubb/plugin-client ## Options ### output +Specify the export location for the files and define the behavior of the output. #### output.path -Output to save the generated files. +Path to the output folder or file that will contain the generated code. + +> [!TIP] +> if `output.path` is a file, `group` cannot be used. | | | |----------:|:------------| @@ -43,76 +47,17 @@ Output to save the generated files. | Required: | `true` | | Default: | `'clients'` | -```typescript -import { pluginClient } from '@kubb/plugin-client' - -const plugin = pluginClient({ - output: { - path: './axios', - }, -}) -``` - -#### output.exportAs - -Name to be used for the `export * as {{exportAs}} from './'`. - -| | | -|----------:|:---------------| -| Type: | `string` | -| Required: | `false` | - -```typescript -import { pluginClient } from '@kubb/plugin-client' - -const plugin = pluginClient({ - output: { - path: './axios', - exportAs: 'clients', - }, -}) -``` - -#### output.extName - -Add an extension to the generated imports and exports, default it will not use an extension. - -| | | -|----------:|:-------------------| -| Type: | `KubbFile.Extname` | -| Required: | `false` | - -```typescript -import { pluginClient } from '@kubb/plugin-client' - -const plugin = pluginClient({ - output: { - path: './axios', - extName: '.js', - }, -}) -``` - -#### output.exportType - -Define what needs to exported, here you can also disable the export of barrel files. +#### output.barrelType -| | | -|----------:|:--------------------------------------| -| Type: | `'barrel' \| 'barrelNamed' \| false ` | -| Required: | `false` | -| Default: | `'barrelNamed'` | +Define what needs to be exported, here you can also disable the export of barrel files. -```typescript -import { pluginClient } from '@kubb/plugin-client' +| | | +|----------:|:----------------------------| +| Type: | `'all' \| 'named' \| false` | +| Required: | `false` | +| Default: | `'named'` | -const plugin = pluginClient({ - output: { - path: './client', - exportType: 'barrel', - }, -}) -``` + #### output.banner Add a banner text in the beginning of every file. @@ -122,17 +67,6 @@ Add a banner text in the beginning of every file. | Type: | `string` | | Required: | `false` | -```typescript -import { pluginClient } from '@kubb/plugin-client' - -const plugin = pluginClient({ - output: { - path: './client', - banner: '/* eslint-disable no-alert, no-console */' - }, -}) -``` - #### output.footer Add a footer text in the beginning of every file. @@ -146,69 +80,46 @@ import { pluginClient } from '@kubb/plugin-client' const plugin = pluginClient({ output: { - path: './client', + path: './axios', + barrelType: 'named', + banner: '/* eslint-disable no-alert, no-console */', footer: '' }, }) ``` ### group - -Group the clients based on the provided name. + #### group.type - -Tag will group based on the operation tag inside the Swagger file. +Define a type where to group the files on. | | | |----------:|:--------| | Type: | `'tag'` | | Required: | `true` | -#### group.output -> [!TIP] -> When defining a custom output path, you should also update `output.path` to contain the same root path. - - -::: v-pre -Relative path to save the grouped clients. -`{{tag}}` will be replaced by the current tagName. -::: - -::: v-pre - -| | | -|----------:|:------------------------------| -| Type: | `string` | -| Required: | `false` | -| Default: | `'${output}/{{tag}}Controller'` | + -::: +#### group.name -#### group.exportAs +Return the name of a group based on the group name, this will be used for the file and name generation. -::: v-pre -Name to be used for the `export * as {{exportAs}} from './` -::: +| | | +|----------:|:------------------------------------| +| Type: | `(context: GroupContext) => string` | +| Required: | `false` | +| Default: | `(ctx) => '${ctx.group}Controller'` | -::: v-pre - -| | | -|----------:|:-------------------| -| Type: | `string` | -| Required: | `false` | -| Default: | `'{{tag}}Service'` | - -::: ```typescript import { pluginClient } from '@kubb/plugin-client' const plugin = pluginClient({ - output: { - path: './clients/axios' + group: { + type: 'tag', + name: (ctx) => `${ctx.group}Controller` }, - group: { type: 'tag', output: './clients/axios/{{tag}}Service' }, }) ``` @@ -216,8 +127,10 @@ const plugin = pluginClient({ Path to the client import path that will be used to do the API calls.
It will be used as `import client from '${client.importPath}'`.
-It allow both relative and absolute path. the path will be applied as is, -so relative path should be based on the file being generated. +It allows both relative and absolute path but be aware that we will not change the path. + +> [!TIP] +> Use of default exports as `export default client = ()=>{}` | | | |----------:|:-------------------------------| @@ -237,7 +150,6 @@ const plugin = pluginClient({ ``` ### operations - Create `operations.ts` file with all operations grouped by methods. | | | @@ -257,13 +169,19 @@ const plugin = pluginClient({ ### dataReturnType -ReturnType that needs to be used when calling client(). +ReturnType that will be used when calling the client. -`'data'` will return ResponseConfig[data].
-`'full'` will return ResponseConfig. +| | | +|----------:|:-------------------| +| Type: | `'data' \| 'full'` | +| Required: | `false` | +| Default: | `'data'` | -::: code-group +- `'data'` will return ResponseConfig[data].
+- `'full'` will return ResponseConfig. + +::: code-group ```typescript ['data'] export async function getPetById( petId: GetPetByIdPathParams, @@ -279,16 +197,8 @@ export async function getPetById( ... } ``` - ::: -| | | -|----------:|:-------------------| -| Type: | `'data' \| 'full'` | -| Required: | `false` | -| Default: | `'data'` | - - ```typescript import { pluginClient } from '@kubb/plugin-client' @@ -301,11 +211,17 @@ const plugin = pluginClient({ How to pass your pathParams. -`'object'` will return the pathParams as an object.
-`'inline'` will return the pathParams as comma separated params. +| | | +|----------:|:-----------------------| +| Type: | `'object' \| 'inline'` | +| Required: | `false` | +| Default: | `'data'` | + -::: code-group +- `'object'` will return the pathParams as an object.
+- `'inline'` will return the pathParams as comma separated params. +::: code-group ```typescript ['object'] export async function getPetById( { petId }: GetPetByIdPathParams, @@ -321,17 +237,8 @@ export async function getPetById( ... } ``` - ::: - -| | | -|----------:|:-----------------------| -| Type: | `'object' \| 'inline'` | -| Required: | `false` | -| Default: | `'data'` | - - ```typescript import { pluginClient } from '@kubb/plugin-client' @@ -342,7 +249,6 @@ const plugin = pluginClient({ ### parser Which parser can be used before returning the data. -`'zod'` will use `@kubb/plugin-zod` to parse the data. | | | |----------:|:--------------------| @@ -350,6 +256,7 @@ Which parser can be used before returning the data. | Required: | `false` | | Default: | `'client'` | +- `'zod'` will use `@kubb/plugin-zod` to parse the data. ```typescript import { pluginClient } from '@kubb/plugin-client' @@ -360,22 +267,7 @@ const plugin = pluginClient({ ``` ### include - -Array containing include parameters to include tags/operations/methods/paths. - -```typescript [Include] -export type Include = { - type: 'tag' | 'operationId' | 'path' | 'method' - pattern: string | RegExp -} -``` - - -| | | -|----------:|:-----------------| -| Type: | `Array` | -| Required: | `false` | - + ```typescript import { pluginClient } from '@kubb/plugin-client' @@ -391,21 +283,7 @@ const plugin = pluginClient({ ``` ### exclude - -Array containing exclude parameters to exclude/skip tags/operations/methods/paths. - -```typescript [Exclude] -export type Exclude = { - type: 'tag' | 'operationId' | 'path' | 'method' - pattern: string | RegExp -} -``` - -| | | -|----------:|:-----------------| -| Type: | `Array` | -| Required: | `false` | - + ```typescript import { pluginClient } from '@kubb/plugin-client' @@ -421,23 +299,7 @@ const plugin = pluginClient({ ``` ### override - -Array containing override parameters to override `options` based on tags/operations/methods/paths. - - -```typescript [Override] -export type Override = { - type: 'tag' | 'operationId' | 'path' | 'method' - pattern: string | RegExp - options: PluginOptions -} -``` - -| | | -|----------:|:------------------| -| Type: | `Array` | -| Required: | `false` | - + ```typescript import { pluginClient } from '@kubb/plugin-client' @@ -455,17 +317,30 @@ const plugin = pluginClient({ }) ``` +### generators + + +| | | +|----------:|:-----------------------------------------------------------------------------| +| Type: | `Array>` | +| Required: | `false` | + + ### transformers + #### transformers.name Customize the names based on the type that is provided by the plugin. +| | | +|----------:|:------------------------------------------------------------------------------| +| Type: | `(name: string, type?: ResolveType) => string` | +| Required: | `false` | -| | | -|----------:|:--------------------------------------------------------------------| -| Type: | `(name: string, type?: "function" \| "type" \| "file" ) => string` | -| Required: | `false` | +```typescript +type ResolveType = 'file' | 'function' | 'type' | 'const' +``` ```typescript import { pluginClient } from '@kubb/plugin-client' @@ -503,7 +378,7 @@ export default defineConfig({ }, group: { type: 'tag', - output: './clients/axios/{{tag}}Service', + name: ({ group }) => `${group}Service`, }, exclude: [ { diff --git a/docs/plugins/plugin-oas/index.md b/docs/plugins/plugin-oas/index.md index f2e797aa7..62223e943 100644 --- a/docs/plugins/plugin-oas/index.md +++ b/docs/plugins/plugin-oas/index.md @@ -168,11 +168,7 @@ const plugin = pluginOas({ ::: ### generators -Define some generators to create files based on the operation and/or schema. See `createGenerator`. - -All plugin are using generators to create files based on the OperationGenerator and SchemaGenerators. - -An empty array will result in no schema's being generated, in v2 of Kubb we used `output: false`. +Define some generators to create files based on the operation and/or schema. See `createGenerator`. All plugin are using generators to create files based on the OperationGenerator and SchemaGenerators. An empty array will result in no schema's being generated, in v2 of Kubb we used `output: false`. ::: info @@ -193,36 +189,6 @@ const plugin = pluginOas({ ``` ::: -### experimentalFilter - -::: info - -```typescript -import { pluginOas } from '@kubb/plugin-oas' - -const plugin = pluginOas({ - experimentalFilter: { - methods: ['get'], - }, -}) -``` -::: - -### experimentalSort - -::: info - -```typescript -import { pluginOas } from '@kubb/plugin-oas' - -const plugin = pluginOas({ - experimentalSort: { - properties: ['description', 'default', 'type'] - }, -}) -``` -::: - ## Example ```typescript diff --git a/docs/plugins/plugin-redoc/index.md b/docs/plugins/plugin-redoc/index.md index aec6635c0..814290315 100644 --- a/docs/plugins/plugin-redoc/index.md +++ b/docs/plugins/plugin-redoc/index.md @@ -35,7 +35,8 @@ yarn add @kubb/plugin-redoc ### output #### output.path -Output for the generated doc, [https://redocly.com/](https://redocly.com/) is being used for the generation. +Output for the generated doc. +For the generation we are using [https://redocly.com/](https://redocly.com/). | | | |----------:|:---------------| diff --git a/docs/plugins/plugin-ts/index.md b/docs/plugins/plugin-ts/index.md index 5ed6933ab..7542a9639 100644 --- a/docs/plugins/plugin-ts/index.md +++ b/docs/plugins/plugin-ts/index.md @@ -7,10 +7,9 @@ outline: deep # @kubb/plugin-ts -With the TypeScript plugin you can create [TypeScript](https://www.typescriptlang.org/) types based on a Swagger file. +With the TypeScript plugin you can create [TypeScript](https://www.typescriptlang.org/) types. ## Installation - ::: code-group ```shell [bun] @@ -28,77 +27,53 @@ npm install @kubb/plugin-ts ```shell [yarn] yarn add @kubb/plugin-ts ``` - ::: ## Options ### output +Specify the export location for the files and define the behavior of the output. #### output.path -Relative path to save the TypeScript types.
-When output is a file it will save all models inside that file else it will create a file per schema item. +Path to the output folder or file that will contain the generated code. -::: info -Type: `string`
-Default: `'types'` +> [!TIP] +> if `output.path` is a file, `group` cannot be used. -```typescript -import { pluginTs } from '@kubb/plugin-ts' +| | | +|----------:|:----------| +| Type: | `string` | +| Required: | `true` | +| Default: | `'types'` | -const plugin = pluginTs({ - output: { - path: './models', - }, -}) -``` -::: - -#### output.exportAs +#### output.barrelType -Name to be used for the `export * as {{exportAs}} from './'` +Define what needs to be exported, here you can also disable the export of barrel files. -::: info -Type: `string`
+| | | +|----------:|:----------------------------| +| Type: | `'all' \| 'named' \| false` | +| Required: | `false` | +| Default: | `'named'` | -```typescript -import { pluginTs } from '@kubb/plugin-ts' + -const plugin = pluginTs({ - output: { - path: './models', - exportAs: 'models', - }, -}) -``` -::: +#### output.banner +Add a banner text in the beginning of every file. -#### output.extName +| | | +|----------:|:--------------------------------------| +| Type: | `string` | +| Required: | `false` | -Add an extension to the generated imports and exports, default it will not use an extension +#### output.footer +Add a footer text in the beginning of every file. -::: info -Type: `string`
- -```typescript -import { pluginTs } from '@kubb/plugin-ts' - -const plugin = pluginTs({ - output: { - path: './models', - extName: '.js', - }, -}) -``` -::: - -#### output.exportType - -Define what needs to exported, here you can also disable the export of barrel files - -::: info -Type: `'barrel' | 'barrelNamed' | false`
+| | | +|----------:|:--------------------------------------| +| Type: | `string` | +| Required: | `false` | ```typescript import { pluginTs } from '@kubb/plugin-ts' @@ -106,60 +81,61 @@ import { pluginTs } from '@kubb/plugin-ts' const plugin = pluginTs({ output: { path: './types', - exportType: 'barrel', + barrelType: 'named', + banner: '/* eslint-disable no-alert, no-console */', + footer: '' }, }) ``` -::: - ### group - -Group the TypeScript types based on the provided name. + #### group.type +Define a type where to group the files on. -Tag will group based on the operation tag inside the Swagger file. +| | | +|----------:|:--------| +| Type: | `'tag'` | +| Required: | `true` | -Type: `'tag'`
-Required: `true` + -#### group.output -> [!TIP] -> When defining a custom output path, you should also update `output.path` to contain the same root path. +#### group.name -::: v-pre -Relative path to save the grouped TypeScript Types. -`{{tag}}` will be replaced by the current tagName. -::: +Return the name of a group based on the group name, this will be used for the file and name generation. -::: v-pre -Type: `string`
-Example: `models/{{tag}}Controller` => `models/PetController`
-Default: `'${output}/{{tag}}Controller'` -::: +| | | +|----------:|:------------------------------------| +| Type: | `(context: GroupContext) => string` | +| Required: | `false` | +| Default: | `(ctx) => '${ctx.group}Controller'` | -::: info ```typescript import { pluginTs } from '@kubb/plugin-ts' const plugin = pluginTs({ - output: { - path: './types' + group: { + type: 'tag', + name: (ctx) => `${ctx.group}Controller` }, - group: { type: 'tag', output: './types/{{tag}}Controller' }, }) ``` -::: ### enumType -Choose to use `enum` or `as const` for enums.
-`asConst` will use camelCase for the naming.
-`asPascalConst` will use PascalCase for the naming. +Choose to use `enum` or `as const` for enums. + +| | | +|----------:|:---------------------------------------------------------------------| +| Type: | `'enum' \| 'asConst' \| 'asPascalConst' \| 'constEnum' \| 'literal'` | +| Required: | `false` | +| Default: | `'asConst'` | -::: info TYPE + +- `asConst` will use camelCase for the naming. +- `asPascalConst` will use PascalCase for the naming. ::: code-group @@ -194,14 +170,8 @@ const enum PetType { ```typescript ['literal'] type PetType = 'dog' | 'cat' ``` - ::: -::: info - -Type: `'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal'`
-Default: `'asConst'` - ```typescript import { pluginTs } from '@kubb/plugin-ts' @@ -209,18 +179,16 @@ const plugin = pluginTs({ enumType: 'enum', }) ``` -::: ### enumSuffix - Set a suffix for the generated enums. -::: info TYPE +| | | +|----------:|:------------------------------------| +| Type: | `string` | +| Required: | `false` | +| Default: | `''` | -::: info - -Type: `string`
-Default: `''` ```typescript import { pluginTs } from '@kubb/plugin-ts' @@ -229,13 +197,15 @@ const plugin = pluginTs({ enumSuffix: 'Enum', }) ``` -::: ### dateType - Choose to use `date` or `datetime` as JavaScript `Date` instead of `string`. -::: info TYPE +| | | +|----------:|:---------------------| +| Type: | `'string' \| 'date'` | +| Required: | `false` | +| Default: | `'string'` | ::: code-group @@ -250,13 +220,8 @@ type Pet = { date: Date } ``` - ::: -::: info - -Type: `'string' | 'date'`
-Default: `'string'` ```typescript import { pluginTs } from '@kubb/plugin-ts' @@ -265,13 +230,16 @@ const plugin = pluginTs({ dateType: 'string', }) ``` -::: ### unknownType Which type to use when the Swagger/OpenAPI file is not providing more information. -::: info TYPE +| | | +|----------:|:---------------------| +| Type: | `'any' \| 'unknown'` | +| Required: | `false` | +| Default: | `'any'` | ::: code-group @@ -287,12 +255,6 @@ type Pet = { } ``` -::: - -::: info -Type: `'any' | 'unknown'`
-Default: `'any'` - ```typescript import { pluginTs } from '@kubb/plugin-ts' @@ -300,16 +262,17 @@ const plugin = pluginTs({ unknownType: 'any', }) ``` -::: ### optionalType +Choose what to use as mode for an optional value. -Choose what to use as mode for an optional value.
- -::: info TYPE +| | | +|----------:|:----------------------------------------------------------------| +| Type: | `'questionToken' \| 'undefined' \| 'questionTokenAndUndefined'` | +| Required: | `false` | +| Default: | `'questionToken'` | ::: code-group - ```typescript ['questionToken'] type Pet = { type?: string @@ -329,11 +292,6 @@ type Pet = { ``` ::: -::: info - -Type: `'questionToken' | 'undefined' | 'questionTokenAndUndefined'`
-Default: `'questionToken'` - ```typescript import { pluginTs } from '@kubb/plugin-ts' @@ -341,15 +299,17 @@ const plugin = pluginTs({ optionalType: 'questionToken', }) ``` -::: ### oasType Export an Oas object as Oas type with `import type { Infer } from '@kubb/plugin-ts/oas'`
-See [infer](/plugins/plugin-ts/infer) in how to use the types with `@kubb/plugin-ts/oas`.
+See [infer](/helpers/oas) in how to use the types with `@kubb/plugin-ts/oas`.
+ +| | | +|----------:|:-------------------| +| Type: | `'infer' \| false` | +| Required: | `false` | -::: info -Type: `'infer' | false`
```typescript import { pluginTs } from '@kubb/plugin-ts' @@ -358,27 +318,10 @@ const plugin = pluginTs({ oasType: 'infer', }) ``` -::: ### include - -Array containing include parameters to include tags/operations/methods/paths. - -::: info TYPE - -```typescript [Include] -export type Include = { - type: 'tag' | 'operationId' | 'path' | 'method' - pattern: string | RegExp -} -``` - -::: - -::: info - -Type: `Array`
+ ```typescript import { pluginTs } from '@kubb/plugin-ts' @@ -392,26 +335,9 @@ const plugin = pluginTs({ ], }) ``` -::: ### exclude - -Array containing exclude parameters to exclude/skip tags/operations/methods/paths. - -::: info TYPE - -```typescript [Exclude] -export type Exclude = { - type: 'tag' | 'operationId' | 'path' | 'method' - pattern: string | RegExp -} -``` - -::: - -::: info - -Type: `Array`
+ ```typescript import { pluginTs } from '@kubb/plugin-ts' @@ -425,27 +351,9 @@ const plugin = pluginTs({ ], }) ``` -::: ### override - -Array containing override parameters to override `options` based on tags/operations/methods/paths. - -::: info TYPE - -```typescript [Override] -export type Override = { - type: 'tag' | 'operationId' | 'path' | 'method' - pattern: string | RegExp - options: PluginOptions -} -``` - -::: - -::: info - -Type: `Array`
+ ```typescript import { pluginTs } from '@kubb/plugin-ts' @@ -456,23 +364,37 @@ const plugin = pluginTs({ type: 'tag', pattern: 'pet', options: { - enumType: "asConst" + dataReturnType: "full" }, }, ], }) ``` -::: + +### generators + + +| | | +|----------:|:-----------------------------| +| Type: | `Array>` | +| Required: | `false` | + ### transformers + #### transformers.name +Customize the names based on the type that is provided by the plugin. -Override the name of the TypeScript type that is getting generated, this will also override the name of the file. +| | | +|----------:|:------------------------------------------------------------------------------| +| Type: | `(name: string, type?: ResolveType) => string` | +| Required: | `false` | -::: info -Type: `(name: string, type?: "function" | "type" | "file" ) => string`
+```typescript +type ResolveType = 'file' | 'function' | 'type' | 'const' +``` ```typescript import { pluginTs } from '@kubb/plugin-ts' @@ -485,7 +407,6 @@ const plugin = pluginTs({ }, }) ``` -::: ## Example @@ -515,7 +436,7 @@ export default defineConfig({ ], group: { type: 'tag', - output: './types/{{tag}}Controller' + name: ({ group }) => `'${group}Controller` }, enumType: "asConst", enumSuffix: 'Enum', diff --git a/examples/client/kubb.config.ts b/examples/client/kubb.config.ts index 8c9ebc307..28b2aee14 100644 --- a/examples/client/kubb.config.ts +++ b/examples/client/kubb.config.ts @@ -19,10 +19,8 @@ export default defineConfig(() => { output: { path: './src/gen', clean: true, - extension() { - return { - '.ts': '.js', - } + extension: { + '.ts': '.js', }, }, plugins: [ diff --git a/examples/react-query/package.json b/examples/react-query/package.json index 6850a9d41..c39fa3cac 100644 --- a/examples/react-query/package.json +++ b/examples/react-query/package.json @@ -39,7 +39,7 @@ "devDependencies": { "@types/react": "^18.3.10", "@types/react-dom": "^18.3.0", - "@vitejs/plugin-react": "^4.3.1", + "@vitejs/plugin-react": "^4.3.2", "msw": "^1.3.4", "tsup": "^8.3.0", "typescript": "^5.6.2", diff --git a/packages/cli/src/generate.ts b/packages/cli/src/generate.ts index 31e31fa4f..15d2865a1 100644 --- a/packages/cli/src/generate.ts +++ b/packages/cli/src/generate.ts @@ -74,10 +74,8 @@ export async function generate({ input, config, args }: GenerateProps): Promise< output: { write: true, barrelType: 'named', - extension() { - return { - '.ts': '.ts', - } + extension: { + '.ts': '.ts', }, ...userConfig.output, }, diff --git a/packages/core/src/FileManager.ts b/packages/core/src/FileManager.ts index ee3bd3cee..20de115e0 100644 --- a/packages/core/src/FileManager.ts +++ b/packages/core/src/FileManager.ts @@ -397,8 +397,7 @@ export async function processFiles({ dryRun, config, logger, files }: WriteFiles const promises = orderedFiles.map(async (file) => { await queue.add(async () => { const message = file ? `Writing ${relative(config.root, file.path)}` : '' - const extnames = config.output.extension?.({}) - const extname = extnames?.[file.extname] + const extname = config.output.extension?.[file.extname] const source = await getSource(file, { logger, extname }) diff --git a/packages/core/src/PluginManager.ts b/packages/core/src/PluginManager.ts index 475fc0363..45ea6a36c 100644 --- a/packages/core/src/PluginManager.ts +++ b/packages/core/src/PluginManager.ts @@ -28,13 +28,7 @@ import type { type RequiredPluginLifecycle = Required -/** - * Get the type of the first argument in a function. - * @example Arg0<(a: string, b: number) => void> -> string - */ -type Argument0 = Parameters[0] - -type Strategy = 'hookFirst' | 'hookForPlugin' | 'hookParallel' | 'hookReduceArg0' | 'hookSeq' +type Strategy = 'hookFirst' | 'hookForPlugin' | 'hookParallel' | 'hookSeq' type Executer = { message: string @@ -395,42 +389,6 @@ export class PluginManager { return results.filter((result) => result.status === 'fulfilled').map((result) => (result as PromiseFulfilledResult>).value) } - /** - * Chain all plugins, `reduce` can be passed through to handle every returned value. The return value of the first plugin will be used as the first parameter for the plugin after that. - */ - hookReduceArg0({ - hookName, - parameters, - reduce, - message, - }: { - hookName: H - parameters: PluginParameter - reduce: (reduction: Argument0, result: ReturnType>, plugin: Plugin) => PossiblePromise | null> - message: string - }): Promise> { - const [argument0, ...rest] = parameters - const plugins = this.#getSortedPlugins(hookName) - - let promise: Promise> = Promise.resolve(argument0) - for (const plugin of plugins) { - promise = promise - .then((arg0) => { - const value = this.#execute({ - strategy: 'hookReduceArg0', - hookName, - parameters: [arg0, ...rest] as PluginParameter, - plugin, - message, - }) - return value - }) - .then((result) => reduce.call(this.#core.context, argument0, result as ReturnType>, plugin)) as Promise> - } - - return promise - } - /** * Chains plugins */ diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index f9095e60f..6cf3c1208 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -43,9 +43,6 @@ export type InputData = { type Input = InputPath | InputData -type OutContext = {} -type OutExtension = (context: OutContext) => Record - export type BarrelType = 'all' | 'named' /** @@ -81,10 +78,10 @@ export type Config = { write?: boolean /** - * Override the extension to the generated imports and exports, default the plugin will add an extension - * @default `() => ({ '.ts': '.ts'})` + * Override the extension to the generated imports and exports, by default the plugin will add an extension + * @default `{ '.ts': '.ts'}` */ - extension?: OutExtension + extension?: Record /** * Define what needs to exported, here you can also disable the export of barrel files. * @default `'named'` @@ -268,8 +265,9 @@ export type ResolveNameParams = { pluginKey?: Plugin['key'] /** * `file` will be used to customize the name of the created file(use of camelCase) - * `function` can be used used to customize the exported functions(use of camelCase) + * `function` can be used to customize the exported functions(use of camelCase) * `type` is a special type for TypeScript(use of PascalCase) + * `const` can be used for variables(use of camelCase) */ type?: 'file' | 'function' | 'type' | 'const' } @@ -291,14 +289,16 @@ export type PluginContext } - +/** + * Specify the export location for the files and define the behavior of the output + */ export type Output = { /** - * Output to save the generated files. + * Path to the output folder or file that will contain the generated code */ path: string /** - * Define what needs to exported, here you can also disable the export of barrel files. + * Define what needs to be exported, here you can also disable the export of barrel files * @default `'named'` */ barrelType?: BarrelType | false @@ -318,14 +318,11 @@ type GroupContext = { export type Group = { /** - * Tag will group based on the operation tag inside the Swagger file + * Define a type where to group the files on */ type: 'tag' /** - * Relative path to save the grouped clients. - * - * @example `${output}/{{tag}}Controller` => `clients/PetController` - * @default `({ group }) => `${group}Controller`` + * Return the name of a group based on the group name, this will be used for the file and name generation */ name?: (context: GroupContext) => string } diff --git a/packages/oas/package.json b/packages/oas/package.json index 4b264c5c0..c1dd4653a 100644 --- a/packages/oas/package.json +++ b/packages/oas/package.json @@ -67,7 +67,7 @@ "typecheck": "tsc -p ./tsconfig.json --noEmit --emitDeclarationOnly false" }, "dependencies": { - "@redocly/openapi-core": "^1.25.3", + "@redocly/openapi-core": "^1.25.4", "hotscript": "^1.0.13", "json-schema-to-ts": "^3.1.1", "jsonpointer": "^5.0.1", diff --git a/packages/plugin-client/src/plugin.ts b/packages/plugin-client/src/plugin.ts index a29404a74..bc495624f 100644 --- a/packages/plugin-client/src/plugin.ts +++ b/packages/plugin-client/src/plugin.ts @@ -2,7 +2,6 @@ import path from 'node:path' import { FileManager, type Group, PluginManager, createPlugin } from '@kubb/core' import { camelCase } from '@kubb/core/transformers' -import { renderTemplate } from '@kubb/core/utils' import { OperationGenerator, pluginOasName } from '@kubb/plugin-oas' import type { Plugin } from '@kubb/core' diff --git a/packages/plugin-client/src/types.ts b/packages/plugin-client/src/types.ts index 52c556f92..be35db3bb 100644 --- a/packages/plugin-client/src/types.ts +++ b/packages/plugin-client/src/types.ts @@ -3,6 +3,10 @@ import type { Group, Output, PluginFactoryOptions, ResolveNameParams } from '@ku import type { Exclude, Generator, Include, Override, ResolvePathOptions } from '@kubb/plugin-oas' export type Options = { + /** + * Specify the export location for the files and define the behavior of the output + * @default { path: 'clients', barrelType: 'named' } + */ output?: Output /** * Group the clients based on the provided name. @@ -28,13 +32,12 @@ export type Options = { /** * Path to the client import path that will be used to do the API calls. * It will be used as `import client from '${client.importPath}'`. - * It allows both relative and absolute path. - * the path will be applied as is, so relative path should be based on the file being generated. + * It allows both relative and absolute path but be aware that we will not change the path. * @default '@kubb/plugin-client/client' */ importPath?: string /** - * ReturnType that needs to be used when calling client(). + * ReturnType that will be used when calling the client. * * `Data` will return ResponseConfig[data]. * diff --git a/packages/plugin-ts/src/plugin.ts b/packages/plugin-ts/src/plugin.ts index cdd969b95..09148177c 100644 --- a/packages/plugin-ts/src/plugin.ts +++ b/packages/plugin-ts/src/plugin.ts @@ -1,6 +1,6 @@ import path from 'node:path' -import { FileManager, PluginManager, createPlugin } from '@kubb/core' +import { FileManager, type Group, PluginManager, createPlugin } from '@kubb/core' import { camelCase, pascalCase } from '@kubb/core/transformers' import { renderTemplate } from '@kubb/core/utils' import { OperationGenerator, SchemaGenerator, pluginOasName } from '@kubb/plugin-oas' @@ -29,7 +29,6 @@ export const pluginTs = createPlugin((options) => { mapper = {}, generators = [typeGenerator, oasType === 'infer' ? oasGenerator : undefined].filter(Boolean), } = options - const template = group?.output ? group.output : `${output.path}/{{tag}}Controller` return { name: pluginTsName, @@ -52,6 +51,12 @@ export const pluginTs = createPlugin((options) => { const root = path.resolve(this.config.root, this.config.output.path) const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path)) + if (options?.tag && group?.type === 'tag') { + const groupName: Group['name'] = group?.name ? group.name : (ctx) => `${ctx.group}Controller` + + return path.resolve(root, output.path, groupName({ group: camelCase(options.tag) }), baseName) + } + if (mode === 'single') { /** * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend @@ -60,12 +65,6 @@ export const pluginTs = createPlugin((options) => { return path.resolve(root, output.path) } - if (options?.tag && group?.type === 'tag') { - const tag = camelCase(options.tag) - - return path.resolve(root, renderTemplate(template, { tag }), baseName) - } - return path.resolve(root, output.path, baseName) }, resolveName(name, type) { diff --git a/packages/plugin-ts/src/types.ts b/packages/plugin-ts/src/types.ts index 86d22f595..91aa8a49b 100644 --- a/packages/plugin-ts/src/types.ts +++ b/packages/plugin-ts/src/types.ts @@ -1,29 +1,17 @@ -import type { Output, PluginFactoryOptions, ResolveNameParams } from '@kubb/core' +import type { Group, Output, PluginFactoryOptions, ResolveNameParams } from '@kubb/core' import type { Exclude, Generator, Include, Override, ResolvePathOptions } from '@kubb/plugin-oas' import type ts from 'typescript' export type Options = { /** - * @default 'types' + * Specify the export location for the files and define the behavior of the output + * @default { path: 'types', barrelType: 'named' } */ output?: Output /** - * Group the TypeScript types based on the provided name. + * Group the clients based on the provided name. */ - group?: { - /** - * Tag will group based on the operation tag inside the Swagger file. - */ - type: 'tag' - /** - * Relative path to save the grouped TypeScript Types. - * - * `{{tag}}` will be replaced by the current tagName. - * @example `${output}/{{tag}}Controller` => `models/PetController` - * @default `${output}/{{tag}}Controller` - */ - output?: string - } + group?: Group /** * Array containing exclude parameters to exclude/skip tags/operations/methods/paths. */ @@ -48,7 +36,6 @@ export type Options = { * Default will be `'enum'` in version 3 of Kubb */ enumSuffix?: string - /** * Choose to use `date` or `datetime` as JavaScript `Date` instead of `string`. * @default 'string' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index da72ebef5..9ff733a35 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -67,6 +67,9 @@ importers: '@shikijs/vitepress-twoslash': specifier: ^1.21.0 version: 1.21.0(@nuxt/kit@3.13.2)(typescript@5.6.2) + mermaid: + specifier: ^11.2.1 + version: 11.2.1 sitemap: specifier: ^8.0.0 version: 8.0.0 @@ -125,6 +128,9 @@ importers: '@kubb/react': specifier: workspace:* version: link:../packages/react + '@mermaid-js/mermaid-cli': + specifier: ^11.2.0 + version: 11.2.0(puppeteer@23.4.1(bufferutil@4.0.8)(typescript@5.6.2)) '@types/node': specifier: ^20.16.10 version: 20.16.10 @@ -535,8 +541,8 @@ importers: specifier: ^18.3.0 version: 18.3.0 '@vitejs/plugin-react': - specifier: ^4.3.1 - version: 4.3.1(vite@4.5.5(@types/node@20.16.10)(terser@5.31.1)) + specifier: ^4.3.2 + version: 4.3.2(vite@4.5.5(@types/node@20.16.10)(terser@5.31.1)) msw: specifier: ^1.3.4 version: 1.3.4(typescript@5.6.2) @@ -1039,8 +1045,8 @@ importers: packages/oas: dependencies: '@redocly/openapi-core': - specifier: ^1.25.3 - version: 1.25.3 + specifier: ^1.25.4 + version: 1.25.4 hotscript: specifier: ^1.0.13 version: 1.0.13 @@ -1824,18 +1830,34 @@ packages: resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.25.4': + resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} + engines: {node: '>=6.9.0'} + '@babel/core@7.24.7': resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} engines: {node: '>=6.9.0'} + '@babel/core@7.25.2': + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.24.7': resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} engines: {node: '>=6.9.0'} + '@babel/generator@7.25.6': + resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.24.7': resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.25.2': + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + engines: {node: '>=6.9.0'} + '@babel/helper-environment-visitor@7.24.7': resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} @@ -1858,6 +1880,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.25.2': + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-plugin-utils@7.24.7': resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} engines: {node: '>=6.9.0'} @@ -1886,10 +1914,18 @@ packages: resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.24.8': + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + '@babel/helpers@7.24.7': resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.25.6': + resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} + engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} @@ -1928,10 +1964,18 @@ packages: resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} engines: {node: '>=6.9.0'} + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.24.7': resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.6': + resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} + engines: {node: '>=6.9.0'} + '@babel/types@7.24.7': resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} engines: {node: '>=6.9.0'} @@ -1996,6 +2040,9 @@ packages: cpu: [x64] os: [win32] + '@braintree/sanitize-url@7.1.0': + resolution: {integrity: sha512-o+UlMLt49RvtCASlOMW0AkHnabN9wR9rwCCherxO0yG4Npy34GkvrAqdXQvrhNs+jh+gkK8gB8Lf05qL/O7KWg==} + '@bundled-es-modules/cookie@2.0.0': resolution: {integrity: sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==} @@ -2073,6 +2120,21 @@ packages: '@changesets/write@0.3.2': resolution: {integrity: sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw==} + '@chevrotain/cst-dts-gen@11.0.3': + resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} + + '@chevrotain/gast@11.0.3': + resolution: {integrity: sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==} + + '@chevrotain/regexp-to-ast@11.0.3': + resolution: {integrity: sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==} + + '@chevrotain/types@11.0.3': + resolution: {integrity: sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==} + + '@chevrotain/utils@11.0.3': + resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -2819,6 +2881,16 @@ packages: '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + '@mermaid-js/mermaid-cli@11.2.0': + resolution: {integrity: sha512-TNJw6t9w0JMk0jSj5EKsw5WtF5jsCLmvq+1Uo66IwG5jN75WVjb1b/6RWjEZEF/zKFBakzle/WUmGFSg774gig==} + engines: {node: ^18.19 || >=20.0} + hasBin: true + peerDependencies: + puppeteer: ^23 + + '@mermaid-js/parser@0.3.0': + resolution: {integrity: sha512-HsvL6zgE5sUPGgkIDlmAWR1HTNHz2Iy11BAWPTa4Jjabkpguy4Ze2gzfLrg6pdRuBvFwgUYyxiaNqZwrEEXepA==} + '@microsoft/api-extractor-model@7.29.8': resolution: {integrity: sha512-t3Z/xcO6TRbMcnKGVMs4uMzv/gd5j0NhMiJIGjD4cJMeFJ1Hf8wnLSx37vxlRlL0GWlGJhnFgxvnaL6JlS+73g==} @@ -2901,6 +2973,11 @@ packages: '@polka/url@1.0.0-next.25': resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + '@puppeteer/browsers@2.4.0': + resolution: {integrity: sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g==} + engines: {node: '>=18'} + hasBin: true + '@readme/better-ajv-errors@1.6.0': resolution: {integrity: sha512-9gO9rld84Jgu13kcbKRU+WHseNhaVt76wYMeRDGsUGYxwJtI3RmEJ9LY9dZCYQGI8eUZLuxb5qDja0nqklpFjQ==} engines: {node: '>=14'} @@ -2930,11 +3007,11 @@ packages: '@redocly/ajv@8.11.2': resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==} - '@redocly/config@0.11.0': - resolution: {integrity: sha512-vAc77vCuWsVgLx2LN02P6jqLBhHuot6O1LsSJEAAkWEvXARSGSQVon50QW7jlbCMg9OFTYYYRPN4W6K/YmnM3w==} + '@redocly/config@0.12.1': + resolution: {integrity: sha512-RW3rSirfsPdr0uvATijRDU3f55SuZV3m7/ppdTDvGw4IB0cmeZRkFmqTrchxMqWP50Gfg1tpHnjdxUCNo0E2qg==} - '@redocly/openapi-core@1.25.3': - resolution: {integrity: sha512-dqJkyydgagW3FXX5cjtSUAnabsld4K6yq7RFgQ+ngI1m43PkEoSQt8pp+SfQDszSEoMbc7QKj8afbe7mZw17TA==} + '@redocly/openapi-core@1.25.4': + resolution: {integrity: sha512-qnpr4Z1rzfXdtxQxt/lfGD0wW3UVrm3qhrTpzLG5R/Ze+z+1u8sSRiQHp9N+RT3IuMjh00wq59nop9x9PPa1jQ==} engines: {node: '>=14.19.0', npm: '>=7.0.0'} '@rollup/pluginutils@5.1.0': @@ -3376,6 +3453,9 @@ packages: '@vue/composition-api': optional: true + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + '@ts-morph/common@0.24.0': resolution: {integrity: sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==} @@ -3553,6 +3633,9 @@ packages: '@types/ws@8.5.12': resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + '@typescript/vfs@1.6.0': resolution: {integrity: sha512-hvJUjNVeBMp77qPINuUvYXj4FyWeeMMKZkxEATEU3hqBAQ7qdTBCUFT7Sp0Zu0faeEtFf+ldXxMEDr/bk73ISg==} peerDependencies: @@ -3561,8 +3644,8 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@vitejs/plugin-react@4.3.1': - resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} + '@vitejs/plugin-react@4.3.2': + resolution: {integrity: sha512-hieu+o05v4glEBucTcKMK3dlES0OeJlD9YVOAPraVMOInBCwzumaIFiUjr4bHK7NPgnAHgiskUoceKercrN8vg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 @@ -3931,6 +4014,10 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} + asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -3945,12 +4032,34 @@ packages: axios@1.7.7: resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + b4a@1.6.7: + resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + bare-events@2.5.0: + resolution: {integrity: sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==} + + bare-fs@2.3.5: + resolution: {integrity: sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==} + + bare-os@2.4.4: + resolution: {integrity: sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==} + + bare-path@2.1.3: + resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} + + bare-stream@2.3.0: + resolution: {integrity: sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + engines: {node: '>=10.0.0'} + better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -3987,6 +4096,9 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -4058,6 +4170,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + change-case@5.4.4: resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} @@ -4084,6 +4200,14 @@ packages: resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} engines: {node: '>= 6'} + chevrotain-allstar@0.3.1: + resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} + peerDependencies: + chevrotain: ^11.0.0 + + chevrotain@11.0.3: + resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -4100,6 +4224,11 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} + chromium-bidi@0.6.5: + resolution: {integrity: sha512-RuLrmzYrxSb0s9SgpB+QN5jJucPduZQ/9SIe76MDxYJuecPW5mxMdacJ1f4EtgiV+R0p3sCkznTMvH0MPGFqjA==} + peerDependencies: + devtools-protocol: '*' + ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -4175,6 +4304,10 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -4186,6 +4319,10 @@ packages: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + compatx@0.1.8: resolution: {integrity: sha512-jcbsEAR81Bt5s1qOFymBufmCbXCXbk0Ql+K5ouj6gCyx2yHlu6AgmGIi9HxfKixpUDO5bCFJUHQ5uM6ecbTebw==} @@ -4244,6 +4381,12 @@ packages: core-js@3.37.1: resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} + cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + + cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + cosmiconfig@9.0.0: resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} @@ -4285,10 +4428,170 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + cytoscape-cose-bilkent@4.1.0: + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape-fcose@2.2.0: + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape@3.30.2: + resolution: {integrity: sha512-oICxQsjW8uSaRmn4UK/jkczKOqTrVqt5/1WL0POiJUT2EKNc9STM4hYFHv917yu55aTBMFNRzymlJhVAiWPCxw==} + engines: {node: '>=0.10'} + + d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} + d@1.0.2: resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} engines: {node: '>=0.12'} + dagre-d3-es@7.0.10: + resolution: {integrity: sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==} + + data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} + data-view-buffer@1.0.1: resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} engines: {node: '>= 0.4'} @@ -4364,6 +4667,13 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} + + delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -4390,6 +4700,9 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + devtools-protocol@0.0.1342118: + resolution: {integrity: sha512-75fMas7PkYNDTmDyb6PRJCH7ILmHLp+BhrZGeMsa4bCh40DTxgCz2NRy5UDzII4C5KuD0oBMZ9vXKhEl6UD/3w==} + diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -4444,6 +4757,9 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + enhanced-resolve@5.17.1: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} @@ -4554,6 +4870,11 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -4585,6 +4906,10 @@ packages: estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} @@ -4629,9 +4954,17 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -4645,6 +4978,9 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fdir@6.3.0: resolution: {integrity: sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==} peerDependencies: @@ -4772,6 +5108,10 @@ packages: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -4788,6 +5128,10 @@ packages: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} + get-uri@6.0.3: + resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} + engines: {node: '>= 14'} + giget@1.2.3: resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} hasBin: true @@ -4844,6 +5188,9 @@ packages: resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + hachure-fill@0.5.2: + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} + handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} engines: {node: '>=0.4.7'} @@ -4924,11 +5271,15 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + http2-client@1.3.5: resolution: {integrity: sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==} - https-proxy-agent@7.0.4: - resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} engines: {node: '>= 14'} human-id@1.0.2: @@ -4950,6 +5301,10 @@ packages: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -4983,6 +5338,17 @@ packages: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} + internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -5192,6 +5558,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + jsep@1.3.8: resolution: {integrity: sha512-qofGylTGgYj9gZFsHuyWAN4jr35eJ66qJCK4eKDnldohuUoQFbU3iZn2zjvEbd9wOAhP9Wx5DsAAduTyE1PSWQ==} engines: {node: '>= 10.16.0'} @@ -5251,6 +5620,13 @@ packages: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} + katex@0.16.11: + resolution: {integrity: sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==} + hasBin: true + + khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + klona@2.0.6: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} @@ -5265,10 +5641,20 @@ packages: resolution: {integrity: sha512-QUViPXlgP6NKA57IAPff/aZSmRA6qs9wKxlEpayBorwRZG+x2LG7jD4kXh8lnH3q/gkUr64NyZ7kwErUEZJmlw==} engines: {node: '>=18'} + langium@3.0.0: + resolution: {integrity: sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==} + engines: {node: '>=16.0.0'} + latest-version@9.0.0: resolution: {integrity: sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==} engines: {node: '>=18'} + layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + + layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -5300,6 +5686,9 @@ packages: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} @@ -5353,6 +5742,10 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + lru-queue@0.1.0: resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} @@ -5378,6 +5771,11 @@ packages: markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + marked@13.0.3: + resolution: {integrity: sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==} + engines: {node: '>= 18'} + hasBin: true + marked@4.3.0: resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} engines: {node: '>= 12'} @@ -5437,6 +5835,9 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + mermaid@11.2.1: + resolution: {integrity: sha512-F8TEaLVVyxTUmvKswVFyOkjPrlJA5h5vNR1f7ZnSWSpqxgEZG1hggtn/QCa7znC28bhlcrNh10qYaIiill7q4A==} + methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} @@ -5696,6 +6097,10 @@ packages: resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} engines: {node: '>= 10'} + netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} + next-tick@1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} @@ -5816,6 +6221,9 @@ packages: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -5894,6 +6302,14 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + pac-proxy-agent@7.0.2: + resolution: {integrity: sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==} + engines: {node: '>= 14'} + + pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} + package-json-from-dist@1.0.0: resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} @@ -5929,6 +6345,9 @@ packages: path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-data-parser@0.1.0: + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -5988,6 +6407,9 @@ packages: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} @@ -6026,6 +6448,12 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} + points-on-curve@0.2.0: + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} + + points-on-path@0.2.1: + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} + polished@4.3.1: resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} engines: {node: '>=10'} @@ -6084,6 +6512,10 @@ packages: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -6097,6 +6529,10 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + proxy-agent@6.4.0: + resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} + engines: {node: '>= 14'} + proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -6106,10 +6542,22 @@ packages: psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + puppeteer-core@23.4.1: + resolution: {integrity: sha512-uCxGtn8VE9PlKhdFJX/zZySi9K3Ufr3qUZe28jxJoZUqiMJOi+SFh2zhiFDSjWqZIDkc0FtnaCC+rewW3MYXmg==} + engines: {node: '>=18'} + + puppeteer@23.4.1: + resolution: {integrity: sha512-+wWfWTkQ8L9IB/3OVGSUp37c0eQ5za/85KdX+LAq2wTZkMdocgYGMCs+/91e2f/RXIYzve4x/uGxN8zG2sj8+w==} + engines: {node: '>=18'} + hasBin: true + qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} @@ -6120,6 +6568,9 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + raf@3.4.1: resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} @@ -6290,6 +6741,9 @@ packages: engines: {node: 20 || >=22} hasBin: true + robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + rollup@3.29.4: resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} @@ -6310,6 +6764,9 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + roughjs@4.6.6: + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + rst-selector-parser@2.2.3: resolution: {integrity: sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==} @@ -6320,6 +6777,9 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} @@ -6486,6 +6946,18 @@ packages: resolution: {integrity: sha512-tf+h5W1IrjNm/9rKKj0JU2MDMruiopx0jjVA5zCdBtcGjfp0+c5rHw/zADLC3IeKlGHtVbHtpfzvYA0OYT+HKg==} engines: {node: '>=8.0.0'} + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socks-proxy-agent@8.0.4: + resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==} + engines: {node: '>= 14'} + + socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + solid-js@1.9.1: resolution: {integrity: sha512-Gd6QWRFfO2XKKZqVK4YwbhWZkr0jWw1dYHOt+VYebomeyikGP0SuMflf42XcDuU9HAEYDArFJIYsBNjlE7iZsw==} @@ -6521,6 +6993,9 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -6534,6 +7009,9 @@ packages: stickyfill@1.1.1: resolution: {integrity: sha512-GCp7vHAfpao+Qh/3Flh9DXEJ/qSi0KJwJw6zYlZOtRYXWUIpMM6mC2rIep/dK8RQqwW0KxGJIllmjPIBOGN8AA==} + streamx@2.20.1: + resolution: {integrity: sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==} + strict-event-emitter@0.2.8: resolution: {integrity: sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==} @@ -6662,6 +7140,12 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + tar-fs@3.0.6: + resolution: {integrity: sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==} + + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} @@ -6695,6 +7179,9 @@ packages: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} + text-decoder@1.2.0: + resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==} + thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -6771,6 +7258,10 @@ packages: ts-algebra@2.0.0: resolution: {integrity: sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==} + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -6911,6 +7402,9 @@ packages: resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} + typed-query-selector@2.12.0: + resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} + typescript@5.2.2: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} @@ -6937,6 +7431,9 @@ packages: unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} @@ -7025,6 +7522,9 @@ packages: url-template@2.0.8: resolution: {integrity: sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==} + urlpattern-polyfill@10.0.0: + resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} + use-sync-external-store@1.2.2: resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} peerDependencies: @@ -7044,6 +7544,10 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -7184,6 +7688,26 @@ packages: jsdom: optional: true + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + vue-demi@0.14.10: resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} engines: {node: '>=12'} @@ -7283,6 +7807,9 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} @@ -7307,6 +7834,18 @@ packages: utf-8-validate: optional: true + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -7340,6 +7879,9 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} @@ -7485,6 +8027,8 @@ snapshots: '@babel/compat-data@7.24.7': {} + '@babel/compat-data@7.25.4': {} + '@babel/core@7.24.7': dependencies: '@ampproject/remapping': 2.3.0 @@ -7505,6 +8049,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@7.25.2': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + convert-source-map: 2.0.0 + debug: 4.3.7 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/generator@7.24.7': dependencies: '@babel/types': 7.24.7 @@ -7512,10 +8076,25 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - '@babel/helper-compilation-targets@7.24.7': + '@babel/generator@7.25.6': dependencies: - '@babel/compat-data': 7.24.7 - '@babel/helper-validator-option': 7.24.7 + '@babel/types': 7.25.6 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/helper-compilation-targets@7.24.7': + dependencies: + '@babel/compat-data': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + browserslist: 4.23.1 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-compilation-targets@7.25.2': + dependencies: + '@babel/compat-data': 7.25.4 + '@babel/helper-validator-option': 7.24.8 browserslist: 4.23.1 lru-cache: 5.1.1 semver: 6.3.1 @@ -7551,6 +8130,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color + '@babel/helper-plugin-utils@7.24.7': {} '@babel/helper-simple-access@7.24.7': @@ -7572,11 +8161,18 @@ snapshots: '@babel/helper-validator-option@7.24.7': {} + '@babel/helper-validator-option@7.24.8': {} + '@babel/helpers@7.24.7': dependencies: '@babel/template': 7.24.7 '@babel/types': 7.24.7 + '@babel/helpers@7.25.6': + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 @@ -7592,14 +8188,14 @@ snapshots: dependencies: '@babel/types': 7.25.6 - '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 '@babel/runtime@7.24.7': @@ -7614,6 +8210,12 @@ snapshots: '@babel/parser': 7.24.7 '@babel/types': 7.24.7 + '@babel/template@7.25.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + '@babel/traverse@7.24.7': dependencies: '@babel/code-frame': 7.24.7 @@ -7629,6 +8231,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.25.6': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.24.7': dependencies: '@babel/helper-string-parser': 7.24.7 @@ -7678,6 +8292,8 @@ snapshots: '@biomejs/cli-win32-x64@1.9.2': optional: true + '@braintree/sanitize-url@7.1.0': {} + '@bundled-es-modules/cookie@2.0.0': dependencies: cookie: 0.5.0 @@ -7861,6 +8477,23 @@ snapshots: human-id: 1.0.2 prettier: 2.8.8 + '@chevrotain/cst-dts-gen@11.0.3': + dependencies: + '@chevrotain/gast': 11.0.3 + '@chevrotain/types': 11.0.3 + lodash-es: 4.17.21 + + '@chevrotain/gast@11.0.3': + dependencies: + '@chevrotain/types': 11.0.3 + lodash-es: 4.17.21 + + '@chevrotain/regexp-to-ast@11.0.3': {} + + '@chevrotain/types@11.0.3': {} + + '@chevrotain/utils@11.0.3': {} + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 @@ -8311,7 +8944,7 @@ snapshots: '@kubb/oas@3.0.0-alpha.17': dependencies: - '@redocly/openapi-core': 1.25.3 + '@redocly/openapi-core': 1.25.4 hotscript: 1.0.13 json-schema-to-ts: 3.1.1 oas: 24.9.0 @@ -8419,6 +9052,19 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 + '@mermaid-js/mermaid-cli@11.2.0(puppeteer@23.4.1(bufferutil@4.0.8)(typescript@5.6.2))': + dependencies: + chalk: 5.3.0 + commander: 12.1.0 + mermaid: 11.2.1 + puppeteer: 23.4.1(bufferutil@4.0.8)(typescript@5.6.2) + transitivePeerDependencies: + - supports-color + + '@mermaid-js/parser@0.3.0': + dependencies: + langium: 3.0.0 + '@microsoft/api-extractor-model@7.29.8(@types/node@20.16.10)': dependencies: '@microsoft/tsdoc': 0.15.0 @@ -8576,6 +9222,19 @@ snapshots: '@polka/url@1.0.0-next.25': {} + '@puppeteer/browsers@2.4.0': + dependencies: + debug: 4.3.7 + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.4.0 + semver: 7.6.3 + tar-fs: 3.0.6 + unbzip2-stream: 1.4.3 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + '@readme/better-ajv-errors@1.6.0(ajv@8.16.0)': dependencies: '@babel/code-frame': 7.24.7 @@ -8626,14 +9285,14 @@ snapshots: require-from-string: 2.0.2 uri-js-replace: 1.0.1 - '@redocly/config@0.11.0': {} + '@redocly/config@0.12.1': {} - '@redocly/openapi-core@1.25.3': + '@redocly/openapi-core@1.25.4': dependencies: '@redocly/ajv': 8.11.2 - '@redocly/config': 0.11.0 + '@redocly/config': 0.12.1 colorette: 1.4.0 - https-proxy-agent: 7.0.4 + https-proxy-agent: 7.0.5 js-levenshtein: 1.1.6 js-yaml: 4.1.0 lodash.isequal: 4.5.0 @@ -9008,6 +9667,8 @@ snapshots: vue: 3.5.10(typescript@5.6.2) vue-demi: 0.14.10(vue@3.5.10(typescript@5.6.2)) + '@tootallnate/quickjs-emscripten@0.23.0': {} + '@ts-morph/common@0.24.0': dependencies: fast-glob: 3.3.2 @@ -9027,24 +9688,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.6 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.6 '@types/body-parser@1.19.5': dependencies: @@ -9204,6 +9865,11 @@ snapshots: dependencies: '@types/node': 20.16.10 + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 20.16.10 + optional: true + '@typescript/vfs@1.6.0(typescript@5.6.2)': dependencies: debug: 4.3.7 @@ -9213,11 +9879,11 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react@4.3.1(vite@4.5.5(@types/node@20.16.10)(terser@5.31.1))': + '@vitejs/plugin-react@4.3.2(vite@4.5.5(@types/node@20.16.10)(terser@5.31.1))': dependencies: - '@babel/core': 7.24.7 - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 vite: 4.5.5(@types/node@20.16.10)(terser@5.31.1) @@ -9681,6 +10347,10 @@ snapshots: assertion-error@2.0.1: {} + ast-types@0.13.4: + dependencies: + tslib: 2.6.3 + asynckit@0.4.0: {} auto-bind@5.0.1: {} @@ -9697,10 +10367,38 @@ snapshots: transitivePeerDependencies: - debug + b4a@1.6.7: {} + balanced-match@1.0.2: {} + bare-events@2.5.0: + optional: true + + bare-fs@2.3.5: + dependencies: + bare-events: 2.5.0 + bare-path: 2.1.3 + bare-stream: 2.3.0 + optional: true + + bare-os@2.4.4: + optional: true + + bare-path@2.1.3: + dependencies: + bare-os: 2.4.4 + optional: true + + bare-stream@2.3.0: + dependencies: + b4a: 1.6.7 + streamx: 2.20.1 + optional: true + base64-js@1.5.1: {} + basic-ftp@5.0.5: {} + better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 @@ -9754,6 +10452,8 @@ snapshots: node-releases: 2.0.14 update-browserslist-db: 1.0.16(browserslist@4.23.1) + buffer-crc32@0.2.13: {} + buffer-from@1.1.2: {} buffer@5.7.1: @@ -9836,6 +10536,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.3.0: {} + change-case@5.4.4: {} character-entities-html4@2.1.0: {} @@ -9867,6 +10569,20 @@ snapshots: parse5: 7.1.2 parse5-htmlparser2-tree-adapter: 7.0.0 + chevrotain-allstar@0.3.1(chevrotain@11.0.3): + dependencies: + chevrotain: 11.0.3 + lodash-es: 4.17.21 + + chevrotain@11.0.3: + dependencies: + '@chevrotain/cst-dts-gen': 11.0.3 + '@chevrotain/gast': 11.0.3 + '@chevrotain/regexp-to-ast': 11.0.3 + '@chevrotain/types': 11.0.3 + '@chevrotain/utils': 11.0.3 + lodash-es: 4.17.21 + chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -9887,6 +10603,13 @@ snapshots: chrome-trace-event@1.0.4: {} + chromium-bidi@0.6.5(devtools-protocol@0.0.1342118): + dependencies: + devtools-protocol: 0.0.1342118 + mitt: 3.0.1 + urlpattern-polyfill: 10.0.0 + zod: 3.23.8 + ci-info@3.9.0: {} citty@0.1.6: @@ -9945,12 +10668,16 @@ snapshots: comma-separated-tokens@2.0.3: {} + commander@12.1.0: {} + commander@2.20.3: {} commander@4.1.1: {} commander@7.2.0: {} + commander@8.3.0: {} + compatx@0.1.8: {} compute-gcd@1.2.1: @@ -10001,6 +10728,14 @@ snapshots: core-js@3.37.1: {} + cose-base@1.0.3: + dependencies: + layout-base: 1.0.2 + + cose-base@2.2.0: + dependencies: + layout-base: 2.0.1 + cosmiconfig@9.0.0(typescript@5.6.2): dependencies: env-paths: 2.2.1 @@ -10048,11 +10783,197 @@ snapshots: csstype@3.1.3: {} + cytoscape-cose-bilkent@4.1.0(cytoscape@3.30.2): + dependencies: + cose-base: 1.0.3 + cytoscape: 3.30.2 + + cytoscape-fcose@2.2.0(cytoscape@3.30.2): + dependencies: + cose-base: 2.2.0 + cytoscape: 3.30.2 + + cytoscape@3.30.2: {} + + d3-array@2.12.1: + dependencies: + internmap: 1.0.1 + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + + d3-color@3.1.0: {} + + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.0.1 + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.0: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@1.0.9: {} + + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-sankey@0.12.3: + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-selection@3.0.0: {} + + d3-shape@1.3.7: + dependencies: + d3-path: 1.0.9 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.0 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + d@1.0.2: dependencies: es5-ext: 0.10.64 type: 2.7.3 + dagre-d3-es@7.0.10: + dependencies: + d3: 7.9.0 + lodash-es: 4.17.21 + + data-uri-to-buffer@6.0.2: {} + data-view-buffer@1.0.1: dependencies: call-bind: 1.0.7 @@ -10117,6 +11038,16 @@ snapshots: defu@6.1.4: {} + degenerator@5.0.1: + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + + delaunator@5.0.1: + dependencies: + robust-predicates: 3.0.2 + delayed-stream@1.0.0: {} depd@2.0.0: {} @@ -10133,6 +11064,8 @@ snapshots: dependencies: dequal: 2.0.3 + devtools-protocol@0.0.1342118: {} + diff@4.0.2: {} dir-glob@3.0.1: @@ -10177,6 +11110,10 @@ snapshots: encodeurl@1.0.2: {} + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + enhanced-resolve@5.17.1: dependencies: graceful-fs: 4.2.11 @@ -10443,6 +11380,14 @@ snapshots: escape-string-regexp@5.0.0: {} + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 @@ -10471,6 +11416,8 @@ snapshots: dependencies: '@types/estree': 1.0.5 + esutils@2.0.3: {} + etag@1.8.1: {} event-emitter@0.3.5: @@ -10571,8 +11518,20 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 + extract-zip@2.0.1: + dependencies: + debug: 4.3.7 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + fast-deep-equal@3.1.3: {} + fast-fifo@1.3.2: {} + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -10589,6 +11548,10 @@ snapshots: dependencies: reusify: 1.0.4 + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + fdir@6.3.0(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -10717,6 +11680,10 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 + get-stream@5.2.0: + dependencies: + pump: 3.0.2 + get-stream@6.0.1: {} get-stream@8.0.1: {} @@ -10732,6 +11699,15 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.4 + get-uri@6.0.3: + dependencies: + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 + debug: 4.3.7 + fs-extra: 11.2.0 + transitivePeerDependencies: + - supports-color + giget@1.2.3: dependencies: citty: 0.1.6 @@ -10806,6 +11782,8 @@ snapshots: graphql@16.9.0: {} + hachure-fill@0.5.2: {} + handlebars@4.7.8: dependencies: minimist: 1.2.8 @@ -10893,9 +11871,16 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.1 + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + http2-client@1.3.5: {} - https-proxy-agent@7.0.4: + https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.1 debug: 4.3.7 @@ -10914,6 +11899,10 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + ieee754@1.2.1: {} ignore@5.3.1: {} @@ -10955,6 +11944,15 @@ snapshots: hasown: 2.0.2 side-channel: 1.0.6 + internmap@1.0.1: {} + + internmap@2.0.3: {} + + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + ipaddr.js@1.9.1: {} is-arguments@1.1.1: @@ -11135,6 +12133,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsbn@1.1.0: {} + jsep@1.3.8: {} jsesc@2.5.2: {} @@ -11191,6 +12191,12 @@ snapshots: jsonpointer@5.0.1: {} + katex@0.16.11: + dependencies: + commander: 8.3.0 + + khroma@2.1.0: {} + klona@2.0.6: {} knitwork@1.1.0: {} @@ -11199,10 +12205,22 @@ snapshots: ky@1.3.0: {} + langium@3.0.0: + dependencies: + chevrotain: 11.0.3 + chevrotain-allstar: 0.3.1(chevrotain@11.0.3) + vscode-languageserver: 9.0.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.0.8 + latest-version@9.0.0: dependencies: package-json: 10.0.0 + layout-base@1.0.2: {} + + layout-base@2.0.1: {} + leven@3.1.0: {} lilconfig@3.1.2: {} @@ -11226,6 +12244,8 @@ snapshots: dependencies: p-locate: 6.0.0 + lodash-es@4.17.21: {} + lodash.camelcase@4.3.0: {} lodash.escape@4.0.1: {} @@ -11272,6 +12292,8 @@ snapshots: dependencies: yallist: 4.0.0 + lru-cache@7.18.3: {} + lru-queue@0.1.0: dependencies: es5-ext: 0.10.64 @@ -11298,6 +12320,8 @@ snapshots: markdown-table@3.0.3: {} + marked@13.0.3: {} + marked@4.3.0: {} mdast-util-find-and-replace@3.0.1: @@ -11432,6 +12456,30 @@ snapshots: merge2@1.4.1: {} + mermaid@11.2.1: + dependencies: + '@braintree/sanitize-url': 7.1.0 + '@iconify/utils': 2.1.33 + '@mermaid-js/parser': 0.3.0 + cytoscape: 3.30.2 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.30.2) + cytoscape-fcose: 2.2.0(cytoscape@3.30.2) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.10 + dayjs: 1.11.13 + dompurify: 3.1.5 + katex: 0.16.11 + khroma: 2.1.0 + lodash-es: 4.17.21 + marked: 13.0.3 + roughjs: 4.6.6 + stylis: 4.3.2 + ts-dedent: 2.2.0 + uuid: 9.0.1 + transitivePeerDependencies: + - supports-color + methods@1.1.2: {} micromark-core-commonmark@2.0.1: @@ -11766,6 +12814,8 @@ snapshots: neotraverse@0.6.18: {} + netmask@2.0.2: {} + next-tick@1.1.0: {} node-fetch-h2@2.3.0: @@ -11923,6 +12973,10 @@ snapshots: dependencies: ee-first: 1.1.1 + once@1.4.0: + dependencies: + wrappy: 1.0.2 + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 @@ -12002,6 +13056,24 @@ snapshots: p-try@2.2.0: {} + pac-proxy-agent@7.0.2: + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.1 + debug: 4.3.7 + get-uri: 6.0.3 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.4 + transitivePeerDependencies: + - supports-color + + pac-resolver@7.0.1: + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + package-json-from-dist@1.0.0: {} package-json@10.0.0: @@ -12039,6 +13111,8 @@ snapshots: path-browserify@1.0.1: {} + path-data-parser@0.1.0: {} + path-exists@4.0.0: {} path-exists@5.0.0: {} @@ -12077,6 +13151,8 @@ snapshots: pathval@2.0.0: {} + pend@1.2.0: {} + perfect-debounce@1.0.0: {} perfect-scrollbar@1.5.5: {} @@ -12103,6 +13179,13 @@ snapshots: pluralize@8.0.0: {} + points-on-curve@0.2.0: {} + + points-on-path@0.2.1: + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + polished@4.3.1: dependencies: '@babel/runtime': 7.24.7 @@ -12143,6 +13226,8 @@ snapshots: prismjs@1.29.0: {} + progress@2.0.3: {} + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -12158,14 +13243,59 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + proxy-agent@6.4.0: + dependencies: + agent-base: 7.1.1 + debug: 4.3.7 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5 + lru-cache: 7.18.3 + pac-proxy-agent: 7.0.2 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.4 + transitivePeerDependencies: + - supports-color + proxy-from-env@1.1.0: {} pseudomap@1.0.2: {} psl@1.9.0: {} + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + punycode@2.3.1: {} + puppeteer-core@23.4.1(bufferutil@4.0.8): + dependencies: + '@puppeteer/browsers': 2.4.0 + chromium-bidi: 0.6.5(devtools-protocol@0.0.1342118) + debug: 4.3.7 + devtools-protocol: 0.0.1342118 + typed-query-selector: 2.12.0 + ws: 8.18.0(bufferutil@4.0.8) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + puppeteer@23.4.1(bufferutil@4.0.8)(typescript@5.6.2): + dependencies: + '@puppeteer/browsers': 2.4.0 + chromium-bidi: 0.6.5(devtools-protocol@0.0.1342118) + cosmiconfig: 9.0.0(typescript@5.6.2) + devtools-protocol: 0.0.1342118 + puppeteer-core: 23.4.1(bufferutil@4.0.8) + typed-query-selector: 2.12.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - typescript + - utf-8-validate + qs@6.11.0: dependencies: side-channel: 1.0.6 @@ -12174,6 +13304,8 @@ snapshots: queue-microtask@1.2.3: {} + queue-tick@1.0.1: {} + raf@3.4.1: dependencies: performance-now: 2.1.0 @@ -12274,7 +13406,7 @@ snapshots: redoc@2.1.5(core-js@3.37.1)(enzyme@3.11.0)(mobx@6.13.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): dependencies: '@cfaester/enzyme-adapter-react-18': 0.8.0(enzyme@3.11.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@redocly/openapi-core': 1.25.3 + '@redocly/openapi-core': 1.25.4 classnames: 2.5.1 core-js: 3.37.1 decko: 1.2.0 @@ -12371,6 +13503,8 @@ snapshots: glob: 11.0.0 package-json-from-dist: 1.0.0 + robust-predicates@3.0.2: {} + rollup@3.29.4: optionalDependencies: fsevents: 2.3.3 @@ -12441,6 +13575,13 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.22.5 fsevents: 2.3.3 + roughjs@4.6.6: + dependencies: + hachure-fill: 0.5.2 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 + rst-selector-parser@2.2.3: dependencies: lodash.flattendeep: 4.4.0 @@ -12452,6 +13593,8 @@ snapshots: dependencies: queue-microtask: 1.2.3 + rw@1.3.3: {} + rxjs@7.8.1: dependencies: tslib: 2.6.3 @@ -12645,6 +13788,21 @@ snapshots: slugify@1.4.7: {} + smart-buffer@4.2.0: {} + + socks-proxy-agent@8.0.4: + dependencies: + agent-base: 7.1.1 + debug: 4.3.7 + socks: 2.8.3 + transitivePeerDependencies: + - supports-color + + socks@2.8.3: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + solid-js@1.9.1: dependencies: csstype: 3.1.3 @@ -12677,6 +13835,8 @@ snapshots: sprintf-js@1.0.3: {} + sprintf-js@1.1.3: {} + stackback@0.0.2: {} statuses@2.0.1: {} @@ -12685,6 +13845,14 @@ snapshots: stickyfill@1.1.1: {} + streamx@2.20.1: + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + text-decoder: 1.2.0 + optionalDependencies: + bare-events: 2.5.0 + strict-event-emitter@0.2.8: dependencies: events: 3.3.0 @@ -12831,6 +13999,20 @@ snapshots: tapable@2.2.1: {} + tar-fs@3.0.6: + dependencies: + pump: 3.0.2 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 2.3.5 + bare-path: 2.1.3 + + tar-stream@3.1.7: + dependencies: + b4a: 1.6.7 + fast-fifo: 1.3.2 + streamx: 2.20.1 + tar@6.2.1: dependencies: chownr: 2.0.0 @@ -12867,6 +14049,10 @@ snapshots: glob: 10.4.2 minimatch: 9.0.5 + text-decoder@1.2.0: + dependencies: + b4a: 1.6.7 + thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -12930,6 +14116,8 @@ snapshots: ts-algebra@2.0.0: {} + ts-dedent@2.2.0: {} + ts-interface-checker@0.1.13: {} ts-morph@23.0.0: @@ -13116,6 +14304,8 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 + typed-query-selector@2.12.0: {} + typescript@5.2.2: {} typescript@5.4.2: {} @@ -13134,6 +14324,11 @@ snapshots: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + uncrypto@0.1.3: {} unctx@2.3.1(webpack-sources@3.2.3): @@ -13243,6 +14438,8 @@ snapshots: url-template@2.0.8: {} + urlpattern-polyfill@10.0.0: {} + use-sync-external-store@1.2.2(react@18.3.1): dependencies: react: 18.3.1 @@ -13261,6 +14458,8 @@ snapshots: utils-merge@1.0.1: {} + uuid@9.0.1: {} + v8-compile-cache-lib@3.0.1: {} validate.io-array@1.0.6: {} @@ -13429,6 +14628,23 @@ snapshots: - supports-color - terser + vscode-jsonrpc@8.2.0: {} + + vscode-languageserver-protocol@3.17.5: + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-types@3.17.5: {} + + vscode-languageserver@9.0.1: + dependencies: + vscode-languageserver-protocol: 3.17.5 + + vscode-uri@3.0.8: {} + vue-demi@0.14.10(vue@3.5.10(typescript@5.6.2)): dependencies: vue: 3.5.10(typescript@5.6.2) @@ -13560,6 +14776,8 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 + wrappy@1.0.2: {} + ws@7.5.10(bufferutil@4.0.8): optionalDependencies: bufferutil: 4.0.8 @@ -13568,6 +14786,10 @@ snapshots: optionalDependencies: bufferutil: 4.0.8 + ws@8.18.0(bufferutil@4.0.8): + optionalDependencies: + bufferutil: 4.0.8 + y18n@5.0.8: {} yallist@2.1.2: {} @@ -13595,6 +14817,11 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + yn@3.1.1: {} yocto-queue@1.0.0: {}