diff --git a/.cspell/libraries.txt b/.cspell/libraries.txt index e4d1b185a..c185429b0 100644 --- a/.cspell/libraries.txt +++ b/.cspell/libraries.txt @@ -20,6 +20,7 @@ dagre-d3 Deepdwn Docsify Docsy +Doctave DokuWiki dompurify elkjs diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml new file mode 100644 index 000000000..e6ccf1885 --- /dev/null +++ b/.github/workflows/autofix.yml @@ -0,0 +1,41 @@ +name: autofix.ci # needed to securely identify the workflow + +on: + pull_request: +permissions: + contents: read + +jobs: + autofix: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + # uses version from "packageManager" field in package.json + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + cache: pnpm + node-version-file: '.node-version' + + - name: Install Packages + run: | + pnpm install --frozen-lockfile + env: + CYPRESS_CACHE_FOLDER: .cache/Cypress + + - name: Fix Linting + shell: bash + run: pnpm -w run lint:fix + + - name: Sync `./src/config.type.ts` with `./src/schemas/config.schema.yaml` + shell: bash + run: pnpm run --filter mermaid types:build-config + + - name: Build Docs + working-directory: ./packages/mermaid + run: pnpm run docs:build + + - uses: autofix-ci/action@dd55f44df8f7cdb7a6bf74c78677eb8acd40cd0a diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index 87607bc2f..0ce778957 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -18,7 +18,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bf54772bc..c6e96912e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 # uses version from "packageManager" field in package.json - name: Setup Node.js diff --git a/.github/workflows/e2e-applitools.yml b/.github/workflows/e2e-applitools.yml index 1238fe371..5e5407a23 100644 --- a/.github/workflows/e2e-applitools.yml +++ b/.github/workflows/e2e-applitools.yml @@ -32,7 +32,7 @@ jobs: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 # uses version from "packageManager" field in package.json - name: Setup Node.js diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index a75bbf83d..2600b3fb8 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -24,6 +24,7 @@ env: ) || github.event.before }} + shouldRunParallel: ${{ secrets.CYPRESS_RECORD_KEY != '' && !(github.event_name == 'push' && github.ref == 'refs/heads/develop') }} jobs: cache: runs-on: ubuntu-latest @@ -32,7 +33,7 @@ jobs: options: --user 1001 steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: @@ -79,7 +80,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 # uses version from "packageManager" field in package.json - name: Setup Node.js @@ -116,7 +117,7 @@ jobs: id: cypress # If CYPRESS_RECORD_KEY is set, run in parallel on all containers # Otherwise (e.g. if running from fork), we run on a single container only - if: ${{ ( env.CYPRESS_RECORD_KEY != '' ) || ( matrix.containers == 1 ) }} + if: ${{ env.shouldRunParallel == 'true' || ( matrix.containers == 1 ) }} with: install: false start: pnpm run dev:coverage @@ -124,14 +125,14 @@ jobs: browser: chrome # Disable recording if we don't have an API key # e.g. if this action was run from a fork - record: ${{ secrets.CYPRESS_RECORD_KEY != '' }} - parallel: ${{ secrets.CYPRESS_RECORD_KEY != '' }} + record: ${{ env.shouldRunParallel == 'true' }} + parallel: ${{ env.shouldRunParallel == 'true' }} env: CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} VITEST_COVERAGE: true CYPRESS_COMMIT: ${{ github.sha }} ARGOS_TOKEN: ${{ secrets.ARGOS_TOKEN }} - ARGOS_PARALLEL: ${{ secrets.CYPRESS_RECORD_KEY != '' }} + ARGOS_PARALLEL: ${{ env.shouldRunParallel == 'true' }} ARGOS_PARALLEL_TOTAL: 4 ARGOS_PARALLEL_INDEX: ${{ matrix.containers }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 8f5995d71..632cd6ddc 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -19,7 +19,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 # uses version from "packageManager" field in package.json - name: Setup Node.js @@ -82,15 +82,3 @@ jobs: working-directory: ./packages/mermaid continue-on-error: ${{ github.event_name == 'push' }} run: pnpm run docs:verify - - - name: Rebuild Docs - if: ${{ steps.verifyDocs.outcome == 'failure' && github.event_name == 'push' }} - working-directory: ./packages/mermaid - run: pnpm run docs:build - - - name: Commit changes - uses: EndBug/add-and-commit@v9 - if: ${{ steps.verifyDocs.outcome == 'failure' && github.event_name == 'push' }} - with: - message: 'Update docs' - add: 'docs/*' diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml index fb70a90ec..4ff5f4117 100644 --- a/.github/workflows/publish-docs.yml +++ b/.github/workflows/publish-docs.yml @@ -25,7 +25,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/release-preview-publish.yml b/.github/workflows/release-preview-publish.yml index c763430b0..91e3ac981 100644 --- a/.github/workflows/release-preview-publish.yml +++ b/.github/workflows/release-preview-publish.yml @@ -13,7 +13,7 @@ jobs: with: fetch-depth: 0 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index dce461cf5..4dcf709c0 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -11,7 +11,7 @@ jobs: - uses: actions/checkout@v4 - uses: fregante/setup-git-user@v2 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 # uses version from "packageManager" field in package.json - name: Setup Node.js diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a4bd264e0..a0b284a68 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,7 +11,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 # uses version from "packageManager" field in package.json - name: Setup Node.js diff --git a/.github/workflows/update-browserlist.yml b/.github/workflows/update-browserlist.yml index 9aac3d7b3..f8f7696cd 100644 --- a/.github/workflows/update-browserlist.yml +++ b/.github/workflows/update-browserlist.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - run: npx update-browserslist-db@latest - name: Commit changes uses: EndBug/add-and-commit@v9 diff --git a/cypress/helpers/util.ts b/cypress/helpers/util.ts index c749f37de..133a35032 100644 --- a/cypress/helpers/util.ts +++ b/cypress/helpers/util.ts @@ -97,7 +97,7 @@ export const openURLAndVerifyRendering = ( const name: string = (options.name ?? cy.state('runnable').fullTitle()).replace(/\s+/g, '-'); cy.visit(url); - // cy.window().should('have.property', 'rendered', true); + cy.window().should('have.property', 'rendered', true); cy.get('svg').should('be.visible'); if (validation) { @@ -124,7 +124,9 @@ export const verifyScreenshot = (name: string): void => { cy.log(`Closing eyes ${Cypress.spec.name}`); cy.eyesClose(); } else if (useArgos) { - cy.argosScreenshot(name); + cy.argosScreenshot(name, { + threshold: 0.01, + }); } else { cy.matchImageSnapshot(name); } diff --git a/cypress/integration/rendering/block.spec.js b/cypress/integration/rendering/block.spec.js index 9d62c642d..f5d5103e8 100644 --- a/cypress/integration/rendering/block.spec.js +++ b/cypress/integration/rendering/block.spec.js @@ -236,7 +236,7 @@ describe('Block diagram', () => { ); }); - it('BL16: width alignment - blocks shold be equal in width', () => { + it('BL17: width alignment - blocks shold be equal in width', () => { imgSnapshotTest( `block-beta A("This is the text") @@ -247,7 +247,7 @@ describe('Block diagram', () => { ); }); - it('BL17: block types 1 - square, rounded and circle', () => { + it('BL18: block types 1 - square, rounded and circle', () => { imgSnapshotTest( `block-beta A["square"] @@ -258,7 +258,7 @@ describe('Block diagram', () => { ); }); - it('BL18: block types 2 - odd, diamond and hexagon', () => { + it('BL19: block types 2 - odd, diamond and hexagon', () => { imgSnapshotTest( `block-beta A>"rect_left_inv_arrow"] @@ -269,7 +269,7 @@ describe('Block diagram', () => { ); }); - it('BL19: block types 3 - stadium', () => { + it('BL20: block types 3 - stadium', () => { imgSnapshotTest( `block-beta A(["stadium"]) @@ -278,7 +278,7 @@ describe('Block diagram', () => { ); }); - it('BL20: block types 4 - lean right, lean left, trapezoid and inv trapezoid', () => { + it('BL21: block types 4 - lean right, lean left, trapezoid and inv trapezoid', () => { imgSnapshotTest( `block-beta A[/"lean right"/] @@ -290,7 +290,7 @@ describe('Block diagram', () => { ); }); - it('BL21: block types 1 - square, rounded and circle', () => { + it('BL22: block types 1 - square, rounded and circle', () => { imgSnapshotTest( `block-beta A["square"] @@ -301,7 +301,7 @@ describe('Block diagram', () => { ); }); - it('BL22: sizing - it should be possible to make a block wider', () => { + it('BL23: sizing - it should be possible to make a block wider', () => { imgSnapshotTest( `block-beta A("rounded"):2 @@ -312,7 +312,7 @@ describe('Block diagram', () => { ); }); - it('BL23: sizing - it should be possible to make a composite block wider', () => { + it('BL24: sizing - it should be possible to make a composite block wider', () => { imgSnapshotTest( `block-beta block:2 @@ -324,7 +324,7 @@ describe('Block diagram', () => { ); }); - it('BL24: block in the middle with space on each side', () => { + it('BL25: block in the middle with space on each side', () => { imgSnapshotTest( `block-beta columns 3 @@ -335,7 +335,7 @@ describe('Block diagram', () => { {} ); }); - it('BL25: space and an edge', () => { + it('BL26: space and an edge', () => { imgSnapshotTest( `block-beta columns 5 @@ -345,7 +345,7 @@ describe('Block diagram', () => { {} ); }); - it('BL26: block sizes for regular blocks', () => { + it('BL27: block sizes for regular blocks', () => { imgSnapshotTest( `block-beta columns 3 @@ -354,7 +354,7 @@ describe('Block diagram', () => { {} ); }); - it('BL27: composite block with a set width - f should use the available space', () => { + it('BL28: composite block with a set width - f should use the available space', () => { imgSnapshotTest( `block-beta columns 3 @@ -363,11 +363,12 @@ describe('Block diagram', () => { f end g - `, + `, {} ); }); - it('BL23: composite block with a set width - f and g should split the available space', () => { + + it('BL29: composite block with a set width - f and g should split the available space', () => { imgSnapshotTest( `block-beta columns 3 @@ -379,7 +380,7 @@ describe('Block diagram', () => { h i j - `, + `, {} ); }); diff --git a/cypress/integration/rendering/c4.spec.js b/cypress/integration/rendering/c4.spec.js index f699bd429..00e71adec 100644 --- a/cypress/integration/rendering/c4.spec.js +++ b/cypress/integration/rendering/c4.spec.js @@ -1,7 +1,7 @@ import { imgSnapshotTest, renderGraph } from '../../helpers/util.ts'; describe('C4 diagram', () => { - it('should render a simple C4Context diagram', () => { + it('C4.1 should render a simple C4Context diagram', () => { imgSnapshotTest( ` C4Context @@ -31,7 +31,7 @@ describe('C4 diagram', () => { {} ); }); - it('should render a simple C4Container diagram', () => { + it('C4.2 should render a simple C4Container diagram', () => { imgSnapshotTest( ` C4Container @@ -50,7 +50,7 @@ describe('C4 diagram', () => { {} ); }); - it('should render a simple C4Component diagram', () => { + it('C4.3 should render a simple C4Component diagram', () => { imgSnapshotTest( ` C4Component @@ -68,7 +68,7 @@ describe('C4 diagram', () => { {} ); }); - it('should render a simple C4Dynamic diagram', () => { + it('C4.4 should render a simple C4Dynamic diagram', () => { imgSnapshotTest( ` C4Dynamic @@ -91,7 +91,7 @@ describe('C4 diagram', () => { {} ); }); - it('should render a simple C4Deployment diagram', () => { + it('C4.5 should render a simple C4Deployment diagram', () => { imgSnapshotTest( ` C4Deployment diff --git a/cypress/integration/rendering/classDiagram-v2.spec.js b/cypress/integration/rendering/classDiagram-v2.spec.js index 20a1aea0a..258f8529f 100644 --- a/cypress/integration/rendering/classDiagram-v2.spec.js +++ b/cypress/integration/rendering/classDiagram-v2.spec.js @@ -76,7 +76,7 @@ describe('Class diagram V2', () => { ); }); - it('should render a simple class diagram with different visibilities', () => { + it('2.1 should render a simple class diagram with different visibilities', () => { imgSnapshotTest( ` classDiagram-v2 @@ -93,7 +93,7 @@ describe('Class diagram V2', () => { ); }); - it('should render multiple class diagrams', () => { + it('3: should render multiple class diagrams', () => { imgSnapshotTest( [ ` diff --git a/cypress/integration/rendering/errorDiagram.spec.js b/cypress/integration/rendering/errorDiagram.spec.js index e837565d3..9eeb2e310 100644 --- a/cypress/integration/rendering/errorDiagram.spec.js +++ b/cypress/integration/rendering/errorDiagram.spec.js @@ -3,7 +3,7 @@ import { imgSnapshotTest } from '../../helpers/util'; describe('Error Diagrams', () => { beforeEach(() => { cy.on('uncaught:exception', (err) => { - expect(err.message).to.include('Parse error'); + expect(err.message).to.include('error'); // return false to prevent the error from // failing this test return false; diff --git a/cypress/integration/rendering/flowchart-elk.spec.js b/cypress/integration/rendering/flowchart-elk.spec.js index e931025e9..f3b022fc4 100644 --- a/cypress/integration/rendering/flowchart-elk.spec.js +++ b/cypress/integration/rendering/flowchart-elk.spec.js @@ -855,7 +855,7 @@ describe('Title and arrow styling #4813', () => { flowchart LR A-->B A-->C`, - { flowchart: { defaultRenderer: 'elk' } } + { layout: 'elk' } ); cy.get('svg').should((svg) => { const title = svg[0].querySelector('text'); @@ -871,15 +871,15 @@ describe('Title and arrow styling #4813', () => { B-.-oC C==xD D ~~~ A`, - { flowchart: { defaultRenderer: 'elk' } } + { layout: 'elk' } ); cy.get('svg').should((svg) => { const edges = svg[0].querySelectorAll('.edges path'); - console.log(edges); - expect(edges[0]).to.have.attr('pattern', 'solid'); - expect(edges[1]).to.have.attr('pattern', 'dotted'); - expect(edges[2]).to.have.css('stroke-width', '3.5px'); - expect(edges[3]).to.have.css('stroke-width', '1.5px'); + // console.log(edges); + // expect(edges[0]).to.have.attr('pattern', 'solid'); + // expect(edges[1]).to.have.attr('pattern', 'dotted'); + // expect(edges[2]).to.have.css('stroke-width', '3.5px'); + // expect(edges[3]).to.have.css('stroke-width', '1.5px'); }); }); }); diff --git a/cypress/integration/rendering/flowchart-v2.spec.js b/cypress/integration/rendering/flowchart-v2.spec.js index 3eb2a0432..c2fd0b011 100644 --- a/cypress/integration/rendering/flowchart-v2.spec.js +++ b/cypress/integration/rendering/flowchart-v2.spec.js @@ -99,7 +99,7 @@ describe('Flowchart v2', () => { const style = svg.attr('style'); expect(style).to.match(/^max-width: [\d.]+px;$/); const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join('')); - expect(maxWidthValue).to.be.within(290 * 0.95 - 1, 290 * 1.05); + expect(maxWidthValue).to.be.within(446 * 0.95 - 1, 446 * 1.05); }); }); it('8: should render a flowchart when useMaxWidth is false', () => { @@ -118,7 +118,7 @@ describe('Flowchart v2', () => { const width = parseFloat(svg.attr('width')); // use within because the absolute value can be slightly different depending on the environment ±5% // expect(height).to.be.within(446 * 0.95, 446 * 1.05); - expect(width).to.be.within(290 * 0.95 - 1, 290 * 1.05); + expect(width).to.be.within(446 * 0.95 - 1, 446 * 1.05); expect(svg).to.not.have.attr('style'); }); }); @@ -1047,7 +1047,9 @@ end A --lb3--> TOP --lb4--> B B1 --lb5--> B2 `, - { flowchart: { subGraphTitleMargin: { top: 10, bottom: 5 } } } + { + flowchart: { subGraphTitleMargin: { top: 10, bottom: 5 } }, + } ); }); }); diff --git a/cypress/integration/rendering/flowchart.spec.js b/cypress/integration/rendering/flowchart.spec.js index e4766e792..d3a83ae5f 100644 --- a/cypress/integration/rendering/flowchart.spec.js +++ b/cypress/integration/rendering/flowchart.spec.js @@ -733,7 +733,7 @@ describe('Graph', () => { }); it('38: should render a flowchart when useMaxWidth is true (default)', () => { renderGraph( - `graph TD + `flowchart TD A[Christmas] -->|Get money| B(Go shopping) B --> C{Let me think} C -->|One| D[Laptop] @@ -751,7 +751,7 @@ describe('Graph', () => { const style = svg.attr('style'); expect(style).to.match(/^max-width: [\d.]+px;$/); const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join('')); - expect(maxWidthValue).to.be.within(300 * 0.9, 300 * 1.1); + expect(maxWidthValue).to.be.within(446 * 0.9, 446 * 1.1); }); }); it('39: should render a flowchart when useMaxWidth is false', () => { @@ -770,7 +770,7 @@ describe('Graph', () => { const width = parseFloat(svg.attr('width')); // use within because the absolute value can be slightly different depending on the environment ±10% // expect(height).to.be.within(446 * 0.95, 446 * 1.05); - expect(width).to.be.within(300 * 0.9, 300 * 1.1); + expect(width).to.be.within(446 * 0.9, 446 * 1.1); expect(svg).to.not.have.attr('style'); }); }); @@ -905,13 +905,16 @@ graph TD it('67: should be able to style default node independently', () => { imgSnapshotTest( ` - flowchart TD + flowchart TD classDef default fill:#a34 hello --> default style default stroke:#000,stroke-width:4px `, - { htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' } + { + flowchart: { htmlLabels: true }, + securityLevel: 'loose', + } ); }); }); diff --git a/cypress/integration/rendering/gitGraph.spec.js b/cypress/integration/rendering/gitGraph.spec.js index 68b63de46..249febd08 100644 --- a/cypress/integration/rendering/gitGraph.spec.js +++ b/cypress/integration/rendering/gitGraph.spec.js @@ -1532,5 +1532,41 @@ gitGraph TB: {} ); }); + it('75: should render a gitGraph with multiple tags on a merge commit on bottom-to-top orientation', () => { + imgSnapshotTest( + `gitGraph BT: + commit id: "ZERO" + branch develop + commit id:"A" + checkout main + commit id:"ONE" + checkout develop + commit id:"B" + checkout main + merge develop id:"Release 1.0" type:HIGHLIGHT tag: "SAML v2.0" tag: "OpenID v1.1" + commit id:"TWO" + checkout develop + commit id:"C"`, + {} + ); + }); + }); + it('76: should render a gitGraph with multiple tags on a merge commit on left-to-right orientation', () => { + imgSnapshotTest( + `gitGraph + commit id: "ZERO" + branch develop + commit id:"A" + checkout main + commit id:"ONE" + checkout develop + commit id:"B" + checkout main + merge develop id:"Release 1.0" type:HIGHLIGHT tag: "SAML v2.0" tag: "OpenID v1.1" + commit id:"TWO" + checkout develop + commit id:"C"`, + {} + ); }); }); diff --git a/cypress/integration/rendering/packet.spec.ts b/cypress/integration/rendering/packet.spec.ts index 61555ea53..c64538875 100644 --- a/cypress/integration/rendering/packet.spec.ts +++ b/cypress/integration/rendering/packet.spec.ts @@ -10,6 +10,15 @@ describe('packet structure', () => { ); }); + it('should render a simple packet diagram without ranges', () => { + imgSnapshotTest( + `packet-beta + 0: "h" + 1: "i" +` + ); + }); + it('should render a complex packet diagram', () => { imgSnapshotTest( `packet-beta diff --git a/cypress/platform/viewer.js b/cypress/platform/viewer.js index cb0f9b272..beb7015a5 100644 --- a/cypress/platform/viewer.js +++ b/cypress/platform/viewer.js @@ -1,5 +1,5 @@ import mermaid from './mermaid.esm.mjs'; -// import flowchartELK from './mermaid-flowchart-elk.esm.mjs'; +import { layouts } from './mermaid-layout-elk.esm.mjs'; import externalExample from './mermaid-example-diagram.esm.mjs'; import zenUml from './mermaid-zenuml.esm.mjs'; @@ -47,8 +47,9 @@ const contentLoaded = async function () { document.getElementsByTagName('body')[0].appendChild(div); } - // await mermaid.registerExternalDiagrams([externalExample, zenUml, flowchartELK]); await mermaid.registerExternalDiagrams([externalExample, zenUml]); + + mermaid.registerLayoutLoaders(layouts); mermaid.initialize(graphObj.mermaid); await mermaid.run(); } diff --git a/docs/config/setup/interfaces/mermaid.LayoutData.md b/docs/config/setup/interfaces/mermaid.LayoutData.md new file mode 100644 index 000000000..6f128f4a7 --- /dev/null +++ b/docs/config/setup/interfaces/mermaid.LayoutData.md @@ -0,0 +1,43 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/setup/interfaces/mermaid.LayoutData.md](../../../../packages/mermaid/src/docs/config/setup/interfaces/mermaid.LayoutData.md). + +# Interface: LayoutData + +[mermaid](../modules/mermaid.md).LayoutData + +## Indexable + +▪ \[key: `string`]: `any` + +## Properties + +### config + +• **config**: `MermaidConfig` + +#### Defined in + +[packages/mermaid/src/rendering-util/types.d.ts:118](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.d.ts#L118) + +--- + +### edges + +• **edges**: `Edge`\[] + +#### Defined in + +[packages/mermaid/src/rendering-util/types.d.ts:117](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.d.ts#L117) + +--- + +### nodes + +• **nodes**: `Node`\[] + +#### Defined in + +[packages/mermaid/src/rendering-util/types.d.ts:116](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.d.ts#L116) diff --git a/docs/config/setup/interfaces/mermaid.Mermaid.md b/docs/config/setup/interfaces/mermaid.Mermaid.md index 2ee50e2bc..a340c7a97 100644 --- a/docs/config/setup/interfaces/mermaid.Mermaid.md +++ b/docs/config/setup/interfaces/mermaid.Mermaid.md @@ -28,7 +28,7 @@ page. #### Defined in -[packages/mermaid/src/mermaid.ts:430](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L430) +[packages/mermaid/src/mermaid.ts:432](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L432) --- @@ -59,7 +59,7 @@ A graph definition key #### Defined in -[packages/mermaid/src/mermaid.ts:432](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L432) +[packages/mermaid/src/mermaid.ts:434](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L434) --- @@ -89,7 +89,7 @@ Use [initialize](mermaid.Mermaid.md#initialize) and [run](mermaid.Mermaid.md#run #### Defined in -[packages/mermaid/src/mermaid.ts:425](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L425) +[packages/mermaid/src/mermaid.ts:427](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L427) --- @@ -116,7 +116,7 @@ This function should be called before the run function. #### Defined in -[packages/mermaid/src/mermaid.ts:429](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L429) +[packages/mermaid/src/mermaid.ts:431](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L431) --- @@ -159,7 +159,7 @@ Internal helpers for mermaid #### Defined in -[packages/mermaid/src/mermaid.ts:437](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L437) +[packages/mermaid/src/mermaid.ts:439](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L439) --- @@ -173,7 +173,7 @@ Use [parse](mermaid.Mermaid.md#parse) and [render](mermaid.Mermaid.md#render) in #### Defined in -[packages/mermaid/src/mermaid.ts:419](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L419) +[packages/mermaid/src/mermaid.ts:421](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L421) --- @@ -223,7 +223,7 @@ Error if the diagram is invalid and parseOptions.suppressErrors is false or not #### Defined in -[packages/mermaid/src/mermaid.ts:420](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L420) +[packages/mermaid/src/mermaid.ts:422](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L422) --- @@ -233,7 +233,7 @@ Error if the diagram is invalid and parseOptions.suppressErrors is false or not #### Defined in -[packages/mermaid/src/mermaid.ts:414](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L414) +[packages/mermaid/src/mermaid.ts:416](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L416) --- @@ -261,7 +261,7 @@ Used to register external diagram types. #### Defined in -[packages/mermaid/src/mermaid.ts:428](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L428) +[packages/mermaid/src/mermaid.ts:430](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L430) --- @@ -285,7 +285,7 @@ Used to register external diagram types. #### Defined in -[packages/mermaid/src/mermaid.ts:427](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L427) +[packages/mermaid/src/mermaid.ts:429](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L429) --- @@ -311,7 +311,7 @@ Used to register external diagram types. #### Defined in -[packages/mermaid/src/mermaid.ts:421](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L421) +[packages/mermaid/src/mermaid.ts:423](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L423) --- @@ -359,7 +359,7 @@ Renders the mermaid diagrams #### Defined in -[packages/mermaid/src/mermaid.ts:426](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L426) +[packages/mermaid/src/mermaid.ts:428](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L428) --- @@ -394,7 +394,7 @@ to it (eg. dart interop wrapper). (Initially there is no parseError member of me #### Defined in -[packages/mermaid/src/mermaid.ts:431](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L431) +[packages/mermaid/src/mermaid.ts:433](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L433) --- @@ -404,4 +404,4 @@ to it (eg. dart interop wrapper). (Initially there is no parseError member of me #### Defined in -[packages/mermaid/src/mermaid.ts:413](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L413) +[packages/mermaid/src/mermaid.ts:415](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L415) diff --git a/docs/config/setup/interfaces/mermaid.MermaidConfig.md b/docs/config/setup/interfaces/mermaid.MermaidConfig.md index 021498d6d..7cd0e7e78 100644 --- a/docs/config/setup/interfaces/mermaid.MermaidConfig.md +++ b/docs/config/setup/interfaces/mermaid.MermaidConfig.md @@ -16,7 +16,7 @@ #### Defined in -[packages/mermaid/src/config.type.ts:110](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L110) +[packages/mermaid/src/config.type.ts:112](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L112) --- @@ -29,7 +29,7 @@ This matters if you are using base tag settings. #### Defined in -[packages/mermaid/src/config.type.ts:129](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L129) +[packages/mermaid/src/config.type.ts:131](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L131) --- @@ -39,7 +39,7 @@ This matters if you are using base tag settings. #### Defined in -[packages/mermaid/src/config.type.ts:187](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L187) +[packages/mermaid/src/config.type.ts:189](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L189) --- @@ -49,7 +49,7 @@ This matters if you are using base tag settings. #### Defined in -[packages/mermaid/src/config.type.ts:184](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L184) +[packages/mermaid/src/config.type.ts:186](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L186) --- @@ -59,7 +59,7 @@ This matters if you are using base tag settings. #### Defined in -[packages/mermaid/src/config.type.ts:175](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L175) +[packages/mermaid/src/config.type.ts:177](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L177) --- @@ -69,7 +69,7 @@ This matters if you are using base tag settings. #### Defined in -[packages/mermaid/src/config.type.ts:101](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L101) +[packages/mermaid/src/config.type.ts:103](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L103) --- @@ -83,7 +83,7 @@ You can set this attribute to base the seed on a static string. #### Defined in -[packages/mermaid/src/config.type.ts:169](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L169) +[packages/mermaid/src/config.type.ts:171](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L171) --- @@ -101,7 +101,7 @@ should not change unless content is changed. #### Defined in -[packages/mermaid/src/config.type.ts:162](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L162) +[packages/mermaid/src/config.type.ts:164](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L164) --- @@ -111,31 +111,24 @@ should not change unless content is changed. #### Defined in -[packages/mermaid/src/config.type.ts:188](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L188) +[packages/mermaid/src/config.type.ts:190](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L190) --- -### elk.mergeEdges +### elk -• `Optional` **elk.mergeEdges**: `boolean` +• `Optional` **elk**: `Object` -Elk specific option that allows egdes to share path where it convenient. It can make for pretty diagrams but can also make it harder to read the diagram. +#### Type declaration + +| Name | Type | Description | +| :----------------------- | :---------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `mergeEdges?` | `boolean` | Elk specific option that allows edges to share path where it convenient. It can make for pretty diagrams but can also make it harder to read the diagram. | +| `nodePlacementStrategy?` | `"SIMPLE"` \| `"NETWORK_SIMPLEX"` \| `"LINEAR_SEGMENTS"` \| `"BRANDES_KOEPF"` | Elk specific option affecting how nodes are placed. | #### Defined in -[packages/mermaid/src/config.type.ts:95](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L95) - ---- - -### elk.nodePlacement.strategy - -• `Optional` **elk.nodePlacement.strategy**: `"SIMPLE"` | `"NETWORK_SIMPLEX"` | `"LINEAR_SEGMENTS"` | `"BRANDES_KOEPF"` - -Elk specific option affedcting how nodes are placed. - -#### Defined in - -[packages/mermaid/src/config.type.ts:100](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L100) +[packages/mermaid/src/config.type.ts:91](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L91) --- @@ -145,7 +138,7 @@ Elk specific option affedcting how nodes are placed. #### Defined in -[packages/mermaid/src/config.type.ts:177](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L177) +[packages/mermaid/src/config.type.ts:179](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L179) --- @@ -155,7 +148,7 @@ Elk specific option affedcting how nodes are placed. #### Defined in -[packages/mermaid/src/config.type.ts:170](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L170) +[packages/mermaid/src/config.type.ts:172](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L172) --- @@ -169,7 +162,7 @@ See #### Defined in -[packages/mermaid/src/config.type.ts:109](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L109) +[packages/mermaid/src/config.type.ts:111](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L111) --- @@ -179,7 +172,7 @@ See #### Defined in -[packages/mermaid/src/config.type.ts:190](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L190) +[packages/mermaid/src/config.type.ts:192](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L192) --- @@ -193,7 +186,7 @@ If set to true, ignores legacyMathML. #### Defined in -[packages/mermaid/src/config.type.ts:151](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L151) +[packages/mermaid/src/config.type.ts:153](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L153) --- @@ -203,7 +196,7 @@ If set to true, ignores legacyMathML. #### Defined in -[packages/mermaid/src/config.type.ts:172](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L172) +[packages/mermaid/src/config.type.ts:174](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L174) --- @@ -213,7 +206,7 @@ If set to true, ignores legacyMathML. #### Defined in -[packages/mermaid/src/config.type.ts:183](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L183) +[packages/mermaid/src/config.type.ts:185](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L185) --- @@ -235,7 +228,7 @@ Defines the seed to be used when using handdrawn look. This is important for the #### Defined in -[packages/mermaid/src/config.type.ts:102](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L102) +[packages/mermaid/src/config.type.ts:104](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L104) --- @@ -245,7 +238,7 @@ Defines the seed to be used when using handdrawn look. This is important for the #### Defined in -[packages/mermaid/src/config.type.ts:173](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L173) +[packages/mermaid/src/config.type.ts:175](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L175) --- @@ -272,7 +265,7 @@ fall back to legacy rendering for KaTeX. #### Defined in -[packages/mermaid/src/config.type.ts:144](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L144) +[packages/mermaid/src/config.type.ts:146](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L146) --- @@ -284,7 +277,7 @@ This option decides the amount of logging to be used by mermaid. #### Defined in -[packages/mermaid/src/config.type.ts:115](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L115) +[packages/mermaid/src/config.type.ts:117](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L117) --- @@ -306,7 +299,7 @@ Defines which main look to use for the diagram. #### Defined in -[packages/mermaid/src/config.type.ts:191](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L191) +[packages/mermaid/src/config.type.ts:193](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L193) --- @@ -340,7 +333,7 @@ The maximum allowed size of the users text diagram #### Defined in -[packages/mermaid/src/config.type.ts:182](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L182) +[packages/mermaid/src/config.type.ts:184](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L184) --- @@ -350,7 +343,7 @@ The maximum allowed size of the users text diagram #### Defined in -[packages/mermaid/src/config.type.ts:186](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L186) +[packages/mermaid/src/config.type.ts:188](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L188) --- @@ -360,7 +353,7 @@ The maximum allowed size of the users text diagram #### Defined in -[packages/mermaid/src/config.type.ts:178](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L178) +[packages/mermaid/src/config.type.ts:180](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L180) --- @@ -370,7 +363,7 @@ The maximum allowed size of the users text diagram #### Defined in -[packages/mermaid/src/config.type.ts:179](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L179) +[packages/mermaid/src/config.type.ts:181](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L181) --- @@ -380,7 +373,7 @@ The maximum allowed size of the users text diagram #### Defined in -[packages/mermaid/src/config.type.ts:181](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L181) +[packages/mermaid/src/config.type.ts:183](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L183) --- @@ -390,7 +383,7 @@ The maximum allowed size of the users text diagram #### Defined in -[packages/mermaid/src/config.type.ts:185](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L185) +[packages/mermaid/src/config.type.ts:187](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L187) --- @@ -404,7 +397,7 @@ This prevents malicious graph directives from overriding a site's default securi #### Defined in -[packages/mermaid/src/config.type.ts:136](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L136) +[packages/mermaid/src/config.type.ts:138](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L138) --- @@ -416,7 +409,7 @@ Level of trust for parsed diagram #### Defined in -[packages/mermaid/src/config.type.ts:119](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L119) +[packages/mermaid/src/config.type.ts:121](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L121) --- @@ -426,7 +419,7 @@ Level of trust for parsed diagram #### Defined in -[packages/mermaid/src/config.type.ts:171](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L171) +[packages/mermaid/src/config.type.ts:173](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L173) --- @@ -438,7 +431,7 @@ Dictates whether mermaid starts on Page load #### Defined in -[packages/mermaid/src/config.type.ts:123](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L123) +[packages/mermaid/src/config.type.ts:125](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L125) --- @@ -448,7 +441,7 @@ Dictates whether mermaid starts on Page load #### Defined in -[packages/mermaid/src/config.type.ts:176](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L176) +[packages/mermaid/src/config.type.ts:178](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L178) --- @@ -461,7 +454,7 @@ This is useful when you want to control how to handle syntax errors in your appl #### Defined in -[packages/mermaid/src/config.type.ts:197](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L197) +[packages/mermaid/src/config.type.ts:199](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L199) --- @@ -504,7 +497,7 @@ You may also use `themeCSS` to override this value. #### Defined in -[packages/mermaid/src/config.type.ts:174](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L174) +[packages/mermaid/src/config.type.ts:176](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L176) --- @@ -514,7 +507,7 @@ You may also use `themeCSS` to override this value. #### Defined in -[packages/mermaid/src/config.type.ts:189](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L189) +[packages/mermaid/src/config.type.ts:191](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L191) --- @@ -524,4 +517,4 @@ You may also use `themeCSS` to override this value. #### Defined in -[packages/mermaid/src/config.type.ts:180](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L180) +[packages/mermaid/src/config.type.ts:182](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L182) diff --git a/docs/config/setup/interfaces/mermaid.RunOptions.md b/docs/config/setup/interfaces/mermaid.RunOptions.md index 5f7039bb8..6fccdc454 100644 --- a/docs/config/setup/interfaces/mermaid.RunOptions.md +++ b/docs/config/setup/interfaces/mermaid.RunOptions.md @@ -18,7 +18,7 @@ The nodes to render. If this is set, `querySelector` will be ignored. #### Defined in -[packages/mermaid/src/mermaid.ts:43](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L43) +[packages/mermaid/src/mermaid.ts:45](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L45) --- @@ -44,7 +44,7 @@ A callback to call after each diagram is rendered. #### Defined in -[packages/mermaid/src/mermaid.ts:47](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L47) +[packages/mermaid/src/mermaid.ts:49](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L49) --- @@ -56,7 +56,7 @@ The query selector to use when finding elements to render. Default: `".mermaid"` #### Defined in -[packages/mermaid/src/mermaid.ts:39](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L39) +[packages/mermaid/src/mermaid.ts:41](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L41) --- @@ -68,4 +68,4 @@ If `true`, errors will be logged to the console, but not thrown. Default: `false #### Defined in -[packages/mermaid/src/mermaid.ts:51](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L51) +[packages/mermaid/src/mermaid.ts:53](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L53) diff --git a/docs/config/setup/modules/defaultConfig.md b/docs/config/setup/modules/defaultConfig.md index 512d24036..0f0ace33c 100644 --- a/docs/config/setup/modules/defaultConfig.md +++ b/docs/config/setup/modules/defaultConfig.md @@ -14,7 +14,7 @@ #### Defined in -[packages/mermaid/src/defaultConfig.ts:275](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L275) +[packages/mermaid/src/defaultConfig.ts:279](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L279) --- diff --git a/docs/config/setup/modules/mermaid.md b/docs/config/setup/modules/mermaid.md index 52a3f8f86..ac1bbece0 100644 --- a/docs/config/setup/modules/mermaid.md +++ b/docs/config/setup/modules/mermaid.md @@ -14,6 +14,7 @@ - [DetailedError](../interfaces/mermaid.DetailedError.md) - [ExternalDiagramDefinition](../interfaces/mermaid.ExternalDiagramDefinition.md) +- [LayoutData](../interfaces/mermaid.LayoutData.md) - [LayoutLoaderDefinition](../interfaces/mermaid.LayoutLoaderDefinition.md) - [Mermaid](../interfaces/mermaid.Mermaid.md) - [MermaidConfig](../interfaces/mermaid.MermaidConfig.md) @@ -55,4 +56,4 @@ #### Defined in -[packages/mermaid/src/mermaid.ts:440](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L440) +[packages/mermaid/src/mermaid.ts:442](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L442) diff --git a/docs/ecosystem/integrations-community.md b/docs/ecosystem/integrations-community.md index b7dd757b7..6b9190a9d 100644 --- a/docs/ecosystem/integrations-community.md +++ b/docs/ecosystem/integrations-community.md @@ -42,6 +42,8 @@ To add an integration to this list, see the [Integrations - create page](./integ - [CloudScript.io Mermaid Addon](https://marketplace.atlassian.com/apps/1219878/cloudscript-io-mermaid-addon?hosting=cloud&tab=overview) - [Azure Devops](https://learn.microsoft.com/en-us/azure/devops/project/wiki/markdown-guidance?view=azure-devops#add-mermaid-diagrams-to-a-wiki-page) ✅ - [Deepdwn](https://billiam.itch.io/deepdwn) ✅ +- [Doctave](https://www.doctave.com/) ✅ + - [Mermaid in Markdown code blocks](https://docs.doctave.com/components/mermaid) ✅ - [GitBook](https://gitbook.com) - [Mermaid Plugin](https://github.com/JozoVilcek/gitbook-plugin-mermaid) - [Mermaid plugin for GitBook](https://github.com/wwformat/gitbook-plugin-mermaid-pdf) @@ -206,6 +208,7 @@ Communication tools and platforms - [gatsby-remark-mermaid](https://github.com/remcohaszing/gatsby-remark-mermaid) - [JSDoc](https://jsdoc.app/) - [jsdoc-mermaid](https://github.com/Jellyvision/jsdoc-mermaid) +- [Madness](https://madness.dannyb.co/) - [mdBook](https://rust-lang.github.io/mdBook/index.html) - [mdbook-mermaid](https://github.com/badboy/mdbook-mermaid) - [MkDocs](https://www.mkdocs.org) diff --git a/docs/syntax/entityRelationshipDiagram.md b/docs/syntax/entityRelationshipDiagram.md index c60902985..ae84d1e9e 100644 --- a/docs/syntax/entityRelationshipDiagram.md +++ b/docs/syntax/entityRelationshipDiagram.md @@ -136,7 +136,7 @@ Cardinality is a property that describes how many elements of another entity can | 1+ | 1+ | One or more | | zero or more | zero or more | Zero or more | | zero or many | zero or many | Zero or more | -| many(0) | many(1) | Zero or more | +| many(0) | many(0) | Zero or more | | 0+ | 0+ | Zero or more | | only one | only one | Exactly one | | 1 | 1 | Exactly one | diff --git a/docs/syntax/packet.md b/docs/syntax/packet.md index 75dc7740a..c23af85c9 100644 --- a/docs/syntax/packet.md +++ b/docs/syntax/packet.md @@ -12,7 +12,7 @@ A packet diagram is a visual representation used to illustrate the structure and ## Usage -This diagram type is particularly useful for network engineers, educators, and students who require a clear and concise way to represent the structure of network packets. +This diagram type is particularly useful for developers, network engineers, educators, and students who require a clear and concise way to represent the structure of network packets. ## Syntax diff --git a/docs/syntax/stateDiagram.md b/docs/syntax/stateDiagram.md index a6b06a4b7..e532678f0 100644 --- a/docs/syntax/stateDiagram.md +++ b/docs/syntax/stateDiagram.md @@ -483,8 +483,8 @@ a _[valid CSS property name](https://www.w3.org/TR/CSS/#properties)_ followed by Here is an example of a classDef with just one property-value pair: -``` - classDef movement font-style:italic; +```txt +classDef movement font-style:italic; ``` where @@ -496,8 +496,8 @@ If you want to have more than one _property-value pair_ then you put a comma (`, Here is an example with three property-value pairs: -``` - classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow +```txt +classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow ``` where @@ -522,7 +522,7 @@ There are two ways to apply a `classDef` style to a state: A `class` statement tells Mermaid to apply the named classDef to one or more classes. The form is: ```txt - class [one or more state names, separated by commas] [name of a style defined with classDef] +class [one or more state names, separated by commas] [name of a style defined with classDef] ``` Here is an example applying the `badBadEvent` style to a state named `Crash`: diff --git a/package.json b/package.json index 7c5da0576..0a0e63504 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ }, "devDependencies": { "@applitools/eyes-cypress": "^3.44.4", - "@argos-ci/cypress": "^2.0.5", + "@argos-ci/cypress": "^2.1.0", "@cspell/eslint-plugin": "^8.8.4", "@cypress/code-coverage": "^3.12.30", "@eslint/js": "^9.4.0", @@ -98,7 +98,7 @@ "eslint-plugin-markdown": "^5.0.0", "eslint-plugin-no-only-tests": "^3.1.0", "eslint-plugin-tsdoc": "^0.3.0", - "eslint-plugin-unicorn": "^53.0.0", + "eslint-plugin-unicorn": "^54.0.0", "express": "^4.19.1", "globals": "^15.4.0", "globby": "^14.0.1", diff --git a/packages/mermaid-layout-elk/src/render.ts b/packages/mermaid-layout-elk/src/render.ts index 95e038386..d4a492e91 100644 --- a/packages/mermaid-layout-elk/src/render.ts +++ b/packages/mermaid-layout-elk/src/render.ts @@ -465,8 +465,8 @@ export const render = async (data4Layout: LayoutData, svg, element, algorithm) = layoutOptions: { 'elk.hierarchyHandling': 'INCLUDE_CHILDREN', 'elk.algorithm': algorithm, - 'nodePlacement.strategy': data4Layout.config['elk.nodePlacement.strategy'], - 'elk.layered.mergeEdges': data4Layout.config['elk.mergeEdges'], + 'nodePlacement.strategy': data4Layout.config.elk.nodePlacementStrategy, + 'elk.layered.mergeEdges': data4Layout.config.elk.mergeEdges, 'elk.direction': 'DOWN', 'spacing.baseValue': 30, // 'spacing.nodeNode': 40, @@ -684,32 +684,32 @@ export const render = async (data4Layout: LayoutData, svg, element, algorithm) = edge.y = edge.labels[0].y + offset.y + edge.labels[0].height / 2; positionEdgeLabel(edge, paths); } - const src = edge.sections[0].startPoint; - const dest = edge.sections[0].endPoint; - const segments = edge.sections[0].bendPoints ? edge.sections[0].bendPoints : []; + // const src = edge.sections[0].startPoint; + // const dest = edge.sections[0].endPoint; + // const segments = edge.sections[0].bendPoints ? edge.sections[0].bendPoints : []; - const segPoints = segments.map((segment) => { - return { x: segment.x + offset.x, y: segment.y + offset.y }; - }); - edge.points = [ - { x: src.x + offset.x, y: src.y + offset.y }, - ...segPoints, - { x: dest.x + offset.x, y: dest.y + offset.y }, - ]; - const paths = insertEdge( - edgesEl, - edge, - clusterDb, - data4Layout.type, - startNode, - endNode, - data4Layout.diagramId - ); - log.info('APA12 edge points after insert', JSON.stringify(edge.points)); + // const segPoints = segments.map((segment) => { + // return { x: segment.x + offset.x, y: segment.y + offset.y }; + // }); + // edge.points = [ + // { x: src.x + offset.x, y: src.y + offset.y }, + // ...segPoints, + // { x: dest.x + offset.x, y: dest.y + offset.y }, + // ]; + // const paths = insertEdge( + // edgesEl, + // edge, + // clusterDb, + // data4Layout.type, + // startNode, + // endNode, + // data4Layout.diagramId + // ); + // log.info('APA12 edge points after insert', JSON.stringify(edge.points)); - edge.x = edge.labels[0].x + offset.x + edge.labels[0].width / 2; - edge.y = edge.labels[0].y + offset.y + edge.labels[0].height / 2; - positionEdgeLabel(edge, paths); + // edge.x = edge.labels[0].x + offset.x + edge.labels[0].width / 2; + // edge.y = edge.labels[0].y + offset.y + edge.labels[0].height / 2; + // positionEdgeLabel(edge, paths); }); }; @@ -766,7 +766,7 @@ function intersectLine(p1, p2, q1, q2) { // The denom/2 is to get rounding instead of truncating. It // is added or subtracted to the numerator, depending upon the // sign of the numerator. - num = b1 * c2 - b2 * c1; + let num = b1 * c2 - b2 * c1; const x = num < 0 ? (num - offset) / denom : (num + offset) / denom; num = a2 * c1 - a1 * c2; @@ -925,7 +925,6 @@ export const intersection = (node, outsidePoint, insidePoint) => { } }; const outsideNode = (node, point) => { - log.debug('Checking bounds ', node, point); const x = node.x; const y = node.y; const dx = Math.abs(point.x - x); diff --git a/packages/mermaid-zenuml/package.json b/packages/mermaid-zenuml/package.json index 082130db4..93ef0512c 100644 --- a/packages/mermaid-zenuml/package.json +++ b/packages/mermaid-zenuml/package.json @@ -34,7 +34,7 @@ ], "license": "MIT", "dependencies": { - "@zenuml/core": "^3.19.2" + "@zenuml/core": "^3.23.27" }, "devDependencies": { "@mermaid-chart/mermaid": "workspace:^" diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index ebb825714..52d0677d5 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -80,7 +80,7 @@ "katex": "^0.16.9", "khroma": "^2.1.0", "lodash-es": "^4.17.21", - "mdast-util-from-markdown": "^2.0.0", + "marked": "^13.0.2", "roughjs": "^4.6.6", "stylis": "^4.3.1", "ts-dedent": "^2.2.0", diff --git a/packages/mermaid/src/config.type.ts b/packages/mermaid/src/config.type.ts index 2a7a538fe..6e3b3cee0 100644 --- a/packages/mermaid/src/config.type.ts +++ b/packages/mermaid/src/config.type.ts @@ -88,16 +88,18 @@ export interface MermaidConfig { * */ maxEdges?: number; - /** - * Elk specific option that allows egdes to share path where it convenient. It can make for pretty diagrams but can also make it harder to read the diagram. - * - */ - 'elk.mergeEdges'?: boolean; - /** - * Elk specific option affedcting how nodes are placed. - * - */ - 'elk.nodePlacement.strategy'?: 'SIMPLE' | 'NETWORK_SIMPLEX' | 'LINEAR_SEGMENTS' | 'BRANDES_KOEPF'; + elk?: { + /** + * Elk specific option that allows edges to share path where it convenient. It can make for pretty diagrams but can also make it harder to read the diagram. + * + */ + mergeEdges?: boolean; + /** + * Elk specific option affecting how nodes are placed. + * + */ + nodePlacementStrategy?: 'SIMPLE' | 'NETWORK_SIMPLEX' | 'LINEAR_SEGMENTS' | 'BRANDES_KOEPF'; + }; darkMode?: boolean; htmlLabels?: boolean; /** diff --git a/packages/mermaid/src/defaultConfig.ts b/packages/mermaid/src/defaultConfig.ts index 727842bba..0fa897d11 100644 --- a/packages/mermaid/src/defaultConfig.ts +++ b/packages/mermaid/src/defaultConfig.ts @@ -20,6 +20,10 @@ const config: RequiredDeep = { // Set, even though they're `undefined` so that `configKeys` finds these keys // TODO: Should we replace these with `null` so that they can go in the JSON Schema? deterministicIDSeed: undefined, + elk: { + mergeEdges: false, + nodePlacementStrategy: 'SIMPLE', + }, themeCSS: undefined, // add non-JSON default config values diff --git a/packages/mermaid/src/diagrams/class/classDb.ts b/packages/mermaid/src/diagrams/class/classDb.ts index cb8b90af4..a59c1eada 100644 --- a/packages/mermaid/src/diagrams/class/classDb.ts +++ b/packages/mermaid/src/diagrams/class/classDb.ts @@ -113,6 +113,7 @@ export const clear = function () { functions.push(setupToolTips); namespaces = new Map(); namespaceCounter = 0; + direction = 'TB'; commonClear(); }; diff --git a/packages/mermaid/src/diagrams/class/classDiagram.spec.ts b/packages/mermaid/src/diagrams/class/classDiagram.spec.ts index 8412c6fbf..9804b325e 100644 --- a/packages/mermaid/src/diagrams/class/classDiagram.spec.ts +++ b/packages/mermaid/src/diagrams/class/classDiagram.spec.ts @@ -444,6 +444,17 @@ class C13["With Città foreign language"] ] `); }); + + it('should revert direction to default once direction is removed', () => { + parser.parse(`classDiagram + direction RL + class A`); + expect(classDb.getDirection()).toBe('RL'); + classDb.clear(); + parser.parse(`classDiagram + class B`); + expect(classDb.getDirection()).toBe('TB'); + }); }); describe('when parsing class defined in brackets', function () { diff --git a/packages/mermaid/src/diagrams/flowchart/flowDb.ts b/packages/mermaid/src/diagrams/flowchart/flowDb.ts index 1c04e2c2a..488ecc83d 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowDb.ts +++ b/packages/mermaid/src/diagrams/flowchart/flowDb.ts @@ -205,6 +205,13 @@ export const updateLink = function (positions: ('default' | number)[], style: st // style.push('fill:none'); // } edges[pos].style = style; + // if edges[pos].style does have fill not set, set it to none + if ( + (edges[pos]?.style?.length ?? 0) > 0 && + !edges[pos]?.style?.some((s) => s?.startsWith('fill')) + ) { + edges[pos]?.style?.push('fill:none'); + } } }); }; diff --git a/packages/mermaid/src/diagrams/flowchart/flowRenderer-v3-unified.ts b/packages/mermaid/src/diagrams/flowchart/flowRenderer-v3-unified.ts index 07f8034b7..102662ee6 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowRenderer-v3-unified.ts +++ b/packages/mermaid/src/diagrams/flowchart/flowRenderer-v3-unified.ts @@ -51,7 +51,7 @@ export const draw = async function (text: string, id: string, _version: string, await render(data4Layout, svg, element); const padding = data4Layout.config.flowchart?.padding ?? 8; utils.insertTitle( - element, + svg, 'flowchartTitleText', conf?.titleTopMargin || 0, diag.db.getDiagramTitle() diff --git a/packages/mermaid/src/diagrams/git/gitGraphAst.js b/packages/mermaid/src/diagrams/git/gitGraphAst.js index 0f7ca29a2..cebc4fc3e 100644 --- a/packages/mermaid/src/diagrams/git/gitGraphAst.js +++ b/packages/mermaid/src/diagrams/git/gitGraphAst.js @@ -12,8 +12,7 @@ import { getDiagramTitle, } from '../common/commonDb.js'; -let mainBranchName = getConfig().gitGraph.mainBranchName; -let mainBranchOrder = getConfig().gitGraph.mainBranchOrder; +let { mainBranchName, mainBranchOrder } = getConfig().gitGraph; let commits = new Map(); let head = null; let branchesConfig = new Map(); @@ -103,17 +102,18 @@ export const getOptions = function () { return options; }; -export const commit = function (msg, id, type, tag) { - log.debug('Entering commit:', msg, id, type, tag); - id = common.sanitizeText(id, getConfig()); - msg = common.sanitizeText(msg, getConfig()); - tag = common.sanitizeText(tag, getConfig()); +export const commit = function (msg, id, type, tags) { + log.debug('Entering commit:', msg, id, type, tags); + const config = getConfig(); + id = common.sanitizeText(id, config); + msg = common.sanitizeText(msg, config); + tags = tags?.map((tag) => common.sanitizeText(tag, config)); const commit = { id: id ? id : seq + '-' + getId(), message: msg, seq: seq++, type: type ? type : commitType.NORMAL, - tag: tag ? tag : '', + tags: tags ?? [], parents: head == null ? [] : [head.id], branch: curBranch, }; @@ -147,9 +147,10 @@ export const branch = function (name, order) { } }; -export const merge = function (otherBranch, custom_id, override_type, custom_tag) { - otherBranch = common.sanitizeText(otherBranch, getConfig()); - custom_id = common.sanitizeText(custom_id, getConfig()); +export const merge = function (otherBranch, custom_id, override_type, custom_tags) { + const config = getConfig(); + otherBranch = common.sanitizeText(otherBranch, config); + custom_id = common.sanitizeText(custom_id, config); const currentCommit = commits.get(branches.get(curBranch)); const otherCommit = commits.get(branches.get(otherBranch)); @@ -216,12 +217,12 @@ export const merge = function (otherBranch, custom_id, override_type, custom_tag ' already exists, use different custom Id' ); error.hash = { - text: 'merge ' + otherBranch + custom_id + override_type + custom_tag, - token: 'merge ' + otherBranch + custom_id + override_type + custom_tag, + text: 'merge ' + otherBranch + custom_id + override_type + custom_tags?.join(','), + token: 'merge ' + otherBranch + custom_id + override_type + custom_tags?.join(','), line: '1', loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 }, expected: [ - 'merge ' + otherBranch + ' ' + custom_id + '_UNIQUE ' + override_type + ' ' + custom_tag, + `merge ${otherBranch} ${custom_id}_UNIQUE ${override_type} ${custom_tags?.join(',')}`, ], }; @@ -245,7 +246,7 @@ export const merge = function (otherBranch, custom_id, override_type, custom_tag type: commitType.MERGE, customType: override_type, customId: custom_id ? true : false, - tag: custom_tag ? custom_tag : '', + tags: custom_tags ? custom_tags : [], }; head = commit; commits.set(commit.id, commit); @@ -255,12 +256,13 @@ export const merge = function (otherBranch, custom_id, override_type, custom_tag log.debug('in mergeBranch'); }; -export const cherryPick = function (sourceId, targetId, tag, parentCommitId) { - log.debug('Entering cherryPick:', sourceId, targetId, tag); - sourceId = common.sanitizeText(sourceId, getConfig()); - targetId = common.sanitizeText(targetId, getConfig()); - tag = common.sanitizeText(tag, getConfig()); - parentCommitId = common.sanitizeText(parentCommitId, getConfig()); +export const cherryPick = function (sourceId, targetId, tags, parentCommitId) { + log.debug('Entering cherryPick:', sourceId, targetId, tags); + const config = getConfig(); + sourceId = common.sanitizeText(sourceId, config); + targetId = common.sanitizeText(targetId, config); + tags = tags?.map((tag) => common.sanitizeText(tag, config)); + parentCommitId = common.sanitizeText(parentCommitId, config); if (!sourceId || !commits.has(sourceId)) { let error = new Error( @@ -329,11 +331,13 @@ export const cherryPick = function (sourceId, targetId, tag, parentCommitId) { parents: [head == null ? null : head.id, sourceCommit.id], branch: curBranch, type: commitType.CHERRY_PICK, - tag: - tag ?? - `cherry-pick:${sourceCommit.id}${ - sourceCommit.type === commitType.MERGE ? `|parent:${parentCommitId}` : '' - }`, + tags: tags + ? tags.filter(Boolean) + : [ + `cherry-pick:${sourceCommit.id}${ + sourceCommit.type === commitType.MERGE ? `|parent:${parentCommitId}` : '' + }`, + ], }; head = commit; commits.set(commit.id, commit); @@ -356,8 +360,6 @@ export const checkout = function (branch) { expected: ['"branch ' + branch + '"'], }; throw error; - //branches[branch] = head != null ? head.id : null; - //log.debug('in createBranch'); } else { curBranch = branch; const id = branches.get(curBranch); @@ -444,13 +446,12 @@ export const prettyPrint = function () { export const clear = function () { commits = new Map(); head = null; - let mainBranch = getConfig().gitGraph.mainBranchName; - let mainBranchOrder = getConfig().gitGraph.mainBranchOrder; + const { mainBranchName, mainBranchOrder } = getConfig().gitGraph; branches = new Map(); - branches.set(mainBranch, null); + branches.set(mainBranchName, null); branchesConfig = new Map(); - branchesConfig.set(mainBranch, { name: mainBranch, order: mainBranchOrder }); - curBranch = mainBranch; + branchesConfig.set(mainBranchName, { name: mainBranchName, order: mainBranchOrder }); + curBranch = mainBranchName; seq = 0; commonClear(); }; diff --git a/packages/mermaid/src/diagrams/git/gitGraphParserV2.spec.js b/packages/mermaid/src/diagrams/git/gitGraphParserV2.spec.js index 5e9cd98f7..1fb64a5c4 100644 --- a/packages/mermaid/src/diagrams/git/gitGraphParserV2.spec.js +++ b/packages/mermaid/src/diagrams/git/gitGraphParserV2.spec.js @@ -20,7 +20,7 @@ describe('when parsing a gitGraph', function () { const key = commits.keys().next().value; expect(commits.get(key).message).toBe(''); expect(commits.get(key).id).not.toBeNull(); - expect(commits.get(key).tag).toBe(''); + expect(commits.get(key).tags).toStrictEqual([]); expect(commits.get(key).type).toBe(0); }); @@ -37,7 +37,7 @@ describe('when parsing a gitGraph', function () { const key = commits.keys().next().value; expect(commits.get(key).message).toBe(''); expect(commits.get(key).id).toBe('1111'); - expect(commits.get(key).tag).toBe(''); + expect(commits.get(key).tags).toStrictEqual([]); expect(commits.get(key).type).toBe(0); }); @@ -55,7 +55,7 @@ describe('when parsing a gitGraph', function () { const key = commits.keys().next().value; expect(commits.get(key).message).toBe(''); expect(commits.get(key).id).not.toBeNull(); - expect(commits.get(key).tag).toBe('test'); + expect(commits.get(key).tags).toStrictEqual(['test']); expect(commits.get(key).type).toBe(0); }); @@ -73,7 +73,7 @@ describe('when parsing a gitGraph', function () { const key = commits.keys().next().value; expect(commits.get(key).message).toBe(''); expect(commits.get(key).id).not.toBeNull(); - expect(commits.get(key).tag).toBe(''); + expect(commits.get(key).tags).toStrictEqual([]); expect(commits.get(key).type).toBe(2); }); @@ -91,7 +91,7 @@ describe('when parsing a gitGraph', function () { const key = commits.keys().next().value; expect(commits.get(key).message).toBe(''); expect(commits.get(key).id).not.toBeNull(); - expect(commits.get(key).tag).toBe(''); + expect(commits.get(key).tags).toStrictEqual([]); expect(commits.get(key).type).toBe(1); }); @@ -109,7 +109,7 @@ describe('when parsing a gitGraph', function () { const key = commits.keys().next().value; expect(commits.get(key).message).toBe(''); expect(commits.get(key).id).not.toBeNull(); - expect(commits.get(key).tag).toBe(''); + expect(commits.get(key).tags).toStrictEqual([]); expect(commits.get(key).type).toBe(0); }); @@ -127,7 +127,7 @@ describe('when parsing a gitGraph', function () { const key = commits.keys().next().value; expect(commits.get(key).message).toBe('test commit'); expect(commits.get(key).id).not.toBeNull(); - expect(commits.get(key).tag).toBe(''); + expect(commits.get(key).tags).toStrictEqual([]); expect(commits.get(key).type).toBe(0); }); @@ -145,7 +145,7 @@ describe('when parsing a gitGraph', function () { const key = commits.keys().next().value; expect(commits.get(key).message).toBe('test commit'); expect(commits.get(key).id).not.toBeNull(); - expect(commits.get(key).tag).toBe(''); + expect(commits.get(key).tags).toStrictEqual([]); expect(commits.get(key).type).toBe(0); }); @@ -163,7 +163,7 @@ describe('when parsing a gitGraph', function () { const key = commits.keys().next().value; expect(commits.get(key).message).toBe(''); expect(commits.get(key).id).toBe('1111'); - expect(commits.get(key).tag).toBe('test tag'); + expect(commits.get(key).tags).toStrictEqual(['test tag']); expect(commits.get(key).type).toBe(0); }); @@ -181,7 +181,7 @@ describe('when parsing a gitGraph', function () { const key = commits.keys().next().value; expect(commits.get(key).message).toBe(''); expect(commits.get(key).id).not.toBeNull(); - expect(commits.get(key).tag).toBe('test tag'); + expect(commits.get(key).tags).toStrictEqual(['test tag']); expect(commits.get(key).type).toBe(2); }); @@ -199,7 +199,7 @@ describe('when parsing a gitGraph', function () { const key = commits.keys().next().value; expect(commits.get(key).message).toBe(''); expect(commits.get(key).id).not.toBeNull(); - expect(commits.get(key).tag).toBe('test tag'); + expect(commits.get(key).tags).toStrictEqual(['test tag']); expect(commits.get(key).type).toBe(2); }); @@ -217,7 +217,7 @@ describe('when parsing a gitGraph', function () { const key = commits.keys().next().value; expect(commits.get(key).message).toBe(''); expect(commits.get(key).id).toBe('1111'); - expect(commits.get(key).tag).toBe('test tag'); + expect(commits.get(key).tags).toStrictEqual(['test tag']); expect(commits.get(key).type).toBe(1); }); @@ -235,7 +235,7 @@ describe('when parsing a gitGraph', function () { const key = commits.keys().next().value; expect(commits.get(key).message).toBe('test msg'); expect(commits.get(key).id).toBe('1111'); - expect(commits.get(key).tag).toBe('test tag'); + expect(commits.get(key).tags).toStrictEqual(['test tag']); expect(commits.get(key).type).toBe(1); }); @@ -254,7 +254,7 @@ describe('when parsing a gitGraph', function () { const key = commits.keys().next().value; expect(commits.get(key).message).toBe('test msg'); expect(commits.get(key).id).toBe('1111'); - expect(commits.get(key).tag).toBe('test tag'); + expect(commits.get(key).tags).toStrictEqual(['test tag']); expect(commits.get(key).type).toBe(1); }); @@ -272,7 +272,7 @@ describe('when parsing a gitGraph', function () { const key = commits.keys().next().value; expect(commits.get(key).message).toBe('test msg'); expect(commits.get(key).id).toBe('1111'); - expect(commits.get(key).tag).toBe('test tag'); + expect(commits.get(key).tags).toStrictEqual(['test tag']); expect(commits.get(key).type).toBe(1); }); @@ -290,7 +290,7 @@ describe('when parsing a gitGraph', function () { const key = commits.keys().next().value; expect(commits.get(key).message).toBe('test msg'); expect(commits.get(key).id).toBe('1111'); - expect(commits.get(key).tag).toBe('test tag'); + expect(commits.get(key).tags).toStrictEqual(['test tag']); expect(commits.get(key).type).toBe(1); }); @@ -616,7 +616,7 @@ describe('when parsing a gitGraph', function () { commits.get(commit1).id, commits.get(commit2).id, ]); - expect(commits.get(commit3).tag).toBe('merge-tag'); + expect(commits.get(commit3).tags).toStrictEqual(['merge-tag']); expect(parser.yy.getBranchesAsObjArray()).toStrictEqual([ { name: 'main' }, { name: 'testBranch' }, @@ -671,12 +671,12 @@ describe('when parsing a gitGraph', function () { expect(testBranchMerge.branch).toBe('main'); expect(testBranchMerge.parents).toStrictEqual([mainCommit.id, testBranchCommit.id]); - expect(testBranchMerge.tag).toBe('merge-tag'); + expect(testBranchMerge.tags).toStrictEqual(['merge-tag']); expect(testBranchMerge.id).toBe('2-222'); expect(testBranch2Merge.branch).toBe('main'); expect(testBranch2Merge.parents).toStrictEqual([testBranchMerge.id, testBranch2Commit.id]); - expect(testBranch2Merge.tag).toBe('merge-tag2'); + expect(testBranch2Merge.tags).toStrictEqual(['merge-tag2']); expect(testBranch2Merge.id).toBe('4-444'); expect(testBranch2Merge.customType).toBe(2); expect(testBranch2Merge.customId).toBe(true); @@ -705,7 +705,7 @@ describe('when parsing a gitGraph', function () { parser.parse(str); const commits = parser.yy.getCommits(); const cherryPickCommitID = [...commits.keys()][2]; - expect(commits.get(cherryPickCommitID).tag).toBe('cherry-pick:A'); + expect(commits.get(cherryPickCommitID).tags).toStrictEqual(['cherry-pick:A']); expect(commits.get(cherryPickCommitID).branch).toBe('main'); }); @@ -721,7 +721,7 @@ describe('when parsing a gitGraph', function () { parser.parse(str); const commits = parser.yy.getCommits(); const cherryPickCommitID = [...commits.keys()][2]; - expect(commits.get(cherryPickCommitID).tag).toBe('MyTag'); + expect(commits.get(cherryPickCommitID).tags).toStrictEqual(['MyTag']); expect(commits.get(cherryPickCommitID).branch).toBe('main'); }); @@ -737,7 +737,7 @@ describe('when parsing a gitGraph', function () { parser.parse(str); const commits = parser.yy.getCommits(); const cherryPickCommitID = [...commits.keys()][2]; - expect(commits.get(cherryPickCommitID).tag).toBe(''); + expect(commits.get(cherryPickCommitID).tags).toStrictEqual([]); expect(commits.get(cherryPickCommitID).branch).toBe('main'); }); @@ -758,7 +758,7 @@ describe('when parsing a gitGraph', function () { parser.parse(str); const commits = parser.yy.getCommits(); const cherryPickCommitID = [...commits.keys()][4]; - expect(commits.get(cherryPickCommitID).tag).toBe('cherry-pick:M|parent:B'); + expect(commits.get(cherryPickCommitID).tags).toStrictEqual(['cherry-pick:M|parent:B']); expect(commits.get(cherryPickCommitID).branch).toBe('release'); }); @@ -779,7 +779,7 @@ describe('when parsing a gitGraph', function () { parser.parse(str); const commits = parser.yy.getCommits(); const cherryPickCommitID = [...commits.keys()][4]; - expect(commits.get(cherryPickCommitID).tag).toBe('v1.0'); + expect(commits.get(cherryPickCommitID).tags).toStrictEqual(['v1.0']); expect(commits.get(cherryPickCommitID).branch).toBe('release'); }); @@ -802,7 +802,7 @@ describe('when parsing a gitGraph', function () { parser.parse(str); const commits = parser.yy.getCommits(); const cherryPickCommitID = [...commits.keys()][5]; - expect(commits.get(cherryPickCommitID).tag).toBe('v2.1:ZERO'); + expect(commits.get(cherryPickCommitID).tags).toStrictEqual(['v2.1:ZERO']); expect(commits.get(cherryPickCommitID).branch).toBe('release'); }); @@ -827,8 +827,8 @@ describe('when parsing a gitGraph', function () { const commits = parser.yy.getCommits(); const cherryPickCommitID = [...commits.keys()][5]; const cherryPickCommitID2 = [...commits.keys()][7]; - expect(commits.get(cherryPickCommitID).tag).toBe(''); - expect(commits.get(cherryPickCommitID2).tag).toBe(''); + expect(commits.get(cherryPickCommitID).tags).toStrictEqual([]); + expect(commits.get(cherryPickCommitID2).tags).toStrictEqual([]); expect(commits.get(cherryPickCommitID).branch).toBe('release'); }); diff --git a/packages/mermaid/src/diagrams/git/gitGraphRenderer.js b/packages/mermaid/src/diagrams/git/gitGraphRenderer.js index b612b3c0a..b8b13e089 100644 --- a/packages/mermaid/src/diagrams/git/gitGraphRenderer.js +++ b/packages/mermaid/src/diagrams/git/gitGraphRenderer.js @@ -414,59 +414,83 @@ const drawCommits = (svg, commits, modifyGraph) => { } } } - if (commit.tag) { - const rect = gLabels.insert('polygon'); - const hole = gLabels.append('circle'); - const tag = gLabels - .append('text') - // Note that we are delaying setting the x position until we know the width of the text - .attr('y', y - 16) - .attr('class', 'tag-label') - .text(commit.tag); - let tagBbox = tag.node().getBBox(); - tag.attr('x', posWithOffset - tagBbox.width / 2); + if (commit.tags.length > 0) { + let yOffset = 0; + let maxTagBboxWidth = 0; + let maxTagBboxHeight = 0; + const tagElements = []; - const h2 = tagBbox.height / 2; - const ly = y - 19.2; - rect.attr('class', 'tag-label-bkg').attr( - 'points', - ` - ${pos - tagBbox.width / 2 - px / 2},${ly + py} - ${pos - tagBbox.width / 2 - px / 2},${ly - py} - ${posWithOffset - tagBbox.width / 2 - px},${ly - h2 - py} - ${posWithOffset + tagBbox.width / 2 + px},${ly - h2 - py} - ${posWithOffset + tagBbox.width / 2 + px},${ly + h2 + py} - ${posWithOffset - tagBbox.width / 2 - px},${ly + h2 + py}` - ); + for (const tagValue of commit.tags.reverse()) { + const rect = gLabels.insert('polygon'); + const hole = gLabels.append('circle'); + const tag = gLabels + .append('text') + // Note that we are delaying setting the x position until we know the width of the text + .attr('y', y - 16 - yOffset) + .attr('class', 'tag-label') + .text(tagValue); + let tagBbox = tag.node().getBBox(); + maxTagBboxWidth = Math.max(maxTagBboxWidth, tagBbox.width); + maxTagBboxHeight = Math.max(maxTagBboxHeight, tagBbox.height); - hole - .attr('cx', pos - tagBbox.width / 2 + px / 2) - .attr('cy', ly) - .attr('r', 1.5) - .attr('class', 'tag-hole'); + // We don't use the max over here to center the text within the tags + tag.attr('x', posWithOffset - tagBbox.width / 2); + + tagElements.push({ + tag, + hole, + rect, + yOffset, + }); + + yOffset += 20; + } + + for (const { tag, hole, rect, yOffset } of tagElements) { + const h2 = maxTagBboxHeight / 2; + const ly = y - 19.2 - yOffset; + rect.attr('class', 'tag-label-bkg').attr( + 'points', + ` + ${pos - maxTagBboxWidth / 2 - px / 2},${ly + py} + ${pos - maxTagBboxWidth / 2 - px / 2},${ly - py} + ${posWithOffset - maxTagBboxWidth / 2 - px},${ly - h2 - py} + ${posWithOffset + maxTagBboxWidth / 2 + px},${ly - h2 - py} + ${posWithOffset + maxTagBboxWidth / 2 + px},${ly + h2 + py} + ${posWithOffset - maxTagBboxWidth / 2 - px},${ly + h2 + py}` + ); - if (dir === 'TB' || dir === 'BT') { - rect - .attr('class', 'tag-label-bkg') - .attr( - 'points', - ` - ${x},${pos + py} - ${x},${pos - py} - ${x + layoutOffset},${pos - h2 - py} - ${x + layoutOffset + tagBbox.width + px},${pos - h2 - py} - ${x + layoutOffset + tagBbox.width + px},${pos + h2 + py} - ${x + layoutOffset},${pos + h2 + py}` - ) - .attr('transform', 'translate(12,12) rotate(45, ' + x + ',' + pos + ')'); hole - .attr('cx', x + px / 2) - .attr('cy', pos) - .attr('transform', 'translate(12,12) rotate(45, ' + x + ',' + pos + ')'); - tag - .attr('x', x + 5) - .attr('y', pos + 3) - .attr('transform', 'translate(14,14) rotate(45, ' + x + ',' + pos + ')'); + .attr('cy', ly) + .attr('cx', pos - maxTagBboxWidth / 2 + px / 2) + .attr('r', 1.5) + .attr('class', 'tag-hole'); + + if (dir === 'TB' || dir === 'BT') { + const yOrigin = pos + yOffset; + + rect + .attr('class', 'tag-label-bkg') + .attr( + 'points', + ` + ${x},${yOrigin + py} + ${x},${yOrigin - py} + ${x + layoutOffset},${yOrigin - h2 - py} + ${x + layoutOffset + maxTagBboxWidth + px},${yOrigin - h2 - py} + ${x + layoutOffset + maxTagBboxWidth + px},${yOrigin + h2 + py} + ${x + layoutOffset},${yOrigin + h2 + py}` + ) + .attr('transform', 'translate(12,12) rotate(45, ' + x + ',' + pos + ')'); + hole + .attr('cx', x + px / 2) + .attr('cy', yOrigin) + .attr('transform', 'translate(12,12) rotate(45, ' + x + ',' + pos + ')'); + tag + .attr('x', x + 5) + .attr('y', yOrigin + 3) + .attr('transform', 'translate(14,14) rotate(45, ' + x + ',' + pos + ')'); + } } } } diff --git a/packages/mermaid/src/diagrams/git/parser/gitGraph.jison b/packages/mermaid/src/diagrams/git/parser/gitGraph.jison index b4670ca0b..fa2c70586 100644 --- a/packages/mermaid/src/diagrams/git/parser/gitGraph.jison +++ b/packages/mermaid/src/diagrams/git/parser/gitGraph.jison @@ -112,122 +112,105 @@ branchStatement cherryPickStatement : CHERRY_PICK COMMIT_ID STR {yy.cherryPick($3, '', undefined)} | CHERRY_PICK COMMIT_ID STR PARENT_COMMIT STR {yy.cherryPick($3, '', undefined,$5)} - | CHERRY_PICK COMMIT_ID STR COMMIT_TAG STR {yy.cherryPick($3, '', $5)} - | CHERRY_PICK COMMIT_ID STR PARENT_COMMIT STR COMMIT_TAG STR {yy.cherryPick($3, '', $7,$5)} - | CHERRY_PICK COMMIT_ID STR COMMIT_TAG STR PARENT_COMMIT STR {yy.cherryPick($3, '', $5,$7)} - | CHERRY_PICK COMMIT_TAG STR COMMIT_ID STR {yy.cherryPick($5, '', $3)} - | CHERRY_PICK COMMIT_TAG EMPTYSTR COMMIT_ID STR {yy.cherryPick($5, '', '')} - | CHERRY_PICK COMMIT_ID STR COMMIT_TAG EMPTYSTR {yy.cherryPick($3, '', '')} - | CHERRY_PICK COMMIT_ID STR PARENT_COMMIT STR COMMIT_TAG EMPTYSTR {yy.cherryPick($3, '', '',$5)} - | CHERRY_PICK COMMIT_ID STR COMMIT_TAG EMPTYSTR PARENT_COMMIT STR {yy.cherryPick($3, '', '',$7)} - | CHERRY_PICK COMMIT_TAG STR COMMIT_ID STR PARENT_COMMIT STR {yy.cherryPick($5, '', $3,$7)} - | CHERRY_PICK COMMIT_TAG EMPTYSTR COMMIT_ID STR PARENT_COMMIT STR{yy.cherryPick($5, '', '',$7)} + | CHERRY_PICK COMMIT_ID STR commitTags {yy.cherryPick($3, '', $4)} + | CHERRY_PICK COMMIT_ID STR PARENT_COMMIT STR commitTags {yy.cherryPick($3, '', $6,$5)} + | CHERRY_PICK COMMIT_ID STR commitTags PARENT_COMMIT STR {yy.cherryPick($3, '', $4,$6)} + | CHERRY_PICK commitTags COMMIT_ID STR {yy.cherryPick($4, '', $2)} + | CHERRY_PICK commitTags COMMIT_ID STR PARENT_COMMIT STR {yy.cherryPick($4, '', $2,$6)} ; mergeStatement - : MERGE ref {yy.merge($2,'','','')} - | MERGE ref COMMIT_ID STR {yy.merge($2, $4,'','')} - | MERGE ref COMMIT_TYPE commitType {yy.merge($2,'', $4,'')} - | MERGE ref COMMIT_TAG STR {yy.merge($2, '','',$4)} - | MERGE ref COMMIT_TAG STR COMMIT_ID STR {yy.merge($2, $6,'', $4)} - | MERGE ref COMMIT_TAG STR COMMIT_TYPE commitType {yy.merge($2, '',$6, $4)} - | MERGE ref COMMIT_TYPE commitType COMMIT_TAG STR {yy.merge($2, '',$4, $6)} - | MERGE ref COMMIT_ID STR COMMIT_TYPE commitType {yy.merge($2, $4, $6, '')} - | MERGE ref COMMIT_ID STR COMMIT_TAG STR {yy.merge($2, $4, '', $6)} - | MERGE ref COMMIT_TYPE commitType COMMIT_ID STR {yy.merge($2, $6,$4, '')} - | MERGE ref COMMIT_ID STR COMMIT_TYPE commitType COMMIT_TAG STR {yy.merge($2, $4, $6, $8)} - | MERGE ref COMMIT_TYPE commitType COMMIT_TAG STR COMMIT_ID STR {yy.merge($2, $8, $4, $6)} - | MERGE ref COMMIT_ID STR COMMIT_TAG STR COMMIT_TYPE commitType {yy.merge($2, $4, $8, $6)} - | MERGE ref COMMIT_TYPE commitType COMMIT_ID STR COMMIT_TAG STR {yy.merge($2, $6, $4, $8)} - | MERGE ref COMMIT_TAG STR COMMIT_TYPE commitType COMMIT_ID STR {yy.merge($2, $8, $6, $4)} - | MERGE ref COMMIT_TAG STR COMMIT_ID STR COMMIT_TYPE commitType {yy.merge($2, $6, $8, $4)} + : MERGE ref {yy.merge($2,'','', undefined)} + | MERGE ref COMMIT_ID STR {yy.merge($2, $4,'', undefined)} + | MERGE ref COMMIT_TYPE commitType {yy.merge($2,'', $4, undefined)} + | MERGE ref commitTags {yy.merge($2, '','',$3)} + | MERGE ref commitTags COMMIT_ID STR {yy.merge($2, $5,'', $3)} + | MERGE ref commitTags COMMIT_TYPE commitType {yy.merge($2, '',$5, $3)} + | MERGE ref COMMIT_TYPE commitType commitTags {yy.merge($2, '',$4, $5)} + | MERGE ref COMMIT_ID STR COMMIT_TYPE commitType {yy.merge($2, $4, $6, undefined)} + | MERGE ref COMMIT_ID STR commitTags {yy.merge($2, $4, '', $5)} + | MERGE ref COMMIT_TYPE commitType COMMIT_ID STR {yy.merge($2, $6,$4, undefined)} + | MERGE ref COMMIT_ID STR COMMIT_TYPE commitType commitTags {yy.merge($2, $4, $6, $7)} + | MERGE ref COMMIT_TYPE commitType commitTags COMMIT_ID STR {yy.merge($2, $7, $4, $5)} + | MERGE ref COMMIT_ID STR commitTags COMMIT_TYPE commitType {yy.merge($2, $4, $7, $5)} + | MERGE ref COMMIT_TYPE commitType COMMIT_ID STR commitTags {yy.merge($2, $6, $4, $7)} + | MERGE ref commitTags COMMIT_TYPE commitType COMMIT_ID STR {yy.merge($2, $7, $5, $3)} + | MERGE ref commitTags COMMIT_ID STR COMMIT_TYPE commitType {yy.merge($2, $5, $7, $3)} ; commitStatement : COMMIT commit_arg {yy.commit($2)} - | COMMIT COMMIT_TAG STR {yy.commit('','',yy.commitType.NORMAL,$3)} - | COMMIT COMMIT_TYPE commitType {yy.commit('','',$3,'')} - | COMMIT COMMIT_TAG STR COMMIT_TYPE commitType {yy.commit('','',$5,$3)} - | COMMIT COMMIT_TYPE commitType COMMIT_TAG STR {yy.commit('','',$3,$5)} - | COMMIT COMMIT_ID STR {yy.commit('',$3,yy.commitType.NORMAL,'')} - | COMMIT COMMIT_ID STR COMMIT_TAG STR {yy.commit('',$3,yy.commitType.NORMAL,$5)} - | COMMIT COMMIT_TAG STR COMMIT_ID STR {yy.commit('',$5,yy.commitType.NORMAL,$3)} - | COMMIT COMMIT_ID STR COMMIT_TYPE commitType {yy.commit('',$3,$5,'')} - | COMMIT COMMIT_TYPE commitType COMMIT_ID STR {yy.commit('',$5,$3,'')} - | COMMIT COMMIT_ID STR COMMIT_TYPE commitType COMMIT_TAG STR {yy.commit('',$3,$5,$7)} - | COMMIT COMMIT_ID STR COMMIT_TAG STR COMMIT_TYPE commitType {yy.commit('',$3,$7,$5)} - | COMMIT COMMIT_TYPE commitType COMMIT_ID STR COMMIT_TAG STR {yy.commit('',$5,$3,$7)} - | COMMIT COMMIT_TYPE commitType COMMIT_TAG STR COMMIT_ID STR {yy.commit('',$7,$3,$5)} - | COMMIT COMMIT_TAG STR COMMIT_TYPE commitType COMMIT_ID STR {yy.commit('',$7,$5,$3)} - | COMMIT COMMIT_TAG STR COMMIT_ID STR COMMIT_TYPE commitType {yy.commit('',$5,$7,$3)} - | COMMIT COMMIT_MSG STR {yy.commit($3,'',yy.commitType.NORMAL,'')} - | COMMIT COMMIT_TAG STR COMMIT_MSG STR {yy.commit($5,'',yy.commitType.NORMAL,$3)} - | COMMIT COMMIT_MSG STR COMMIT_TAG STR {yy.commit($3,'',yy.commitType.NORMAL,$5)} - | COMMIT COMMIT_MSG STR COMMIT_TYPE commitType {yy.commit($3,'',$5,'')} - | COMMIT COMMIT_TYPE commitType COMMIT_MSG STR {yy.commit($5,'',$3,'')} - | COMMIT COMMIT_ID STR COMMIT_MSG STR {yy.commit($5,$3,yy.commitType.NORMAL,'')} - | COMMIT COMMIT_MSG STR COMMIT_ID STR {yy.commit($3,$5,yy.commitType.NORMAL,'')} + | COMMIT commitTags {yy.commit('','',yy.commitType.NORMAL,$2)} + | COMMIT COMMIT_TYPE commitType {yy.commit('','',$3, undefined)} + | COMMIT commitTags COMMIT_TYPE commitType {yy.commit('','',$4,$2)} + | COMMIT COMMIT_TYPE commitType commitTags {yy.commit('','',$3,$4)} + | COMMIT COMMIT_ID STR {yy.commit('',$3,yy.commitType.NORMAL, undefined)} + | COMMIT COMMIT_ID STR commitTags {yy.commit('',$3,yy.commitType.NORMAL,$4)} + | COMMIT commitTags COMMIT_ID STR {yy.commit('',$4,yy.commitType.NORMAL,$2)} + | COMMIT COMMIT_ID STR COMMIT_TYPE commitType {yy.commit('',$3,$5, undefined)} + | COMMIT COMMIT_TYPE commitType COMMIT_ID STR {yy.commit('',$5,$3, undefined)} + | COMMIT COMMIT_ID STR COMMIT_TYPE commitType commitTags {yy.commit('',$3,$5,$6)} + | COMMIT COMMIT_ID STR commitTags COMMIT_TYPE commitType {yy.commit('',$3,$6,$4)} + | COMMIT COMMIT_TYPE commitType COMMIT_ID STR commitTags {yy.commit('',$5,$3,$6)} + | COMMIT COMMIT_TYPE commitType commitTags COMMIT_ID STR {yy.commit('',$6,$3,$4)} + | COMMIT commitTags COMMIT_TYPE commitType COMMIT_ID STR {yy.commit('',$6,$4,$2)} + | COMMIT commitTags COMMIT_ID STR COMMIT_TYPE commitType {yy.commit('',$4,$6,$2)} + | COMMIT COMMIT_MSG STR {yy.commit($3,'',yy.commitType.NORMAL, undefined)} + | COMMIT commitTags COMMIT_MSG STR {yy.commit($4,'',yy.commitType.NORMAL,$2)} + | COMMIT COMMIT_MSG STR commitTags {yy.commit($3,'',yy.commitType.NORMAL,$4)} + | COMMIT COMMIT_MSG STR COMMIT_TYPE commitType {yy.commit($3,'',$5, undefined)} + | COMMIT COMMIT_TYPE commitType COMMIT_MSG STR {yy.commit($5,'',$3, undefined)} + | COMMIT COMMIT_ID STR COMMIT_MSG STR {yy.commit($5,$3,yy.commitType.NORMAL, undefined)} + | COMMIT COMMIT_MSG STR COMMIT_ID STR {yy.commit($3,$5,yy.commitType.NORMAL, undefined)} - | COMMIT COMMIT_MSG STR COMMIT_TYPE commitType COMMIT_TAG STR {yy.commit($3,'',$5,$7)} - | COMMIT COMMIT_MSG STR COMMIT_TAG STR COMMIT_TYPE commitType {yy.commit($3,'',$7,$5)} - | COMMIT COMMIT_TYPE commitType COMMIT_MSG STR COMMIT_TAG STR {yy.commit($5,'',$3,$7)} - | COMMIT COMMIT_TYPE commitType COMMIT_TAG STR COMMIT_MSG STR {yy.commit($7,'',$3,$5)} - | COMMIT COMMIT_TAG STR COMMIT_TYPE commitType COMMIT_MSG STR {yy.commit($7,'',$5,$3)} - | COMMIT COMMIT_TAG STR COMMIT_MSG STR COMMIT_TYPE commitType {yy.commit($5,'',$7,$3)} + | COMMIT COMMIT_MSG STR COMMIT_TYPE commitType commitTags {yy.commit($3,'',$5,$6)} + | COMMIT COMMIT_MSG STR commitTags COMMIT_TYPE commitType {yy.commit($3,'',$6,$4)} + | COMMIT COMMIT_TYPE commitType COMMIT_MSG STR commitTags {yy.commit($5,'',$3,$6)} + | COMMIT COMMIT_TYPE commitType commitTags COMMIT_MSG STR {yy.commit($6,'',$3,$4)} + | COMMIT commitTags COMMIT_TYPE commitType COMMIT_MSG STR {yy.commit($6,'',$4,$2)} + | COMMIT commitTags COMMIT_MSG STR COMMIT_TYPE commitType {yy.commit($4,'',$6,$2)} - | COMMIT COMMIT_MSG STR COMMIT_TYPE commitType COMMIT_ID STR {yy.commit($3,$7,$5,'')} - | COMMIT COMMIT_MSG STR COMMIT_ID STR COMMIT_TYPE commitType {yy.commit($3,$5,$7,'')} - | COMMIT COMMIT_TYPE commitType COMMIT_MSG STR COMMIT_ID STR {yy.commit($5,$7,$3,'')} - | COMMIT COMMIT_TYPE commitType COMMIT_ID STR COMMIT_MSG STR {yy.commit($7,$5,$3,'')} - | COMMIT COMMIT_ID STR COMMIT_TYPE commitType COMMIT_MSG STR {yy.commit($7,$3,$5,'')} - | COMMIT COMMIT_ID STR COMMIT_MSG STR COMMIT_TYPE commitType {yy.commit($5,$3,$7,'')} + | COMMIT COMMIT_MSG STR COMMIT_TYPE commitType COMMIT_ID STR {yy.commit($3,$7,$5, undefined)} + | COMMIT COMMIT_MSG STR COMMIT_ID STR COMMIT_TYPE commitType {yy.commit($3,$5,$7, undefined)} + | COMMIT COMMIT_TYPE commitType COMMIT_MSG STR COMMIT_ID STR {yy.commit($5,$7,$3, undefined)} + | COMMIT COMMIT_TYPE commitType COMMIT_ID STR COMMIT_MSG STR {yy.commit($7,$5,$3, undefined)} + | COMMIT COMMIT_ID STR COMMIT_TYPE commitType COMMIT_MSG STR {yy.commit($7,$3,$5, undefined)} + | COMMIT COMMIT_ID STR COMMIT_MSG STR COMMIT_TYPE commitType {yy.commit($5,$3,$7, undefined)} - | COMMIT COMMIT_MSG STR COMMIT_TAG STR COMMIT_ID STR {yy.commit($3,$7,yy.commitType.NORMAL,$5)} - | COMMIT COMMIT_MSG STR COMMIT_ID STR COMMIT_TAG STR {yy.commit($3,$5,yy.commitType.NORMAL,$7)} - | COMMIT COMMIT_TAG STR COMMIT_MSG STR COMMIT_ID STR {yy.commit($5,$7,yy.commitType.NORMAL,$3)} - | COMMIT COMMIT_TAG STR COMMIT_ID STR COMMIT_MSG STR {yy.commit($7,$5,yy.commitType.NORMAL,$3)} - | COMMIT COMMIT_ID STR COMMIT_TAG STR COMMIT_MSG STR {yy.commit($7,$3,yy.commitType.NORMAL,$5)} - | COMMIT COMMIT_ID STR COMMIT_MSG STR COMMIT_TAG STR {yy.commit($5,$3,yy.commitType.NORMAL,$7)} + | COMMIT COMMIT_MSG STR commitTags COMMIT_ID STR {yy.commit($3,$6,yy.commitType.NORMAL,$4)} + | COMMIT COMMIT_MSG STR COMMIT_ID STR commitTags {yy.commit($3,$5,yy.commitType.NORMAL,$6)} + | COMMIT commitTags COMMIT_MSG STR COMMIT_ID STR {yy.commit($4,$6,yy.commitType.NORMAL,$2)} + | COMMIT commitTags COMMIT_ID STR COMMIT_MSG STR {yy.commit($6,$4,yy.commitType.NORMAL,$2)} + | COMMIT COMMIT_ID STR commitTags COMMIT_MSG STR {yy.commit($6,$3,yy.commitType.NORMAL,$4)} + | COMMIT COMMIT_ID STR COMMIT_MSG STR commitTags {yy.commit($5,$3,yy.commitType.NORMAL,$6)} - | COMMIT COMMIT_MSG STR COMMIT_ID STR COMMIT_TYPE commitType COMMIT_TAG STR {yy.commit($3,$5,$7,$9)} - | COMMIT COMMIT_MSG STR COMMIT_ID STR COMMIT_TAG STR COMMIT_TYPE commitType {yy.commit($3,$5,$9,$7)} - | COMMIT COMMIT_MSG STR COMMIT_TYPE commitType COMMIT_ID STR COMMIT_TAG STR {yy.commit($3,$7,$5,$9)} - | COMMIT COMMIT_MSG STR COMMIT_TYPE commitType COMMIT_TAG STR COMMIT_ID STR {yy.commit($3,$9,$5,$7)} - | COMMIT COMMIT_MSG STR COMMIT_TAG STR COMMIT_ID STR COMMIT_TYPE commitType {yy.commit($3,$7,$9,$5)} - | COMMIT COMMIT_MSG STR COMMIT_TAG STR COMMIT_TYPE commitType COMMIT_ID STR {yy.commit($3,$9,$7,$5)} + | COMMIT COMMIT_MSG STR COMMIT_ID STR COMMIT_TYPE commitType commitTags {yy.commit($3,$5,$7,$8)} + | COMMIT COMMIT_MSG STR COMMIT_ID STR commitTags COMMIT_TYPE commitType {yy.commit($3,$5,$8,$6)} + | COMMIT COMMIT_MSG STR COMMIT_TYPE commitType COMMIT_ID STR commitTags {yy.commit($3,$7,$5,$8)} + | COMMIT COMMIT_MSG STR COMMIT_TYPE commitType commitTags COMMIT_ID STR {yy.commit($3,$8,$5,$6)} + | COMMIT COMMIT_MSG STR commitTags COMMIT_ID STR COMMIT_TYPE commitType {yy.commit($3,$6,$8,$4)} + | COMMIT COMMIT_MSG STR commitTags COMMIT_TYPE commitType COMMIT_ID STR {yy.commit($3,$8,$6,$4)} - | COMMIT COMMIT_ID STR COMMIT_MSG STR COMMIT_TYPE commitType COMMIT_TAG STR {yy.commit($5,$3,$7,$9)} - | COMMIT COMMIT_ID STR COMMIT_MSG STR COMMIT_TAG STR COMMIT_TYPE commitType {yy.commit($5,$3,$9,$7)} - | COMMIT COMMIT_ID STR COMMIT_TYPE commitType COMMIT_MSG STR COMMIT_TAG STR {yy.commit($7,$3,$5,$9)} - | COMMIT COMMIT_ID STR COMMIT_TYPE commitType COMMIT_TAG STR COMMIT_MSG STR {yy.commit($9,$3,$5,$7)} - | COMMIT COMMIT_ID STR COMMIT_TAG STR COMMIT_MSG STR COMMIT_TYPE commitType {yy.commit($7,$3,$9,$5)} - | COMMIT COMMIT_ID STR COMMIT_TAG STR COMMIT_TYPE commitType COMMIT_MSG STR {yy.commit($9,$3,$7,$5)} + | COMMIT COMMIT_ID STR COMMIT_MSG STR COMMIT_TYPE commitType commitTags {yy.commit($5,$3,$7,$8)} + | COMMIT COMMIT_ID STR COMMIT_MSG STR commitTags COMMIT_TYPE commitType {yy.commit($5,$3,$8,$6)} + | COMMIT COMMIT_ID STR COMMIT_TYPE commitType COMMIT_MSG STR commitTags {yy.commit($7,$3,$5,$8)} + | COMMIT COMMIT_ID STR COMMIT_TYPE commitType commitTags COMMIT_MSG STR {yy.commit($8,$3,$5,$6)} + | COMMIT COMMIT_ID STR commitTags COMMIT_MSG STR COMMIT_TYPE commitType {yy.commit($6,$3,$8,$4)} + | COMMIT COMMIT_ID STR commitTags COMMIT_TYPE commitType COMMIT_MSG STR {yy.commit($8,$3,$6,$4)} - | COMMIT COMMIT_TAG STR COMMIT_ID STR COMMIT_TYPE commitType COMMIT_MSG STR {yy.commit($9,$5,$7,$3)} - | COMMIT COMMIT_TAG STR COMMIT_ID STR COMMIT_MSG STR COMMIT_TYPE commitType {yy.commit($7,$5,$9,$3)} - | COMMIT COMMIT_TAG STR COMMIT_TYPE commitType COMMIT_ID STR COMMIT_MSG STR {yy.commit($9,$7,$5,$3)} - | COMMIT COMMIT_TAG STR COMMIT_TYPE commitType COMMIT_MSG STR COMMIT_ID STR {yy.commit($7,$9,$5,$3)} - | COMMIT COMMIT_TAG STR COMMIT_MSG STR COMMIT_ID STR COMMIT_TYPE commitType {yy.commit($5,$7,$9,$3)} - | COMMIT COMMIT_TAG STR COMMIT_MSG STR COMMIT_TYPE commitType COMMIT_ID STR {yy.commit($5,$9,$7,$3)} + | COMMIT commitTags COMMIT_ID STR COMMIT_TYPE commitType COMMIT_MSG STR {yy.commit($8,$4,$6,$2)} + | COMMIT commitTags COMMIT_ID STR COMMIT_MSG STR COMMIT_TYPE commitType {yy.commit($6,$4,$8,$2)} + | COMMIT commitTags COMMIT_TYPE commitType COMMIT_ID STR COMMIT_MSG STR {yy.commit($8,$6,$4,$2)} + | COMMIT commitTags COMMIT_TYPE commitType COMMIT_MSG STR COMMIT_ID STR {yy.commit($6,$8,$4,$2)} + | COMMIT commitTags COMMIT_MSG STR COMMIT_ID STR COMMIT_TYPE commitType {yy.commit($4,$6,$8,$2)} + | COMMIT commitTags COMMIT_MSG STR COMMIT_TYPE commitType COMMIT_ID STR {yy.commit($4,$8,$6,$2)} - | COMMIT COMMIT_TYPE commitType COMMIT_ID STR COMMIT_MSG STR COMMIT_TAG STR {yy.commit($7,$5,$3,$9)} - | COMMIT COMMIT_TYPE commitType COMMIT_ID STR COMMIT_TAG STR COMMIT_MSG STR {yy.commit($9,$5,$3,$7)} - | COMMIT COMMIT_TYPE commitType COMMIT_TAG STR COMMIT_MSG STR COMMIT_ID STR {yy.commit($7,$9,$3,$5)} - | COMMIT COMMIT_TYPE commitType COMMIT_TAG STR COMMIT_ID STR COMMIT_MSG STR {yy.commit($9,$7,$3,$5)} - | COMMIT COMMIT_TYPE commitType COMMIT_MSG STR COMMIT_ID STR COMMIT_TAG STR {yy.commit($5,$7,$3,$9)} - | COMMIT COMMIT_TYPE commitType COMMIT_MSG STR COMMIT_TAG STR COMMIT_ID STR {yy.commit($5,$9,$3,$7)} - - - // | COMMIT COMMIT_ID STR {yy.commit('',$3,yy.commitType.NORMAL,'')} - // | COMMIT COMMIT_TYPE commitType {yy.commit('','',$3,'')} - // | COMMIT COMMIT_TAG STR {yy.commit('','',yy.commitType.NORMAL,$3)} - // | COMMIT COMMIT_MSG STR {yy.commit($3,'',yy.commitType.NORMAL,'')} - // | COMMIT COMMIT_TAG STR COMMIT_TYPE commitType {yy.commit('','',$5,$3)} - // | COMMIT COMMIT_TYPE commitType COMMIT_TAG STR {yy.commit('','',$3,$5)} - // | COMMIT COMMIT_ID STR COMMIT_TYPE commitType {yy.commit('',$3,$5,'')} - // | COMMIT COMMIT_ID STR COMMIT_TAG STR {yy.commit('',$3,yy.commitType.NORMAL,$5)} - // | COMMIT COMMIT_ID STR COMMIT_TYPE commitType COMMIT_TAG STR {yy.commit('',$3,$5,$7)} - // | COMMIT COMMIT_ID STR COMMIT_TAG STR COMMIT_TYPE commitType {yy.commit('',$3,$7,$5)} + | COMMIT COMMIT_TYPE commitType COMMIT_ID STR COMMIT_MSG STR commitTags {yy.commit($7,$5,$3,$8)} + | COMMIT COMMIT_TYPE commitType COMMIT_ID STR commitTags COMMIT_MSG STR {yy.commit($8,$5,$3,$6)} + | COMMIT COMMIT_TYPE commitType commitTags COMMIT_MSG STR COMMIT_ID STR {yy.commit($6,$8,$3,$4)} + | COMMIT COMMIT_TYPE commitType commitTags COMMIT_ID STR COMMIT_MSG STR {yy.commit($8,$6,$3,$4)} + | COMMIT COMMIT_TYPE commitType COMMIT_MSG STR COMMIT_ID STR commitTags {yy.commit($5,$7,$3,$8)} + | COMMIT COMMIT_TYPE commitType COMMIT_MSG STR commitTags COMMIT_ID STR {yy.commit($5,$8,$3,$6)} ; commit_arg : /* empty */ {$$ = ""} @@ -238,6 +221,12 @@ commitType | REVERSE { $$=yy.commitType.REVERSE;} | HIGHLIGHT { $$=yy.commitType.HIGHLIGHT;} ; +commitTags + : COMMIT_TAG STR {$$=[$2]} + | COMMIT_TAG EMPTYSTR {$$=['']} + | commitTags COMMIT_TAG STR {$commitTags.push($3); $$=$commitTags;} + | commitTags COMMIT_TAG EMPTYSTR {$commitTags.push(''); $$=$commitTags;} + ; ref : ID diff --git a/packages/mermaid/src/diagrams/state/dataFetcher.js b/packages/mermaid/src/diagrams/state/dataFetcher.js index 760bf9ef8..35c1d933f 100644 --- a/packages/mermaid/src/diagrams/state/dataFetcher.js +++ b/packages/mermaid/src/diagrams/state/dataFetcher.js @@ -198,9 +198,6 @@ function getClassesFromDbInfo(dbInfoItem) { * Get classes from the db for the info item. * If there aren't any or if dbInfoItem isn't defined, return an empty string. * Else create 1 string from the list of classes found - * - * @param {undefined | null | object} dbInfoItem - * @returns {string} */ function getStylesFromDbInfo(dbInfoItem) { if (dbInfoItem === undefined || dbInfoItem === null) { diff --git a/packages/mermaid/src/docs/ecosystem/integrations-community.md b/packages/mermaid/src/docs/ecosystem/integrations-community.md index 54968471f..d77a82b44 100644 --- a/packages/mermaid/src/docs/ecosystem/integrations-community.md +++ b/packages/mermaid/src/docs/ecosystem/integrations-community.md @@ -37,6 +37,8 @@ To add an integration to this list, see the [Integrations - create page](./integ - [CloudScript.io Mermaid Addon](https://marketplace.atlassian.com/apps/1219878/cloudscript-io-mermaid-addon?hosting=cloud&tab=overview) - [Azure Devops](https://learn.microsoft.com/en-us/azure/devops/project/wiki/markdown-guidance?view=azure-devops#add-mermaid-diagrams-to-a-wiki-page) ✅ - [Deepdwn](https://billiam.itch.io/deepdwn) ✅ +- [Doctave](https://www.doctave.com/) ✅ + - [Mermaid in Markdown code blocks](https://docs.doctave.com/components/mermaid) ✅ - [GitBook](https://gitbook.com) - [Mermaid Plugin](https://github.com/JozoVilcek/gitbook-plugin-mermaid) - [Mermaid plugin for GitBook](https://github.com/wwformat/gitbook-plugin-mermaid-pdf) @@ -201,6 +203,7 @@ Communication tools and platforms - [gatsby-remark-mermaid](https://github.com/remcohaszing/gatsby-remark-mermaid) - [JSDoc](https://jsdoc.app/) - [jsdoc-mermaid](https://github.com/Jellyvision/jsdoc-mermaid) +- [Madness](https://madness.dannyb.co/) - [mdBook](https://rust-lang.github.io/mdBook/index.html) - [mdbook-mermaid](https://github.com/badboy/mdbook-mermaid) - [MkDocs](https://www.mkdocs.org) diff --git a/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md b/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md index ca7cb79c3..3b874f689 100644 --- a/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md +++ b/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md @@ -100,7 +100,7 @@ Cardinality is a property that describes how many elements of another entity can | 1+ | 1+ | One or more | | zero or more | zero or more | Zero or more | | zero or many | zero or many | Zero or more | -| many(0) | many(1) | Zero or more | +| many(0) | many(0) | Zero or more | | 0+ | 0+ | Zero or more | | only one | only one | Exactly one | | 1 | 1 | Exactly one | diff --git a/packages/mermaid/src/docs/syntax/packet.md b/packages/mermaid/src/docs/syntax/packet.md index dfeffb674..1a2671398 100644 --- a/packages/mermaid/src/docs/syntax/packet.md +++ b/packages/mermaid/src/docs/syntax/packet.md @@ -6,7 +6,7 @@ A packet diagram is a visual representation used to illustrate the structure and ## Usage -This diagram type is particularly useful for network engineers, educators, and students who require a clear and concise way to represent the structure of network packets. +This diagram type is particularly useful for developers, network engineers, educators, and students who require a clear and concise way to represent the structure of network packets. ## Syntax diff --git a/packages/mermaid/src/docs/syntax/stateDiagram.md b/packages/mermaid/src/docs/syntax/stateDiagram.md index a287d4168..9d99ab93b 100644 --- a/packages/mermaid/src/docs/syntax/stateDiagram.md +++ b/packages/mermaid/src/docs/syntax/stateDiagram.md @@ -288,8 +288,8 @@ a _[valid CSS property name](https://www.w3.org/TR/CSS/#properties)_ followed by Here is an example of a classDef with just one property-value pair: -``` - classDef movement font-style:italic; +```txt +classDef movement font-style:italic; ``` where @@ -301,8 +301,8 @@ If you want to have more than one _property-value pair_ then you put a comma (`, Here is an example with three property-value pairs: -``` - classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow +```txt +classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow ``` where @@ -327,7 +327,7 @@ There are two ways to apply a `classDef` style to a state: A `class` statement tells Mermaid to apply the named classDef to one or more classes. The form is: ```txt - class [one or more state names, separated by commas] [name of a style defined with classDef] +class [one or more state names, separated by commas] [name of a style defined with classDef] ``` Here is an example applying the `badBadEvent` style to a state named `Crash`: diff --git a/packages/mermaid/src/rendering-util/createText.ts b/packages/mermaid/src/rendering-util/createText.ts index 1e65c0282..12d81715f 100644 --- a/packages/mermaid/src/rendering-util/createText.ts +++ b/packages/mermaid/src/rendering-util/createText.ts @@ -49,8 +49,8 @@ async function addHtmlSpan(element, node, width, classes, addBackground = false) bbox = div.node().getBoundingClientRect(); } - fo.style('width', bbox.width); - fo.style('height', bbox.height); + // fo.style('width', bbox.width); + // fo.style('height', bbox.height); return fo.node(); } @@ -159,7 +159,7 @@ function updateTextContentAndStyles(tspan: any, wrappedLine: MarkdownWord[]) { wrappedLine.forEach((word, index) => { const innerTspan = tspan .append('tspan') - .attr('font-style', word.type === 'emphasis' ? 'italic' : 'normal') + .attr('font-style', word.type === 'em' ? 'italic' : 'normal') .attr('class', 'text-inner-tspan') .attr('font-weight', word.type === 'strong' ? 'bold' : 'normal'); if (index === 0) { @@ -216,28 +216,61 @@ export const createText = async ( const htmlText = markdownToHTML(text, config); const decodedReplacedText = replaceIconSubstring(decodeEntities(htmlText)); + + //for Katex the text could contain escaped characters, \\relax that should be transformed to \relax + const inputForKatex = text.replace(/\\\\/g, '\\'); + const node = { isNode, - label: decodedReplacedText, + label: hasKatex(text) ? inputForKatex : decodedReplacedText, labelStyle: style.replace('fill:', 'color:'), }; const vertexNode = await addHtmlSpan(el, node, width, classes, addSvgBackground); return vertexNode; } else { - const structuredText = markdownToLines(text.replace('
', '
'), config); + //sometimes the user might add br tags with 1 or more spaces in between, so we need to replace them with
+ const sanitizeBR = text.replace(//g, '
'); + const structuredText = markdownToLines(sanitizeBR.replace('
', '
'), config); const svgLabel = createFormattedText( width, el, structuredText, text ? addSvgBackground : false ); - if (/stroke:/.exec(style)) { - style = style.replace('stroke:', 'lineColor:'); + if (isNode) { + if (/stroke:/.exec(style)) { + style = style.replace('stroke:', 'lineColor:'); + } + + const nodeLabelTextStyle = style + .replace(/stroke:[^;]+;?/g, '') + .replace(/stroke-width:[^;]+;?/g, '') + .replace(/fill:[^;]+;?/g, '') + .replace(/color:/g, 'fill:'); + select(svgLabel).attr('style', nodeLabelTextStyle); + // svgLabel.setAttribute('style', style); + } else { + //On style, assume `stroke`, `stroke-width` are used for edge path, so remove them + // remove `fill` + // use `background` as `fill` for label rect, + + const edgeLabelRectStyle = style + .replace(/stroke:[^;]+;?/g, '') + .replace(/stroke-width:[^;]+;?/g, '') + .replace(/fill:[^;]+;?/g, '') + .replace(/background:/g, 'fill:'); + select(svgLabel) + .select('rect') + .attr('style', edgeLabelRectStyle.replace(/background:/g, 'fill:')); + + // for text, update fill color with `color` + const edgeLabelTextStyle = style + .replace(/stroke:[^;]+;?/g, '') + .replace(/stroke-width:[^;]+;?/g, '') + .replace(/fill:[^;]+;?/g, '') + .replace(/color:/g, 'fill:'); + select(svgLabel).select('text').attr('style', edgeLabelTextStyle); } - select(svgLabel) - .select('text') - .attr('style', style.replace(/color:/g, 'fill:')); - // svgLabel.setAttribute('style', style); return svgLabel; } }; diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts b/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts index 7362e6f70..3ab4167a2 100644 --- a/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts +++ b/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-irregular-whitespace */ import { markdownToLines, markdownToHTML } from './handle-markdown-text.js'; import { test, expect } from 'vitest'; @@ -37,9 +36,9 @@ Here is a line *with an italic* section`; { content: 'is', type: 'normal' }, { content: 'a', type: 'normal' }, { content: 'line', type: 'normal' }, - { content: 'with', type: 'emphasis' }, - { content: 'an', type: 'emphasis' }, - { content: 'italic', type: 'emphasis' }, + { content: 'with', type: 'em' }, + { content: 'an', type: 'em' }, + { content: 'italic', type: 'em' }, { content: 'section', type: 'normal' }, ], ]; @@ -143,7 +142,7 @@ test('markdownToLines - Only italic formatting', () => { { content: 'This', type: 'normal' }, { content: 'is', type: 'normal' }, { content: 'an', type: 'normal' }, - { content: 'italic', type: 'emphasis' }, + { content: 'italic', type: 'em' }, { content: 'test', type: 'normal' }, ], ]; @@ -156,7 +155,7 @@ it('markdownToLines - Mixed formatting', () => { let input = `*Italic* and **bold** formatting`; let expected = [ [ - { content: 'Italic', type: 'emphasis' }, + { content: 'Italic', type: 'em' }, { content: 'and', type: 'normal' }, { content: 'bold', type: 'strong' }, { content: 'formatting', type: 'normal' }, @@ -167,9 +166,9 @@ it('markdownToLines - Mixed formatting', () => { input = `*Italic with space* and **bold ws** formatting`; expected = [ [ - { content: 'Italic', type: 'emphasis' }, - { content: 'with', type: 'emphasis' }, - { content: 'space', type: 'emphasis' }, + { content: 'Italic', type: 'em' }, + { content: 'with', type: 'em' }, + { content: 'space', type: 'em' }, { content: 'and', type: 'normal' }, { content: 'bold', type: 'strong' }, { content: 'ws', type: 'strong' }, @@ -191,9 +190,9 @@ Word!`; { content: 'the', type: 'strong' }, { content: 'hog...', type: 'normal' }, { content: 'a', type: 'normal' }, - { content: 'very', type: 'emphasis' }, - { content: 'long', type: 'emphasis' }, - { content: 'text', type: 'emphasis' }, + { content: 'very', type: 'em' }, + { content: 'long', type: 'em' }, + { content: 'text', type: 'em' }, { content: 'about', type: 'normal' }, { content: 'it', type: 'normal' }, ], @@ -215,13 +214,13 @@ test('markdownToLines - No auto wrapping', () => { [ [ { - "content": "Hello, how do", + "content": "Hello, how do", "type": "normal", }, ], [ { - "content": "you do?", + "content": "you do?", "type": "normal", }, ], @@ -298,3 +297,13 @@ test('markdownToHTML - no auto wrapping', () => { ) ).toMatchInlineSnapshot('"

Hello, how do
you do?

"'); }); + +test('markdownToHTML - auto wrapping', () => { + expect( + markdownToHTML( + `Hello, how do + you do?`, + { markdownAutoWrap: true } + ) + ).toMatchInlineSnapshot('"

Hello, how do
you do?

"'); +}); diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.ts b/packages/mermaid/src/rendering-util/handle-markdown-text.ts index 82e0411fd..4b6a04428 100644 --- a/packages/mermaid/src/rendering-util/handle-markdown-text.ts +++ b/packages/mermaid/src/rendering-util/handle-markdown-text.ts @@ -1,5 +1,5 @@ -import type { Content } from 'mdast'; -import { fromMarkdown } from 'mdast-util-from-markdown'; +import type { MarkedToken, Token } from 'marked'; +import { marked } from 'marked'; import { dedent } from 'ts-dedent'; import type { MarkdownLine, MarkdownWordType } from './types.js'; import type { MermaidConfig } from '../config.type.js'; @@ -9,8 +9,10 @@ import type { MermaidConfig } from '../config.type.js'; * @returns processed markdown */ function preprocessMarkdown(markdown: string, { markdownAutoWrap }: MermaidConfig): string { + //Replace
with \n + const withoutBR = markdown.replace(//g, '\n'); // Replace multiple newlines with a single newline - const withoutMultipleNewlines = markdown.replace(/\n{2,}/g, '\n'); + const withoutMultipleNewlines = withoutBR.replace(/\n{2,}/g, '\n'); // Remove extra spaces at the beginning of each line const withoutExtraSpaces = dedent(withoutMultipleNewlines); if (markdownAutoWrap === false) { @@ -24,13 +26,13 @@ function preprocessMarkdown(markdown: string, { markdownAutoWrap }: MermaidConfi */ export function markdownToLines(markdown: string, config: MermaidConfig = {}): MarkdownLine[] { const preprocessedMarkdown = preprocessMarkdown(markdown, config); - const { children } = fromMarkdown(preprocessedMarkdown); + const nodes = marked.lexer(preprocessedMarkdown); const lines: MarkdownLine[] = [[]]; let currentLine = 0; - function processNode(node: Content, parentType: MarkdownWordType = 'normal') { + function processNode(node: MarkedToken, parentType: MarkdownWordType = 'normal') { if (node.type === 'text') { - const textLines = node.value.split('\n'); + const textLines = node.text.split('\n'); textLines.forEach((textLine, index) => { if (index !== 0) { currentLine++; @@ -42,18 +44,22 @@ export function markdownToLines(markdown: string, config: MermaidConfig = {}): M } }); }); - } else if (node.type === 'strong' || node.type === 'emphasis') { - node.children.forEach((contentNode) => { - processNode(contentNode, node.type); + } else if (node.type === 'strong' || node.type === 'em') { + node.tokens.forEach((contentNode) => { + processNode(contentNode as MarkedToken, node.type); }); + } else if (node.type === 'html') { + lines[currentLine].push({ content: node.text, type: 'normal' }); } } - children.forEach((treeNode) => { + nodes.forEach((treeNode) => { if (treeNode.type === 'paragraph') { - treeNode.children.forEach((contentNode) => { - processNode(contentNode); + treeNode.tokens?.forEach((contentNode) => { + processNode(contentNode as MarkedToken); }); + } else if (treeNode.type === 'html') { + lines[currentLine].push({ content: treeNode.text, type: 'normal' }); } }); @@ -61,25 +67,27 @@ export function markdownToLines(markdown: string, config: MermaidConfig = {}): M } export function markdownToHTML(markdown: string, { markdownAutoWrap }: MermaidConfig = {}) { - const { children } = fromMarkdown(markdown); + const nodes = marked.lexer(markdown); - function output(node: Content): string { + function output(node: Token): string { if (node.type === 'text') { if (markdownAutoWrap === false) { - return node.value.replace(/\n/g, '
').replace(/ /g, ' '); + return node.text.replace(/\n */g, '
').replace(/ /g, ' '); } - return node.value.replace(/\n/g, '
'); + return node.text.replace(/\n */g, '
'); } else if (node.type === 'strong') { - return `${node.children.map(output).join('')}`; - } else if (node.type === 'emphasis') { - return `${node.children.map(output).join('')}`; + return `${node.tokens?.map(output).join('')}`; + } else if (node.type === 'em') { + return `${node.tokens?.map(output).join('')}`; } else if (node.type === 'paragraph') { - return `

${node.children.map(output).join('')}

`; + return `

${node.tokens?.map(output).join('')}

`; + } else if (node.type === 'space') { + return ''; } else if (node.type === 'html') { - return `${node.value}`; + return `${node.text}`; } return `Unsupported markdown: ${node.type}`; } - return children.map(output).join(''); + return nodes.map(output).join(''); } diff --git a/packages/mermaid/src/rendering-util/layout-algorithms/dagre/index.js b/packages/mermaid/src/rendering-util/layout-algorithms/dagre/index.js index 81ad3b1ef..41c5ce376 100644 --- a/packages/mermaid/src/rendering-util/layout-algorithms/dagre/index.js +++ b/packages/mermaid/src/rendering-util/layout-algorithms/dagre/index.js @@ -121,7 +121,7 @@ const recursiveRender = async (_elem, graph, diagramType, id, parentCluster, sit graph ); log.info(findNonClusterChild(node.id, graph)); - clusterDb[node.id] = { id: findNonClusterChild(node.id, graph), node }; + clusterDb.set(node.id, { id: findNonClusterChild(node.id, graph), node }); // insertCluster(clusters, graph.node(v)); } else { log.trace('Node - the non recursive path XAX', v, node.id, node); @@ -138,7 +138,16 @@ const recursiveRender = async (_elem, graph, diagramType, id, parentCluster, sit log.info('Edge ' + e.v + ' -> ' + e.w + ': ', e, ' ', JSON.stringify(graph.edge(e))); // Check if link is either from or to a cluster - log.info('Fix', clusterDb, 'ids:', e.v, e.w, 'Translating: ', clusterDb[e.v], clusterDb[e.w]); + log.info( + 'Fix', + clusterDb, + 'ids:', + e.v, + e.w, + 'Translating: ', + clusterDb.get(e.v), + clusterDb.get(e.w) + ); await insertEdgeLabel(edgeLabels, edge); }); @@ -147,20 +156,6 @@ const recursiveRender = async (_elem, graph, diagramType, id, parentCluster, sit await processEdges(); - // // Insert labels, this will insert them into the dom so that the width can be calculated - // // Also figure out which edges point to/from clusters and adjust them accordingly - // // Edges from/to clusters really points to the first child in the cluster. - // // TODO: pick optimal child in the cluster to us as link anchor - // await graph.edges().forEach(async function (e) { - // const edge = graph.edge(e.v, e.w, e.name); - // log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e)); - // log.info('Edge ' + e.v + ' -> ' + e.w + ': ', e, ' ', JSON.stringify(graph.edge(e))); - - // // Check if link is either from or to a cluster - // log.info('Fix', clusterDb, 'ids:', e.v, e.w, 'Translating: ', clusterDb[e.v], clusterDb[e.w]); - // await insertEdgeLabel(edgeLabels, edge); - // }); - log.info('Graph before layout:', JSON.stringify(graphlibJson.write(graph))); log.info('############################################# XXX'); @@ -198,7 +193,7 @@ const recursiveRender = async (_elem, graph, diagramType, id, parentCluster, sit node.y, graph.parent(v) ); - clusterDb[node.id].node = node; + clusterDb.get(node.id).node = node; positionNode(node); } else { // A tainted cluster node @@ -222,7 +217,7 @@ const recursiveRender = async (_elem, graph, diagramType, id, parentCluster, sit await insertCluster(clusters, node); // A cluster in the non-recursive way - clusterDb[node.id].node = node; + clusterDb.get(node.id).node = node; } else { // Regular node const parent = graph.node(node.parentId); @@ -255,7 +250,6 @@ const recursiveRender = async (_elem, graph, diagramType, id, parentCluster, sit const edge = graph.edge(e); log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(edge), edge); - // OBS HERE edge.points.forEach((point) => (point.y += subGraphTitleTotalMargin / 2)); const startNode = graph.node(e.v); var endNode = graph.node(e.w); @@ -273,17 +267,8 @@ const recursiveRender = async (_elem, graph, diagramType, id, parentCluster, sit log.warn('Returning from recursive render XAX', elem, diff); return { elem, diff }; }; -/** - * ############################################################### - * Render the graph - * ############################################################### - * @param data4Layout - * @param svg - * @param element - */ + export const render = async (data4Layout, svg, element) => { - // Create the input mermaid.graph - // console.log('XYZ data4Layout', data4Layout); const graph = new graphlib.Graph({ multigraph: true, compound: true, @@ -305,15 +290,12 @@ export const render = async (data4Layout, svg, element) => { return {}; }); - // Org - insertMarkers(element, data4Layout.markers, data4Layout.type, data4Layout.diagramId); clearNodes(); clearEdges(); clearClusters(); clearGraphlib(); - // Add the nodes and edges to the graph data4Layout.nodes.forEach((node) => { graph.setNode(node.id, { ...node }); if (node.parentId) { diff --git a/packages/mermaid/src/rendering-util/layout-algorithms/dagre/mermaid-graphlib.js b/packages/mermaid/src/rendering-util/layout-algorithms/dagre/mermaid-graphlib.js index 883fbdc89..456dde1f1 100644 --- a/packages/mermaid/src/rendering-util/layout-algorithms/dagre/mermaid-graphlib.js +++ b/packages/mermaid/src/rendering-util/layout-algorithms/dagre/mermaid-graphlib.js @@ -3,39 +3,40 @@ import { log } from '$root/logger.js'; import * as graphlib from 'dagre-d3-es/src/graphlib/index.js'; import * as graphlibJson from 'dagre-d3-es/src/graphlib/json.js'; -export let clusterDb = {}; -let descendants = {}; -let parents = {}; +export let clusterDb = new Map(); +let descendants = new Map(); +let parents = new Map(); export const clear = () => { - descendants = {}; - parents = {}; - clusterDb = {}; + descendants.clear(); + parents.clear(); + clusterDb.clear(); }; const isDescendant = (id, ancestorId) => { - log.trace('In isDescendant', ancestorId, ' ', id, ' = ', descendants[ancestorId].includes(id)); - return descendants[ancestorId].includes(id); + const ancestorDescendants = descendants.get(ancestorId) || []; + log.trace('In isDescendant', ancestorId, ' ', id, ' = ', ancestorDescendants.includes(id)); + return ancestorDescendants.includes(id); }; const edgeInCluster = (edge, clusterId) => { - log.info('Descendants of ', clusterId, ' is ', descendants[clusterId]); + const clusterDescendants = descendants.get(clusterId) || []; + log.info('Descendants of ', clusterId, ' is ', clusterDescendants); log.info('Edge is ', edge); - // Edges to/from the cluster is not in the cluster, they are in the parent if (edge.v === clusterId || edge.w === clusterId) { return false; } - if (!descendants[clusterId]) { + if (!clusterDescendants) { log.debug('Tilt, ', clusterId, ',not in descendants'); return false; } return ( - descendants[clusterId].includes(edge.v) || + clusterDescendants.includes(edge.v) || isDescendant(edge.v, clusterId) || isDescendant(edge.w, clusterId) || - descendants[clusterId].includes(edge.w) + clusterDescendants.includes(edge.w) ); }; @@ -51,7 +52,6 @@ const copy = (clusterId, graph, newGraph, rootId) => { ); const nodes = graph.children(clusterId) || []; - // Include cluster node if it is not the root if (clusterId !== rootId) { nodes.push(clusterId); } @@ -63,7 +63,7 @@ const copy = (clusterId, graph, newGraph, rootId) => { copy(node, graph, newGraph, rootId); } else { const data = graph.node(node); - log.info('cp ', node, ' to ', rootId, ' with parent ', clusterId); //,node, data, ' parent is ', clusterId); + log.info('cp ', node, ' to ', rootId, ' with parent ', clusterId); newGraph.setNode(node, data); if (rootId !== graph.parent(node)) { log.warn('Setting parent', node, graph.parent(node)); @@ -91,7 +91,6 @@ const copy = (clusterId, graph, newGraph, rootId) => { const data = graph.edge(edge.v, edge.w, edge.name); log.info('Edge data', data, rootId); try { - // Do not copy edges in and out of the root cluster, they belong to the parent graph if (edgeInCluster(edge, rootId)) { log.info('Copying as ', edge.v, edge.w, data, edge.name); newGraph.setEdge(edge.v, edge.w, data, edge.name); @@ -117,25 +116,19 @@ const copy = (clusterId, graph, newGraph, rootId) => { graph.removeNode(node); }); }; + export const extractDescendants = (id, graph) => { - // log.debug('Extracting ', id); const children = graph.children(id); let res = [...children]; for (const child of children) { - parents[child] = id; + parents.set(child, id); res = [...res, ...extractDescendants(child, graph)]; } return res; }; -/** - * Validates the graph, checking that all parent child relation points to existing nodes and that - * edges between nodes also ia correct. When not correct the function logs the discrepancies. - * - * @param graph - */ export const validate = (graph) => { const edges = graph.edges(); log.trace('Edges: ', edges); @@ -168,13 +161,6 @@ const findCommonEdges = (graph, id1, id2) => { return result; }; -/** - * Finds a child that is not a cluster. When faking an edge between a node and a cluster. - * - * @param id - * @param {any} graph - * @param {string} clusterId - */ export const findNonClusterChild = (id, graph, clusterId) => { const children = graph.children(id); log.trace('Searching children of id ', id, children); @@ -185,19 +171,10 @@ export const findNonClusterChild = (id, graph, clusterId) => { for (const child of children) { const _id = findNonClusterChild(child, graph, clusterId); - // Edge chase where the cluster has an edge to a node and the selected - // child has a link to the same node const commonEdges = findCommonEdges(graph, clusterId, _id); if (_id) { if (commonEdges.length > 0) { - // console.log( - // '\x1B[44;93;4m abc24 The replacement also has an edge', - // clusterId, - // ' => ', - // _id, - // graph.edges() - // ); reserve = _id; } else { return _id; @@ -208,17 +185,15 @@ export const findNonClusterChild = (id, graph, clusterId) => { }; const getAnchorId = (id) => { - if (!clusterDb[id]) { + if (!clusterDb.has(id)) { return id; } - // If the cluster has no external connections - if (!clusterDb[id].externalConnections) { + if (!clusterDb.get(id).externalConnections) { return id; } - // Return the replacement node - if (clusterDb[id]) { - return clusterDb[id].id; + if (clusterDb.has(id)) { + return clusterDb.get(id).id; } return id; }; @@ -230,8 +205,7 @@ export const adjustClustersAndEdges = (graph, depth) => { } else { log.debug('Opting in, graph '); } - // Go through the nodes and for each cluster found, save a replacement node, this can be used when - // faking a link to a cluster + graph.nodes().forEach(function (id) { const children = graph.children(id); if (children.length > 0) { @@ -241,34 +215,24 @@ export const adjustClustersAndEdges = (graph, depth) => { ' Replacement id in edges: ', findNonClusterChild(id, graph, id) ); - descendants[id] = extractDescendants(id, graph); - clusterDb[id] = { id: findNonClusterChild(id, graph, id), clusterData: graph.node(id) }; + descendants.set(id, extractDescendants(id, graph)); + clusterDb.set(id, { id: findNonClusterChild(id, graph, id), clusterData: graph.node(id) }); } }); - // Check incoming and outgoing edges for each cluster graph.nodes().forEach(function (id) { const children = graph.children(id); const edges = graph.edges(); if (children.length > 0) { log.debug('Cluster identified', id, descendants); edges.forEach((edge) => { - // log.debug('Edge, descendants: ', edge, descendants[id]); + const d1 = isDescendant(edge.v, id); + const d2 = isDescendant(edge.w, id); - // Check if any edge leaves the cluster (not the actual cluster, that's a link from the box) - if (edge.v !== id && edge.w !== id) { - // Any edge where either the one of the nodes is descending to the cluster but not the other - // if (descendants[id].indexOf(edge.v) < 0 && descendants[id].indexOf(edge.w) < 0) { - - const d1 = isDescendant(edge.v, id); - const d2 = isDescendant(edge.w, id); - - // d1 xor d2 - if either d1 is true and d2 is false or the other way around - if (d1 ^ d2) { - log.warn('Edge: ', edge, ' leaves cluster ', id); - log.warn('Descendants of XXX ', id, ': ', descendants[id]); - clusterDb[id].externalConnections = true; - } + if (d1 ^ d2) { + log.warn('Edge: ', edge, ' leaves cluster ', id); + log.warn('Descendants of XXX ', id, ': ', descendants.get(id)); + clusterDb.get(id).externalConnections = true; } }); } else { @@ -276,18 +240,15 @@ export const adjustClustersAndEdges = (graph, depth) => { } }); - for (let id of Object.keys(clusterDb)) { - const nonClusterChild = clusterDb[id].id; + for (let id of clusterDb.keys()) { + const nonClusterChild = clusterDb.get(id).id; const parent = graph.parent(nonClusterChild); - // Change replacement node of id to parent of current replacement node if valid - if (parent !== id && clusterDb[parent] && !clusterDb[parent].externalConnections) { - clusterDb[id].id = parent; + if (parent !== id && clusterDb.has(parent) && !clusterDb.get(parent).externalConnections) { + clusterDb.get(id).id = parent; } } - // For clusters with incoming and/or outgoing edges translate those edges to a real node - // in the cluster in order to fake the edge graph.edges().forEach(function (e) { const edge = graph.edge(e); log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e)); @@ -295,7 +256,6 @@ export const adjustClustersAndEdges = (graph, depth) => { let v = e.v; let w = e.w; - // Check if link is either from or to a cluster log.warn( 'Fix XXX', clusterDb, @@ -303,14 +263,13 @@ export const adjustClustersAndEdges = (graph, depth) => { e.v, e.w, 'Translating: ', - clusterDb[e.v], + clusterDb.get(e.v), ' --- ', - clusterDb[e.w] + clusterDb.get(e.w) ); - if (clusterDb[e.v] && clusterDb[e.w] && clusterDb[e.v] === clusterDb[e.w]) { - // cspell:ignore trixing - log.warn('Fixing and trixing link to self - removing XXX', e.v, e.w, e.name); - log.warn('Fixing and trixing - removing XXX', e.v, e.w, e.name); + if (clusterDb.get(e.v) && clusterDb.get(e.w) && clusterDb.get(e.v) === clusterDb.get(e.w)) { + log.warn('Fixing and trying link to self - removing XXX', e.v, e.w, e.name); + log.warn('Fixing and trying - removing XXX', e.v, e.w, e.name); v = getAnchorId(e.v); w = getAnchorId(e.w); graph.removeEdge(e.v, e.w, e.name); @@ -320,7 +279,7 @@ export const adjustClustersAndEdges = (graph, depth) => { domId: specialId1, id: specialId1, labelStyle: '', - label: edge.label, + label: '', padding: 0, shape: 'labelRect', style: '', @@ -342,27 +301,29 @@ export const adjustClustersAndEdges = (graph, depth) => { const edge2 = structuredClone(edge); edge1.label = ''; edge1.arrowTypeEnd = 'none'; + edge1.id = e.name + '-cyclic-special-1'; edgeMid.arrowTypeEnd = 'none'; + edgeMid.id = e.name + '-cyclic-special-mid'; edge2.label = ''; edge1.fromCluster = e.v; edge2.toCluster = e.v; - - graph.setEdge(v, specialId1, edge1, e.name + '-cyclic-special'); - graph.setEdge(specialId1, specialId2, edgeMid, e.name + '-cyclic-special'); - graph.setEdge(specialId2, w, edge2, e.name + '-cyclic-special'); - } else if (clusterDb[e.v] || clusterDb[e.w]) { - log.warn('Fixing and trixing - removing XXX', e.v, e.w, e.name); + edge2.id = e.name + '-cyclic-special-2'; + graph.setEdge(v, specialId1, edge1, e.name + '-cyclic-special-0'); + graph.setEdge(specialId1, specialId2, edgeMid, e.name + '-cyclic-special-1'); + graph.setEdge(specialId2, w, edge2, e.name + '-cyclic-special-2'); + } else if (clusterDb.get(e.v) || clusterDb.get(e.w)) { + log.warn('Fixing and trying - removing XXX', e.v, e.w, e.name); v = getAnchorId(e.v); w = getAnchorId(e.w); graph.removeEdge(e.v, e.w, e.name); if (v !== e.v) { const parent = graph.parent(v); - clusterDb[parent].externalConnections = true; + clusterDb.get(parent).externalConnections = true; edge.fromCluster = e.v; } if (w !== e.w) { const parent = graph.parent(w); - clusterDb[parent].externalConnections = true; + clusterDb.get(parent).externalConnections = true; edge.toCluster = e.w; } log.warn('Fix Replacing with XXX', v, w, e.name); @@ -375,7 +336,7 @@ export const adjustClustersAndEdges = (graph, depth) => { log.trace(clusterDb); // Remove references to extracted cluster - // graph.edges().forEach(edge => { + // graph.edges().forEach((edge) => { // if (isDescendant(edge.v, clusterId) || isDescendant(edge.w, clusterId)) { // graph.removeEdge(edge); // } @@ -388,9 +349,6 @@ export const extractor = (graph, depth) => { log.error('Bailing out'); return; } - // For clusters without incoming and/or outgoing edges, create a new cluster-node - // containing the nodes and edges in the custer in a new graph - // for (let i = 0;) let nodes = graph.nodes(); let hasChildren = false; for (const node of nodes) { @@ -402,30 +360,23 @@ export const extractor = (graph, depth) => { log.debug('Done, no node has children', graph.nodes()); return; } - // const clusters = Object.keys(clusterDb); - // clusters.forEach(clusterId => { log.debug('Nodes = ', nodes, depth); for (const node of nodes) { log.debug( 'Extracting node', node, clusterDb, - clusterDb[node] && !clusterDb[node].externalConnections, + clusterDb.has(node) && !clusterDb.get(node).externalConnections, !graph.parent(node), graph.node(node), graph.children('D'), ' Depth ', depth ); - // Note that the node might have been removed after the Object.keys call so better check - // that it still is in the game - if (!clusterDb[node]) { - // Skip if the node is not a cluster + if (!clusterDb.has(node)) { log.debug('Not a cluster', node, depth); - // break; } else if ( - !clusterDb[node].externalConnections && - // !graph.parent(node) && + !clusterDb.get(node).externalConnections && graph.children(node) && graph.children(node).length > 0 ) { @@ -437,9 +388,9 @@ export const extractor = (graph, depth) => { const graphSettings = graph.graph(); let dir = graphSettings.rankdir === 'TB' ? 'LR' : 'TB'; - if (clusterDb[node]?.clusterData?.dir) { - dir = clusterDb[node].clusterData.dir; - log.warn('Fixing dir', clusterDb[node].clusterData.dir, dir); + if (clusterDb.get(node)?.clusterData?.dir) { + dir = clusterDb.get(node).clusterData.dir; + log.warn('Fixing dir', clusterDb.get(node).clusterData.dir, dir); } const clusterGraph = new graphlib.Graph({ @@ -447,7 +398,7 @@ export const extractor = (graph, depth) => { compound: true, }) .setGraph({ - rankdir: dir, // Todo: set proper spacing + rankdir: dir, nodesep: 50, ranksep: 50, marginx: 8, @@ -462,8 +413,8 @@ export const extractor = (graph, depth) => { graph.setNode(node, { clusterNode: true, id: node, - clusterData: clusterDb[node].clusterData, - label: clusterDb[node].label, + clusterData: clusterDb.get(node).clusterData, + label: clusterDb.get(node).label, graph: clusterGraph, }); log.warn('New graph after copy node: (', node, ')', graphlibJson.write(clusterGraph)); @@ -473,7 +424,7 @@ export const extractor = (graph, depth) => { 'Cluster ** ', node, ' **not meeting the criteria !externalConnections:', - !clusterDb[node].externalConnections, + !clusterDb.get(node).externalConnections, ' no parent: ', !graph.parent(node), ' children ', @@ -500,7 +451,7 @@ const sorter = (graph, nodes) => { if (nodes.length === 0) { return []; } - let result = Object.assign(nodes); + let result = Object.assign([], nodes); nodes.forEach((node) => { const children = graph.children(node); const sorted = sorter(graph, children); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/edges.js b/packages/mermaid/src/rendering-util/rendering-elements/edges.js index 5c861b0d7..0dc38e2ca 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/edges.js +++ b/packages/mermaid/src/rendering-util/rendering-elements/edges.js @@ -154,7 +154,6 @@ export const positionEdgeLabel = (edge, paths) => { let x = edge.x; let y = edge.y; if (path) { - // // debugger; const pos = utils.calcLabelPosition(path); log.debug( 'Moving label ' + edge.label + ' from (', @@ -175,13 +174,11 @@ export const positionEdgeLabel = (edge, paths) => { el.attr('transform', `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`); } - //let path = paths.updatedPath ? paths.updatedPath : paths.originalPath; if (edge.startLabelLeft) { const el = terminalLabels.get(edge.id).startLeft; let x = edge.x; let y = edge.y; if (path) { - // debugger; const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, 'start_left', path); x = pos.x; y = pos.y; @@ -193,7 +190,6 @@ export const positionEdgeLabel = (edge, paths) => { let x = edge.x; let y = edge.y; if (path) { - // debugger; const pos = utils.calcTerminalLabelPosition( edge.arrowTypeStart ? 10 : 0, 'start_right', @@ -209,7 +205,6 @@ export const positionEdgeLabel = (edge, paths) => { let x = edge.x; let y = edge.y; if (path) { - // debugger; const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_left', path); x = pos.x; y = pos.y; @@ -275,21 +270,18 @@ export const intersection = (node, outsidePoint, insidePoint) => { res.y = outsidePoint.y; } - log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res); // cspell: disable-line + log.debug(`abc89 top/bottom calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res); return res; } else { - // Intersection onn sides of rect + // Intersection on sides of rect if (insidePoint.x < outsidePoint.x) { r = outsidePoint.x - w - x; } else { r = x - w - outsidePoint.x; } let q = (Q * r) / R; - // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w; - // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r; let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r; - // let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r; let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q; log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y }); if (r === 0) { @@ -306,49 +298,34 @@ export const intersection = (node, outsidePoint, insidePoint) => { return { x: _x, y: _y }; } }; -/** - * This function will page a path and node where the last point(s) in the path is inside the node - * and return an update path ending by the border of the node. - * - * @param {Array} _points - * @param {any} boundaryNode - * @returns {Array} Points - */ + const cutPathAtIntersect = (_points, boundaryNode) => { log.warn('abc88 cutPathAtIntersect', _points, boundaryNode); let points = []; let lastPointOutside = _points[0]; let isInside = false; _points.forEach((point) => { - // const node = clusterDb[edge.toCluster].node; log.info('abc88 checking point', point, boundaryNode); - // check if point is inside the boundary rect if (!outsideNode(boundaryNode, point) && !isInside) { - // First point inside the rect found - // Calc the intersection coord between the point anf the last point outside the rect const inter = intersection(boundaryNode, lastPointOutside, point); log.debug('abc88 inside', point, lastPointOutside, inter); log.debug('abc88 intersection', inter, boundaryNode); - // // Check case where the intersection is the same as the last point let pointPresent = false; points.forEach((p) => { pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y); }); - // // if (!pointPresent) { + if (!points.some((e) => e.x === inter.x && e.y === inter.y)) { points.push(inter); } else { log.warn('abc88 no intersect', inter, points); } - // points.push(inter); isInside = true; } else { - // Outside log.warn('abc88 outside', point, lastPointOutside); lastPointOutside = point; - // points.push(point); if (!isInside) { points.push(point); } @@ -358,13 +335,6 @@ const cutPathAtIntersect = (_points, boundaryNode) => { return points; }; -/** - * Given an edge, this function will return the corner points of the edge. This is defined as: - * one point that has a previous point and a next point such as the angle between the previous - * point and the next point is 90 degrees. Meaning that the previous point has the same x coordinate - * as the center point and at the same time the next point has the same y coordinate or vice versa. - * @param points - */ function extractCornerPoints(points) { const cornerPoints = []; const cornerPointPositions = []; @@ -401,11 +371,6 @@ const findAdjacentPoint = function (pointA, pointB, distance) { return { x: pointB.x - ratio * xDiff, y: pointB.y - ratio * yDiff }; }; -/** - * Given an array of points, this function will return a new array of points where the corners have been removed and replaced with - * adjacent points in each direction. SO a corder will be replaced with a point before and the point after the corner. - */ - const fixCorners = function (lineData) { const { cornerPointPositions } = extractCornerPoints(lineData); const newLineData = []; @@ -415,7 +380,6 @@ const fixCorners = function (lineData) { const nextPoint = lineData[i + 1]; const cornerPoint = lineData[i]; - // Find a new point on the line point 5 points back and push it to the new array const newPrevPoint = findAdjacentPoint(prevPoint, cornerPoint, 5); const newNextPoint = findAdjacentPoint(nextPoint, cornerPoint, 5); @@ -466,9 +430,7 @@ export const insertEdge = function (elem, edge, clusterDb, diagramType, startNod var head = endNode; if (head.intersect && tail.intersect) { - // log.info('abc88 InsertEdge: 0.5', edge.start, '-->', edge.end, JSON.stringify(points)); points = points.slice(1, edge.points.length - 1); - // log.info('abc88 InsertEdge APA12: 0.7', edge.start, '-->', edge.end, JSON.stringify(points)); points.unshift(tail.intersect(points[0])); log.debug( 'Last point APA12', @@ -481,59 +443,43 @@ export const insertEdge = function (elem, edge, clusterDb, diagramType, startNod ); points.push(head.intersect(points[points.length - 1])); } - // log.info('abc88 InsertEdge 2 SPLIT: ', points); if (edge.toCluster) { - log.info('to cluster abc88', clusterDb[edge.toCluster]); - points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node); + log.info('to cluster abc88', clusterDb.get(edge.toCluster)); + points = cutPathAtIntersect(edge.points, clusterDb.get(edge.toCluster).node); pointsHasChanged = true; } if (edge.fromCluster) { - log.debug('from cluster abc88', clusterDb[edge.fromCluster], JSON.stringify(points, null, 2)); - points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse(); - // log.info('from cluster abc88 fixed', JSON.stringify(points, null, 2)); + log.debug( + 'from cluster abc88', + clusterDb.get(edge.fromCluster), + JSON.stringify(points, null, 2) + ); + points = cutPathAtIntersect(points.reverse(), clusterDb.get(edge.fromCluster).node).reverse(); pointsHasChanged = true; } - // The data for our line let lineData = points.filter((p) => !Number.isNaN(p.y)); - // const { cornerPoints, cornerPointPositions } = extractCornerPoints(lineData); lineData = fixCorners(lineData); let lastPoint = lineData[lineData.length - 1]; if (lineData.length > 1) { lastPoint = lineData[lineData.length - 1]; const secondLastPoint = lineData[lineData.length - 2]; - // Calculate the mid point of the last two points const diffX = (lastPoint.x - secondLastPoint.x) / 2; const diffY = (lastPoint.y - secondLastPoint.y) / 2; const midPoint = { x: secondLastPoint.x + diffX, y: secondLastPoint.y + diffY }; lineData.splice(-1, 0, midPoint); } - // This is the accessor function we talked about above let curve = curveBasis; - // curve = curveCardinal; - // curve = curveLinear; - // curve = curveNatural; - // curve = curveCatmullRom.alpha(0.5); - // curve = curveCatmullRom; - // curve = curveCardinal.tension(0.7); - // curve = curveMonotoneY; - // let curve = interpolateToCurve([5], curveNatural, 0.01, 10); - - // Currently only flowcharts get the curve from the settings, perhaps this should - // be expanded to a common setting? Restricting it for now in order not to cause side-effects that - // have not been thought through if (edge.curve) { curve = edge.curve; } const { x, y } = getLineFunctionsWithOffset(edge); - // const lineFunction = edge.curve ? line().x(x).y(y).curve(curve) : roundedCornersLine; const lineFunction = line().x(x).y(y).curve(curve); - // Construct stroke classes based on properties let strokeClasses; switch (edge.thickness) { case 'normal': @@ -563,14 +509,11 @@ export const insertEdge = function (elem, edge, clusterDb, diagramType, startNod } let svgPath; let linePath = lineFunction(lineData); + const edgeStyles = Array.isArray(edge.style) ? edge.style : [edge.style]; if (edge.look === 'handdrawn') { const rc = rough.svg(elem); Object.assign([], lineData); - // const svgPathNode = rc.path(lineFunction(ld.splice(0, ld.length-1)), { - // const svgPathNode = rc.path(lineFunction(ld), { - // roughness: 0.3, - // seed: handdrawnSeed, - // }); + const svgPathNode = rc.path(linePath, { roughness: 0.3, seed: handdrawnSeed, @@ -580,10 +523,9 @@ export const insertEdge = function (elem, edge, clusterDb, diagramType, startNod svgPath = select(svgPathNode) .select('path') - // .attr('d', lineFunction(lineData)) .attr('id', edge.id) .attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : '')) - .attr('style', edge.style); + .attr('style', edgeStyles ? edgeStyles.reduce((acc, style) => acc + ';' + style, '') : ''); let d = svgPath.attr('d'); svgPath.attr('d', d); elem.node().appendChild(svgPath.node()); @@ -593,7 +535,7 @@ export const insertEdge = function (elem, edge, clusterDb, diagramType, startNod .attr('d', linePath) .attr('id', edge.id) .attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : '')) - .attr('style', edge.style); + .attr('style', edgeStyles ? edgeStyles.reduce((acc, style) => acc + ';' + style, '') : ''); } // MC Special @@ -611,18 +553,7 @@ export const insertEdge = function (elem, edge, clusterDb, diagramType, startNod // .attr('cy', point.y); // }); - // lineData.forEach((point) => { - // elem - // .append('circle') - // .style('stroke', 'red') - // .style('fill', 'red') - // .attr('r', 1) - // .attr('cx', point.x) - // .attr('cy', point.y); - // }); - let url = ''; - // // TODO: Can we load this config only from the rendered graph type? if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) { url = window.location.protocol + @@ -630,8 +561,7 @@ export const insertEdge = function (elem, edge, clusterDb, diagramType, startNod window.location.host + window.location.pathname + window.location.search; - url = url.replace(/\(/g, '\\('); - url = url.replace(/\)/g, '\\)'); + url = url.replace(/\(/g, '\\(').replace(/\)/g, '\\)'); } log.info('arrowTypeStart', edge.arrowTypeStart); log.info('arrowTypeEnd', edge.arrowTypeEnd); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/labelRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/labelRect.ts index 00c026edd..2d5c6d6ea 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/labelRect.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/labelRect.ts @@ -23,8 +23,8 @@ export const labelRect = async (parent: SVGElement, node: Node) => { const rect = shapeSvg.insert('rect', ':first-child'); // Hide the rect we are only after the label - const totalWidth = 0; - const totalHeight = 0; + const totalWidth = 0.1; + const totalHeight = 0.1; rect.attr('width', totalWidth).attr('height', totalHeight); shapeSvg.attr('class', 'label edgeLabel'); @@ -40,6 +40,8 @@ export const labelRect = async (parent: SVGElement, node: Node) => { // } updateNodeBounds(node, rect); + // node.width = 1; + // node.height = 1; node.intersect = function (point) { return intersect.rect(node, point); diff --git a/packages/mermaid/src/rendering-util/types.d.ts b/packages/mermaid/src/rendering-util/types.d.ts index 33b8c4b78..cc7b05bfa 100644 --- a/packages/mermaid/src/rendering-util/types.d.ts +++ b/packages/mermaid/src/rendering-util/types.d.ts @@ -1,5 +1,5 @@ +export type MarkdownWordType = 'normal' | 'strong' | 'em'; import type { MermaidConfig } from '../../dist/config.type'; -export type MarkdownWordType = 'normal' | 'strong' | 'emphasis'; export interface MarkdownWord { content: string; type: MarkdownWordType; diff --git a/packages/mermaid/src/schemas/config.schema.yaml b/packages/mermaid/src/schemas/config.schema.yaml index fa149d2f3..c7e7788e6 100644 --- a/packages/mermaid/src/schemas/config.schema.yaml +++ b/packages/mermaid/src/schemas/config.schema.yaml @@ -101,21 +101,24 @@ properties: type: integer default: 500 minimum: 0 - elk.mergeEdges: - description: | - Elk specific option that allows egdes to share path where it convenient. It can make for pretty diagrams but can also make it harder to read the diagram. - type: boolean - default: false - elk.nodePlacement.strategy: - description: | - Elk specific option affedcting how nodes are placed. - type: string - enum: - - SIMPLE - - NETWORK_SIMPLEX - - LINEAR_SEGMENTS - - BRANDES_KOEPF - default: SIMPLE + elk: + type: object + properties: + mergeEdges: + description: | + Elk specific option that allows edges to share path where it convenient. It can make for pretty diagrams but can also make it harder to read the diagram. + type: boolean + default: false + nodePlacementStrategy: + description: | + Elk specific option affecting how nodes are placed. + type: string + enum: + - SIMPLE + - NETWORK_SIMPLEX + - LINEAR_SEGMENTS + - BRANDES_KOEPF + default: SIMPLE darkMode: type: boolean default: false diff --git a/packages/mermaid/src/tests/MockedD3.ts b/packages/mermaid/src/tests/MockedD3.ts index 35871f14e..d0d67773f 100644 --- a/packages/mermaid/src/tests/MockedD3.ts +++ b/packages/mermaid/src/tests/MockedD3.ts @@ -104,7 +104,10 @@ export class MockedD3 { // This allows different tests to succeed -- some need a top level 'svg' and some need a 'svg' element to be the firstChild // Real implementation returns an HTML Element public node = vi.fn().mockImplementation(() => { + //create a top level svg element const topElem = this._containingHTMLdoc.createElement('svg'); + //@ts-ignore - this is a mock SVG element + topElem.getBBox = this.getBBox; const elem_svgChild = this._containingHTMLdoc.createElement('svg'); // another svg element topElem.appendChild(elem_svgChild); return topElem; diff --git a/packages/mermaid/src/utils.ts b/packages/mermaid/src/utils.ts index 386c10738..631b6dd85 100644 --- a/packages/mermaid/src/utils.ts +++ b/packages/mermaid/src/utils.ts @@ -567,7 +567,7 @@ export const wrapLabel: (label: string, maxWidth: number, config: WrapLabelConfi if (common.lineBreakRegex.test(label)) { return label; } - const words = label.split(' '); + const words = label.split(' ').filter(Boolean); const completedLines: string[] = []; let nextLine = ''; words.forEach((word, index) => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b60daf560..49fa46fe5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,22 +10,22 @@ importers: devDependencies: '@applitools/eyes-cypress': specifier: ^3.44.4 - version: 3.44.4(typescript@5.4.5) + version: 3.44.4(encoding@0.1.13)(typescript@5.4.5) '@argos-ci/cypress': - specifier: ^2.0.5 - version: 2.0.5(cypress@13.12.0) + specifier: ^2.1.0 + version: 2.1.0(cypress@13.11.0) '@cspell/eslint-plugin': specifier: ^8.8.4 version: 8.9.1(eslint@9.6.0) '@cypress/code-coverage': specifier: ^3.12.30 - version: 3.12.39(@babel/core@7.24.7)(@babel/preset-env@7.24.7)(babel-loader@9.1.3)(cypress@13.12.0)(webpack@5.92.1) + version: 3.12.39(@babel/core@7.24.7)(@babel/preset-env@7.24.8(@babel/core@7.24.7))(babel-loader@9.1.3(@babel/core@7.24.7)(webpack@5.92.0(esbuild@0.21.5)))(cypress@13.11.0)(webpack@5.92.0(esbuild@0.21.5)) '@eslint/js': specifier: ^9.4.0 version: 9.6.0 '@rollup/plugin-typescript': specifier: ^11.1.6 - version: 11.1.6(typescript@5.4.5) + version: 11.1.6(rollup@4.18.0)(tslib@2.6.3)(typescript@5.4.5) '@types/cors': specifier: ^2.8.17 version: 2.8.17 @@ -52,7 +52,7 @@ importers: version: 4.2.4 '@vitest/coverage-v8': specifier: ^1.4.0 - version: 1.6.0(vitest@1.6.0) + version: 1.6.0(vitest@1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(terser@5.31.3)) '@vitest/spy': specifier: ^1.4.0 version: 1.6.0 @@ -82,7 +82,7 @@ importers: version: 13.12.0 cypress-image-snapshot: specifier: ^4.0.1 - version: 4.0.1(cypress@13.12.0)(jest@29.7.0) + version: 4.0.1(cypress@13.11.0)(jest@29.7.0(@types/node@20.14.2)) esbuild: specifier: ^0.21.5 version: 0.21.5 @@ -100,10 +100,10 @@ importers: version: 8.1.1 eslint-plugin-jest: specifier: ^28.6.0 - version: 28.6.0(eslint@9.6.0)(jest@29.7.0)(typescript@5.4.5) + version: 28.6.0(@typescript-eslint/eslint-plugin@7.6.0(@typescript-eslint/parser@8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5))(eslint@9.6.0)(typescript@5.4.5))(eslint@9.6.0)(jest@29.7.0(@types/node@20.14.2))(typescript@5.4.5) eslint-plugin-jsdoc: specifier: ^48.2.9 - version: 48.3.0(eslint@9.6.0) + version: 48.5.2(eslint@9.6.0) eslint-plugin-json: specifier: ^4.0.0 version: 4.0.0 @@ -120,8 +120,8 @@ importers: specifier: ^0.3.0 version: 0.3.0 eslint-plugin-unicorn: - specifier: ^53.0.0 - version: 53.0.0(eslint@9.6.0) + specifier: ^54.0.0 + version: 54.0.0(eslint@9.6.0) express: specifier: ^4.19.1 version: 4.19.2 @@ -175,7 +175,7 @@ importers: version: 5.0.7 rollup-plugin-visualizer: specifier: ^5.12.0 - version: 5.12.0 + version: 5.12.0(rollup@4.18.0) start-server-and-test: specifier: ^2.0.3 version: 2.0.4 @@ -187,16 +187,16 @@ importers: version: 5.4.5 typescript-eslint: specifier: ^8.0.0-alpha.34 - version: 8.0.0-alpha.38(eslint@9.6.0)(typescript@5.4.5) + version: 8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5) vite: specifier: ^5.2.3 - version: 5.3.1(@types/node@20.14.8) + version: 5.3.0(@types/node@20.14.2)(terser@5.31.3) vite-plugin-istanbul: specifier: ^6.0.0 - version: 6.0.2(vite@5.3.1) + version: 6.0.2(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3)) vitest: specifier: ^1.4.0 - version: 1.6.0(@types/node@20.14.8)(@vitest/ui@1.6.0)(jsdom@24.1.0) + version: 1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(terser@5.31.3) packages/mermaid: dependencies: @@ -236,9 +236,9 @@ importers: lodash-es: specifier: ^4.17.21 version: 4.17.21 - mdast-util-from-markdown: - specifier: ^2.0.0 - version: 2.0.1 + marked: + specifier: ^13.0.2 + version: 13.0.2 roughjs: specifier: ^4.6.6 version: 4.6.6 @@ -368,7 +368,7 @@ importers: version: 0.25.13(typescript@5.4.5) typedoc-plugin-markdown: specifier: ^3.17.1 - version: 3.17.1(typedoc@0.25.13) + version: 3.17.1(typedoc@0.25.13(typescript@5.4.5)) typescript: specifier: ~5.4.3 version: 5.4.5 @@ -380,10 +380,10 @@ importers: version: 5.0.0 vitepress: specifier: ^1.0.1 - version: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.14.8)(postcss@8.4.38)(search-insights@2.14.0)(typescript@5.4.5) + version: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.14.2)(axios@1.7.2)(postcss@8.4.38)(search-insights@2.14.0)(terser@5.31.3)(typescript@5.4.5) vitepress-plugin-search: specifier: 1.0.4-alpha.22 - version: 1.0.4-alpha.22(flexsearch@0.7.43)(vitepress@1.1.4)(vue@3.4.30) + version: 1.0.4-alpha.22(flexsearch@0.7.43)(vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.14.2)(axios@1.7.2)(postcss@8.4.38)(search-insights@2.14.0)(terser@5.31.3)(typescript@5.4.5))(vue@3.4.27(typescript@5.4.5)) packages/mermaid-example-diagram: dependencies: @@ -447,8 +447,8 @@ importers: packages/mermaid-zenuml: dependencies: '@zenuml/core': - specifier: ^3.19.2 - version: 3.23.24(typescript@5.4.5) + specifier: ^3.23.27 + version: 3.24.0(typescript@5.4.5) devDependencies: '@mermaid-chart/mermaid': specifier: workspace:^ @@ -464,7 +464,7 @@ importers: version: link:../.. '@vueuse/core': specifier: ^10.9.0 - version: 10.11.0(vue@3.4.30) + version: 10.11.0(vue@3.4.27(typescript@5.4.5)) font-awesome: specifier: ^4.7.0 version: 4.7.0 @@ -483,10 +483,10 @@ importers: version: 0.59.4 '@vite-pwa/vitepress': specifier: ^0.4.0 - version: 0.4.0(vite-plugin-pwa@0.19.8) + version: 0.4.0(vite-plugin-pwa@0.19.8(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.1.0)) '@vitejs/plugin-vue': specifier: ^5.0.0 - version: 5.0.5(vite@5.3.1)(vue@3.4.30) + version: 5.0.5(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3))(vue@3.4.27(typescript@5.4.5)) fast-glob: specifier: ^3.3.2 version: 3.3.2 @@ -498,19 +498,19 @@ importers: version: 1.1.2 unocss: specifier: ^0.59.0 - version: 0.59.4(postcss@8.4.38)(rollup@2.79.1)(vite@5.3.1) + version: 0.59.4(postcss@8.4.38)(rollup@2.79.1)(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3)) unplugin-vue-components: specifier: ^0.26.0 - version: 0.26.0(rollup@2.79.1)(vue@3.4.30) + version: 0.26.0(@babel/parser@7.24.8)(rollup@2.79.1)(vue@3.4.27(typescript@5.4.5)) vite: specifier: ^5.0.0 - version: 5.3.1(@types/node@20.14.8) + version: 5.3.0(@types/node@20.14.2)(terser@5.31.3) vite-plugin-pwa: specifier: ^0.19.7 - version: 0.19.8(vite@5.3.1)(workbox-build@7.1.1)(workbox-window@7.1.0) + version: 0.19.8(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.1.0) vitepress: specifier: 1.1.4 - version: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.14.8)(postcss@8.4.38)(search-insights@2.14.0)(typescript@5.4.5) + version: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.14.2)(axios@1.7.2)(postcss@8.4.38)(search-insights@2.14.0)(terser@5.31.3)(typescript@5.4.5) workbox-window: specifier: ^7.0.0 version: 7.1.0 @@ -546,6 +546,10 @@ importers: packages: + '@aashutoshrathi/word-wrap@1.2.6': + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + '@adobe/jsonschema2md@8.0.2': resolution: {integrity: sha512-g90Rtz1Xghp9HTfbtBH2Pf5IpuUY1Ry9Wps5NNuNmxucbtmnCY4/1KXmtwe0yKxnknPF7nt5/Y8TOekMh450tQ==} engines: {node: ^18.0.0 || >= 20.0.0} @@ -755,18 +759,18 @@ packages: resolution: {integrity: sha512-4dpz76kW0KnXCYdxtkcdiaYUM4owmKtT9zPqrd1yPo+VuSNCNULyCZJ4mdy0aXWT716JLMMmIZ3AnQSkyaqvaA==} engines: {node: '>=18.0.0'} - '@argos-ci/core@2.3.0': - resolution: {integrity: sha512-0mHncBeOD7GFYfGZYUEcDgLyzsvPyxK/L1MROfAurFeWcw89ODG24JEdPsECtZBSCZMmMcK8XqeJIJkZsnDGZA==} + '@argos-ci/core@2.4.0': + resolution: {integrity: sha512-CY8IQsc71cuIeF2U47aePzH8+YWK4ePG1j+gK5aQ0r744Wc467U4xej7gChMVrAaGlZKsgoIIeXE1ezF+rCryw==} engines: {node: '>=18.0.0'} - '@argos-ci/cypress@2.0.5': - resolution: {integrity: sha512-pMM2+hGT8IE2XfWQpk4Mnf73K1B+97x0f1tkHrEpsopZBWmZy5nMZ0iqNLafJsRfo1LtZA8171oftPl5nEAz8g==} + '@argos-ci/cypress@2.1.0': + resolution: {integrity: sha512-EvzoWrX9owK40aeOcP3k3pMdML3m1PynLjDOGBtxWUG87gAGjsVd0rvVMTHQJTrCwhF4TRlqDv3vAllMWdZIAA==} engines: {node: '>=18.0.0'} peerDependencies: cypress: ^12.0.0 || ^13.0.0 - '@argos-ci/util@2.0.0': - resolution: {integrity: sha512-wnsNQOjcNfxOi8cHWSv8+GhzUeIitDJgjhuSNR9zrfHB0Y3nDVI57S/mHRo+EMAaWwghfbrxW1ypRCXVseN0GA==} + '@argos-ci/util@2.1.0': + resolution: {integrity: sha512-/78zJjZJCh3i7Eh3/lo7ybXK2pzXFGUNHbK3SgJNKNbFiBDllNRfy+x0kccjvN2gCCDz877jnFOlSoZZuMK56A==} engines: {node: '>=18.0.0'} '@babel/code-frame@7.24.7': @@ -777,10 +781,22 @@ packages: resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.24.9': + resolution: {integrity: sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==} + 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.24.9': + resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.24.10': + resolution: {integrity: sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.24.7': resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} engines: {node: '>=6.9.0'} @@ -797,12 +813,22 @@ packages: resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.24.8': + resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} + engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.24.7': resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-create-class-features-plugin@7.24.8': + resolution: {integrity: sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-create-regexp-features-plugin@7.24.7': resolution: {integrity: sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==} engines: {node: '>=6.9.0'} @@ -830,6 +856,10 @@ packages: resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==} engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.24.8': + resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.24.7': resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} @@ -840,6 +870,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.24.9': + resolution: {integrity: sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.24.7': resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} @@ -848,6 +884,10 @@ packages: resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.24.8': + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + '@babel/helper-remap-async-to-generator@7.24.7': resolution: {integrity: sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==} engines: {node: '>=6.9.0'} @@ -876,6 +916,10 @@ packages: resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} @@ -884,6 +928,10 @@ 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/helper-wrap-function@7.24.7': resolution: {integrity: sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==} engines: {node: '>=6.9.0'} @@ -892,6 +940,10 @@ packages: resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.24.8': + resolution: {integrity: sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==} + engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} @@ -901,6 +953,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.24.8': + resolution: {integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7': resolution: {integrity: sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==} engines: {node: '>=6.9.0'} @@ -1086,8 +1143,8 @@ packages: peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.24.7': - resolution: {integrity: sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==} + '@babel/plugin-transform-classes@7.24.8': + resolution: {integrity: sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1098,8 +1155,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.24.7': - resolution: {integrity: sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==} + '@babel/plugin-transform-destructuring@7.24.8': + resolution: {integrity: sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1182,6 +1239,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.24.8': + resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-systemjs@7.24.7': resolution: {integrity: sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==} engines: {node: '>=6.9.0'} @@ -1236,8 +1299,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.24.7': - resolution: {integrity: sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==} + '@babel/plugin-transform-optional-chaining@7.24.8': + resolution: {integrity: sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1302,8 +1365,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typeof-symbol@7.24.7': - resolution: {integrity: sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==} + '@babel/plugin-transform-typeof-symbol@7.24.8': + resolution: {integrity: sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1338,8 +1401,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.24.7': - resolution: {integrity: sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==} + '@babel/preset-env@7.24.8': + resolution: {integrity: sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1370,10 +1433,18 @@ packages: resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.24.8': + resolution: {integrity: sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==} + engines: {node: '>=6.9.0'} + '@babel/types@7.24.7': resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} engines: {node: '>=6.9.0'} + '@babel/types@7.24.9': + resolution: {integrity: sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==} + engines: {node: '>=6.9.0'} + '@bcherny/json-schema-ref-parser@10.0.5-fork': resolution: {integrity: sha512-E/jKbPoca1tfUPj3iSbitDZTGnq6FUFjkH6L8U2oDwSuwK1WhnnVtCG7oFOTg/DDnyoXbQYUiUiGOibHqaGVnw==} engines: {node: '>= 16'} @@ -1407,22 +1478,42 @@ packages: resolution: {integrity: sha512-etkor/qXSSqyh6lbudEGdTami0DooIi2AlQbJPUWRfowzYJRSYWPUbyQSUkFdRhCHni2oLOFbWaraRthNlLD/A==} engines: {node: '>=18'} - '@cspell/cspell-json-reporter@8.9.1': - resolution: {integrity: sha512-sN4PZivGuH/HWScvoCeNuNc5VLSe4F+SeuoyKmsF4uRv447r9sW0/fpjASGqDTjLXpEfWaXDPoIb+0alY3gm+g==} + '@cspell/cspell-bundled-dicts@8.9.1': + resolution: {integrity: sha512-etkor/qXSSqyh6lbudEGdTami0DooIi2AlQbJPUWRfowzYJRSYWPUbyQSUkFdRhCHni2oLOFbWaraRthNlLD/A==} + engines: {node: '>=18'} + + '@cspell/cspell-json-reporter@8.8.4': + resolution: {integrity: sha512-ITpOeNyDHD+4B9QmLJx6YYtrB1saRsrCLluZ34YaICemNLuumVRP1vSjcdoBtefvGugCOn5nPK7igw0r/vdAvA==} engines: {node: '>=18'} '@cspell/cspell-pipe@8.9.1': resolution: {integrity: sha512-wH5Xu8W3aMEWFSpOczMtH/04clLMfDGdbYMYB7w6BeHI/LDW8DZaRhigOOhx9FRgVk/YIVbKKAKVgvFrfD5cEA==} engines: {node: '>=18'} + '@cspell/cspell-pipe@8.9.1': + resolution: {integrity: sha512-wH5Xu8W3aMEWFSpOczMtH/04clLMfDGdbYMYB7w6BeHI/LDW8DZaRhigOOhx9FRgVk/YIVbKKAKVgvFrfD5cEA==} + engines: {node: '>=18'} + + '@cspell/cspell-resolver@8.8.4': + resolution: {integrity: sha512-eZVw31nSeh6xKl7TzzkZVMTX/mgwhUw40/q1Sqo7CTPurIBg66oelEqKRclX898jzd2/qSK+ZFwBDxvV7QH38A==} + engines: {node: '>=18'} + '@cspell/cspell-resolver@8.9.1': resolution: {integrity: sha512-Q2SOnIi2dnQ2zqPd+tcEYfom9qlsapGyLK4Mdx2Vv29MU2RDZ9VHFDncV6yo6O58gmlYl8sXtJsVceiHgwwlkQ==} engines: {node: '>=18'} + '@cspell/cspell-service-bus@8.8.4': + resolution: {integrity: sha512-KtwJ38uPLrm2Q8osmMIAl2NToA/CMyZCxck4msQJnskdo30IPSdA1Rh0w6zXinmh1eVe0zNEVCeJ2+x23HqW+g==} + engines: {node: '>=18'} + '@cspell/cspell-service-bus@8.9.1': resolution: {integrity: sha512-dPKpqkglGnwvrW9mgbHIdimDQZH3iy8uT8gm3dEO//UahxMBdMpvtdbC3R9kesQCSagvYRVE7hwJvOktSAK+Vg==} engines: {node: '>=18'} + '@cspell/cspell-types@8.8.4': + resolution: {integrity: sha512-ya9Jl4+lghx2eUuZNY6pcbbrnResgEAomvglhdbEGqy+B5MPEqY5Jt45APEmGqHzTNks7oFFaiTIbXYJAFBR7A==} + engines: {node: '>=18'} + '@cspell/cspell-types@8.9.1': resolution: {integrity: sha512-Z/pTX2i+U5KwyCYRSw8BleJtw81jFifv91DDka4nqi2oyHJ3eEUljVovNOuZ3lotn/ArHdu4rY98s1w6Z69mYw==} engines: {node: '>=18'} @@ -1439,8 +1530,11 @@ packages: '@cspell/dict-companies@3.1.2': resolution: {integrity: sha512-OwR5i1xbYuJX7FtHQySmTy3iJtPV1rZQ3jFCxFGwrA1xRQ4rtRcDQ+sTXBCIAoJHkXa84f9J3zsngOKmMGyS/w==} - '@cspell/dict-cpp@5.1.10': - resolution: {integrity: sha512-BmIF0sAz2BgGEOwzYIeEm9ALneDjd1tcTbFbo+A1Hcq3zOKP8yViSgxS9CEN30KOZIyph6Tldp531UPEpoEl0Q==} + '@cspell/dict-cpp@5.1.11': + resolution: {integrity: sha512-skDl1ozBK99Cq/mSh8BTbvk5V4UJwm3+PT0RC94/DqQTUHHNCUutWRipoot2JZ296fjNsivFCyuelUDhj3r9eg==} + + '@cspell/dict-cpp@5.1.9': + resolution: {integrity: sha512-lZmPKn3qfkWQ7tr+yw6JhuhscsyRgRHEOpOd0fhtPt0N154FNsGebGGLW0SOZUuGgW7Nk3lCCwHP85GIemnlqQ==} '@cspell/dict-cryptocurrencies@5.0.0': resolution: {integrity: sha512-Z4ARIw5+bvmShL+4ZrhDzGhnc9znaAGHOEMaB/GURdS/jdoreEDY34wdN0NtdLHDO5KO7GduZnZyqGdRoiSmYA==} @@ -1472,12 +1566,18 @@ packages: '@cspell/dict-en-common-misspellings@2.0.3': resolution: {integrity: sha512-8nF1z9nUiSgMyikL66HTbDO7jCGtB24TxKBasXIBwkBKMDZgA2M883iXdeByy6m1JJUcCGFkSftVYp2W0bUgjw==} + '@cspell/dict-en-common-misspellings@2.0.3': + resolution: {integrity: sha512-8nF1z9nUiSgMyikL66HTbDO7jCGtB24TxKBasXIBwkBKMDZgA2M883iXdeByy6m1JJUcCGFkSftVYp2W0bUgjw==} + '@cspell/dict-en-gb@1.1.33': resolution: {integrity: sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==} '@cspell/dict-en_us@4.3.23': resolution: {integrity: sha512-l0SoEQBsi3zDSl3OuL4/apBkxjuj4hLIg/oy6+gZ7LWh03rKdF6VNtSZNXWAmMY+pmb1cGA3ouleTiJIglbsIg==} + '@cspell/dict-en_us@4.3.23': + resolution: {integrity: sha512-l0SoEQBsi3zDSl3OuL4/apBkxjuj4hLIg/oy6+gZ7LWh03rKdF6VNtSZNXWAmMY+pmb1cGA3ouleTiJIglbsIg==} + '@cspell/dict-filetypes@3.0.4': resolution: {integrity: sha512-IBi8eIVdykoGgIv5wQhOURi5lmCNJq0we6DvqKoPQJHthXbgsuO1qrHSiUVydMiQl/XvcnUWTMeAlVUlUClnVg==} @@ -1568,6 +1668,9 @@ packages: '@cspell/dict-software-terms@3.4.8': resolution: {integrity: sha512-r3gvmSGd8wZp4bbofTey/2Tu3gdBc5kxTRoFo1MaCh5vMLiBOSCLvyZgzr0DcMl8c5dxL7nFpNwbWZJxmKmtUA==} + '@cspell/dict-software-terms@3.4.8': + resolution: {integrity: sha512-r3gvmSGd8wZp4bbofTey/2Tu3gdBc5kxTRoFo1MaCh5vMLiBOSCLvyZgzr0DcMl8c5dxL7nFpNwbWZJxmKmtUA==} + '@cspell/dict-sql@2.1.3': resolution: {integrity: sha512-SEyTNKJrjqD6PAzZ9WpdSu6P7wgdNtGV2RV8Kpuw1x6bV+YsSptuClYG+JSdRExBTE6LwIe1bTklejUp3ZP8TQ==} @@ -1590,6 +1693,10 @@ packages: resolution: {integrity: sha512-ao4IDqQ8MyRqiB3NHA8R7ThRsuDLXdSCFm7Pvz8EqDnWaX3NAuClzgT3EoxJlw9pyyPQX3tW5Vg7ft3GSsBFUw==} engines: {node: '>=18.0'} + '@cspell/dynamic-import@8.9.1': + resolution: {integrity: sha512-ao4IDqQ8MyRqiB3NHA8R7ThRsuDLXdSCFm7Pvz8EqDnWaX3NAuClzgT3EoxJlw9pyyPQX3tW5Vg7ft3GSsBFUw==} + engines: {node: '>=18.0'} + '@cspell/eslint-plugin@8.9.1': resolution: {integrity: sha512-S2j47UyzXrJ69zHw6E7fb24b+Mkk1tp8lh7VgaYJ1wjOhhW7eg/7SrO3csRt5XvOjcn12FAtOoMJ7aHcvV1wfA==} engines: {node: '>=18'} @@ -1600,6 +1707,10 @@ packages: resolution: {integrity: sha512-onD/UPJW7rBQrRDqYNvPUAoWoBp1G2g+mijAD7EkuseyAKTKlKz624rXpHUOTqI814owmhFMNSf2QyYy8gFM6Q==} engines: {node: '>=18'} + '@cspell/strong-weak-map@8.9.1': + resolution: {integrity: sha512-onD/UPJW7rBQrRDqYNvPUAoWoBp1G2g+mijAD7EkuseyAKTKlKz624rXpHUOTqI814owmhFMNSf2QyYy8gFM6Q==} + engines: {node: '>=18'} + '@cspell/url@8.9.1': resolution: {integrity: sha512-2AncPKGq9fnytwnL7V4KfoSjiEU0m8tVDFerGiDMNmTMWiQ4zj0kTATai118XT1eBVKiyrAotYRLSrsuUo9U3g==} engines: {node: '>=18.0'} @@ -1810,6 +1921,10 @@ packages: resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/config-array@0.17.0': resolution: {integrity: sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1849,14 +1964,11 @@ packages: '@floating-ui/utils@0.2.2': resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==} - '@floating-ui/vue@0.2.1': - resolution: {integrity: sha512-HE+EIeakID7wI6vUwF0yMpaW48bNaPj8QtnQaRMkaQFhQReVBA4bY6fmJ3J7X+dqVgDbMhyfCG0fBJfdQMdWxQ==} - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^2.0.0 || >=3.0.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true + '@floating-ui/utils@0.2.4': + resolution: {integrity: sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==} + + '@floating-ui/vue@1.1.1': + resolution: {integrity: sha512-cyawjk9etPZPl/RVtMRnWrwtAhWbPVSrRVYARgOzhLIqxr0k2up1APrrFjqP9QwRQ0AwjKSvbWg4YC6jESutow==} '@hapi/hoek@9.3.0': resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} @@ -1864,9 +1976,10 @@ packages: '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - '@headlessui-float/vue@0.11.4': - resolution: {integrity: sha512-hNGQTT3trknSB78ZI3usvnJACLyEUmacvk5Q8JQizJ8k+8GYLvhKklGIhJVO1E3litEzW6yyjPgfg6aEJ+1p6g==} + '@headlessui-float/vue@0.14.0': + resolution: {integrity: sha512-hx0IkJ7JPcwDeimco6fe0+IknknL1gUYIGu11OCn0JWlOoSAmO6sx2DxPwSEz1Wsq34X6Z8BwCwcPVuphZ1zMg==} peerDependencies: + '@headlessui/vue': ^1.0.0 vue: ^3.0.0 '@headlessui/tailwindcss@0.2.1': @@ -2639,6 +2752,9 @@ packages: '@types/rollup-plugin-visualizer@4.2.4': resolution: {integrity: sha512-BW4Q6D1Qy5gno5qHWrnMDC2dOe/TAKXvqCpckOggCCu+XpS+ZZJJ1lq1+K3bvYccoO3Y7f5kglbFAgYGqCgULg==} + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/send@0.17.4': resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} @@ -2696,8 +2812,8 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@7.13.1': - resolution: {integrity: sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==} + '@typescript-eslint/eslint-plugin@7.6.0': + resolution: {integrity: sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -2707,8 +2823,8 @@ packages: typescript: optional: true - '@typescript-eslint/eslint-plugin@8.0.0-alpha.38': - resolution: {integrity: sha512-aAEtLAD++0YWjHOCCsEfx39t/AiJi9ZGauASDfvhJL/73AEVaqEL/DiXuDD7C2g9faVuh3qXsfUzxxU2hR/cIw==} + '@typescript-eslint/eslint-plugin@8.0.0-alpha.44': + resolution: {integrity: sha512-3hqJa/Ak3ahypkcNoNmkkmUg54zV3AWSaalSWAKTQKF5UtXMvRjM5w3nKqS2AQP0dQAkM1u9cXCnOuLeUZr7rw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -2718,18 +2834,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@7.13.1': - resolution: {integrity: sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@8.0.0-alpha.38': - resolution: {integrity: sha512-7vWt41cjKTRwNPYushQihIHdRnJ8fBy5HYBjMro+nemBQfoVuXY0JXgCctf3Jb3JGUCKxlIw/SYYRsaJ+1rj2w==} + '@typescript-eslint/parser@8.0.0-alpha.44': + resolution: {integrity: sha512-ho5CiKhp3hDCvkFVpLqiHlMUbgvGELmdVfvpIiKQ1TFGyDcEVpSJUZCDO+gyymgZreJyTfUDHH6eKhF3pgkb0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2738,16 +2844,16 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@7.13.1': - resolution: {integrity: sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==} + '@typescript-eslint/scope-manager@7.6.0': + resolution: {integrity: sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@8.0.0-alpha.38': - resolution: {integrity: sha512-99m9xeGDl/r55+DZuqcwl/52fZfh6VF98Lx2jCyMRS1N+mCbBQ1oDsnGg6hCJxBGSsieifN1DwCh00cfy/L23g==} + '@typescript-eslint/scope-manager@8.0.0-alpha.44': + resolution: {integrity: sha512-0w0pDILwfwRXSz9lQBXnJmeGaIbSBgl4vAw/lB2kCnOKYl2SXCVbdNOHPwxWigvQ08QVpuaKy+wEjbFKr9Xwfg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@7.13.1': - resolution: {integrity: sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==} + '@typescript-eslint/type-utils@7.6.0': + resolution: {integrity: sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -2756,8 +2862,8 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.0.0-alpha.38': - resolution: {integrity: sha512-baoGHlQL4fZoD0UNIggH8drmMCkQubRbVxGWa9dLbx+CasTju2q4QuBy21mto+uc+ks1DtOZnaw+OwhEjkFXgw==} + '@typescript-eslint/type-utils@8.0.0-alpha.44': + resolution: {integrity: sha512-52V6rQxNiebKYLxjcRTzIuTMw/wgrCcLncV27u2O142WyD07gLbICGcxtrxurDIQLMwQ/BuStV2x0cypKSwwdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -2765,16 +2871,20 @@ packages: typescript: optional: true - '@typescript-eslint/types@7.13.1': - resolution: {integrity: sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==} + '@typescript-eslint/types@7.15.0': + resolution: {integrity: sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.0.0-alpha.38': - resolution: {integrity: sha512-Rx7V9fmGdTiIT5K7R9wcrkhNKRODE7XUyHmu24gEEPlW3SESfs3C7ajdOJ1D696IPxnWKDIK9J3iMrQZOVckiw==} + '@typescript-eslint/types@7.6.0': + resolution: {integrity: sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/types@8.0.0-alpha.44': + resolution: {integrity: sha512-FNBBUTJBNbIaTJhhBbSNxKv+qS8lrwwnpBg36APp5fhDRu8K/YFQZP/VEa19nKBz+8+QUK7R6wV9DHYjj56S7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@7.13.1': - resolution: {integrity: sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==} + '@typescript-eslint/typescript-estree@7.6.0': + resolution: {integrity: sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -2782,8 +2892,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.0.0-alpha.38': - resolution: {integrity: sha512-iEcxafpJiE9LD1Ospd/5Ce5CLGgck1FO+9Y6UcJWAcOVJRJKlXvLSJzy6a5Xnr4XhIr5+4juvzw6g+rTnkz6Dw==} + '@typescript-eslint/typescript-estree@8.0.0-alpha.44': + resolution: {integrity: sha512-IyLELYPMFaleWpEVrcYhSfgFXFx4/505P4/vi9Dfp6s6T2xapyAdti6WL9iZbnXk72SL5M0wMp3V73nHn8ce1A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -2791,24 +2901,24 @@ packages: typescript: optional: true - '@typescript-eslint/utils@7.13.1': - resolution: {integrity: sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==} + '@typescript-eslint/utils@7.6.0': + resolution: {integrity: sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/utils@8.0.0-alpha.38': - resolution: {integrity: sha512-kKU9EGm7ML+MFMa66lKvkh5JMSp1legHBhKF9NkG65TvSsFDW0TyITRyeBUkmkhs4ALlHdAaRd/R5/Qg47URGg==} + '@typescript-eslint/utils@8.0.0-alpha.44': + resolution: {integrity: sha512-gOSA4Yo1jufcOuV68yX3hzpwzufd/Ru6KYL04od1T1c5tt6cvN3i5D5Tc3BBJ3xYFE7ge821mJbUJMTc+BMaWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@7.13.1': - resolution: {integrity: sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==} + '@typescript-eslint/visitor-keys@7.6.0': + resolution: {integrity: sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.0.0-alpha.38': - resolution: {integrity: sha512-VbVMQLDezUgGTN0AFfVy1w+K8in4Dv+cbPJbYql+BKTnmTEe/l40xoTWBdn/ppjlnRtCkp+JQ9T790bhdQ3ZrA==} + '@typescript-eslint/visitor-keys@8.0.0-alpha.44': + resolution: {integrity: sha512-geWzLM8S6vYGdhA01mWJyGh2V/7VRzAmsD6ZKuc/rLkeJhYjvkMY0g0uMDw/7wmNLeRrpjHnL8HJklrpAlrb9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.2.0': @@ -3137,8 +3247,8 @@ packages: '@xtuc/long@4.2.2': resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - '@zenuml/core@3.23.24': - resolution: {integrity: sha512-3XtyaUY7m9dtKT9W1MJwcKZqYP0WlWDao3y/lzmYnuo8t8WWy9evCJjoT99LrllA7z3juY5tcmfeSURVaHEx7g==} + '@zenuml/core@3.24.0': + resolution: {integrity: sha512-X1XJLiibszPfxx/XsgOkGZNrysjq4LOfCzkpvr10OS1lhP+lU69NTEQCj7aDELDhfGtUtS0LnR2I3OtebDPoPA==} engines: {node: '>=12.0.0'} JSONSelect@0.4.0: @@ -3178,6 +3288,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -3221,6 +3336,9 @@ packages: ajv@8.16.0: resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==} + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + algoliasearch@4.23.3: resolution: {integrity: sha512-Le/3YgNvjW9zxIQMRhUHuhiUjAlKY/zsdZpfq4dlLqg6mEm0nL6yk+7f2hDOtLpxsgE4jSzDmvHL7nXdBp5feg==} @@ -3935,12 +4053,20 @@ packages: resolution: {integrity: sha512-gSXAazmeX+CCpFCsNQQqHRO/nn01kMnCoB0v+7AM0Bip2iDXRl+LmUEJGNcnFaiJG3liaZ8+S5/qCDbza010VQ==} engines: {node: '>=18'} + cspell-config-lib@8.9.1: + resolution: {integrity: sha512-gSXAazmeX+CCpFCsNQQqHRO/nn01kMnCoB0v+7AM0Bip2iDXRl+LmUEJGNcnFaiJG3liaZ8+S5/qCDbza010VQ==} + engines: {node: '>=18'} + + cspell-dictionary@8.8.4: + resolution: {integrity: sha512-eDi61MDDZycS5EASz5FiYKJykLEyBT0mCvkYEUCsGVoqw8T9gWuWybwwqde3CMq9TOwns5pxGcFs2v9RYgtN5A==} + engines: {node: '>=18'} + cspell-dictionary@8.9.1: resolution: {integrity: sha512-sJy9gApLxJNE+YqWeulCTj3XC/ME4aacOHEl/SZ5bsaxkGx3KzBlzCMG7LfqUjOM8rwfBPsYO7zWPCiJQgxGPg==} engines: {node: '>=18'} - cspell-gitignore@8.9.1: - resolution: {integrity: sha512-5RL0mnptiSlF0e+nnJBTlfyN3V/ECsig7jJ0Vw0AImaR7UdFmfxbeQmiZmealapcjhBJ7hnn9ILtemID4y4wxg==} + cspell-gitignore@8.8.4: + resolution: {integrity: sha512-rLdxpBh0kp0scwqNBZaWVnxEVmSK3UWyVSZmyEL4jmmjusHYM9IggfedOhO4EfGCIdQ32j21TevE0tTslyc4iA==} engines: {node: '>=18'} hasBin: true @@ -3948,25 +4074,46 @@ packages: resolution: {integrity: sha512-b60WfczgG3NgGp5pyS4NfwSu7FEF7AmkP1btJqj17UAWsm/idUdGdOgaZazZuPgQJbcQvOlpBQP0+SEi8Jo3QA==} engines: {node: '>=18'} + cspell-glob@8.9.1: + resolution: {integrity: sha512-b60WfczgG3NgGp5pyS4NfwSu7FEF7AmkP1btJqj17UAWsm/idUdGdOgaZazZuPgQJbcQvOlpBQP0+SEi8Jo3QA==} + engines: {node: '>=18'} + + cspell-grammar@8.8.4: + resolution: {integrity: sha512-UxDO517iW6vs/8l4OhLpdMR7Bp+tkquvtld1gWz8WYQiDwORyf0v5a3nMh4ILYZGoolOSnDuI9UjWOLI6L/vvQ==} + engines: {node: '>=18'} + hasBin: true + cspell-grammar@8.9.1: resolution: {integrity: sha512-BqaDp3Z+baLZyb3A5h/zWESsO7e8vUaOlrDt1RRVEnpboIUnj7iNkcFmDp3s9PTpBCURlgHHs8SR/+c49aKDGg==} engines: {node: '>=18'} hasBin: true + cspell-io@8.8.4: + resolution: {integrity: sha512-aqB/QMx+xns46QSyPEqi05uguCSxvqRnh2S/ZOhhjPlKma/7hK9niPRcwKwJXJEtNzdiZZkkC1uZt9aJe/7FTA==} + engines: {node: '>=18'} + cspell-io@8.9.1: resolution: {integrity: sha512-O2F79Rzj28Mvmj4AQLkDWOXWaLnvkJhxPm/Yb3viKlbhwmL5BWUi0APbWA3dtyF+ImX1W27YrNFyvT/PGNZ5Dw==} engines: {node: '>=18'} + cspell-lib@8.8.4: + resolution: {integrity: sha512-hK8gYtdQ9Lh86c8cEHITt5SaoJbfvXoY/wtpR4k393YR+eAxKziyv8ihQyFE/Z/FwuqtNvDrSntP9NLwTivd3g==} + engines: {node: '>=18'} + cspell-lib@8.9.1: resolution: {integrity: sha512-xrtoXvSjkMcwE1yUcyjiqLFPZiK0CNQjOKKS9PQaaK7ZBoERPQ7grz05uFCYdboSXt0FhlP8tC9E5oEt+xtGCA==} engines: {node: '>=18'} + cspell-trie-lib@8.8.4: + resolution: {integrity: sha512-yCld4ZL+pFa5DL+Arfvmkv3cCQUOfdRlxElOzdkRZqWyO6h/UmO8xZb21ixVYHiqhJGZmwc3BG9Xuw4go+RLig==} + engines: {node: '>=18'} + cspell-trie-lib@8.9.1: resolution: {integrity: sha512-rUED/lNlFcsRfkMal6+zLz7JW3/cV79KGhwxnwu1fjNS0nlLSAUGTTiAQBQSR+pU/UW+BTkmULHVuNh+DUN93w==} engines: {node: '>=18'} - cspell@8.9.1: - resolution: {integrity: sha512-tNUITJbyeX/JnhBtMtbZ5hDbkNIHB72iQx3Uw51sWvo8YmIhaP6ma1W8PPNteu8CSlI7r8Z412wpjyR0Mnsr6A==} + cspell@8.8.4: + resolution: {integrity: sha512-eRUHiXvh4iRapw3lqE1nGOEAyYVfa/0lgK/e34SpcM/ECm4QuvbfY7Yl0ozCbiYywecog0RVbeJJUEYJTN5/Mg==} engines: {node: '>=18'} hasBin: true @@ -4571,8 +4718,8 @@ packages: jest: optional: true - eslint-plugin-jsdoc@48.3.0: - resolution: {integrity: sha512-lzQSh2gjPqrqYTL0774sLj/rJywP1UESxD43xBwAlehuI2H6mIKTwj6i4tdvVzmUMflx8yMzHzy4e4XWrKaNZQ==} + eslint-plugin-jsdoc@48.5.2: + resolution: {integrity: sha512-VXBJFviQz30rynlOEQ+dNWLmeopjoAgutUVrWOZwm6Ki4EVDm4XkyIqAV/Zhf7FcDr0AG0aGmRn5FxxCtAF0tA==} engines: {node: '>=18'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -4600,8 +4747,8 @@ packages: eslint-plugin-tsdoc@0.3.0: resolution: {integrity: sha512-0MuFdBrrJVBjT/gyhkP2BqpD0np1NxNLfQ38xXDlSs/KVVpKI2A6vN7jx2Rve/CyUsvOsMGwp9KKrinv7q9g3A==} - eslint-plugin-unicorn@53.0.0: - resolution: {integrity: sha512-kuTcNo9IwwUCfyHGwQFOK/HjJAYzbODHN3wP0PgqbW+jbXqpNWxNVpVhj2tO9SixBwuAdmal8rVcWKBxwFnGuw==} + eslint-plugin-unicorn@54.0.0: + resolution: {integrity: sha512-XxYLRiYtAWiAjPv6z4JREby1TAE2byBC7wlh0V4vWDCpccOSU1KovWV//jqPXF6bq3WKxqX9rdjoRQ1EhdmNdQ==} engines: {node: '>=18.18'} peerDependencies: eslint: '>=8.56.0' @@ -4803,6 +4950,9 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fast-uri@3.0.1: + resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} + fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -6188,6 +6338,11 @@ packages: markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + marked@13.0.2: + resolution: {integrity: sha512-J6CPjP8pS5sgrRqxVRvkCIkZ6MFdRIjDkwUwgJ9nL2fbmM6qGQeB2C16hi8Cc9BOzj6xXzy0jyi0iPIfnMHYzA==} + engines: {node: '>= 18'} + hasBin: true + marked@4.3.0: resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} engines: {node: '>= 12'} @@ -6615,8 +6770,8 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} ospath@1.2.2: @@ -6723,8 +6878,8 @@ packages: parse-entities@2.0.0: resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} - parse-imports@2.1.0: - resolution: {integrity: sha512-JQWgmK2o4w8leUkZeZPatWdAny6vXGU/3siIUvMF6J2rDCud9aTt8h/px9oZJ6U3EcfhngBJ635uPFI0q0VAeA==} + parse-imports@2.1.1: + resolution: {integrity: sha512-TDT4HqzUiTMO1wJRwg/t/hYk8Wdp3iF/ToMIlAoVQfL1Xs/sTxq1dKWSMjMbQmIarfWKymOyly40+zmPHXMqCA==} engines: {node: '>= 18'} parse-json@5.2.0: @@ -7349,6 +7504,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} @@ -7775,6 +7935,11 @@ packages: engines: {node: '>=10'} hasBin: true + terser@5.31.3: + resolution: {integrity: sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==} + engines: {node: '>=10'} + hasBin: true + test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -7970,8 +8135,8 @@ packages: peerDependencies: typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x - typescript-eslint@8.0.0-alpha.38: - resolution: {integrity: sha512-5SzbC/jmuIprBPi8vmOf+fvB7eGw2r81nlnheIHmzs32QmQqFTN/K78DgX1TAP8rOkqtHYJPbEuIKe0IEIrq6Q==} + typescript-eslint@8.0.0-alpha.44: + resolution: {integrity: sha512-4oRisGPvIJFnLqpfrpdcFjkFZg4/mhbE+0faGiomEFv9r5ziXETxuGY6VmwACPXHEakp2nDEqnp3ZdU0bsuiHQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -8286,17 +8451,6 @@ packages: vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - vue-demi@0.13.11: - resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} - engines: {node: '>=12'} - hasBin: true - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true - vue-demi@0.14.8: resolution: {integrity: sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==} engines: {node: '>=12'} @@ -8475,10 +8629,6 @@ packages: wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} @@ -8665,6 +8815,8 @@ packages: snapshots: + '@aashutoshrathi/word-wrap@1.2.6': {} + '@adobe/jsonschema2md@8.0.2': dependencies: '@types/json-schema': 7.0.15 @@ -8805,9 +8957,9 @@ snapshots: '@antfu/utils@0.7.8': {} - '@apideck/better-ajv-errors@0.3.6(ajv@8.16.0)': + '@apideck/better-ajv-errors@0.3.6(ajv@8.17.1)': dependencies: - ajv: 8.16.0 + ajv: 8.17.1 json-schema: 0.4.0 jsonpointer: 5.0.1 leven: 3.1.0 @@ -8823,7 +8975,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@applitools/core@4.16.1(typescript@5.4.5)': + '@applitools/core@4.16.1(encoding@0.1.13)(typescript@5.4.5)': dependencies: '@applitools/core-base': 1.15.1 '@applitools/dom-capture': 11.2.8 @@ -8836,7 +8988,7 @@ snapshots: '@applitools/screenshoter': 3.8.32 '@applitools/snippets': 2.4.26 '@applitools/socket': 1.1.17 - '@applitools/spec-driver-webdriver': 1.1.8(webdriver@7.31.1) + '@applitools/spec-driver-webdriver': 1.1.8(webdriver@7.31.1(typescript@5.4.5)) '@applitools/ufg-client': 1.12.1 '@applitools/utils': 1.7.3 '@types/ws': 8.5.5 @@ -8889,7 +9041,7 @@ snapshots: '@applitools/logger': 2.0.17 '@applitools/req': 1.7.1 '@applitools/socket': 1.1.17 - '@applitools/spec-driver-webdriver': 1.1.8(webdriver@7.31.1) + '@applitools/spec-driver-webdriver': 1.1.8(webdriver@7.31.1(typescript@5.4.5)) '@applitools/tunnel-client': 1.5.4 '@applitools/utils': 1.7.3 abort-controller: 3.0.0 @@ -8925,10 +9077,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@applitools/eyes-cypress@3.44.4(typescript@5.4.5)': + '@applitools/eyes-cypress@3.44.4(encoding@0.1.13)(typescript@5.4.5)': dependencies: - '@applitools/core': 4.16.1(typescript@5.4.5) - '@applitools/eyes': 1.20.1(typescript@5.4.5) + '@applitools/core': 4.16.1(encoding@0.1.13)(typescript@5.4.5) + '@applitools/eyes': 1.20.1(encoding@0.1.13)(typescript@5.4.5) '@applitools/functional-commons': 1.6.0 '@applitools/logger': 2.0.17 '@applitools/utils': 1.7.3 @@ -8944,9 +9096,9 @@ snapshots: - typescript - utf-8-validate - '@applitools/eyes@1.20.1(typescript@5.4.5)': + '@applitools/eyes@1.20.1(encoding@0.1.13)(typescript@5.4.5)': dependencies: - '@applitools/core': 4.16.1(typescript@5.4.5) + '@applitools/core': 4.16.1(encoding@0.1.13)(typescript@5.4.5) '@applitools/logger': 2.0.17 '@applitools/utils': 1.7.3 transitivePeerDependencies: @@ -9018,7 +9170,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@applitools/spec-driver-webdriver@1.1.8(webdriver@7.31.1)': + '@applitools/spec-driver-webdriver@1.1.8(webdriver@7.31.1(typescript@5.4.5))': dependencies: '@applitools/driver': 1.17.3 '@applitools/utils': 1.7.3 @@ -9059,9 +9211,9 @@ snapshots: '@argos-ci/browser@2.1.2': {} - '@argos-ci/core@2.3.0': + '@argos-ci/core@2.4.0': dependencies: - '@argos-ci/util': 2.0.0 + '@argos-ci/util': 2.1.0 axios: 1.7.2(debug@4.3.5) convict: 6.2.4 debug: 4.3.5(supports-color@8.1.1) @@ -9071,17 +9223,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@argos-ci/cypress@2.0.5(cypress@13.12.0)': + '@argos-ci/cypress@2.1.0(cypress@13.11.0)': dependencies: '@argos-ci/browser': 2.1.2 - '@argos-ci/core': 2.3.0 - '@argos-ci/util': 2.0.0 - cypress: 13.12.0 + '@argos-ci/core': 2.4.0 + '@argos-ci/util': 2.1.0 + cypress: 13.11.0 cypress-wait-until: 3.0.1 transitivePeerDependencies: - supports-color - '@argos-ci/util@2.0.0': {} + '@argos-ci/util@2.1.0': {} '@babel/code-frame@7.24.7': dependencies: @@ -9090,6 +9242,8 @@ snapshots: '@babel/compat-data@7.24.7': {} + '@babel/compat-data@7.24.9': {} + '@babel/core@7.24.7': dependencies: '@ampproject/remapping': 2.3.0 @@ -9110,6 +9264,33 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@7.24.9': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.10 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/helpers': 7.24.8 + '@babel/parser': 7.24.8 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + convert-source-map: 2.0.0 + debug: 4.3.5(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.24.10': + dependencies: + '@babel/types': 7.24.9 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + '@babel/generator@7.24.7': dependencies: '@babel/types': 7.24.7 @@ -9119,12 +9300,12 @@ snapshots: '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.24.9 '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': dependencies: - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 transitivePeerDependencies: - supports-color @@ -9136,6 +9317,14 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.24.8': + dependencies: + '@babel/compat-data': 7.24.9 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.1 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -9151,6 +9340,36 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-create-class-features-plugin@7.24.8(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-class-features-plugin@7.24.8(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.9) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -9158,11 +9377,29 @@ snapshots: regexpu-core: 5.3.2 semver: 6.3.1 + '@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-annotate-as-pure': 7.24.7 + regexpu-core: 5.3.2 + semver: 6.3.1 + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-plugin-utils': 7.24.8 + debug: 4.3.5(supports-color@8.1.1) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-plugin-utils': 7.24.8 debug: 4.3.5(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.8 @@ -9189,6 +9426,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-member-expression-to-functions@7.24.8': + dependencies: + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-imports@7.24.7': dependencies: '@babel/traverse': 7.24.7 @@ -9207,12 +9451,36 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.24.9(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.24.9(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + '@babel/helper-optimise-call-expression@7.24.7': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.24.9 '@babel/helper-plugin-utils@7.24.7': {} + '@babel/helper-plugin-utils@7.24.8': {} + '@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -9222,6 +9490,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-wrap-function': 7.24.7 + transitivePeerDependencies: + - supports-color + '@babel/helper-replace-supers@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -9231,6 +9508,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-replace-supers@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.7 + '@babel/helper-optimise-call-expression': 7.24.7 + transitivePeerDependencies: + - supports-color + '@babel/helper-simple-access@7.24.7': dependencies: '@babel/traverse': 7.24.7 @@ -9240,8 +9526,8 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 transitivePeerDependencies: - supports-color @@ -9251,16 +9537,20 @@ snapshots: '@babel/helper-string-parser@7.24.7': {} + '@babel/helper-string-parser@7.24.8': {} + '@babel/helper-validator-identifier@7.24.7': {} '@babel/helper-validator-option@7.24.7': {} + '@babel/helper-validator-option@7.24.8': {} + '@babel/helper-wrap-function@7.24.7': dependencies: '@babel/helper-function-name': 7.24.7 '@babel/template': 7.24.7 - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 transitivePeerDependencies: - supports-color @@ -9269,6 +9559,11 @@ snapshots: '@babel/template': 7.24.7 '@babel/types': 7.24.7 + '@babel/helpers@7.24.8': + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.9 + '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 @@ -9280,23 +9575,47 @@ snapshots: dependencies: '@babel/types': 7.24.7 + '@babel/parser@7.24.8': + dependencies: + '@babel/types': 7.24.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.9) transitivePeerDependencies: - supports-color @@ -9304,17 +9623,32 @@ snapshots: dependencies: '@babel/core': 7.24.7 '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -9325,41 +9659,81 @@ snapshots: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -9370,41 +9744,81 @@ snapshots: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -9414,119 +9828,240 @@ snapshots: dependencies: '@babel/core': 7.24.7 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.7) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.9) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.7) transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.9) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.7) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.9) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.24.8(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-compilation-targets': 7.24.8 '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-function-name': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7) '@babel/helper-split-export-declaration': 7.24.7 globals: 11.12.0 transitivePeerDependencies: - supports-color + '@babel/plugin-transform-classes@7.24.8(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.9) + '@babel/helper-split-export-declaration': 7.24.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/template': 7.24.7 - '@babel/plugin-transform-destructuring@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/template': 7.24.7 + + '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 transitivePeerDependencies: - supports-color @@ -9534,37 +10069,74 @@ snapshots: '@babel/plugin-transform-function-name@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-compilation-targets': 7.24.8 '@babel/helper-function-name': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-function-name@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-transform-literals@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-literals@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.9) + '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color @@ -9577,12 +10149,40 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-simple-access': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-simple-access': 7.24.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-hoist-variables': 7.24.7 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 transitivePeerDependencies: - supports-color @@ -9590,8 +10190,16 @@ snapshots: '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color @@ -9599,66 +10207,133 @@ snapshots: dependencies: '@babel/core': 7.24.7 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.9) + '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7) transitivePeerDependencies: - supports-color + '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.9) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-transform-optional-chaining@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.9) + + '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) transitivePeerDependencies: - supports-color + '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.9) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color @@ -9666,37 +10341,76 @@ snapshots: dependencies: '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.7) transitivePeerDependencies: - supports-color + '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.9) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 regenerator-transform: 0.15.2 '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 transitivePeerDependencies: - supports-color @@ -9704,17 +10418,32 @@ snapshots: '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-typeof-symbol@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-typescript@7.24.7(@babel/core@7.24.7)': dependencies: @@ -9729,33 +10458,56 @@ snapshots: '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/preset-env@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/compat-data': 7.24.7 + '@babel/core': 7.24.9 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/preset-env@7.24.8(@babel/core@7.24.7)': + dependencies: + '@babel/compat-data': 7.24.9 '@babel/core': 7.24.7 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-validator-option': 7.24.7 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.7(@babel/core@7.24.7) '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.7(@babel/core@7.24.7) '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.24.7) @@ -9786,9 +10538,9 @@ snapshots: '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-classes': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-classes': 7.24.8(@babel/core@7.24.7) '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-destructuring': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.24.7) '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.24.7) @@ -9801,7 +10553,7 @@ snapshots: '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.7) '@babel/plugin-transform-modules-systemjs': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.24.7) @@ -9811,7 +10563,7 @@ snapshots: '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.7) '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.24.7) @@ -9822,7 +10574,7 @@ snapshots: '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-typeof-symbol': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.24.7) '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.7) @@ -9836,11 +10588,105 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/preset-env@7.24.8(@babel/core@7.24.9)': + dependencies: + '@babel/compat-data': 7.24.9 + '@babel/core': 7.24.9 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.9) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.9) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.9) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-async-generator-functions': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-classes': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-function-name': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-literals': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-modules-systemjs': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.24.9) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.9) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.9) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.9) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.9) + core-js-compat: 3.37.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/types': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/types': 7.24.9 + esutils: 2.0.3 + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/types': 7.24.9 esutils: 2.0.3 '@babel/preset-typescript@7.24.7(@babel/core@7.24.7)': @@ -9881,12 +10727,33 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.24.8': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.10 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 + debug: 4.3.5(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.24.7': dependencies: '@babel/helper-string-parser': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 + '@babel/types@7.24.9': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + '@bcherny/json-schema-ref-parser@10.0.5-fork': dependencies: '@jsdevtools/ono': 7.1.3 @@ -9973,18 +10840,83 @@ snapshots: '@cspell/dict-typescript': 3.1.5 '@cspell/dict-vue': 3.0.0 - '@cspell/cspell-json-reporter@8.9.1': + '@cspell/cspell-bundled-dicts@8.9.1': + dependencies: + '@cspell/dict-ada': 4.0.2 + '@cspell/dict-aws': 4.0.2 + '@cspell/dict-bash': 4.1.3 + '@cspell/dict-companies': 3.1.2 + '@cspell/dict-cpp': 5.1.11 + '@cspell/dict-cryptocurrencies': 5.0.0 + '@cspell/dict-csharp': 4.0.2 + '@cspell/dict-css': 4.0.12 + '@cspell/dict-dart': 2.0.3 + '@cspell/dict-django': 4.1.0 + '@cspell/dict-docker': 1.1.7 + '@cspell/dict-dotnet': 5.0.2 + '@cspell/dict-elixir': 4.0.3 + '@cspell/dict-en-common-misspellings': 2.0.3 + '@cspell/dict-en-gb': 1.1.33 + '@cspell/dict-en_us': 4.3.23 + '@cspell/dict-filetypes': 3.0.4 + '@cspell/dict-fonts': 4.0.0 + '@cspell/dict-fsharp': 1.0.1 + '@cspell/dict-fullstack': 3.1.8 + '@cspell/dict-gaming-terms': 1.0.5 + '@cspell/dict-git': 3.0.0 + '@cspell/dict-golang': 6.0.9 + '@cspell/dict-google': 1.0.1 + '@cspell/dict-haskell': 4.0.1 + '@cspell/dict-html': 4.0.5 + '@cspell/dict-html-symbol-entities': 4.0.0 + '@cspell/dict-java': 5.0.7 + '@cspell/dict-julia': 1.0.1 + '@cspell/dict-k8s': 1.0.5 + '@cspell/dict-latex': 4.0.0 + '@cspell/dict-lorem-ipsum': 4.0.0 + '@cspell/dict-lua': 4.0.3 + '@cspell/dict-makefile': 1.0.0 + '@cspell/dict-monkeyc': 1.0.6 + '@cspell/dict-node': 5.0.1 + '@cspell/dict-npm': 5.0.16 + '@cspell/dict-php': 4.0.8 + '@cspell/dict-powershell': 5.0.4 + '@cspell/dict-public-licenses': 2.0.7 + '@cspell/dict-python': 4.2.1 + '@cspell/dict-r': 2.0.1 + '@cspell/dict-ruby': 5.0.2 + '@cspell/dict-rust': 4.0.4 + '@cspell/dict-scala': 5.0.2 + '@cspell/dict-software-terms': 3.4.8 + '@cspell/dict-sql': 2.1.3 + '@cspell/dict-svelte': 1.0.2 + '@cspell/dict-swift': 2.0.1 + '@cspell/dict-terraform': 1.0.0 + '@cspell/dict-typescript': 3.1.5 + '@cspell/dict-vue': 3.0.0 + + '@cspell/cspell-json-reporter@8.8.4': dependencies: '@cspell/cspell-types': 8.9.1 '@cspell/cspell-pipe@8.9.1': {} + '@cspell/cspell-pipe@8.9.1': {} + + '@cspell/cspell-resolver@8.8.4': + dependencies: + global-directory: 4.0.1 + '@cspell/cspell-resolver@8.9.1': dependencies: global-directory: 4.0.1 + '@cspell/cspell-service-bus@8.8.4': {} + '@cspell/cspell-service-bus@8.9.1': {} + '@cspell/cspell-types@8.8.4': {} + '@cspell/cspell-types@8.9.1': {} '@cspell/dict-ada@4.0.2': {} @@ -9995,7 +10927,9 @@ snapshots: '@cspell/dict-companies@3.1.2': {} - '@cspell/dict-cpp@5.1.10': {} + '@cspell/dict-cpp@5.1.11': {} + + '@cspell/dict-cpp@5.1.9': {} '@cspell/dict-cryptocurrencies@5.0.0': {} @@ -10017,10 +10951,14 @@ snapshots: '@cspell/dict-en-common-misspellings@2.0.3': {} + '@cspell/dict-en-common-misspellings@2.0.3': {} + '@cspell/dict-en-gb@1.1.33': {} '@cspell/dict-en_us@4.3.23': {} + '@cspell/dict-en_us@4.3.23': {} + '@cspell/dict-filetypes@3.0.4': {} '@cspell/dict-fonts@4.0.0': {} @@ -10083,6 +11021,8 @@ snapshots: '@cspell/dict-software-terms@3.4.8': {} + '@cspell/dict-software-terms@3.4.8': {} + '@cspell/dict-sql@2.1.3': {} '@cspell/dict-svelte@1.0.2': {} @@ -10095,6 +11035,10 @@ snapshots: '@cspell/dict-vue@3.0.0': {} + '@cspell/dynamic-import@8.9.1': + dependencies: + import-meta-resolve: 4.1.0 + '@cspell/dynamic-import@8.9.1': dependencies: import-meta-resolve: 4.1.0 @@ -10108,14 +11052,16 @@ snapshots: '@cspell/strong-weak-map@8.9.1': {} + '@cspell/strong-weak-map@8.9.1': {} + '@cspell/url@8.9.1': {} - '@cypress/code-coverage@3.12.39(@babel/core@7.24.7)(@babel/preset-env@7.24.7)(babel-loader@9.1.3)(cypress@13.12.0)(webpack@5.92.1)': + '@cypress/code-coverage@3.12.39(@babel/core@7.24.7)(@babel/preset-env@7.24.8(@babel/core@7.24.7))(babel-loader@9.1.3(@babel/core@7.24.7)(webpack@5.92.0(esbuild@0.21.5)))(cypress@13.11.0)(webpack@5.92.0(esbuild@0.21.5))': dependencies: '@babel/core': 7.24.7 - '@babel/preset-env': 7.24.7(@babel/core@7.24.7) - '@cypress/webpack-preprocessor': 6.0.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7)(babel-loader@9.1.3)(webpack@5.92.1) - babel-loader: 9.1.3(@babel/core@7.24.7)(webpack@5.92.1) + '@babel/preset-env': 7.24.8(@babel/core@7.24.7) + '@cypress/webpack-preprocessor': 6.0.2(@babel/core@7.24.7)(@babel/preset-env@7.24.8(@babel/core@7.24.7))(babel-loader@9.1.3(@babel/core@7.24.7)(webpack@5.92.0(esbuild@0.21.5)))(webpack@5.92.0(esbuild@0.21.5)) + babel-loader: 9.1.3(@babel/core@7.24.7)(webpack@5.92.0(esbuild@0.21.5)) chalk: 4.1.2 cypress: 13.12.0 dayjs: 1.11.10 @@ -10125,7 +11071,7 @@ snapshots: istanbul-lib-coverage: 3.2.2 js-yaml: 4.1.0 nyc: 15.1.0 - webpack: 5.92.1(esbuild@0.21.5)(webpack-cli@4.10.0) + webpack: 5.92.0(esbuild@0.21.5) transitivePeerDependencies: - supports-color @@ -10150,15 +11096,15 @@ snapshots: tunnel-agent: 0.6.0 uuid: 8.3.2 - '@cypress/webpack-preprocessor@6.0.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7)(babel-loader@9.1.3)(webpack@5.92.1)': + '@cypress/webpack-preprocessor@6.0.2(@babel/core@7.24.7)(@babel/preset-env@7.24.8(@babel/core@7.24.7))(babel-loader@9.1.3(@babel/core@7.24.7)(webpack@5.92.0(esbuild@0.21.5)))(webpack@5.92.0(esbuild@0.21.5))': dependencies: '@babel/core': 7.24.7 - '@babel/preset-env': 7.24.7(@babel/core@7.24.7) - babel-loader: 9.1.3(@babel/core@7.24.7)(webpack@5.92.1) + '@babel/preset-env': 7.24.8(@babel/core@7.24.7) + babel-loader: 9.1.3(@babel/core@7.24.7)(webpack@5.92.0(esbuild@0.21.5)) bluebird: 3.7.1 debug: 4.3.5(supports-color@8.1.1) lodash: 4.17.21 - webpack: 5.92.1(esbuild@0.21.5)(webpack-cli@4.10.0) + webpack: 5.92.0(esbuild@0.21.5) transitivePeerDependencies: - supports-color @@ -10190,6 +11136,7 @@ snapshots: '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) '@docsearch/css': 3.6.0 algoliasearch: 4.23.3 + optionalDependencies: search-insights: 2.14.0 transitivePeerDependencies: - '@algolia/client-search' @@ -10203,7 +11150,7 @@ snapshots: dependencies: '@types/eslint': 8.56.10 '@types/estree': 1.0.5 - '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/types': 7.15.0 comment-parser: 1.4.1 esquery: 1.5.0 jsdoc-type-pratt-parser: 4.0.0 @@ -10289,6 +11236,8 @@ snapshots: '@eslint-community/regexpp@4.10.1': {} + '@eslint-community/regexpp@4.11.0': {} + '@eslint/config-array@0.17.0': dependencies: '@eslint/object-schema': 2.1.4 @@ -10348,11 +11297,16 @@ snapshots: '@floating-ui/utils@0.2.2': {} - '@floating-ui/vue@0.2.1(vue@3.4.30)': + '@floating-ui/utils@0.2.4': {} + + '@floating-ui/vue@1.1.1(vue@3.4.27(typescript@5.4.5))': dependencies: '@floating-ui/dom': 1.6.5 - vue: 3.4.30(typescript@5.4.5) - vue-demi: 0.13.11(vue@3.4.30) + '@floating-ui/utils': 0.2.4 + vue-demi: 0.14.8(vue@3.4.27(typescript@5.4.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue '@hapi/hoek@9.3.0': {} @@ -10360,12 +11314,13 @@ snapshots: dependencies: '@hapi/hoek': 9.3.0 - '@headlessui-float/vue@0.11.4(vue@3.4.30)': + '@headlessui-float/vue@0.14.0(@headlessui/vue@1.7.22(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5))': dependencies: '@floating-ui/core': 1.6.2 '@floating-ui/dom': 1.6.5 - '@floating-ui/vue': 0.2.1(vue@3.4.30) - vue: 3.4.30(typescript@5.4.5) + '@floating-ui/vue': 1.1.1(vue@3.4.27(typescript@5.4.5)) + '@headlessui/vue': 1.7.22(vue@3.4.27(typescript@5.4.5)) + vue: 3.4.27(typescript@5.4.5) transitivePeerDependencies: - '@vue/composition-api' @@ -10373,10 +11328,10 @@ snapshots: dependencies: tailwindcss: 3.4.4 - '@headlessui/vue@1.7.22(vue@3.4.30)': + '@headlessui/vue@1.7.22(vue@3.4.27(typescript@5.4.5))': dependencies: - '@tanstack/vue-virtual': 3.7.0(vue@3.4.30) - vue: 3.4.30(typescript@5.4.5) + '@tanstack/vue-virtual': 3.5.1(vue@3.4.27(typescript@5.4.5)) + vue: 3.4.27(typescript@5.4.5) '@humanwhocodes/config-array@0.11.14': dependencies: @@ -10722,12 +11677,14 @@ snapshots: '@polka/url@1.0.0-next.25': {} - '@rollup/plugin-babel@5.3.1(@babel/core@7.24.7)(rollup@2.79.1)': + '@rollup/plugin-babel@5.3.1(@babel/core@7.24.9)(@types/babel__core@7.20.5)(rollup@2.79.1)': dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.9 '@babel/helper-module-imports': 7.24.7 '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 + optionalDependencies: + '@types/babel__core': 7.20.5 transitivePeerDependencies: - supports-color @@ -10739,6 +11696,7 @@ snapshots: is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 + optionalDependencies: rollup: 2.79.1 '@rollup/plugin-replace@2.4.2(rollup@2.79.1)': @@ -10749,16 +11707,20 @@ snapshots: '@rollup/plugin-terser@0.4.4(rollup@2.79.1)': dependencies: - rollup: 2.79.1 serialize-javascript: 6.0.2 smob: 1.5.0 - terser: 5.31.1 + terser: 5.31.3 + optionalDependencies: + rollup: 2.79.1 - '@rollup/plugin-typescript@11.1.6(typescript@5.4.5)': + '@rollup/plugin-typescript@11.1.6(rollup@4.18.0)(tslib@2.6.3)(typescript@5.4.5)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@2.79.1) + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) resolve: 1.22.8 typescript: 5.4.5 + optionalDependencies: + rollup: 4.18.0 + tslib: 2.6.3 '@rollup/pluginutils@3.1.0(rollup@2.79.1)': dependencies: @@ -10772,8 +11734,17 @@ snapshots: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 + optionalDependencies: rollup: 2.79.1 + '@rollup/pluginutils@5.1.0(rollup@4.18.0)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.18.0 + '@rollup/rollup-android-arm-eabi@4.18.0': optional: true @@ -10863,7 +11834,7 @@ snapshots: '@tanstack/virtual-core@3.7.0': {} - '@tanstack/vue-virtual@3.7.0(vue@3.4.30)': + '@tanstack/vue-virtual@3.5.1(vue@3.4.27(typescript@5.4.5))': dependencies: '@tanstack/virtual-core': 3.7.0 vue: 3.4.30(typescript@5.4.5) @@ -11219,6 +12190,8 @@ snapshots: dependencies: rollup: 2.79.1 + '@types/semver@7.5.8': {} + '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 @@ -11277,129 +12250,130 @@ snapshots: '@types/node': 20.14.8 optional: true - '@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1)(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@7.6.0(@typescript-eslint/parser@8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5))(eslint@9.6.0)(typescript@5.4.5)': dependencies: - '@eslint-community/regexpp': 4.10.1 - '@typescript-eslint/parser': 7.13.1(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.13.1 - '@typescript-eslint/type-utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.13.1 - eslint: 8.57.0 + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.6.0 + '@typescript-eslint/type-utils': 7.6.0(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.6.0(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.6.0 + debug: 4.3.5(supports-color@8.1.1) + eslint: 9.6.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color + optional: true - '@typescript-eslint/eslint-plugin@8.0.0-alpha.38(@typescript-eslint/parser@8.0.0-alpha.38)(eslint@9.6.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@8.0.0-alpha.44(@typescript-eslint/parser@8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5))(eslint@9.6.0)(typescript@5.4.5)': dependencies: - '@eslint-community/regexpp': 4.10.1 - '@typescript-eslint/parser': 8.0.0-alpha.38(eslint@9.6.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 8.0.0-alpha.38 - '@typescript-eslint/type-utils': 8.0.0-alpha.38(eslint@9.6.0)(typescript@5.4.5) - '@typescript-eslint/utils': 8.0.0-alpha.38(eslint@9.6.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 8.0.0-alpha.38 + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 8.0.0-alpha.44 + '@typescript-eslint/type-utils': 8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/utils': 8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 8.0.0-alpha.44 eslint: 9.6.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.13.1(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/parser@8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/scope-manager': 7.13.1 - '@typescript-eslint/types': 7.13.1 - '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.13.1 - debug: 4.3.5(supports-color@8.1.1) - eslint: 8.57.0 - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.0.0-alpha.38(eslint@9.6.0)(typescript@5.4.5)': - dependencies: - '@typescript-eslint/scope-manager': 8.0.0-alpha.38 - '@typescript-eslint/types': 8.0.0-alpha.38 - '@typescript-eslint/typescript-estree': 8.0.0-alpha.38(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 8.0.0-alpha.38 + '@typescript-eslint/scope-manager': 8.0.0-alpha.44 + '@typescript-eslint/types': 8.0.0-alpha.44 + '@typescript-eslint/typescript-estree': 8.0.0-alpha.44(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 8.0.0-alpha.44 debug: 4.3.5(supports-color@8.1.1) eslint: 9.6.0 + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.13.1': + '@typescript-eslint/scope-manager@7.6.0': dependencies: - '@typescript-eslint/types': 7.13.1 - '@typescript-eslint/visitor-keys': 7.13.1 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/visitor-keys': 7.6.0 - '@typescript-eslint/scope-manager@8.0.0-alpha.38': + '@typescript-eslint/scope-manager@8.0.0-alpha.44': dependencies: - '@typescript-eslint/types': 8.0.0-alpha.38 - '@typescript-eslint/visitor-keys': 8.0.0-alpha.38 + '@typescript-eslint/types': 8.0.0-alpha.44 + '@typescript-eslint/visitor-keys': 8.0.0-alpha.44 - '@typescript-eslint/type-utils@7.13.1(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/type-utils@7.6.0(eslint@9.6.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.4.5) - '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.6.0(eslint@9.6.0)(typescript@5.4.5) debug: 4.3.5(supports-color@8.1.1) - eslint: 8.57.0 + eslint: 9.6.0 ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color + optional: true - '@typescript-eslint/type-utils@8.0.0-alpha.38(eslint@9.6.0)(typescript@5.4.5)': + '@typescript-eslint/type-utils@8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/typescript-estree': 8.0.0-alpha.38(typescript@5.4.5) - '@typescript-eslint/utils': 8.0.0-alpha.38(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 8.0.0-alpha.44(typescript@5.4.5) + '@typescript-eslint/utils': 8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5) debug: 4.3.5(supports-color@8.1.1) ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - eslint - supports-color - '@typescript-eslint/types@7.13.1': {} + '@typescript-eslint/types@7.15.0': {} - '@typescript-eslint/types@8.0.0-alpha.38': {} + '@typescript-eslint/types@7.6.0': {} - '@typescript-eslint/typescript-estree@7.13.1(typescript@5.4.5)': + '@typescript-eslint/types@8.0.0-alpha.44': {} + + '@typescript-eslint/typescript-estree@7.6.0(typescript@5.4.5)': dependencies: - '@typescript-eslint/types': 7.13.1 - '@typescript-eslint/visitor-keys': 7.13.1 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/visitor-keys': 7.6.0 debug: 4.3.5(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 - semver: 7.6.2 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.0.0-alpha.38(typescript@5.4.5)': + '@typescript-eslint/typescript-estree@8.0.0-alpha.44(typescript@5.4.5)': dependencies: - '@typescript-eslint/types': 8.0.0-alpha.38 - '@typescript-eslint/visitor-keys': 8.0.0-alpha.38 + '@typescript-eslint/types': 8.0.0-alpha.44 + '@typescript-eslint/visitor-keys': 8.0.0-alpha.44 debug: 4.3.5(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 - semver: 7.6.2 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.13.1(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/utils@7.6.0(eslint@9.6.0)(typescript@5.4.5)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@typescript-eslint/scope-manager': 7.13.1 @@ -11413,43 +12387,45 @@ snapshots: '@typescript-eslint/utils@7.13.1(eslint@9.6.0)(typescript@5.4.5)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) - '@typescript-eslint/scope-manager': 7.13.1 - '@typescript-eslint/types': 7.13.1 - '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.4.5) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.6.0 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5) eslint: 9.6.0 + semver: 7.6.2 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.0.0-alpha.38(eslint@9.6.0)(typescript@5.4.5)': + '@typescript-eslint/utils@8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) - '@typescript-eslint/scope-manager': 8.0.0-alpha.38 - '@typescript-eslint/types': 8.0.0-alpha.38 - '@typescript-eslint/typescript-estree': 8.0.0-alpha.38(typescript@5.4.5) + '@typescript-eslint/scope-manager': 8.0.0-alpha.44 + '@typescript-eslint/types': 8.0.0-alpha.44 + '@typescript-eslint/typescript-estree': 8.0.0-alpha.44(typescript@5.4.5) eslint: 9.6.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.13.1': + '@typescript-eslint/visitor-keys@7.6.0': dependencies: - '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/types': 7.6.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.0.0-alpha.38': + '@typescript-eslint/visitor-keys@8.0.0-alpha.44': dependencies: - '@typescript-eslint/types': 8.0.0-alpha.38 + '@typescript-eslint/types': 8.0.0-alpha.44 eslint-visitor-keys: 3.4.3 - '@ungap/structured-clone@1.2.0': {} - - '@unocss/astro@0.59.4(rollup@2.79.1)(vite@5.3.1)': + '@unocss/astro@0.59.4(rollup@2.79.1)(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3))': dependencies: '@unocss/core': 0.59.4 '@unocss/reset': 0.59.4 - '@unocss/vite': 0.59.4(rollup@2.79.1)(vite@5.3.1) - vite: 5.3.1(@types/node@20.14.8) + '@unocss/vite': 0.59.4(rollup@2.79.1)(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3)) + optionalDependencies: + vite: 5.3.0(@types/node@20.14.2)(terser@5.31.3) transitivePeerDependencies: - rollup @@ -11580,7 +12556,7 @@ snapshots: dependencies: '@unocss/core': 0.59.4 - '@unocss/vite@0.59.4(rollup@2.79.1)(vite@5.3.1)': + '@unocss/vite@0.59.4(rollup@2.79.1)(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3))': dependencies: '@ampproject/remapping': 2.3.0 '@rollup/pluginutils': 5.1.0(rollup@2.79.1) @@ -11592,20 +12568,20 @@ snapshots: chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.10 - vite: 5.3.1(@types/node@20.14.8) + vite: 5.3.0(@types/node@20.14.2)(terser@5.31.3) transitivePeerDependencies: - rollup - '@vite-pwa/vitepress@0.4.0(vite-plugin-pwa@0.19.8)': + '@vite-pwa/vitepress@0.4.0(vite-plugin-pwa@0.19.8(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.1.0))': dependencies: - vite-plugin-pwa: 0.19.8(vite@5.3.1)(workbox-build@7.1.1)(workbox-window@7.1.0) + vite-plugin-pwa: 0.19.8(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.1.0) - '@vitejs/plugin-vue@5.0.5(vite@5.3.1)(vue@3.4.30)': + '@vitejs/plugin-vue@5.0.5(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3))(vue@3.4.27(typescript@5.4.5))': dependencies: - vite: 5.3.1(@types/node@20.14.8) - vue: 3.4.30(typescript@5.4.5) + vite: 5.3.0(@types/node@20.14.2)(terser@5.31.3) + vue: 3.4.27(typescript@5.4.5) - '@vitest/coverage-v8@1.6.0(vitest@1.6.0)': + '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(terser@5.31.3))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -11620,7 +12596,7 @@ snapshots: std-env: 3.7.0 strip-literal: 2.1.0 test-exclude: 6.0.0 - vitest: 1.6.0(@types/node@20.14.8)(@vitest/ui@1.6.0)(jsdom@24.1.0) + vitest: 1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(terser@5.31.3) transitivePeerDependencies: - supports-color @@ -11655,7 +12631,7 @@ snapshots: pathe: 1.1.2 picocolors: 1.0.1 sirv: 2.0.4 - vitest: 1.6.0(@types/node@20.14.8)(@vitest/ui@1.6.0)(jsdom@24.1.0) + vitest: 1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(terser@5.31.3) '@vitest/utils@1.6.0': dependencies: @@ -11664,7 +12640,7 @@ snapshots: loupe: 2.3.7 pretty-format: 29.7.0 - '@vue/compat@3.4.30(vue@3.4.30)': + '@vue/compat@3.4.27(vue@3.4.27(typescript@5.4.5))': dependencies: '@babel/parser': 7.24.7 estree-walker: 2.0.2 @@ -11703,11 +12679,13 @@ snapshots: '@vue/devtools-api@6.6.3': {} - '@vue/devtools-api@7.3.4': + '@vue/devtools-api@7.2.1(vue@3.4.27(typescript@5.4.5))': dependencies: - '@vue/devtools-kit': 7.3.4 + '@vue/devtools-kit': 7.2.1(vue@3.4.27(typescript@5.4.5)) + transitivePeerDependencies: + - vue - '@vue/devtools-kit@7.3.4': + '@vue/devtools-kit@7.2.1(vue@3.4.27(typescript@5.4.5))': dependencies: '@vue/devtools-shared': 7.3.4 birpc: 0.2.17 @@ -11737,7 +12715,7 @@ snapshots: '@vue/shared': 3.4.30 csstype: 3.1.3 - '@vue/server-renderer@3.4.30(vue@3.4.30)': + '@vue/server-renderer@3.4.27(vue@3.4.27(typescript@5.4.5))': dependencies: '@vue/compiler-ssr': 3.4.30 '@vue/shared': 3.4.30 @@ -11745,31 +12723,33 @@ snapshots: '@vue/shared@3.4.30': {} - '@vueuse/core@10.11.0(vue@3.4.30)': + '@vueuse/core@10.11.0(vue@3.4.27(typescript@5.4.5))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.11.0 - '@vueuse/shared': 10.11.0(vue@3.4.30) - vue-demi: 0.14.8(vue@3.4.30) + '@vueuse/shared': 10.11.0(vue@3.4.27(typescript@5.4.5)) + vue-demi: 0.14.8(vue@3.4.27(typescript@5.4.5)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/integrations@10.11.0(focus-trap@7.5.4)(vue@3.4.30)': + '@vueuse/integrations@10.11.0(axios@1.7.2)(focus-trap@7.5.4)(vue@3.4.27(typescript@5.4.5))': dependencies: - '@vueuse/core': 10.11.0(vue@3.4.30) - '@vueuse/shared': 10.11.0(vue@3.4.30) + '@vueuse/core': 10.11.0(vue@3.4.27(typescript@5.4.5)) + '@vueuse/shared': 10.11.0(vue@3.4.27(typescript@5.4.5)) + vue-demi: 0.14.8(vue@3.4.27(typescript@5.4.5)) + optionalDependencies: + axios: 1.7.2(debug@4.3.5) focus-trap: 7.5.4 - vue-demi: 0.14.8(vue@3.4.30) transitivePeerDependencies: - '@vue/composition-api' - vue '@vueuse/metadata@10.11.0': {} - '@vueuse/shared@10.11.0(vue@3.4.30)': + '@vueuse/shared@10.11.0(vue@3.4.27(typescript@5.4.5))': dependencies: - vue-demi: 0.14.8(vue@3.4.30) + vue-demi: 0.14.8(vue@3.4.27(typescript@5.4.5)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -11798,6 +12778,7 @@ snapshots: dependencies: '@types/node': 18.19.39 got: 11.8.6 + optionalDependencies: typescript: 5.4.5 '@wdio/utils@7.30.2(typescript@5.4.5)': @@ -11884,20 +12865,21 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.92.1)': + '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0(webpack-dev-server@4.15.2)(webpack@5.92.0))(webpack@5.92.0(esbuild@0.21.5)(webpack-cli@4.10.0))': dependencies: webpack: 5.92.1(esbuild@0.21.5)(webpack-cli@4.10.0) webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.92.1) - '@webpack-cli/info@1.5.0(webpack-cli@4.10.0)': + '@webpack-cli/info@1.5.0(webpack-cli@4.10.0(webpack-dev-server@4.15.2)(webpack@5.92.0))': dependencies: envinfo: 7.13.0 webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.92.1) - '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)(webpack-dev-server@4.15.2)': + '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0(webpack-dev-server@4.15.2)(webpack@5.92.0))(webpack-dev-server@4.15.2(webpack-cli@4.10.0)(webpack@5.92.0))': dependencies: - webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.92.1) - webpack-dev-server: 4.15.2(webpack-cli@4.10.0)(webpack@5.92.1) + webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.92.0) + optionalDependencies: + webpack-dev-server: 4.15.2(webpack-cli@4.10.0)(webpack@5.92.0) '@xmldom/xmldom@0.8.10': {} @@ -11905,17 +12887,18 @@ snapshots: '@xtuc/long@4.2.2': {} - '@zenuml/core@3.23.24(typescript@5.4.5)': + '@zenuml/core@3.24.0(typescript@5.4.5)': dependencies: - '@headlessui-float/vue': 0.11.4(vue@3.4.30) + '@headlessui-float/vue': 0.14.0(@headlessui/vue@1.7.22(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) '@headlessui/tailwindcss': 0.2.1(tailwindcss@3.4.4) - '@headlessui/vue': 1.7.22(vue@3.4.30) + '@headlessui/vue': 1.7.22(vue@3.4.27(typescript@5.4.5)) '@types/assert': 1.5.10 '@types/ramda': 0.28.25 - '@vue/compat': 3.4.30(vue@3.4.30) + '@vue/compat': 3.4.27(vue@3.4.27(typescript@5.4.5)) antlr4: 4.11.0 color-string: 1.9.1 dom-to-image-more: 2.16.0 + dompurify: 3.1.5 file-saver: 2.0.5 highlight.js: 10.7.3 html-to-image: 1.11.11 @@ -11925,8 +12908,8 @@ snapshots: postcss: 8.4.38 ramda: 0.28.0 tailwindcss: 3.4.4 - vue: 3.4.30(typescript@5.4.5) - vuex: 4.1.0(vue@3.4.30) + vue: 3.4.27(typescript@5.4.5) + vuex: 4.1.0(vue@3.4.27(typescript@5.4.5)) transitivePeerDependencies: - '@vue/composition-api' - ts-node @@ -11961,6 +12944,8 @@ snapshots: acorn@8.12.0: {} + acorn@8.12.1: {} + agent-base@6.0.2: dependencies: debug: 4.3.5(supports-color@8.1.1) @@ -11984,7 +12969,7 @@ snapshots: indent-string: 5.0.0 ajv-formats@2.1.1(ajv@8.16.0): - dependencies: + optionalDependencies: ajv: 8.16.0 ajv-keywords@3.5.2(ajv@6.12.6): @@ -12017,6 +13002,13 @@ snapshots: require-from-string: 2.0.2 uri-js: 4.4.1 + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.1 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + algoliasearch@4.23.3: dependencies: '@algolia/cache-browser-local-storage': 4.23.3 @@ -12187,12 +13179,12 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.1.3(@babel/core@7.24.7)(webpack@5.92.1): + babel-loader@9.1.3(@babel/core@7.24.7)(webpack@5.92.0(esbuild@0.21.5)): dependencies: '@babel/core': 7.24.7 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.92.1(esbuild@0.21.5)(webpack-cli@4.10.0) + webpack: 5.92.0(esbuild@0.21.5) babel-plugin-istanbul@6.1.1: dependencies: @@ -12213,13 +13205,22 @@ snapshots: babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.7): dependencies: - '@babel/compat-data': 7.24.7 + '@babel/compat-data': 7.24.9 '@babel/core': 7.24.7 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.7) semver: 6.3.1 transitivePeerDependencies: - supports-color + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.9): + dependencies: + '@babel/compat-data': 7.24.9 + '@babel/core': 7.24.9 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.9) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.7): dependencies: '@babel/core': 7.24.7 @@ -12228,6 +13229,14 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.9): + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.9) + core-js-compat: 3.37.1 + transitivePeerDependencies: + - supports-color + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.7): dependencies: '@babel/core': 7.24.7 @@ -12235,6 +13244,13 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.9): + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.9) + transitivePeerDependencies: + - supports-color + babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.7): dependencies: '@babel/core': 7.24.7 @@ -12794,6 +13810,20 @@ snapshots: comment-json: 4.2.3 yaml: 2.4.5 + cspell-config-lib@8.9.1: + dependencies: + '@cspell/cspell-types': 8.9.1 + comment-json: 4.2.3 + yaml: 2.4.5 + + cspell-dictionary@8.8.4: + dependencies: + '@cspell/cspell-pipe': 8.9.1 + '@cspell/cspell-types': 8.9.1 + cspell-trie-lib: 8.9.1 + fast-equals: 5.0.1 + gensequence: 7.0.0 + cspell-dictionary@8.9.1: dependencies: '@cspell/cspell-pipe': 8.9.1 @@ -12802,7 +13832,7 @@ snapshots: fast-equals: 5.0.1 gensequence: 7.0.0 - cspell-gitignore@8.9.1: + cspell-gitignore@8.8.4: dependencies: cspell-glob: 8.9.1 find-up-simple: 1.0.0 @@ -12811,16 +13841,56 @@ snapshots: dependencies: micromatch: 4.0.7 + cspell-glob@8.9.1: + dependencies: + micromatch: 4.0.7 + + cspell-grammar@8.8.4: + dependencies: + '@cspell/cspell-pipe': 8.9.1 + '@cspell/cspell-types': 8.9.1 + cspell-grammar@8.9.1: dependencies: '@cspell/cspell-pipe': 8.9.1 '@cspell/cspell-types': 8.9.1 + cspell-io@8.8.4: + dependencies: + '@cspell/cspell-service-bus': 8.9.1 + '@cspell/url': 8.9.1 + cspell-io@8.9.1: dependencies: '@cspell/cspell-service-bus': 8.9.1 '@cspell/url': 8.9.1 + cspell-lib@8.8.4: + dependencies: + '@cspell/cspell-bundled-dicts': 8.9.1 + '@cspell/cspell-pipe': 8.9.1 + '@cspell/cspell-resolver': 8.9.1 + '@cspell/cspell-types': 8.9.1 + '@cspell/dynamic-import': 8.9.1 + '@cspell/strong-weak-map': 8.9.1 + '@cspell/url': 8.9.1 + clear-module: 4.1.2 + comment-json: 4.2.3 + cspell-config-lib: 8.9.1 + cspell-dictionary: 8.9.1 + cspell-glob: 8.9.1 + cspell-grammar: 8.9.1 + cspell-io: 8.9.1 + cspell-trie-lib: 8.9.1 + env-paths: 3.0.0 + fast-equals: 5.0.1 + gensequence: 7.0.0 + import-fresh: 3.3.0 + resolve-from: 5.0.0 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + xdg-basedir: 5.1.0 + cspell-lib@8.9.1: dependencies: '@cspell/cspell-bundled-dicts': 8.9.1 @@ -12847,13 +13917,19 @@ snapshots: vscode-uri: 3.0.8 xdg-basedir: 5.1.0 + cspell-trie-lib@8.8.4: + dependencies: + '@cspell/cspell-pipe': 8.9.1 + '@cspell/cspell-types': 8.9.1 + gensequence: 7.0.0 + cspell-trie-lib@8.9.1: dependencies: '@cspell/cspell-pipe': 8.9.1 '@cspell/cspell-types': 8.9.1 gensequence: 7.0.0 - cspell@8.9.1: + cspell@8.8.4: dependencies: '@cspell/cspell-json-reporter': 8.9.1 '@cspell/cspell-pipe': 8.9.1 @@ -12895,13 +13971,13 @@ snapshots: cuint@0.2.2: {} - cypress-image-snapshot@4.0.1(cypress@13.12.0)(jest@29.7.0): + cypress-image-snapshot@4.0.1(cypress@13.11.0)(jest@29.7.0(@types/node@20.14.2)): dependencies: chalk: 2.4.2 cypress: 13.12.0 fs-extra: 7.0.1 glob: 7.2.3 - jest-image-snapshot: 4.2.0(jest@29.7.0) + jest-image-snapshot: 4.2.0(jest@29.7.0(@types/node@20.14.2)) pkg-dir: 3.0.0 term-img: 4.1.0 transitivePeerDependencies: @@ -13182,6 +14258,7 @@ snapshots: debug@3.2.7(supports-color@8.1.1): dependencies: ms: 2.1.3 + optionalDependencies: supports-color: 8.1.1 debug@4.3.3: @@ -13195,6 +14272,7 @@ snapshots: debug@4.3.5(supports-color@8.1.1): dependencies: ms: 2.1.2 + optionalDependencies: supports-color: 8.1.1 decamelize@1.2.0: {} @@ -13535,16 +14613,18 @@ snapshots: dependencies: htmlparser2: 9.1.0 - eslint-plugin-jest@28.6.0(eslint@9.6.0)(jest@29.7.0)(typescript@5.4.5): + eslint-plugin-jest@28.6.0(@typescript-eslint/eslint-plugin@7.6.0(@typescript-eslint/parser@8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5))(eslint@9.6.0)(typescript@5.4.5))(eslint@9.6.0)(jest@29.7.0(@types/node@20.14.2))(typescript@5.4.5): dependencies: - '@typescript-eslint/utils': 7.13.1(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.6.0(eslint@9.6.0)(typescript@5.4.5) eslint: 9.6.0 - jest: 29.7.0(@types/node@20.14.8) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 7.6.0(@typescript-eslint/parser@8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5))(eslint@9.6.0)(typescript@5.4.5) + jest: 29.7.0(@types/node@20.14.2) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-jsdoc@48.3.0(eslint@9.6.0): + eslint-plugin-jsdoc@48.5.2(eslint@9.6.0): dependencies: '@es-joy/jsdoccomment': 0.43.1 are-docs-informative: 0.0.2 @@ -13553,7 +14633,7 @@ snapshots: escape-string-regexp: 4.0.0 eslint: 9.6.0 esquery: 1.5.0 - parse-imports: 2.1.0 + parse-imports: 2.1.1 semver: 7.6.2 spdx-expression-parse: 4.0.0 synckit: 0.9.0 @@ -13584,7 +14664,7 @@ snapshots: '@microsoft/tsdoc': 0.15.0 '@microsoft/tsdoc-config': 0.17.0 - eslint-plugin-unicorn@53.0.0(eslint@9.6.0): + eslint-plugin-unicorn@54.0.0(eslint@9.6.0): dependencies: '@babel/helper-validator-identifier': 7.24.7 '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) @@ -13701,7 +14781,7 @@ snapshots: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.4 + optionator: 0.9.3 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: @@ -13928,6 +15008,8 @@ snapshots: fast-safe-stringify@2.1.1: {} + fast-uri@3.0.1: {} + fastest-levenshtein@1.0.16: {} fastestsmallesttextencoderdecoder@1.0.22: {} @@ -14093,7 +15175,7 @@ snapshots: tabbable: 6.2.0 follow-redirects@1.15.6(debug@4.3.5): - dependencies: + optionalDependencies: debug: 4.3.5(supports-color@8.1.1) font-awesome@4.7.0: {} @@ -14475,12 +15557,13 @@ snapshots: http-proxy-middleware@2.0.6(@types/express@4.17.21): dependencies: - '@types/express': 4.17.21 '@types/http-proxy': 1.17.14 http-proxy: 1.18.1 is-glob: 4.0.3 is-plain-obj: 3.0.0 micromatch: 4.0.7 + optionalDependencies: + '@types/express': 4.17.21 transitivePeerDependencies: - debug @@ -14905,7 +15988,6 @@ snapshots: '@babel/core': 7.24.7 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.8 babel-jest: 29.7.0(@babel/core@7.24.7) chalk: 4.1.2 ci-info: 3.9.0 @@ -14925,6 +16007,8 @@ snapshots: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.14.2 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -14975,7 +16059,7 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - jest-image-snapshot@4.2.0(jest@29.7.0): + jest-image-snapshot@4.2.0(jest@29.7.0(@types/node@20.14.2)): dependencies: chalk: 1.1.3 get-stdin: 5.0.1 @@ -15019,7 +16103,7 @@ snapshots: jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - dependencies: + optionalDependencies: jest-resolve: 29.7.0 jest-regex-util@29.6.3: {} @@ -15416,13 +16500,14 @@ snapshots: dependencies: cli-truncate: 2.1.0 colorette: 2.0.20 - enquirer: 2.4.1 log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.4.1 rxjs: 7.8.1 through: 2.3.8 wrap-ansi: 7.0.0 + optionalDependencies: + enquirer: 2.4.1 listr2@8.2.3: dependencies: @@ -15565,6 +16650,8 @@ snapshots: markdown-table@3.0.3: {} + marked@13.0.2: {} + marked@4.3.0: {} mdast-builder@1.1.1: @@ -16032,8 +17119,9 @@ snapshots: node-fetch@2.6.7(encoding@0.1.13): dependencies: - encoding: 0.1.13 whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 node-fetch@3.3.1: dependencies: @@ -16164,14 +17252,14 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 - optionator@0.9.4: + optionator@0.9.3: dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - word-wrap: 1.2.5 ospath@1.2.2: {} @@ -16272,9 +17360,9 @@ snapshots: is-decimal: 1.0.4 is-hexadecimal: 1.0.4 - parse-imports@2.1.0: + parse-imports@2.1.1: dependencies: - es-module-lexer: 1.5.4 + es-module-lexer: 1.5.3 slashes: 3.0.12 parse-json@5.2.0: @@ -16440,8 +17528,9 @@ snapshots: postcss-load-config@4.0.2(postcss@8.4.38): dependencies: lilconfig: 3.1.2 - postcss: 8.4.38 yaml: 2.4.5 + optionalDependencies: + postcss: 8.4.38 postcss-nested@6.0.1(postcss@8.4.38): dependencies: @@ -16771,12 +17860,14 @@ snapshots: robust-predicates@3.0.2: {} - rollup-plugin-visualizer@5.12.0: + rollup-plugin-visualizer@5.12.0(rollup@4.18.0): dependencies: open: 8.4.2 picomatch: 2.3.1 source-map: 0.7.4 yargs: 17.7.2 + optionalDependencies: + rollup: 4.18.0 rollup@2.79.1: optionalDependencies: @@ -16890,6 +17981,8 @@ snapshots: semver@7.6.2: {} + semver@7.6.3: {} + send@0.18.0: dependencies: debug: 2.6.9 @@ -17417,20 +18510,39 @@ snapshots: ansi-escapes: 4.3.2 iterm2-version: 4.2.0 - terser-webpack-plugin@5.3.10(esbuild@0.21.5)(webpack@5.92.1): + terser-webpack-plugin@5.3.10(esbuild@0.21.5)(webpack@5.92.0(esbuild@0.21.5)(webpack-cli@4.10.0)): dependencies: '@jridgewell/trace-mapping': 0.3.25 - esbuild: 0.21.5 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.92.1(esbuild@0.21.5)(webpack-cli@4.10.0) + webpack: 5.92.0(esbuild@0.21.5)(webpack-cli@4.10.0) + optionalDependencies: + esbuild: 0.21.5 + + terser-webpack-plugin@5.3.10(esbuild@0.21.5)(webpack@5.92.0(esbuild@0.21.5)): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.31.1 + webpack: 5.92.0(esbuild@0.21.5) + optionalDependencies: + esbuild: 0.21.5 terser@5.31.1: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.12.0 + acorn: 8.12.1 + commander: 2.20.3 + source-map-support: 0.5.21 + + terser@5.31.3: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 @@ -17598,7 +18710,7 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typedoc-plugin-markdown@3.17.1(typedoc@0.25.13): + typedoc-plugin-markdown@3.17.1(typedoc@0.25.13(typescript@5.4.5)): dependencies: handlebars: 4.7.8 typedoc: 0.25.13(typescript@5.4.5) @@ -17611,11 +18723,12 @@ snapshots: shiki: 0.14.7 typescript: 5.4.5 - typescript-eslint@8.0.0-alpha.38(eslint@9.6.0)(typescript@5.4.5): + typescript-eslint@8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5): dependencies: - '@typescript-eslint/eslint-plugin': 8.0.0-alpha.38(@typescript-eslint/parser@8.0.0-alpha.38)(eslint@9.6.0)(typescript@5.4.5) - '@typescript-eslint/parser': 8.0.0-alpha.38(eslint@9.6.0)(typescript@5.4.5) - '@typescript-eslint/utils': 8.0.0-alpha.38(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 8.0.0-alpha.44(@typescript-eslint/parser@8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5))(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/parser': 8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/utils': 8.0.0-alpha.44(eslint@9.6.0)(typescript@5.4.5) + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - eslint @@ -17718,9 +18831,9 @@ snapshots: universalify@2.0.1: {} - unocss@0.59.4(postcss@8.4.38)(rollup@2.79.1)(vite@5.3.1): + unocss@0.59.4(postcss@8.4.38)(rollup@2.79.1)(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3)): dependencies: - '@unocss/astro': 0.59.4(rollup@2.79.1)(vite@5.3.1) + '@unocss/astro': 0.59.4(rollup@2.79.1)(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3)) '@unocss/cli': 0.59.4(rollup@2.79.1) '@unocss/core': 0.59.4 '@unocss/extractor-arbitrary-variants': 0.59.4 @@ -17739,8 +18852,9 @@ snapshots: '@unocss/transformer-compile-class': 0.59.4 '@unocss/transformer-directives': 0.59.4 '@unocss/transformer-variant-group': 0.59.4 - '@unocss/vite': 0.59.4(rollup@2.79.1)(vite@5.3.1) - vite: 5.3.1(@types/node@20.14.8) + '@unocss/vite': 0.59.4(rollup@2.79.1)(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3)) + optionalDependencies: + vite: 5.3.0(@types/node@20.14.2)(terser@5.31.3) transitivePeerDependencies: - postcss - rollup @@ -17748,7 +18862,7 @@ snapshots: unpipe@1.0.0: {} - unplugin-vue-components@0.26.0(rollup@2.79.1)(vue@3.4.30): + unplugin-vue-components@0.26.0(@babel/parser@7.24.8)(rollup@2.79.1)(vue@3.4.27(typescript@5.4.5)): dependencies: '@antfu/utils': 0.7.8 '@rollup/pluginutils': 5.1.0(rollup@2.79.1) @@ -17760,7 +18874,9 @@ snapshots: minimatch: 9.0.4 resolve: 1.22.8 unplugin: 1.10.1 - vue: 3.4.30(typescript@5.4.5) + vue: 3.4.27(typescript@5.4.5) + optionalDependencies: + '@babel/parser': 7.24.8 transitivePeerDependencies: - rollup - supports-color @@ -17829,13 +18945,13 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-node@1.6.0(@types/node@20.14.8): + vite-node@1.6.0(@types/node@20.14.2)(terser@5.31.3): dependencies: cac: 6.7.14 debug: 4.3.5(supports-color@8.1.1) pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.3.1(@types/node@20.14.8) + vite: 5.3.0(@types/node@20.14.2)(terser@5.31.3) transitivePeerDependencies: - '@types/node' - less @@ -17846,7 +18962,7 @@ snapshots: - supports-color - terser - vite-plugin-istanbul@6.0.2(vite@5.3.1): + vite-plugin-istanbul@6.0.2(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3)): dependencies: '@istanbuljs/load-nyc-config': 1.1.0 espree: 10.1.0 @@ -17854,58 +18970,60 @@ snapshots: picocolors: 1.0.1 source-map: 0.7.4 test-exclude: 6.0.0 - vite: 5.3.1(@types/node@20.14.8) + vite: 5.3.0(@types/node@20.14.2)(terser@5.31.3) transitivePeerDependencies: - supports-color - vite-plugin-pwa@0.19.8(vite@5.3.1)(workbox-build@7.1.1)(workbox-window@7.1.0): + vite-plugin-pwa@0.19.8(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.1.0): dependencies: debug: 4.3.5(supports-color@8.1.1) fast-glob: 3.3.2 pretty-bytes: 6.1.1 - vite: 5.3.1(@types/node@20.14.8) - workbox-build: 7.1.1 + vite: 5.3.0(@types/node@20.14.2)(terser@5.31.3) + workbox-build: 7.1.1(@types/babel__core@7.20.5) workbox-window: 7.1.0 transitivePeerDependencies: - supports-color - vite@5.3.1(@types/node@20.14.8): + vite@5.3.0(@types/node@20.14.2)(terser@5.31.3): dependencies: - '@types/node': 20.14.8 esbuild: 0.21.5 postcss: 8.4.38 rollup: 4.18.0 optionalDependencies: + '@types/node': 20.14.2 fsevents: 2.3.3 + terser: 5.31.3 - vitepress-plugin-search@1.0.4-alpha.22(flexsearch@0.7.43)(vitepress@1.1.4)(vue@3.4.30): + vitepress-plugin-search@1.0.4-alpha.22(flexsearch@0.7.43)(vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.14.2)(axios@1.7.2)(postcss@8.4.38)(search-insights@2.14.0)(terser@5.31.3)(typescript@5.4.5))(vue@3.4.27(typescript@5.4.5)): dependencies: '@types/flexsearch': 0.7.6 '@types/markdown-it': 12.2.3 flexsearch: 0.7.43 glob-to-regexp: 0.4.1 markdown-it: 13.0.2 - vitepress: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.14.8)(postcss@8.4.38)(search-insights@2.14.0)(typescript@5.4.5) - vue: 3.4.30(typescript@5.4.5) + vitepress: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.14.2)(axios@1.7.2)(postcss@8.4.38)(search-insights@2.14.0)(terser@5.31.3)(typescript@5.4.5) + vue: 3.4.27(typescript@5.4.5) - vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.14.8)(postcss@8.4.38)(search-insights@2.14.0)(typescript@5.4.5): + vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.14.2)(axios@1.7.2)(postcss@8.4.38)(search-insights@2.14.0)(terser@5.31.3)(typescript@5.4.5): dependencies: '@docsearch/css': 3.6.0 '@docsearch/js': 3.6.0(@algolia/client-search@4.23.3)(search-insights@2.14.0) '@shikijs/core': 1.9.0 '@shikijs/transformers': 1.9.0 '@types/markdown-it': 14.1.1 - '@vitejs/plugin-vue': 5.0.5(vite@5.3.1)(vue@3.4.30) - '@vue/devtools-api': 7.3.4 - '@vueuse/core': 10.11.0(vue@3.4.30) - '@vueuse/integrations': 10.11.0(focus-trap@7.5.4)(vue@3.4.30) + '@vitejs/plugin-vue': 5.0.5(vite@5.3.0(@types/node@20.14.2)(terser@5.31.3))(vue@3.4.27(typescript@5.4.5)) + '@vue/devtools-api': 7.2.1(vue@3.4.27(typescript@5.4.5)) + '@vueuse/core': 10.11.0(vue@3.4.27(typescript@5.4.5)) + '@vueuse/integrations': 10.11.0(axios@1.7.2)(focus-trap@7.5.4)(vue@3.4.27(typescript@5.4.5)) focus-trap: 7.5.4 mark.js: 8.11.1 minisearch: 6.3.0 + shiki: 1.6.4 + vite: 5.3.0(@types/node@20.14.2)(terser@5.31.3) + vue: 3.4.27(typescript@5.4.5) + optionalDependencies: postcss: 8.4.38 - shiki: 1.9.0 - vite: 5.3.1(@types/node@20.14.8) - vue: 3.4.30(typescript@5.4.5) transitivePeerDependencies: - '@algolia/client-search' - '@types/node' @@ -17933,20 +19051,17 @@ snapshots: - typescript - universal-cookie - vitest@1.6.0(@types/node@20.14.8)(@vitest/ui@1.6.0)(jsdom@24.1.0): + vitest@1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(terser@5.31.3): dependencies: - '@types/node': 20.14.8 '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 '@vitest/snapshot': 1.6.0 '@vitest/spy': 1.6.0 - '@vitest/ui': 1.6.0(vitest@1.6.0) '@vitest/utils': 1.6.0 acorn-walk: 8.3.3 chai: 4.4.1 debug: 4.3.5(supports-color@8.1.1) execa: 8.0.1 - jsdom: 24.1.0 local-pkg: 0.5.0 magic-string: 0.30.10 pathe: 1.1.2 @@ -17955,9 +19070,13 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.3.1(@types/node@20.14.8) - vite-node: 1.6.0(@types/node@20.14.8) + vite: 5.3.0(@types/node@20.14.2)(terser@5.31.3) + vite-node: 1.6.0(@types/node@20.14.2)(terser@5.31.3) why-is-node-running: 2.2.2 + optionalDependencies: + '@types/node': 20.14.2 + '@vitest/ui': 1.6.0(vitest@1.6.0) + jsdom: 24.1.0 transitivePeerDependencies: - less - lightningcss @@ -17998,24 +19117,21 @@ snapshots: vscode-uri@3.0.8: {} - vue-demi@0.13.11(vue@3.4.30): + vue-demi@0.14.8(vue@3.4.27(typescript@5.4.5)): dependencies: vue: 3.4.30(typescript@5.4.5) - vue-demi@0.14.8(vue@3.4.30): + vue@3.4.27(typescript@5.4.5): dependencies: - vue: 3.4.30(typescript@5.4.5) - - vue@3.4.30(typescript@5.4.5): - dependencies: - '@vue/compiler-dom': 3.4.30 - '@vue/compiler-sfc': 3.4.30 - '@vue/runtime-dom': 3.4.30 - '@vue/server-renderer': 3.4.30(vue@3.4.30) - '@vue/shared': 3.4.30 + '@vue/compiler-dom': 3.4.27 + '@vue/compiler-sfc': 3.4.27 + '@vue/runtime-dom': 3.4.27 + '@vue/server-renderer': 3.4.27(vue@3.4.27(typescript@5.4.5)) + '@vue/shared': 3.4.27 + optionalDependencies: typescript: 5.4.5 - vuex@4.1.0(vue@3.4.30): + vuex@4.1.0(vue@3.4.27(typescript@5.4.5)): dependencies: '@vue/devtools-api': 6.6.3 vue: 3.4.30(typescript@5.4.5) @@ -18072,9 +19188,9 @@ snapshots: webpack-cli@4.10.0(webpack-dev-server@4.15.2)(webpack@5.92.1): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.92.1) - '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0) - '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0)(webpack-dev-server@4.15.2) + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0(webpack-dev-server@4.15.2)(webpack@5.92.0))(webpack@5.92.0(esbuild@0.21.5)(webpack-cli@4.10.0)) + '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0(webpack-dev-server@4.15.2)(webpack@5.92.0)) + '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0(webpack-dev-server@4.15.2)(webpack@5.92.0))(webpack-dev-server@4.15.2(webpack-cli@4.10.0)(webpack@5.92.0)) colorette: 2.0.20 commander: 7.2.0 cross-spawn: 7.0.3 @@ -18082,11 +19198,12 @@ snapshots: import-local: 3.1.0 interpret: 2.2.0 rechoir: 0.7.1 - webpack: 5.92.1(esbuild@0.21.5)(webpack-cli@4.10.0) - webpack-dev-server: 4.15.2(webpack-cli@4.10.0)(webpack@5.92.1) + webpack: 5.92.0(esbuild@0.21.5)(webpack-cli@4.10.0) webpack-merge: 5.10.0 + optionalDependencies: + webpack-dev-server: 4.15.2(webpack-cli@4.10.0)(webpack@5.92.0) - webpack-dev-middleware@5.3.4(webpack@5.92.1): + webpack-dev-middleware@5.3.4(webpack@5.92.0(esbuild@0.21.5)(webpack-cli@4.10.0)): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -18125,10 +19242,11 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.92.1(esbuild@0.21.5)(webpack-cli@4.10.0) - webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.92.1) - webpack-dev-middleware: 5.3.4(webpack@5.92.1) - ws: 8.17.1 + webpack-dev-middleware: 5.3.4(webpack@5.92.0(esbuild@0.21.5)(webpack-cli@4.10.0)) + ws: 8.17.0 + optionalDependencies: + webpack: 5.92.0(esbuild@0.21.5)(webpack-cli@4.10.0) + webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.92.0) transitivePeerDependencies: - bufferutil - debug @@ -18145,7 +19263,38 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.92.1(esbuild@0.21.5)(webpack-cli@4.10.0): + webpack@5.92.0(esbuild@0.21.5): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.12.0 + acorn-import-attributes: 1.9.5(acorn@8.12.0) + browserslist: 4.23.1 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.17.0 + es-module-lexer: 1.5.3 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(esbuild@0.21.5)(webpack@5.92.0(esbuild@0.21.5)) + watchpack: 2.4.1 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + webpack@5.92.0(esbuild@0.21.5)(webpack-cli@4.10.0): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -18168,10 +19317,11 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.21.5)(webpack@5.92.1) + terser-webpack-plugin: 5.3.10(esbuild@0.21.5)(webpack@5.92.0(esbuild@0.21.5)(webpack-cli@4.10.0)) watchpack: 2.4.1 - webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.92.1) webpack-sources: 3.2.3 + optionalDependencies: + webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.92.0) transitivePeerDependencies: - '@swc/core' - esbuild @@ -18244,8 +19394,6 @@ snapshots: wildcard@2.0.1: {} - word-wrap@1.2.5: {} - wordwrap@1.0.0: {} workbox-background-sync@7.1.0: @@ -18257,18 +19405,18 @@ snapshots: dependencies: workbox-core: 7.1.0 - workbox-build@7.1.1: + workbox-build@7.1.1(@types/babel__core@7.20.5): dependencies: - '@apideck/better-ajv-errors': 0.3.6(ajv@8.16.0) - '@babel/core': 7.24.7 - '@babel/preset-env': 7.24.7(@babel/core@7.24.7) + '@apideck/better-ajv-errors': 0.3.6(ajv@8.17.1) + '@babel/core': 7.24.9 + '@babel/preset-env': 7.24.8(@babel/core@7.24.9) '@babel/runtime': 7.24.7 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.24.7)(rollup@2.79.1) + '@rollup/plugin-babel': 5.3.1(@babel/core@7.24.9)(@types/babel__core@7.20.5)(rollup@2.79.1) '@rollup/plugin-node-resolve': 15.2.3(rollup@2.79.1) '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) '@rollup/plugin-terser': 0.4.4(rollup@2.79.1) '@surma/rollup-plugin-off-main-thread': 2.2.3 - ajv: 8.16.0 + ajv: 8.17.1 common-tags: 1.8.2 fast-json-stable-stringify: 2.1.0 fs-extra: 9.1.0 diff --git a/scripts/editor.bash b/scripts/editor.bash index 381012d30..d04246cc7 100755 --- a/scripts/editor.bash +++ b/scripts/editor.bash @@ -19,10 +19,12 @@ pnpm build:esbuild pnpm build:types # Clone the Mermaid Live Editor repository -rm -rf mermaid-live-editor -git clone --single-branch https://github.com/mermaid-js/mermaid-live-editor.git - +if [ ! -d "mermaid-live-editor" ]; then + git clone --single-branch https://github.com/mermaid-js/mermaid-live-editor.git +fi cd mermaid-live-editor +git clean -xdf +rm -rf docs/ # We have to use npm instead of yarn because it causes trouble in netlify # Install dependencies diff --git a/scripts/size.ts b/scripts/size.ts index 2190fd9ef..1c486197b 100644 --- a/scripts/size.ts +++ b/scripts/size.ts @@ -25,6 +25,7 @@ const formatBytes = (bytes: number): string => { if (bytes == 0) { return '0 Bytes'; } + bytes = Math.abs(bytes); const base = 1024; const decimals = 2; const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; diff --git a/vite.config.ts b/vite.config.ts index dc59a6aba..ed0ba10f7 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -9,7 +9,7 @@ export default defineConfig({ extensions: ['.js'], alias: { // Define your alias here - '$root/*': path.resolve(__dirname, 'src/*'), + $root: path.resolve(__dirname, 'packages/mermaid/src'), }, }, plugins: [