mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-10-06 07:39:48 +02:00
Change Db to typescript and add types
This commit is contained in:
@@ -8,12 +8,15 @@ import {
|
|||||||
setAccDescription,
|
setAccDescription,
|
||||||
clear as commonClear,
|
clear as commonClear,
|
||||||
} from '../common/commonDb.js';
|
} from '../common/commonDb.js';
|
||||||
|
import type {
|
||||||
let relations = [];
|
Element,
|
||||||
let latestRequirement = {};
|
Relation,
|
||||||
let requirements = new Map();
|
RelationshipType,
|
||||||
let latestElement = {};
|
Requirement,
|
||||||
let elements = new Map();
|
RequirementType,
|
||||||
|
RiskLevel,
|
||||||
|
VerifyType,
|
||||||
|
} from './types.js';
|
||||||
|
|
||||||
const RequirementType = {
|
const RequirementType = {
|
||||||
REQUIREMENT: 'Requirement',
|
REQUIREMENT: 'Requirement',
|
||||||
@@ -47,78 +50,108 @@ const Relationships = {
|
|||||||
TRACES: 'traces',
|
TRACES: 'traces',
|
||||||
};
|
};
|
||||||
|
|
||||||
const addRequirement = (name, type) => {
|
const getInitialRequirement = (): Requirement => ({
|
||||||
|
id: '',
|
||||||
|
text: '',
|
||||||
|
risk: RiskLevel.LOW_RISK as RiskLevel,
|
||||||
|
verifyMethod: VerifyType.VERIFY_ANALYSIS as VerifyType,
|
||||||
|
name: '',
|
||||||
|
type: RequirementType.REQUIREMENT as RequirementType,
|
||||||
|
});
|
||||||
|
|
||||||
|
const getInitialElement = (): Element => ({
|
||||||
|
name: '',
|
||||||
|
type: '',
|
||||||
|
docRef: '',
|
||||||
|
});
|
||||||
|
|
||||||
|
// Update initial declarations
|
||||||
|
let relations: Relation[] = [];
|
||||||
|
let latestRequirement: Requirement = getInitialRequirement();
|
||||||
|
let requirements = new Map<string, Requirement>();
|
||||||
|
let latestElement: Element = getInitialElement();
|
||||||
|
let elements = new Map<string, Element>();
|
||||||
|
|
||||||
|
// Add reset functions
|
||||||
|
const resetLatestRequirement = () => {
|
||||||
|
latestRequirement = getInitialRequirement();
|
||||||
|
};
|
||||||
|
|
||||||
|
const resetLatestElement = () => {
|
||||||
|
latestElement = getInitialElement();
|
||||||
|
};
|
||||||
|
|
||||||
|
const addRequirement = (name: string, type: RequirementType) => {
|
||||||
if (!requirements.has(name)) {
|
if (!requirements.has(name)) {
|
||||||
requirements.set(name, {
|
requirements.set(name, {
|
||||||
name,
|
name,
|
||||||
type,
|
type,
|
||||||
|
|
||||||
id: latestRequirement.id,
|
id: latestRequirement.id,
|
||||||
text: latestRequirement.text,
|
text: latestRequirement.text,
|
||||||
risk: latestRequirement.risk,
|
risk: latestRequirement.risk,
|
||||||
verifyMethod: latestRequirement.verifyMethod,
|
verifyMethod: latestRequirement.verifyMethod,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
latestRequirement = {};
|
resetLatestRequirement();
|
||||||
|
|
||||||
return requirements.get(name);
|
return requirements.get(name);
|
||||||
};
|
};
|
||||||
|
|
||||||
const getRequirements = () => requirements;
|
const getRequirements = () => requirements;
|
||||||
|
|
||||||
const setNewReqId = (id) => {
|
const setNewReqId = (id: string) => {
|
||||||
if (latestRequirement !== undefined) {
|
if (latestRequirement !== undefined) {
|
||||||
latestRequirement.id = id;
|
latestRequirement.id = id;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const setNewReqText = (text) => {
|
const setNewReqText = (text: string) => {
|
||||||
if (latestRequirement !== undefined) {
|
if (latestRequirement !== undefined) {
|
||||||
latestRequirement.text = text;
|
latestRequirement.text = text;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const setNewReqRisk = (risk) => {
|
const setNewReqRisk = (risk: RiskLevel) => {
|
||||||
if (latestRequirement !== undefined) {
|
if (latestRequirement !== undefined) {
|
||||||
latestRequirement.risk = risk;
|
latestRequirement.risk = risk;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const setNewReqVerifyMethod = (verifyMethod) => {
|
const setNewReqVerifyMethod = (verifyMethod: VerifyType) => {
|
||||||
if (latestRequirement !== undefined) {
|
if (latestRequirement !== undefined) {
|
||||||
latestRequirement.verifyMethod = verifyMethod;
|
latestRequirement.verifyMethod = verifyMethod;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const addElement = (name) => {
|
const addElement = (name: string) => {
|
||||||
if (!elements.has(name)) {
|
if (!elements.has(name)) {
|
||||||
elements.set(name, {
|
elements.set(name, {
|
||||||
name,
|
name,
|
||||||
type: latestElement.type,
|
type: latestElement.type,
|
||||||
docRef: latestElement.docRef,
|
docRef: latestElement.docRef,
|
||||||
});
|
});
|
||||||
log.info('Added new requirement: ', name);
|
log.info('Added new element: ', name);
|
||||||
}
|
}
|
||||||
latestElement = {};
|
resetLatestElement();
|
||||||
|
|
||||||
return elements.get(name);
|
return elements.get(name);
|
||||||
};
|
};
|
||||||
|
|
||||||
const getElements = () => elements;
|
const getElements = () => elements;
|
||||||
|
|
||||||
const setNewElementType = (type) => {
|
const setNewElementType = (type: string) => {
|
||||||
if (latestElement !== undefined) {
|
if (latestElement !== undefined) {
|
||||||
latestElement.type = type;
|
latestElement.type = type;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const setNewElementDocRef = (docRef) => {
|
const setNewElementDocRef = (docRef: string) => {
|
||||||
if (latestElement !== undefined) {
|
if (latestElement !== undefined) {
|
||||||
latestElement.docRef = docRef;
|
latestElement.docRef = docRef;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const addRelationship = (type, src, dst) => {
|
const addRelationship = (type: RelationshipType, src: string, dst: string) => {
|
||||||
relations.push({
|
relations.push({
|
||||||
type,
|
type,
|
||||||
src,
|
src,
|
||||||
@@ -130,21 +163,19 @@ const getRelationships = () => relations;
|
|||||||
|
|
||||||
const clear = () => {
|
const clear = () => {
|
||||||
relations = [];
|
relations = [];
|
||||||
latestRequirement = {};
|
resetLatestRequirement();
|
||||||
requirements = new Map();
|
requirements = new Map();
|
||||||
latestElement = {};
|
resetLatestElement();
|
||||||
elements = new Map();
|
elements = new Map();
|
||||||
commonClear();
|
commonClear();
|
||||||
};
|
};
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
Relationships,
|
||||||
RequirementType,
|
RequirementType,
|
||||||
RiskLevel,
|
RiskLevel,
|
||||||
VerifyType,
|
VerifyType,
|
||||||
Relationships,
|
getConfig: () => getConfig().requirement,
|
||||||
|
|
||||||
getConfig: () => getConfig().req,
|
|
||||||
|
|
||||||
addRequirement,
|
addRequirement,
|
||||||
getRequirements,
|
getRequirements,
|
||||||
setNewReqId,
|
setNewReqId,
|
||||||
@@ -155,14 +186,11 @@ export default {
|
|||||||
getAccTitle,
|
getAccTitle,
|
||||||
setAccDescription,
|
setAccDescription,
|
||||||
getAccDescription,
|
getAccDescription,
|
||||||
|
|
||||||
addElement,
|
addElement,
|
||||||
getElements,
|
getElements,
|
||||||
setNewElementType,
|
setNewElementType,
|
||||||
setNewElementDocRef,
|
setNewElementDocRef,
|
||||||
|
|
||||||
addRelationship,
|
addRelationship,
|
||||||
getRelationships,
|
getRelationships,
|
||||||
|
|
||||||
clear,
|
clear,
|
||||||
};
|
};
|
41
packages/mermaid/src/diagrams/requirement/types.ts
Normal file
41
packages/mermaid/src/diagrams/requirement/types.ts
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
export type RequirementType =
|
||||||
|
| 'Requirement'
|
||||||
|
| 'Functional Requirement'
|
||||||
|
| 'Interface Requirement'
|
||||||
|
| 'Performance Requirement'
|
||||||
|
| 'Physical Requirement'
|
||||||
|
| 'Design Constraint';
|
||||||
|
|
||||||
|
export type RiskLevel = 'Low' | 'Medium' | 'High';
|
||||||
|
|
||||||
|
export type VerifyType = 'Analysis' | 'Demonstration' | 'Inspection' | 'Test';
|
||||||
|
|
||||||
|
export interface Requirement {
|
||||||
|
name: string;
|
||||||
|
type: RequirementType;
|
||||||
|
id: string;
|
||||||
|
text: string;
|
||||||
|
risk: RiskLevel;
|
||||||
|
verifyMethod: VerifyType;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type RelationshipType =
|
||||||
|
| 'contains'
|
||||||
|
| 'copies'
|
||||||
|
| 'derives'
|
||||||
|
| 'satisfies'
|
||||||
|
| 'verifies'
|
||||||
|
| 'refines'
|
||||||
|
| 'traces';
|
||||||
|
|
||||||
|
export interface Relation {
|
||||||
|
type: RelationshipType;
|
||||||
|
src: string;
|
||||||
|
dst: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Element {
|
||||||
|
name: string;
|
||||||
|
type: string;
|
||||||
|
docRef: string;
|
||||||
|
}
|
Reference in New Issue
Block a user