diff --git a/website/components/Columns.tsx b/website/components/Columns.tsx index d08034ec080..775cd1706c5 100644 --- a/website/components/Columns.tsx +++ b/website/components/Columns.tsx @@ -29,7 +29,7 @@ interface ColumnProps { export function Column({ title, children }: PropsWithChildren) { return ( -
+
{title &&
{title}
} {children}
diff --git a/website/components/Mermaid.scss b/website/components/Mermaid.scss new file mode 100644 index 00000000000..e7ae3be7ef2 --- /dev/null +++ b/website/components/Mermaid.scss @@ -0,0 +1,182 @@ +.dark { + .rspack-mermaid { + .flowchart-label { + rect { + fill: #23272f !important; + stroke: #81b1db !important; + stroke-width: 1px !important; + } + + polygon { + fill: #23272f !important; + stroke: #81b1db !important; + stroke-width: 1px !important; + } + + span.nodeLabel { + color: #ccc !important; + } + } + + .edgeLabel { + fill: #23272f !important; + color: #ccc !important; + background-color: #23272f !important; + } + + .flowchart-link { + stroke: #ccc !important; + } + + .marker { + stroke: #ccc !important; + fill: #ccc !important; + } + } +} + +.rspress-doc { + .rspack-mermaid { + .flow-start, + .flow-end { + rect, + polygon { + fill: #666 !important; + stroke: #666 !important; + } + + span.nodeLabel { + color: #fff !important; + } + } + + .flow-hook { + rect, + polygon { + fill: var(--rp-container-info-border) !important; + stroke: var(--rp-container-info-border) !important; + } + + span.nodeLabel { + color: #333 !important; + } + } + + .flow-hook-non-support { + rect, + polygon { + fill: var(--rp-container-danger-border) !important; + stroke: var(--rp-container-danger-border) !important; + } + + span.nodeLabel { + color: #333 !important; + } + } + + .flow-hook-partial-support { + rect, + polygon { + fill: var(--rp-container-warning-border) !important; + stroke: var(--rp-container-warning-border) !important; + } + + span.nodeLabel { + color: #333 !important; + } + } + + .flow-process { + rect, + polygon { + fill: var(--rp-container-details-border) !important; + stroke: var(--rp-container-details-border) !important; + } + + span.nodeLabel { + color: #333 !important; + } + } + } + + .flowchart-link { + stroke: #666 !important; + } + + .marker { + stroke: #666 !important; + fill: #666 !important; + } +} + +.dark { + .rspress-doc { + .rspack-mermaid { + .flow-start, + .flow-end { + rect, + polygon { + fill: #666 !important; + stroke: #666 !important; + } + + span.nodeLabel { + color: #ccc !important; + } + } + + .flow-hook { + rect, + polygon { + fill: var(--rp-container-info-bg) !important; + stroke: var(--rp-container-info-border) !important; + } + + span.nodeLabel { + color: #ccc !important; + } + } + + .flow-hook-non-support { + rect, + polygon { + fill: var(--rp-container-danger-bg) !important; + stroke: var(--rp-container-danger-border) !important; + } + + span.nodeLabel { + color: #ccc !important; + } + } + + .flow-hook-partial-support { + rect, + polygon { + fill: var(--rp-container-warning-bg) !important; + stroke: var(--rp-container-warning-border) !important; + } + + span.nodeLabel { + color: #ccc !important; + } + } + + .flow-process { + rect, + polygon { + fill: var(--rp-container-details-bg) !important; + stroke: var(--rp-container-details-border) !important; + } + + span.nodeLabel { + color: #ccc !important; + } + } + } + } +} + +.rspack-mermaid { + font-size: 20px; + text-align: center; +} diff --git a/website/components/Mermaid.tsx b/website/components/Mermaid.tsx new file mode 100644 index 00000000000..b915df6272a --- /dev/null +++ b/website/components/Mermaid.tsx @@ -0,0 +1,61 @@ +import type { CSSProperties, PropsWithChildren } from 'react'; +import './Mermaid.scss'; + +import mermaid, { type MermaidConfig } from 'mermaid'; +import { useEffect, useId, useState } from 'react'; +interface Props { + style?: CSSProperties; + title?: string; + config?: MermaidConfig; +} +export default function Mermaid({ + style, + children, + title, + config, +}: PropsWithChildren) { + const id = useId(); + const [svg, setSvg] = useState(''); + const [renderError, setRenderError] = useState(false); + + async function renderMermaid2SVG() { + // https://github.com/mermaid-js/mermaid/blob/1b40f552b20df4ab99a986dd58c9d254b3bfd7bc/packages/mermaid/src/docs/.vitepress/theme/Mermaid.vue#L53 + const hasDarkClass = document.documentElement.classList.contains('dark'); + + const mermaidConfig: MermaidConfig = { + securityLevel: 'loose', + startOnLoad: false, + theme: hasDarkClass ? 'dark' : 'default', + ...config, + }; + + try { + mermaid.initialize(mermaidConfig); + + const { svg } = await mermaid.render( + id.replace(/:/g, ''), + children as string, + ); + + setSvg(svg); + } catch (error) { + setRenderError(true); + } + } + + // biome-ignore lint/correctness/useExhaustiveDependencies: safe + useEffect(() => { + renderMermaid2SVG(); + }, [children]); + return ( + <> + {renderError || !svg ? null : ( +
+

{title}

+ {/* biome-ignore lint/security/noDangerouslySetInnerHtml: safe */} +
+
+ )} + + ); +} diff --git a/website/docs/en/api/plugin-api/compiler-hooks.mdx b/website/docs/en/api/plugin-api/compiler-hooks.mdx index dfed4ae7fbf..b32253d1cc6 100644 --- a/website/docs/en/api/plugin-api/compiler-hooks.mdx +++ b/website/docs/en/api/plugin-api/compiler-hooks.mdx @@ -1,11 +1,137 @@ +import Mermaid from '@components/Mermaid'; import CompilerType from '../../types/compiler.mdx'; import CompilationType from '../../types/compilation.mdx'; import StatsType from '../../types/stats.mdx'; import { Collapse, CollapsePanel } from '@components/Collapse'; import { ApiMeta } from '@components/ApiMeta'; +import Columns from '@components/Columns'; +import { NoSSR } from 'rspress/runtime'; # Compiler Hooks +## Overview + + + + + +
+ + +{` +flowchart TD + CallRspack("rspack()") --> CreateCompiler("new Compiler()") + CreateCompiler --> ApplyNodeEnvPlugin(Apply NodeEnvironmentPlugin) + ApplyNodeEnvPlugin --> ApplyDefaultOptions(Apply default options) + ApplyDefaultOptions --> ApplyCustomPlugins(Apply custom plugins) + ApplyCustomPlugins --> HookEnvironment(hooks.environment) + HookEnvironment --> HookAfterEnvironment(hooks.afterEnvironment) + HookAfterEnvironment --> ApplyRspackPlugins(Apply internal plugins) + ApplyRspackPlugins <--> HookEntryOptions(hooks.entryOption) + ApplyRspackPlugins --> HookAfterPlugins(hooks.afterPlugins) + HookAfterPlugins --> ResolveOptions(Generate resolve options) + ResolveOptions --> HookAfterResolvers(hooks.afterResolvers) + HookAfterResolvers --> HookInitialize(hooks.initialize) + HookInitialize --> compiler("return compiler") + +class CallRspack flow-start +class compiler flow-end +class CreateCompiler,ApplyNodeEnvPlugin,ApplyDefaultOptions,ApplyCustomPlugins,ApplyRspackPlugins,ResolveOptions flow-process +class HookEnvironment,HookAfterEnvironment,HookEntryOptions,HookAfterPlugins,HookAfterResolvers,HookInitialize flow-hook +`} + + + +
+ + + +{` +flowchart TD +Compile("compiler.compile(callback)") --> CompilationParams("Create module factories") +CompilationParams --> HookNormalModuleFactory(hooks.normalModuleFactory) +CompilationParams --> HookContextModuleFactory(hooks.contextModuleFactory) +CompilationParams --> HookBeforeCompile(hooks.beforeCompile) +HookBeforeCompile --> HookCompile(hooks.compile) +HookCompile --> Compilation("new Compilation()") +Compilation --> HookThisCompilation(hooks.thisCompilation) +HookThisCompilation --> HookCompilation(hooks.compilation) +HookCompilation --> HookMake(hooks.make) +HookMake --> CreateModuleGraph(Create module graph) +CreateModuleGraph <--> RunLoaders(Run loaders on modules) +CreateModuleGraph --> HookFinishMake(hooks.finishMake) +HookFinishMake --> CompilationFinish("compilation.finish()") +CompilationFinish --> CompilationSeal("compilation.seal()") +CompilationSeal --> HookAfterCompile(hooks.afterCompile) +HookAfterCompile --> Callback("callback()") + +class Compile flow-start +class Callback,CloseCallback flow-end +class CompilationParams,Compilation,CreateModuleGraph,RunLoaders,CompilationFinish,CompilationSeal flow-process +class HookBeforeCompile,HookCompile,HookThisCompilation,HookCompilation,HookMake,HookAfterCompile flow-hook +class HookNormalModuleFactory,HookContextModuleFactory,HookFinishMake flow-hook-non-support +`} + + + +
+ + + +{` +flowchart TD +WatchCompiler("compiler.watch(options, callback)") --> CreateWatching("new Watching()") +RunCompiler("compiler.run(callback)") --> HookBeforeRun(hooks.beforeRun) +HookBeforeRun --> HookRun(hooks.run) +HookRun --> HookReadRecords(hooks.readRecords) +CreateWatching --> HookReadRecords +HookReadRecords --> Compile("compiler.compile()") +HookWatchRun --> Compile +HookReadRecords --> HookWatchRun(hooks.watchRun) +Compile --> HookShouldEmit{hooks.shouldEmit} +HookShouldEmit --> |true| HookEmit(hooks.emit) +HookShouldEmit --> |false| HookDone(hooks.done) +HookEmit --> EmitAssets(Emit asset files) +EmitAssets <--> HookAssetEmitted(hooks.assetEmitted) +EmitAssets --> HookAfterEmit(hooks.afterEmit) +HookAfterEmit --> HookNeedAdditionalPass{hooks.needAdditionalPass} +HookNeedAdditionalPass --> |true| HookAdditionalDone(hooks.done) +HookAdditionalDone --> HookAdditionPass(hooks.additionalPass) +HookAdditionPass --> Compile +HookNeedAdditionalPass --> |false| HookEmitRecords(hooks.emitRecords) +HookEmitRecords --> HookDone +HookDone --> HookFailed(hooks.failed) +HookFailed --> Callback("callback(err, stats)") +Callback --> WatchingWatch("watching.watch()") +WatchingWatch --> HookAfterDone(hooks.afterDone) +WatchingWatch --> CollectFileChanges("Collect file changes") +CollectFileChanges --> HookReadRecords +Callback --> HookAfterDone + +HookAfterDone -.-> CloseCompile("compiler.close(callback)") +CloseCompile --> WatchingClose("watching.close()") +WatchingClose --> HookWatchClose(hooks.watchClose) +HookWatchClose --> CloseCallback("callback()") +CloseCallback --> HookShutdown(hooks.shutdown) + +class RunCompiler,WatchCompiler flow-start +class Callback flow-end +class Compile,EmitAssets,CollectFileChanges,CreateWatching,WatchingWatch flow-process +class HookBeforeRun,HookRun,HookShouldEmit,HookEmit,HookAfterEmit,HookDone,HookFailed,HookAfterDone,HookWatchRun flow-hook +class HookReadRecords,HookAssetEmitted,HookNeedAdditionalPass,HookAdditionPass,HookAdditionalDone,HookEmitRecords flow-hook-non-support + +class CloseCompile flow-start +class CloseCallback flow-end +class WatchingClose flow-process +class HookWatchClose,HookShutdown flow-hook +`} + + + +
+ +
+ ## `environment` Called while preparing the compiler environment, right after initializing the plugins in the configuration file. @@ -306,3 +432,9 @@ Called if the compilation fails. Called when a watching compilation has stopped. - **Type:** `SyncHook<[]>` + +## `shutdown` + +Called when the compiler is closing. + +- **Type:** `AsyncSeriesHook<[]>` diff --git a/website/docs/zh/api/plugin-api/compiler-hooks.mdx b/website/docs/zh/api/plugin-api/compiler-hooks.mdx index 018fe21f358..f8ef04e1d33 100644 --- a/website/docs/zh/api/plugin-api/compiler-hooks.mdx +++ b/website/docs/zh/api/plugin-api/compiler-hooks.mdx @@ -1,11 +1,138 @@ +import Mermaid from '@components/Mermaid'; import CompilerType from '../../types/compiler.mdx'; import CompilationType from '../../types/compilation.mdx'; import StatsType from '../../types/stats.mdx'; import { Collapse, CollapsePanel } from '@components/Collapse'; import { ApiMeta } from '@components/ApiMeta'; +import Columns from '@components/Columns'; +import { NoSSR } from 'rspress/runtime'; # Compiler 钩子 +## Overview + + + + + +
+ + + +{` +flowchart TD +CallRspack("rspack()") --> CreateCompiler("创建 Compiler 实例") +CreateCompiler --> ApplyNodeEnvPlugin(执行 NodeEnvironmentPlugin) +ApplyNodeEnvPlugin --> ApplyDefaultOptions(合并默认配置) +ApplyDefaultOptions --> ApplyCustomPlugins(执行自定义插件) +ApplyCustomPlugins --> HookEnvironment(hooks.environment) +HookEnvironment --> HookAfterEnvironment(hooks.afterEnvironment) +HookAfterEnvironment --> ApplyRspackPlugins(执行内部插件) +ApplyRspackPlugins <--> HookEntryOptions(hooks.entryOption) +ApplyRspackPlugins --> HookAfterPlugins(hooks.afterPlugins) +HookAfterPlugins --> ResolveOptions(获取路径解析配置(resolveOptions)) +ResolveOptions --> HookAfterResolvers(hooks.afterResolvers) +HookAfterResolvers --> HookInitialize(hooks.initialize) +HookInitialize --> compiler("返回 compiler 实例") + +class CallRspack flow-start +class compiler flow-end +class CreateCompiler,ApplyNodeEnvPlugin,ApplyDefaultOptions,ApplyCustomPlugins,ApplyRspackPlugins,ResolveOptions flow-process +class HookEnvironment,HookAfterEnvironment,HookEntryOptions,HookAfterPlugins,HookAfterResolvers,HookInitialize flow-hook +`} + + + +
+ + + +{` +flowchart TD +Compile("compiler.compile(callback)") --> CompilationParams("创建模块工厂") +CompilationParams --> HookNormalModuleFactory(hooks.normalModuleFactory) +CompilationParams --> HookContextModuleFactory(hooks.contextModuleFactory) +CompilationParams --> HookBeforeCompile(hooks.beforeCompile) +HookBeforeCompile --> HookCompile(hooks.compile) +HookCompile --> Compilation("创建 Compilation 实例") +Compilation --> HookThisCompilation(hooks.thisCompilation) +HookThisCompilation --> HookCompilation(hooks.compilation) +HookCompilation --> HookMake(hooks.make) +HookMake --> CreateModuleGraph(创建模块图) +CreateModuleGraph <--> RunLoaders(执行 loader 编译模块) +CreateModuleGraph --> HookFinishMake(hooks.finishMake) +HookFinishMake --> CompilationFinish("compilation.finish()") +CompilationFinish --> CompilationSeal("compilation.seal()") +CompilationSeal --> HookAfterCompile(hooks.afterCompile) +HookAfterCompile --> Callback("callback()") + +class Compile flow-start +class Callback,CloseCallback flow-end +class CompilationParams,Compilation,CreateModuleGraph,RunLoaders,CompilationFinish,CompilationSeal flow-process +class HookBeforeCompile,HookCompile,HookThisCompilation,HookCompilation,HookMake,HookAfterCompile flow-hook +class HookNormalModuleFactory,HookContextModuleFactory,HookFinishMake flow-hook-non-support +`} + + + +
+ + + +{` +flowchart TD +WatchCompiler("compiler.watch(options, callback)") --> CreateWatching("创建 Watching 实例") +RunCompiler("compiler.run(callback)") --> HookBeforeRun(hooks.beforeRun) +HookBeforeRun --> HookRun(hooks.run) +HookRun --> HookReadRecords(hooks.readRecords) +CreateWatching --> HookReadRecords +HookReadRecords --> Compile("compiler.compile()") +HookWatchRun --> Compile +HookReadRecords --> HookWatchRun(hooks.watchRun) +Compile --> HookShouldEmit{hooks.shouldEmit} +HookShouldEmit --> |是| HookEmit(hooks.emit) +HookShouldEmit --> |否| HookDone(hooks.done) +HookEmit --> EmitAssets(生成产物文件) +EmitAssets <--> HookAssetEmitted(hooks.assetEmitted) +EmitAssets --> HookAfterEmit(hooks.afterEmit) +HookAfterEmit --> HookNeedAdditionalPass{hooks.needAdditionalPass} +HookNeedAdditionalPass --> |是| HookAdditionalDone(hooks.done) +HookAdditionalDone --> HookAdditionPass(hooks.additionalPass) +HookAdditionPass --> Compile +HookNeedAdditionalPass --> |否| HookEmitRecords(hooks.emitRecords) +HookEmitRecords --> HookDone +HookDone --> HookFailed(hooks.failed) +HookFailed --> Callback("callback(err, stats)") +Callback --> WatchingWatch("watching.watch()") +WatchingWatch --> HookAfterDone(hooks.afterDone) +WatchingWatch --> CollectFileChanges("收集文件变更") +CollectFileChanges --> HookReadRecords +Callback --> HookAfterDone + +HookAfterDone -.-> CloseCompile("compiler.close(callback)") +CloseCompile --> WatchingClose("watching.close()") +WatchingClose --> HookWatchClose(hooks.watchClose) +HookWatchClose --> CloseCallback("callback()") +CloseCallback --> HookShutdown(hooks.shutdown) + +class RunCompiler,WatchCompiler flow-start +class Callback flow-end +class Compile,EmitAssets,CollectFileChanges,CreateWatching,WatchingWatch flow-process +class HookBeforeRun,HookRun,HookShouldEmit,HookEmit,HookAfterEmit,HookDone,HookFailed,HookAfterDone,HookWatchRun flow-hook +class HookReadRecords,HookAssetEmitted,HookNeedAdditionalPass,HookAdditionPass,HookAdditionalDone,HookEmitRecords flow-hook-non-support + +class CloseCompile flow-start +class CloseCallback flow-end +class WatchingClose flow-process +class HookWatchClose,HookShutdown flow-hook +`} + + + +
+ +
+ ## `environment` 在编译器准备环境时,初始化插件之后调用。 @@ -302,3 +429,9 @@ compilation 创建之后执行。 停止监听时调用。 - **类型:** `SyncHook<[]>` + +## `shutdown` + +当前 Compiler 关闭时调用。 + +- **Type:** `AsyncSeriesHook<[]>` diff --git a/website/package.json b/website/package.json index dca1482d477..0a7cc62b196 100644 --- a/website/package.json +++ b/website/package.json @@ -24,6 +24,7 @@ "axios": "^1.6.1", "date-fns": "^2.29.3", "markdown-to-jsx": "^7.2.1", + "mermaid": "^10.9.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-intersection-observer": "^9.4.3", diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml index 7dd337dc472..ff473ec7511 100644 --- a/website/pnpm-lock.yaml +++ b/website/pnpm-lock.yaml @@ -23,6 +23,9 @@ importers: markdown-to-jsx: specifier: ^7.2.1 version: 7.4.3(react@18.2.0) + mermaid: + specifier: ^10.9.0 + version: 10.9.1 react: specifier: ^18.2.0 version: 18.2.0 @@ -145,28 +148,24 @@ packages: engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - libc: [musl] '@biomejs/cli-linux-arm64@1.8.0': resolution: {integrity: sha512-cx725jTlJS6dskvJJwwCQaaMRBKE2Qss7ukzmx27Rn/DXRxz6tnnBix4FUGPf1uZfwrERkiJlbWM05JWzpvvXg==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - libc: [glibc] '@biomejs/cli-linux-x64-musl@1.8.0': resolution: {integrity: sha512-VPA4ocrAOak50VYl8gOAVnjuFFDpIUolShntc/aWM0pZfSIMbRucxnrfUfp44EVwayxjK6ruJTR5xEWj93WvDA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - libc: [musl] '@biomejs/cli-linux-x64@1.8.0': resolution: {integrity: sha512-cmgmhlD4QUxMhL1VdaNqnB81xBHb3R7huVNyYnPYzP+AykZ7XqJbPd1KcWAszNjUk2AHdx0aLKEBwCOWemxb2g==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - libc: [glibc] '@biomejs/cli-win32-arm64@1.8.0': resolution: {integrity: sha512-J31spvlh39FfRHQacYXxJX9PvTCH/a8+2Jx9D1lxw+LSF0JybqZcw/4JrlFUWUl4kF3yv8AuYUK0sENScc3g9w==} @@ -180,6 +179,9 @@ packages: cpu: [x64] os: [win32] + '@braintree/sanitize-url@6.0.4': + resolution: {integrity: sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==} + '@bufbuild/protobuf@1.10.0': resolution: {integrity: sha512-QDdVFLoN93Zjg36NoQPZfsVH9tZew7wKDKyV5qRdj8ntT4wQCOradQjRaTdwMhWUYsgKsvCINKKm87FdEk96Ag==} @@ -555,25 +557,21 @@ packages: resolution: {integrity: sha512-NlXtRlKcoBzB6EQEiXegW0nMToEPXD+hExaev0j1+uzsFrMJ0uIY49k6+DapwWZ8A2jUdvH7xdWT+eAXD3l/EA==} cpu: [arm64] os: [linux] - libc: [glibc] '@rspack/binding-linux-arm64-musl@1.0.0-beta.1': resolution: {integrity: sha512-fPS8ukoPgmBSUX4dt74flObcbYzO3uaP1bk4k/98Gr3Bw0ACDZ6h5nqlxoXoeVzhNcNMBcfv45un8H3i411AyA==} cpu: [arm64] os: [linux] - libc: [musl] '@rspack/binding-linux-x64-gnu@1.0.0-beta.1': resolution: {integrity: sha512-9U78G7BtevPZ9GEJ2AhGHt03n+GEhKVvEZ/tgu+flFV0tYGjq75QQX345x4m+uercTqzRBTyuWITweIzppeWuQ==} cpu: [x64] os: [linux] - libc: [glibc] '@rspack/binding-linux-x64-musl@1.0.0-beta.1': resolution: {integrity: sha512-qqNPseWAOKmV33YL7tihY0N9xwY+N1G9na6lT7iqZnsrzPkIZmESI9Z24fXVJqLC/UhfxAth4RKhVBeKTsPk1w==} cpu: [x64] os: [linux] - libc: [musl] '@rspack/binding-win32-arm64-msvc@1.0.0-beta.1': resolution: {integrity: sha512-VeBGYItHWqImYt23rBChXrk1o7fQxwTv6BEhtMpTnMJV10O6+Db9NckPEplcKLmNKAAA5anxH40GcpPc4nff8A==} @@ -721,6 +719,15 @@ packages: '@types/acorn@4.0.6': resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + '@types/d3-scale-chromatic@3.0.3': + resolution: {integrity: sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==} + + '@types/d3-scale@4.0.8': + resolution: {integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==} + + '@types/d3-time@3.0.3': + resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==} + '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -1035,6 +1042,14 @@ packages: resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} engines: {node: '>= 6'} + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + comment-json@4.2.3: resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} engines: {node: '>= 6'} @@ -1055,6 +1070,9 @@ packages: core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -1113,6 +1131,157 @@ 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@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'} + + dagre-d3-es@7.0.10: + resolution: {integrity: sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==} + data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} @@ -1140,6 +1309,9 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -1178,6 +1350,9 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} + dompurify@3.1.6: + resolution: {integrity: sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==} + domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -1194,6 +1369,9 @@ packages: electron-to-chromium@1.4.823: resolution: {integrity: sha512-4h+oPeAiGQOHFyUJOqpoEcPj/xxlicxBzOErVeYVMMmAiXUXsGpsFd0QXBMaUUbnD8hhSfLf9uw+MlsoIA7j5w==} + elkjs@0.9.3: + resolution: {integrity: sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1515,6 +1693,10 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + immutable@4.3.6: resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==} @@ -1536,6 +1718,13 @@ packages: inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + 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'} + invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -1662,9 +1851,16 @@ packages: jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + katex@0.16.11: + resolution: {integrity: sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==} + hasBin: true + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -1673,6 +1869,9 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + leac@0.6.0: resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} @@ -1793,6 +1992,9 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + mermaid@10.9.1: + resolution: {integrity: sha512-Mx45Obds5W1UkW1nv/7dHRsbfMM1aOKA2+Pxs/IGHNonygDHwmng8xTHyS9z4KWVi0rbko8gjiBmuwwXQ7tiNA==} + micromark-core-commonmark@1.1.0: resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} @@ -1951,6 +2153,9 @@ packages: node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + non-layered-tidy-tree-layout@2.0.2: + resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -2483,6 +2688,9 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + rsbuild-plugin-google-analytics@1.0.1: resolution: {integrity: sha512-l4LiloIJ23HVswNTeySsIi6Mx9EYvu2HVm8PaCdkEle6UCY7Kkqz0OM28RW1qo27k4xVyYncxQGtBWRay3oM1g==} peerDependencies: @@ -2519,6 +2727,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==} @@ -2529,6 +2740,9 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sass-embedded-android-arm64@1.77.8: resolution: {integrity: sha512-EmWHLbEx0Zo/f/lTFzMeH2Du+/I4RmSRlEnERSUKQWVp3aBSO04QDvdxfFezgQ+2Yt/ub9WMqBpma9P/8MPsLg==} engines: {node: '>=14.0.0'} @@ -2827,6 +3041,10 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + 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==} @@ -2898,6 +3116,10 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} engines: {node: '>=8'} @@ -2932,6 +3154,9 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} + web-worker@1.3.0: + resolution: {integrity: sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==} + webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} @@ -3073,6 +3298,8 @@ snapshots: '@biomejs/cli-win32-x64@1.8.0': optional: true + '@braintree/sanitize-url@6.0.4': {} + '@bufbuild/protobuf@1.10.0': {} '@cspell/cspell-bundled-dicts@8.7.0': @@ -3718,6 +3945,14 @@ snapshots: dependencies: '@types/estree': 1.0.5 + '@types/d3-scale-chromatic@3.0.3': {} + + '@types/d3-scale@4.0.8': + dependencies: + '@types/d3-time': 3.0.3 + + '@types/d3-time@3.0.3': {} + '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 @@ -4078,6 +4313,10 @@ snapshots: commander@6.2.1: {} + commander@7.2.0: {} + + commander@8.3.0: {} + comment-json@4.2.3: dependencies: array-timsort: 1.0.3 @@ -4104,6 +4343,10 @@ snapshots: core-util-is@1.0.3: {} + cose-base@1.0.3: + dependencies: + layout-base: 1.0.2 + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 @@ -4203,6 +4446,185 @@ 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@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 + + dagre-d3-es@7.0.10: + dependencies: + d3: 7.9.0 + lodash-es: 4.17.21 + data-uri-to-buffer@4.0.1: {} date-fns@2.30.0: @@ -4221,6 +4643,10 @@ snapshots: deepmerge@4.3.1: {} + delaunator@5.0.1: + dependencies: + robust-predicates: 3.0.2 + delayed-stream@1.0.0: {} dequal@2.0.3: {} @@ -4258,6 +4684,8 @@ snapshots: dependencies: domelementtype: 2.3.0 + dompurify@3.1.6: {} + domutils@2.8.0: dependencies: dom-serializer: 1.4.1 @@ -4278,6 +4706,8 @@ snapshots: electron-to-chromium@1.4.823: {} + elkjs@0.9.3: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -4654,6 +5084,10 @@ snapshots: human-signals@2.1.0: {} + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + immutable@4.3.6: {} import-fresh@3.3.0: @@ -4669,6 +5103,10 @@ snapshots: inline-style-parser@0.1.1: {} + internmap@1.0.1: {} + + internmap@2.0.3: {} + invariant@2.2.4: dependencies: loose-envify: 1.4.0 @@ -4776,14 +5214,22 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + katex@0.16.11: + dependencies: + commander: 8.3.0 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 + khroma@2.1.0: {} + kind-of@6.0.3: {} kleur@4.1.5: {} + layout-base@1.0.2: {} + leac@0.6.0: {} lilconfig@2.1.0: {} @@ -4987,6 +5433,31 @@ snapshots: merge2@1.4.1: {} + mermaid@10.9.1: + dependencies: + '@braintree/sanitize-url': 6.0.4 + '@types/d3-scale': 4.0.8 + '@types/d3-scale-chromatic': 3.0.3 + cytoscape: 3.30.2 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.30.2) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.10 + dayjs: 1.11.12 + dompurify: 3.1.6 + elkjs: 0.9.3 + katex: 0.16.11 + khroma: 2.1.0 + lodash-es: 4.17.21 + mdast-util-from-markdown: 1.3.1 + non-layered-tidy-tree-layout: 2.0.2 + stylis: 4.3.2 + ts-dedent: 2.2.0 + uuid: 9.0.1 + web-worker: 1.3.0 + transitivePeerDependencies: + - supports-color + micromark-core-commonmark@1.1.0: dependencies: decode-named-character-reference: 1.0.2 @@ -5294,6 +5765,8 @@ snapshots: node-releases@2.0.14: {} + non-layered-tidy-tree-layout@2.0.2: {} + normalize-path@3.0.0: {} npm-run-path@4.0.1: @@ -5955,6 +6428,8 @@ snapshots: reusify@1.0.4: {} + robust-predicates@3.0.2: {} + rsbuild-plugin-google-analytics@1.0.1(@rsbuild/core@1.0.1-beta.9): optionalDependencies: '@rsbuild/core': 1.0.1-beta.9 @@ -5989,6 +6464,8 @@ snapshots: dependencies: queue-microtask: 1.2.3 + rw@1.3.3: {} + rxjs@7.8.1: dependencies: tslib: 2.6.2 @@ -5999,6 +6476,8 @@ snapshots: safe-buffer@5.2.1: {} + safer-buffer@2.1.2: {} + sass-embedded-android-arm64@1.77.8: optional: true @@ -6263,6 +6742,8 @@ snapshots: trough@2.2.0: {} + ts-dedent@2.2.0: {} + ts-interface-checker@0.1.13: {} tslib@2.6.2: {} @@ -6343,6 +6824,8 @@ snapshots: util-deprecate@1.0.2: {} + uuid@9.0.1: {} + uvu@0.5.6: dependencies: dequal: 2.0.3 @@ -6382,6 +6865,8 @@ snapshots: web-streams-polyfill@3.3.3: {} + web-worker@1.3.0: {} + webpack-sources@3.2.3: {} webpack@5.91.0: