diff --git a/.github/pr-labeler.yml b/.github/pr-labeler.yml
index 077cc568b..0bbd8db66 100644
--- a/.github/pr-labeler.yml
+++ b/.github/pr-labeler.yml
@@ -1,3 +1,4 @@
-'Type: Bug / Error': 'bug/*'
-'Type: Enhancement': 'feature/*'
-'Type: Other': 'other/*'
+'Type: Bug / Error': ['bug/*', fix/*]
+'Type: Enhancement': ['feature/*', 'feat/*']
+'Type: Other': ['other/*', 'chore/*', 'test/*', 'refactor/*']
+'Area: Documentation': ['docs/*']
diff --git a/.github/workflows/pr-labeler-config-validator.yml b/.github/workflows/pr-labeler-config-validator.yml
index af5c477d6..ff5d8d0a1 100644
--- a/.github/workflows/pr-labeler-config-validator.yml
+++ b/.github/workflows/pr-labeler-config-validator.yml
@@ -1,11 +1,15 @@
name: Validate PR Labeler Configuration
on:
- push: {}
+ push:
+ paths:
+ - .github/workflows/pr-labeler-config-validator.yml
+ - .github/workflows/pr-labeler.yml
+ - .github/pr-labeler.yml
pull_request:
- types:
- - opened
- - synchronize
- - ready_for_review
+ paths:
+ - .github/workflows/pr-labeler-config-validator.yml
+ - .github/workflows/pr-labeler.yml
+ - .github/pr-labeler.yml
jobs:
pr-labeler:
diff --git a/cypress/integration/rendering/classDiagram.spec.js b/cypress/integration/rendering/classDiagram.spec.js
index 427b4cf0b..dd79303b8 100644
--- a/cypress/integration/rendering/classDiagram.spec.js
+++ b/cypress/integration/rendering/classDiagram.spec.js
@@ -423,4 +423,82 @@ describe('Class diagram', () => {
);
cy.get('svg');
});
+
+ it('should render class diagram with newlines in title', () => {
+ imgSnapshotTest(`
+ classDiagram
+ Animal <|-- \`Du\nck\`
+ Animal : +int age
+ Animal : +String gender
+ Animal: +isMammal()
+ Animal: +mate()
+ class \`Du\nck\` {
+ +String beakColor
+ +String featherColor
+ +swim()
+ +quack()
+ }
+ `);
+ cy.get('svg');
+ });
+
+ it('should render class diagram with many newlines in title', () => {
+ imgSnapshotTest(`
+ classDiagram
+ class \`This\nTitle\nHas\nMany\nNewlines\` {
+ +String Also
+ -Stirng Many
+ #int Members
+ +And()
+ -Many()
+ #Methods()
+ }
+ `);
+ });
+
+ it('should render with newlines in title and an annotation', () => {
+ imgSnapshotTest(`
+ classDiagram
+ class \`This\nTitle\nHas\nMany\nNewlines\` {
+ +String Also
+ -Stirng Many
+ #int Members
+ +And()
+ -Many()
+ #Methods()
+ }
+ <<Interface>> \`This\nTitle\nHas\nMany\nNewlines\`
+ `);
+ });
+
+ it('should handle newline title in namespace', () => {
+ imgSnapshotTest(`
+ classDiagram
+ namespace testingNamespace {
+ class \`This\nTitle\nHas\nMany\nNewlines\` {
+ +String Also
+ -Stirng Many
+ #int Members
+ +And()
+ -Many()
+ #Methods()
+ }
+ }
+ `);
+ });
+
+ it('should handle newline in string label', () => {
+ imgSnapshotTest(`
+ classDiagram
+ class A["This has\na newline!"] {
+ +String boop
+ -Int beep
+ #double bop
+ }
+
+ class B["This title also has\na newline"]
+ B : +with(more)
+ B : -methods()
+ `);
+ });
});
diff --git a/cypress/integration/rendering/erDiagram.spec.js b/cypress/integration/rendering/erDiagram.spec.js
index 0c6eaa838..c125d6f74 100644
--- a/cypress/integration/rendering/erDiagram.spec.js
+++ b/cypress/integration/rendering/erDiagram.spec.js
@@ -200,6 +200,27 @@ describe('Entity Relationship Diagram', () => {
);
});
+ it('should render entities with attributes that begin with asterisk', () => {
+ imgSnapshotTest(
+ `
+ erDiagram
+ BOOK {
+ int *id
+ string name
+ varchar(99) summary
+ }
+ BOOK }o..o{ STORE : soldBy
+ STORE {
+ int *id
+ string name
+ varchar(50) address
+ }
+ `,
+ { loglevel: 1 }
+ );
+ cy.get('svg');
+ });
+
it('should render entities with keys', () => {
renderGraph(
`
diff --git a/cypress/integration/rendering/flowchart-v2.spec.js b/cypress/integration/rendering/flowchart-v2.spec.js
index 305c55b21..391f6c90e 100644
--- a/cypress/integration/rendering/flowchart-v2.spec.js
+++ b/cypress/integration/rendering/flowchart-v2.spec.js
@@ -695,6 +695,15 @@ A ~~~ B
{}
);
});
+
+ it('4439: Should render the graph even if some images are missing', () => {
+ imgSnapshotTest(
+ `flowchart TD
+ B[]
+ B-->C[]`,
+ {}
+ );
+ });
describe('Markdown strings flowchart (#4220)', () => {
describe('html labels', () => {
it('With styling and classes', () => {
diff --git a/cypress/integration/rendering/gantt.spec.js b/cypress/integration/rendering/gantt.spec.js
index cb65f73b0..0005e3e76 100644
--- a/cypress/integration/rendering/gantt.spec.js
+++ b/cypress/integration/rendering/gantt.spec.js
@@ -414,6 +414,28 @@ describe('Gantt diagram', () => {
);
});
+ it('should render a gantt diagram with tick is 1 week, with the day starting on monday', () => {
+ imgSnapshotTest(
+ `
+ gantt
+ title A Gantt Diagram
+ dateFormat YYYY-MM-DD
+ axisFormat %m-%d
+ tickInterval 1week
+ weekday monday
+ excludes weekends
+
+ section Section
+ A task : a1, 2022-10-01, 30d
+ Another task : after a1, 20d
+ section Another
+ Task in sec : 2022-10-20, 12d
+ another task : 24d
+ `,
+ {}
+ );
+ });
+
it('should render a gantt diagram with tick is 1 month', () => {
imgSnapshotTest(
`
diff --git a/docker-compose.yml b/docker-compose.yml
index c881d0473..1037b5102 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -17,7 +17,7 @@ services:
- 9000:9000
- 3333:3333
cypress:
- image: cypress/included:12.16.0
+ image: cypress/included:12.17.1
stdin_open: true
tty: true
working_dir: /mermaid
diff --git a/docs/syntax/c4c.md b/docs/syntax/c4c.md
index dd5fa21b0..34b3b392a 100644
--- a/docs/syntax/c4c.md
+++ b/docs/syntax/c4c.md
@@ -123,10 +123,10 @@ The layout does not use a fully automated layout algorithm. The position of shap
The number of shapes per row and the number of boundaries can be adjusted using UpdateLayoutConfig.
- Layout
-- - Lay_U, Lay_Up
-- - Lay_D, Lay_Down
-- - Lay_L, Lay_Left
-- - Lay_R, Lay_Right
+ - Lay_U, Lay_Up
+ - Lay_D, Lay_Down
+ - Lay_L, Lay_Left
+ - Lay_R, Lay_Right
The following unfinished features are not supported in the short term.
@@ -140,111 +140,70 @@ The following unfinished features are not supported in the short term.
- [x] System Context
-- - [x] Person(alias, label, ?descr, ?sprite, ?tags, $link)
-
-- - [x] Person_Ext
-
-- - [x] System(alias, label, ?descr, ?sprite, ?tags, $link)
-
-- - [x] SystemDb
-
-- - [x] SystemQueue
-
-- - [x] System_Ext
-
-- - [x] SystemDb_Ext
-
-- - [x] SystemQueue_Ext
-
-- - [x] Boundary(alias, label, ?type, ?tags, $link)
-
-- - [x] Enterprise_Boundary(alias, label, ?tags, $link)
-
-- - [x] System_Boundary
+ - [x] Person(alias, label, ?descr, ?sprite, ?tags, $link)
+ - [x] Person_Ext
+ - [x] System(alias, label, ?descr, ?sprite, ?tags, $link)
+ - [x] SystemDb
+ - [x] SystemQueue
+ - [x] System_Ext
+ - [x] SystemDb_Ext
+ - [x] SystemQueue_Ext
+ - [x] Boundary(alias, label, ?type, ?tags, $link)
+ - [x] Enterprise_Boundary(alias, label, ?tags, $link)
+ - [x] System_Boundary
- [x] Container diagram
-- - [x] Container(alias, label, ?techn, ?descr, ?sprite, ?tags, $link)
-
-- - [x] ContainerDb
-
-- - [x] ContainerQueue
-
-- - [x] Container_Ext
-
-- - [x] ContainerDb_Ext
-
-- - [x] ContainerQueue_Ext
-
-- - [x] Container_Boundary(alias, label, ?tags, $link)
+ - [x] Container(alias, label, ?techn, ?descr, ?sprite, ?tags, $link)
+ - [x] ContainerDb
+ - [x] ContainerQueue
+ - [x] Container_Ext
+ - [x] ContainerDb_Ext
+ - [x] ContainerQueue_Ext
+ - [x] Container_Boundary(alias, label, ?tags, $link)
- [x] Component diagram
-- - [x] Component(alias, label, ?techn, ?descr, ?sprite, ?tags, $link)
-
-- - [x] ComponentDb
-
-- - [x] ComponentQueue
-
-- - [x] Component_Ext
-
-- - [x] ComponentDb_Ext
-
-- - [x] ComponentQueue_Ext
+ - [x] Component(alias, label, ?techn, ?descr, ?sprite, ?tags, $link)
+ - [x] ComponentDb
+ - [x] ComponentQueue
+ - [x] Component_Ext
+ - [x] ComponentDb_Ext
+ - [x] ComponentQueue_Ext
- [x] Dynamic diagram
-- - [x] RelIndex(index, from, to, label, ?tags, $link)
+ - [x] RelIndex(index, from, to, label, ?tags, $link)
- [x] Deployment diagram
-- - [x] Deployment_Node(alias, label, ?type, ?descr, ?sprite, ?tags, $link)
-
-- - [x] Node(alias, label, ?type, ?descr, ?sprite, ?tags, $link): short name of Deployment_Node()
-
-- - [x] Node_L(alias, label, ?type, ?descr, ?sprite, ?tags, $link): left aligned Node()
-
-- - [x] Node_R(alias, label, ?type, ?descr, ?sprite, ?tags, $link): right aligned Node()
+ - [x] Deployment_Node(alias, label, ?type, ?descr, ?sprite, ?tags, $link)
+ - [x] Node(alias, label, ?type, ?descr, ?sprite, ?tags, $link): short name of Deployment_Node()
+ - [x] Node_L(alias, label, ?type, ?descr, ?sprite, ?tags, $link): left aligned Node()
+ - [x] Node_R(alias, label, ?type, ?descr, ?sprite, ?tags, $link): right aligned Node()
- [x] Relationship Types
-- - [x] Rel(from, to, label, ?techn, ?descr, ?sprite, ?tags, $link)
-
-- - [x] BiRel (bidirectional relationship)
-
-- - [x] Rel_U, Rel_Up
-
-- - [x] Rel_D, Rel_Down
-
-- - [x] Rel_L, Rel_Left
-
-- - [x] Rel_R, Rel_Right
-
-- - [x] Rel_Back
-
-- - [x] RelIndex \* Compatible with C4-Plantuml syntax, but ignores the index parameter. The sequence number is determined by the order in which the rel statements are written.
+ - [x] Rel(from, to, label, ?techn, ?descr, ?sprite, ?tags, $link)
+ - [x] BiRel (bidirectional relationship)
+ - [x] Rel_U, Rel_Up
+ - [x] Rel_D, Rel_Down
+ - [x] Rel_L, Rel_Left
+ - [x] Rel_R, Rel_Right
+ - [x] Rel_Back
+ - [x] RelIndex \* Compatible with C4-Plantuml syntax, but ignores the index parameter. The sequence number is determined by the order in which the rel statements are written.
- [ ] Custom tags/stereotypes support and skin param updates
-
-- - [ ] AddElementTag(tagStereo, ?bgColor, ?fontColor, ?borderColor, ?shadowing, ?shape, ?sprite, ?techn, ?legendText, ?legendSprite): Introduces a new element tag. The styles of the tagged elements are updated and the tag is displayed in the calculated legend.
-
-- - [ ] AddRelTag(tagStereo, ?textColor, ?lineColor, ?lineStyle, ?sprite, ?techn, ?legendText, ?legendSprite): Introduces a new Relationship tag. The styles of the tagged relationships are updated and the tag is displayed in the calculated legend.
-
-- - [x] UpdateElementStyle(elementName, ?bgColor, ?fontColor, ?borderColor, ?shadowing, ?shape, ?sprite, ?techn, ?legendText, ?legendSprite): This call updates the default style of the elements (component, ...) and creates no additional legend entry.
-
-- - [x] UpdateRelStyle(from, to, ?textColor, ?lineColor, ?offsetX, ?offsetY): This call updates the default relationship colors and creates no additional legend entry. Two new parameters, offsetX and offsetY, are added to set the offset of the original position of the text.
-
-- - [ ] RoundedBoxShape(): This call returns the name of the rounded box shape and can be used as ?shape argument.
-
-- - [ ] EightSidedShape(): This call returns the name of the eight sided shape and can be used as ?shape argument.
-
-- - [ ] DashedLine(): This call returns the name of the dashed line and can be used as ?lineStyle argument.
-
-- - [ ] DottedLine(): This call returns the name of the dotted line and can be used as ?lineStyle argument.
-
-- - [ ] BoldLine(): This call returns the name of the bold line and can be used as ?lineStyle argument.
-
-- - [x] UpdateLayoutConfig(?c4ShapeInRow, ?c4BoundaryInRow): New. This call updates the default c4ShapeInRow(4) and c4BoundaryInRow(2).
+ - [ ] AddElementTag(tagStereo, ?bgColor, ?fontColor, ?borderColor, ?shadowing, ?shape, ?sprite, ?techn, ?legendText, ?legendSprite): Introduces a new element tag. The styles of the tagged elements are updated and the tag is displayed in the calculated legend.
+ - [ ] AddRelTag(tagStereo, ?textColor, ?lineColor, ?lineStyle, ?sprite, ?techn, ?legendText, ?legendSprite): Introduces a new Relationship tag. The styles of the tagged relationships are updated and the tag is displayed in the calculated legend.
+ - [x] UpdateElementStyle(elementName, ?bgColor, ?fontColor, ?borderColor, ?shadowing, ?shape, ?sprite, ?techn, ?legendText, ?legendSprite): This call updates the default style of the elements (component, ...) and creates no additional legend entry.
+ - [x] UpdateRelStyle(from, to, ?textColor, ?lineColor, ?offsetX, ?offsetY): This call updates the default relationship colors and creates no additional legend entry. Two new parameters, offsetX and offsetY, are added to set the offset of the original position of the text.
+ - [ ] RoundedBoxShape(): This call returns the name of the rounded box shape and can be used as ?shape argument.
+ - [ ] EightSidedShape(): This call returns the name of the eight sided shape and can be used as ?shape argument.
+ - [ ] DashedLine(): This call returns the name of the dashed line and can be used as ?lineStyle argument.
+ - [ ] DottedLine(): This call returns the name of the dotted line and can be used as ?lineStyle argument.
+ - [ ] BoldLine(): This call returns the name of the bold line and can be used as ?lineStyle argument.
+ - [x] UpdateLayoutConfig(?c4ShapeInRow, ?c4BoundaryInRow): New. This call updates the default c4ShapeInRow(4) and c4BoundaryInRow(2).
There are two ways to assign parameters with question marks. One uses the non-named parameter assignment method in the order of the parameters, and the other uses the named parameter assignment method, where the name must start with a $ symbol.
diff --git a/docs/syntax/entityRelationshipDiagram.md b/docs/syntax/entityRelationshipDiagram.md
index 9fa5fa517..dd887b0ee 100644
--- a/docs/syntax/entityRelationshipDiagram.md
+++ b/docs/syntax/entityRelationshipDiagram.md
@@ -196,7 +196,7 @@ erDiagram
}
```
-The `type` and `name` values must begin with an alphabetic character and may contain digits, hyphens, underscores, parentheses and square brackets. Other than that, there are no restrictions, and there is no implicit set of valid data types.
+The `type` values must begin with an alphabetic character and may contain digits, hyphens, underscores, parentheses and square brackets. The `name` values follow a similar format to `type`, but may start with an asterisk as another option to indicate an attribute is a primary key. Other than that, there are no restrictions, and there is no implicit set of valid data types.
#### Attribute Keys and Comments
diff --git a/docs/syntax/gantt.md b/docs/syntax/gantt.md
index 8e64a268a..5cf584050 100644
--- a/docs/syntax/gantt.md
+++ b/docs/syntax/gantt.md
@@ -257,6 +257,20 @@ The pattern is:
More info in:
+Week-based `tickInterval`s start the week on sunday by default. If you wish to specify another weekday on which the `tickInterval` should start, use the `weekday` option:
+
+```mermaid-example
+gantt
+ tickInterval 1week
+ weekday monday
+```
+
+```mermaid
+gantt
+ tickInterval 1week
+ weekday monday
+```
+
## Output in compact mode
The compact mode allows you to display multiple tasks in the same row. Compact mode can be enabled for a gantt chart by setting the display mode of the graph via preceeding YAML settings.
diff --git a/package.json b/package.json
index e21e02d14..9cbdcdb1e 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
"version": "10.2.4",
"description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.",
"type": "module",
- "packageManager": "pnpm@8.6.5",
+ "packageManager": "pnpm@8.6.7",
"keywords": [
"diagram",
"markdown",
@@ -78,13 +78,12 @@
"@types/rollup-plugin-visualizer": "^4.2.1",
"@typescript-eslint/eslint-plugin": "^5.59.0",
"@typescript-eslint/parser": "^5.59.0",
- "@vitest/coverage-v8": "^0.32.2",
- "@vitest/spy": "^0.32.2",
- "@vitest/ui": "^0.32.2",
+ "@vitest/coverage-v8": "^0.33.0",
+ "@vitest/spy": "^0.33.0",
+ "@vitest/ui": "^0.33.0",
"ajv": "^8.12.0",
"concurrently": "^8.0.1",
"cors": "^2.8.5",
- "coveralls": "^3.1.1",
"cypress": "^12.10.0",
"cypress-image-snapshot": "^4.0.1",
"esbuild": "^0.18.0",
@@ -120,7 +119,7 @@
"typescript": "^5.1.3",
"vite": "^4.3.9",
"vite-plugin-istanbul": "^4.1.0",
- "vitest": "^0.32.2"
+ "vitest": "^0.33.0"
},
"volta": {
"node": "18.16.1"
diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json
index c2e0d9834..9a1f34676 100644
--- a/packages/mermaid/package.json
+++ b/packages/mermaid/package.json
@@ -67,7 +67,7 @@
"d3-sankey": "^0.12.3",
"dagre-d3-es": "7.0.10",
"dayjs": "^1.11.7",
- "dompurify": "3.0.4",
+ "dompurify": "3.0.5",
"elkjs": "^0.8.2",
"khroma": "^2.0.0",
"lodash-es": "^4.17.21",
@@ -96,7 +96,6 @@
"ajv": "^8.11.2",
"chokidar": "^3.5.3",
"concurrently": "^8.0.1",
- "coveralls": "^3.1.1",
"cpy-cli": "^4.2.0",
"cspell": "^6.31.1",
"csstree-validator": "^3.0.0",
diff --git a/packages/mermaid/src/config.type.ts b/packages/mermaid/src/config.type.ts
index 352181c86..df87e9c40 100644
--- a/packages/mermaid/src/config.type.ts
+++ b/packages/mermaid/src/config.type.ts
@@ -1063,6 +1063,11 @@ export interface GanttDiagramConfig extends BaseDiagramConfig {
*
*/
displayMode?: string | "compact";
+ /**
+ * On which day a week-based interval should start
+ *
+ */
+ weekday?: "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday";
}
/**
* The object containing configurations specific for sequence diagrams
diff --git a/packages/mermaid/src/dagre-wrapper/nodes.js b/packages/mermaid/src/dagre-wrapper/nodes.js
index 410703f6c..6c6733358 100644
--- a/packages/mermaid/src/dagre-wrapper/nodes.js
+++ b/packages/mermaid/src/dagre-wrapper/nodes.js
@@ -917,7 +917,9 @@ const class_box = (parent, node) => {
((-1 * maxHeight) / 2 + verticalPos + lineHeight / 2) +
')'
);
- verticalPos += classTitleBBox.height + rowPadding;
+ //get the height of the bounding box of each member if exists
+ const memberBBox = lbl?.getBBox();
+ verticalPos += (memberBBox?.height ?? 0) + rowPadding;
});
verticalPos += lineHeight;
@@ -935,7 +937,8 @@ const class_box = (parent, node) => {
'transform',
'translate( ' + -maxWidth / 2 + ', ' + ((-1 * maxHeight) / 2 + verticalPos) + ')'
);
- verticalPos += classTitleBBox.height + rowPadding;
+ const memberBBox = lbl?.getBBox();
+ verticalPos += (memberBBox?.height ?? 0) + rowPadding;
});
rect
diff --git a/packages/mermaid/src/dagre-wrapper/shapes/util.js b/packages/mermaid/src/dagre-wrapper/shapes/util.js
index 7ad412bdb..3eaedb4b9 100644
--- a/packages/mermaid/src/dagre-wrapper/shapes/util.js
+++ b/packages/mermaid/src/dagre-wrapper/shapes/util.js
@@ -66,8 +66,11 @@ export const labelHelper = async (parent, node, _classes, isNode) => {
await Promise.all(
[...images].map(
(img) =>
- new Promise((res) =>
- img.addEventListener('load', function () {
+ new Promise((res) => {
+ /**
+ *
+ */
+ function setupImage() {
img.style.display = 'flex';
img.style.flexDirection = 'column';
@@ -82,8 +85,15 @@ export const labelHelper = async (parent, node, _classes, isNode) => {
img.style.width = '100%';
}
res(img);
- })
- )
+ }
+ setTimeout(() => {
+ if (img.complete) {
+ setupImage();
+ }
+ });
+ img.addEventListener('error', setupImage);
+ img.addEventListener('load', setupImage);
+ })
)
);
}
diff --git a/packages/mermaid/src/diagrams/c4/parser/c4Container.spec.js b/packages/mermaid/src/diagrams/c4/parser/c4Container.spec.js
new file mode 100644
index 000000000..76dca3bc2
--- /dev/null
+++ b/packages/mermaid/src/diagrams/c4/parser/c4Container.spec.js
@@ -0,0 +1,135 @@
+import c4Db from '../c4Db.js';
+import c4 from './c4Diagram.jison';
+import { setConfig } from '../../../config.js';
+
+setConfig({
+ securityLevel: 'strict',
+});
+
+describe.each([
+ ['Container', 'container'],
+ ['ContainerDb', 'container_db'],
+ ['ContainerQueue', 'container_queue'],
+ ['Container_Ext', 'external_container'],
+ ['ContainerDb_Ext', 'external_container_db'],
+ ['ContainerQueue_Ext', 'external_container_queue'],
+])('parsing a C4 %s', function (macroName, elementName) {
+ beforeEach(function () {
+ c4.parser.yy = c4Db;
+ c4.parser.yy.clear();
+ });
+
+ it('should parse a C4 diagram with one Container correctly', function () {
+ c4.parser.parse(`C4Context
+title Container diagram for Internet Banking Container
+${macroName}(ContainerAA, "Internet Banking Container", "Technology", "Allows customers to view information about their bank accounts, and make payments.")`);
+
+ const yy = c4.parser.yy;
+
+ const shapes = yy.getC4ShapeArray();
+ expect(shapes.length).toBe(1);
+ const onlyShape = shapes[0];
+
+ expect(onlyShape).toEqual({
+ alias: 'ContainerAA',
+ descr: {
+ text: 'Allows customers to view information about their bank accounts, and make payments.',
+ },
+ label: {
+ text: 'Internet Banking Container',
+ },
+ link: undefined,
+ sprite: undefined,
+ tags: undefined,
+ parentBoundary: 'global',
+ typeC4Shape: {
+ text: elementName,
+ },
+ techn: {
+ text: 'Technology',
+ },
+ wrap: false,
+ });
+ });
+
+ it('should parse the alias', function () {
+ c4.parser.parse(`C4Context
+${macroName}(ContainerAA, "Internet Banking Container")`);
+
+ expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
+ alias: 'ContainerAA',
+ });
+ });
+
+ it('should parse the label', function () {
+ c4.parser.parse(`C4Context
+${macroName}(ContainerAA, "Internet Banking Container")`);
+
+ expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
+ label: {
+ text: 'Internet Banking Container',
+ },
+ });
+ });
+
+ it('should parse the technology', function () {
+ c4.parser.parse(`C4Context
+${macroName}(ContainerAA, "", "Java")`);
+
+ expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
+ techn: {
+ text: 'Java',
+ },
+ });
+ });
+
+ it('should parse the description', function () {
+ c4.parser.parse(`C4Context
+${macroName}(ContainerAA, "", "", "Allows customers to view information about their bank accounts, and make payments.")`);
+
+ expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
+ descr: {
+ text: 'Allows customers to view information about their bank accounts, and make payments.',
+ },
+ });
+ });
+
+ it('should parse a sprite', function () {
+ c4.parser.parse(`C4Context
+${macroName}(ContainerAA, $sprite="users")`);
+
+ expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
+ label: {
+ text: {
+ sprite: 'users',
+ },
+ },
+ });
+ });
+
+ it('should parse a link', function () {
+ c4.parser.parse(`C4Context
+${macroName}(ContainerAA, $link="https://github.com/mermaidjs")`);
+
+ expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
+ label: {
+ text: {
+ link: 'https://github.com/mermaidjs',
+ },
+ },
+ });
+ });
+
+ it('should parse tags', function () {
+ c4.parser.parse(`C4Context
+${macroName}(ContainerAA, $tags="tag1,tag2")`);
+
+ expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
+ label: {
+ text: {
+ tags: 'tag1,tag2',
+ },
+ },
+ });
+ });
+});
diff --git a/packages/mermaid/src/diagrams/c4/parser/c4Diagram.jison b/packages/mermaid/src/diagrams/c4/parser/c4Diagram.jison
index 03b851458..1dfa69ef1 100644
--- a/packages/mermaid/src/diagrams/c4/parser/c4Diagram.jison
+++ b/packages/mermaid/src/diagrams/c4/parser/c4Diagram.jison
@@ -150,27 +150,27 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multiline");}
"Node_R" { this.begin("node_r"); return 'NODE_R';}
-"Rel" { this.begin("rel"); return 'REL';}
-"BiRel" { this.begin("birel"); return 'BIREL';}
-"Rel_Up" { this.begin("rel_u"); return 'REL_U';}
-"Rel_U" { this.begin("rel_u"); return 'REL_U';}
-"Rel_Down" { this.begin("rel_d"); return 'REL_D';}
-"Rel_D" { this.begin("rel_d"); return 'REL_D';}
-"Rel_Left" { this.begin("rel_l"); return 'REL_L';}
-"Rel_L" { this.begin("rel_l"); return 'REL_L';}
-"Rel_Right" { this.begin("rel_r"); return 'REL_R';}
-"Rel_R" { this.begin("rel_r"); return 'REL_R';}
-"Rel_Back" { this.begin("rel_b"); return 'REL_B';}
-"RelIndex" { this.begin("rel_index"); return 'REL_INDEX';}
+"Rel" { this.begin("rel"); return 'REL';}
+"BiRel" { this.begin("birel"); return 'BIREL';}
+"Rel_Up" { this.begin("rel_u"); return 'REL_U';}
+"Rel_U" { this.begin("rel_u"); return 'REL_U';}
+"Rel_Down" { this.begin("rel_d"); return 'REL_D';}
+"Rel_D" { this.begin("rel_d"); return 'REL_D';}
+"Rel_Left" { this.begin("rel_l"); return 'REL_L';}
+"Rel_L" { this.begin("rel_l"); return 'REL_L';}
+"Rel_Right" { this.begin("rel_r"); return 'REL_R';}
+"Rel_R" { this.begin("rel_r"); return 'REL_R';}
+"Rel_Back" { this.begin("rel_b"); return 'REL_B';}
+"RelIndex" { this.begin("rel_index"); return 'REL_INDEX';}
-"UpdateElementStyle" { this.begin("update_el_style"); return 'UPDATE_EL_STYLE';}
-"UpdateRelStyle" { this.begin("update_rel_style"); return 'UPDATE_REL_STYLE';}
-"UpdateLayoutConfig" { this.begin("update_layout_config"); return 'UPDATE_LAYOUT_CONFIG';}
+"UpdateElementStyle" { this.begin("update_el_style"); return 'UPDATE_EL_STYLE';}
+"UpdateRelStyle" { this.begin("update_rel_style"); return 'UPDATE_REL_STYLE';}
+"UpdateLayoutConfig" { this.begin("update_layout_config"); return 'UPDATE_LAYOUT_CONFIG';}
-<> return "EOF_IN_STRUCT";
-[(][ ]*[,] { this.begin("attribute"); return "ATTRIBUTE_EMPTY";}
-[(] { this.begin("attribute"); }
-[)] { this.popState();this.popState();}
+<> return "EOF_IN_STRUCT";
+[(][ ]*[,] { this.begin("attribute"); return "ATTRIBUTE_EMPTY";}
+[(] { this.begin("attribute"); }
+[)] { this.popState();this.popState();}
",," { return 'ATTRIBUTE_EMPTY';}
"," { }
@@ -189,7 +189,7 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multiline");}
'{' { /* this.begin("lbrace"); */ return "LBRACE";}
'}' { /* this.popState(); */ return "RBRACE";}
-
+
[\s]+ return 'SPACE';
[\n\r]+ return 'EOL';
<> return 'EOF';
@@ -257,7 +257,7 @@ graphConfig
statements
: otherStatements
| diagramStatements
- | otherStatements diagramStatements
+ | otherStatements diagramStatements
;
otherStatements
@@ -268,10 +268,10 @@ otherStatements
otherStatement
: title {yy.setTitle($1.substring(6));$$=$1.substring(6);}
- | accDescription {yy.setAccDescription($1.substring(15));$$=$1.substring(15);}
+ | accDescription {yy.setAccDescription($1.substring(15));$$=$1.substring(15);}
| acc_title acc_title_value { $$=$2.trim();yy.setTitle($$); }
| acc_descr acc_descr_value { $$=$2.trim();yy.setAccDescription($$); }
- | acc_descr_multiline_value { $$=$1.trim();yy.setAccDescription($$); }
+ | acc_descr_multiline_value { $$=$1.trim();yy.setAccDescription($$); }
;
boundaryStatement
@@ -301,7 +301,7 @@ boundaryStopStatement
diagramStatements
: diagramStatement
| diagramStatement NEWLINE
- | diagramStatement NEWLINE statements
+ | diagramStatement NEWLINE statements
;
diagramStatement
@@ -312,19 +312,19 @@ diagramStatement
| SYSTEM_QUEUE attributes {yy.addPersonOrSystem('system_queue', ...$2); $$=$2;}
| SYSTEM_EXT attributes {yy.addPersonOrSystem('external_system', ...$2); $$=$2;}
| SYSTEM_EXT_DB attributes {yy.addPersonOrSystem('external_system_db', ...$2); $$=$2;}
- | SYSTEM_EXT_QUEUE attributes {yy.addPersonOrSystem('external_system_queue', ...$2); $$=$2;}
+ | SYSTEM_EXT_QUEUE attributes {yy.addPersonOrSystem('external_system_queue', ...$2); $$=$2;}
| CONTAINER attributes {yy.addContainer('container', ...$2); $$=$2;}
| CONTAINER_DB attributes {yy.addContainer('container_db', ...$2); $$=$2;}
| CONTAINER_QUEUE attributes {yy.addContainer('container_queue', ...$2); $$=$2;}
| CONTAINER_EXT attributes {yy.addContainer('external_container', ...$2); $$=$2;}
| CONTAINER_EXT_DB attributes {yy.addContainer('external_container_db', ...$2); $$=$2;}
- | CONTAINER_EXT_QUEUE attributes {yy.addContainer('external_container_queue', ...$2); $$=$2;}
+ | CONTAINER_EXT_QUEUE attributes {yy.addContainer('external_container_queue', ...$2); $$=$2;}
| COMPONENT attributes {yy.addComponent('component', ...$2); $$=$2;}
| COMPONENT_DB attributes {yy.addComponent('component_db', ...$2); $$=$2;}
| COMPONENT_QUEUE attributes {yy.addComponent('component_queue', ...$2); $$=$2;}
| COMPONENT_EXT attributes {yy.addComponent('external_component', ...$2); $$=$2;}
| COMPONENT_EXT_DB attributes {yy.addComponent('external_component_db', ...$2); $$=$2;}
- | COMPONENT_EXT_QUEUE attributes {yy.addComponent('external_component_queue', ...$2); $$=$2;}
+ | COMPONENT_EXT_QUEUE attributes {yy.addComponent('external_component_queue', ...$2); $$=$2;}
| boundaryStatement
| REL attributes {yy.addRel('rel', ...$2); $$=$2;}
| BIREL attributes {yy.addRel('birel', ...$2); $$=$2;}
diff --git a/packages/mermaid/src/diagrams/class/classDiagram.spec.ts b/packages/mermaid/src/diagrams/class/classDiagram.spec.ts
index 2182e8c34..7816345c8 100644
--- a/packages/mermaid/src/diagrams/class/classDiagram.spec.ts
+++ b/packages/mermaid/src/diagrams/class/classDiagram.spec.ts
@@ -264,6 +264,113 @@ class C13["With Città foreign language"]
const str = 'classDiagram\n' + 'note "test"\n';
parser.parse(str);
});
+
+ const keywords = [
+ 'direction',
+ 'classDiagram',
+ 'classDiagram-v2',
+ 'namespace',
+ '{}',
+ '{',
+ '}',
+ '()',
+ '(',
+ ')',
+ '[]',
+ '[',
+ ']',
+ 'class',
+ '\n',
+ 'cssClass',
+ 'callback',
+ 'link',
+ 'click',
+ 'note',
+ 'note for',
+ '<<',
+ '>>',
+ 'call ',
+ '~',
+ '~Generic~',
+ '_self',
+ '_blank',
+ '_parent',
+ '_top',
+ '<|',
+ '|>',
+ '>',
+ '<',
+ '*',
+ 'o',
+ '\\',
+ '--',
+ '..',
+ '-->',
+ '--|>',
+ ': label',
+ ':::',
+ '.',
+ '+',
+ 'alphaNum',
+ '!',
+ '0123',
+ 'function()',
+ 'function(arg1, arg2)',
+ ];
+
+ it.each(keywords)('should handle a note with %s in it', function (keyword: string) {
+ const str = `classDiagram
+ note "This is a keyword: ${keyword}. It truly is."
+ `;
+ parser.parse(str);
+ expect(classDb.getNotes()[0].text).toEqual(`This is a keyword: ${keyword}. It truly is.`);
+ });
+
+ it.each(keywords)(
+ 'should handle note with %s at beginning of string',
+ function (keyword: string) {
+ const str = `classDiagram
+ note "${keyword}"`;
+
+ parser.parse(str);
+ expect(classDb.getNotes()[0].text).toEqual(`${keyword}`);
+ }
+ );
+
+ it.each(keywords)('should handle a "note for" with a %s in it', function (keyword: string) {
+ const str = `classDiagram
+ class Something {
+ int id
+ string name
+ }
+ note for Something "This is a keyword: ${keyword}. It truly is."
+ `;
+
+ parser.parse(str);
+ expect(classDb.getNotes()[0].text).toEqual(`This is a keyword: ${keyword}. It truly is.`);
+ });
+
+ it.each(keywords)(
+ 'should handle a "note for" with a %s at beginning of string',
+ function (keyword: string) {
+ const str = `classDiagram
+ class Something {
+ int id
+ string name
+ }
+ note for Something "${keyword}"
+ `;
+
+ parser.parse(str);
+ expect(classDb.getNotes()[0].text).toEqual(`${keyword}`);
+ }
+ );
+
+ it.each(keywords)('should elicit error for %s after NOTE token', function (keyword: string) {
+ const str = `classDiagram
+ note ${keyword}`;
+ expect(() => parser.parse(str)).toThrowError(/(Expecting\s'STR'|Unrecognized\stext)/);
+ });
});
describe('when parsing class defined in brackets', function () {
diff --git a/packages/mermaid/src/diagrams/class/parser/classDiagram.jison b/packages/mermaid/src/diagrams/class/parser/classDiagram.jison
index 7788fcc0c..8fdfced75 100644
--- a/packages/mermaid/src/diagrams/class/parser/classDiagram.jison
+++ b/packages/mermaid/src/diagrams/class/parser/classDiagram.jison
@@ -24,31 +24,50 @@
%x namespace
%x namespace-body
%%
-\%\%\{ { this.begin('open_directive'); return 'open_directive'; }
-.*direction\s+TB[^\n]* return 'direction_tb';
-.*direction\s+BT[^\n]* return 'direction_bt';
-.*direction\s+RL[^\n]* return 'direction_rl';
-.*direction\s+LR[^\n]* return 'direction_lr';
-((?:(?!\}\%\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }
-":" { this.popState(); this.begin('arg_directive'); return ':'; }
-\}\%\% { this.popState(); this.popState(); return 'close_directive'; }
-((?:(?!\}\%\%).|\n)*) return 'arg_directive';
-\%\%(?!\{)*[^\n]*(\r?\n?)+ /* skip comments */
-\%\%[^\n]*(\r?\n)* /* skip comments */
-accTitle\s*":"\s* { this.begin("acc_title");return 'acc_title'; }
-(?!\n|;|#)*[^\n]* { this.popState(); return "acc_title_value"; }
-accDescr\s*":"\s* { this.begin("acc_descr");return 'acc_descr'; }
-(?!\n|;|#)*[^\n]* { this.popState(); return "acc_descr_value"; }
-accDescr\s*"{"\s* { this.begin("acc_descr_multiline");}
-[\}] { this.popState(); }
-[^\}]* return "acc_descr_multiline_value";
+\%\%\{ { this.begin('open_directive'); return 'open_directive'; }
+.*direction\s+TB[^\n]* return 'direction_tb';
+.*direction\s+BT[^\n]* return 'direction_bt';
+.*direction\s+RL[^\n]* return 'direction_rl';
+.*direction\s+LR[^\n]* return 'direction_lr';
+((?:(?!\}\%\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }
+":" { this.popState(); this.begin('arg_directive'); return ':'; }
+\}\%\% { this.popState(); this.popState(); return 'close_directive'; }
+((?:(?!\}\%\%).|\n)*) return 'arg_directive';
+\%\%(?!\{)*[^\n]*(\r?\n?)+ /* skip comments */
+\%\%[^\n]*(\r?\n)* /* skip comments */
+accTitle\s*":"\s* { this.begin("acc_title");return 'acc_title'; }
+(?!\n|;|#)*[^\n]* { this.popState(); return "acc_title_value"; }
+accDescr\s*":"\s* { this.begin("acc_descr");return 'acc_descr'; }
+(?!\n|;|#)*[^\n]* { this.popState(); return "acc_descr_value"; }
+accDescr\s*"{"\s* { this.begin("acc_descr_multiline");}
+[\}] { this.popState(); }
+[^\}]* return "acc_descr_multiline_value";
-\s*(\r?\n)+ return 'NEWLINE';
-\s+ /* skip whitespace */
+\s*(\r?\n)+ return 'NEWLINE';
+\s+ /* skip whitespace */
-"classDiagram-v2" return 'CLASS_DIAGRAM';
-"classDiagram" return 'CLASS_DIAGRAM';
-"[*]" return 'EDGE_STATE';
+"classDiagram-v2" return 'CLASS_DIAGRAM';
+"classDiagram" return 'CLASS_DIAGRAM';
+"[*]" return 'EDGE_STATE';
+
+/*
+---interactivity command---
+'call' adds a callback to the specified node. 'call' can only be specified when
+the line was introduced with 'click'.
+'call ()' attaches the function 'callback_name' with the specified
+arguments to the node that was specified by 'click'.
+Function arguments are optional: 'call ()' simply executes 'callback_name' without any arguments.
+*/
+"call"[\s]+ this.begin("callback_name");
+\([\s]*\) this.popState();
+\( this.popState(); this.begin("callback_args");
+[^(]* return 'CALLBACK_NAME';
+\) this.popState();
+[^)]* return 'CALLBACK_ARGS';
+
+["] this.popState();
+[^"]* return "STR";
+<*>["] this.begin("string");
"namespace" { this.begin('namespace'); return 'NAMESPACE'; }
\s*(\r?\n)+ { this.popState(); return 'NEWLINE'; }
@@ -60,26 +79,26 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multili
\s+ /* skip whitespace */
"[*]" return 'EDGE_STATE';
-"class" { this.begin('class'); return 'CLASS';}
-\s*(\r?\n)+ { this.popState(); return 'NEWLINE'; }
-\s+ /* skip whitespace */
-[}] { this.popState(); this.popState(); return 'STRUCT_STOP';}
-[{] { this.begin("class-body"); return 'STRUCT_START';}
-[}] { this.popState(); return 'STRUCT_STOP'; }
-<> return "EOF_IN_STRUCT";
-"[*]" { return 'EDGE_STATE';}
-[{] return "OPEN_IN_STRUCT";
-[\n] /* nothing */
-[^{}\n]* { return "MEMBER";}
+"class" { this.begin('class'); return 'CLASS';}
+\s*(\r?\n)+ { this.popState(); return 'NEWLINE'; }
+\s+ /* skip whitespace */
+[}] { this.popState(); this.popState(); return 'STRUCT_STOP';}
+[{] { this.begin("class-body"); return 'STRUCT_START';}
+[}] { this.popState(); return 'STRUCT_STOP'; }
+<> return "EOF_IN_STRUCT";
+"[*]" { return 'EDGE_STATE';}
+[{] return "OPEN_IN_STRUCT";
+[\n] /* nothing */
+[^{}\n]* { return "MEMBER";}
-<*>"cssClass" return 'CSSCLASS';
-<*>"callback" return 'CALLBACK';
-<*>"link" return 'LINK';
-<*>"click" return 'CLICK';
-<*>"note for" return 'NOTE_FOR';
-<*>"note" return 'NOTE';
-<*>"<<" return 'ANNOTATION_START';
-<*>">>" return 'ANNOTATION_END';
+<*>"cssClass" return 'CSSCLASS';
+<*>"callback" return 'CALLBACK';
+<*>"link" return 'LINK';
+<*>"click" return 'CLICK';
+<*>"note for" return 'NOTE_FOR';
+<*>"note" return 'NOTE';
+<*>"<<" return 'ANNOTATION_START';
+<*>">>" return 'ANNOTATION_END';
/*
---interactivity command---
@@ -87,64 +106,43 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multili
line was introduced with 'click'.
'href ""' attaches the specified link to the node that was specified by 'click'.
*/
-<*>"href"[\s]+["] this.begin("href");
-["] this.popState();
-[^"]* return 'HREF';
+<*>"href" return 'HREF';
-/*
----interactivity command---
-'call' adds a callback to the specified node. 'call' can only be specified when
-the line was introduced with 'click'.
-'call ()' attaches the function 'callback_name' with the specified
-arguments to the node that was specified by 'click'.
-Function arguments are optional: 'call ()' simply executes 'callback_name' without any arguments.
-*/
-<*>"call"[\s]+ this.begin("callback_name");
-\([\s]*\) this.popState();
-\( this.popState(); this.begin("callback_args");
-[^(]* return 'CALLBACK_NAME';
-\) this.popState();
-[^)]* return 'CALLBACK_ARGS';
+[~] this.popState();
+[^~]* return "GENERICTYPE";
+<*>"~" this.begin("generic");
-[~] this.popState();
-[^~]* return "GENERICTYPE";
-<*>[~] this.begin("generic");
+[`] this.popState();
+[^`]+ return "BQUOTE_STR";
+<*>[`] this.begin("bqstring");
-["] this.popState();
-[^"]* return "STR";
-<*>["] this.begin("string");
+<*>"_self" return 'LINK_TARGET';
+<*>"_blank" return 'LINK_TARGET';
+<*>"_parent" return 'LINK_TARGET';
+<*>"_top" return 'LINK_TARGET';
-[`] this.popState();
-[^`]+ return "BQUOTE_STR";
-<*>[`] this.begin("bqstring");
-
-<*>"_self" return 'LINK_TARGET';
-<*>"_blank" return 'LINK_TARGET';
-<*>"_parent" return 'LINK_TARGET';
-<*>"_top" return 'LINK_TARGET';
-
-<*>\s*\<\| return 'EXTENSION';
-<*>\s*\|\> return 'EXTENSION';
-<*>\s*\> return 'DEPENDENCY';
-<*>\s*\< return 'DEPENDENCY';
-<*>\s*\* return 'COMPOSITION';
-<*>\s*o return 'AGGREGATION';
-<*>\s*\(\) return 'LOLLIPOP';
-<*>\-\- return 'LINE';
-<*>\.\. return 'DOTTED_LINE';
-<*>":"{1}[^:\n;]+ return 'LABEL';
-<*>":"{3} return 'STYLE_SEPARATOR';
-<*>\- return 'MINUS';
-<*>"." return 'DOT';
-<*>\+ return 'PLUS';
-<*>\% return 'PCT';
-<*>"=" return 'EQUALS';
-<*>\= return 'EQUALS';
-<*>\w+ return 'ALPHA';
-<*>"[" return 'SQS';
-<*>"]" return 'SQE';
-<*>[!"#$%&'*+,-.`?\\/] return 'PUNCTUATION';
-<*>[0-9]+ return 'NUM';
+<*>\s*\<\| return 'EXTENSION';
+<*>\s*\|\> return 'EXTENSION';
+<*>\s*\> return 'DEPENDENCY';
+<*>\s*\< return 'DEPENDENCY';
+<*>\s*\* return 'COMPOSITION';
+<*>\s*o return 'AGGREGATION';
+<*>\s*\(\) return 'LOLLIPOP';
+<*>\-\- return 'LINE';
+<*>\.\. return 'DOTTED_LINE';
+<*>":"{1}[^:\n;]+ return 'LABEL';
+<*>":"{3} return 'STYLE_SEPARATOR';
+<*>\- return 'MINUS';
+<*>"." return 'DOT';
+<*>\+ return 'PLUS';
+<*>\% return 'PCT';
+<*>"=" return 'EQUALS';
+<*>\= return 'EQUALS';
+<*>\w+ return 'ALPHA';
+<*>"[" return 'SQS';
+<*>"]" return 'SQE';
+<*>[!"#$%&'*+,-.`?\\/] return 'PUNCTUATION';
+<*>[0-9]+ return 'NUM';
<*>[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|
[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|
[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|
@@ -206,9 +204,9 @@ Function arguments are optional: 'call ()' simply executes 'callb
[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|
[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|
[\uFFD2-\uFFD7\uFFDA-\uFFDC]
- return 'UNICODE_TEXT';
-<*>\s return 'SPACE';
-<*><> return 'EOF';
+ return 'UNICODE_TEXT';
+<*>\s return 'SPACE';
+<*><> return 'EOF';
/lex
@@ -321,7 +319,7 @@ classStatements
;
classStatement
- : classIdentifier
+ : classIdentifier
| classIdentifier STYLE_SEPARATOR alphaNumToken {yy.setCssClass($1, $3);}
| classIdentifier STRUCT_START members STRUCT_STOP {yy.addMembers($1,$3);}
| classIdentifier STYLE_SEPARATOR alphaNumToken STRUCT_START members STRUCT_STOP {yy.setCssClass($1, $3);yy.addMembers($1,$5);}
@@ -391,10 +389,10 @@ clickStatement
| CLICK className CALLBACK_NAME STR {$$ = $1;yy.setClickEvent($2, $3);yy.setTooltip($2, $4);}
| CLICK className CALLBACK_NAME CALLBACK_ARGS {$$ = $1;yy.setClickEvent($2, $3, $4);}
| CLICK className CALLBACK_NAME CALLBACK_ARGS STR {$$ = $1;yy.setClickEvent($2, $3, $4);yy.setTooltip($2, $5);}
- | CLICK className HREF {$$ = $1;yy.setLink($2, $3);}
- | CLICK className HREF LINK_TARGET {$$ = $1;yy.setLink($2, $3, $4);}
- | CLICK className HREF STR {$$ = $1;yy.setLink($2, $3);yy.setTooltip($2, $4);}
- | CLICK className HREF STR LINK_TARGET {$$ = $1;yy.setLink($2, $3, $5);yy.setTooltip($2, $4);}
+ | CLICK className HREF STR {$$ = $1;yy.setLink($2, $4);}
+ | CLICK className HREF STR LINK_TARGET {$$ = $1;yy.setLink($2, $4, $5);}
+ | CLICK className HREF STR STR {$$ = $1;yy.setLink($2, $4);yy.setTooltip($2, $5);}
+ | CLICK className HREF STR STR LINK_TARGET {$$ = $1;yy.setLink($2, $4, $6);yy.setTooltip($2, $5);}
;
cssClassStatement
diff --git a/packages/mermaid/src/diagrams/er/parser/erDiagram.jison b/packages/mermaid/src/diagrams/er/parser/erDiagram.jison
index 0c6820b49..0a2549268 100644
--- a/packages/mermaid/src/diagrams/er/parser/erDiagram.jison
+++ b/packages/mermaid/src/diagrams/er/parser/erDiagram.jison
@@ -30,7 +30,7 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multili
\s+ /* skip whitespace in block */
\b((?:PK)|(?:FK)|(?:UK))\b return 'ATTRIBUTE_KEY'
(.*?)[~](.*?)*[~] return 'ATTRIBUTE_WORD';
-[A-Za-z_][A-Za-z0-9\-_\[\]\(\)]* return 'ATTRIBUTE_WORD'
+[\*A-Za-z_][A-Za-z0-9\-_\[\]\(\)]* return 'ATTRIBUTE_WORD'
\"[^"]*\" return 'COMMENT';
[\n]+ /* nothing */
"}" { this.popState(); return 'BLOCK_STOP'; }
diff --git a/packages/mermaid/src/diagrams/er/parser/erDiagram.spec.js b/packages/mermaid/src/diagrams/er/parser/erDiagram.spec.js
index 6fdc9eaa7..2bf2f5b8c 100644
--- a/packages/mermaid/src/diagrams/er/parser/erDiagram.spec.js
+++ b/packages/mermaid/src/diagrams/er/parser/erDiagram.spec.js
@@ -154,6 +154,26 @@ describe('when parsing ER diagram it...', function () {
expect(entities[entity].attributes[2].attributeName).toBe('author-ref[name](1)');
});
+ it('should allow asterisk at the start of attribute name', function () {
+ const entity = 'BOOK';
+ const attribute = 'string *title';
+
+ erDiagram.parser.parse(`erDiagram\n${entity}{\n${attribute}}`);
+ const entities = erDb.getEntities();
+ expect(Object.keys(entities).length).toBe(1);
+ expect(entities[entity].attributes.length).toBe(1);
+ });
+
+ it('should allow asterisks at the start of attribute declared with type and name', () => {
+ const entity = 'BOOK';
+ const attribute = 'id *the_Primary_Key';
+
+ erDiagram.parser.parse(`erDiagram\n${entity} {\n${attribute}}`);
+ const entities = erDb.getEntities();
+ expect(Object.keys(entities).length).toBe(1);
+ expect(entities[entity].attributes.length).toBe(1);
+ });
+
it('should not allow leading numbers, dashes or brackets', function () {
const entity = 'BOOK';
const nonLeadingChars = '0-[]()';
diff --git a/packages/mermaid/src/diagrams/gantt/ganttDb.js b/packages/mermaid/src/diagrams/gantt/ganttDb.js
index 396402702..da838f839 100644
--- a/packages/mermaid/src/diagrams/gantt/ganttDb.js
+++ b/packages/mermaid/src/diagrams/gantt/ganttDb.js
@@ -37,6 +37,7 @@ const tags = ['active', 'done', 'crit', 'milestone'];
let funs = [];
let inclusiveEndDates = false;
let topAxis = false;
+let weekday = 'sunday';
// The serial order of the task in the script
let lastOrder = 0;
@@ -66,6 +67,7 @@ export const clear = function () {
lastOrder = 0;
links = {};
commonClear();
+ weekday = 'sunday';
};
export const setAxisFormat = function (txt) {
@@ -179,6 +181,14 @@ export const isInvalidDate = function (date, dateFormat, excludes, includes) {
return excludes.includes(date.format(dateFormat.trim()));
};
+export const setWeekday = function (txt) {
+ weekday = txt;
+};
+
+export const getWeekday = function () {
+ return weekday;
+};
+
/**
* TODO: fully document what this function does and what types it accepts
*
@@ -759,6 +769,8 @@ export default {
bindFunctions,
parseDuration,
isInvalidDate,
+ setWeekday,
+ getWeekday,
};
/**
diff --git a/packages/mermaid/src/diagrams/gantt/ganttRenderer.js b/packages/mermaid/src/diagrams/gantt/ganttRenderer.js
index 215a4df29..522f59e2c 100644
--- a/packages/mermaid/src/diagrams/gantt/ganttRenderer.js
+++ b/packages/mermaid/src/diagrams/gantt/ganttRenderer.js
@@ -13,7 +13,13 @@ import {
timeMinute,
timeHour,
timeDay,
- timeWeek,
+ timeMonday,
+ timeTuesday,
+ timeWednesday,
+ timeThursday,
+ timeFriday,
+ timeSaturday,
+ timeSunday,
timeMonth,
} from 'd3';
import common from '../common/common.js';
@@ -24,6 +30,20 @@ export const setConf = function () {
log.debug('Something is calling, setConf, remove the call');
};
+/**
+ * This will map any day of the week that can be set in the `weekday` option to
+ * the corresponding d3-time function that is used to calculate the ticks.
+ */
+const mapWeekdayToTimeFunction = {
+ monday: timeMonday,
+ tuesday: timeTuesday,
+ wednesday: timeWednesday,
+ thursday: timeThursday,
+ friday: timeFriday,
+ saturday: timeSaturday,
+ sunday: timeSunday,
+};
+
/**
* For this issue:
* https://github.com/mermaid-js/mermaid/issues/1618
@@ -561,6 +581,8 @@ export const draw = function (text, id, version, diagObj) {
if (resultTickInterval !== null) {
const every = resultTickInterval[1];
const interval = resultTickInterval[2];
+ const weekday = diagObj.db.getWeekday() || conf.weekday;
+
switch (interval) {
case 'minute':
bottomXAxis.ticks(timeMinute.every(every));
@@ -572,7 +594,7 @@ export const draw = function (text, id, version, diagObj) {
bottomXAxis.ticks(timeDay.every(every));
break;
case 'week':
- bottomXAxis.ticks(timeWeek.every(every));
+ bottomXAxis.ticks(mapWeekdayToTimeFunction[weekday].every(every));
break;
case 'month':
bottomXAxis.ticks(timeMonth.every(every));
@@ -600,6 +622,8 @@ export const draw = function (text, id, version, diagObj) {
if (resultTickInterval !== null) {
const every = resultTickInterval[1];
const interval = resultTickInterval[2];
+ const weekday = diagObj.db.getWeekday() || conf.weekday;
+
switch (interval) {
case 'minute':
topXAxis.ticks(timeMinute.every(every));
@@ -611,7 +635,7 @@ export const draw = function (text, id, version, diagObj) {
topXAxis.ticks(timeDay.every(every));
break;
case 'week':
- topXAxis.ticks(timeWeek.every(every));
+ topXAxis.ticks(mapWeekdayToTimeFunction[weekday].every(every));
break;
case 'month':
topXAxis.ticks(timeMonth.every(every));
diff --git a/packages/mermaid/src/diagrams/gantt/parser/gantt.jison b/packages/mermaid/src/diagrams/gantt/parser/gantt.jison
index 0eb45ec41..f7fd40c1b 100644
--- a/packages/mermaid/src/diagrams/gantt/parser/gantt.jison
+++ b/packages/mermaid/src/diagrams/gantt/parser/gantt.jison
@@ -77,24 +77,31 @@ that id.
[\s\n] this.popState();
[^\s\n]* return 'click';
-"gantt" return 'gantt';
-"dateFormat"\s[^#\n;]+ return 'dateFormat';
-"inclusiveEndDates" return 'inclusiveEndDates';
-"topAxis" return 'topAxis';
-"axisFormat"\s[^#\n;]+ return 'axisFormat';
-"tickInterval"\s[^#\n;]+ return 'tickInterval';
-"includes"\s[^#\n;]+ return 'includes';
-"excludes"\s[^#\n;]+ return 'excludes';
-"todayMarker"\s[^\n;]+ return 'todayMarker';
-\d\d\d\d"-"\d\d"-"\d\d return 'date';
-"title"\s[^#\n;]+ return 'title';
-"accDescription"\s[^#\n;]+ return 'accDescription'
-"section"\s[^#:\n;]+ return 'section';
-[^#:\n;]+ return 'taskTxt';
-":"[^#\n;]+ return 'taskData';
-":" return ':';
-<> return 'EOF';
-. return 'INVALID';
+"gantt" return 'gantt';
+"dateFormat"\s[^#\n;]+ return 'dateFormat';
+"inclusiveEndDates" return 'inclusiveEndDates';
+"topAxis" return 'topAxis';
+"axisFormat"\s[^#\n;]+ return 'axisFormat';
+"tickInterval"\s[^#\n;]+ return 'tickInterval';
+"includes"\s[^#\n;]+ return 'includes';
+"excludes"\s[^#\n;]+ return 'excludes';
+"todayMarker"\s[^\n;]+ return 'todayMarker';
+weekday\s+monday return 'weekday_monday'
+weekday\s+tuesday return 'weekday_tuesday'
+weekday\s+wednesday return 'weekday_wednesday'
+weekday\s+thursday return 'weekday_thursday'
+weekday\s+friday return 'weekday_friday'
+weekday\s+saturday return 'weekday_saturday'
+weekday\s+sunday return 'weekday_sunday'
+\d\d\d\d"-"\d\d"-"\d\d return 'date';
+"title"\s[^#\n;]+ return 'title';
+"accDescription"\s[^#\n;]+ return 'accDescription'
+"section"\s[^#:\n;]+ return 'section';
+[^#:\n;]+ return 'taskTxt';
+":"[^#\n;]+ return 'taskData';
+":" return ':';
+<> return 'EOF';
+. return 'INVALID';
/lex
@@ -121,6 +128,16 @@ line
| EOF { $$=[];}
;
+weekday
+ : weekday_monday { yy.setWeekday("monday");}
+ | weekday_tuesday { yy.setWeekday("tuesday");}
+ | weekday_wednesday { yy.setWeekday("wednesday");}
+ | weekday_thursday { yy.setWeekday("thursday");}
+ | weekday_friday { yy.setWeekday("friday");}
+ | weekday_saturday { yy.setWeekday("saturday");}
+ | weekday_sunday { yy.setWeekday("sunday");}
+ ;
+
statement
: dateFormat {yy.setDateFormat($1.substr(11));$$=$1.substr(11);}
| inclusiveEndDates {yy.enableInclusiveEndDates();$$=$1.substr(18);}
@@ -130,6 +147,7 @@ statement
| excludes {yy.setExcludes($1.substr(9));$$=$1.substr(9);}
| includes {yy.setIncludes($1.substr(9));$$=$1.substr(9);}
| todayMarker {yy.setTodayMarker($1.substr(12));$$=$1.substr(12);}
+ | weekday
| title {yy.setDiagramTitle($1.substr(6));$$=$1.substr(6);}
| acc_title acc_title_value { $$=$2.trim();yy.setAccTitle($$); }
| acc_descr acc_descr_value { $$=$2.trim();yy.setAccDescription($$); }
diff --git a/packages/mermaid/src/diagrams/gantt/parser/gantt.spec.js b/packages/mermaid/src/diagrams/gantt/parser/gantt.spec.js
index 020bab0ed..e7ce1ffa4 100644
--- a/packages/mermaid/src/diagrams/gantt/parser/gantt.spec.js
+++ b/packages/mermaid/src/diagrams/gantt/parser/gantt.spec.js
@@ -180,4 +180,12 @@ row2`;
expect(ganttDb.getAccTitle()).toBe(expectedTitle);
expect(ganttDb.getAccDescription()).toBe(expectedAccDescription);
});
+
+ it.each(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'])(
+ 'should allow for setting the starting weekday to %s for tick interval',
+ (day) => {
+ parser.parse(`gantt\nweekday ${day}`);
+ expect(ganttDb.getWeekday()).toBe(day);
+ }
+ );
});
diff --git a/packages/mermaid/src/diagrams/state/stateRenderer.js b/packages/mermaid/src/diagrams/state/stateRenderer.js
index 689d7a0e5..1b3e0f27e 100644
--- a/packages/mermaid/src/diagrams/state/stateRenderer.js
+++ b/packages/mermaid/src/diagrams/state/stateRenderer.js
@@ -63,20 +63,6 @@ export const draw = function (text, id, _version, diagObj) {
const diagram = root.select(`[id='${id}']`);
insertMarkers(diagram);
- // Layout graph, Create a new directed graph
- const graph = new graphlib.Graph({
- multigraph: true,
- compound: true,
- // acyclicer: 'greedy',
- rankdir: 'RL',
- // ranksep: '20'
- });
-
- // Default to assigning a new object as a label for each new edge.
- graph.setDefaultEdgeLabel(function () {
- return {};
- });
-
const rootDoc = diagObj.db.getRootDoc();
renderDoc(rootDoc, diagram, undefined, false, root, doc, diagObj);
diff --git a/packages/mermaid/src/docs/syntax/c4c.md b/packages/mermaid/src/docs/syntax/c4c.md
index 78528f7b9..0b7b6e87d 100644
--- a/packages/mermaid/src/docs/syntax/c4c.md
+++ b/packages/mermaid/src/docs/syntax/c4c.md
@@ -70,10 +70,10 @@ The layout does not use a fully automated layout algorithm. The position of shap
The number of shapes per row and the number of boundaries can be adjusted using UpdateLayoutConfig.
- Layout
-- - Lay_U, Lay_Up
-- - Lay_D, Lay_Down
-- - Lay_L, Lay_Left
-- - Lay_R, Lay_Right
+ - Lay_U, Lay_Up
+ - Lay_D, Lay_Down
+ - Lay_L, Lay_Left
+ - Lay_R, Lay_Right
The following unfinished features are not supported in the short term.
@@ -83,65 +83,71 @@ The following unfinished features are not supported in the short term.
- [ ] Legend
- [x] System Context
-- - [x] Person(alias, label, ?descr, ?sprite, ?tags, $link)
-- - [x] Person_Ext
-- - [x] System(alias, label, ?descr, ?sprite, ?tags, $link)
-- - [x] SystemDb
-- - [x] SystemQueue
-- - [x] System_Ext
-- - [x] SystemDb_Ext
-- - [x] SystemQueue_Ext
-- - [x] Boundary(alias, label, ?type, ?tags, $link)
-- - [x] Enterprise_Boundary(alias, label, ?tags, $link)
-- - [x] System_Boundary
+
+ - [x] Person(alias, label, ?descr, ?sprite, ?tags, $link)
+ - [x] Person_Ext
+ - [x] System(alias, label, ?descr, ?sprite, ?tags, $link)
+ - [x] SystemDb
+ - [x] SystemQueue
+ - [x] System_Ext
+ - [x] SystemDb_Ext
+ - [x] SystemQueue_Ext
+ - [x] Boundary(alias, label, ?type, ?tags, $link)
+ - [x] Enterprise_Boundary(alias, label, ?tags, $link)
+ - [x] System_Boundary
- [x] Container diagram
-- - [x] Container(alias, label, ?techn, ?descr, ?sprite, ?tags, $link)
-- - [x] ContainerDb
-- - [x] ContainerQueue
-- - [x] Container_Ext
-- - [x] ContainerDb_Ext
-- - [x] ContainerQueue_Ext
-- - [x] Container_Boundary(alias, label, ?tags, $link)
+
+ - [x] Container(alias, label, ?techn, ?descr, ?sprite, ?tags, $link)
+ - [x] ContainerDb
+ - [x] ContainerQueue
+ - [x] Container_Ext
+ - [x] ContainerDb_Ext
+ - [x] ContainerQueue_Ext
+ - [x] Container_Boundary(alias, label, ?tags, $link)
- [x] Component diagram
-- - [x] Component(alias, label, ?techn, ?descr, ?sprite, ?tags, $link)
-- - [x] ComponentDb
-- - [x] ComponentQueue
-- - [x] Component_Ext
-- - [x] ComponentDb_Ext
-- - [x] ComponentQueue_Ext
+
+ - [x] Component(alias, label, ?techn, ?descr, ?sprite, ?tags, $link)
+ - [x] ComponentDb
+ - [x] ComponentQueue
+ - [x] Component_Ext
+ - [x] ComponentDb_Ext
+ - [x] ComponentQueue_Ext
- [x] Dynamic diagram
-- - [x] RelIndex(index, from, to, label, ?tags, $link)
+
+ - [x] RelIndex(index, from, to, label, ?tags, $link)
- [x] Deployment diagram
-- - [x] Deployment_Node(alias, label, ?type, ?descr, ?sprite, ?tags, $link)
-- - [x] Node(alias, label, ?type, ?descr, ?sprite, ?tags, $link): short name of Deployment_Node()
-- - [x] Node_L(alias, label, ?type, ?descr, ?sprite, ?tags, $link): left aligned Node()
-- - [x] Node_R(alias, label, ?type, ?descr, ?sprite, ?tags, $link): right aligned Node()
+
+ - [x] Deployment_Node(alias, label, ?type, ?descr, ?sprite, ?tags, $link)
+ - [x] Node(alias, label, ?type, ?descr, ?sprite, ?tags, $link): short name of Deployment_Node()
+ - [x] Node_L(alias, label, ?type, ?descr, ?sprite, ?tags, $link): left aligned Node()
+ - [x] Node_R(alias, label, ?type, ?descr, ?sprite, ?tags, $link): right aligned Node()
- [x] Relationship Types
-- - [x] Rel(from, to, label, ?techn, ?descr, ?sprite, ?tags, $link)
-- - [x] BiRel (bidirectional relationship)
-- - [x] Rel_U, Rel_Up
-- - [x] Rel_D, Rel_Down
-- - [x] Rel_L, Rel_Left
-- - [x] Rel_R, Rel_Right
-- - [x] Rel_Back
-- - [x] RelIndex \* Compatible with C4-Plantuml syntax, but ignores the index parameter. The sequence number is determined by the order in which the rel statements are written.
+
+ - [x] Rel(from, to, label, ?techn, ?descr, ?sprite, ?tags, $link)
+ - [x] BiRel (bidirectional relationship)
+ - [x] Rel_U, Rel_Up
+ - [x] Rel_D, Rel_Down
+ - [x] Rel_L, Rel_Left
+ - [x] Rel_R, Rel_Right
+ - [x] Rel_Back
+ - [x] RelIndex \* Compatible with C4-Plantuml syntax, but ignores the index parameter. The sequence number is determined by the order in which the rel statements are written.
- [ ] Custom tags/stereotypes support and skin param updates
-- - [ ] AddElementTag(tagStereo, ?bgColor, ?fontColor, ?borderColor, ?shadowing, ?shape, ?sprite, ?techn, ?legendText, ?legendSprite): Introduces a new element tag. The styles of the tagged elements are updated and the tag is displayed in the calculated legend.
-- - [ ] AddRelTag(tagStereo, ?textColor, ?lineColor, ?lineStyle, ?sprite, ?techn, ?legendText, ?legendSprite): Introduces a new Relationship tag. The styles of the tagged relationships are updated and the tag is displayed in the calculated legend.
-- - [x] UpdateElementStyle(elementName, ?bgColor, ?fontColor, ?borderColor, ?shadowing, ?shape, ?sprite, ?techn, ?legendText, ?legendSprite): This call updates the default style of the elements (component, ...) and creates no additional legend entry.
-- - [x] UpdateRelStyle(from, to, ?textColor, ?lineColor, ?offsetX, ?offsetY): This call updates the default relationship colors and creates no additional legend entry. Two new parameters, offsetX and offsetY, are added to set the offset of the original position of the text.
-- - [ ] RoundedBoxShape(): This call returns the name of the rounded box shape and can be used as ?shape argument.
-- - [ ] EightSidedShape(): This call returns the name of the eight sided shape and can be used as ?shape argument.
-- - [ ] DashedLine(): This call returns the name of the dashed line and can be used as ?lineStyle argument.
-- - [ ] DottedLine(): This call returns the name of the dotted line and can be used as ?lineStyle argument.
-- - [ ] BoldLine(): This call returns the name of the bold line and can be used as ?lineStyle argument.
-- - [x] UpdateLayoutConfig(?c4ShapeInRow, ?c4BoundaryInRow): New. This call updates the default c4ShapeInRow(4) and c4BoundaryInRow(2).
+ - [ ] AddElementTag(tagStereo, ?bgColor, ?fontColor, ?borderColor, ?shadowing, ?shape, ?sprite, ?techn, ?legendText, ?legendSprite): Introduces a new element tag. The styles of the tagged elements are updated and the tag is displayed in the calculated legend.
+ - [ ] AddRelTag(tagStereo, ?textColor, ?lineColor, ?lineStyle, ?sprite, ?techn, ?legendText, ?legendSprite): Introduces a new Relationship tag. The styles of the tagged relationships are updated and the tag is displayed in the calculated legend.
+ - [x] UpdateElementStyle(elementName, ?bgColor, ?fontColor, ?borderColor, ?shadowing, ?shape, ?sprite, ?techn, ?legendText, ?legendSprite): This call updates the default style of the elements (component, ...) and creates no additional legend entry.
+ - [x] UpdateRelStyle(from, to, ?textColor, ?lineColor, ?offsetX, ?offsetY): This call updates the default relationship colors and creates no additional legend entry. Two new parameters, offsetX and offsetY, are added to set the offset of the original position of the text.
+ - [ ] RoundedBoxShape(): This call returns the name of the rounded box shape and can be used as ?shape argument.
+ - [ ] EightSidedShape(): This call returns the name of the eight sided shape and can be used as ?shape argument.
+ - [ ] DashedLine(): This call returns the name of the dashed line and can be used as ?lineStyle argument.
+ - [ ] DottedLine(): This call returns the name of the dotted line and can be used as ?lineStyle argument.
+ - [ ] BoldLine(): This call returns the name of the bold line and can be used as ?lineStyle argument.
+ - [x] UpdateLayoutConfig(?c4ShapeInRow, ?c4BoundaryInRow): New. This call updates the default c4ShapeInRow(4) and c4BoundaryInRow(2).
There are two ways to assign parameters with question marks. One uses the non-named parameter assignment method in the order of the parameters, and the other uses the named parameter assignment method, where the name must start with a $ symbol.
diff --git a/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md b/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md
index b7066ab3d..7e5fa2711 100644
--- a/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md
+++ b/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md
@@ -142,7 +142,7 @@ erDiagram
}
```
-The `type` and `name` values must begin with an alphabetic character and may contain digits, hyphens, underscores, parentheses and square brackets. Other than that, there are no restrictions, and there is no implicit set of valid data types.
+The `type` values must begin with an alphabetic character and may contain digits, hyphens, underscores, parentheses and square brackets. The `name` values follow a similar format to `type`, but may start with an asterisk as another option to indicate an attribute is a primary key. Other than that, there are no restrictions, and there is no implicit set of valid data types.
#### Attribute Keys and Comments
diff --git a/packages/mermaid/src/docs/syntax/gantt.md b/packages/mermaid/src/docs/syntax/gantt.md
index 710b39e52..05ccf7bff 100644
--- a/packages/mermaid/src/docs/syntax/gantt.md
+++ b/packages/mermaid/src/docs/syntax/gantt.md
@@ -189,6 +189,14 @@ The pattern is:
More info in: [https://github.com/d3/d3-time#interval_every](https://github.com/d3/d3-time#interval_every)
+Week-based `tickInterval`s start the week on sunday by default. If you wish to specify another weekday on which the `tickInterval` should start, use the `weekday` option:
+
+```mermaid-example
+gantt
+ tickInterval 1week
+ weekday monday
+```
+
## Output in compact mode
The compact mode allows you to display multiple tasks in the same row. Compact mode can be enabled for a gantt chart by setting the display mode of the graph via preceeding YAML settings.
diff --git a/packages/mermaid/src/oldDefaultConfig.ts b/packages/mermaid/src/oldDefaultConfig.ts
deleted file mode 100644
index fbbd39f2a..000000000
--- a/packages/mermaid/src/oldDefaultConfig.ts
+++ /dev/null
@@ -1,2306 +0,0 @@
-/**
- * Temporary file for testing whether the new mermaid configuration defined in
- * packages/mermaid/src/schemas/config.schema.yaml has the exact same default config.
- */
-
-import theme from './themes/index.js';
-import { type MermaidConfig } from './config.type.js';
-/**
- * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click
- * here](8.6.0_docs.md)].**
- *
- * ## **What follows are config instructions for older versions**
- *
- * These are the default options which can be overridden with the initialization call like so:
- *
- * **Example 1:**
- *
- * ```js
- * mermaid.initialize({ flowchart:{ htmlLabels: false } });
- * ```
- *
- * **Example 2:**
- *
- * ```html
- *
- * ```
- *
- * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults).
- * A description of each option follows below.
- */
-const config: Partial = {
- /**
- * Theme , the CSS style sheet
- *
- * | Parameter | Description | Type | Required | Values |
- * | --------- | --------------- | ------ | -------- | ---------------------------------------------- |
- * | theme | Built in Themes | string | Optional | 'default', 'forest', 'dark', 'neutral', 'null' |
- *
- * **Notes:** To disable any pre-defined mermaid theme, use "null".
- *
- * @example
- *
- * ```js
- * {
- * "theme": "forest",
- * "themeCSS": ".node rect { fill: red; }"
- * }
- * ```
- */
- theme: 'default',
- themeVariables: theme['default'].getThemeVariables(),
- themeCSS: undefined,
- /* **maxTextSize** - The maximum allowed size of the users text diagram */
- maxTextSize: 50000,
- darkMode: false,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ---------- | ------------------------------------------------------ | ------ | -------- | --------------------------- |
- * | fontFamily | specifies the font to be used in the rendered diagrams | string | Required | Any Possible CSS FontFamily |
- *
- * **Notes:** Default value: '"trebuchet ms", verdana, arial, sans-serif;'.
- */
- fontFamily: '"trebuchet ms", verdana, arial, sans-serif;',
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | ----------------------------------------------------- | ---------------- | -------- | --------------------------------------------- |
- * | logLevel | This option decides the amount of logging to be used. | string \| number | Required | 'trace','debug','info','warn','error','fatal' |
- *
- * **Notes:**
- *
- * - Trace: 0
- * - Debug: 1
- * - Info: 2
- * - Warn: 3
- * - Error: 4
- * - Fatal: 5 (default)
- */
- logLevel: 5,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------- | --------------------------------- | ------ | -------- | ------------------------------------------ |
- * | securityLevel | Level of trust for parsed diagram | string | Required | 'sandbox', 'strict', 'loose', 'antiscript' |
- *
- * **Notes**:
- *
- * - **strict**: (**default**) HTML tags in the text are encoded and click functionality is disabled.
- * - **antiscript**: HTML tags in text are allowed (only script elements are removed), and click
- * functionality is enabled.
- * - **loose**: HTML tags in text are allowed and click functionality is enabled.
- * - **sandbox**: With this security level, all rendering takes place in a sandboxed iframe. This
- * prevent any JavaScript from running in the context. This may hinder interactive functionality
- * of the diagram, like scripts, popups in the sequence diagram, links to other tabs or targets, etc.
- */
- securityLevel: 'strict',
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | -------------------------------------------- | ------- | -------- | ----------- |
- * | startOnLoad | Dictates whether mermaid starts on Page load | boolean | Required | true, false |
- *
- * **Notes:** Default value: true
- */
- startOnLoad: true,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------------- | ---------------------------------------------------------------------------- | ------- | -------- | ----------- |
- * | arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | boolean | Required | true, false |
- *
- * **Notes**:
- *
- * This matters if you are using base tag settings.
- *
- * Default value: false
- */
- arrowMarkerAbsolute: false,
-
- /**
- * This option controls which currentConfig keys are considered _secure_ and can only be changed
- * via call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to the
- * `secure` keys in the current currentConfig. This prevents malicious graph directives from
- * overriding a site's default security.
- *
- * **Notes**:
- *
- * Default value: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize']
- */
- secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],
- /**
- * This option controls if the generated ids of nodes in the SVG are generated randomly or based
- * on a seed. If set to false, the IDs are generated based on the current date and thus are not
- * deterministic. This is the default behavior.
- *
- * **Notes**:
- *
- * This matters if your files are checked into source control e.g. git and should not change unless
- * content is changed.
- *
- * Default value: false
- */
- deterministicIds: false,
-
- /**
- * This option is the optional seed for deterministic ids. if set to undefined but
- * deterministicIds is true, a simple number iterator is used. You can set this attribute to base
- * the seed on a static string.
- */
- deterministicIDSeed: undefined,
-
- /** The object containing configurations specific for flowcharts */
- flowchart: {
- /**
- * ### titleTopMargin
- *
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |
- * | titleTopMargin | Margin top for the text over the flowchart | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 25
- */
- titleTopMargin: 25,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |
- * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |
- *
- * **Notes:**
- *
- * The amount of padding around the diagram as a whole so that embedded diagrams have margins,
- * expressed in pixels
- *
- * Default value: 8
- */
- diagramPadding: 8,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ---------- | -------------------------------------------------------------------------------------------- | ------- | -------- | ----------- |
- * | htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | boolean | Required | true, false |
- *
- * **Notes:** Default value: true.
- */
- htmlLabels: true,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | --------------------------------------------------- | ------- | -------- | ------------------- |
- * | nodeSpacing | Defines the spacing between nodes on the same level | Integer | Required | Any positive Number |
- *
- * **Notes:**
- *
- * Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the
- * vertical spacing for LR as well as RL graphs.**
- *
- * Default value: 50
- */
- nodeSpacing: 50,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | ----------------------------------------------------- | ------- | -------- | ------------------- |
- * | rankSpacing | Defines the spacing between nodes on different levels | Integer | Required | Any Positive Number |
- *
- * **Notes**:
- *
- * Pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal
- * spacing for LR as well as RL graphs.
- *
- * Default value 50
- */
- rankSpacing: 50,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | -------------------------------------------------- | ------ | -------- | ----------------------------- |
- * | curve | Defines how mermaid renders curves for flowcharts. | string | Required | 'basis', 'linear', 'cardinal' |
- *
- * **Notes:**
- *
- * Default Value: 'basis'
- */
- curve: 'basis',
- // Only used in new experimental rendering
- // represents the padding between the labels and the shape
- padding: 15,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | ----------- | ------- | -------- | ----------- |
- * | useMaxWidth | See notes | boolean | 4 | true, false |
- *
- * **Notes:**
- *
- * When this flag is set the height and width is set to 100% and is then scaling with the
- * available space if not the absolute space required is used.
- *
- * Default value: true
- */
- useMaxWidth: true,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ----------- | ------- | -------- | ----------------------- |
- * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper, elk |
- *
- * **Notes:**
- *
- * Decides which rendering engine that is to be used for the rendering. Legal values are:
- * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid, elk for layout using
- * elkjs
- *
- * Default value: 'dagre-wrapper'
- */
- defaultRenderer: 'dagre-wrapper',
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ----------- | ------- | -------- | ----------------------- |
- * | wrappingWidth | See notes | number | 4 | width of nodes where text is wrapped |
- *
- * **Notes:**
- *
- * When using markdown strings the text ius wrapped automatically, this
- * value sets the max width of a text before it continues on a new line.
- * Default value: 'dagre-wrapper'
- */
- wrappingWidth: 200,
- },
-
- /** The object containing configurations specific for sequence diagrams */
- sequence: {
- hideUnusedParticipants: false,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ---------------------------- | ------- | -------- | ------------------ |
- * | activationWidth | Width of the activation rect | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value :10
- */
- activationWidth: 10,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |
- * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 50
- */
- diagramMarginX: 50,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | ------------------------------------------------- | ------- | -------- | ------------------ |
- * | diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 10
- */
- diagramMarginY: 10,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | --------------------- | ------- | -------- | ------------------ |
- * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 50
- */
- actorMargin: 50,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | -------------------- | ------- | -------- | ------------------ |
- * | width | Width of actor boxes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 150
- */
- width: 150,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | --------------------- | ------- | -------- | ------------------ |
- * | height | Height of actor boxes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 65
- */
- height: 65,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | ------------------------ | ------- | -------- | ------------------ |
- * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 10
- */
- boxMargin: 10,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |
- * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 5
- */
- boxTextMargin: 5,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ---------- | ------------------- | ------- | -------- | ------------------ |
- * | noteMargin | margin around notes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 10
- */
- noteMargin: 10,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------- | ---------------------- | ------- | -------- | ------------------ |
- * | messageMargin | Space between messages | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 35
- */
- messageMargin: 35,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------ | --------------------------- | ------ | -------- | ------------------------- |
- * | messageAlign | Multiline message alignment | string | Required | 'left', 'center', 'right' |
- *
- * **Notes:** Default value: 'center'
- */
- messageAlign: 'center',
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------ | --------------------------- | ------- | -------- | ----------- |
- * | mirrorActors | Mirror actors under diagram | boolean | Required | true, false |
- *
- * **Notes:** Default value: true
- */
- mirrorActors: true,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ---------- | ----------------------------------------------------------------------- | ------- | -------- | ----------- |
- * | forceMenus | forces actor popup menus to always be visible (to support E2E testing). | Boolean | Required | True, False |
- *
- * **Notes:**
- *
- * Default value: false.
- */
- forceMenus: false,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |
- * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | Required | Any Positive Value |
- *
- * **Notes:**
- *
- * Depending on css styling this might need adjustment.
- *
- * Default value: 1
- */
- bottomMarginAdj: 1,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | ----------- | ------- | -------- | ----------- |
- * | useMaxWidth | See Notes | boolean | Required | true, false |
- *
- * **Notes:** When this flag is set to true, the height and width is set to 100% and is then
- * scaling with the available space. If set to false, the absolute space required is used.
- *
- * Default value: true
- */
- useMaxWidth: true,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | ------------------------------------ | ------- | -------- | ----------- |
- * | rightAngles | display curve arrows as right angles | boolean | Required | true, false |
- *
- * **Notes:**
- *
- * This will display arrows that start and begin at the same node as right angles, rather than a
- * curve
- *
- * Default value: false
- */
- rightAngles: false,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------------- | ------------------------------- | ------- | -------- | ----------- |
- * | showSequenceNumbers | This will show the node numbers | boolean | Required | true, false |
- *
- * **Notes:** Default value: false
- */
- showSequenceNumbers: false,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------- | -------------------------------------------------- | ------- | -------- | ------------------ |
- * | actorFontSize | This sets the font size of the actor's description | Integer | Require | Any Positive Value |
- *
- * **Notes:** **Default value 14**..
- */
- actorFontSize: 14,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ---------------------------------------------------- | ------ | -------- | --------------------------- |
- * | actorFontFamily | This sets the font family of the actor's description | string | Required | Any Possible CSS FontFamily |
- *
- * **Notes:** Default value: "'Open Sans", sans-serif'
- */
- actorFontFamily: '"Open Sans", sans-serif',
-
- /**
- * This sets the font weight of the actor's description
- *
- * **Notes:** Default value: 400.
- */
- actorFontWeight: 400,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------ | ----------------------------------------------- | ------- | -------- | ------------------ |
- * | noteFontSize | This sets the font size of actor-attached notes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 14
- */
- noteFontSize: 14,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | -------------------------------------------------- | ------ | -------- | --------------------------- |
- * | noteFontFamily | This sets the font family of actor-attached notes. | string | Required | Any Possible CSS FontFamily |
- *
- * **Notes:** Default value: ''"trebuchet ms", verdana, arial, sans-serif'
- */
- noteFontFamily: '"trebuchet ms", verdana, arial, sans-serif',
-
- /**
- * This sets the font weight of the note's description
- *
- * **Notes:** Default value: 400
- */
- noteFontWeight: 400,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | ---------------------------------------------------- | ------ | -------- | ------------------------- |
- * | noteAlign | This sets the text alignment of actor-attached notes | string | required | 'left', 'center', 'right' |
- *
- * **Notes:** Default value: 'center'
- */
- noteAlign: 'center',
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ----------------------------------------- | ------- | -------- | ------------------- |
- * | messageFontSize | This sets the font size of actor messages | Integer | Required | Any Positive Number |
- *
- * **Notes:** Default value: 16
- */
- messageFontSize: 16,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------------- | ------------------------------------------- | ------ | -------- | --------------------------- |
- * | messageFontFamily | This sets the font family of actor messages | string | Required | Any Possible CSS FontFamily |
- *
- * **Notes:** Default value: '"trebuchet ms", verdana, arial, sans-serif'
- */
- messageFontFamily: '"trebuchet ms", verdana, arial, sans-serif',
-
- /**
- * This sets the font weight of the message's description
- *
- * **Notes:** Default value: 400.
- */
- messageFontWeight: 400,
-
- /**
- * This sets the auto-wrap state for the diagram
- *
- * **Notes:** Default value: false.
- */
- wrap: false,
-
- /**
- * This sets the auto-wrap padding for the diagram (sides only)
- *
- * **Notes:** Default value: 0.
- */
- wrapPadding: 10,
-
- /**
- * This sets the width of the loop-box (loop, alt, opt, par)
- *
- * **Notes:** Default value: 50.
- */
- labelBoxWidth: 50,
-
- /**
- * This sets the height of the loop-box (loop, alt, opt, par)
- *
- * **Notes:** Default value: 20.
- */
- labelBoxHeight: 20,
-
- messageFont: function () {
- return {
- fontFamily: this.messageFontFamily,
- fontSize: this.messageFontSize,
- fontWeight: this.messageFontWeight,
- };
- },
- noteFont: function () {
- return {
- fontFamily: this.noteFontFamily,
- fontSize: this.noteFontSize,
- fontWeight: this.noteFontWeight,
- };
- },
- actorFont: function () {
- return {
- fontFamily: this.actorFontFamily,
- fontSize: this.actorFontSize,
- fontWeight: this.actorFontWeight,
- };
- },
- },
-
- /** The object containing configurations specific for gantt diagrams */
- gantt: {
- /**
- * ### titleTopMargin
- *
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |
- * | titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 25
- */
- titleTopMargin: 25,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | ----------------------------------- | ------- | -------- | ------------------ |
- * | barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 20
- */
- barHeight: 20,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | ---------------------------------------------------------------- | ------- | -------- | ------------------ |
- * | barGap | The margin between the different activities in the gantt diagram | Integer | Optional | Any Positive Value |
- *
- * **Notes:** Default value: 4
- */
- barGap: 4,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ---------- | -------------------------------------------------------------------------- | ------- | -------- | ------------------ |
- * | topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 50
- */
- topPadding: 50,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------ | ----------------------------------------------------------------------- | ------- | -------- | ------------------ |
- * | rightPadding | The space allocated for the section name to the right of the activities | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 75
- */
- rightPadding: 75,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | ---------------------------------------------------------------------- | ------- | -------- | ------------------ |
- * | leftPadding | The space allocated for the section name to the left of the activities | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 75
- */
- leftPadding: 75,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | -------------------- | -------------------------------------------- | ------- | -------- | ------------------ |
- * | gridLineStartPadding | Vertical starting position of the grid lines | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 35
- */
- gridLineStartPadding: 35,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | ----------- | ------- | -------- | ------------------ |
- * | fontSize | Font size | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 11
- */
- fontSize: 11,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ---------------------- | ------- | -------- | ------------------ |
- * | sectionFontSize | Font size for sections | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 11
- */
- sectionFontSize: 11,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------------- | ---------------------------------------- | ------- | -------- | ------------------ |
- * | numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |
- *
- * **Notes:** Default value: 4
- */
- numberSectionStyles: 4,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | ------------------------- | ------ | -------- | --------- |
- * | displayMode | Controls the display mode | string | 4 | 'compact' |
- *
- * **Notes**:
- *
- * - **compact**: Enables displaying multiple tasks on the same row.
- */
- displayMode: '',
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ---------- | ---------------------------- | ---- | -------- | ---------------- |
- * | axisFormat | Date/time format of the axis | 3 | Required | Date in yy-mm-dd |
- *
- * **Notes:**
- *
- * This might need adjustment to match your locale and preferences
- *
- * Default value: '%Y-%m-%d'.
- */
- axisFormat: '%Y-%m-%d',
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------ | ------------| ------ | -------- | ------- |
- * | tickInterval | axis ticks | string | Optional | string |
- *
- * **Notes:**
- *
- * Pattern is /^([1-9][0-9]*)(minute|hour|day|week|month)$/
- *
- * Default value: undefined
- */
- tickInterval: undefined,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | ----------- | ------- | -------- | ----------- |
- * | useMaxWidth | See notes | boolean | 4 | true, false |
- *
- * **Notes:**
- *
- * When this flag is set the height and width is set to 100% and is then scaling with the
- * available space if not the absolute space required is used.
- *
- * Default value: true
- */
- useMaxWidth: true,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | ----------- | ------- | -------- | ----------- |
- * | topAxis | See notes | Boolean | 4 | True, False |
- *
- * **Notes:** when this flag is set date labels will be added to the top of the chart
- *
- * **Default value false**.
- */
- topAxis: false,
-
- useWidth: undefined,
- },
-
- /** The object containing configurations specific for journey diagrams */
- journey: {
- /**
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |
- * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 50
- */
- diagramMarginX: 50,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | -------------------------------------------------- | ------- | -------- | ------------------ |
- * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 10
- */
- diagramMarginY: 10,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | --------------------- | ------- | -------- | ------------------ |
- * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 50
- */
- leftMargin: 150,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | -------------------- | ------- | -------- | ------------------ |
- * | width | Width of actor boxes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 150
- */
- width: 150,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | --------------------- | ------- | -------- | ------------------ |
- * | height | Height of actor boxes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 65
- */
- height: 50,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | ------------------------ | ------- | -------- | ------------------ |
- * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 10
- */
- boxMargin: 10,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |
- * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 5
- */
- boxTextMargin: 5,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ---------- | ------------------- | ------- | -------- | ------------------ |
- * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 10
- */
- noteMargin: 10,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------- | ----------------------- | ------- | -------- | ------------------ |
- * | messageMargin | Space between messages. | Integer | Required | Any Positive Value |
- *
- * **Notes:**
- *
- * Space between messages.
- *
- * Default value: 35
- */
- messageMargin: 35,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------ | --------------------------- | ---- | -------- | ------------------------- |
- * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' |
- *
- * **Notes:** Default value: 'center'
- */
- messageAlign: 'center',
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |
- * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value |
- *
- * **Notes:**
- *
- * Depending on css styling this might need adjustment.
- *
- * Default value: 1
- */
- bottomMarginAdj: 1,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | ----------- | ------- | -------- | ----------- |
- * | useMaxWidth | See notes | boolean | 4 | true, false |
- *
- * **Notes:**
- *
- * When this flag is set the height and width is set to 100% and is then scaling with the
- * available space if not the absolute space required is used.
- *
- * Default value: true
- */
- useMaxWidth: true,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | --------------------------------- | ---- | -------- | ----------- |
- * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false |
- *
- * **Notes:**
- *
- * This will display arrows that start and begin at the same node as right angles, rather than a
- * curves
- *
- * Default value: false
- */
- rightAngles: false,
- taskFontSize: 14,
- taskFontFamily: '"Open Sans", sans-serif',
- taskMargin: 50,
- // width of activation box
- activationWidth: 10,
-
- // text placement as: tspan | fo | old only text as before
- textPlacement: 'fo',
- actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],
-
- sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],
- sectionColours: ['#fff'],
- },
- /** The object containing configurations specific for timeline diagrams */
- timeline: {
- /**
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |
- * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 50
- */
- diagramMarginX: 50,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | -------------------------------------------------- | ------- | -------- | ------------------ |
- * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 10
- */
- diagramMarginY: 10,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | --------------------- | ------- | -------- | ------------------ |
- * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 50
- */
- leftMargin: 150,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | -------------------- | ------- | -------- | ------------------ |
- * | width | Width of actor boxes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 150
- */
- width: 150,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | --------------------- | ------- | -------- | ------------------ |
- * | height | Height of actor boxes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 65
- */
- height: 50,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | ------------------------ | ------- | -------- | ------------------ |
- * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 10
- */
- boxMargin: 10,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |
- * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 5
- */
- boxTextMargin: 5,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ---------- | ------------------- | ------- | -------- | ------------------ |
- * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 10
- */
- noteMargin: 10,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------- | ----------------------- | ------- | -------- | ------------------ |
- * | messageMargin | Space between messages. | Integer | Required | Any Positive Value |
- *
- * **Notes:**
- *
- * Space between messages.
- *
- * Default value: 35
- */
- messageMargin: 35,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------ | --------------------------- | ---- | -------- | ------------------------- |
- * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' |
- *
- * **Notes:** Default value: 'center'
- */
- messageAlign: 'center',
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |
- * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value |
- *
- * **Notes:**
- *
- * Depending on css styling this might need adjustment.
- *
- * Default value: 1
- */
- bottomMarginAdj: 1,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | ----------- | ------- | -------- | ----------- |
- * | useMaxWidth | See notes | boolean | 4 | true, false |
- *
- * **Notes:**
- *
- * When this flag is set the height and width is set to 100% and is then scaling with the
- * available space if not the absolute space required is used.
- *
- * Default value: true
- */
- useMaxWidth: true,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | --------------------------------- | ---- | -------- | ----------- |
- * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false |
- *
- * **Notes:**
- *
- * This will display arrows that start and begin at the same node as right angles, rather than a
- * curves
- *
- * Default value: false
- */
- rightAngles: false,
- taskFontSize: 14,
- taskFontFamily: '"Open Sans", sans-serif',
- taskMargin: 50,
- // width of activation box
- activationWidth: 10,
-
- // text placement as: tspan | fo | old only text as before
- textPlacement: 'fo',
- actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],
-
- sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],
- sectionColours: ['#fff'],
- disableMulticolor: false,
- },
- class: {
- /**
- * ### titleTopMargin
- *
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |
- * | titleTopMargin | Margin top for the text over the class diagram | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 25
- */
- titleTopMargin: 25,
- arrowMarkerAbsolute: false,
- dividerMargin: 10,
- padding: 5,
- textHeight: 10,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | ----------- | ------- | -------- | ----------- |
- * | useMaxWidth | See notes | boolean | 4 | true, false |
- *
- * **Notes:**
- *
- * When this flag is set the height and width is set to 100% and is then scaling with the
- * available space if not the absolute space required is used.
- *
- * Default value: true
- */
- useMaxWidth: true,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ----------- | ------- | -------- | ----------------------- |
- * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |
- *
- * **Notes**:
- *
- * Decides which rendering engine that is to be used for the rendering. Legal values are:
- * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid
- *
- * Default value: 'dagre-d3'
- */
- defaultRenderer: 'dagre-wrapper',
- },
- state: {
- /**
- * ### titleTopMargin
- *
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |
- * | titleTopMargin | Margin top for the text over the state diagram | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 25
- */
- titleTopMargin: 25,
- dividerMargin: 10,
- sizeUnit: 5,
- padding: 8,
- textHeight: 10,
- titleShift: -15,
- noteMargin: 10,
- forkWidth: 70,
- forkHeight: 7,
- // Used
- miniPadding: 2,
- // Font size factor, this is used to guess the width of the edges labels before rendering by dagre
- // layout. This might need updating if/when switching font
- fontSizeFactor: 5.02,
- fontSize: 24,
- labelHeight: 16,
- edgeLengthFactor: '20',
- compositTitleSize: 35,
- radius: 5,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | ----------- | ------- | -------- | ----------- |
- * | useMaxWidth | See notes | boolean | 4 | true, false |
- *
- * **Notes:**
- *
- * When this flag is set the height and width is set to 100% and is then scaling with the
- * available space if not the absolute space required is used.
- *
- * Default value: true
- */
- useMaxWidth: true,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ----------- | ------- | -------- | ----------------------- |
- * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |
- *
- * **Notes:**
- *
- * Decides which rendering engine that is to be used for the rendering. Legal values are:
- * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid
- *
- * Default value: 'dagre-d3'
- */
- defaultRenderer: 'dagre-wrapper',
- },
-
- /** The object containing configurations specific for entity relationship diagrams */
- er: {
- /**
- * ### titleTopMargin
- *
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |
- * | titleTopMargin | Margin top for the text over the diagram | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 25
- */
- titleTopMargin: 25,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |
- * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |
- *
- * **Notes:**
- *
- * The amount of padding around the diagram as a whole so that embedded diagrams have margins,
- * expressed in pixels
- *
- * Default value: 20
- */
- diagramPadding: 20,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ---------------------------------------- | ------ | -------- | ---------------------- |
- * | layoutDirection | Directional bias for layout of entities. | string | Required | "TB", "BT", "LR", "RL" |
- *
- * **Notes:**
- *
- * 'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.
- *
- * T = top, B = bottom, L = left, and R = right.
- *
- * Default value: 'TB'
- */
- layoutDirection: 'TB',
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | ---------------------------------- | ------- | -------- | ------------------ |
- * | minEntityWidth | The minimum width of an entity box | Integer | Required | Any Positive Value |
- *
- * **Notes:** Expressed in pixels. Default value: 100
- */
- minEntityWidth: 100,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ----------------------------------- | ------- | -------- | ------------------ |
- * | minEntityHeight | The minimum height of an entity box | Integer | 4 | Any Positive Value |
- *
- * **Notes:** Expressed in pixels Default value: 75
- */
- minEntityHeight: 75,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------- | ------------------------------------------------------------ | ------- | -------- | ------------------ |
- * | entityPadding | Minimum internal padding between text in box and box borders | Integer | 4 | Any Positive Value |
- *
- * **Notes:**
- *
- * The minimum internal padding between text in an entity box and the enclosing box borders,
- * expressed in pixels.
- *
- * Default value: 15
- */
- entityPadding: 15,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | ----------------------------------- | ------ | -------- | -------------------- |
- * | stroke | Stroke color of box edges and lines | string | 4 | Any recognized color |
- *
- * **Notes:** Default value: 'gray'
- */
- stroke: 'gray',
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | -------------------------- | ------ | -------- | -------------------- |
- * | fill | Fill color of entity boxes | string | 4 | Any recognized color |
- *
- * **Notes:** Default value: 'honeydew'
- */
- fill: 'honeydew',
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | ------------------- | ------- | -------- | ------------------ |
- * | fontSize | Font Size in pixels | Integer | | Any Positive Value |
- *
- * **Notes:**
- *
- * Font size (expressed as an integer representing a number of pixels) Default value: 12
- */
- fontSize: 12,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | ----------- | ------- | -------- | ----------- |
- * | useMaxWidth | See Notes | boolean | Required | true, false |
- *
- * **Notes:**
- *
- * When this flag is set to true, the diagram width is locked to 100% and scaled based on
- * available space. If set to false, the diagram reserves its absolute width.
- *
- * Default value: true
- */
- useMaxWidth: true,
- },
-
- /** The object containing configurations specific for pie diagrams */
- pie: {
- useWidth: undefined,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | ----------- | ------- | -------- | ----------- |
- * | useMaxWidth | See Notes | boolean | Required | true, false |
- *
- * **Notes:**
- *
- * When this flag is set to true, the diagram width is locked to 100% and scaled based on
- * available space. If set to false, the diagram reserves its absolute width.
- *
- * Default value: true
- */
- useMaxWidth: true,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------ | -------------------------------------------------------------------------------- | ------- | -------- | ------------------- |
- * | textPosition | Axial position of slice's label from zero at the center to 1 at the outside edge | Number | Optional | Decimal from 0 to 1 |
- *
- * **Notes:** Default value: 0.75
- */
- textPosition: 0.75,
- },
-
- quadrantChart: {
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ---------------------------------- | ------- | -------- | ------------------- |
- * | chartWidth | Width of the chart | number | Optional | Any positive number |
- *
- * **Notes:**
- * Default value: 500
- */
- chartWidth: 500,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ---------------------------------- | ------- | -------- | ------------------- |
- * | chartHeight | Height of the chart | number | Optional | Any positive number |
- *
- * **Notes:**
- * Default value: 500
- */
- chartHeight: 500,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- |
- * | titlePadding | Chart title top and bottom padding | number | Optional | Any positive number |
- *
- * **Notes:**
- * Default value: 10
- */
- titlePadding: 10,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- |
- * | titleFontSize | Chart title font size | number | Optional | Any positive number |
- *
- * **Notes:**
- * Default value: 20
- */
- titleFontSize: 20,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ---------------------------------- | ------- | -------- | ------------------- |
- * | quadrantPadding | Padding around the quadrant square | number | Optional | Any positive number |
- *
- * **Notes:**
- * Default value: 5
- */
- quadrantPadding: 5,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ---------------------- | -------------------------------------------------------------------------- | ------- | -------- | ------------------- |
- * | quadrantTextTopPadding | quadrant title padding from top if the quadrant is rendered on top | number | Optional | Any positive number |
- *
- * **Notes:**
- * Default value: 5
- */
- quadrantTextTopPadding: 5,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- |
- * | quadrantLabelFontSize | quadrant title font size | number | Optional | Any positive number |
- *
- * **Notes:**
- * Default value: 16
- */
- quadrantLabelFontSize: 16,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------------------------- | ------------------------------------------------------------- | ------- | -------- | ------------------- |
- * | quadrantInternalBorderStrokeWidth | stroke width of edges of the box that are inside the quadrant | number | Optional | Any positive number |
- *
- * **Notes:**
- * Default value: 1
- */
- quadrantInternalBorderStrokeWidth: 1,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------------------------- | -------------------------------------------------------------- | ------- | -------- | ------------------- |
- * | quadrantExternalBorderStrokeWidth | stroke width of edges of the box that are outside the quadrant | number | Optional | Any positive number |
- *
- * **Notes:**
- * Default value: 2
- */
- quadrantExternalBorderStrokeWidth: 2,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ---------------------------------- | ------- | -------- | ------------------- |
- * | xAxisLabelPadding | Padding around x-axis labels | number | Optional | Any positive number |
- *
- * **Notes:**
- * Default value: 5
- */
- xAxisLabelPadding: 5,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- |
- * | xAxisLabelFontSize | x-axis label font size | number | Optional | Any positive number |
- *
- * **Notes:**
- * Default value: 16
- */
- xAxisLabelFontSize: 16,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------- | ------------------------------- | ------- | -------- | ------------------- |
- * | xAxisPosition | position of x-axis labels | string | Optional | 'top' or 'bottom' |
- *
- * **Notes:**
- * Default value: top
- */
- xAxisPosition: 'top',
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ---------------------------------- | ------- | -------- | ------------------- |
- * | yAxisLabelPadding | Padding around y-axis labels | number | Optional | Any positive number |
- *
- * **Notes:**
- * Default value: 5
- */
- yAxisLabelPadding: 5,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- |
- * | yAxisLabelFontSize | y-axis label font size | number | Optional | Any positive number |
- *
- * **Notes:**
- * Default value: 16
- */
- yAxisLabelFontSize: 16,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------- | ------------------------------- | ------- | -------- | ------------------- |
- * | yAxisPosition | position of y-axis labels | string | Optional | 'left' or 'right' |
- *
- * **Notes:**
- * Default value: left
- */
- yAxisPosition: 'left',
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ---------------------- | -------------------------------------- | ------- | -------- | ------------------- |
- * | pointTextPadding | padding between point and point label | number | Optional | Any positive number |
- *
- * **Notes:**
- * Default value: 5
- */
- pointTextPadding: 5,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ---------------------- | ---------------------- | ------- | -------- | ------------------- |
- * | pointTextPadding | point title font size | number | Optional | Any positive number |
- *
- * **Notes:**
- * Default value: 12
- */
- pointLabelFontSize: 12,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------- | ------------------------------- | ------- | -------- | ------------------- |
- * | pointRadius | radius of the point to be drawn | number | Optional | Any positive number |
- *
- * **Notes:**
- * Default value: 5
- */
- pointRadius: 5,
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | ----------- | ------- | -------- | ----------- |
- * | useMaxWidth | See Notes | boolean | Required | true, false |
- *
- * **Notes:**
- *
- * When this flag is set to true, the diagram width is locked to 100% and scaled based on
- * available space. If set to false, the diagram reserves its absolute width.
- *
- * Default value: true
- */
- useMaxWidth: true,
- },
-
- /** The object containing configurations specific for req diagrams */
- requirement: {
- useWidth: undefined,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | ----------- | ------- | -------- | ----------- |
- * | useMaxWidth | See Notes | boolean | Required | true, false |
- *
- * **Notes:**
- *
- * When this flag is set to true, the diagram width is locked to 100% and scaled based on
- * available space. If set to false, the diagram reserves its absolute width.
- *
- * Default value: true
- */
- useMaxWidth: true,
-
- rect_fill: '#f9f9f9',
- text_color: '#333',
- rect_border_size: '0.5px',
- rect_border_color: '#bbb',
- rect_min_width: 200,
- rect_min_height: 200,
- fontSize: 14,
- rect_padding: 10,
- line_height: 20,
- },
- gitGraph: {
- /**
- * ### titleTopMargin
- *
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |
- * | titleTopMargin | Margin top for the text over the Git diagram | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 25
- */
- titleTopMargin: 25,
- diagramPadding: 8,
- nodeLabel: {
- width: 75,
- height: 100,
- x: -25,
- y: 0,
- },
- mainBranchName: 'main',
- mainBranchOrder: 0,
- showCommitLabel: true,
- showBranches: true,
- rotateCommitLabel: true,
- },
-
- /** The object containing configurations specific for c4 diagrams */
- c4: {
- useWidth: undefined,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |
- * | diagramMarginX | Margin to the right and left of the c4 diagram | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 50
- */
- diagramMarginX: 50,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | ------------------------------------------- | ------- | -------- | ------------------ |
- * | diagramMarginY | Margin to the over and under the c4 diagram | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 10
- */
- diagramMarginY: 10,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------- | --------------------- | ------- | -------- | ------------------ |
- * | c4ShapeMargin | Margin between shapes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 50
- */
- c4ShapeMargin: 50,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | -------------- | ---------------------- | ------- | -------- | ------------------ |
- * | c4ShapePadding | Padding between shapes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 20
- */
- c4ShapePadding: 20,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | --------------------- | ------- | -------- | ------------------ |
- * | width | Width of person boxes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 216
- */
- width: 216,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | ---------------------- | ------- | -------- | ------------------ |
- * | height | Height of person boxes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 60
- */
- height: 60,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------- | ------------------- | ------- | -------- | ------------------ |
- * | boxMargin | Margin around boxes | Integer | Required | Any Positive Value |
- *
- * **Notes:** Default value: 10
- */
- boxMargin: 10,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ----------- | ----------- | ------- | -------- | ----------- |
- * | useMaxWidth | See Notes | boolean | Required | true, false |
- *
- * **Notes:** When this flag is set to true, the height and width is set to 100% and is then
- * scaling with the available space. If set to false, the absolute space required is used.
- *
- * Default value: true
- */
- useMaxWidth: true,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | ------------ | ----------- | ------- | -------- | ------------------ |
- * | c4ShapeInRow | See Notes | Integer | Required | Any Positive Value |
- *
- * **Notes:** How many shapes to place in each row.
- *
- * Default value: 4
- */
- c4ShapeInRow: 4,
-
- nextLinePaddingX: 0,
-
- /**
- * | Parameter | Description | Type | Required | Values |
- * | --------------- | ----------- | ------- | -------- | ------------------ |
- * | c4BoundaryInRow | See Notes | Integer | Required | Any Positive Value |
- *
- * **Notes:** How many boundaries to place in each row.
- *
- * Default value: 2
- */
- c4BoundaryInRow: 2,
-
- /**
- * This sets the font size of Person shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- personFontSize: 14,
- /**
- * This sets the font family of Person shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- personFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of Person shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- personFontWeight: 'normal',
-
- /**
- * This sets the font size of External Person shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- external_personFontSize: 14,
- /**
- * This sets the font family of External Person shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- external_personFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of External Person shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- external_personFontWeight: 'normal',
-
- /**
- * This sets the font size of System shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- systemFontSize: 14,
- /**
- * This sets the font family of System shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- systemFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of System shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- systemFontWeight: 'normal',
-
- /**
- * This sets the font size of External System shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- external_systemFontSize: 14,
- /**
- * This sets the font family of External System shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- external_systemFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of External System shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- external_systemFontWeight: 'normal',
-
- /**
- * This sets the font size of System DB shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- system_dbFontSize: 14,
- /**
- * This sets the font family of System DB shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- system_dbFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of System DB shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- system_dbFontWeight: 'normal',
-
- /**
- * This sets the font size of External System DB shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- external_system_dbFontSize: 14,
- /**
- * This sets the font family of External System DB shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- external_system_dbFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of External System DB shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- external_system_dbFontWeight: 'normal',
-
- /**
- * This sets the font size of System Queue shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- system_queueFontSize: 14,
- /**
- * This sets the font family of System Queue shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- system_queueFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of System Queue shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- system_queueFontWeight: 'normal',
-
- /**
- * This sets the font size of External System Queue shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- external_system_queueFontSize: 14,
- /**
- * This sets the font family of External System Queue shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- external_system_queueFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of External System Queue shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- external_system_queueFontWeight: 'normal',
-
- /**
- * This sets the font size of Boundary shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- boundaryFontSize: 14,
- /**
- * This sets the font family of Boundary shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- boundaryFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of Boundary shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- boundaryFontWeight: 'normal',
-
- /**
- * This sets the font size of Message shape for the diagram
- *
- * **Notes:** Default value: 12.
- */
- messageFontSize: 12,
- /**
- * This sets the font family of Message shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- messageFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of Message shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- messageFontWeight: 'normal',
-
- /**
- * This sets the font size of Container shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- containerFontSize: 14,
- /**
- * This sets the font family of Container shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- containerFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of Container shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- containerFontWeight: 'normal',
-
- /**
- * This sets the font size of External Container shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- external_containerFontSize: 14,
- /**
- * This sets the font family of External Container shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- external_containerFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of External Container shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- external_containerFontWeight: 'normal',
-
- /**
- * This sets the font size of Container DB shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- container_dbFontSize: 14,
- /**
- * This sets the font family of Container DB shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- container_dbFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of Container DB shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- container_dbFontWeight: 'normal',
-
- /**
- * This sets the font size of External Container DB shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- external_container_dbFontSize: 14,
- /**
- * This sets the font family of External Container DB shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- external_container_dbFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of External Container DB shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- external_container_dbFontWeight: 'normal',
-
- /**
- * This sets the font size of Container Queue shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- container_queueFontSize: 14,
- /**
- * This sets the font family of Container Queue shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- container_queueFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of Container Queue shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- container_queueFontWeight: 'normal',
-
- /**
- * This sets the font size of External Container Queue shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- external_container_queueFontSize: 14,
- /**
- * This sets the font family of External Container Queue shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- external_container_queueFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of External Container Queue shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- external_container_queueFontWeight: 'normal',
-
- /**
- * This sets the font size of Component shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- componentFontSize: 14,
- /**
- * This sets the font family of Component shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- componentFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of Component shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- componentFontWeight: 'normal',
-
- /**
- * This sets the font size of External Component shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- external_componentFontSize: 14,
- /**
- * This sets the font family of External Component shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- external_componentFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of External Component shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- external_componentFontWeight: 'normal',
-
- /**
- * This sets the font size of Component DB shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- component_dbFontSize: 14,
- /**
- * This sets the font family of Component DB shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- component_dbFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of Component DB shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- component_dbFontWeight: 'normal',
-
- /**
- * This sets the font size of External Component DB shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- external_component_dbFontSize: 14,
- /**
- * This sets the font family of External Component DB shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- external_component_dbFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of External Component DB shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- external_component_dbFontWeight: 'normal',
-
- /**
- * This sets the font size of Component Queue shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- component_queueFontSize: 14,
- /**
- * This sets the font family of Component Queue shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- component_queueFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of Component Queue shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- component_queueFontWeight: 'normal',
-
- /**
- * This sets the font size of External Component Queue shape for the diagram
- *
- * **Notes:** Default value: 14.
- */
- external_component_queueFontSize: 14,
- /**
- * This sets the font family of External Component Queue shape for the diagram
- *
- * **Notes:** Default value: "Open Sans", sans-serif.
- */
- external_component_queueFontFamily: '"Open Sans", sans-serif',
- /**
- * This sets the font weight of External Component Queue shape for the diagram
- *
- * **Notes:** Default value: normal.
- */
- external_component_queueFontWeight: 'normal',
-
- /**
- * This sets the auto-wrap state for the diagram
- *
- * **Notes:** Default value: true.
- */
- wrap: true,
-
- /**
- * This sets the auto-wrap padding for the diagram (sides only)
- *
- * **Notes:** Default value: 0.
- */
- wrapPadding: 10,
-
- personFont: function () {
- return {
- fontFamily: this.personFontFamily,
- fontSize: this.personFontSize,
- fontWeight: this.personFontWeight,
- };
- },
-
- external_personFont: function () {
- return {
- fontFamily: this.external_personFontFamily,
- fontSize: this.external_personFontSize,
- fontWeight: this.external_personFontWeight,
- };
- },
-
- systemFont: function () {
- return {
- fontFamily: this.systemFontFamily,
- fontSize: this.systemFontSize,
- fontWeight: this.systemFontWeight,
- };
- },
-
- external_systemFont: function () {
- return {
- fontFamily: this.external_systemFontFamily,
- fontSize: this.external_systemFontSize,
- fontWeight: this.external_systemFontWeight,
- };
- },
-
- system_dbFont: function () {
- return {
- fontFamily: this.system_dbFontFamily,
- fontSize: this.system_dbFontSize,
- fontWeight: this.system_dbFontWeight,
- };
- },
-
- external_system_dbFont: function () {
- return {
- fontFamily: this.external_system_dbFontFamily,
- fontSize: this.external_system_dbFontSize,
- fontWeight: this.external_system_dbFontWeight,
- };
- },
-
- system_queueFont: function () {
- return {
- fontFamily: this.system_queueFontFamily,
- fontSize: this.system_queueFontSize,
- fontWeight: this.system_queueFontWeight,
- };
- },
-
- external_system_queueFont: function () {
- return {
- fontFamily: this.external_system_queueFontFamily,
- fontSize: this.external_system_queueFontSize,
- fontWeight: this.external_system_queueFontWeight,
- };
- },
-
- containerFont: function () {
- return {
- fontFamily: this.containerFontFamily,
- fontSize: this.containerFontSize,
- fontWeight: this.containerFontWeight,
- };
- },
-
- external_containerFont: function () {
- return {
- fontFamily: this.external_containerFontFamily,
- fontSize: this.external_containerFontSize,
- fontWeight: this.external_containerFontWeight,
- };
- },
-
- container_dbFont: function () {
- return {
- fontFamily: this.container_dbFontFamily,
- fontSize: this.container_dbFontSize,
- fontWeight: this.container_dbFontWeight,
- };
- },
-
- external_container_dbFont: function () {
- return {
- fontFamily: this.external_container_dbFontFamily,
- fontSize: this.external_container_dbFontSize,
- fontWeight: this.external_container_dbFontWeight,
- };
- },
-
- container_queueFont: function () {
- return {
- fontFamily: this.container_queueFontFamily,
- fontSize: this.container_queueFontSize,
- fontWeight: this.container_queueFontWeight,
- };
- },
-
- external_container_queueFont: function () {
- return {
- fontFamily: this.external_container_queueFontFamily,
- fontSize: this.external_container_queueFontSize,
- fontWeight: this.external_container_queueFontWeight,
- };
- },
-
- componentFont: function () {
- return {
- fontFamily: this.componentFontFamily,
- fontSize: this.componentFontSize,
- fontWeight: this.componentFontWeight,
- };
- },
-
- external_componentFont: function () {
- return {
- fontFamily: this.external_componentFontFamily,
- fontSize: this.external_componentFontSize,
- fontWeight: this.external_componentFontWeight,
- };
- },
-
- component_dbFont: function () {
- return {
- fontFamily: this.component_dbFontFamily,
- fontSize: this.component_dbFontSize,
- fontWeight: this.component_dbFontWeight,
- };
- },
-
- external_component_dbFont: function () {
- return {
- fontFamily: this.external_component_dbFontFamily,
- fontSize: this.external_component_dbFontSize,
- fontWeight: this.external_component_dbFontWeight,
- };
- },
-
- component_queueFont: function () {
- return {
- fontFamily: this.component_queueFontFamily,
- fontSize: this.component_queueFontSize,
- fontWeight: this.component_queueFontWeight,
- };
- },
-
- external_component_queueFont: function () {
- return {
- fontFamily: this.external_component_queueFontFamily,
- fontSize: this.external_component_queueFontSize,
- fontWeight: this.external_component_queueFontWeight,
- };
- },
-
- boundaryFont: function () {
- return {
- fontFamily: this.boundaryFontFamily,
- fontSize: this.boundaryFontSize,
- fontWeight: this.boundaryFontWeight,
- };
- },
-
- messageFont: function () {
- return {
- fontFamily: this.messageFontFamily,
- fontSize: this.messageFontSize,
- fontWeight: this.messageFontWeight,
- };
- },
-
- // ' Colors
- // ' ##################################
- person_bg_color: '#08427B',
- person_border_color: '#073B6F',
- external_person_bg_color: '#686868',
- external_person_border_color: '#8A8A8A',
- system_bg_color: '#1168BD',
- system_border_color: '#3C7FC0',
- system_db_bg_color: '#1168BD',
- system_db_border_color: '#3C7FC0',
- system_queue_bg_color: '#1168BD',
- system_queue_border_color: '#3C7FC0',
- external_system_bg_color: '#999999',
- external_system_border_color: '#8A8A8A',
- external_system_db_bg_color: '#999999',
- external_system_db_border_color: '#8A8A8A',
- external_system_queue_bg_color: '#999999',
- external_system_queue_border_color: '#8A8A8A',
- container_bg_color: '#438DD5',
- container_border_color: '#3C7FC0',
- container_db_bg_color: '#438DD5',
- container_db_border_color: '#3C7FC0',
- container_queue_bg_color: '#438DD5',
- container_queue_border_color: '#3C7FC0',
- external_container_bg_color: '#B3B3B3',
- external_container_border_color: '#A6A6A6',
- external_container_db_bg_color: '#B3B3B3',
- external_container_db_border_color: '#A6A6A6',
- external_container_queue_bg_color: '#B3B3B3',
- external_container_queue_border_color: '#A6A6A6',
- component_bg_color: '#85BBF0',
- component_border_color: '#78A8D8',
- component_db_bg_color: '#85BBF0',
- component_db_border_color: '#78A8D8',
- component_queue_bg_color: '#85BBF0',
- component_queue_border_color: '#78A8D8',
- external_component_bg_color: '#CCCCCC',
- external_component_border_color: '#BFBFBF',
- external_component_db_bg_color: '#CCCCCC',
- external_component_db_border_color: '#BFBFBF',
- external_component_queue_bg_color: '#CCCCCC',
- external_component_queue_border_color: '#BFBFBF',
- },
- mindmap: {
- useMaxWidth: true,
- padding: 10,
- maxNodeWidth: 200,
- },
- sankey: {
- width: 600,
- height: 400,
- linkColor: 'gradient',
- nodeAlignment: 'justify',
- useMaxWidth: false,
- },
- fontSize: 16,
-};
-
-if (config.class) {
- config.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;
-}
-if (config.gitGraph) {
- config.gitGraph.arrowMarkerAbsolute = config.arrowMarkerAbsolute;
-}
-
-const keyify = (obj: any, prefix = ''): string[] =>
- Object.keys(obj).reduce((res: string[], el): string[] => {
- if (Array.isArray(obj[el])) {
- return res;
- } else if (typeof obj[el] === 'object' && obj[el] !== null) {
- return [...res, prefix + el, ...keyify(obj[el], '')];
- }
- return [...res, prefix + el];
- }, []);
-
-export const configKeys: string[] = keyify(config, '');
-export default config;
diff --git a/packages/mermaid/src/schemas/config.schema.yaml b/packages/mermaid/src/schemas/config.schema.yaml
index 306aab2cc..6e5f48d95 100644
--- a/packages/mermaid/src/schemas/config.schema.yaml
+++ b/packages/mermaid/src/schemas/config.schema.yaml
@@ -1455,6 +1455,7 @@ $defs: # JSON Schema definition (maybe we should move these to a seperate file)
- axisFormat
- useMaxWidth
- topAxis
+ - weekday
properties:
titleTopMargin:
$ref: '#/$defs/GitGraphDiagramConfig/properties/titleTopMargin'
@@ -1544,6 +1545,20 @@ $defs: # JSON Schema definition (maybe we should move these to a seperate file)
default: ''
# Allow any string for typescript backwards compatibility (fix in Mermaid v10)
tsType: 'string | "compact"'
+ weekday:
+ description: |
+ On which day a week-based interval should start
+ type: string
+ tsType: '"monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday"'
+ enum:
+ - monday
+ - tuesday
+ - wednesday
+ - thursday
+ - friday
+ - saturday
+ - sunday
+ default: sunday
SequenceDiagramConfig:
title: Sequence Diagram Config
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 303985a31..f258400a6 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -63,14 +63,14 @@ importers:
specifier: ^5.59.0
version: 5.59.0(eslint@8.39.0)(typescript@5.1.3)
'@vitest/coverage-v8':
- specifier: ^0.32.2
- version: 0.32.2(vitest@0.32.2)
+ specifier: ^0.33.0
+ version: 0.33.0(vitest@0.33.0)
'@vitest/spy':
- specifier: ^0.32.2
- version: 0.32.2
+ specifier: ^0.33.0
+ version: 0.33.0
'@vitest/ui':
- specifier: ^0.32.2
- version: 0.32.2(vitest@0.32.2)
+ specifier: ^0.33.0
+ version: 0.33.0(vitest@0.33.0)
ajv:
specifier: ^8.12.0
version: 8.12.0
@@ -80,9 +80,6 @@ importers:
cors:
specifier: ^2.8.5
version: 2.8.5
- coveralls:
- specifier: ^3.1.1
- version: 3.1.1
cypress:
specifier: ^12.10.0
version: 12.10.0
@@ -189,8 +186,8 @@ importers:
specifier: ^4.1.0
version: 4.1.0(vite@4.3.9)
vitest:
- specifier: ^0.32.2
- version: 0.32.2(@vitest/ui@0.32.2)(jsdom@22.0.0)
+ specifier: ^0.33.0
+ version: 0.33.0(@vitest/ui@0.33.0)(jsdom@22.0.0)
packages/mermaid:
dependencies:
@@ -225,8 +222,8 @@ importers:
specifier: ^1.11.7
version: 1.11.7
dompurify:
- specifier: 3.0.4
- version: 3.0.4
+ specifier: 3.0.5
+ version: 3.0.5
elkjs:
specifier: ^0.8.2
version: 0.8.2
@@ -306,9 +303,6 @@ importers:
concurrently:
specifier: ^8.0.1
version: 8.0.1
- coveralls:
- specifier: ^3.1.1
- version: 3.1.1
cpy-cli:
specifier: ^4.2.0
version: 4.2.0
@@ -3860,6 +3854,10 @@ packages:
/@jridgewell/sourcemap-codec@1.4.14:
resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
+ /@jridgewell/sourcemap-codec@1.4.15:
+ resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+ dev: true
+
/@jridgewell/trace-mapping@0.3.17:
resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==}
dependencies:
@@ -5187,8 +5185,8 @@ packages:
vue: 3.3.4
dev: true
- /@vitest/coverage-v8@0.32.2(vitest@0.32.2):
- resolution: {integrity: sha512-/+V3nB3fyeuuSeKxCfi6XmWjDIxpky7AWSkGVfaMjAk7di8igBwRsThLjultwIZdTDH1RAxpjmCXEfSqsMFZOA==}
+ /@vitest/coverage-v8@0.33.0(vitest@0.33.0):
+ resolution: {integrity: sha512-Rj5IzoLF7FLj6yR7TmqsfRDSeaFki6NAJ/cQexqhbWkHEV2htlVGrmuOde3xzvFsCbLCagf4omhcIaVmfU8Okg==}
peerDependencies:
vitest: '>=0.32.0 <1'
dependencies:
@@ -5198,68 +5196,67 @@ packages:
istanbul-lib-report: 3.0.0
istanbul-lib-source-maps: 4.0.1
istanbul-reports: 3.1.5
- magic-string: 0.30.0
+ magic-string: 0.30.1
picocolors: 1.0.0
- std-env: 3.3.2
+ std-env: 3.3.3
test-exclude: 6.0.0
v8-to-istanbul: 9.1.0
- vitest: 0.32.2(@vitest/ui@0.32.2)(jsdom@22.0.0)
+ vitest: 0.33.0(@vitest/ui@0.33.0)(jsdom@22.0.0)
transitivePeerDependencies:
- supports-color
dev: true
- /@vitest/expect@0.32.2:
- resolution: {integrity: sha512-6q5yzweLnyEv5Zz1fqK5u5E83LU+gOMVBDuxBl2d2Jfx1BAp5M+rZgc5mlyqdnxquyoiOXpXmFNkcGcfFnFH3Q==}
+ /@vitest/expect@0.33.0:
+ resolution: {integrity: sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==}
dependencies:
- '@vitest/spy': 0.32.2
- '@vitest/utils': 0.32.2
+ '@vitest/spy': 0.33.0
+ '@vitest/utils': 0.33.0
chai: 4.3.7
dev: true
- /@vitest/runner@0.32.2:
- resolution: {integrity: sha512-06vEL0C1pomOEktGoLjzZw+1Fb+7RBRhmw/06WkDrd1akkT9i12su0ku+R/0QM69dfkIL/rAIDTG+CSuQVDcKw==}
+ /@vitest/runner@0.33.0:
+ resolution: {integrity: sha512-UPfACnmCB6HKRHTlcgCoBh6ppl6fDn+J/xR8dTufWiKt/74Y9bHci5CKB8tESSV82zKYtkBJo9whU3mNvfaisg==}
dependencies:
- '@vitest/utils': 0.32.2
- concordance: 5.0.4
+ '@vitest/utils': 0.33.0
p-limit: 4.0.0
pathe: 1.1.1
dev: true
- /@vitest/snapshot@0.32.2:
- resolution: {integrity: sha512-JwhpeH/PPc7GJX38vEfCy9LtRzf9F4er7i4OsAJyV7sjPwjj+AIR8cUgpMTWK4S3TiamzopcTyLsZDMuldoi5A==}
+ /@vitest/snapshot@0.33.0:
+ resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==}
dependencies:
- magic-string: 0.30.0
+ magic-string: 0.30.1
pathe: 1.1.1
- pretty-format: 27.5.1
+ pretty-format: 29.5.0
dev: true
- /@vitest/spy@0.32.2:
- resolution: {integrity: sha512-Q/ZNILJ4ca/VzQbRM8ur3Si5Sardsh1HofatG9wsJY1RfEaw0XKP8IVax2lI1qnrk9YPuG9LA2LkZ0EI/3d4ug==}
+ /@vitest/spy@0.33.0:
+ resolution: {integrity: sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==}
dependencies:
- tinyspy: 2.1.0
+ tinyspy: 2.1.1
dev: true
- /@vitest/ui@0.32.2(vitest@0.32.2):
- resolution: {integrity: sha512-N5JKftnB8qzKFtpQC5OcUGxYTLo6wiB/95Lgyk6MF52t74Y7BJOWbf6EFYhXqt9J0MSbhOR2kapq+WKKUGDW0g==}
+ /@vitest/ui@0.33.0(vitest@0.33.0):
+ resolution: {integrity: sha512-7gbAjLqt30R4bodkJAutdpy4ncv+u5IKTHYTow1c2q+FOxZUC9cKOSqMUxjwaaTwLN+EnDnmXYPtg3CoahaUzQ==}
peerDependencies:
vitest: '>=0.30.1 <1'
dependencies:
- '@vitest/utils': 0.32.2
- fast-glob: 3.2.12
- fflate: 0.7.4
+ '@vitest/utils': 0.33.0
+ fast-glob: 3.3.0
+ fflate: 0.8.0
flatted: 3.2.7
- pathe: 1.1.0
+ pathe: 1.1.1
picocolors: 1.0.0
sirv: 2.0.3
- vitest: 0.32.2(@vitest/ui@0.32.2)(jsdom@22.0.0)
+ vitest: 0.33.0(@vitest/ui@0.33.0)(jsdom@22.0.0)
dev: true
- /@vitest/utils@0.32.2:
- resolution: {integrity: sha512-lnJ0T5i03j0IJaeW73hxe2AuVnZ/y1BhhCOuIcl9LIzXnbpXJT9Lrt6brwKHXLOiA7MZ6N5hSJjt0xE1dGNCzQ==}
+ /@vitest/utils@0.33.0:
+ resolution: {integrity: sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==}
dependencies:
diff-sequences: 29.4.3
loupe: 2.3.6
- pretty-format: 27.5.1
+ pretty-format: 29.5.0
dev: true
/@vue/compat@3.3.4(vue@3.3.4):
@@ -5848,6 +5845,12 @@ packages:
hasBin: true
dev: true
+ /acorn@8.10.0:
+ resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
+
/acorn@8.8.0:
resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==}
engines: {node: '>=0.4.0'}
@@ -6362,10 +6365,6 @@ packages:
resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
dev: true
- /blueimp-md5@2.19.0:
- resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==}
- dev: true
-
/bmpimagejs@1.0.4:
resolution: {integrity: sha512-21oKU7kbRt2OgOOj7rdiNr/yznDNUQ585plxR00rsmECcZr+6O1oCwB8OIoSHk/bDhbG8mFXIdeQuCPHgZ6QBw==}
dev: true
@@ -7001,20 +7000,6 @@ packages:
/concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
- /concordance@5.0.4:
- resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==}
- engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'}
- dependencies:
- date-time: 3.1.0
- esutils: 2.0.3
- fast-diff: 1.2.0
- js-string-escape: 1.0.1
- lodash: 4.17.21
- md5-hex: 3.0.1
- semver: 7.5.3
- well-known-symbols: 2.0.0
- dev: true
-
/concurrently@8.0.1:
resolution: {integrity: sha512-Sh8bGQMEL0TAmAm2meAXMjcASHZa7V0xXQVDBLknCPa9TPtkY9yYs+0cnGGgfdkW0SV1Mlg+hVGfXcoI8d3MJA==}
engines: {node: ^14.13.0 || >=16.0.0}
@@ -7172,18 +7157,6 @@ packages:
path-type: 4.0.0
dev: true
- /coveralls@3.1.1:
- resolution: {integrity: sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==}
- engines: {node: '>=6'}
- hasBin: true
- dependencies:
- js-yaml: 3.14.1
- lcov-parse: 1.0.0
- log-driver: 1.2.7
- minimist: 1.2.6
- request: 2.88.2
- dev: true
-
/cp-file@9.1.0:
resolution: {integrity: sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA==}
engines: {node: '>=10'}
@@ -7828,13 +7801,6 @@ packages:
engines: {node: '>=0.11'}
dev: true
- /date-time@3.1.0:
- resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==}
- engines: {node: '>=6'}
- dependencies:
- time-zone: 1.0.0
- dev: true
-
/dayjs@1.10.7:
resolution: {integrity: sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==}
dev: true
@@ -8098,8 +8064,8 @@ packages:
domelementtype: 2.3.0
dev: true
- /dompurify@3.0.4:
- resolution: {integrity: sha512-ae0mA+Qiqp6C29pqZX3fQgK+F91+F7wobM/v8DRzDqJdZJELXiFUx4PP4pK/mzUS0xkiSEx3Ncd9gr69jg3YsQ==}
+ /dompurify@3.0.5:
+ resolution: {integrity: sha512-F9e6wPGtY+8KNMRAVfxeCOHU0/NPWMSENNq4pQctuXRqqdEPW7q3CrLbR5Nse044WwacyjHGOMlvNsBe1y6z9A==}
dev: false
/domutils@3.0.1:
@@ -8952,10 +8918,6 @@ packages:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: true
- /fast-diff@1.2.0:
- resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==}
- dev: true
-
/fast-equals@4.0.3:
resolution: {integrity: sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==}
dev: true
@@ -8970,6 +8932,17 @@ packages:
merge2: 1.4.1
micromatch: 4.0.5
+ /fast-glob@3.3.0:
+ resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==}
+ engines: {node: '>=8.6.0'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.5
+ dev: true
+
/fast-json-stable-stringify@2.1.0:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
dev: true
@@ -9078,8 +9051,8 @@ packages:
web-streams-polyfill: 3.2.1
dev: true
- /fflate@0.7.4:
- resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==}
+ /fflate@0.8.0:
+ resolution: {integrity: sha512-FAdS4qMuFjsJj6XHbBaZeXOgaypXp8iw/Tpyuq/w3XA41jjLHT8NPA+n7czH/DDhdncq0nAyDZmPeWXh2qmdIg==}
dev: true
/figures@3.2.0:
@@ -9667,20 +9640,6 @@ packages:
uglify-js: 3.17.3
dev: true
- /har-schema@2.0.0:
- resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==}
- engines: {node: '>=4'}
- dev: true
-
- /har-validator@5.1.5:
- resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==}
- engines: {node: '>=6'}
- deprecated: this library is no longer supported
- dependencies:
- ajv: 6.12.6
- har-schema: 2.0.0
- dev: true
-
/hard-rejection@2.1.0:
resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
engines: {node: '>=6'}
@@ -9878,15 +9837,6 @@ packages:
- debug
dev: true
- /http-signature@1.2.0:
- resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==}
- engines: {node: '>=0.8', npm: '>=1.3.7'}
- dependencies:
- assert-plus: 1.0.0
- jsprim: 1.4.2
- sshpk: 1.17.0
- dev: true
-
/http-signature@1.3.6:
resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==}
engines: {node: '>=0.10'}
@@ -11009,11 +10959,6 @@ packages:
resolution: {integrity: sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==}
dev: true
- /js-string-escape@1.0.1:
- resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==}
- engines: {node: '>= 0.8'}
- dev: true
-
/js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
dev: true
@@ -11189,16 +11134,6 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /jsprim@1.4.2:
- resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==}
- engines: {node: '>=0.6.0'}
- dependencies:
- assert-plus: 1.0.0
- extsprintf: 1.3.0
- json-schema: 0.4.0
- verror: 1.10.0
- dev: true
-
/jsprim@2.0.2:
resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==}
engines: {'0': node >=0.6.0}
@@ -11260,11 +11195,6 @@ packages:
engines: {node: '> 0.8'}
dev: true
- /lcov-parse@1.0.0:
- resolution: {integrity: sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==}
- hasBin: true
- dev: true
-
/leven@3.1.0:
resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
engines: {node: '>=6'}
@@ -11469,11 +11399,6 @@ packages:
/lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
- /log-driver@1.2.7:
- resolution: {integrity: sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==}
- engines: {node: '>=0.8.6'}
- dev: true
-
/log-symbols@4.1.0:
resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
engines: {node: '>=10'}
@@ -11555,6 +11480,13 @@ packages:
dependencies:
'@jridgewell/sourcemap-codec': 1.4.14
+ /magic-string@0.30.1:
+ resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
+
/make-dir@3.1.0:
resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
engines: {node: '>=8'}
@@ -11616,13 +11548,6 @@ packages:
'@arr/every': 1.0.1
dev: true
- /md5-hex@3.0.1:
- resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==}
- engines: {node: '>=8'}
- dependencies:
- blueimp-md5: 2.19.0
- dev: true
-
/mdast-builder@1.1.1:
resolution: {integrity: sha512-a3KBk/LmYD6wKsWi8WJrGU/rXR4yuF4Men0JO0z6dSZCm5FrXXWTRDjqK0vGSqa+1M6p9edeuypZAZAzSehTUw==}
dependencies:
@@ -12167,10 +12092,6 @@ packages:
kind-of: 6.0.3
dev: true
- /minimist@1.2.6:
- resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==}
- dev: true
-
/minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: true
@@ -12201,13 +12122,13 @@ packages:
hasBin: true
dev: true
- /mlly@1.2.0:
- resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==}
+ /mlly@1.4.0:
+ resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==}
dependencies:
- acorn: 8.8.2
+ acorn: 8.10.0
pathe: 1.1.1
- pkg-types: 1.0.2
- ufo: 1.1.1
+ pkg-types: 1.0.3
+ ufo: 1.1.2
dev: true
/mri@1.2.0:
@@ -12451,10 +12372,6 @@ packages:
- supports-color
dev: true
- /oauth-sign@0.9.0:
- resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==}
- dev: true
-
/object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
@@ -12930,11 +12847,11 @@ packages:
find-up: 4.1.0
dev: true
- /pkg-types@1.0.2:
- resolution: {integrity: sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==}
+ /pkg-types@1.0.3:
+ resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==}
dependencies:
jsonc-parser: 3.2.0
- mlly: 1.2.0
+ mlly: 1.4.0
pathe: 1.1.1
dev: true
@@ -13100,15 +13017,6 @@ packages:
engines: {node: ^14.13.1 || >=16.0.0}
dev: true
- /pretty-format@27.5.1:
- resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- ansi-regex: 5.0.1
- ansi-styles: 5.2.0
- react-is: 17.0.2
- dev: true
-
/pretty-format@29.5.0:
resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -13252,10 +13160,6 @@ packages:
unpipe: 1.0.0
dev: true
- /react-is@17.0.2:
- resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
- dev: true
-
/react-is@18.2.0:
resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
dev: true
@@ -13497,33 +13401,6 @@ packages:
throttleit: 1.0.0
dev: true
- /request@2.88.2:
- resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==}
- engines: {node: '>= 6'}
- deprecated: request has been deprecated, see https://github.com/request/request/issues/3142
- dependencies:
- aws-sign2: 0.7.0
- aws4: 1.11.0
- caseless: 0.12.0
- combined-stream: 1.0.8
- extend: 3.0.2
- forever-agent: 0.6.1
- form-data: 2.3.3
- har-validator: 5.1.5
- http-signature: 1.2.0
- is-typedarray: 1.0.0
- isstream: 0.1.2
- json-stringify-safe: 5.0.1
- mime-types: 2.1.35
- oauth-sign: 0.9.0
- performance-now: 2.1.0
- qs: 6.5.3
- safe-buffer: 5.2.1
- tough-cookie: 2.5.0
- tunnel-agent: 0.6.0
- uuid: 3.4.0
- dev: true
-
/require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
@@ -14291,8 +14168,8 @@ packages:
engines: {node: '>= 0.8'}
dev: true
- /std-env@3.3.2:
- resolution: {integrity: sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==}
+ /std-env@3.3.3:
+ resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==}
dev: true
/stream-combiner@0.0.4:
@@ -14455,7 +14332,7 @@ packages:
/strip-literal@1.0.1:
resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==}
dependencies:
- acorn: 8.8.2
+ acorn: 8.10.0
dev: true
/stylis@4.1.3:
@@ -14690,11 +14567,6 @@ packages:
resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==}
dev: true
- /time-zone@1.0.0:
- resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==}
- engines: {node: '>=4'}
- dev: true
-
/timers-ext@0.1.7:
resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==}
dependencies:
@@ -14718,13 +14590,13 @@ packages:
resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==}
dev: true
- /tinypool@0.5.0:
- resolution: {integrity: sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==}
+ /tinypool@0.6.0:
+ resolution: {integrity: sha512-FdswUUo5SxRizcBc6b1GSuLpLjisa8N8qMyYoP3rl+bym+QauhtJP5bvZY1ytt8krKGmMLYIRl36HBZfeAoqhQ==}
engines: {node: '>=14.0.0'}
dev: true
- /tinyspy@2.1.0:
- resolution: {integrity: sha512-7eORpyqImoOvkQJCSkL0d0mB4NHHIFAy4b1u8PHdDa7SjGS2njzl6/lyGoZLm+eyYEtlUmFGE0rFj66SWxZgQQ==}
+ /tinyspy@2.1.1:
+ resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==}
engines: {node: '>=14.0.0'}
dev: true
@@ -15051,6 +14923,10 @@ packages:
resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==}
dev: true
+ /ufo@1.1.2:
+ resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==}
+ dev: true
+
/uglify-js@3.17.3:
resolution: {integrity: sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==}
engines: {node: '>=0.8.0'}
@@ -15308,12 +15184,6 @@ packages:
engines: {node: '>= 0.4.0'}
dev: true
- /uuid@3.4.0:
- resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==}
- deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
- hasBin: true
- dev: true
-
/uuid@8.3.2:
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
hasBin: true
@@ -15383,14 +15253,14 @@ packages:
vfile-message: 3.1.2
dev: true
- /vite-node@0.32.2(@types/node@18.16.0):
- resolution: {integrity: sha512-dTQ1DCLwl2aEseov7cfQ+kDMNJpM1ebpyMMMwWzBvLbis8Nla/6c9WQcqpPssTwS6Rp/+U6KwlIj8Eapw4bLdA==}
+ /vite-node@0.33.0(@types/node@18.16.0):
+ resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==}
engines: {node: '>=v14.18.0'}
hasBin: true
dependencies:
cac: 6.7.14
debug: 4.3.4(supports-color@8.1.1)
- mlly: 1.2.0
+ mlly: 1.4.0
pathe: 1.1.1
picocolors: 1.0.0
vite: 4.3.9(@types/node@18.16.0)
@@ -15661,8 +15531,8 @@ packages:
- universal-cookie
dev: true
- /vitest@0.32.2(@vitest/ui@0.32.2)(jsdom@22.0.0):
- resolution: {integrity: sha512-hU8GNNuQfwuQmqTLfiKcqEhZY72Zxb7nnN07koCUNmntNxbKQnVbeIS6sqUgR3eXSlbOpit8+/gr1KpqoMgWCQ==}
+ /vitest@0.33.0(@vitest/ui@0.33.0)(jsdom@22.0.0):
+ resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==}
engines: {node: '>=v14.18.0'}
hasBin: true
peerDependencies:
@@ -15695,29 +15565,28 @@ packages:
'@types/chai': 4.3.5
'@types/chai-subset': 1.3.3
'@types/node': 18.16.0
- '@vitest/expect': 0.32.2
- '@vitest/runner': 0.32.2
- '@vitest/snapshot': 0.32.2
- '@vitest/spy': 0.32.2
- '@vitest/ui': 0.32.2(vitest@0.32.2)
- '@vitest/utils': 0.32.2
- acorn: 8.8.2
+ '@vitest/expect': 0.33.0
+ '@vitest/runner': 0.33.0
+ '@vitest/snapshot': 0.33.0
+ '@vitest/spy': 0.33.0
+ '@vitest/ui': 0.33.0(vitest@0.33.0)
+ '@vitest/utils': 0.33.0
+ acorn: 8.10.0
acorn-walk: 8.2.0
cac: 6.7.14
chai: 4.3.7
- concordance: 5.0.4
debug: 4.3.4(supports-color@8.1.1)
jsdom: 22.0.0
local-pkg: 0.4.3
- magic-string: 0.30.0
- pathe: 1.1.0
+ magic-string: 0.30.1
+ pathe: 1.1.1
picocolors: 1.0.0
- std-env: 3.3.2
+ std-env: 3.3.3
strip-literal: 1.0.1
tinybench: 2.5.0
- tinypool: 0.5.0
+ tinypool: 0.6.0
vite: 4.3.9(@types/node@18.16.0)
- vite-node: 0.32.2(@types/node@18.16.0)
+ vite-node: 0.33.0(@types/node@18.16.0)
why-is-node-running: 2.2.2
transitivePeerDependencies:
- less
@@ -16092,11 +15961,6 @@ packages:
engines: {node: '>=0.8.0'}
dev: true
- /well-known-symbols@2.0.0:
- resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==}
- engines: {node: '>=6'}
- dev: true
-
/whatwg-encoding@2.0.0:
resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==}
engines: {node: '>=12'}