Merge branch 'develop' of github.com:mermaid-js/mermaid into develop

This commit is contained in:
Knut Sveidqvist 2022-05-31 17:11:29 +02:00
commit bb5baa65cb
8 changed files with 353 additions and 80 deletions

View File

@ -452,6 +452,42 @@ context('Sequence diagram', () => {
{} {}
); );
}); });
it('should render rect around and inside criticals', () => {
imgSnapshotTest(
`
sequenceDiagram
A ->> B: 1
rect rgb(204, 0, 102)
critical yes
C ->> C: 1
option no
rect rgb(0, 204, 204)
C ->> C: 0
end
end
end
B ->> A: Return
`,
{}
);
});
it('should render rect around and inside breaks', () => {
imgSnapshotTest(
`
sequenceDiagram
A ->> B: 1
rect rgb(204, 0, 102)
break yes
rect rgb(0, 204, 204)
C ->> C: 0
end
end
end
B ->> A: Return
`,
{}
);
});
it('should render autonumber when configured with such', () => { it('should render autonumber when configured with such', () => {
imgSnapshotTest( imgSnapshotTest(
` `

View File

@ -230,6 +230,70 @@ sequenceDiagram
end end
``` ```
## Critical Region
It is possible to show actions that must happen automatically with conditional handling of circumstances.
This is done by the notation
```
critical [Action that must be performed]
... statements ...
option [Circumstance A]
... statements ...
option [Circumstance B]
... statements ...
end
```
See the example below:
```mermaid-example
sequenceDiagram
critical Establish a connection to the DB
Service-->DB: connect
option Network timeout
Service-->Service: Log error
option Credentials rejected
Service-->Service: Log different error
end
```
It is also possible to have no options at all
```mermaid-example
sequenceDiagram
critical Establish a connection to the DB
Service-->DB: connect
end
```
This critical block can also be nested, equivalently to the `par` statement as seen above.
## Break
It is possible to indicate a stop of the sequence within the flow (usually used to model exceptions).
This is done by the notation
```
break [something happened]
... statements ...
end
```
See the example below:
```mermaid-example
sequenceDiagram
Consumer-->API: Book something
API-->BookingService: Start booking process
break when the booking process fails
API-->Consumer: show failure
end
API-->BillingService: Start billing process
```
## Background Highlighting ## Background Highlighting
It is possible to highlight flows by providing colored background rects. This is done by the notation It is possible to highlight flows by providing colored background rects. This is done by the notation

View File

@ -81,7 +81,7 @@
"concurrently": "^7.0.0", "concurrently": "^7.0.0",
"coveralls": "^3.0.2", "coveralls": "^3.0.2",
"css-to-string-loader": "^0.1.3", "css-to-string-loader": "^0.1.3",
"cypress": "9.6.1", "cypress": "9.7.0",
"cypress-image-snapshot": "^4.0.1", "cypress-image-snapshot": "^4.0.1",
"documentation": "13.2.0", "documentation": "13.2.0",
"eslint": "^8.4.1", "eslint": "^8.4.1",

View File

@ -47,6 +47,9 @@
"else" { this.begin('LINE'); return 'else'; } "else" { this.begin('LINE'); return 'else'; }
"par" { this.begin('LINE'); return 'par'; } "par" { this.begin('LINE'); return 'par'; }
"and" { this.begin('LINE'); return 'and'; } "and" { this.begin('LINE'); return 'and'; }
"critical" { this.begin('LINE'); return 'critical'; }
"option" { this.begin('LINE'); return 'option'; }
"break" { this.begin('LINE'); return 'break'; }
<LINE>(?:[:]?(?:no)?wrap:)?[^#\n;]* { this.popState(); return 'restOfLine'; } <LINE>(?:[:]?(?:no)?wrap:)?[^#\n;]* { this.popState(); return 'restOfLine'; }
"end" return 'end'; "end" return 'end';
"left of" return 'left_of'; "left of" return 'left_of';
@ -172,9 +175,28 @@ statement
// End // End
$3.push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END}); $3.push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});
$$=$3;} $$=$3;}
| critical restOfLine option_sections end
{
// critical start
$3.unshift({type: 'criticalStart', criticalText:yy.parseMessage($2), signalType: yy.LINETYPE.CRITICAL_START});
// Content in critical is already in $3
// critical end
$3.push({type: 'criticalEnd', signalType: yy.LINETYPE.CRITICAL_END});
$$=$3;}
| break restOfLine document end
{
$3.unshift({type: 'breakStart', breakText:yy.parseMessage($2), signalType: yy.LINETYPE.BREAK_START});
$3.push({type: 'breakEnd', optText:yy.parseMessage($2), signalType: yy.LINETYPE.BREAK_END});
$$=$3;}
| directive | directive
; ;
option_sections
: document
| document option restOfLine option_sections
{ $$ = $1.concat([{type: 'option', optionText:yy.parseMessage($3), signalType: yy.LINETYPE.CRITICAL_OPTION}, $4]); }
;
par_sections par_sections
: document : document
| document and restOfLine par_sections | document and restOfLine par_sections

View File

@ -190,6 +190,11 @@ export const LINETYPE = {
SOLID_POINT: 24, SOLID_POINT: 24,
DOTTED_POINT: 25, DOTTED_POINT: 25,
AUTONUMBER: 26, AUTONUMBER: 26,
CRITICAL_START: 27,
CRITICAL_OPTION: 28,
CRITICAL_END: 29,
BREAK_START: 30,
BREAK_END: 31,
}; };
export const ARROWTYPE = { export const ARROWTYPE = {
@ -422,6 +427,21 @@ export const apply = function (param) {
case 'parEnd': case 'parEnd':
addSignal(undefined, undefined, undefined, param.signalType); addSignal(undefined, undefined, undefined, param.signalType);
break; break;
case 'criticalStart':
addSignal(undefined, undefined, param.criticalText, param.signalType);
break;
case 'option':
addSignal(undefined, undefined, param.optionText, param.signalType);
break;
case 'criticalEnd':
addSignal(undefined, undefined, undefined, param.signalType);
break;
case 'breakStart':
addSignal(undefined, undefined, param.breakText, param.signalType);
break;
case 'breakEnd':
addSignal(undefined, undefined, undefined, param.signalType);
break;
} }
} }
}; };

View File

@ -843,6 +843,80 @@ end`;
expect(messages[7].from).toBe('Bob'); expect(messages[7].from).toBe('Bob');
expect(messages[8].type).toBe(parser.yy.LINETYPE.ALT_END); expect(messages[8].type).toBe(parser.yy.LINETYPE.ALT_END);
}); });
it('it should handle critical statements without options', function () {
const str = `
sequenceDiagram
critical Establish a connection to the DB
Service-->DB: connect
end`;
mermaidAPI.parse(str);
const actors = parser.yy.getActors();
expect(actors.Service.description).toBe('Service');
expect(actors.DB.description).toBe('DB');
const messages = parser.yy.getMessages();
expect(messages.length).toBe(3);
expect(messages[0].type).toBe(parser.yy.LINETYPE.CRITICAL_START);
expect(messages[1].from).toBe('Service');
expect(messages[2].type).toBe(parser.yy.LINETYPE.CRITICAL_END);
});
it('it should handle critical statements with options', function () {
const str = `
sequenceDiagram
critical Establish a connection to the DB
Service-->DB: connect
option Network timeout
Service-->Service: Log error
option Credentials rejected
Service-->Service: Log different error
end`;
mermaidAPI.parse(str);
const actors = parser.yy.getActors();
expect(actors.Service.description).toBe('Service');
expect(actors.DB.description).toBe('DB');
const messages = parser.yy.getMessages();
expect(messages.length).toBe(7);
expect(messages[0].type).toBe(parser.yy.LINETYPE.CRITICAL_START);
expect(messages[1].from).toBe('Service');
expect(messages[2].type).toBe(parser.yy.LINETYPE.CRITICAL_OPTION);
expect(messages[3].from).toBe('Service');
expect(messages[4].type).toBe(parser.yy.LINETYPE.CRITICAL_OPTION);
expect(messages[5].from).toBe('Service');
expect(messages[6].type).toBe(parser.yy.LINETYPE.CRITICAL_END);
});
it('it should handle break statements', function () {
const str = `
sequenceDiagram
Consumer-->API: Book something
API-->BookingService: Start booking process
break when the booking process fails
API-->Consumer: show failure
end
API-->BillingService: Start billing process`;
mermaidAPI.parse(str);
const actors = parser.yy.getActors();
expect(actors.Consumer.description).toBe('Consumer');
expect(actors.API.description).toBe('API');
const messages = parser.yy.getMessages();
expect(messages.length).toBe(6);
expect(messages[0].from).toBe('Consumer');
expect(messages[1].from).toBe('API');
expect(messages[2].type).toBe(parser.yy.LINETYPE.BREAK_START);
expect(messages[3].from).toBe('API');
expect(messages[4].type).toBe(parser.yy.LINETYPE.BREAK_END);
expect(messages[5].from).toBe('API');
});
it('it should handle par statements a sequenceDiagram', function () { it('it should handle par statements a sequenceDiagram', function () {
const str = ` const str = `
sequenceDiagram sequenceDiagram

View File

@ -763,6 +763,45 @@ export const draw = function (text, id) {
if (msg.message.visible) parser.yy.enableSequenceNumbers(); if (msg.message.visible) parser.yy.enableSequenceNumbers();
else parser.yy.disableSequenceNumbers(); else parser.yy.disableSequenceNumbers();
break; break;
case parser.yy.LINETYPE.CRITICAL_START:
adjustLoopHeightForWrap(
loopWidths,
msg,
conf.boxMargin,
conf.boxMargin + conf.boxTextMargin,
(message) => bounds.newLoop(message)
);
break;
case parser.yy.LINETYPE.CRITICAL_OPTION:
adjustLoopHeightForWrap(
loopWidths,
msg,
conf.boxMargin + conf.boxTextMargin,
conf.boxMargin,
(message) => bounds.addSectionToLoop(message)
);
break;
case parser.yy.LINETYPE.CRITICAL_END:
loopModel = bounds.endLoop();
svgDraw.drawLoop(diagram, loopModel, 'critical', conf);
bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());
bounds.models.addLoop(loopModel);
break;
case parser.yy.LINETYPE.BREAK_START:
adjustLoopHeightForWrap(
loopWidths,
msg,
conf.boxMargin,
conf.boxMargin + conf.boxTextMargin,
(message) => bounds.newLoop(message)
);
break;
case parser.yy.LINETYPE.BREAK_END:
loopModel = bounds.endLoop();
svgDraw.drawLoop(diagram, loopModel, 'break', conf);
bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());
bounds.models.addLoop(loopModel);
break;
default: default:
try { try {
// lastMsg = msg // lastMsg = msg
@ -1165,6 +1204,8 @@ const calculateLoopBounds = function (messages, actors) {
case parser.yy.LINETYPE.ALT_START: case parser.yy.LINETYPE.ALT_START:
case parser.yy.LINETYPE.OPT_START: case parser.yy.LINETYPE.OPT_START:
case parser.yy.LINETYPE.PAR_START: case parser.yy.LINETYPE.PAR_START:
case parser.yy.LINETYPE.CRITICAL_START:
case parser.yy.LINETYPE.BREAK_START:
stack.push({ stack.push({
id: msg.id, id: msg.id,
msg: msg.message, msg: msg.message,
@ -1175,6 +1216,7 @@ const calculateLoopBounds = function (messages, actors) {
break; break;
case parser.yy.LINETYPE.ALT_ELSE: case parser.yy.LINETYPE.ALT_ELSE:
case parser.yy.LINETYPE.PAR_AND: case parser.yy.LINETYPE.PAR_AND:
case parser.yy.LINETYPE.CRITICAL_OPTION:
if (msg.message) { if (msg.message) {
current = stack.pop(); current = stack.pop();
loops[current.id] = current; loops[current.id] = current;
@ -1186,6 +1228,8 @@ const calculateLoopBounds = function (messages, actors) {
case parser.yy.LINETYPE.ALT_END: case parser.yy.LINETYPE.ALT_END:
case parser.yy.LINETYPE.OPT_END: case parser.yy.LINETYPE.OPT_END:
case parser.yy.LINETYPE.PAR_END: case parser.yy.LINETYPE.PAR_END:
case parser.yy.LINETYPE.CRITICAL_END:
case parser.yy.LINETYPE.BREAK_END:
current = stack.pop(); current = stack.pop();
loops[current.id] = current; loops[current.id] = current;
break; break;

171
yarn.lock
View File

@ -274,20 +274,20 @@
source-map "^0.5.0" source-map "^0.5.0"
"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.14.6": "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.14.6":
version "7.18.0" version "7.18.2"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.0.tgz#c58d04d7c6fbfb58ea7681e2b9145cfb62726756" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.2.tgz#87b2fcd7cce9becaa7f5acebdc4f09f3dd19d876"
integrity sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw== integrity sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==
dependencies: dependencies:
"@ampproject/remapping" "^2.1.0" "@ampproject/remapping" "^2.1.0"
"@babel/code-frame" "^7.16.7" "@babel/code-frame" "^7.16.7"
"@babel/generator" "^7.18.0" "@babel/generator" "^7.18.2"
"@babel/helper-compilation-targets" "^7.17.10" "@babel/helper-compilation-targets" "^7.18.2"
"@babel/helper-module-transforms" "^7.18.0" "@babel/helper-module-transforms" "^7.18.0"
"@babel/helpers" "^7.18.0" "@babel/helpers" "^7.18.2"
"@babel/parser" "^7.18.0" "@babel/parser" "^7.18.0"
"@babel/template" "^7.16.7" "@babel/template" "^7.16.7"
"@babel/traverse" "^7.18.0" "@babel/traverse" "^7.18.2"
"@babel/types" "^7.18.0" "@babel/types" "^7.18.2"
convert-source-map "^1.7.0" convert-source-map "^1.7.0"
debug "^4.1.0" debug "^4.1.0"
gensync "^1.0.0-beta.2" gensync "^1.0.0-beta.2"
@ -295,9 +295,9 @@
semver "^6.3.0" semver "^6.3.0"
"@babel/eslint-parser@^7.14.7": "@babel/eslint-parser@^7.14.7":
version "7.17.0" version "7.18.2"
resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz#eabb24ad9f0afa80e5849f8240d0e5facc2d90d6" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz#e14dee36c010edfb0153cf900c2b0815e82e3245"
integrity sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA== integrity sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==
dependencies: dependencies:
eslint-scope "^5.1.1" eslint-scope "^5.1.1"
eslint-visitor-keys "^2.1.0" eslint-visitor-keys "^2.1.0"
@ -312,12 +312,12 @@
jsesc "^2.5.1" jsesc "^2.5.1"
source-map "^0.5.0" source-map "^0.5.0"
"@babel/generator@^7.12.1", "@babel/generator@^7.18.0", "@babel/generator@^7.7.2": "@babel/generator@^7.12.1", "@babel/generator@^7.18.2", "@babel/generator@^7.7.2":
version "7.18.0" version "7.18.2"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.0.tgz#46d28e8a18fc737b028efb25ab105d74473af43f" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d"
integrity sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg== integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==
dependencies: dependencies:
"@babel/types" "^7.18.0" "@babel/types" "^7.18.2"
"@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/gen-mapping" "^0.3.0"
jsesc "^2.5.1" jsesc "^2.5.1"
@ -343,10 +343,10 @@
"@babel/helper-explode-assignable-expression" "^7.16.7" "@babel/helper-explode-assignable-expression" "^7.16.7"
"@babel/types" "^7.16.7" "@babel/types" "^7.16.7"
"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10": "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2":
version "7.17.10" version "7.18.2"
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz#09c63106d47af93cf31803db6bc49fef354e2ebe" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b"
integrity sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ== integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==
dependencies: dependencies:
"@babel/compat-data" "^7.17.10" "@babel/compat-data" "^7.17.10"
"@babel/helper-validator-option" "^7.16.7" "@babel/helper-validator-option" "^7.16.7"
@ -429,6 +429,11 @@
dependencies: dependencies:
"@babel/types" "^7.16.7" "@babel/types" "^7.16.7"
"@babel/helper-environment-visitor@^7.18.2":
version "7.18.2"
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd"
integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==
"@babel/helper-explode-assignable-expression@^7.16.7": "@babel/helper-explode-assignable-expression@^7.16.7":
version "7.16.7" version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a"
@ -588,6 +593,13 @@
dependencies: dependencies:
"@babel/types" "^7.17.0" "@babel/types" "^7.17.0"
"@babel/helper-simple-access@^7.18.2":
version "7.18.2"
resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9"
integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==
dependencies:
"@babel/types" "^7.18.2"
"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": "@babel/helper-skip-transparent-expression-wrappers@^7.16.0":
version "7.16.0" version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09"
@ -639,14 +651,14 @@
"@babel/traverse" "^7.16.8" "@babel/traverse" "^7.16.8"
"@babel/types" "^7.16.8" "@babel/types" "^7.16.8"
"@babel/helpers@^7.12.1", "@babel/helpers@^7.18.0": "@babel/helpers@^7.12.1", "@babel/helpers@^7.18.2":
version "7.18.0" version "7.18.2"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.0.tgz#aff37c3590de42102b54842446146d0205946370" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384"
integrity sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg== integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==
dependencies: dependencies:
"@babel/template" "^7.16.7" "@babel/template" "^7.16.7"
"@babel/traverse" "^7.18.0" "@babel/traverse" "^7.18.2"
"@babel/types" "^7.18.0" "@babel/types" "^7.18.2"
"@babel/highlight@^7.16.7": "@babel/highlight@^7.16.7":
version "7.16.7" version "7.16.7"
@ -1147,7 +1159,7 @@
"@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5"
"@babel/plugin-syntax-flow" "^7.16.0" "@babel/plugin-syntax-flow" "^7.16.0"
"@babel/plugin-transform-for-of@^7.17.12": "@babel/plugin-transform-for-of@^7.18.1":
version "7.18.1" version "7.18.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036"
integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg== integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==
@ -1186,14 +1198,14 @@
"@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-plugin-utils" "^7.17.12"
babel-plugin-dynamic-import-node "^2.3.3" babel-plugin-dynamic-import-node "^2.3.3"
"@babel/plugin-transform-modules-commonjs@^7.18.0": "@babel/plugin-transform-modules-commonjs@^7.18.2":
version "7.18.0" version "7.18.2"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.0.tgz#3be575e19fbd273d42adbc84566b1fad3582b3db" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e"
integrity sha512-cCeR0VZWtfxWS4YueAK2qtHtBPJRSaJcMlbS8jhSIm/A3E2Kpro4W1Dn4cqJtp59dtWfXjQwK7SPKF8ghs7rlw== integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==
dependencies: dependencies:
"@babel/helper-module-transforms" "^7.18.0" "@babel/helper-module-transforms" "^7.18.0"
"@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-plugin-utils" "^7.17.12"
"@babel/helper-simple-access" "^7.17.7" "@babel/helper-simple-access" "^7.18.2"
babel-plugin-dynamic-import-node "^2.3.3" babel-plugin-dynamic-import-node "^2.3.3"
"@babel/plugin-transform-modules-systemjs@^7.18.0": "@babel/plugin-transform-modules-systemjs@^7.18.0":
@ -1322,10 +1334,10 @@
dependencies: dependencies:
"@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-template-literals@^7.17.12": "@babel/plugin-transform-template-literals@^7.18.2":
version "7.17.12" version "7.18.2"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.17.12.tgz#4aec0a18f39dd86c442e1d077746df003e362c6e" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz#31ed6915721864847c48b656281d0098ea1add28"
integrity sha512-kAKJ7DX1dSRa2s7WN1xUAuaQmkTpN+uig4wCKWivVXIObqGbVTUlSavHyfI2iZvz89GFAMGm9p2DBJ4Y1Tp0hw== integrity sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==
dependencies: dependencies:
"@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-plugin-utils" "^7.17.12"
@ -1352,12 +1364,12 @@
"@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7"
"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.14.7": "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.14.7":
version "7.18.0" version "7.18.2"
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.0.tgz#ec7e51f4c6e026816000b230ed7cf74a1530d91d" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.2.tgz#f47d3000a098617926e674c945d95a28cb90977a"
integrity sha512-cP74OMs7ECLPeG1reiCQ/D/ypyOxgfm8uR6HRYV23vTJ7Lu1nbgj9DQDo/vH59gnn7GOAwtTDPPYV4aXzsMKHA== integrity sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==
dependencies: dependencies:
"@babel/compat-data" "^7.17.10" "@babel/compat-data" "^7.17.10"
"@babel/helper-compilation-targets" "^7.17.10" "@babel/helper-compilation-targets" "^7.18.2"
"@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-plugin-utils" "^7.17.12"
"@babel/helper-validator-option" "^7.16.7" "@babel/helper-validator-option" "^7.16.7"
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12"
@ -1402,12 +1414,12 @@
"@babel/plugin-transform-dotall-regex" "^7.16.7" "@babel/plugin-transform-dotall-regex" "^7.16.7"
"@babel/plugin-transform-duplicate-keys" "^7.17.12" "@babel/plugin-transform-duplicate-keys" "^7.17.12"
"@babel/plugin-transform-exponentiation-operator" "^7.16.7" "@babel/plugin-transform-exponentiation-operator" "^7.16.7"
"@babel/plugin-transform-for-of" "^7.17.12" "@babel/plugin-transform-for-of" "^7.18.1"
"@babel/plugin-transform-function-name" "^7.16.7" "@babel/plugin-transform-function-name" "^7.16.7"
"@babel/plugin-transform-literals" "^7.17.12" "@babel/plugin-transform-literals" "^7.17.12"
"@babel/plugin-transform-member-expression-literals" "^7.16.7" "@babel/plugin-transform-member-expression-literals" "^7.16.7"
"@babel/plugin-transform-modules-amd" "^7.18.0" "@babel/plugin-transform-modules-amd" "^7.18.0"
"@babel/plugin-transform-modules-commonjs" "^7.18.0" "@babel/plugin-transform-modules-commonjs" "^7.18.2"
"@babel/plugin-transform-modules-systemjs" "^7.18.0" "@babel/plugin-transform-modules-systemjs" "^7.18.0"
"@babel/plugin-transform-modules-umd" "^7.18.0" "@babel/plugin-transform-modules-umd" "^7.18.0"
"@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12"
@ -1420,12 +1432,12 @@
"@babel/plugin-transform-shorthand-properties" "^7.16.7" "@babel/plugin-transform-shorthand-properties" "^7.16.7"
"@babel/plugin-transform-spread" "^7.17.12" "@babel/plugin-transform-spread" "^7.17.12"
"@babel/plugin-transform-sticky-regex" "^7.16.7" "@babel/plugin-transform-sticky-regex" "^7.16.7"
"@babel/plugin-transform-template-literals" "^7.17.12" "@babel/plugin-transform-template-literals" "^7.18.2"
"@babel/plugin-transform-typeof-symbol" "^7.17.12" "@babel/plugin-transform-typeof-symbol" "^7.17.12"
"@babel/plugin-transform-unicode-escapes" "^7.16.7" "@babel/plugin-transform-unicode-escapes" "^7.16.7"
"@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/plugin-transform-unicode-regex" "^7.16.7"
"@babel/preset-modules" "^0.1.5" "@babel/preset-modules" "^0.1.5"
"@babel/types" "^7.18.0" "@babel/types" "^7.18.2"
babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs2 "^0.3.0"
babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-corejs3 "^0.5.0"
babel-plugin-polyfill-regenerator "^0.3.0" babel-plugin-polyfill-regenerator "^0.3.0"
@ -1496,26 +1508,26 @@
"@babel/parser" "^7.16.7" "@babel/parser" "^7.16.7"
"@babel/types" "^7.16.7" "@babel/types" "^7.16.7"
"@babel/traverse@^7.10.5", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.7.2": "@babel/traverse@^7.10.5", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.7.2":
version "7.18.0" version "7.18.2"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.0.tgz#0e5ec6db098660b2372dd63d096bf484e32d27ba" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8"
integrity sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw== integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==
dependencies: dependencies:
"@babel/code-frame" "^7.16.7" "@babel/code-frame" "^7.16.7"
"@babel/generator" "^7.18.0" "@babel/generator" "^7.18.2"
"@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-environment-visitor" "^7.18.2"
"@babel/helper-function-name" "^7.17.9" "@babel/helper-function-name" "^7.17.9"
"@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-hoist-variables" "^7.16.7"
"@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7"
"@babel/parser" "^7.18.0" "@babel/parser" "^7.18.0"
"@babel/types" "^7.18.0" "@babel/types" "^7.18.2"
debug "^4.1.0" debug "^4.1.0"
globals "^11.1.0" globals "^11.1.0"
"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": "@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
version "7.18.0" version "7.18.4"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.0.tgz#ef523ea349722849cb4bf806e9342ede4d071553" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354"
integrity sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw== integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==
dependencies: dependencies:
"@babel/helper-validator-identifier" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7"
to-fast-properties "^2.0.0" to-fast-properties "^2.0.0"
@ -1531,15 +1543,16 @@
integrity sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w== integrity sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w==
"@commitlint/cli@^17.0.0": "@commitlint/cli@^17.0.0":
version "17.0.0" version "17.0.1"
resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-17.0.0.tgz#6c86c6b0eba4ba1204a19833c3c962b623f35518" resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-17.0.1.tgz#88c5ad3f297760ded589c3a33ed49321242e7ab0"
integrity sha512-Np6slCdVVG1XwMvwbZrXIzS1INPAD5QmN4L6al04AmCd4nAPU63gxgxC5Mz0Fmx7va23Uvb0S7yEFV1JPhvPUQ== integrity sha512-5xT1G5pnynR0tk/ms8Ji7yr9lZCeQs4GLVVtyK/gw20w+enoLTVuRKKY9zg88hy9FoCycc/W8iip2xv3c8payg==
dependencies: dependencies:
"@commitlint/format" "^17.0.0" "@commitlint/format" "^17.0.0"
"@commitlint/lint" "^17.0.0" "@commitlint/lint" "^17.0.0"
"@commitlint/load" "^17.0.0" "@commitlint/load" "^17.0.0"
"@commitlint/read" "^17.0.0" "@commitlint/read" "^17.0.0"
"@commitlint/types" "^17.0.0" "@commitlint/types" "^17.0.0"
execa "^5.0.0"
lodash "^4.17.19" lodash "^4.17.19"
resolve-from "5.0.0" resolve-from "5.0.0"
resolve-global "1.0.0" resolve-global "1.0.0"
@ -1731,10 +1744,10 @@
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f"
integrity sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA== integrity sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==
"@es-joy/jsdoccomment@~0.30.0": "@es-joy/jsdoccomment@~0.31.0":
version "0.30.0" version "0.31.0"
resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.30.0.tgz#12e3e220ee8e1a4b48c6db30c4a77fce0bd21d34" resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.31.0.tgz#dbc342cc38eb6878c12727985e693eaef34302bc"
integrity sha512-U30cjaHCjdUqtbMgChJl80BP25GSRWg0/1R3UdB2ksitAo2oDYdRMrvzwuM21jcsFbEcLNAqwQGTCg+5CVbSIA== integrity sha512-tc1/iuQcnaiSIUVad72PBierDFpsxdUHtEF/OrfqvM1CBAsIoMP51j52jTMb3dXriwhieTo289InzZj72jL3EQ==
dependencies: dependencies:
comment-parser "1.3.1" comment-parser "1.3.1"
esquery "^1.4.0" esquery "^1.4.0"
@ -3530,9 +3543,9 @@ camelcase@^6.2.0:
integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
caniuse-lite@^1.0.30001332: caniuse-lite@^1.0.30001332:
version "1.0.30001342" version "1.0.30001344"
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001342.tgz" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz"
integrity sha512-bn6sOCu7L7jcbBbyNhLg0qzXdJ/PMbybZTH/BA6Roet9wxYRm6Tr9D0s0uhLkOZ6MSG+QU6txUgdpr3MXIVqjA== integrity sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g==
caseless@~0.12.0: caseless@~0.12.0:
version "0.12.0" version "0.12.0"
@ -4328,10 +4341,10 @@ cypress-image-snapshot@^4.0.1:
pkg-dir "^3.0.0" pkg-dir "^3.0.0"
term-img "^4.0.0" term-img "^4.0.0"
cypress@9.6.1: cypress@9.7.0:
version "9.6.1" version "9.7.0"
resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.6.1.tgz#a7d6b5a53325b3dc4960181f5800a5ade0f085eb" resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.7.0.tgz#bf55b2afd481f7a113ef5604aa8b693564b5e744"
integrity sha512-ECzmV7pJSkk+NuAhEw6C3D+RIRATkSb2VAHXDY6qGZbca/F9mv5pPsj2LO6Ty6oIFVBTrwCyL9agl28MtJMe2g== integrity sha512-+1EE1nuuuwIt/N1KXRR2iWHU+OiIt7H28jJDyyI4tiUftId/DrXYEwoDa5+kH2pki1zxnA0r6HrUGHV5eLbF5Q==
dependencies: dependencies:
"@cypress/request" "^2.88.10" "@cypress/request" "^2.88.10"
"@cypress/xvfb" "^1.2.4" "@cypress/xvfb" "^1.2.4"
@ -5536,18 +5549,18 @@ eslint-plugin-html@^6.2.0:
htmlparser2 "^7.1.2" htmlparser2 "^7.1.2"
eslint-plugin-jest@^26.0.0: eslint-plugin-jest@^26.0.0:
version "26.2.2" version "26.4.5"
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.2.2.tgz#74e000544259f1ef0462a609a3fc9e5da3768f6c" resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.4.5.tgz#c1772800bfc15c6f34d3e1536932ece0627c9f2a"
integrity sha512-etSFZ8VIFX470aA6kTqDPhIq7YWe0tjBcboFNV3WeiC18PJ/AVonGhuTwlmuz2fBkH8FJHA7JQ4k7GsQIj1Gew== integrity sha512-jGPKXoV7v21gvt2QivCPuN1c2RePxJ9XnYQjucioAZhMTXrJ0y48QhP7UOpgNs/sj0Lns2NKRvoAjnyXDCfqbw==
dependencies: dependencies:
"@typescript-eslint/utils" "^5.10.0" "@typescript-eslint/utils" "^5.10.0"
eslint-plugin-jsdoc@^39.1.0: eslint-plugin-jsdoc@^39.1.0:
version "39.3.0" version "39.3.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.3.0.tgz#7318ac217a44401fc42fda1a051a6b7cd010a18a" resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.3.2.tgz#b9c3becdbd860a75b8bd07bd04a0eaaad7c79403"
integrity sha512-zEdkpezjIhG7gq4MbwLBKaD3cWsJkT7uTAJcIbLohQWR7OVwhPOBLPqpftBt8uzy0ZL+3jlbiaSXik4+VmN6JQ== integrity sha512-RSGN94RYzIJS/WfW3l6cXzRLfJWxvJgNQZ4w0WCaxJWDJMigtwTsILEAfKqmmPkT2rwMH/s3C7G5ChDE6cwPJg==
dependencies: dependencies:
"@es-joy/jsdoccomment" "~0.30.0" "@es-joy/jsdoccomment" "~0.31.0"
comment-parser "1.3.1" comment-parser "1.3.1"
debug "^4.3.4" debug "^4.3.4"
escape-string-regexp "^4.0.0" escape-string-regexp "^4.0.0"
@ -8173,9 +8186,9 @@ lines-and-columns@^1.1.6:
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
lint-staged@^12.1.2: lint-staged@^12.1.2:
version "12.4.1" version "12.4.2"
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.4.1.tgz#63fa27bfc8a33515f6902f63f6670864f1fb233c" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.4.2.tgz#380a5ec5a7a23caa9420972b0f98c8192afddecd"
integrity sha512-PTXgzpflrQ+pODQTG116QNB+Q6uUTDg5B5HqGvNhoQSGt8Qy+MA/6zSnR8n38+sxP5TapzeQGTvoKni0KRS8Vg== integrity sha512-JAJGIzY/OioIUtrRePr8go6qUxij//mL+RGGoFKU3VWQRtIHgWoHizSqH0QVn2OwrbXS9Q6CICQjfj+E5qvrXg==
dependencies: dependencies:
cli-truncate "^3.1.0" cli-truncate "^3.1.0"
colorette "^2.0.16" colorette "^2.0.16"