Merge pull request #3604 from devcer/feat/3601-cspell-configuration

Added and configured cspell plugin to eslint
This commit is contained in:
Sidharth Vinod 2022-10-19 00:18:06 +05:30 committed by GitHub
commit 06b5c192b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
56 changed files with 559 additions and 149 deletions

View File

@ -19,9 +19,10 @@
"plugin:jsdoc/recommended",
"plugin:json/recommended",
"plugin:markdown/recommended",
"plugin:@cspell/recommended",
"prettier"
],
"plugins": ["@typescript-eslint", "no-only-tests", "html", "jest", "jsdoc", "json"],
"plugins": ["@typescript-eslint", "no-only-tests", "html", "jest", "jsdoc", "json", "@cspell"],
"rules": {
"no-console": "error",
"no-prototype-builtins": "off",
@ -48,6 +49,14 @@
}
],
"json/*": ["error", "allowComments"],
"@cspell/spellchecker": [
"error",
{
"checkIdentifiers": false,
"checkStrings": false,
"checkStringTemplates": false
}
],
"no-empty": [
"error",
{

View File

@ -13,7 +13,8 @@
"sandboxed",
"Sveidqvist",
"verdana",
"Visio"
"Visio",
"mermiad"
],
"ignoreWords": [
"Adamiecki",
@ -38,7 +39,30 @@
"Podlite",
"redmine",
"sphinxcontrib",
"Tuleap"
"Tuleap",
"dagre",
"vitepress",
"docsify",
"colour",
"graphlib",
"acyclicer",
"ranksep",
"descr",
"substate",
"Ashish",
"bbox",
"techn",
"cytoscape",
"Lucida",
"Bilkent",
"cpettitt",
"antiscript",
"ts-nocheck",
"setupGraphViewbox",
"flatmap",
"Kaufmann",
"viewports",
"edgechromium"
],
"patterns": [
{

View File

@ -45,7 +45,6 @@ export const imgSnapshotTest = (graphStr, _options, api = false, validation) =>
options.fontSize = '16px';
}
const useAppli = Cypress.env('useAppli');
//const useAppli = false;
cy.log('Hello ' + useAppli ? 'Appli' : 'image-snapshot');
const name = (options.name || cy.state('runnable').fullTitle()).replace(/\s+/g, '-');

View File

@ -21,7 +21,7 @@ describe('Git Graph diagram', () => {
// // Call Open on eyes to initialize a test session
// cy.eyesOpen({
// appName: 'Demo App',
// testName: 'Ultrafast grid demo',
// testName: 'UltraFast grid demo',
// });
// // check the login page with fluent api, see more info here

View File

@ -94,7 +94,7 @@
}
// var diagram = ` graph TD
// A --> B["<a href='javasc`;
// A --> B["<a href='javascript`;
// diagram += `ript#colon;xssAttack()'>AAA</a>"]`;
let diagram = ` graph TD
A --> B["<a href='javasc`;

View File

@ -91,6 +91,7 @@
"@applitools/eyes-cypress": "3.27.2",
"@commitlint/cli": "17.1.2",
"@commitlint/config-conventional": "17.1.0",
"@cspell/eslint-plugin": "^6.12.0",
"@types/d3": "7.4.0",
"@types/dompurify": "2.3.4",
"@types/eslint": "8.4.6",

View File

@ -2,7 +2,7 @@
export const id = 'example-diagram';
/**
* Detector function that will be called by mermaid to determine if the diagram is this type of digram.
* Detector function that will be called by mermaid to determine if the diagram is this type of diagram.
*
* @param txt The diagram text will be passed to the detector
* @returns True if the diagram text matches a diagram of this type

View File

@ -16,7 +16,7 @@ export const draw = (text, id, version) => {
log.debug('Rendering example diagram\n' + text, 'Conf: ');
const THEME_COLOR_LIMIT = getConfig().themeVariables.THEME_COLOR_LIMIT;
const securityLevel = getConfig().securityLevel;
// Handle root and Document for when rendering in sanbox mode
// Handle root and Document for when rendering in sandbox mode
let sandboxElement;
if (securityLevel === 'sandbox') {
sandboxElement = select('#i' + id);

View File

@ -11,7 +11,7 @@ cytoscape.use(coseBilkent);
/**
* @param {any} svg The svg element to draw the diagram onto
* @param {object} mindmap The maindmap data and hierarchy
* @param {object} mindmap The mindmap data and hierarchy
* @param section
* @param {object} conf The configuration object
*/
@ -52,7 +52,7 @@ function drawEdges(edgesEl, cy) {
/**
* @param {any} svg The svg element to draw the diagram onto
* @param {object} mindmap The maindmap data and hierarchy
* @param {object} mindmap The mindmap data and hierarchy
* @param section
* @param cy
* @param {object} conf The configuration object
@ -96,7 +96,6 @@ function addNodes(mindmap, cy, conf, level) {
/**
* @param node
* @param conf
* @param cy
*/
function layoutMindmap(node, conf) {
return new Promise((resolve) => {
@ -121,7 +120,7 @@ function layoutMindmap(node, conf) {
renderEl.remove();
addNodes(node, cy, conf, 0);
// Make cytoscape care about the dimensisions of the nodes
// Make cytoscape care about the dimensions of the nodes
cy.nodes().forEach(function (n) {
n.layoutDimensions = () => {
const data = n.data();
@ -143,10 +142,7 @@ function layoutMindmap(node, conf) {
});
}
/**
* @param node
* @param cy
* @param positionedMindmap
* @param conf
*/
function positionNodes(cy) {
cy.nodes().map((node, id) => {
@ -184,7 +180,7 @@ export const draw = async (text, id, version, diagObj) => {
log.debug('Renering info diagram\n' + text);
const securityLevel = getConfig().securityLevel;
// Handle root and Document for when rendering in sanbox mode
// Handle root and Document for when rendering in sandbox mode
let sandboxElement;
if (securityLevel === 'sandbox') {
sandboxElement = select('#i' + id);

View File

@ -166,7 +166,7 @@ export const sanitize = (options: any) => {
}
});
// Check that there no attempts of xss, there should be no tags at all in the directive
// blocking data urls as base64 urls can contain svgs with inline script tags
// blocking data urls as base64 urls can contain svg's with inline script tags
Object.keys(options).forEach((key) => {
if (typeof options[key] === 'string') {
if (

View File

@ -310,7 +310,7 @@ const cutPathAtIntersect = (_points, boundryNode) => {
// const node = clusterDb[edge.toCluster].node;
log.info('abc88 checking point', point, boundryNode);
// check if point is inside the boundry rect
// check if point is inside the boundary rect
if (!outsideNode(boundryNode, point) && !isInside) {
// First point inside the rect found
// Calc the intersection coord between the point anf the last point outside the rect
@ -429,7 +429,7 @@ export const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph
})
.curve(curve);
// Contruct stroke classes based on properties
// Construct stroke classes based on properties
let strokeClasses;
switch (edge.thickness) {
case 'normal':

View File

@ -1,5 +1,5 @@
/*
* Borrowed with love from from dagrge-d3. Many thanks to cpettitt!
* Borrowed with love from from dagre-d3. Many thanks to cpettitt!
*/
import node from './intersect-node.js';

View File

@ -28,7 +28,7 @@ function intersectLine(p1, p2, q1, q2) {
// Check signs of r3 and r4. If both point 3 and point 4 lie on
// same side of line 1, the line segments do not intersect.
if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {
return /*DONT_INTERSECT*/;
return /*DON'T_INTERSECT*/;
}
// Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0
@ -44,7 +44,7 @@ function intersectLine(p1, p2, q1, q2) {
// on same side of second line segment, the line segments do
// not intersect.
if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {
return /*DONT_INTERSECT*/;
return /*DON'T_INTERSECT*/;
}
// Line segments intersect: compute intersection point.

View File

@ -235,7 +235,7 @@ export const adjustClustersAndEdges = (graph, depth) => {
// Check if any edge leaves the cluster (not the actual cluster, that's a link from the box)
if (edge.v !== id && edge.w !== id) {
// Any edge where either the one of the nodes is decending to the cluster but not the other
// Any edge where either the one of the nodes is descending to the cluster but not the other
// if (decendants[id].indexOf(edge.v) < 0 && decendants[id].indexOf(edge.w) < 0) {
const d1 = isDecendant(edge.v, id);

View File

@ -291,7 +291,7 @@ const cylinder = (parent, node) => {
(Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))
) {
// ellipsis equation: x*x / a*a + y*y / b*b = 1
// solve for y to get adjustion value for pos.y
// solve for y to get adjusted value for pos.y
let y = ry * ry * (1 - (x * x) / (rx * rx));
if (y != 0) y = Math.sqrt(y);
y = ry - y;

View File

@ -119,11 +119,11 @@ const config: Partial<MermaidConfig> = {
/**
* This option controls if the generated ids of nodes in the SVG are generated randomly or based
* on a seed. If set to false, the IDs are generated based on the current date and thus are not
* deterministic. This is the default behaviour.
* deterministic. This is the default behavior.
*
* **Notes**:
*
* This matters if your files are checked into sourcecontrol e.g. git and should not change unless
* This matters if your files are checked into source control e.g. git and should not change unless
* content is changed.
*
* Default value: false
@ -633,9 +633,9 @@ const config: Partial<MermaidConfig> = {
numberSectionStyles: 4,
/**
* | Parameter | Description | Type | Required | Values |
* | ---------- | --------------------------- | ---- | -------- | ---------------- |
* | axisFormat | Datetime format of the axis | 3 | Required | Date in yy-mm-dd |
* | Parameter | Description | Type | Required | Values |
* | ---------- | ---------------------------- | ---- | -------- | ---------------- |
* | axisFormat | Date/time format of the axis | 3 | Required | Date in yy-mm-dd |
*
* **Notes:**
*
@ -1168,7 +1168,7 @@ const config: Partial<MermaidConfig> = {
* | --------------- | ----------- | ------- | -------- | ------------------ |
* | c4BoundaryInRow | See Notes | Integer | Required | Any Positive Value |
*
* **Notes:** How many boundarys to place in each row.
* **Notes:** How many boundaries to place in each row.
*
* Default value: 2
*/

View File

@ -7,9 +7,9 @@ import { addStylesForDiagram } from '../styles';
import { DiagramDefinition, DiagramDetector } from './types';
/*
Packaging and exposing resources for externa diagrams so that they can import
diagramAPI and have access to selct parts of mermaid common code reqiored to
create diagrams worling like the internal diagrams.
Packaging and exposing resources for external diagrams so that they can import
diagramAPI and have access to select parts of mermaid common code required to
create diagrams working like the internal diagrams.
*/
export const log = _log;
export const setLogLevel = _setLogLevel;

View File

@ -441,20 +441,26 @@ export const drawRels = function (diagram, rels, getC4ShapeObj, diagObj) {
* @param diagram
* @param parentBoundaryAlias
* @param parentBounds
* @param currentBoundarys
* @param currentBoundaries
* @param diagObj
*/
function drawInsideBoundary(diagram, parentBoundaryAlias, parentBounds, currentBoundarys, diagObj) {
function drawInsideBoundary(
diagram,
parentBoundaryAlias,
parentBounds,
currentBoundaries,
diagObj
) {
let currentBounds = new Bounds(diagObj);
// Calculate the width limit of the boundar. label/type 的长度,
// Calculate the width limit of the boundary. label/type 的长度,
currentBounds.data.widthLimit =
parentBounds.data.widthLimit / Math.min(c4BoundaryInRow, currentBoundarys.length);
parentBounds.data.widthLimit / Math.min(c4BoundaryInRow, currentBoundaries.length);
// Math.min(
// conf.width * conf.c4ShapeInRow + conf.c4ShapeMargin * conf.c4ShapeInRow * 2,
// parentBounds.data.widthLimit / Math.min(conf.c4BoundaryInRow, currentBoundarys.length)
// parentBounds.data.widthLimit / Math.min(conf.c4BoundaryInRow, currentBoundaries.length)
// );
for (let i = 0; i < currentBoundarys.length; i++) {
let currentBoundary = currentBoundarys[i];
for (let i = 0; i < currentBoundaries.length; i++) {
let currentBoundary = currentBoundaries[i];
let Y = 0;
currentBoundary.image = { width: 0, height: 0, Y: 0 };
if (currentBoundary.sprite) {
@ -508,13 +514,13 @@ function drawInsideBoundary(diagram, parentBoundaryAlias, parentBounds, currentB
}
if (i == 0 || i % c4BoundaryInRow === 0) {
// Calculate the drawing start point of the currentBoundarys.
// Calculate the drawing start point of the currentBoundaries.
let _x = parentBounds.data.startx + conf.diagramMarginX;
let _y = parentBounds.data.stopy + conf.diagramMarginY + Y;
currentBounds.setData(_x, _x, _y, _y);
} else {
// Calculate the drawing start point of the currentBoundarys.
// Calculate the drawing start point of the currentBoundaries.
let _x =
currentBounds.data.stopx !== currentBounds.data.startx
? currentBounds.data.stopx + conf.diagramMarginX
@ -540,8 +546,6 @@ function drawInsideBoundary(diagram, parentBoundaryAlias, parentBounds, currentB
if (nextCurrentBoundarys.length > 0) {
// draw boundary inside currentBoundary
// bounds.init();
// parentBoundaryWidthLimit = bounds.data.stopx - bounds.startx;
drawInsideBoundary(
diagram,
parentBoundaryAlias,
@ -576,7 +580,7 @@ function drawInsideBoundary(diagram, parentBoundaryAlias, parentBounds, currentB
export const draw = function (_text, id, _version, diagObj) {
conf = configApi.getConfig().c4;
const securityLevel = configApi.getConfig().securityLevel;
// Handle root and Document for when rendering in sanbox mode
// Handle root and Document for when rendering in sandbox mode
let sandboxElement;
if (securityLevel === 'sandbox') {
sandboxElement = select('#i' + id);
@ -616,10 +620,10 @@ export const draw = function (_text, id, _version, diagObj) {
globalBoundaryMaxY = conf.diagramMarginY;
const title = diagObj.db.getTitle();
let currentBoundarys = diagObj.db.getBoundarys('');
let currentBoundaries = diagObj.db.getBoundarys('');
// switch (c4type) {
// case 'C4Context':
drawInsideBoundary(diagram, '', screenBounds, currentBoundarys, diagObj);
drawInsideBoundary(diagram, '', screenBounds, currentBoundaries, diagObj);
// break;
// }

View File

@ -1,7 +1,7 @@
import type { DiagramDetector } from '../../diagram-api/types';
export const classDetectorV2: DiagramDetector = (txt, config) => {
// If we have confgured to use dagre-wrapper then we should return true in this function for classDiagram code thus making it use the new class diagram
// If we have configured to use dagre-wrapper then we should return true in this function for classDiagram code thus making it use the new class diagram
if (txt.match(/^\s*classDiagram/) !== null && config?.class?.defaultRenderer === 'dagre-wrapper')
return true;
// We have not opted to use the new renderer so we should return true if we detect a class diagram

View File

@ -1,7 +1,7 @@
import type { DiagramDetector } from '../../diagram-api/types';
export const classDetector: DiagramDetector = (txt, config) => {
// If we have confgured to use dagre-wrapper then we should never return true in this function
// If we have configured to use dagre-wrapper then we should never return true in this function
if (config?.class?.defaultRenderer === 'dagre-wrapper') return false;
// We have not opted to use the new renderer so we should return true if we detect a class diagram
return txt.match(/^\s*classDiagram/) !== null;

View File

@ -64,6 +64,7 @@ export const addClasses = function (classes, g, _id, diagObj) {
// if (evaluate(getConfig().flowchart.htmlLabels)) {
// const node = {
// label: vertexText.replace(
// eslint-disable-next-line @cspell/spellchecker
// /fa[lrsb]?:fa-[\w-]+/g,
// s => `<i class='${s.replace(':', ' ')}'></i>`
// )

View File

@ -148,7 +148,7 @@ export const draw = function (text, id, _version, diagObj) {
log.info('Rendering diagram ' + text);
const securityLevel = getConfig().securityLevel;
// Handle root and Document for when rendering in sanbox mode
// Handle root and Document for when rendering in sandbox mode
let sandboxElement;
if (securityLevel === 'sandbox') {
sandboxElement = select('#i' + id);

View File

@ -347,7 +347,7 @@ const buildMethodDisplay = function (parsedText) {
};
const buildLegacyDisplay = function (text) {
// if for some reason we dont have any match, use old format to parse text
// if for some reason we don't have any match, use old format to parse text
let displayText = '';
let cssStyle = '';
let memberText = '';

View File

@ -60,7 +60,7 @@ export const sanitizeTextOrArray = (
export const lineBreakRegex = /<br\s*\/?>/gi;
/**
* Whether or not a text has any linebreaks
* Whether or not a text has any line breaks
*
* @param {string} text The text to test
* @returns {boolean} Whether or not the text has breaks
@ -80,7 +80,7 @@ export const splitBreaks = (text: string): string[] => {
};
/**
* Converts placeholders to linebreaks in HTML
* Converts placeholders to line breaks in HTML
*
* @param {string} s HTML with placeholders
* @returns {string} HTML with breaks instead of placeholders

View File

@ -644,7 +644,7 @@ export const draw = function (text, id, _version, diagObj) {
// inserted - this represents the insertion point for relationship paths
const firstEntity = drawEntities(svg, diagObj.db.getEntities(), g);
// TODO: externalise the addition of entities to the graph - it's a bit 'buried' in the above
// TODO: externalize the addition of entities to the graph - it's a bit 'buried' in the above
// Add all the relationships to the graph
const relationships = addRelationships(diagObj.db.getRelationships(), g);

View File

@ -279,7 +279,7 @@ function cylinder(parent, bbox, node) {
(Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))
) {
// ellipsis equation: x*x / a*a + y*y / b*b = 1
// solve for y to get adjustion value for pos.y
// solve for y to get adjusted value for pos.y
let y = ry * ry * (1 - (x * x) / (rx * rx));
if (y != 0) y = Math.sqrt(y);
y = ry - y;

View File

@ -1,7 +1,7 @@
import type { DiagramDetector } from '../../diagram-api/types';
export const flowDetectorV2: DiagramDetector = (txt, config) => {
// If we have confgured to use dagre-wrapper then we should return true in this function for graph code thus making it use the new flowchart diagram
// If we have configured to use dagre-wrapper then we should return true in this function for graph code thus making it use the new flowchart diagram
if (config?.flowchart?.defaultRenderer === 'dagre-wrapper' && txt.match(/^\s*graph/) !== null)
return true;
return txt.match(/^\s*flowchart/) !== null;

View File

@ -1,7 +1,7 @@
import type { DiagramDetector } from '../../diagram-api/types';
export const flowDetector: DiagramDetector = (txt, config) => {
// If we have confired to only use new flow charts this function shohuld always return false
// If we have conferred to only use new flow charts this function should always return false
// as in not signalling true for a legacy flowchart
if (config?.flowchart?.defaultRenderer === 'dagre-wrapper') return false;
return txt.match(/^\s*graph/) !== null;

View File

@ -2,11 +2,7 @@ import flowDb from '../flowDb';
import flow from './flow';
import filter from 'lodash/filter';
import { setConfig } from '../../../config';
// import DOMPurify from 'dompurify';
// const domPurify = DOMPurify.createDOMPurify(window);
// const clean = DOMPurify.sanitize(dirty);
setConfig({
securityLevel: 'strict',
});

View File

@ -229,7 +229,7 @@ const getStartDate = function (prevTime, dateFormat, str) {
* Parse a string as a moment duration.
*
* The string have to be compound by a value and a shorthand duration unit. For example `5d`
* representes 5 days.
* represents 5 days.
*
* Shorthand unit supported are:
*

View File

@ -27,7 +27,7 @@ export const draw = function (text, id, version, diagObj) {
// parser.parse(text);
const securityLevel = getConfig().securityLevel;
// Handle root and Document for when rendering in sanbox mode
// Handle root and Document for when rendering in sandbox mode
let sandboxElement;
if (securityLevel === 'sandbox') {
sandboxElement = select('#i' + id);
@ -610,7 +610,7 @@ export const draw = function (text, id, version, diagObj) {
}
/**
* From this stackexchange question:
* From this stack exchange question:
* http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript
*
* @param arr
@ -629,7 +629,7 @@ export const draw = function (text, id, version, diagObj) {
}
/**
* From this stackexchange question:
* From this stack exchange question:
* http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array
*
* @param arr

View File

@ -65,17 +65,6 @@ describe('when parsing a gantt diagram it', function () {
expect(parserFnConstructor(str)).not.toThrow();
});
/**
* Beslutsflöde inligt nedan. Obs bla bla bla
*
* graph TD
* A[Hard pledge] -- text on link -->B(Round edge)
* B --> C{to do or not to do}
* C -->|Too| D[Result one]
* C -->|Doo| E[Result two]
*
* Params bapa - a unique bapap
*/
it('should handle a task definition', function () {
const str =
'gantt\n' +

View File

@ -39,6 +39,7 @@ export const parseDirective = function (statement, context, type) {
// * @param currentCommit
// * @param otherCommit
// */
// eslint-disable-next-line @cspell/spellchecker
// function isfastforwardable(currentCommit, otherCommit) {
// log.debug('Entering isfastforwardable:', currentCommit.id, otherCommit.id);
// let cnt = 0;
@ -384,14 +385,14 @@ export const checkout = function (branch) {
/**
* @param arr
* @param key
* @param newval
* @param newVal
*/
function upsert(arr, key, newval) {
function upsert(arr, key, newVal) {
const index = arr.indexOf(key);
if (index === -1) {
arr.push(newval);
arr.push(newVal);
} else {
arr.splice(index, 1, newval);
arr.splice(index, 1, newVal);
}
}

View File

@ -218,18 +218,18 @@ function cloneNode(svg, selector) {
/**
* @param svg
* @param commitid
* @param commitId
* @param branches
* @param direction
*/
function renderCommitHistory(svg, commitid, branches, direction) {
function renderCommitHistory(svg, commitId, branches, direction) {
let commit;
const numCommits = Object.keys(allCommitsDict).length;
if (typeof commitid === 'string') {
if (typeof commitId === 'string') {
do {
commit = allCommitsDict[commitid];
commit = allCommitsDict[commitId];
logger.debug('in renderCommitHistory', commit.id, commit.seq);
if (svg.select('#node-' + commitid).size() > 0) {
if (svg.select('#node-' + commitId).size() > 0) {
return;
}
svg
@ -291,15 +291,15 @@ function renderCommitHistory(svg, commitid, branches, direction) {
.attr('class', 'commit-msg')
.text(', ' + commit.message);
}
commitid = commit.parent;
} while (commitid && allCommitsDict[commitid]);
commitId = commit.parent;
} while (commitId && allCommitsDict[commitId]);
}
if (Array.isArray(commitid)) {
logger.debug('found merge commmit', commitid);
renderCommitHistory(svg, commitid[0], branches, direction);
if (Array.isArray(commitId)) {
logger.debug('found merge commmit', commitId);
renderCommitHistory(svg, commitId[0], branches, direction);
branchNum++;
renderCommitHistory(svg, commitid[1], branches, direction);
renderCommitHistory(svg, commitId[1], branches, direction);
branchNum--;
}
}

View File

@ -1,6 +1,6 @@
import { getConfig } from '../../config';
export default (dir, _branches, _commits) => {
export default (dir, _branches) => {
const config = getConfig().gitGraph;
const branches = [];
const commits = [];

View File

@ -9,16 +9,15 @@ import { getConfig } from '../../config';
* @param {any} text
* @param {any} id
* @param {any} version
* @param diagObj
*/
export const draw = (text, id, version, diagObj) => {
export const draw = (text, id, version) => {
try {
// const parser = infoParser.parser;
// parser.yy = db;
log.debug('Rendering info diagram\n' + text);
const securityLevel = getConfig().securityLevel;
// Handle root and Document for when rendering in sanbox mode
// Handle root and Document for when rendering in sandbox mode
let sandboxElement;
if (securityLevel === 'sandbox') {
sandboxElement = select('#i' + id);

View File

@ -21,7 +21,7 @@ export const draw = (txt, id, _version, diagObj) => {
log.debug('Rendering info diagram\n' + txt);
const securityLevel = configApi.getConfig().securityLevel;
// Handle root and Document for when rendering in sanbox mode
// Handle root and Document for when rendering in sandbox mode
let sandboxElement;
if (securityLevel === 'sandbox') {
sandboxElement = select('#i' + id);

View File

@ -311,7 +311,7 @@ export const draw = (text, id, _version, diagObj) => {
diagObj.parser.parse(text);
const securityLevel = conf.securityLevel;
// Handle root and Document for when rendering in sanbox mode
// Handle root and Document for when rendering in sandbox mode
let sandboxElement;
if (securityLevel === 'sandbox') {
sandboxElement = select('#i' + id);

View File

@ -130,7 +130,7 @@ Note right of Bob: Bob thinks
Bob-->Alice: I am good thanks!`;
mermaidAPI.parse(str);
diagram.renderer.draw(str, 'tst', '1.2.3', diagram); // needs to be rendered for the correct value of visibility autonumbers
diagram.renderer.draw(str, 'tst', '1.2.3', diagram); // needs to be rendered for the correct value of visibility auto numbers
expect(diagram.db.showSequenceNumbers()).toBe(false);
});
it('should show sequence numbers when autonumber is enabled', function () {
@ -142,7 +142,7 @@ Note right of Bob: Bob thinks
Bob-->Alice: I am good thanks!`;
mermaidAPI.parse(str);
diagram.renderer.draw(str, 'tst', '1.2.3', diagram); // needs to be rendered for the correct value of visibility autonumbers
diagram.renderer.draw(str, 'tst', '1.2.3', diagram); // needs to be rendered for the correct value of visibility auto numbers
expect(diagram.db.showSequenceNumbers()).toBe(true);
});
it('should handle a sequenceDiagram definition with a title:', function () {
@ -1871,7 +1871,7 @@ Note right of Bob: Bob thinks
Bob-->Alice: I am good thanks!`;
mermaidAPI.parse(str1, diagram);
diagram.renderer.draw(str1, 'tst', '1.2.3', diagram); // needs to be rendered for the correct value of visibility autonumbers
diagram.renderer.draw(str1, 'tst', '1.2.3', diagram); // needs to be rendered for the correct value of visibility auto numbers
expect(diagram.db.showSequenceNumbers()).toBe(true);
const str2 = `

View File

@ -204,8 +204,8 @@ export const bounds = {
* Draws an note in the diagram with the attached line
*
* @param {any} elem - The diagram to draw to.
* @param {{ x: number; y: number; message: string; width: number }} noteModel - Startx: x axis
* start position, verticalPos: y axis position, messsage: the message to be shown, width: Set
* @param {{ x: number; y: number; message: string; width: number }} noteModel - startX: x axis
* start position, verticalPos: y axis position, message: the message to be shown, width: Set
* this with a custom width to override the default configured width.
*/
const drawNote = function (elem, noteModel) {
@ -280,7 +280,7 @@ const actorFont = (cnf) => {
*
* @param {any} diagram - The parent of the message element
* @param {any} msgModel - The model containing fields describing a message
* @returns {number} LineStarty - The Y coordinate at which the message line starts
* @returns {number} lineStartY - The Y coordinate at which the message line starts
*/
const boundMessage = function (diagram, msgModel) {
bounds.bumpVerticalPos(10);
@ -292,15 +292,15 @@ const boundMessage = function (diagram, msgModel) {
bounds.bumpVerticalPos(lineHeight);
let lineStarty;
let lineStartY;
let totalOffset = textDims.height - 10;
const textWidth = textDims.width;
if (startx === stopx) {
lineStarty = bounds.getVerticalPos() + totalOffset;
lineStartY = bounds.getVerticalPos() + totalOffset;
if (!conf.rightAngles) {
totalOffset += conf.boxMargin;
lineStarty = bounds.getVerticalPos() + totalOffset;
lineStartY = bounds.getVerticalPos() + totalOffset;
}
totalOffset += 30;
const dx = Math.max(textWidth / 2, conf.width / 2);
@ -312,15 +312,15 @@ const boundMessage = function (diagram, msgModel) {
);
} else {
totalOffset += conf.boxMargin;
lineStarty = bounds.getVerticalPos() + totalOffset;
bounds.insert(startx, lineStarty - 10, stopx, lineStarty);
lineStartY = bounds.getVerticalPos() + totalOffset;
bounds.insert(startx, lineStartY - 10, stopx, lineStartY);
}
bounds.bumpVerticalPos(totalOffset);
msgModel.height += totalOffset;
msgModel.stopy = msgModel.starty + msgModel.height;
bounds.insert(msgModel.fromBounds, msgModel.starty, msgModel.toBounds, msgModel.stopy);
return lineStarty;
return lineStartY;
};
/**
@ -328,10 +328,10 @@ const boundMessage = function (diagram, msgModel) {
*
* @param {any} diagram - The parent of the message element
* @param {any} msgModel - The model containing fields describing a message
* @param {number} lineStarty - The Y coordinate at which the message line starts
* @param {number} lineStartY - The Y coordinate at which the message line starts
* @param diagObj
*/
const drawMessage = function (diagram, msgModel, lineStarty, diagObj) {
const drawMessage = function (diagram, msgModel, lineStartY, diagObj) {
const { startx, stopx, starty, message, type, sequenceIndex, sequenceVisible } = msgModel;
const textDims = utils.calculateTextDimensions(message, messageFont(conf));
const textObj = svgDraw.getTextObj();
@ -360,8 +360,8 @@ const drawMessage = function (diagram, msgModel, lineStarty, diagObj) {
.append('path')
.attr(
'd',
`M ${startx},${lineStarty} H ${startx + Math.max(conf.width / 2, textWidth / 2)} V ${
lineStarty + 25
`M ${startx},${lineStartY} H ${startx + Math.max(conf.width / 2, textWidth / 2)} V ${
lineStartY + 25
} H ${startx}`
);
} else {
@ -372,27 +372,27 @@ const drawMessage = function (diagram, msgModel, lineStarty, diagObj) {
'M ' +
startx +
',' +
lineStarty +
lineStartY +
' C ' +
(startx + 60) +
',' +
(lineStarty - 10) +
(lineStartY - 10) +
' ' +
(startx + 60) +
',' +
(lineStarty + 30) +
(lineStartY + 30) +
' ' +
startx +
',' +
(lineStarty + 20)
(lineStartY + 20)
);
}
} else {
line = diagram.append('line');
line.attr('x1', startx);
line.attr('y1', lineStarty);
line.attr('y1', lineStartY);
line.attr('x2', stopx);
line.attr('y2', lineStarty);
line.attr('y2', lineStartY);
}
// Make an SVG Container
// Draw the line
@ -440,7 +440,7 @@ const drawMessage = function (diagram, msgModel, lineStarty, diagObj) {
diagram
.append('text')
.attr('x', startx)
.attr('y', lineStarty + 4)
.attr('y', lineStartY + 4)
.attr('font-family', 'sans-serif')
.attr('font-size', '12px')
.attr('text-anchor', 'middle')
@ -587,12 +587,12 @@ function adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoop
* @param {any} _text The text of the diagram
* @param {any} id The id of the diagram which will be used as a DOM element id¨
* @param {any} _version Mermaid version from package.json
* @param {any} diagObj A stanard diagram containing the db and the text and type etc of the diagram
* @param {any} diagObj A standard diagram containing the db and the text and type etc of the diagram
*/
export const draw = function (_text, id, _version, diagObj) {
const { securityLevel, sequence } = configApi.getConfig();
conf = sequence;
// Handle root and Document for when rendering in sanbox mode
// Handle root and Document for when rendering in sandbox mode
let sandboxElement;
if (securityLevel === 'sandbox') {
sandboxElement = select('#i' + id);
@ -811,8 +811,8 @@ export const draw = function (_text, id, _version, diagObj) {
msgModel.starty = bounds.getVerticalPos();
msgModel.sequenceIndex = sequenceIndex;
msgModel.sequenceVisible = diagObj.db.showSequenceNumbers();
const lineStarty = boundMessage(diagram, msgModel);
messagesToDraw.push({ messageModel: msgModel, lineStarty: lineStarty });
const lineStartY = boundMessage(diagram, msgModel);
messagesToDraw.push({ messageModel: msgModel, lineStartY: lineStartY });
bounds.models.addMessage(msgModel);
} catch (e) {
log.error('error while drawing message', e);
@ -836,7 +836,7 @@ export const draw = function (_text, id, _version, diagObj) {
}
});
messagesToDraw.forEach((e) => drawMessage(diagram, e.messageModel, e.lineStarty, diagObj));
messagesToDraw.forEach((e) => drawMessage(diagram, e.messageModel, e.lineStartY, diagObj));
if (conf.mirrorActors) {
// Draw actors below diagram

View File

@ -509,7 +509,7 @@ export const anchorElement = function (elem) {
*
* @param {any} elem - Element to append activation rect.
* @param {any} bounds - Activation box bounds.
* @param {any} verticalPos - Precise y cooridnate of bottom activation box edge.
* @param {any} verticalPos - Precise y coordinate of bottom activation box edge.
* @param {any} conf - Sequence diagram config object.
* @param {any} actorActivations - Number of activations on the actor.
*/
@ -527,10 +527,10 @@ export const drawActivation = function (elem, bounds, verticalPos, conf, actorAc
/**
* Draws a loop in the diagram
*
* @param {any} elem - Elemenet to append the loop to.
* @param {any} elem - Element to append the loop to.
* @param {any} loopModel - LoopModel of the given loop.
* @param {any} labelText - Text within the loop.
* @param {any} conf - Diagrom configuration
* @param {any} conf - Diagram configuration
* @returns {any}
*/
export const drawLoop = function (elem, loopModel, labelText, conf) {

View File

@ -137,7 +137,7 @@ export const drawDescrState = (g, stateDef) => {
/** Adds the creates a box around the existing content and adds a panel for the id on top of the content. */
/**
* Function that creates an title row and a frame around a substate for a composit state diagram.
* Function that creates an title row and a frame around a substate for a composite state diagram.
* The function returns a new d3 svg object with updated width and height properties;
*
* @param {any} g The d3 svg object for the substate to framed
@ -178,7 +178,7 @@ export const addTitleAndBox = (g, stateDef, altBkg) => {
// descrLine.attr('x2', graphBox.width + getConfig().state.padding);
if (stateDef.doc) {
// cnsole.warn(
// console.warn(
// stateDef.id,
// 'orgX: ',
// orgX,

View File

@ -1,7 +1,7 @@
import type { DiagramDetector } from '../../diagram-api/types';
export const stateDetector: DiagramDetector = (txt, config) => {
// If we have confired to only use new state diagrams this function should always return false
// If we have confirmed to only use new state diagrams this function should always return false
// as in not signalling true for a legacy state diagram
if (config?.state?.defaultRenderer === 'dagre-wrapper') return false;
return txt.match(/^\s*stateDiagram/) !== null;

View File

@ -56,7 +56,7 @@ const setupNode = (g, parent, node, altFlag) => {
};
}
// Build of the array of description strings accordinging
// Build of the array of description strings according
if (node.description) {
if (Array.isArray(nodeDb[node.id].description)) {
// There already is an array of strings,add to it
@ -64,7 +64,7 @@ const setupNode = (g, parent, node, altFlag) => {
nodeDb[node.id].description.push(node.description);
} else {
if (nodeDb[node.id].description.length > 0) {
// if there is a description already transformit to an array
// if there is a description already transform it to an array
nodeDb[node.id].shape = 'rectWithTitle';
if (nodeDb[node.id].description === node.id) {
// If the previous description was the is, remove it

View File

@ -47,7 +47,7 @@ const insertMarkers = function (elem) {
export const draw = function (text, id, _version, diagObj) {
conf = getConfig().state;
const securityLevel = getConfig().securityLevel;
// Handle root and Document for when rendering in sanbox mode
// Handle root and Document for when rendering in sandbox mode
let sandboxElement;
if (securityLevel === 'sandbox') {
sandboxElement = select('#i' + id);

View File

@ -54,7 +54,7 @@ export const draw = function (text, id, version, diagObj) {
diagObj.parser.parse(text + '\n');
const securityLevel = getConfig().securityLevel;
// Handle root and Document for when rendering in sanbox mode
// Handle root and Document for when rendering in sandbox mode
let sandboxElement;
if (securityLevel === 'sandbox') {
sandboxElement = select('#i' + id);
@ -261,7 +261,7 @@ export const drawTasks = function (diagram, tasks, verticalPos) {
// Draw the box with the attached line
svgDraw.drawTask(diagram, task, conf);
bounds.insert(task.x, task.y, task.x + task.width + conf.taskMargin, 300 + 5 * 30); // stopy is the length of the descenders.
bounds.insert(task.x, task.y, task.x + task.width + conf.taskMargin, 300 + 5 * 30); // stopY is the length of the descenders.
}
};

View File

@ -218,7 +218,7 @@ export const drawSection = function (elem, section, conf) {
let taskCount = -1;
/**
* Draws an actor in the diagram with the attaced line
* Draws an actor in the diagram with the attached line
*
* @param {any} elem The HTML element
* @param {any} task The task to render

View File

@ -103,7 +103,7 @@ export const decodeEntities = function (text: string): string {
* @param {string} id The id of the element to be rendered
* @param {string} text The graph definition
* @param {(svgCode: string, bindFunctions?: (element: Element) => void) => void} cb Callback which
* is called after rendering is finished with the svg code as inparam.
* is called after rendering is finished with the svg code as param.
* @param {Element} container Selector to element in which a div with the graph temporarily will be
* inserted. If one is provided a hidden div will be inserted in the body of the page instead. The
* element will be removed when rendering is completed.
@ -142,7 +142,7 @@ const render = async function (
}
if (cnf.securityLevel === 'sandbox') {
// IF we are in sandboxed mode, we do everyting mermaid related
// IF we are in sandboxed mode, we do everything mermaid related
// in a sandboxed div
const iframe = select(container)
.append('iframe')
@ -191,7 +191,7 @@ const render = async function (
// d+id it will contain a svg with the id "id"
if (cnf.securityLevel === 'sandbox') {
// IF we are in sandboxed mode, we do everyting mermaid related
// IF we are in sandboxed mode, we do everything mermaid related
// in a sandboxed div
const iframe = select('body')
.append('iframe')
@ -240,7 +240,7 @@ const render = async function (
let userStyles = '';
// user provided theme CSS
// If you add more configuration driven data into the user styles make sure that the value is
// sanitized bye the santiizeCSS function
// sanitized bye the sanitizeCSS function
if (cnf.themeCSS !== undefined) {
userStyles += `\n${cnf.themeCSS}`;
}

View File

@ -1,7 +1,7 @@
import { log } from './logger';
/**
* Applys d3 attributes
* Applies d3 attributes
*
* @param {any} d3Elem D3 Element to apply the attributes onto
* @param {[string, string][]} attrs Object.keys equivalent format of key to value mapping of attributes

View File

@ -126,7 +126,7 @@ class Theme {
this.specialStateColor = this.lineColor;
/* Color Scale */
/* Each color-set will have a background, a forgroupnd and a border color */
/* Each color-set will have a background, a foreground and a border color */
this.cScale0 = this.cScale0 || this.primaryColor;
this.cScale1 = this.cScale1 || this.secondaryColor;
this.cScale2 = this.cScale2 || this.tertiaryColor;

View File

@ -173,7 +173,7 @@ class Theme {
this.cScale12 = this.cScale12 || '#010029';
/* Color Scale */
/* Each color-set will have a background, a forgroupnd and a border color */
/* Each color-set will have a background, a foreground and a border color */
this.cScale0 = this.cScale0 || this.primaryColor;
this.cScale1 = this.cScale1 || this.secondaryColor;
this.cScale2 = this.cScale2 || this.tertiaryColor;

View File

@ -121,7 +121,7 @@ class Theme {
}
updateColors() {
/* Color Scale */
/* Each color-set will have a background, a forgroupnd and a border color */
/* Each color-set will have a background, a foreground and a border color */
this.cScale0 = this.cScale0 || this.primaryColor;
this.cScale1 = this.cScale1 || this.secondaryColor;
this.cScale2 = this.cScale2 || this.tertiaryColor;

View File

@ -94,7 +94,7 @@ class Theme {
this.errorTextColor = '#552222';
}
updateColors() {
/* Each color-set will have a background, a forgroupnd and a border color */
/* Each color-set will have a background, a foreground and a border color */
this.cScale0 = this.cScale0 || this.primaryColor;
this.cScale1 = this.cScale1 || this.secondaryColor;
this.cScale2 = this.cScale2 || this.tertiaryColor;

View File

@ -110,7 +110,7 @@ class Theme {
this.border2 = this.contrast;
/* Color Scale */
/* Each color-set will have a background, a forgroupnd and a border color */
/* Each color-set will have a background, a foreground and a border color */
this.cScale0 = this.cScale0 || '#555';
this.cScale1 = this.cScale1 || '#F4F4F4';

View File

@ -109,7 +109,7 @@ export const detectInit = function (text: string, config?: MermaidConfig): Merma
*
* ```mermaid
* graph LR
* %%{somedirective}%%
* %%{someDirective}%%
* a-->b
* b-->c
* c-->d
@ -215,7 +215,7 @@ export const formatUrl = (linkStr, config) => {
/**
* Runs a function
*
* @param {string} functionName A dot seperated path to the function relative to the `window`
* @param {string} functionName A dot separated path to the function relative to the `window`
* @param {...any} params Parameters to pass to the function
*/
export const runFunc = (functionName, ...params) => {

View File

@ -11,6 +11,7 @@ importers:
'@braintree/sanitize-url': 6.0.0
'@commitlint/cli': 17.1.2
'@commitlint/config-conventional': 17.1.0
'@cspell/eslint-plugin': ^6.12.0
'@types/d3': 7.4.0
'@types/dompurify': 2.3.4
'@types/eslint': 8.4.6
@ -99,6 +100,7 @@ importers:
'@applitools/eyes-cypress': 3.27.2
'@commitlint/cli': 17.1.2
'@commitlint/config-conventional': 17.1.0
'@cspell/eslint-plugin': 6.12.0
'@types/d3': 7.4.0
'@types/dompurify': 2.3.4
'@types/eslint': 8.4.6
@ -1409,6 +1411,246 @@ packages:
chalk: 4.1.2
dev: true
/@cspell/cspell-bundled-dicts/6.12.0:
resolution: {integrity: sha512-myfsDwSJcAMjKbztKBG424wIp/YV9/lvxsgHFKxBGPi+nNx1p7TbOjAAO9EWk0mZVHyGKZwCFJS2ohkoqxJWoQ==}
engines: {node: '>=14'}
dependencies:
'@cspell/dict-ada': 2.0.1
'@cspell/dict-aws': 2.0.0
'@cspell/dict-bash': 2.0.4
'@cspell/dict-companies': 2.0.14
'@cspell/dict-cpp': 3.2.1
'@cspell/dict-cryptocurrencies': 2.0.0
'@cspell/dict-csharp': 3.0.1
'@cspell/dict-css': 2.1.0
'@cspell/dict-dart': 1.1.1
'@cspell/dict-django': 2.0.0
'@cspell/dict-docker': 1.1.1
'@cspell/dict-dotnet': 2.0.1
'@cspell/dict-elixir': 2.0.1
'@cspell/dict-en-gb': 1.1.33
'@cspell/dict-en_us': 2.3.3
'@cspell/dict-filetypes': 2.1.1
'@cspell/dict-fonts': 2.1.0
'@cspell/dict-fullstack': 2.0.6
'@cspell/dict-git': 1.0.1
'@cspell/dict-golang': 3.0.1
'@cspell/dict-haskell': 2.0.1
'@cspell/dict-html': 3.3.2
'@cspell/dict-html-symbol-entities': 3.0.0
'@cspell/dict-java': 3.0.7
'@cspell/dict-latex': 2.0.9
'@cspell/dict-lorem-ipsum': 2.0.1
'@cspell/dict-lua': 2.0.0
'@cspell/dict-node': 3.0.1
'@cspell/dict-npm': 3.1.3
'@cspell/dict-php': 2.0.0
'@cspell/dict-powershell': 2.0.0
'@cspell/dict-public-licenses': 1.0.6
'@cspell/dict-python': 3.0.6
'@cspell/dict-r': 1.0.3
'@cspell/dict-ruby': 2.0.2
'@cspell/dict-rust': 2.0.1
'@cspell/dict-scala': 2.0.0
'@cspell/dict-software-terms': 2.2.12
'@cspell/dict-sql': 1.0.4
'@cspell/dict-swift': 1.0.3
'@cspell/dict-typescript': 2.0.2
'@cspell/dict-vue': 2.0.2
dev: true
/@cspell/cspell-pipe/6.12.0:
resolution: {integrity: sha512-Nkm+tIJ5k+jZPovZCdmZhrWrwRFwnDq+7yCxhov0C7UX3hsSNtTJIpFuaCNEQJ+Whpvxdh1YKflvHiHYygEgTg==}
engines: {node: '>=14'}
dev: true
/@cspell/cspell-service-bus/6.12.0:
resolution: {integrity: sha512-GgvciSeMUekl8z8vP8//cs5/qRQJSLz9IVREf6fxQW4upjw6zXZ1KonwPqOF5uLocIMAr8eCdrJzHKuKvigJIA==}
engines: {node: '>=14'}
dev: true
/@cspell/cspell-types/6.12.0:
resolution: {integrity: sha512-BcZTt05fNy9SGXfbPgUyxS4FfIaUpcVq8IOJ0noN+jsKsmlbssOUgJOB2ApN1h66FfWcKuFy/uNrjfcrQ7PTqg==}
engines: {node: '>=14'}
dev: true
/@cspell/dict-ada/2.0.1:
resolution: {integrity: sha512-vopTJ1oHrrFYV5GU55Sr+AzItR78Uj5YbCaspYABmYKlq4NRrcUAUsr4bWgymDcspMIHO7e7IFcj48OKs1fndA==}
dev: true
/@cspell/dict-aws/2.0.0:
resolution: {integrity: sha512-NKz7pDZ7pwj/b33i3f4WLpC1rOOUMmENwYgftxU+giU2YBeKM2wZbMTSEIzsrel56r0UlQYmdIVlP/B4nnVaoQ==}
dev: true
/@cspell/dict-bash/2.0.4:
resolution: {integrity: sha512-uK/ehmp5LYrmRH2Gv3nbvdPswpkybJUn34WYKLpeuYHQktmi+pOI1A9uPdBPnSbMDffSvwQlQohIyKawz+X8Ag==}
dev: true
/@cspell/dict-companies/2.0.14:
resolution: {integrity: sha512-Sq1X29Z05OZ/UNqTwVhf3/WaqvJQy4/S6gS8qYI5AQRX45gVe8CPhNBLmZOTC6z8m716bfQCxa5rRT9YNSdTZg==}
dev: true
/@cspell/dict-cpp/3.2.1:
resolution: {integrity: sha512-XcmzrKIghqFfrYLLaHtWKOp9rupiuGdc5ODONk+emsq0W5CIc3Abn27IQHwUzxzF+Cm5IfKAIJ5Kpe6hkzm0HQ==}
dev: true
/@cspell/dict-cryptocurrencies/2.0.0:
resolution: {integrity: sha512-nREysmmfOp7L2YCRAUufQahwD5/Punzb5AZ6eyg4zUamdRWHgBFphb5/9h2flt1vgdUfhc6hZcML21Ci7iXjaA==}
dev: true
/@cspell/dict-csharp/3.0.1:
resolution: {integrity: sha512-xkfQu03F388w4sdVQSSjrVMkxAxpTYB2yW7nw0XYtTjl3L/jBgvTr/j1BTjdFbQhdNf10Lg0Ak1kXOjmHodVqA==}
dev: true
/@cspell/dict-css/2.1.0:
resolution: {integrity: sha512-glASAELcGhh4Ru0rTQ4G9mTQxSyPwsZOON/5BYflB6Kks8YC8nUvKrtMCoo5W7CPKPfSEa8zUNctFQ1+IUYDHA==}
dev: true
/@cspell/dict-dart/1.1.1:
resolution: {integrity: sha512-XBOCpezXrgFN18kGEwqMpTUGZdw4BjCoJrNOo6qBdcdZySCrEHLwELraLOkcSba2kM4stmTp0t59FkwtP8TKOA==}
dev: true
/@cspell/dict-django/2.0.0:
resolution: {integrity: sha512-GkJdJv6cmzrKcmq2/oxTXjKF5uv71r4eTqnFmgPbNBW1t+G4VYpzOf0QrVQrhx2RC4DdW5XfcTf+iS0FxHOTmw==}
dev: true
/@cspell/dict-docker/1.1.1:
resolution: {integrity: sha512-UEYoeRDm7oUN9yz1mYSozz6D4+2N14S/cd2Re9et6Xzq6yi62s4ky3knF92Of2weelADjnN41UA22VBhRAf7Sw==}
dev: true
/@cspell/dict-dotnet/2.0.1:
resolution: {integrity: sha512-b1n4crJRW0WZVf9Gp/52j/tDtjYiZ3N81fIyfqPlBrjsh/5AivfA697DYwQ2mr8ngNX7RsqRtYNQjealA1rEnQ==}
dev: true
/@cspell/dict-elixir/2.0.1:
resolution: {integrity: sha512-eTTTxZt1FqGkM780yFDxsGHvTbWqvlK8YISSccK8FyrB6ULW+uflQlNS5AnWg3uWKC48b7pQott+odYCsPJ+Ow==}
dev: true
/@cspell/dict-en-gb/1.1.33:
resolution: {integrity: sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==}
dev: true
/@cspell/dict-en_us/2.3.3:
resolution: {integrity: sha512-csyKeaNktfpvMkmE2GOPTwsrQm3wWhLKVaDRaGU0qTcIjDiCvqv/iYgrVrKRkoddA3kdNTZ8YNCcix7lb6VkOg==}
dev: true
/@cspell/dict-filetypes/2.1.1:
resolution: {integrity: sha512-Oo0/mUbFHzsaATqRLdkV1RMoYns3aGzeKFIpVJg415GYtJ8EABXtEArYTXeMwlboyGTPvEk+PR2hBSTSfQTqmg==}
dev: true
/@cspell/dict-fonts/2.1.0:
resolution: {integrity: sha512-hk7xsbfWEUhc136Xj7I2TD7ouKAfWwzCVAQaHBxcVXAsVxu7bDOGj4FvE2jBzlkSUY8A9Ww8qS0GOFvowJshVg==}
dev: true
/@cspell/dict-fullstack/2.0.6:
resolution: {integrity: sha512-R2E2xvbHvvRwwurxfpBJDRIJjXBMfEPF5WNV3LTOEMRqkZtoYCeJK9aqc8LHlmJMtAbnN1cx//BCDIyTJ0rO0A==}
dev: true
/@cspell/dict-git/1.0.1:
resolution: {integrity: sha512-Rk+eTof/9inF11lvxmkCRK+gODatA3qai8kSASv6OG/JfPvpj7fTHErx/rdgPw/LOTDUafnoTjTYmj7B2MOQXg==}
dev: true
/@cspell/dict-golang/3.0.1:
resolution: {integrity: sha512-0KNfXTbxHW2l8iVjxeOf+KFv9Qrw3z5cyKnkuYJWlBTSB5KcUBfeKCb4fsds26VdANqiy6U91b4gDx5kNEmBjQ==}
dev: true
/@cspell/dict-haskell/2.0.1:
resolution: {integrity: sha512-ooA23qIG7InOOxlLm67CNH5O2J85QsPHEAzEU9KEqVfYG5ovFs5tx6n9pHekDVk3MpQULpqfNUYDR0KigPLg5g==}
dev: true
/@cspell/dict-html-symbol-entities/3.0.0:
resolution: {integrity: sha512-04K7cPTcbYXmHICfiob4gZA1yaj4hpfM+Nl5WIJ1EAZsSGHdqmGEF28GuCjyQ8ZeKiJAsPt/vXuLBbjxkHqZyQ==}
dev: true
/@cspell/dict-html/3.3.2:
resolution: {integrity: sha512-cM5pQSEiqjrdk6cRFLrlLdWNT/J8399f/A6DjwjfYhHrGy0e/Rsjv76HZT0GlE1OqMoq9eG9jdQsfoYYgWTIpQ==}
dev: true
/@cspell/dict-java/3.0.7:
resolution: {integrity: sha512-IL7ubsRvKX6dZSx++TplJCfhiS7kkEGpbTPG0gMEP50DTNAVM4icZS8zmer2UBCU5PTwF85abJjdX7mRADWKVg==}
dev: true
/@cspell/dict-latex/2.0.9:
resolution: {integrity: sha512-d1kTK6dJb5z6UcfASQWjqQlsjZvnoVOvMWxYtLpGksYf6gM4IgqoPVNMLYYK6xBS4T/uAnLIj975A6YuAeyZpg==}
dev: true
/@cspell/dict-lorem-ipsum/2.0.1:
resolution: {integrity: sha512-s7Ft8UiloUJwgz4z8uLeFvCkeTcZ43HQl7mSAlZd76eW+keLSsdeGmLDx2zaciqo+MftPGyzygVCwaJjTGxiew==}
dev: true
/@cspell/dict-lua/2.0.0:
resolution: {integrity: sha512-7WUEBEspSKtsq104WdIys1+DLqAxpJPzw74Py1TuE3fI5GvlzeSZkRFP2ya54GB2lCO4C3mq4M8EnitpibVDfw==}
dev: true
/@cspell/dict-node/3.0.1:
resolution: {integrity: sha512-sK2cpuV0EAc43Amd5xeQXkI9MeRTECMw+yjap06gKSModbgI7BqJUHeKZed+0Hii+LpaJ4TYpLGiRVsO+qSk0w==}
dev: true
/@cspell/dict-npm/3.1.3:
resolution: {integrity: sha512-xnGp+TMpArdMLBUSG+ZrbEuhvY016rb76Yh35/OPDDEEz4ulENxLSZJxtN2/A0tZ9FJngDNSdFh7eJsOFmciZQ==}
dev: true
/@cspell/dict-php/2.0.0:
resolution: {integrity: sha512-29WgU77eTO985LvMHwPi1pcpfopfCWfTdffDyqya0JIfOSaFUrlYKzGPkE4mRxcz2G3hXsaM0SRvBNdIRwEdUg==}
dev: true
/@cspell/dict-powershell/2.0.0:
resolution: {integrity: sha512-6uvEhLiGmG3u9TFkM1TYcky6aL9Yk7Sk3KJwoTYBaQJY2KqrprgyQtW6yxIw9oU52VRHlq3KKvSAA9Q26+SIkQ==}
dev: true
/@cspell/dict-public-licenses/1.0.6:
resolution: {integrity: sha512-Z9IUFPkkOpOsEdgPUfQOJNQ+qU6+iBAZWS/CR5sUqTX+s5VkPNVwQyVC2kdmgmE2U5qwzAPewG6nVKr2MVogwg==}
dev: true
/@cspell/dict-python/3.0.6:
resolution: {integrity: sha512-tzxJ4sd9ZGhAUKg/WJJpQGDNtoHvM8Wn+iS2+PnQj2/LTHBW4mnaCogsGsBtYu8C4b2+BEQs+tc5808AeEfLug==}
dev: true
/@cspell/dict-r/1.0.3:
resolution: {integrity: sha512-u2qeXd4cx/TvTVcmkvA+sK6f4K1uMAMO6QPMSr1pSvqGElPRP1mIBXmuiSuBzLO3LbsJuUEHw5Cp3/bxIB6rNA==}
dev: true
/@cspell/dict-ruby/2.0.2:
resolution: {integrity: sha512-vVnUpSmGDbPjs7MHq741DsLHhQcoA4CnUCM9wsTorQ9AQRDAkDTbK/LcY8nM19MoXCb3eF8PFku5Jq+gqH0u7w==}
dev: true
/@cspell/dict-rust/2.0.1:
resolution: {integrity: sha512-ATDpIh0VWpQdUIZa8zqqJY4wQz3q00BTXlQCodeOmObYSb23+L6KWWzJ8mKLgpbc1lqTkogWrqxiCxlrCmqNmg==}
dev: true
/@cspell/dict-scala/2.0.0:
resolution: {integrity: sha512-MUwA2YKpqaQOSR4V1/CVGRNk8Ii5kf6I8Ch+4/BhRZRQXuwWbi21rDRYWPqdQWps7VNzAbbMA+PQDWsD5YY38g==}
dev: true
/@cspell/dict-software-terms/2.2.12:
resolution: {integrity: sha512-wVVy4on8Uq5VAWm3cqrrhewTRRbpmNxtmTURGQ5rT6FqUtJvZ7W2Pj3QquzXsA9zSFZhGFQR3U7IdFesET9yAg==}
dev: true
/@cspell/dict-sql/1.0.4:
resolution: {integrity: sha512-+9nMcwsCzdYH0tyv2LeuVvQ+DdecS2C1N+hw6sl0FTHWI5GwULHAGW840RBwcKw0s+dl7sc0WpZhS1EW7b0pXg==}
dev: true
/@cspell/dict-swift/1.0.3:
resolution: {integrity: sha512-yOBLSaRD0AnkkkndJ8PuB82Evp6lA2xItf2AWsnPfCCgxp5Ojk6uUBC/WQBSkzkCAOGbXyHsu9D97tsOx2c6cw==}
dev: true
/@cspell/dict-typescript/2.0.2:
resolution: {integrity: sha512-OIoSJsCw9WHX4eDikoF5/0QbptMPZjElOcMYdYCyV03nqV5n4ot72ysTexW95yW4+fQU6uDPNQvnrUnhXXEkTA==}
dev: true
/@cspell/dict-vue/2.0.2:
resolution: {integrity: sha512-/MB0RS0Gn01s4pgmjy0FvsLfr3RRMrRphEuvTRserNcM8XVtoIVAtrjig/Gg0DPwDrN8Clm0L1j7iQay6S8D0g==}
dev: true
/@cspell/eslint-plugin/6.12.0:
resolution: {integrity: sha512-EIL6jL+lhZrnEuM1cY/h/sY1tyMj6hSX2WyJA5iL6nH5D+0y5XQMPq6mlOFVH/7f5hy9P+bfEX77tsT65Lu/dw==}
engines: {node: '>=14'}
dependencies:
cspell-lib: 6.12.0
transitivePeerDependencies:
- encoding
dev: true
/@cspotcode/source-map-support/0.8.1:
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
engines: {node: '>=12'}
@ -3267,6 +3509,10 @@ packages:
resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
dev: true
/array-timsort/1.0.3:
resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==}
dev: true
/array-union/2.1.0:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
engines: {node: '>=8'}
@ -3913,6 +4159,14 @@ packages:
engines: {node: '>=6'}
dev: true
/clear-module/4.1.2:
resolution: {integrity: sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==}
engines: {node: '>=8'}
dependencies:
parent-module: 2.0.0
resolve-from: 5.0.0
dev: true
/cli-cursor/3.1.0:
resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
engines: {node: '>=8'}
@ -4061,6 +4315,17 @@ packages:
engines: {node: ^12.20.0 || >=14}
dev: true
/comment-json/4.2.3:
resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==}
engines: {node: '>= 6'}
dependencies:
array-timsort: 1.0.3
core-util-is: 1.0.3
esprima: 4.0.1
has-own-prop: 2.0.0
repeat-string: 1.6.1
dev: true
/comment-parser/1.3.1:
resolution: {integrity: sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==}
engines: {node: '>= 12.0.0'}
@ -4135,6 +4400,18 @@ packages:
yargs: 17.5.1
dev: true
/configstore/5.0.1:
resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==}
engines: {node: '>=8'}
dependencies:
dot-prop: 5.3.0
graceful-fs: 4.2.10
make-dir: 3.1.0
unique-string: 2.0.0
write-file-atomic: 3.0.3
xdg-basedir: 4.0.0
dev: true
/content-disposition/0.5.4:
resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
engines: {node: '>= 0.6'}
@ -4427,6 +4704,87 @@ packages:
which: 2.0.2
dev: true
/crypto-random-string/2.0.0:
resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==}
engines: {node: '>=8'}
dev: true
/cspell-dictionary/6.12.0:
resolution: {integrity: sha512-I2cXSdXndt9H7yXmJzLTjgui/SAPGghXwxFeibTbvF68gyQYD5fUXvOygEIPrOEySKlAIb+aouV77SgoURxMHw==}
engines: {node: '>=14'}
dependencies:
'@cspell/cspell-pipe': 6.12.0
'@cspell/cspell-types': 6.12.0
cspell-trie-lib: 6.12.0
fast-equals: 4.0.3
gensequence: 4.0.2
dev: true
/cspell-glob/6.12.0:
resolution: {integrity: sha512-Q0rMGTxDyFFPm1LmHYM0ziuxQt2aXgr8Oi1glA2s0dBs0hg1DexlAEoLwLiMDUwSTvibEKIidPzlrmZ1AUDWEg==}
engines: {node: '>=14'}
dependencies:
micromatch: 4.0.5
dev: true
/cspell-grammar/6.12.0:
resolution: {integrity: sha512-WXcDiWJ2pTW0jHY0Bf0DW5s8A9S0a+2tsVZsNxE/0CR5P/8yDSnznE+59uok/JN+GXOKQ6VIaqAZA3/XjDZuuA==}
engines: {node: '>=14'}
hasBin: true
dependencies:
'@cspell/cspell-pipe': 6.12.0
'@cspell/cspell-types': 6.12.0
dev: true
/cspell-io/6.12.0:
resolution: {integrity: sha512-1faxDj2OMgq61w7GaiXZD7ytks6PksJlG484LMl2USv58jDky4i2lujJs1C/+aP97Box9EcdwzydHX9GpnqqCw==}
engines: {node: '>=14'}
dependencies:
'@cspell/cspell-service-bus': 6.12.0
node-fetch: 2.6.7
transitivePeerDependencies:
- encoding
dev: true
/cspell-lib/6.12.0:
resolution: {integrity: sha512-IKd2MzH/zoiXohc26Lqb1b8i+41Y2xGreyAe9ihv/7Z2dscGGVy7F/2taZvZK9kJIhaz33Yatxfx3htT6w0hqg==}
engines: {node: '>=14'}
dependencies:
'@cspell/cspell-bundled-dicts': 6.12.0
'@cspell/cspell-pipe': 6.12.0
'@cspell/cspell-types': 6.12.0
clear-module: 4.1.2
comment-json: 4.2.3
configstore: 5.0.1
cosmiconfig: 7.0.1
cspell-dictionary: 6.12.0
cspell-glob: 6.12.0
cspell-grammar: 6.12.0
cspell-io: 6.12.0
cspell-trie-lib: 6.12.0
fast-equals: 4.0.3
find-up: 5.0.0
fs-extra: 10.1.0
gensequence: 4.0.2
import-fresh: 3.3.0
resolve-from: 5.0.0
resolve-global: 1.0.0
vscode-languageserver-textdocument: 1.0.7
vscode-uri: 3.0.6
transitivePeerDependencies:
- encoding
dev: true
/cspell-trie-lib/6.12.0:
resolution: {integrity: sha512-SJOdb51Wy3ewaKfttZwc9NYOIXaKlhyr+ykYKBExj3qMfV1J4d4iDLE95FriaRcqnq6X/qEM9jUvZHlvadDk3A==}
engines: {node: '>=14'}
dependencies:
'@cspell/cspell-pipe': 6.12.0
'@cspell/cspell-types': 6.12.0
fs-extra: 10.1.0
gensequence: 4.0.2
dev: true
/css-tree/1.0.0-alpha.39:
resolution: {integrity: sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==}
engines: {node: '>=8.0.0'}
@ -6108,6 +6466,10 @@ packages:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: true
/fast-equals/4.0.3:
resolution: {integrity: sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==}
dev: true
/fast-glob/3.2.12:
resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
engines: {node: '>=8.6.0'}
@ -6406,6 +6768,11 @@ packages:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
dev: true
/gensequence/4.0.2:
resolution: {integrity: sha512-mQiFskYFPFDSUpBJ/n3ebAV2Ufu6DZGvUPXzyWYzFfJr6/DyOOZVnjx6VTWE4y0RLvYWnc5tZq5sCjzEWhRjqQ==}
engines: {node: '>=14'}
dev: true
/gensync/1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
@ -6784,6 +7151,11 @@ packages:
engines: {node: '>=8'}
dev: true
/has-own-prop/2.0.0:
resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==}
engines: {node: '>=8'}
dev: true
/has-property-descriptors/1.0.0:
resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
dependencies:
@ -10083,6 +10455,13 @@ packages:
callsites: 3.1.0
dev: true
/parent-module/2.0.0:
resolution: {integrity: sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==}
engines: {node: '>=8'}
dependencies:
callsites: 3.1.0
dev: true
/parse-cache-control/1.0.1:
resolution: {integrity: sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==}
dev: true
@ -12235,6 +12614,13 @@ packages:
through2-filter: 3.0.0
dev: true
/unique-string/2.0.0:
resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==}
engines: {node: '>=8'}
dependencies:
crypto-random-string: 2.0.0
dev: true
/unist-builder/2.0.3:
resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==}
dev: true
@ -13065,6 +13451,11 @@ packages:
optional: true
dev: true
/xdg-basedir/4.0.0:
resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==}
engines: {node: '>=8'}
dev: true
/xml-name-validator/3.0.0:
resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==}
dev: true