mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-10-06 07:39:48 +02:00
Merge branch 'develop' into sidv/removeDirectiveGrammar
* develop: (26 commits) chore: Fix unit tests chore(deps): update all patch dependencies Update docs chore: remove unneeded `CommomDB` fix: Add support for `~test Array~string~` chore: Add JSDoc to apply in sequenceDB refactor: Tidy up direction handling chore: Fix flowchart arrow chore: Add test to verify activate chore: Update tests snapshot fix: #4691 Align arrowheads properly in sequenceDiagram chore: move `commonDb` into `diagrams/common/commonDb` Update docs run prettier fix Apply suggestions from code review chore: Add comments in edge handling chore: Make aggregation arrow transparent chore: Remove structuredClone chore: Make extension arrow transparent chore: Align edge markers properly in class ...
This commit is contained in:
@@ -125,6 +125,21 @@
|
|||||||
</pre>
|
</pre>
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
|
<pre class="mermaid">
|
||||||
|
erDiagram
|
||||||
|
_customer_order {
|
||||||
|
bigint id PK
|
||||||
|
bigint customer_id FK
|
||||||
|
text shipping_address
|
||||||
|
text delivery_method
|
||||||
|
timestamp_with_time_zone ordered_at
|
||||||
|
numeric total_tax_amount
|
||||||
|
numeric total_price
|
||||||
|
text payment_method
|
||||||
|
}
|
||||||
|
</pre>
|
||||||
|
<hr />
|
||||||
|
|
||||||
<script type="module">
|
<script type="module">
|
||||||
import mermaid from './mermaid.esm.mjs';
|
import mermaid from './mermaid.esm.mjs';
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
|
@@ -90,7 +90,7 @@ Mermaid syntax for ER diagrams is compatible with PlantUML, with an extension to
|
|||||||
|
|
||||||
Where:
|
Where:
|
||||||
|
|
||||||
- `first-entity` is the name of an entity. Names must begin with an alphabetic character and may also contain digits, hyphens, and underscores.
|
- `first-entity` is the name of an entity. Names must begin with an alphabetic character or an underscore (from v\<MERMAID_RELEASE_VERSION>+), and may also contain digits and hyphens.
|
||||||
- `relationship` describes the way that both entities inter-relate. See below.
|
- `relationship` describes the way that both entities inter-relate. See below.
|
||||||
- `second-entity` is the name of the other entity.
|
- `second-entity` is the name of the other entity.
|
||||||
- `relationship-label` describes the relationship from the perspective of the first entity.
|
- `relationship-label` describes the relationship from the perspective of the first entity.
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
"version": "10.2.4",
|
"version": "10.2.4",
|
||||||
"description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.",
|
"description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"packageManager": "pnpm@8.7.0",
|
"packageManager": "pnpm@8.7.1",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"diagram",
|
"diagram",
|
||||||
"markdown",
|
"markdown",
|
||||||
|
@@ -1,47 +0,0 @@
|
|||||||
import { sanitizeText as _sanitizeText } from './diagrams/common/common.js';
|
|
||||||
import { getConfig } from './config.js';
|
|
||||||
let title = '';
|
|
||||||
let diagramTitle = '';
|
|
||||||
let description = '';
|
|
||||||
|
|
||||||
const sanitizeText = (txt: string): string => _sanitizeText(txt, getConfig());
|
|
||||||
|
|
||||||
export const clear = function (): void {
|
|
||||||
title = '';
|
|
||||||
description = '';
|
|
||||||
diagramTitle = '';
|
|
||||||
};
|
|
||||||
|
|
||||||
export const setAccTitle = function (txt: string): void {
|
|
||||||
title = sanitizeText(txt).replace(/^\s+/g, '');
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getAccTitle = function (): string {
|
|
||||||
return title || diagramTitle;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const setAccDescription = function (txt: string): void {
|
|
||||||
description = sanitizeText(txt).replace(/\n\s+/g, '\n');
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getAccDescription = function (): string {
|
|
||||||
return description;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const setDiagramTitle = function (txt: string): void {
|
|
||||||
diagramTitle = sanitizeText(txt);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getDiagramTitle = function (): string {
|
|
||||||
return diagramTitle;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default {
|
|
||||||
getAccTitle,
|
|
||||||
setAccTitle,
|
|
||||||
getDiagramTitle,
|
|
||||||
setDiagramTitle,
|
|
||||||
getAccDescription,
|
|
||||||
setAccDescription,
|
|
||||||
clear,
|
|
||||||
};
|
|
@@ -368,7 +368,20 @@ const cutPathAtIntersect = (_points, boundryNode) => {
|
|||||||
return points;
|
return points;
|
||||||
};
|
};
|
||||||
|
|
||||||
//(edgePaths, e, edge, clusterDb, diagramtype, graph)
|
/**
|
||||||
|
* Calculate the deltas and angle between two points
|
||||||
|
* @param {{x: number, y:number}} point1
|
||||||
|
* @param {{x: number, y:number}} point2
|
||||||
|
* @returns {{angle: number, deltaX: number, deltaY: number}}
|
||||||
|
*/
|
||||||
|
function calculateDeltaAndAngle(point1, point2) {
|
||||||
|
const [x1, y1] = [point1.x, point1.y];
|
||||||
|
const [x2, y2] = [point2.x, point2.y];
|
||||||
|
const deltaX = x2 - x1;
|
||||||
|
const deltaY = y2 - y1;
|
||||||
|
return { angle: Math.atan(deltaY / deltaX), deltaX, deltaY };
|
||||||
|
}
|
||||||
|
|
||||||
export const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph) {
|
export const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph) {
|
||||||
let points = edge.points;
|
let points = edge.points;
|
||||||
let pointsHasChanged = false;
|
let pointsHasChanged = false;
|
||||||
@@ -435,22 +448,62 @@ export const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph
|
|||||||
const lineData = points.filter((p) => !Number.isNaN(p.y));
|
const lineData = points.filter((p) => !Number.isNaN(p.y));
|
||||||
|
|
||||||
// This is the accessor function we talked about above
|
// This is the accessor function we talked about above
|
||||||
let curve;
|
let curve = curveBasis;
|
||||||
// Currently only flowcharts get the curve from the settings, perhaps this should
|
// Currently only flowcharts get the curve from the settings, perhaps this should
|
||||||
// be expanded to a common setting? Restricting it for now in order not to cause side-effects that
|
// be expanded to a common setting? Restricting it for now in order not to cause side-effects that
|
||||||
// have not been thought through
|
// have not been thought through
|
||||||
if (diagramType === 'graph' || diagramType === 'flowchart') {
|
if (edge.curve && (diagramType === 'graph' || diagramType === 'flowchart')) {
|
||||||
curve = edge.curve || curveBasis;
|
curve = edge.curve;
|
||||||
} else {
|
|
||||||
curve = curveBasis;
|
|
||||||
}
|
}
|
||||||
// curve = curveLinear;
|
|
||||||
|
// We need to draw the lines a bit shorter to avoid drawing
|
||||||
|
// under any transparent markers.
|
||||||
|
// The offsets are calculated from the markers' dimensions.
|
||||||
|
const markerOffsets = {
|
||||||
|
aggregation: 18,
|
||||||
|
extension: 18,
|
||||||
|
composition: 18,
|
||||||
|
dependency: 6,
|
||||||
|
lollipop: 13.5,
|
||||||
|
arrow_point: 5.3,
|
||||||
|
};
|
||||||
|
|
||||||
const lineFunction = line()
|
const lineFunction = line()
|
||||||
.x(function (d) {
|
.x(function (d, i, data) {
|
||||||
return d.x;
|
let offset = 0;
|
||||||
|
if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {
|
||||||
|
// Handle first point
|
||||||
|
// Calculate the angle and delta between the first two points
|
||||||
|
const { angle, deltaX } = calculateDeltaAndAngle(data[0], data[1]);
|
||||||
|
// Calculate the offset based on the angle and the marker's dimensions
|
||||||
|
offset = markerOffsets[edge.arrowTypeStart] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1) || 0;
|
||||||
|
} else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {
|
||||||
|
// Handle last point
|
||||||
|
// Calculate the angle and delta between the last two points
|
||||||
|
const { angle, deltaX } = calculateDeltaAndAngle(
|
||||||
|
data[data.length - 1],
|
||||||
|
data[data.length - 2]
|
||||||
|
);
|
||||||
|
offset = markerOffsets[edge.arrowTypeEnd] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1) || 0;
|
||||||
|
}
|
||||||
|
return d.x + offset;
|
||||||
})
|
})
|
||||||
.y(function (d) {
|
.y(function (d, i, data) {
|
||||||
return d.y;
|
// Same handling as X above
|
||||||
|
let offset = 0;
|
||||||
|
if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {
|
||||||
|
const { angle, deltaY } = calculateDeltaAndAngle(data[0], data[1]);
|
||||||
|
offset =
|
||||||
|
markerOffsets[edge.arrowTypeStart] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);
|
||||||
|
} else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {
|
||||||
|
const { angle, deltaY } = calculateDeltaAndAngle(
|
||||||
|
data[data.length - 1],
|
||||||
|
data[data.length - 2]
|
||||||
|
);
|
||||||
|
offset =
|
||||||
|
markerOffsets[edge.arrowTypeEnd] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);
|
||||||
|
}
|
||||||
|
return d.y + offset;
|
||||||
})
|
})
|
||||||
.curve(curve);
|
.curve(curve);
|
||||||
|
|
||||||
|
@@ -155,9 +155,9 @@ export const render = async (elem, graph, markers, diagramtype, id) => {
|
|||||||
clearClusters();
|
clearClusters();
|
||||||
clearGraphlib();
|
clearGraphlib();
|
||||||
|
|
||||||
log.warn('Graph at first:', graphlibJson.write(graph));
|
log.warn('Graph at first:', JSON.stringify(graphlibJson.write(graph)));
|
||||||
adjustClustersAndEdges(graph);
|
adjustClustersAndEdges(graph);
|
||||||
log.warn('Graph after:', graphlibJson.write(graph));
|
log.warn('Graph after:', JSON.stringify(graphlibJson.write(graph)));
|
||||||
// log.warn('Graph ever after:', graphlibJson.write(graph.node('A').graph));
|
// log.warn('Graph ever after:', graphlibJson.write(graph.node('A').graph));
|
||||||
await recursiveRender(elem, graph, diagramtype);
|
await recursiveRender(elem, graph, diagramtype);
|
||||||
};
|
};
|
||||||
|
@@ -16,7 +16,7 @@ const extension = (elem, type, id) => {
|
|||||||
.append('marker')
|
.append('marker')
|
||||||
.attr('id', type + '-extensionStart')
|
.attr('id', type + '-extensionStart')
|
||||||
.attr('class', 'marker extension ' + type)
|
.attr('class', 'marker extension ' + type)
|
||||||
.attr('refX', 0)
|
.attr('refX', 18)
|
||||||
.attr('refY', 7)
|
.attr('refY', 7)
|
||||||
.attr('markerWidth', 190)
|
.attr('markerWidth', 190)
|
||||||
.attr('markerHeight', 240)
|
.attr('markerHeight', 240)
|
||||||
@@ -29,7 +29,7 @@ const extension = (elem, type, id) => {
|
|||||||
.append('marker')
|
.append('marker')
|
||||||
.attr('id', type + '-extensionEnd')
|
.attr('id', type + '-extensionEnd')
|
||||||
.attr('class', 'marker extension ' + type)
|
.attr('class', 'marker extension ' + type)
|
||||||
.attr('refX', 19)
|
.attr('refX', 1)
|
||||||
.attr('refY', 7)
|
.attr('refY', 7)
|
||||||
.attr('markerWidth', 20)
|
.attr('markerWidth', 20)
|
||||||
.attr('markerHeight', 28)
|
.attr('markerHeight', 28)
|
||||||
@@ -44,7 +44,7 @@ const composition = (elem, type) => {
|
|||||||
.append('marker')
|
.append('marker')
|
||||||
.attr('id', type + '-compositionStart')
|
.attr('id', type + '-compositionStart')
|
||||||
.attr('class', 'marker composition ' + type)
|
.attr('class', 'marker composition ' + type)
|
||||||
.attr('refX', 0)
|
.attr('refX', 18)
|
||||||
.attr('refY', 7)
|
.attr('refY', 7)
|
||||||
.attr('markerWidth', 190)
|
.attr('markerWidth', 190)
|
||||||
.attr('markerHeight', 240)
|
.attr('markerHeight', 240)
|
||||||
@@ -57,7 +57,7 @@ const composition = (elem, type) => {
|
|||||||
.append('marker')
|
.append('marker')
|
||||||
.attr('id', type + '-compositionEnd')
|
.attr('id', type + '-compositionEnd')
|
||||||
.attr('class', 'marker composition ' + type)
|
.attr('class', 'marker composition ' + type)
|
||||||
.attr('refX', 19)
|
.attr('refX', 1)
|
||||||
.attr('refY', 7)
|
.attr('refY', 7)
|
||||||
.attr('markerWidth', 20)
|
.attr('markerWidth', 20)
|
||||||
.attr('markerHeight', 28)
|
.attr('markerHeight', 28)
|
||||||
@@ -71,7 +71,7 @@ const aggregation = (elem, type) => {
|
|||||||
.append('marker')
|
.append('marker')
|
||||||
.attr('id', type + '-aggregationStart')
|
.attr('id', type + '-aggregationStart')
|
||||||
.attr('class', 'marker aggregation ' + type)
|
.attr('class', 'marker aggregation ' + type)
|
||||||
.attr('refX', 0)
|
.attr('refX', 18)
|
||||||
.attr('refY', 7)
|
.attr('refY', 7)
|
||||||
.attr('markerWidth', 190)
|
.attr('markerWidth', 190)
|
||||||
.attr('markerHeight', 240)
|
.attr('markerHeight', 240)
|
||||||
@@ -84,7 +84,7 @@ const aggregation = (elem, type) => {
|
|||||||
.append('marker')
|
.append('marker')
|
||||||
.attr('id', type + '-aggregationEnd')
|
.attr('id', type + '-aggregationEnd')
|
||||||
.attr('class', 'marker aggregation ' + type)
|
.attr('class', 'marker aggregation ' + type)
|
||||||
.attr('refX', 19)
|
.attr('refX', 1)
|
||||||
.attr('refY', 7)
|
.attr('refY', 7)
|
||||||
.attr('markerWidth', 20)
|
.attr('markerWidth', 20)
|
||||||
.attr('markerHeight', 28)
|
.attr('markerHeight', 28)
|
||||||
@@ -98,7 +98,7 @@ const dependency = (elem, type) => {
|
|||||||
.append('marker')
|
.append('marker')
|
||||||
.attr('id', type + '-dependencyStart')
|
.attr('id', type + '-dependencyStart')
|
||||||
.attr('class', 'marker dependency ' + type)
|
.attr('class', 'marker dependency ' + type)
|
||||||
.attr('refX', 0)
|
.attr('refX', 6)
|
||||||
.attr('refY', 7)
|
.attr('refY', 7)
|
||||||
.attr('markerWidth', 190)
|
.attr('markerWidth', 190)
|
||||||
.attr('markerHeight', 240)
|
.attr('markerHeight', 240)
|
||||||
@@ -111,7 +111,7 @@ const dependency = (elem, type) => {
|
|||||||
.append('marker')
|
.append('marker')
|
||||||
.attr('id', type + '-dependencyEnd')
|
.attr('id', type + '-dependencyEnd')
|
||||||
.attr('class', 'marker dependency ' + type)
|
.attr('class', 'marker dependency ' + type)
|
||||||
.attr('refX', 19)
|
.attr('refX', 13)
|
||||||
.attr('refY', 7)
|
.attr('refY', 7)
|
||||||
.attr('markerWidth', 20)
|
.attr('markerWidth', 20)
|
||||||
.attr('markerHeight', 28)
|
.attr('markerHeight', 28)
|
||||||
@@ -125,15 +125,32 @@ const lollipop = (elem, type) => {
|
|||||||
.append('marker')
|
.append('marker')
|
||||||
.attr('id', type + '-lollipopStart')
|
.attr('id', type + '-lollipopStart')
|
||||||
.attr('class', 'marker lollipop ' + type)
|
.attr('class', 'marker lollipop ' + type)
|
||||||
.attr('refX', 0)
|
.attr('refX', 13)
|
||||||
.attr('refY', 7)
|
.attr('refY', 7)
|
||||||
.attr('markerWidth', 190)
|
.attr('markerWidth', 190)
|
||||||
.attr('markerHeight', 240)
|
.attr('markerHeight', 240)
|
||||||
.attr('orient', 'auto')
|
.attr('orient', 'auto')
|
||||||
.append('circle')
|
.append('circle')
|
||||||
.attr('stroke', 'black')
|
.attr('stroke', 'black')
|
||||||
.attr('fill', 'white')
|
.attr('fill', 'transparent')
|
||||||
.attr('cx', 6)
|
.attr('cx', 7)
|
||||||
|
.attr('cy', 7)
|
||||||
|
.attr('r', 6);
|
||||||
|
|
||||||
|
elem
|
||||||
|
.append('defs')
|
||||||
|
.append('marker')
|
||||||
|
.attr('id', type + '-lollipopEnd')
|
||||||
|
.attr('class', 'marker lollipop ' + type)
|
||||||
|
.attr('refX', 1)
|
||||||
|
.attr('refY', 7)
|
||||||
|
.attr('markerWidth', 190)
|
||||||
|
.attr('markerHeight', 240)
|
||||||
|
.attr('orient', 'auto')
|
||||||
|
.append('circle')
|
||||||
|
.attr('stroke', 'black')
|
||||||
|
.attr('fill', 'transparent')
|
||||||
|
.attr('cx', 7)
|
||||||
.attr('cy', 7)
|
.attr('cy', 7)
|
||||||
.attr('r', 6);
|
.attr('r', 6);
|
||||||
};
|
};
|
||||||
@@ -143,7 +160,7 @@ const point = (elem, type) => {
|
|||||||
.attr('id', type + '-pointEnd')
|
.attr('id', type + '-pointEnd')
|
||||||
.attr('class', 'marker ' + type)
|
.attr('class', 'marker ' + type)
|
||||||
.attr('viewBox', '0 0 10 10')
|
.attr('viewBox', '0 0 10 10')
|
||||||
.attr('refX', 10)
|
.attr('refX', 6)
|
||||||
.attr('refY', 5)
|
.attr('refY', 5)
|
||||||
.attr('markerUnits', 'userSpaceOnUse')
|
.attr('markerUnits', 'userSpaceOnUse')
|
||||||
.attr('markerWidth', 12)
|
.attr('markerWidth', 12)
|
||||||
|
@@ -291,8 +291,8 @@ export const adjustClustersAndEdges = (graph, depth) => {
|
|||||||
shape: 'labelRect',
|
shape: 'labelRect',
|
||||||
style: '',
|
style: '',
|
||||||
});
|
});
|
||||||
const edge1 = JSON.parse(JSON.stringify(edge));
|
const edge1 = structuredClone(edge);
|
||||||
const edge2 = JSON.parse(JSON.stringify(edge));
|
const edge2 = structuredClone(edge);
|
||||||
edge1.label = '';
|
edge1.label = '';
|
||||||
edge1.arrowTypeEnd = 'none';
|
edge1.arrowTypeEnd = 'none';
|
||||||
edge2.label = '';
|
edge2.label = '';
|
||||||
|
@@ -5,7 +5,7 @@ import { sanitizeText as _sanitizeText } from '../diagrams/common/common.js';
|
|||||||
import { setupGraphViewbox as _setupGraphViewbox } from '../setupGraphViewbox.js';
|
import { setupGraphViewbox as _setupGraphViewbox } from '../setupGraphViewbox.js';
|
||||||
import { addStylesForDiagram } from '../styles.js';
|
import { addStylesForDiagram } from '../styles.js';
|
||||||
import type { DiagramDefinition, DiagramDetector } from './types.js';
|
import type { DiagramDefinition, DiagramDetector } from './types.js';
|
||||||
import * as _commonDb from '../commonDb.js';
|
import * as _commonDb from '../diagrams/common/commonDb.js';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Packaging and exposing resources for external diagrams so that they can import
|
Packaging and exposing resources for external diagrams so that they can import
|
||||||
|
@@ -1,6 +1,11 @@
|
|||||||
import * as configApi from '../../config.js';
|
import * as configApi from '../../config.js';
|
||||||
import { sanitizeText } from '../common/common.js';
|
import { sanitizeText } from '../common/common.js';
|
||||||
import { setAccTitle, getAccTitle, getAccDescription, setAccDescription } from '../../commonDb.js';
|
import {
|
||||||
|
setAccTitle,
|
||||||
|
getAccTitle,
|
||||||
|
getAccDescription,
|
||||||
|
setAccDescription,
|
||||||
|
} from '../common/commonDb.js';
|
||||||
|
|
||||||
let c4ShapeArray = [];
|
let c4ShapeArray = [];
|
||||||
let boundaryParseStack = [''];
|
let boundaryParseStack = [''];
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
// @ts-nocheck - don't check until handle it
|
|
||||||
import type { Selection } from 'd3';
|
import type { Selection } from 'd3';
|
||||||
import { select } from 'd3';
|
import { select } from 'd3';
|
||||||
import { log } from '../../logger.js';
|
import { log } from '../../logger.js';
|
||||||
@@ -13,7 +12,7 @@ import {
|
|||||||
clear as commonClear,
|
clear as commonClear,
|
||||||
setDiagramTitle,
|
setDiagramTitle,
|
||||||
getDiagramTitle,
|
getDiagramTitle,
|
||||||
} from '../../commonDb.js';
|
} from '../common/commonDb.js';
|
||||||
import { ClassMember } from './classTypes.js';
|
import { ClassMember } from './classTypes.js';
|
||||||
import type {
|
import type {
|
||||||
ClassRelation,
|
ClassRelation,
|
||||||
@@ -66,21 +65,21 @@ export const setClassLabel = function (id: string, label: string) {
|
|||||||
* @public
|
* @public
|
||||||
*/
|
*/
|
||||||
export const addClass = function (id: string) {
|
export const addClass = function (id: string) {
|
||||||
const classId = splitClassNameAndType(id);
|
const { className, type } = splitClassNameAndType(id);
|
||||||
// Only add class if not exists
|
// Only add class if not exists
|
||||||
if (classes[classId.className] !== undefined) {
|
if (Object.hasOwn(classes, className)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
classes[classId.className] = {
|
classes[className] = {
|
||||||
id: classId.className,
|
id: className,
|
||||||
type: classId.type,
|
type: type,
|
||||||
label: classId.className,
|
label: className,
|
||||||
cssClasses: [],
|
cssClasses: [],
|
||||||
methods: [],
|
methods: [],
|
||||||
members: [],
|
members: [],
|
||||||
annotations: [],
|
annotations: [],
|
||||||
domId: MERMAID_DOM_ID_PREFIX + classId.className + '-' + classCounter,
|
domId: MERMAID_DOM_ID_PREFIX + className + '-' + classCounter,
|
||||||
} as ClassNode;
|
} as ClassNode;
|
||||||
|
|
||||||
classCounter++;
|
classCounter++;
|
||||||
@@ -170,6 +169,8 @@ export const addAnnotation = function (className: string, annotation: string) {
|
|||||||
* @public
|
* @public
|
||||||
*/
|
*/
|
||||||
export const addMember = function (className: string, member: string) {
|
export const addMember = function (className: string, member: string) {
|
||||||
|
addClass(className);
|
||||||
|
|
||||||
const validatedClassName = splitClassNameAndType(className).className;
|
const validatedClassName = splitClassNameAndType(className).className;
|
||||||
const theClass = classes[validatedClassName];
|
const theClass = classes[validatedClassName];
|
||||||
|
|
||||||
@@ -364,6 +365,7 @@ export const relationType = {
|
|||||||
const setupToolTips = function (element: Element) {
|
const setupToolTips = function (element: Element) {
|
||||||
let tooltipElem: Selection<HTMLDivElement, unknown, HTMLElement, unknown> =
|
let tooltipElem: Selection<HTMLDivElement, unknown, HTMLElement, unknown> =
|
||||||
select('.mermaidTooltip');
|
select('.mermaidTooltip');
|
||||||
|
// @ts-expect-error - Incorrect types
|
||||||
if ((tooltipElem._groups || tooltipElem)[0][0] === null) {
|
if ((tooltipElem._groups || tooltipElem)[0][0] === null) {
|
||||||
tooltipElem = select('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0);
|
tooltipElem = select('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0);
|
||||||
}
|
}
|
||||||
@@ -373,7 +375,6 @@ const setupToolTips = function (element: Element) {
|
|||||||
const nodes = svg.selectAll('g.node');
|
const nodes = svg.selectAll('g.node');
|
||||||
nodes
|
nodes
|
||||||
.on('mouseover', function () {
|
.on('mouseover', function () {
|
||||||
// @ts-expect-error - select is not part of the d3 type definition
|
|
||||||
const el = select(this);
|
const el = select(this);
|
||||||
const title = el.attr('title');
|
const title = el.attr('title');
|
||||||
// Don't try to draw a tooltip if no data is provided
|
// Don't try to draw a tooltip if no data is provided
|
||||||
@@ -383,6 +384,7 @@ const setupToolTips = function (element: Element) {
|
|||||||
// @ts-ignore - getBoundingClientRect is not part of the d3 type definition
|
// @ts-ignore - getBoundingClientRect is not part of the d3 type definition
|
||||||
const rect = this.getBoundingClientRect();
|
const rect = this.getBoundingClientRect();
|
||||||
|
|
||||||
|
// @ts-expect-error - Incorrect types
|
||||||
tooltipElem.transition().duration(200).style('opacity', '.9');
|
tooltipElem.transition().duration(200).style('opacity', '.9');
|
||||||
tooltipElem
|
tooltipElem
|
||||||
.text(el.attr('title'))
|
.text(el.attr('title'))
|
||||||
@@ -392,8 +394,8 @@ const setupToolTips = function (element: Element) {
|
|||||||
el.classed('hover', true);
|
el.classed('hover', true);
|
||||||
})
|
})
|
||||||
.on('mouseout', function () {
|
.on('mouseout', function () {
|
||||||
|
// @ts-expect-error - Incorrect types
|
||||||
tooltipElem.transition().duration(500).style('opacity', 0);
|
tooltipElem.transition().duration(500).style('opacity', 0);
|
||||||
// @ts-expect-error - select is not part of the d3 type definition
|
|
||||||
const el = select(this);
|
const el = select(this);
|
||||||
el.classed('hover', false);
|
el.classed('hover', false);
|
||||||
});
|
});
|
||||||
|
@@ -813,6 +813,20 @@ describe('given a class diagram with members and methods ', function () {
|
|||||||
parser.parse(str);
|
parser.parse(str);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should handle direct member declaration', function () {
|
||||||
|
parser.parse('classDiagram\n' + 'Car : wheels');
|
||||||
|
const car = classDb.getClass('Car');
|
||||||
|
expect(car.members.length).toBe(1);
|
||||||
|
expect(car.members[0].id).toBe('wheels');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle direct member declaration with type', function () {
|
||||||
|
parser.parse('classDiagram\n' + 'Car : int wheels');
|
||||||
|
const car = classDb.getClass('Car');
|
||||||
|
expect(car.members.length).toBe(1);
|
||||||
|
expect(car.members[0].id).toBe('int wheels');
|
||||||
|
});
|
||||||
|
|
||||||
it('should handle simple member declaration with type', function () {
|
it('should handle simple member declaration with type', function () {
|
||||||
const str = 'classDiagram\n' + 'class Car\n' + 'Car : int wheels';
|
const str = 'classDiagram\n' + 'class Car\n' + 'Car : int wheels';
|
||||||
|
|
||||||
|
@@ -109,25 +109,25 @@ g.classGroup line {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#extensionStart, .extension {
|
#extensionStart, .extension {
|
||||||
fill: ${options.mainBkg} !important;
|
fill: transparent !important;
|
||||||
stroke: ${options.lineColor} !important;
|
stroke: ${options.lineColor} !important;
|
||||||
stroke-width: 1;
|
stroke-width: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#extensionEnd, .extension {
|
#extensionEnd, .extension {
|
||||||
fill: ${options.mainBkg} !important;
|
fill: transparent !important;
|
||||||
stroke: ${options.lineColor} !important;
|
stroke: ${options.lineColor} !important;
|
||||||
stroke-width: 1;
|
stroke-width: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#aggregationStart, .aggregation {
|
#aggregationStart, .aggregation {
|
||||||
fill: ${options.mainBkg} !important;
|
fill: transparent !important;
|
||||||
stroke: ${options.lineColor} !important;
|
stroke: ${options.lineColor} !important;
|
||||||
stroke-width: 1;
|
stroke-width: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#aggregationEnd, .aggregation {
|
#aggregationEnd, .aggregation {
|
||||||
fill: ${options.mainBkg} !important;
|
fill: transparent !important;
|
||||||
stroke: ${options.lineColor} !important;
|
stroke: ${options.lineColor} !important;
|
||||||
stroke-width: 1;
|
stroke-width: 1;
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
import { sanitizeText, removeScript, parseGenericTypes } from './common.js';
|
import { sanitizeText, removeScript, parseGenericTypes, countOccurrence } from './common.js';
|
||||||
|
|
||||||
describe('when securityLevel is antiscript, all script must be removed', () => {
|
describe('when securityLevel is antiscript, all script must be removed', () => {
|
||||||
/**
|
/**
|
||||||
@@ -59,15 +59,29 @@ describe('Sanitize text', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('generic parser', () => {
|
describe('generic parser', () => {
|
||||||
it('should parse generic types', () => {
|
it.each([
|
||||||
expect(parseGenericTypes('test~T~')).toEqual('test<T>');
|
['test~T~', 'test<T>'],
|
||||||
expect(parseGenericTypes('test~Array~Array~string~~~')).toEqual('test<Array<Array<string>>>');
|
['test~Array~Array~string~~~', 'test<Array<Array<string>>>'],
|
||||||
expect(parseGenericTypes('test~Array~Array~string[]~~~')).toEqual(
|
['test~Array~Array~string[]~~~', 'test<Array<Array<string[]>>>'],
|
||||||
'test<Array<Array<string[]>>>'
|
['test ~Array~Array~string[]~~~', 'test <Array<Array<string[]>>>'],
|
||||||
);
|
['~test', '~test'],
|
||||||
expect(parseGenericTypes('test ~Array~Array~string[]~~~')).toEqual(
|
['~test~T~', '~test<T>'],
|
||||||
'test <Array<Array<string[]>>>'
|
])('should parse generic types: %s to %s', (input: string, expected: string) => {
|
||||||
);
|
expect(parseGenericTypes(input)).toEqual(expected);
|
||||||
expect(parseGenericTypes('~test')).toEqual('~test');
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it.each([
|
||||||
|
['', '', 0],
|
||||||
|
['', 'x', 0],
|
||||||
|
['test', 'x', 0],
|
||||||
|
['test', 't', 2],
|
||||||
|
['test', 'te', 1],
|
||||||
|
['test~T~', '~', 2],
|
||||||
|
['test~Array~Array~string~~~', '~', 6],
|
||||||
|
])(
|
||||||
|
'should count `%s` to contain occurrences of `%s` to be `%i`',
|
||||||
|
(str: string, substring: string, count: number) => {
|
||||||
|
expect(countOccurrence(str, substring)).toEqual(count);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
@@ -208,21 +208,33 @@ export const parseGenericTypes = function (input: string): string {
|
|||||||
return output.join('');
|
return output.join('');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const countOccurrence = (string: string, substring: string): number => {
|
||||||
|
return Math.max(0, string.split(substring).length - 1);
|
||||||
|
};
|
||||||
|
|
||||||
const shouldCombineSets = (previousSet: string, nextSet: string): boolean => {
|
const shouldCombineSets = (previousSet: string, nextSet: string): boolean => {
|
||||||
const prevCount = [...previousSet].reduce((count, char) => (char === '~' ? count + 1 : count), 0);
|
const prevCount = countOccurrence(previousSet, '~');
|
||||||
const nextCount = [...nextSet].reduce((count, char) => (char === '~' ? count + 1 : count), 0);
|
const nextCount = countOccurrence(nextSet, '~');
|
||||||
|
|
||||||
return prevCount === 1 && nextCount === 1;
|
return prevCount === 1 && nextCount === 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
const processSet = (input: string): string => {
|
const processSet = (input: string): string => {
|
||||||
const chars = [...input];
|
const tildeCount = countOccurrence(input, '~');
|
||||||
const tildeCount = chars.reduce((count, char) => (char === '~' ? count + 1 : count), 0);
|
let hasStartingTilde = false;
|
||||||
|
|
||||||
if (tildeCount <= 1) {
|
if (tildeCount <= 1) {
|
||||||
return input;
|
return input;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If there is an odd number of tildes, and the input starts with a tilde, we need to remove it and add it back in later
|
||||||
|
if (tildeCount % 2 !== 0 && input.startsWith('~')) {
|
||||||
|
input = input.substring(1);
|
||||||
|
hasStartingTilde = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const chars = [...input];
|
||||||
|
|
||||||
let first = chars.indexOf('~');
|
let first = chars.indexOf('~');
|
||||||
let last = chars.lastIndexOf('~');
|
let last = chars.lastIndexOf('~');
|
||||||
|
|
||||||
@@ -234,6 +246,11 @@ const processSet = (input: string): string => {
|
|||||||
last = chars.lastIndexOf('~');
|
last = chars.lastIndexOf('~');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add the starting tilde back in if we removed it
|
||||||
|
if (hasStartingTilde) {
|
||||||
|
chars.unshift('~');
|
||||||
|
}
|
||||||
|
|
||||||
return chars.join('');
|
return chars.join('');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
32
packages/mermaid/src/diagrams/common/commonDb.ts
Normal file
32
packages/mermaid/src/diagrams/common/commonDb.ts
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
import { sanitizeText as _sanitizeText } from './common.js';
|
||||||
|
import { getConfig } from '../../config.js';
|
||||||
|
|
||||||
|
let accTitle = '';
|
||||||
|
let diagramTitle = '';
|
||||||
|
let accDescription = '';
|
||||||
|
|
||||||
|
const sanitizeText = (txt: string): string => _sanitizeText(txt, getConfig());
|
||||||
|
|
||||||
|
export const clear = (): void => {
|
||||||
|
accTitle = '';
|
||||||
|
accDescription = '';
|
||||||
|
diagramTitle = '';
|
||||||
|
};
|
||||||
|
|
||||||
|
export const setAccTitle = (txt: string): void => {
|
||||||
|
accTitle = sanitizeText(txt).replace(/^\s+/g, '');
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getAccTitle = (): string => accTitle;
|
||||||
|
|
||||||
|
export const setAccDescription = (txt: string): void => {
|
||||||
|
accDescription = sanitizeText(txt).replace(/\n\s+/g, '\n');
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getAccDescription = (): string => accDescription;
|
||||||
|
|
||||||
|
export const setDiagramTitle = (txt: string): void => {
|
||||||
|
diagramTitle = sanitizeText(txt);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getDiagramTitle = (): string => diagramTitle;
|
@@ -9,7 +9,7 @@ import {
|
|||||||
clear as commonClear,
|
clear as commonClear,
|
||||||
setDiagramTitle,
|
setDiagramTitle,
|
||||||
getDiagramTitle,
|
getDiagramTitle,
|
||||||
} from '../../commonDb.js';
|
} from '../common/commonDb.js';
|
||||||
|
|
||||||
let entities = {};
|
let entities = {};
|
||||||
let relationships = [];
|
let relationships = [];
|
||||||
|
@@ -61,7 +61,7 @@ o\{ return 'ZERO_OR_MORE';
|
|||||||
"optionally to" return 'NON_IDENTIFYING';
|
"optionally to" return 'NON_IDENTIFYING';
|
||||||
\.\- return 'NON_IDENTIFYING';
|
\.\- return 'NON_IDENTIFYING';
|
||||||
\-\. return 'NON_IDENTIFYING';
|
\-\. return 'NON_IDENTIFYING';
|
||||||
[A-Za-z][A-Za-z0-9\-_]* return 'ALPHANUM';
|
[A-Za-z_][A-Za-z0-9\-_]* return 'ALPHANUM';
|
||||||
. return yytext[0];
|
. return yytext[0];
|
||||||
<<EOF>> return 'EOF';
|
<<EOF>> return 'EOF';
|
||||||
|
|
||||||
|
@@ -33,7 +33,7 @@ describe('when parsing ER diagram it...', function () {
|
|||||||
describe('has non A-Za-z0-9_- chars', function () {
|
describe('has non A-Za-z0-9_- chars', function () {
|
||||||
// these were entered using the Mac keyboard utility.
|
// these were entered using the Mac keyboard utility.
|
||||||
const chars =
|
const chars =
|
||||||
"~ ` ! @ # $ ^ & * ( ) - _ = + [ ] { } | / ; : ' . ? ¡ ⁄ ™ € £ ‹ ¢ › ∞ fi § ‡ • ° ª · º ‚ ≠ ± œ Œ ∑ „ ® † ˇ ¥ Á ¨ ˆ ˆ Ø π ∏ “ « » å Å ß Í ∂ Î ƒ Ï © ˙ Ó ∆ Ô ˚ ¬ Ò … Ú æ Æ Ω ¸ ≈ π ˛ ç Ç √ ◊ ∫ ı ˜ µ  ≤ ¯ ≥ ˘ ÷ ¿";
|
"~ ` ! @ # $ ^ & * ( ) - = + [ ] { } | / ; : ' . ? ¡ ⁄ ™ € £ ‹ ¢ › ∞ fi § ‡ • ° ª · º ‚ ≠ ± œ Œ ∑ „ ® † ˇ ¥ Á ¨ ˆ ˆ Ø π ∏ “ « » å Å ß Í ∂ Î ƒ Ï © ˙ Ó ∆ Ô ˚ ¬ Ò … Ú æ Æ Ω ¸ ≈ π ˛ ç Ç √ ◊ ∫ ı ˜ µ  ≤ ¯ ≥ ˘ ÷ ¿";
|
||||||
const allowed = chars.split(' ');
|
const allowed = chars.split(' ');
|
||||||
|
|
||||||
allowed.forEach((allowedChar) => {
|
allowed.forEach((allowedChar) => {
|
||||||
@@ -170,6 +170,13 @@ describe('when parsing ER diagram it...', function () {
|
|||||||
expect(entities[firstEntity].alias).toBe(alias);
|
expect(entities[firstEntity].alias).toBe(alias);
|
||||||
expect(entities[secondEntity].alias).toBeUndefined();
|
expect(entities[secondEntity].alias).toBeUndefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('can start with an underscore', function () {
|
||||||
|
const entity = '_foo';
|
||||||
|
erDiagram.parser.parse(`erDiagram\n${entity}\n`);
|
||||||
|
const entities = erDb.getEntities();
|
||||||
|
expect(entities.hasOwnProperty(entity)).toBe(true);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('attribute name', () => {
|
describe('attribute name', () => {
|
||||||
|
@@ -11,7 +11,7 @@ import {
|
|||||||
clear as commonClear,
|
clear as commonClear,
|
||||||
setDiagramTitle,
|
setDiagramTitle,
|
||||||
getDiagramTitle,
|
getDiagramTitle,
|
||||||
} from '../../commonDb.js';
|
} from '../common/commonDb.js';
|
||||||
|
|
||||||
const MERMAID_DOM_ID_PREFIX = 'flowchart-';
|
const MERMAID_DOM_ID_PREFIX = 'flowchart-';
|
||||||
let vertexCounter = 0;
|
let vertexCounter = 0;
|
||||||
|
@@ -15,7 +15,7 @@ import {
|
|||||||
clear as commonClear,
|
clear as commonClear,
|
||||||
setDiagramTitle,
|
setDiagramTitle,
|
||||||
getDiagramTitle,
|
getDiagramTitle,
|
||||||
} from '../../commonDb.js';
|
} from '../common/commonDb.js';
|
||||||
|
|
||||||
dayjs.extend(dayjsIsoWeek);
|
dayjs.extend(dayjsIsoWeek);
|
||||||
dayjs.extend(dayjsCustomParseFormat);
|
dayjs.extend(dayjsCustomParseFormat);
|
||||||
|
@@ -11,7 +11,7 @@ import {
|
|||||||
clear as commonClear,
|
clear as commonClear,
|
||||||
setDiagramTitle,
|
setDiagramTitle,
|
||||||
getDiagramTitle,
|
getDiagramTitle,
|
||||||
} from '../../commonDb.js';
|
} from '../common/commonDb.js';
|
||||||
|
|
||||||
let mainBranchName = getConfig().gitGraph.mainBranchName;
|
let mainBranchName = getConfig().gitGraph.mainBranchName;
|
||||||
let mainBranchOrder = getConfig().gitGraph.mainBranchOrder;
|
let mainBranchOrder = getConfig().gitGraph.mainBranchOrder;
|
||||||
|
@@ -9,7 +9,7 @@ import {
|
|||||||
getAccDescription,
|
getAccDescription,
|
||||||
setAccDescription,
|
setAccDescription,
|
||||||
clear as commonClear,
|
clear as commonClear,
|
||||||
} from '../../commonDb.js';
|
} from '../common/commonDb.js';
|
||||||
import type { PieFields, PieDB, Sections } from './pieTypes.js';
|
import type { PieFields, PieDB, Sections } from './pieTypes.js';
|
||||||
import type { RequiredDeep } from 'type-fest';
|
import type { RequiredDeep } from 'type-fest';
|
||||||
import type { PieDiagramConfig } from '../../config.type.js';
|
import type { PieDiagramConfig } from '../../config.type.js';
|
||||||
|
@@ -8,7 +8,7 @@ import {
|
|||||||
getAccDescription,
|
getAccDescription,
|
||||||
setAccDescription,
|
setAccDescription,
|
||||||
clear as commonClear,
|
clear as commonClear,
|
||||||
} from '../../commonDb.js';
|
} from '../common/commonDb.js';
|
||||||
import { QuadrantBuilder } from './quadrantBuilder.js';
|
import { QuadrantBuilder } from './quadrantBuilder.js';
|
||||||
|
|
||||||
const config = configApi.getConfig();
|
const config = configApi.getConfig();
|
||||||
|
@@ -7,7 +7,7 @@ import {
|
|||||||
getAccDescription,
|
getAccDescription,
|
||||||
setAccDescription,
|
setAccDescription,
|
||||||
clear as commonClear,
|
clear as commonClear,
|
||||||
} from '../../commonDb.js';
|
} from '../common/commonDb.js';
|
||||||
|
|
||||||
let relations = [];
|
let relations = [];
|
||||||
let latestRequirement = {};
|
let latestRequirement = {};
|
||||||
|
@@ -8,7 +8,7 @@ import {
|
|||||||
setDiagramTitle,
|
setDiagramTitle,
|
||||||
getDiagramTitle,
|
getDiagramTitle,
|
||||||
clear as commonClear,
|
clear as commonClear,
|
||||||
} from '../../commonDb.js';
|
} from '../common/commonDb.js';
|
||||||
|
|
||||||
// Sankey diagram represented by nodes and links between those nodes
|
// Sankey diagram represented by nodes and links between those nodes
|
||||||
let links: SankeyLink[] = [];
|
let links: SankeyLink[] = [];
|
||||||
|
@@ -287,7 +287,7 @@ placement
|
|||||||
|
|
||||||
signal
|
signal
|
||||||
: actor signaltype '+' actor text2
|
: actor signaltype '+' actor text2
|
||||||
{ $$ = [$1,$4,{type: 'addMessage', from:$1.actor, to:$4.actor, signalType:$2, msg:$5},
|
{ $$ = [$1,$4,{type: 'addMessage', from:$1.actor, to:$4.actor, signalType:$2, msg:$5, activate: true},
|
||||||
{type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $4}
|
{type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $4}
|
||||||
]}
|
]}
|
||||||
| actor signaltype '-' actor text2
|
| actor signaltype '-' actor text2
|
||||||
|
@@ -9,7 +9,7 @@ import {
|
|||||||
getAccDescription,
|
getAccDescription,
|
||||||
setAccDescription,
|
setAccDescription,
|
||||||
clear as commonClear,
|
clear as commonClear,
|
||||||
} from '../../commonDb.js';
|
} from '../common/commonDb.js';
|
||||||
|
|
||||||
let prevActor = undefined;
|
let prevActor = undefined;
|
||||||
let actors = {};
|
let actors = {};
|
||||||
@@ -119,7 +119,8 @@ export const addSignal = function (
|
|||||||
idFrom,
|
idFrom,
|
||||||
idTo,
|
idTo,
|
||||||
message = { text: undefined, wrap: undefined },
|
message = { text: undefined, wrap: undefined },
|
||||||
messageType
|
messageType,
|
||||||
|
activate = false
|
||||||
) {
|
) {
|
||||||
if (messageType === LINETYPE.ACTIVE_END) {
|
if (messageType === LINETYPE.ACTIVE_END) {
|
||||||
const cnt = activationCount(idFrom.actor);
|
const cnt = activationCount(idFrom.actor);
|
||||||
@@ -142,6 +143,7 @@ export const addSignal = function (
|
|||||||
message: message.text,
|
message: message.text,
|
||||||
wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,
|
wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,
|
||||||
type: messageType,
|
type: messageType,
|
||||||
|
activate,
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
@@ -445,6 +447,19 @@ export const getActorProperty = function (actor, key) {
|
|||||||
return undefined;
|
return undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {object} AddMessageParams A message from one actor to another.
|
||||||
|
* @property {string} from - The id of the actor sending the message.
|
||||||
|
* @property {string} to - The id of the actor receiving the message.
|
||||||
|
* @property {string} msg - The message text.
|
||||||
|
* @property {number} signalType - The type of signal.
|
||||||
|
* @property {"addMessage"} type - Set to `"addMessage"` if this is an `AddMessageParams`.
|
||||||
|
* @property {boolean} [activate] - If `true`, this signal starts an activation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {object | object[] | AddMessageParams} param - Object of parameters.
|
||||||
|
*/
|
||||||
export const apply = function (param) {
|
export const apply = function (param) {
|
||||||
if (Array.isArray(param)) {
|
if (Array.isArray(param)) {
|
||||||
param.forEach(function (item) {
|
param.forEach(function (item) {
|
||||||
@@ -525,7 +540,7 @@ export const apply = function (param) {
|
|||||||
lastDestroyed = undefined;
|
lastDestroyed = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addSignal(param.from, param.to, param.msg, param.signalType);
|
addSignal(param.from, param.to, param.msg, param.signalType, param.activate);
|
||||||
break;
|
break;
|
||||||
case 'boxStart':
|
case 'boxStart':
|
||||||
addBox(param.boxData);
|
addBox(param.boxData);
|
||||||
|
@@ -104,6 +104,7 @@ describe('more than one sequence diagram', () => {
|
|||||||
expect(diagram1.db.getMessages()).toMatchInlineSnapshot(`
|
expect(diagram1.db.getMessages()).toMatchInlineSnapshot(`
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
"activate": false,
|
||||||
"from": "Alice",
|
"from": "Alice",
|
||||||
"message": "Hello Bob, how are you?",
|
"message": "Hello Bob, how are you?",
|
||||||
"to": "Bob",
|
"to": "Bob",
|
||||||
@@ -111,6 +112,7 @@ describe('more than one sequence diagram', () => {
|
|||||||
"wrap": false,
|
"wrap": false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"activate": false,
|
||||||
"from": "Bob",
|
"from": "Bob",
|
||||||
"message": "I am good thanks!",
|
"message": "I am good thanks!",
|
||||||
"to": "Alice",
|
"to": "Alice",
|
||||||
@@ -127,6 +129,7 @@ describe('more than one sequence diagram', () => {
|
|||||||
expect(diagram2.db.getMessages()).toMatchInlineSnapshot(`
|
expect(diagram2.db.getMessages()).toMatchInlineSnapshot(`
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
"activate": false,
|
||||||
"from": "Alice",
|
"from": "Alice",
|
||||||
"message": "Hello Bob, how are you?",
|
"message": "Hello Bob, how are you?",
|
||||||
"to": "Bob",
|
"to": "Bob",
|
||||||
@@ -134,6 +137,7 @@ describe('more than one sequence diagram', () => {
|
|||||||
"wrap": false,
|
"wrap": false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"activate": false,
|
||||||
"from": "Bob",
|
"from": "Bob",
|
||||||
"message": "I am good thanks!",
|
"message": "I am good thanks!",
|
||||||
"to": "Alice",
|
"to": "Alice",
|
||||||
@@ -152,6 +156,7 @@ describe('more than one sequence diagram', () => {
|
|||||||
expect(diagram3.db.getMessages()).toMatchInlineSnapshot(`
|
expect(diagram3.db.getMessages()).toMatchInlineSnapshot(`
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
"activate": false,
|
||||||
"from": "Alice",
|
"from": "Alice",
|
||||||
"message": "Hello John, how are you?",
|
"message": "Hello John, how are you?",
|
||||||
"to": "John",
|
"to": "John",
|
||||||
@@ -159,6 +164,7 @@ describe('more than one sequence diagram', () => {
|
|||||||
"wrap": false,
|
"wrap": false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"activate": false,
|
||||||
"from": "John",
|
"from": "John",
|
||||||
"message": "I am good thanks!",
|
"message": "I am good thanks!",
|
||||||
"to": "Alice",
|
"to": "Alice",
|
||||||
@@ -548,6 +554,7 @@ deactivate Bob`;
|
|||||||
|
|
||||||
expect(messages.length).toBe(4);
|
expect(messages.length).toBe(4);
|
||||||
expect(messages[0].type).toBe(diagram.db.LINETYPE.DOTTED);
|
expect(messages[0].type).toBe(diagram.db.LINETYPE.DOTTED);
|
||||||
|
expect(messages[0].activate).toBeTruthy();
|
||||||
expect(messages[1].type).toBe(diagram.db.LINETYPE.ACTIVE_START);
|
expect(messages[1].type).toBe(diagram.db.LINETYPE.ACTIVE_START);
|
||||||
expect(messages[1].from.actor).toBe('Bob');
|
expect(messages[1].from.actor).toBe('Bob');
|
||||||
expect(messages[2].type).toBe(diagram.db.LINETYPE.DOTTED);
|
expect(messages[2].type).toBe(diagram.db.LINETYPE.DOTTED);
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
// @ts-nocheck TODO: fix file
|
// @ts-nocheck TODO: fix file
|
||||||
import { select, selectAll } from 'd3';
|
import { select } from 'd3';
|
||||||
import svgDraw, { ACTOR_TYPE_WIDTH, drawText, fixLifeLineHeights } from './svgDraw.js';
|
import svgDraw, { ACTOR_TYPE_WIDTH, drawText, fixLifeLineHeights } from './svgDraw.js';
|
||||||
import { log } from '../../logger.js';
|
import { log } from '../../logger.js';
|
||||||
import common from '../common/common.js';
|
import common from '../common/common.js';
|
||||||
@@ -622,10 +622,10 @@ const activationBounds = function (actor, actors) {
|
|||||||
|
|
||||||
const left = activations.reduce(function (acc, activation) {
|
const left = activations.reduce(function (acc, activation) {
|
||||||
return common.getMin(acc, activation.startx);
|
return common.getMin(acc, activation.startx);
|
||||||
}, actorObj.x + actorObj.width / 2);
|
}, actorObj.x + actorObj.width / 2 - 1);
|
||||||
const right = activations.reduce(function (acc, activation) {
|
const right = activations.reduce(function (acc, activation) {
|
||||||
return common.getMax(acc, activation.stopx);
|
return common.getMax(acc, activation.stopx);
|
||||||
}, actorObj.x + actorObj.width / 2);
|
}, actorObj.x + actorObj.width / 2 + 1);
|
||||||
return [left, right];
|
return [left, right];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1389,9 +1389,8 @@ const buildNoteModel = function (msg, actors, diagObj) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const buildMessageModel = function (msg, actors, diagObj) {
|
const buildMessageModel = function (msg, actors, diagObj) {
|
||||||
let process = false;
|
|
||||||
if (
|
if (
|
||||||
[
|
![
|
||||||
diagObj.db.LINETYPE.SOLID_OPEN,
|
diagObj.db.LINETYPE.SOLID_OPEN,
|
||||||
diagObj.db.LINETYPE.DOTTED_OPEN,
|
diagObj.db.LINETYPE.DOTTED_OPEN,
|
||||||
diagObj.db.LINETYPE.SOLID,
|
diagObj.db.LINETYPE.SOLID,
|
||||||
@@ -1402,17 +1401,47 @@ const buildMessageModel = function (msg, actors, diagObj) {
|
|||||||
diagObj.db.LINETYPE.DOTTED_POINT,
|
diagObj.db.LINETYPE.DOTTED_POINT,
|
||||||
].includes(msg.type)
|
].includes(msg.type)
|
||||||
) {
|
) {
|
||||||
process = true;
|
|
||||||
}
|
|
||||||
if (!process) {
|
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
const fromBounds = activationBounds(msg.from, actors);
|
const [fromLeft, fromRight] = activationBounds(msg.from, actors);
|
||||||
const toBounds = activationBounds(msg.to, actors);
|
const [toLeft, toRight] = activationBounds(msg.to, actors);
|
||||||
const fromIdx = fromBounds[0] <= toBounds[0] ? 1 : 0;
|
const isArrowToRight = fromLeft <= toLeft;
|
||||||
const toIdx = fromBounds[0] < toBounds[0] ? 0 : 1;
|
const startx = isArrowToRight ? fromRight : fromLeft;
|
||||||
const allBounds = [...fromBounds, ...toBounds];
|
let stopx = isArrowToRight ? toLeft : toRight;
|
||||||
const boundedWidth = Math.abs(toBounds[toIdx] - fromBounds[fromIdx]);
|
|
||||||
|
// As the line width is considered, the left and right values will be off by 2.
|
||||||
|
const isArrowToActivation = Math.abs(toLeft - toRight) > 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adjust the value based on the arrow direction
|
||||||
|
* @param value - The value to adjust
|
||||||
|
* @returns The adjustment with correct sign to be added to the actual value.
|
||||||
|
*/
|
||||||
|
const adjustValue = (value: number) => {
|
||||||
|
return isArrowToRight ? -value : value;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is an edge case for the first activation.
|
||||||
|
* Proper fix would require significant changes.
|
||||||
|
* So, we set an activate flag in the message, and cross check that with isToActivation
|
||||||
|
* In cases where the message is to an activation that was properly detected, we don't want to move the arrow head
|
||||||
|
* The activation will not be detected on the first message, so we need to move the arrow head
|
||||||
|
*/
|
||||||
|
if (msg.activate && !isArrowToActivation) {
|
||||||
|
stopx += adjustValue(conf.activationWidth / 2 - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shorten the length of arrow at the end and move the marker forward (using refX) to have a clean arrowhead
|
||||||
|
* This is not required for open arrows that don't have arrowheads
|
||||||
|
*/
|
||||||
|
if (![diagObj.db.LINETYPE.SOLID_OPEN, diagObj.db.LINETYPE.DOTTED_OPEN].includes(msg.type)) {
|
||||||
|
stopx += adjustValue(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
const allBounds = [fromLeft, fromRight, toLeft, toRight];
|
||||||
|
const boundedWidth = Math.abs(startx - stopx);
|
||||||
if (msg.wrap && msg.message) {
|
if (msg.wrap && msg.message) {
|
||||||
msg.message = utils.wrapLabel(
|
msg.message = utils.wrapLabel(
|
||||||
msg.message,
|
msg.message,
|
||||||
@@ -1429,8 +1458,8 @@ const buildMessageModel = function (msg, actors, diagObj) {
|
|||||||
conf.width
|
conf.width
|
||||||
),
|
),
|
||||||
height: 0,
|
height: 0,
|
||||||
startx: fromBounds[fromIdx],
|
startx,
|
||||||
stopx: toBounds[toIdx],
|
stopx,
|
||||||
starty: 0,
|
starty: 0,
|
||||||
stopy: 0,
|
stopy: 0,
|
||||||
message: msg.message,
|
message: msg.message,
|
||||||
|
@@ -703,7 +703,7 @@ export const insertArrowHead = function (elem) {
|
|||||||
.append('defs')
|
.append('defs')
|
||||||
.append('marker')
|
.append('marker')
|
||||||
.attr('id', 'arrowhead')
|
.attr('id', 'arrowhead')
|
||||||
.attr('refX', 9)
|
.attr('refX', 7.9)
|
||||||
.attr('refY', 5)
|
.attr('refY', 5)
|
||||||
.attr('markerUnits', 'userSpaceOnUse')
|
.attr('markerUnits', 'userSpaceOnUse')
|
||||||
.attr('markerWidth', 12)
|
.attr('markerWidth', 12)
|
||||||
@@ -723,7 +723,7 @@ export const insertArrowFilledHead = function (elem) {
|
|||||||
.append('defs')
|
.append('defs')
|
||||||
.append('marker')
|
.append('marker')
|
||||||
.attr('id', 'filled-head')
|
.attr('id', 'filled-head')
|
||||||
.attr('refX', 18)
|
.attr('refX', 15.5)
|
||||||
.attr('refY', 7)
|
.attr('refY', 7)
|
||||||
.attr('markerWidth', 20)
|
.attr('markerWidth', 20)
|
||||||
.attr('markerHeight', 28)
|
.attr('markerHeight', 28)
|
||||||
@@ -768,7 +768,7 @@ export const insertArrowCrossHead = function (elem) {
|
|||||||
.attr('markerHeight', 8)
|
.attr('markerHeight', 8)
|
||||||
.attr('orient', 'auto')
|
.attr('orient', 'auto')
|
||||||
.attr('refX', 4)
|
.attr('refX', 4)
|
||||||
.attr('refY', 5);
|
.attr('refY', 4.5);
|
||||||
// The cross
|
// The cross
|
||||||
marker
|
marker
|
||||||
.append('path')
|
.append('path')
|
||||||
|
@@ -10,7 +10,7 @@ import {
|
|||||||
clear as commonClear,
|
clear as commonClear,
|
||||||
setDiagramTitle,
|
setDiagramTitle,
|
||||||
getDiagramTitle,
|
getDiagramTitle,
|
||||||
} from '../../commonDb.js';
|
} from '../common/commonDb.js';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
DEFAULT_DIAGRAM_DIRECTION,
|
DEFAULT_DIAGRAM_DIRECTION,
|
||||||
|
@@ -1,7 +1,5 @@
|
|||||||
import { parser as timeline } from './parser/timeline.jison';
|
import { parser as timeline } from './parser/timeline.jison';
|
||||||
import * as timelineDB from './timelineDb.js';
|
import * as timelineDB from './timelineDb.js';
|
||||||
import * as _commonDb from '../../commonDb.js';
|
|
||||||
|
|
||||||
import { setLogLevel } from '../../diagram-api/diagramAPI.js';
|
import { setLogLevel } from '../../diagram-api/diagramAPI.js';
|
||||||
|
|
||||||
describe('when parsing a timeline ', function () {
|
describe('when parsing a timeline ', function () {
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
import * as commonDb from '../../commonDb.js';
|
import * as commonDb from '../common/commonDb.js';
|
||||||
let currentSection = '';
|
let currentSection = '';
|
||||||
let currentTaskId = 0;
|
let currentTaskId = 0;
|
||||||
|
|
||||||
|
@@ -7,7 +7,7 @@ import {
|
|||||||
getAccDescription,
|
getAccDescription,
|
||||||
setAccDescription,
|
setAccDescription,
|
||||||
clear as commonClear,
|
clear as commonClear,
|
||||||
} from '../../commonDb.js';
|
} from '../common/commonDb.js';
|
||||||
|
|
||||||
let currentSection = '';
|
let currentSection = '';
|
||||||
|
|
||||||
|
@@ -32,7 +32,7 @@
|
|||||||
"unplugin-vue-components": "^0.25.0",
|
"unplugin-vue-components": "^0.25.0",
|
||||||
"vite": "^4.3.9",
|
"vite": "^4.3.9",
|
||||||
"vite-plugin-pwa": "^0.16.0",
|
"vite-plugin-pwa": "^0.16.0",
|
||||||
"vitepress": "1.0.0-rc.8",
|
"vitepress": "1.0.0-rc.10",
|
||||||
"workbox-window": "^7.0.0"
|
"workbox-window": "^7.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -56,7 +56,7 @@ Mermaid syntax for ER diagrams is compatible with PlantUML, with an extension to
|
|||||||
|
|
||||||
Where:
|
Where:
|
||||||
|
|
||||||
- `first-entity` is the name of an entity. Names must begin with an alphabetic character and may also contain digits, hyphens, and underscores.
|
- `first-entity` is the name of an entity. Names must begin with an alphabetic character or an underscore (from v<MERMAID_RELEASE_VERSION>+), and may also contain digits and hyphens.
|
||||||
- `relationship` describes the way that both entities inter-relate. See below.
|
- `relationship` describes the way that both entities inter-relate. See below.
|
||||||
- `second-entity` is the name of the other entity.
|
- `second-entity` is the name of the other entity.
|
||||||
- `relationship-label` describes the relationship from the perspective of the first entity.
|
- `relationship-label` describes the relationship from the perspective of the first entity.
|
||||||
|
75
pnpm-lock.yaml
generated
75
pnpm-lock.yaml
generated
@@ -374,7 +374,7 @@ importers:
|
|||||||
version: 4.1.2
|
version: 4.1.2
|
||||||
vitepress:
|
vitepress:
|
||||||
specifier: ^1.0.0-alpha.72
|
specifier: ^1.0.0-alpha.72
|
||||||
version: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)
|
version: 1.0.0-alpha.72(@algolia/client-search@4.19.1)(@types/node@18.16.0)
|
||||||
vitepress-plugin-search:
|
vitepress-plugin-search:
|
||||||
specifier: ^1.0.4-alpha.20
|
specifier: ^1.0.4-alpha.20
|
||||||
version: 1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-alpha.72)(vue@3.3.4)
|
version: 1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-alpha.72)(vue@3.3.4)
|
||||||
@@ -475,8 +475,8 @@ importers:
|
|||||||
specifier: ^0.16.0
|
specifier: ^0.16.0
|
||||||
version: 0.16.0(vite@4.3.9)(workbox-build@7.0.0)(workbox-window@7.0.0)
|
version: 0.16.0(vite@4.3.9)(workbox-build@7.0.0)(workbox-window@7.0.0)
|
||||||
vitepress:
|
vitepress:
|
||||||
specifier: 1.0.0-rc.8
|
specifier: 1.0.0-rc.10
|
||||||
version: 1.0.0-rc.8(@algolia/client-search@4.14.2)(@types/node@18.16.0)(search-insights@2.6.0)
|
version: 1.0.0-rc.10(@algolia/client-search@4.19.1)(@types/node@18.16.0)(search-insights@2.6.0)
|
||||||
workbox-window:
|
workbox-window:
|
||||||
specifier: ^7.0.0
|
specifier: ^7.0.0
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
@@ -545,48 +545,48 @@ packages:
|
|||||||
'@algolia/autocomplete-shared': 1.8.2
|
'@algolia/autocomplete-shared': 1.8.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.14.2)(algoliasearch@4.19.1)(search-insights@2.6.0):
|
/@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.19.1)(algoliasearch@4.19.1)(search-insights@2.6.0):
|
||||||
resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==}
|
resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.14.2)(algoliasearch@4.19.1)(search-insights@2.6.0)
|
'@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.19.1)(algoliasearch@4.19.1)(search-insights@2.6.0)
|
||||||
'@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.14.2)(algoliasearch@4.19.1)
|
'@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.19.1)(algoliasearch@4.19.1)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@algolia/client-search'
|
- '@algolia/client-search'
|
||||||
- algoliasearch
|
- algoliasearch
|
||||||
- search-insights
|
- search-insights
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.14.2)(algoliasearch@4.19.1)(search-insights@2.6.0):
|
/@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.19.1)(algoliasearch@4.19.1)(search-insights@2.6.0):
|
||||||
resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==}
|
resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
search-insights: '>= 1 < 3'
|
search-insights: '>= 1 < 3'
|
||||||
dependencies:
|
dependencies:
|
||||||
'@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.14.2)(algoliasearch@4.19.1)
|
'@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.19.1)(algoliasearch@4.19.1)
|
||||||
search-insights: 2.6.0
|
search-insights: 2.6.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@algolia/client-search'
|
- '@algolia/client-search'
|
||||||
- algoliasearch
|
- algoliasearch
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@algolia/autocomplete-preset-algolia@1.8.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2):
|
/@algolia/autocomplete-preset-algolia@1.8.2(@algolia/client-search@4.19.1)(algoliasearch@4.14.2):
|
||||||
resolution: {integrity: sha512-J0oTx4me6ZM9kIKPuL3lyU3aB8DEvpVvR6xWmHVROx5rOYJGQcZsdG4ozxwcOyiiu3qxMkIbzntnV1S1VWD8yA==}
|
resolution: {integrity: sha512-J0oTx4me6ZM9kIKPuL3lyU3aB8DEvpVvR6xWmHVROx5rOYJGQcZsdG4ozxwcOyiiu3qxMkIbzntnV1S1VWD8yA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@algolia/client-search': '>= 4.9.1 < 6'
|
'@algolia/client-search': '>= 4.9.1 < 6'
|
||||||
algoliasearch: '>= 4.9.1 < 6'
|
algoliasearch: '>= 4.9.1 < 6'
|
||||||
dependencies:
|
dependencies:
|
||||||
'@algolia/autocomplete-shared': 1.8.2
|
'@algolia/autocomplete-shared': 1.8.2
|
||||||
'@algolia/client-search': 4.14.2
|
'@algolia/client-search': 4.19.1
|
||||||
algoliasearch: 4.14.2
|
algoliasearch: 4.14.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.14.2)(algoliasearch@4.19.1):
|
/@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.19.1)(algoliasearch@4.19.1):
|
||||||
resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==}
|
resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@algolia/client-search': '>= 4.9.1 < 6'
|
'@algolia/client-search': '>= 4.9.1 < 6'
|
||||||
algoliasearch: '>= 4.9.1 < 6'
|
algoliasearch: '>= 4.9.1 < 6'
|
||||||
dependencies:
|
dependencies:
|
||||||
'@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.14.2)(algoliasearch@4.19.1)
|
'@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.19.1)(algoliasearch@4.19.1)
|
||||||
'@algolia/client-search': 4.14.2
|
'@algolia/client-search': 4.19.1
|
||||||
algoliasearch: 4.19.1
|
algoliasearch: 4.19.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
@@ -594,13 +594,13 @@ packages:
|
|||||||
resolution: {integrity: sha512-b6Z/X4MczChMcfhk6kfRmBzPgjoPzuS9KGR4AFsiLulLNRAAqhP+xZTKtMnZGhLuc61I20d5WqlId02AZvcO6g==}
|
resolution: {integrity: sha512-b6Z/X4MczChMcfhk6kfRmBzPgjoPzuS9KGR4AFsiLulLNRAAqhP+xZTKtMnZGhLuc61I20d5WqlId02AZvcO6g==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.14.2)(algoliasearch@4.19.1):
|
/@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.19.1)(algoliasearch@4.19.1):
|
||||||
resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==}
|
resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@algolia/client-search': '>= 4.9.1 < 6'
|
'@algolia/client-search': '>= 4.9.1 < 6'
|
||||||
algoliasearch: '>= 4.9.1 < 6'
|
algoliasearch: '>= 4.9.1 < 6'
|
||||||
dependencies:
|
dependencies:
|
||||||
'@algolia/client-search': 4.14.2
|
'@algolia/client-search': 4.19.1
|
||||||
algoliasearch: 4.19.1
|
algoliasearch: 4.19.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
@@ -1493,6 +1493,7 @@ packages:
|
|||||||
/@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.12.3):
|
/@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.12.3):
|
||||||
resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==}
|
resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.0.0-0
|
'@babel/core': ^7.0.0-0
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1508,6 +1509,7 @@ packages:
|
|||||||
/@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.12.3):
|
/@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.12.3):
|
||||||
resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==}
|
resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.0.0-0
|
'@babel/core': ^7.0.0-0
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1521,6 +1523,7 @@ packages:
|
|||||||
/@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.12.3):
|
/@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.12.3):
|
||||||
resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==}
|
resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-static-block instead.
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.12.0
|
'@babel/core': ^7.12.0
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1535,6 +1538,7 @@ packages:
|
|||||||
/@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.12.3):
|
/@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.12.3):
|
||||||
resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==}
|
resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-dynamic-import instead.
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.0.0-0
|
'@babel/core': ^7.0.0-0
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1546,6 +1550,7 @@ packages:
|
|||||||
/@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.12.3):
|
/@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.12.3):
|
||||||
resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==}
|
resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead.
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.0.0-0
|
'@babel/core': ^7.0.0-0
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1557,6 +1562,7 @@ packages:
|
|||||||
/@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.12.3):
|
/@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.12.3):
|
||||||
resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==}
|
resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-json-strings instead.
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.0.0-0
|
'@babel/core': ^7.0.0-0
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1568,6 +1574,7 @@ packages:
|
|||||||
/@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.12.3):
|
/@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.12.3):
|
||||||
resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==}
|
resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead.
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.0.0-0
|
'@babel/core': ^7.0.0-0
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1579,6 +1586,7 @@ packages:
|
|||||||
/@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.12.3):
|
/@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.12.3):
|
||||||
resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==}
|
resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.0.0-0
|
'@babel/core': ^7.0.0-0
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1590,6 +1598,7 @@ packages:
|
|||||||
/@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.12.3):
|
/@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.12.3):
|
||||||
resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==}
|
resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.0.0-0
|
'@babel/core': ^7.0.0-0
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1601,6 +1610,7 @@ packages:
|
|||||||
/@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.12.3):
|
/@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.12.3):
|
||||||
resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==}
|
resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.0.0-0
|
'@babel/core': ^7.0.0-0
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1615,6 +1625,7 @@ packages:
|
|||||||
/@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.12.3):
|
/@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.12.3):
|
||||||
resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==}
|
resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.0.0-0
|
'@babel/core': ^7.0.0-0
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1626,6 +1637,7 @@ packages:
|
|||||||
/@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.12.3):
|
/@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.12.3):
|
||||||
resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==}
|
resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.0.0-0
|
'@babel/core': ^7.0.0-0
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1638,6 +1650,7 @@ packages:
|
|||||||
/@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.12.3):
|
/@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.12.3):
|
||||||
resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==}
|
resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.0.0-0
|
'@babel/core': ^7.0.0-0
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1651,6 +1664,7 @@ packages:
|
|||||||
/@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.12.3):
|
/@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.12.3):
|
||||||
resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==}
|
resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.0.0-0
|
'@babel/core': ^7.0.0-0
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1666,6 +1680,7 @@ packages:
|
|||||||
/@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.12.3):
|
/@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.12.3):
|
||||||
resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==}
|
resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
|
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead.
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.0.0-0
|
'@babel/core': ^7.0.0-0
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -2921,10 +2936,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==}
|
resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@docsearch/js@3.3.5(@algolia/client-search@4.14.2):
|
/@docsearch/js@3.3.5(@algolia/client-search@4.19.1):
|
||||||
resolution: {integrity: sha512-nZi074OCryZnzva2LNcbQkwBJIND6cvuFI4s1FIe6Ygf6n9g6B/IYUULXNx05rpoCZ+KEoEt3taROpsHBliuSw==}
|
resolution: {integrity: sha512-nZi074OCryZnzva2LNcbQkwBJIND6cvuFI4s1FIe6Ygf6n9g6B/IYUULXNx05rpoCZ+KEoEt3taROpsHBliuSw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@docsearch/react': 3.3.5(@algolia/client-search@4.14.2)
|
'@docsearch/react': 3.3.5(@algolia/client-search@4.19.1)
|
||||||
preact: 10.11.0
|
preact: 10.11.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@algolia/client-search'
|
- '@algolia/client-search'
|
||||||
@@ -2933,10 +2948,10 @@ packages:
|
|||||||
- react-dom
|
- react-dom
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@docsearch/js@3.5.2(@algolia/client-search@4.14.2)(search-insights@2.6.0):
|
/@docsearch/js@3.5.2(@algolia/client-search@4.19.1)(search-insights@2.6.0):
|
||||||
resolution: {integrity: sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==}
|
resolution: {integrity: sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@docsearch/react': 3.5.2(@algolia/client-search@4.14.2)(search-insights@2.6.0)
|
'@docsearch/react': 3.5.2(@algolia/client-search@4.19.1)(search-insights@2.6.0)
|
||||||
preact: 10.11.0
|
preact: 10.11.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@algolia/client-search'
|
- '@algolia/client-search'
|
||||||
@@ -2946,7 +2961,7 @@ packages:
|
|||||||
- search-insights
|
- search-insights
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@docsearch/react@3.3.5(@algolia/client-search@4.14.2):
|
/@docsearch/react@3.3.5(@algolia/client-search@4.19.1):
|
||||||
resolution: {integrity: sha512-Zuxf4z5PZ9eIQkVCNu76v1H+KAztKItNn3rLzZa7kpBS+++TgNARITnZeUS7C1DKoAhJZFr6T/H+Lvc6h/iiYg==}
|
resolution: {integrity: sha512-Zuxf4z5PZ9eIQkVCNu76v1H+KAztKItNn3rLzZa7kpBS+++TgNARITnZeUS7C1DKoAhJZFr6T/H+Lvc6h/iiYg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@types/react': '>= 16.8.0 < 19.0.0'
|
'@types/react': '>= 16.8.0 < 19.0.0'
|
||||||
@@ -2961,14 +2976,14 @@ packages:
|
|||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@algolia/autocomplete-core': 1.8.2
|
'@algolia/autocomplete-core': 1.8.2
|
||||||
'@algolia/autocomplete-preset-algolia': 1.8.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)
|
'@algolia/autocomplete-preset-algolia': 1.8.2(@algolia/client-search@4.19.1)(algoliasearch@4.14.2)
|
||||||
'@docsearch/css': 3.3.5
|
'@docsearch/css': 3.3.5
|
||||||
algoliasearch: 4.14.2
|
algoliasearch: 4.14.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@algolia/client-search'
|
- '@algolia/client-search'
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@docsearch/react@3.5.2(@algolia/client-search@4.14.2)(search-insights@2.6.0):
|
/@docsearch/react@3.5.2(@algolia/client-search@4.19.1)(search-insights@2.6.0):
|
||||||
resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==}
|
resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@types/react': '>= 16.8.0 < 19.0.0'
|
'@types/react': '>= 16.8.0 < 19.0.0'
|
||||||
@@ -2985,8 +3000,8 @@ packages:
|
|||||||
search-insights:
|
search-insights:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.14.2)(algoliasearch@4.19.1)(search-insights@2.6.0)
|
'@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.19.1)(algoliasearch@4.19.1)(search-insights@2.6.0)
|
||||||
'@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.14.2)(algoliasearch@4.19.1)
|
'@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.19.1)(algoliasearch@4.19.1)
|
||||||
'@docsearch/css': 3.5.2
|
'@docsearch/css': 3.5.2
|
||||||
algoliasearch: 4.19.1
|
algoliasearch: 4.19.1
|
||||||
search-insights: 2.6.0
|
search-insights: 2.6.0
|
||||||
@@ -15407,16 +15422,16 @@ packages:
|
|||||||
flexsearch: 0.7.31
|
flexsearch: 0.7.31
|
||||||
glob-to-regexp: 0.4.1
|
glob-to-regexp: 0.4.1
|
||||||
markdown-it: 13.0.1
|
markdown-it: 13.0.1
|
||||||
vitepress: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)
|
vitepress: 1.0.0-alpha.72(@algolia/client-search@4.19.1)(@types/node@18.16.0)
|
||||||
vue: 3.3.4
|
vue: 3.3.4
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/vitepress@1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0):
|
/vitepress@1.0.0-alpha.72(@algolia/client-search@4.19.1)(@types/node@18.16.0):
|
||||||
resolution: {integrity: sha512-Ou7fNE/OVYLrKGQMHSTVG6AcNsdv7tm4ACrdhx93SPMzEDj8UgIb4RFa5CTTowaYf3jeDGi2EAJlzXVC+IE3dg==}
|
resolution: {integrity: sha512-Ou7fNE/OVYLrKGQMHSTVG6AcNsdv7tm4ACrdhx93SPMzEDj8UgIb4RFa5CTTowaYf3jeDGi2EAJlzXVC+IE3dg==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@docsearch/css': 3.3.3
|
'@docsearch/css': 3.3.3
|
||||||
'@docsearch/js': 3.3.5(@algolia/client-search@4.14.2)
|
'@docsearch/js': 3.3.5(@algolia/client-search@4.19.1)
|
||||||
'@vitejs/plugin-vue': 4.2.3(vite@4.4.9)(vue@3.3.4)
|
'@vitejs/plugin-vue': 4.2.3(vite@4.4.9)(vue@3.3.4)
|
||||||
'@vue/devtools-api': 6.5.0
|
'@vue/devtools-api': 6.5.0
|
||||||
'@vueuse/core': 10.3.0(vue@3.3.4)
|
'@vueuse/core': 10.3.0(vue@3.3.4)
|
||||||
@@ -15441,12 +15456,12 @@ packages:
|
|||||||
- terser
|
- terser
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/vitepress@1.0.0-rc.8(@algolia/client-search@4.14.2)(@types/node@18.16.0)(search-insights@2.6.0):
|
/vitepress@1.0.0-rc.10(@algolia/client-search@4.19.1)(@types/node@18.16.0)(search-insights@2.6.0):
|
||||||
resolution: {integrity: sha512-InoW3VdY0KDrFi/Nffy9hoL5wd7ScWaCiHx6im4TCCvNP01N7AF0Wq5MX+4b3HIZGS6I9b3ltbP1pGvqHP79Mg==}
|
resolution: {integrity: sha512-+MsahIWqq5WUEmj6MR4obcKYbT7im07jZPCQPdNJExkeOSbOAJ4xypSLx88x7rvtzWHhHc5aXbOhCRvGEGjFrw==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@docsearch/css': 3.5.2
|
'@docsearch/css': 3.5.2
|
||||||
'@docsearch/js': 3.5.2(@algolia/client-search@4.14.2)(search-insights@2.6.0)
|
'@docsearch/js': 3.5.2(@algolia/client-search@4.19.1)(search-insights@2.6.0)
|
||||||
'@vue/devtools-api': 6.5.0
|
'@vue/devtools-api': 6.5.0
|
||||||
'@vueuse/core': 10.4.1(vue@3.3.4)
|
'@vueuse/core': 10.4.1(vue@3.3.4)
|
||||||
'@vueuse/integrations': 10.4.1(focus-trap@7.5.2)(vue@3.3.4)
|
'@vueuse/integrations': 10.4.1(focus-trap@7.5.2)(vue@3.3.4)
|
||||||
|
Reference in New Issue
Block a user