Merge branch 'develop' into sidv/typescript
* develop: chore(deps-dev): bump @commitlint/cli from 17.1.1 to 17.1.2 chore(deps-dev): bump terser-webpack-plugin from 5.3.5 to 5.3.6 chore(deps-dev): bump webpack-dev-server from 4.10.0 to 4.10.1 Fix gitGraph findLane function error Replacing replaceAll with replace Rework 'parseDuration' as a pure duration parsing Supports duration in decimal Create a more consistent 'parseDuration' Fix svgDraw return types Add more tests Fix nested types Fix nested types Add nested test Updating to version to 9.1.6
This commit is contained in:
commit
e46d9c1173
|
@ -175,7 +175,7 @@ describe('Gantt diagram', () => {
|
||||||
Another task :after a1, 20ms
|
Another task :after a1, 20ms
|
||||||
section Another
|
section Another
|
||||||
Another another task :b1, 20, 12ms
|
Another another task :b1, 20, 12ms
|
||||||
Another another another task :after b1, 24ms
|
Another another another task :after b1, 0.024s
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
|
|
|
@ -253,4 +253,32 @@ describe('Git Graph diagram', () => {
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
it('13: should render a simple gitgraph with three branches,custom merge commit id,tag,type', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`gitGraph
|
||||||
|
commit id: "1"
|
||||||
|
commit id: "2"
|
||||||
|
branch nice_feature
|
||||||
|
checkout nice_feature
|
||||||
|
commit id: "3"
|
||||||
|
checkout main
|
||||||
|
commit id: "4"
|
||||||
|
checkout nice_feature
|
||||||
|
branch very_nice_feature
|
||||||
|
checkout very_nice_feature
|
||||||
|
commit id: "5"
|
||||||
|
checkout main
|
||||||
|
commit id: "6"
|
||||||
|
checkout nice_feature
|
||||||
|
commit id: "7"
|
||||||
|
checkout main
|
||||||
|
merge nice_feature id: "customID" tag: "customTag" type: REVERSE
|
||||||
|
checkout very_nice_feature
|
||||||
|
commit id: "8"
|
||||||
|
checkout main
|
||||||
|
commit id: "9"
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -182,7 +182,40 @@ After this we made use of the `checkout` keyword to set the current branch as `m
|
||||||
After this we merge the `develop` branch onto the current branch `main`, resulting in a merge commit.
|
After this we merge the `develop` branch onto the current branch `main`, resulting in a merge commit.
|
||||||
Since the current branch at this point is still `main`, the last two commits are registered against that.
|
Since the current branch at this point is still `main`, the last two commits are registered against that.
|
||||||
|
|
||||||
Additionally, you may add a tag to the merge commit, or override the default id: `merge branch id:"1234" tag:"v1.0.0"`
|
You can also decorate your merge with similar attributes as you did for the commit using:
|
||||||
|
- `id`--> To override the default ID with custom ID
|
||||||
|
- `tag`--> To add a custom tag to your merge commit
|
||||||
|
- `type`--> To override the default shape of merge commit. Here you can use other commit type mentioned earlier.
|
||||||
|
|
||||||
|
And you can choose to use none, some or all of these attributes together.
|
||||||
|
For example: `merge develop id: "my_custom_id" tag: "my_custom_tag" type: REVERSE`
|
||||||
|
|
||||||
|
Let us see how this works with the help of the following diagram:
|
||||||
|
|
||||||
|
```mermaid-example
|
||||||
|
gitGraph
|
||||||
|
commit id: "1"
|
||||||
|
commit id: "2"
|
||||||
|
branch nice_feature
|
||||||
|
checkout nice_feature
|
||||||
|
commit id: "3"
|
||||||
|
checkout main
|
||||||
|
commit id: "4"
|
||||||
|
checkout nice_feature
|
||||||
|
branch very_nice_feature
|
||||||
|
checkout very_nice_feature
|
||||||
|
commit id: "5"
|
||||||
|
checkout main
|
||||||
|
commit id: "6"
|
||||||
|
checkout nice_feature
|
||||||
|
commit id: "7"
|
||||||
|
checkout main
|
||||||
|
merge nice_feature id: "customID" tag: "customTag" type: REVERSE
|
||||||
|
checkout very_nice_feature
|
||||||
|
commit id: "8"
|
||||||
|
checkout main
|
||||||
|
commit id: "9"
|
||||||
|
```
|
||||||
|
|
||||||
### Cherry Pick commit from another branch
|
### Cherry Pick commit from another branch
|
||||||
Similar to how 'git' allows you to cherry-pick a commit from **another branch** onto the **current** branch, Mermaid also supports this functionality. You can also cherry-pick a commit from another branch using the `cherry-pick` keyword.
|
Similar to how 'git' allows you to cherry-pick a commit from **another branch** onto the **current** branch, Mermaid also supports this functionality. You can also cherry-pick a commit from another branch using the `cherry-pick` keyword.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "mermaid",
|
"name": "mermaid",
|
||||||
"version": "9.1.5",
|
"version": "9.1.6",
|
||||||
"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.",
|
||||||
"main": "dist/mermaid.min.js",
|
"main": "dist/mermaid.min.js",
|
||||||
"module": "dist/mermaid.esm.min.mjs",
|
"module": "dist/mermaid.esm.min.mjs",
|
||||||
|
@ -77,7 +77,7 @@
|
||||||
"@babel/eslint-parser": "^7.14.7",
|
"@babel/eslint-parser": "^7.14.7",
|
||||||
"@babel/preset-env": "^7.14.7",
|
"@babel/preset-env": "^7.14.7",
|
||||||
"@babel/register": "^7.14.5",
|
"@babel/register": "^7.14.5",
|
||||||
"@commitlint/cli": "^17.0.0",
|
"@commitlint/cli": "^17.1.2",
|
||||||
"@commitlint/config-conventional": "^17.0.0",
|
"@commitlint/config-conventional": "^17.0.0",
|
||||||
"@types/d3": "^7.4.0",
|
"@types/d3": "^7.4.0",
|
||||||
"@types/dompurify": "^2.3.3",
|
"@types/dompurify": "^2.3.3",
|
||||||
|
@ -112,13 +112,13 @@
|
||||||
"prettier": "^2.3.2",
|
"prettier": "^2.3.2",
|
||||||
"prettier-plugin-jsdoc": "^0.3.30",
|
"prettier-plugin-jsdoc": "^0.3.30",
|
||||||
"start-server-and-test": "^1.12.6",
|
"start-server-and-test": "^1.12.6",
|
||||||
"terser-webpack-plugin": "^5.2.4",
|
"terser-webpack-plugin": "^5.3.6",
|
||||||
"ts-jest": "^28.0.8",
|
"ts-jest": "^28.0.8",
|
||||||
"ts-loader": "^9.3.1",
|
"ts-loader": "^9.3.1",
|
||||||
"typescript": "^4.7.4",
|
"typescript": "^4.7.4",
|
||||||
"webpack": "^5.53.0",
|
"webpack": "^5.53.0",
|
||||||
"webpack-cli": "^4.7.2",
|
"webpack-cli": "^4.7.2",
|
||||||
"webpack-dev-server": "^4.3.0",
|
"webpack-dev-server": "^4.10.1",
|
||||||
"webpack-merge": "^5.8.0",
|
"webpack-merge": "^5.8.0",
|
||||||
"webpack-node-externals": "^3.0.0"
|
"webpack-node-externals": "^3.0.0"
|
||||||
},
|
},
|
||||||
|
|
|
@ -347,10 +347,9 @@ const buildMethodDisplay = function (parsedText) {
|
||||||
};
|
};
|
||||||
|
|
||||||
const buildLegacyDisplay = function (text) {
|
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 displayText = '';
|
||||||
let cssStyle = '';
|
let cssStyle = '';
|
||||||
let memberText = '';
|
|
||||||
let returnType = '';
|
let returnType = '';
|
||||||
let methodStart = text.indexOf('(');
|
let methodStart = text.indexOf('(');
|
||||||
let methodEnd = text.indexOf(')');
|
let methodEnd = text.indexOf(')');
|
||||||
|
@ -370,26 +369,27 @@ const buildLegacyDisplay = function (text) {
|
||||||
methodName = text.substring(1, methodStart).trim();
|
methodName = text.substring(1, methodStart).trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
let parameters = text.substring(methodStart + 1, methodEnd);
|
const parameters = text.substring(methodStart + 1, methodEnd);
|
||||||
let classifier = text.substring(methodEnd + 1, 1);
|
const classifier = text.substring(methodEnd + 1, methodEnd + 2);
|
||||||
cssStyle = parseClassifier(classifier);
|
cssStyle = parseClassifier(classifier);
|
||||||
|
|
||||||
displayText = visibility + methodName + '(' + parseGenericTypes(parameters.trim()) + ')';
|
displayText = visibility + methodName + '(' + parseGenericTypes(parameters.trim()) + ')';
|
||||||
|
|
||||||
if (methodEnd < memberText.length) {
|
if (methodEnd <= text.length) {
|
||||||
returnType = text.substring(methodEnd + 2).trim();
|
returnType = text.substring(methodEnd + 2).trim();
|
||||||
if (returnType !== '') {
|
if (returnType !== '') {
|
||||||
returnType = ' : ' + parseGenericTypes(returnType);
|
returnType = ' : ' + parseGenericTypes(returnType);
|
||||||
|
displayText += returnType;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// finally - if all else fails, just send the text back as written (other than parsing for generic types)
|
||||||
|
displayText = parseGenericTypes(text);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
// finally - if all else fails, just send the text back as written (other than parsing for generic types)
|
|
||||||
displayText = parseGenericTypes(text);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
displayText: displayText,
|
displayText,
|
||||||
cssStyle: cssStyle,
|
cssStyle,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -137,6 +137,14 @@ describe('class member Renderer, ', function () {
|
||||||
expect(actual.displayText).toBe('+foo(List<int> ids) : List<Item>');
|
expect(actual.displayText).toBe('+foo(List<int> ids) : List<Item>');
|
||||||
expect(actual.cssStyle).toBe('font-style:italic;');
|
expect(actual.cssStyle).toBe('font-style:italic;');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should handle method declaration with nested markup', function () {
|
||||||
|
const str = '+foo ( List~List~int~~ ids )* List~List~Item~~';
|
||||||
|
let actual = svgDraw.parseMember(str);
|
||||||
|
|
||||||
|
expect(actual.displayText).toBe('+foo(List<List<int>> ids) : List<List<Item>>');
|
||||||
|
expect(actual.cssStyle).toBe('font-style:italic;');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when parsing text to build field display string', function () {
|
describe('when parsing text to build field display string', function () {
|
||||||
|
|
|
@ -61,5 +61,12 @@ describe('Sanitize text', function () {
|
||||||
describe('generic parser', function () {
|
describe('generic parser', function () {
|
||||||
it('should parse generic types', function () {
|
it('should parse generic types', function () {
|
||||||
expect(parseGenericTypes('test~T~')).toEqual('test<T>');
|
expect(parseGenericTypes('test~T~')).toEqual('test<T>');
|
||||||
|
expect(parseGenericTypes('test~Array~Array~string~~~')).toEqual('test<Array<Array<string>>>');
|
||||||
|
expect(parseGenericTypes('test~Array~Array~string[]~~~')).toEqual(
|
||||||
|
'test<Array<Array<string[]>>>'
|
||||||
|
);
|
||||||
|
expect(parseGenericTypes('test ~Array~Array~string[]~~~')).toEqual(
|
||||||
|
'test <Array<Array<string[]>>>'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -144,8 +144,8 @@ export const parseGenericTypes = function (text: string): string {
|
||||||
let cleanedText = text;
|
let cleanedText = text;
|
||||||
|
|
||||||
if (text.indexOf('~') !== -1) {
|
if (text.indexOf('~') !== -1) {
|
||||||
cleanedText = cleanedText.replace('~', '<');
|
cleanedText = cleanedText.replace(/~([^~].*)/, '<$1');
|
||||||
cleanedText = cleanedText.replace('~', '>');
|
cleanedText = cleanedText.replace(/~([^~]*)$/, '>$1');
|
||||||
|
|
||||||
return parseGenericTypes(cleanedText);
|
return parseGenericTypes(cleanedText);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -230,31 +230,31 @@ const getStartDate = function (prevTime, dateFormat, str) {
|
||||||
return new Date();
|
return new Date();
|
||||||
};
|
};
|
||||||
|
|
||||||
const durationToDate = function (durationStatement, relativeTime) {
|
/**
|
||||||
if (durationStatement !== null) {
|
* Parse a string as a moment duration.
|
||||||
switch (durationStatement[2]) {
|
*
|
||||||
case 'ms':
|
* The string have to be compound by a value and a shorthand duration unit. For example `5d`
|
||||||
relativeTime.add(durationStatement[1], 'milliseconds');
|
* representes 5 days.
|
||||||
break;
|
*
|
||||||
case 's':
|
* Shorthand unit supported are:
|
||||||
relativeTime.add(durationStatement[1], 'seconds');
|
*
|
||||||
break;
|
* - `y` for years
|
||||||
case 'm':
|
* - `M` for months
|
||||||
relativeTime.add(durationStatement[1], 'minutes');
|
* - `w` for weeks
|
||||||
break;
|
* - `d` for days
|
||||||
case 'h':
|
* - `h` for hours
|
||||||
relativeTime.add(durationStatement[1], 'hours');
|
* - `s` for seconds
|
||||||
break;
|
* - `ms` for milliseconds
|
||||||
case 'd':
|
*
|
||||||
relativeTime.add(durationStatement[1], 'days');
|
* @param {string} str - A string representing the duration.
|
||||||
break;
|
* @returns {moment.Duration} A moment duration, including an invalid moment for invalid input string.
|
||||||
case 'w':
|
*/
|
||||||
relativeTime.add(durationStatement[1], 'weeks');
|
const parseDuration = function (str) {
|
||||||
break;
|
const statement = /^(\d+(?:\.\d+)?)([yMwdhms]|ms)$/.exec(str.trim());
|
||||||
}
|
if (statement !== null) {
|
||||||
|
return moment.duration(Number.parseFloat(statement[1]), statement[2]);
|
||||||
}
|
}
|
||||||
// Default date - now
|
return moment.duration.invalid();
|
||||||
return relativeTime.toDate();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const getEndDate = function (prevTime, dateFormat, str, inclusive) {
|
const getEndDate = function (prevTime, dateFormat, str, inclusive) {
|
||||||
|
@ -270,7 +270,12 @@ const getEndDate = function (prevTime, dateFormat, str, inclusive) {
|
||||||
return mDate.toDate();
|
return mDate.toDate();
|
||||||
}
|
}
|
||||||
|
|
||||||
return durationToDate(/^([\d]+)([wdhms]|ms)$/.exec(str.trim()), moment(prevTime));
|
const endTime = moment(prevTime);
|
||||||
|
const duration = parseDuration(str);
|
||||||
|
if (duration.isValid()) {
|
||||||
|
endTime.add(duration);
|
||||||
|
}
|
||||||
|
return endTime.toDate();
|
||||||
};
|
};
|
||||||
|
|
||||||
let taskCnt = 0;
|
let taskCnt = 0;
|
||||||
|
@ -666,7 +671,7 @@ export default {
|
||||||
setLink,
|
setLink,
|
||||||
getLinks,
|
getLinks,
|
||||||
bindFunctions,
|
bindFunctions,
|
||||||
durationToDate,
|
parseDuration,
|
||||||
isInvalidDate,
|
isInvalidDate,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -6,13 +6,16 @@ describe('when using the ganttDb', function () {
|
||||||
ganttDb.clear();
|
ganttDb.clear();
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when using relative times', function () {
|
describe('when using duration', function () {
|
||||||
it.each`
|
it.each`
|
||||||
diff | date | expected
|
str | expected
|
||||||
${' 1d'} | ${moment('2019-01-01')} | ${moment('2019-01-02').toDate()}
|
${'1d'} | ${moment.duration(1, 'd')}
|
||||||
${' 1w'} | ${moment('2019-01-01')} | ${moment('2019-01-08').toDate()}
|
${'2w'} | ${moment.duration(2, 'w')}
|
||||||
`('should add $diff to $date resulting in $expected', ({ diff, date, expected }) => {
|
${'1ms'} | ${moment.duration(1, 'ms')}
|
||||||
expect(ganttDb.durationToDate(diff, date)).toEqual(expected);
|
${'0.1s'} | ${moment.duration(100, 'ms')}
|
||||||
|
${'1f'} | ${moment.duration.invalid()}
|
||||||
|
`('should $str resulting in $expected duration', ({ str, expected }) => {
|
||||||
|
expect(ganttDb.parseDuration(str)).toEqual(expected);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -106,7 +109,7 @@ describe('when using the ganttDb', function () {
|
||||||
ganttDb.addTask('test2', 'id2,after id1,5ms');
|
ganttDb.addTask('test2', 'id2,after id1,5ms');
|
||||||
ganttDb.addSection('testa2');
|
ganttDb.addSection('testa2');
|
||||||
ganttDb.addTask('test3', 'id3,20,10ms');
|
ganttDb.addTask('test3', 'id3,20,10ms');
|
||||||
ganttDb.addTask('test4', 'id4,after id3,5ms');
|
ganttDb.addTask('test4', 'id4,after id3,0.005s');
|
||||||
|
|
||||||
const tasks = ganttDb.getTasks();
|
const tasks = ganttDb.getTasks();
|
||||||
|
|
||||||
|
|
|
@ -148,16 +148,9 @@ export const branch = function (name, order) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
export const merge = function (otherBranch, custom_id, override_type, custom_tag) {
|
||||||
* Creates a merge commit.
|
|
||||||
*
|
|
||||||
* @param {string} otherBranch - Target branch to merge to.
|
|
||||||
* @param {string} [tag] - Git tag to use on this merge commit.
|
|
||||||
* @param {string} [id] - Git commit id.
|
|
||||||
*/
|
|
||||||
export const merge = function (otherBranch, tag, id) {
|
|
||||||
otherBranch = common.sanitizeText(otherBranch, configApi.getConfig());
|
otherBranch = common.sanitizeText(otherBranch, configApi.getConfig());
|
||||||
id = common.sanitizeText(id, configApi.getConfig());
|
custom_id = common.sanitizeText(custom_id, configApi.getConfig());
|
||||||
|
|
||||||
const currentCommit = commits[branches[curBranch]];
|
const currentCommit = commits[branches[curBranch]];
|
||||||
const otherCommit = commits[branches[otherBranch]];
|
const otherCommit = commits[branches[otherBranch]];
|
||||||
|
@ -216,6 +209,23 @@ export const merge = function (otherBranch, tag, id) {
|
||||||
loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },
|
loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },
|
||||||
expected: ['branch abc'],
|
expected: ['branch abc'],
|
||||||
};
|
};
|
||||||
|
throw error;
|
||||||
|
} else if (custom_id && typeof commits[custom_id] !== 'undefined') {
|
||||||
|
let error = new Error(
|
||||||
|
'Incorrect usage of "merge". Commit with id:' +
|
||||||
|
custom_id +
|
||||||
|
' already exists, use different custom Id'
|
||||||
|
);
|
||||||
|
error.hash = {
|
||||||
|
text: 'merge ' + otherBranch + custom_id + override_type + custom_tag,
|
||||||
|
token: 'merge ' + otherBranch + custom_id + override_type + custom_tag,
|
||||||
|
line: '1',
|
||||||
|
loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },
|
||||||
|
expected: [
|
||||||
|
'merge ' + otherBranch + ' ' + custom_id + '_UNIQUE ' + override_type + ' ' + custom_tag,
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
// if (isReachableFrom(currentCommit, otherCommit)) {
|
// if (isReachableFrom(currentCommit, otherCommit)) {
|
||||||
|
@ -228,13 +238,15 @@ export const merge = function (otherBranch, tag, id) {
|
||||||
// } else {
|
// } else {
|
||||||
// create merge commit
|
// create merge commit
|
||||||
const commit = {
|
const commit = {
|
||||||
id: id || seq + '-' + getId(),
|
id: custom_id ? custom_id : seq + '-' + getId(),
|
||||||
message: 'merged branch ' + otherBranch + ' into ' + curBranch,
|
message: 'merged branch ' + otherBranch + ' into ' + curBranch,
|
||||||
seq: seq++,
|
seq: seq++,
|
||||||
parents: [head == null ? null : head.id, branches[otherBranch]],
|
parents: [head == null ? null : head.id, branches[otherBranch]],
|
||||||
branch: curBranch,
|
branch: curBranch,
|
||||||
type: commitType.MERGE,
|
type: commitType.MERGE,
|
||||||
tag: tag ? tag : '',
|
customType: override_type,
|
||||||
|
customId: custom_id ? true : false,
|
||||||
|
tag: custom_tag ? custom_tag : '',
|
||||||
};
|
};
|
||||||
head = commit;
|
head = commit;
|
||||||
commits[commit.id] = commit;
|
commits[commit.id] = commit;
|
||||||
|
|
|
@ -495,7 +495,7 @@ describe('when parsing a gitGraph', function () {
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle merge ids', function () {
|
it('should handle merge with custom ids, tags and typr', function () {
|
||||||
const str = `gitGraph:
|
const str = `gitGraph:
|
||||||
commit
|
commit
|
||||||
branch testBranch
|
branch testBranch
|
||||||
|
@ -509,7 +509,7 @@ describe('when parsing a gitGraph', function () {
|
||||||
commit
|
commit
|
||||||
checkout main
|
checkout main
|
||||||
%% Merge ID and Tag (reverse order)
|
%% Merge ID and Tag (reverse order)
|
||||||
merge testBranch2 id: "4-444" tag: "merge-tag2"
|
merge testBranch2 id: "4-444" tag: "merge-tag2" type:HIGHLIGHT
|
||||||
branch testBranch3
|
branch testBranch3
|
||||||
checkout testBranch3
|
checkout testBranch3
|
||||||
commit
|
commit
|
||||||
|
@ -552,6 +552,8 @@ describe('when parsing a gitGraph', function () {
|
||||||
expect(testBranch2Merge.parents).toStrictEqual([testBranchMerge.id, testBranch2Commit.id]);
|
expect(testBranch2Merge.parents).toStrictEqual([testBranchMerge.id, testBranch2Commit.id]);
|
||||||
expect(testBranch2Merge.tag).toBe('merge-tag2');
|
expect(testBranch2Merge.tag).toBe('merge-tag2');
|
||||||
expect(testBranch2Merge.id).toBe('4-444');
|
expect(testBranch2Merge.id).toBe('4-444');
|
||||||
|
expect(testBranch2Merge.customType).toBe(2);
|
||||||
|
expect(testBranch2Merge.customId).toBe(true);
|
||||||
|
|
||||||
expect(testBranch3Merge.branch).toBe('main');
|
expect(testBranch3Merge.branch).toBe('main');
|
||||||
expect(testBranch3Merge.parents).toStrictEqual([testBranch2Merge.id, testBranch3Commit.id]);
|
expect(testBranch3Merge.parents).toStrictEqual([testBranch2Merge.id, testBranch3Commit.id]);
|
||||||
|
@ -686,6 +688,27 @@ describe('when parsing a gitGraph', function () {
|
||||||
expect(e.message).toBe('Incorrect usage of "merge". Cannot merge a branch to itself');
|
expect(e.message).toBe('Incorrect usage of "merge". Cannot merge a branch to itself');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should throw error when using existing id as merge ID', function () {
|
||||||
|
const str = `gitGraph
|
||||||
|
commit id: "1-111"
|
||||||
|
branch testBranch
|
||||||
|
commit id: "2-222"
|
||||||
|
commit id: "3-333"
|
||||||
|
checkout main
|
||||||
|
merge testBranch id: "1-111"
|
||||||
|
`;
|
||||||
|
|
||||||
|
try {
|
||||||
|
parser.parse(str);
|
||||||
|
// Fail test if above expression doesn't throw anything.
|
||||||
|
expect(true).toBe(false);
|
||||||
|
} catch (e) {
|
||||||
|
expect(e.message).toBe(
|
||||||
|
'Incorrect usage of "merge". Commit with id:1-111 already exists, use different custom Id'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
it('should throw error when trying to merge branches having same heads', function () {
|
it('should throw error when trying to merge branches having same heads', function () {
|
||||||
const str = `gitGraph
|
const str = `gitGraph
|
||||||
commit
|
commit
|
||||||
|
|
|
@ -91,7 +91,9 @@ const drawCommits = (svg, commits, modifyGraph) => {
|
||||||
// Don't draw the commits now but calculate the positioning which is used by the branch lines etc.
|
// Don't draw the commits now but calculate the positioning which is used by the branch lines etc.
|
||||||
if (modifyGraph) {
|
if (modifyGraph) {
|
||||||
let typeClass;
|
let typeClass;
|
||||||
switch (commit.type) {
|
let commitSymbolType =
|
||||||
|
typeof commit.customType !== 'undefined' ? commit.customType : commit.type;
|
||||||
|
switch (commitSymbolType) {
|
||||||
case commitType.NORMAL:
|
case commitType.NORMAL:
|
||||||
typeClass = 'commit-normal';
|
typeClass = 'commit-normal';
|
||||||
break;
|
break;
|
||||||
|
@ -111,7 +113,7 @@ const drawCommits = (svg, commits, modifyGraph) => {
|
||||||
typeClass = 'commit-normal';
|
typeClass = 'commit-normal';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (commit.type === commitType.HIGHLIGHT) {
|
if (commitSymbolType === commitType.HIGHLIGHT) {
|
||||||
const circle = gBullets.append('rect');
|
const circle = gBullets.append('rect');
|
||||||
circle.attr('x', x - 10);
|
circle.attr('x', x - 10);
|
||||||
circle.attr('y', y - 10);
|
circle.attr('y', y - 10);
|
||||||
|
@ -135,7 +137,7 @@ const drawCommits = (svg, commits, modifyGraph) => {
|
||||||
branchPos[commit.branch].index % THEME_COLOR_LIMIT
|
branchPos[commit.branch].index % THEME_COLOR_LIMIT
|
||||||
} ${typeClass}-inner`
|
} ${typeClass}-inner`
|
||||||
);
|
);
|
||||||
} else if (commit.type === commitType.CHERRY_PICK) {
|
} else if (commitSymbolType === commitType.CHERRY_PICK) {
|
||||||
gBullets
|
gBullets
|
||||||
.append('circle')
|
.append('circle')
|
||||||
.attr('cx', x)
|
.attr('cx', x)
|
||||||
|
@ -181,7 +183,7 @@ const drawCommits = (svg, commits, modifyGraph) => {
|
||||||
'class',
|
'class',
|
||||||
`commit ${commit.id} commit${branchPos[commit.branch].index % THEME_COLOR_LIMIT}`
|
`commit ${commit.id} commit${branchPos[commit.branch].index % THEME_COLOR_LIMIT}`
|
||||||
);
|
);
|
||||||
if (commit.type === commitType.MERGE) {
|
if (commitSymbolType === commitType.MERGE) {
|
||||||
const circle2 = gBullets.append('circle');
|
const circle2 = gBullets.append('circle');
|
||||||
circle2.attr('cx', x);
|
circle2.attr('cx', x);
|
||||||
circle2.attr('cy', y);
|
circle2.attr('cy', y);
|
||||||
|
@ -193,7 +195,7 @@ const drawCommits = (svg, commits, modifyGraph) => {
|
||||||
}`
|
}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (commit.type === commitType.REVERSE) {
|
if (commitSymbolType === commitType.REVERSE) {
|
||||||
const cross = gBullets.append('path');
|
const cross = gBullets.append('path');
|
||||||
cross
|
cross
|
||||||
.attr('d', `M ${x - 5},${y - 5}L${x + 5},${y + 5}M${x - 5},${y + 5}L${x + 5},${y - 5}`)
|
.attr('d', `M ${x - 5},${y - 5}L${x + 5},${y + 5}M${x - 5},${y + 5}L${x + 5},${y - 5}`)
|
||||||
|
@ -215,7 +217,12 @@ const drawCommits = (svg, commits, modifyGraph) => {
|
||||||
const px = 4;
|
const px = 4;
|
||||||
const py = 2;
|
const py = 2;
|
||||||
// Draw the commit label
|
// Draw the commit label
|
||||||
if (commit.type !== commitType.CHERRY_PICK && gitGraphConfig.showCommitLabel) {
|
if (
|
||||||
|
commit.type !== commitType.CHERRY_PICK &&
|
||||||
|
((commit.customId && commit.type === commitType.MERGE) ||
|
||||||
|
commit.type !== commitType.MERGE) &&
|
||||||
|
gitGraphConfig.showCommitLabel
|
||||||
|
) {
|
||||||
const wrapper = gLabels.append('g');
|
const wrapper = gLabels.append('g');
|
||||||
const labelBkg = wrapper.insert('rect').attr('class', 'commit-label-bkg');
|
const labelBkg = wrapper.insert('rect').attr('class', 'commit-label-bkg');
|
||||||
|
|
||||||
|
@ -336,7 +343,7 @@ const findLane = (y1, y2, _depth) => {
|
||||||
return candidate;
|
return candidate;
|
||||||
}
|
}
|
||||||
const diff = Math.abs(y1 - y2);
|
const diff = Math.abs(y1 - y2);
|
||||||
return findLane(y1, y2 - diff / 5, depth);
|
return findLane(y1, y2 - diff / 5, depth + 1);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -121,11 +121,22 @@ cherryPickStatement
|
||||||
;
|
;
|
||||||
|
|
||||||
mergeStatement
|
mergeStatement
|
||||||
: MERGE ID {yy.merge($2)}
|
: MERGE ID {yy.merge($2,'','','')}
|
||||||
| MERGE ID COMMIT_TAG STR {yy.merge($2, $4)}
|
| MERGE ID COMMIT_ID STR {yy.merge($2, $4,'','')}
|
||||||
| MERGE ID COMMIT_ID STR {yy.merge($2, '', $4)}
|
| MERGE ID COMMIT_TYPE commitType {yy.merge($2,'', $4,'')}
|
||||||
| MERGE ID COMMIT_TAG STR COMMIT_ID STR {yy.merge($2, $4, $6)}
|
| MERGE ID COMMIT_TAG STR {yy.merge($2, '','',$4)}
|
||||||
| MERGE ID COMMIT_ID STR COMMIT_TAG STR {yy.merge($2, $6, $4)}
|
| MERGE ID COMMIT_TAG STR COMMIT_ID STR {yy.merge($2, $6,'', $4)}
|
||||||
|
| MERGE ID COMMIT_TAG STR COMMIT_TYPE commitType {yy.merge($2, '',$6, $4)}
|
||||||
|
| MERGE ID COMMIT_TYPE commitType COMMIT_TAG STR {yy.merge($2, '',$4, $6)}
|
||||||
|
| MERGE ID COMMIT_ID STR COMMIT_TYPE commitType {yy.merge($2, $4, $6, '')}
|
||||||
|
| MERGE ID COMMIT_ID STR COMMIT_TAG STR {yy.merge($2, $4, '', $6)}
|
||||||
|
| MERGE ID COMMIT_TYPE commitType COMMIT_ID STR {yy.merge($2, $6,$4, '')}
|
||||||
|
| MERGE ID COMMIT_ID STR COMMIT_TYPE commitType COMMIT_TAG STR {yy.merge($2, $4, $6, $8)}
|
||||||
|
| MERGE ID COMMIT_TYPE commitType COMMIT_TAG STR COMMIT_ID STR {yy.merge($2, $8, $4, $6)}
|
||||||
|
| MERGE ID COMMIT_ID STR COMMIT_TAG STR COMMIT_TYPE commitType {yy.merge($2, $4, $8, $6)}
|
||||||
|
| MERGE ID COMMIT_TYPE commitType COMMIT_ID STR COMMIT_TAG STR {yy.merge($2, $6, $4, $8)}
|
||||||
|
| MERGE ID COMMIT_TAG STR COMMIT_TYPE commitType COMMIT_ID STR {yy.merge($2, $8, $6, $4)}
|
||||||
|
| MERGE ID COMMIT_TAG STR COMMIT_ID STR COMMIT_TYPE commitType {yy.merge($2, $6, $8, $4)}
|
||||||
;
|
;
|
||||||
|
|
||||||
commitStatement
|
commitStatement
|
||||||
|
|
160
yarn.lock
160
yarn.lock
|
@ -1532,14 +1532,14 @@
|
||||||
resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.0.tgz#fe364f025ba74f6de6c837a84ef44bdb1d61e68f"
|
resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.0.tgz#fe364f025ba74f6de6c837a84ef44bdb1d61e68f"
|
||||||
integrity sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w==
|
integrity sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w==
|
||||||
|
|
||||||
"@commitlint/cli@^17.0.0":
|
"@commitlint/cli@^17.1.2":
|
||||||
version "17.1.1"
|
version "17.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-17.1.1.tgz#994e91a873aea2bcb53dfa3225ffce2c9022fd3e"
|
resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-17.1.2.tgz#38240f84936df5216f749f06f838dc50cc85a43d"
|
||||||
integrity sha512-xyQJNJs1j18At5wSBF6bMo1on6ZrpcHUr4duacznPU0RnywCAABDBP1s63BmhkTMdNXLVgVM4J1H2sG0HSS3IA==
|
integrity sha512-h/4Hlka3bvCLbnxf0Er2ri5A44VMlbMSkdTRp8Adv2tRiklSTRIoPGs7OEXDv3EoDs2AAzILiPookgM4Gi7LOw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@commitlint/format" "^17.0.0"
|
"@commitlint/format" "^17.0.0"
|
||||||
"@commitlint/lint" "^17.1.0"
|
"@commitlint/lint" "^17.1.0"
|
||||||
"@commitlint/load" "^17.1.1"
|
"@commitlint/load" "^17.1.2"
|
||||||
"@commitlint/read" "^17.1.0"
|
"@commitlint/read" "^17.1.0"
|
||||||
"@commitlint/types" "^17.0.0"
|
"@commitlint/types" "^17.0.0"
|
||||||
execa "^5.0.0"
|
execa "^5.0.0"
|
||||||
|
@ -1602,10 +1602,10 @@
|
||||||
"@commitlint/rules" "^17.0.0"
|
"@commitlint/rules" "^17.0.0"
|
||||||
"@commitlint/types" "^17.0.0"
|
"@commitlint/types" "^17.0.0"
|
||||||
|
|
||||||
"@commitlint/load@^17.1.1":
|
"@commitlint/load@^17.1.2":
|
||||||
version "17.1.1"
|
version "17.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-17.1.1.tgz#16f945d2cc4a5d4d75cccc3d7df8066ff152024b"
|
resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-17.1.2.tgz#19c88be570d8666bbd32f9b3d81925a08328bc13"
|
||||||
integrity sha512-jEgdDabfj58kFKZmB7rMtmQa7Feo7Ozh3KmvIlXWqrJmal5auO1RC0Iczfl52DlPn26Uo0goUDHrhoAFs2ze0Q==
|
integrity sha512-sk2p/jFYAWLChIfOIp/MGSIn/WzZ0vkc3afw+l4X8hGEYkvDe4gQUUAVxjl/6xMRn0HgnSLMZ04xXh5pkTsmgg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@commitlint/config-validator" "^17.1.0"
|
"@commitlint/config-validator" "^17.1.0"
|
||||||
"@commitlint/execute-rule" "^17.0.0"
|
"@commitlint/execute-rule" "^17.0.0"
|
||||||
|
@ -1614,9 +1614,10 @@
|
||||||
"@types/node" "^14.0.0"
|
"@types/node" "^14.0.0"
|
||||||
chalk "^4.1.0"
|
chalk "^4.1.0"
|
||||||
cosmiconfig "^7.0.0"
|
cosmiconfig "^7.0.0"
|
||||||
cosmiconfig-typescript-loader "^3.0.0"
|
cosmiconfig-typescript-loader "^4.0.0"
|
||||||
lodash "^4.17.19"
|
lodash "^4.17.19"
|
||||||
resolve-from "^5.0.0"
|
resolve-from "^5.0.0"
|
||||||
|
ts-node "^10.8.1"
|
||||||
typescript "^4.6.4"
|
typescript "^4.6.4"
|
||||||
|
|
||||||
"@commitlint/message@^17.0.0":
|
"@commitlint/message@^17.0.0":
|
||||||
|
@ -1686,6 +1687,13 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk "^4.1.0"
|
chalk "^4.1.0"
|
||||||
|
|
||||||
|
"@cspotcode/source-map-support@^0.8.0":
|
||||||
|
version "0.8.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
|
||||||
|
integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==
|
||||||
|
dependencies:
|
||||||
|
"@jridgewell/trace-mapping" "0.3.9"
|
||||||
|
|
||||||
"@cypress/request@^2.88.10":
|
"@cypress/request@^2.88.10":
|
||||||
version "2.88.10"
|
version "2.88.10"
|
||||||
resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce"
|
resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce"
|
||||||
|
@ -2091,6 +2099,14 @@
|
||||||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
|
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
|
||||||
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
|
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
|
||||||
|
|
||||||
|
"@jridgewell/trace-mapping@0.3.9":
|
||||||
|
version "0.3.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
|
||||||
|
integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
|
||||||
|
dependencies:
|
||||||
|
"@jridgewell/resolve-uri" "^3.0.3"
|
||||||
|
"@jridgewell/sourcemap-codec" "^1.4.10"
|
||||||
|
|
||||||
"@jridgewell/trace-mapping@^0.3.0", "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.9":
|
"@jridgewell/trace-mapping@^0.3.0", "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.9":
|
||||||
version "0.3.15"
|
version "0.3.15"
|
||||||
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774"
|
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774"
|
||||||
|
@ -2183,6 +2199,26 @@
|
||||||
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
|
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
|
||||||
integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
|
integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
|
||||||
|
|
||||||
|
"@tsconfig/node10@^1.0.7":
|
||||||
|
version "1.0.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2"
|
||||||
|
integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==
|
||||||
|
|
||||||
|
"@tsconfig/node12@^1.0.7":
|
||||||
|
version "1.0.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d"
|
||||||
|
integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==
|
||||||
|
|
||||||
|
"@tsconfig/node14@^1.0.0":
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1"
|
||||||
|
integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==
|
||||||
|
|
||||||
|
"@tsconfig/node16@^1.0.2":
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e"
|
||||||
|
integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==
|
||||||
|
|
||||||
"@types/babel__core@^7.1.14":
|
"@types/babel__core@^7.1.14":
|
||||||
version "7.1.17"
|
version "7.1.17"
|
||||||
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.17.tgz#f50ac9d20d64153b510578d84f9643f9a3afbe64"
|
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.17.tgz#f50ac9d20d64153b510578d84f9643f9a3afbe64"
|
||||||
|
@ -3065,7 +3101,7 @@ acorn-walk@^7.0.0, acorn-walk@^7.1.1:
|
||||||
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
|
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
|
||||||
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
|
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
|
||||||
|
|
||||||
acorn-walk@^8.2.0:
|
acorn-walk@^8.1.1, acorn-walk@^8.2.0:
|
||||||
version "8.2.0"
|
version "8.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
|
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
|
||||||
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
|
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
|
||||||
|
@ -3075,16 +3111,16 @@ acorn@^7.0.0, acorn@^7.1.1:
|
||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
|
||||||
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
|
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
|
||||||
|
|
||||||
|
acorn@^8.4.1, acorn@^8.8.0:
|
||||||
|
version "8.8.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
|
||||||
|
integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
|
||||||
|
|
||||||
acorn@^8.5.0, acorn@^8.7.0, acorn@^8.7.1:
|
acorn@^8.5.0, acorn@^8.7.0, acorn@^8.7.1:
|
||||||
version "8.7.1"
|
version "8.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30"
|
||||||
integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==
|
integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==
|
||||||
|
|
||||||
acorn@^8.8.0:
|
|
||||||
version "8.8.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
|
|
||||||
integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
|
|
||||||
|
|
||||||
add-stream@^1.0.0:
|
add-stream@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa"
|
resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa"
|
||||||
|
@ -3256,6 +3292,11 @@ arch@^2.2.0:
|
||||||
resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11"
|
resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11"
|
||||||
integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==
|
integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==
|
||||||
|
|
||||||
|
arg@^4.1.0:
|
||||||
|
version "4.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
|
||||||
|
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
|
||||||
|
|
||||||
argparse@^1.0.7:
|
argparse@^1.0.7:
|
||||||
version "1.0.10"
|
version "1.0.10"
|
||||||
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
|
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
|
||||||
|
@ -4484,10 +4525,10 @@ core-util-is@~1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
|
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
|
||||||
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
|
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
|
||||||
|
|
||||||
cosmiconfig-typescript-loader@^3.0.0:
|
cosmiconfig-typescript-loader@^4.0.0:
|
||||||
version "3.1.2"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.1.2.tgz#e147457854cabe1416152bdca55f53449b1f865d"
|
resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.0.0.tgz#4a6d856c1281135197346a6f64dfa73a9cd9fefa"
|
||||||
integrity sha512-rIwakk27LtK7vjSjGgs3FDbKkq41Byw3VHRGRuAkRQLfGla+O7s+cy1FXRkjLSZ2G9z1og1bcOIsELo1w4G0Kg==
|
integrity sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==
|
||||||
|
|
||||||
cosmiconfig@^7.0.0:
|
cosmiconfig@^7.0.0:
|
||||||
version "7.0.1"
|
version "7.0.1"
|
||||||
|
@ -4511,6 +4552,11 @@ coveralls@^3.0.2:
|
||||||
minimist "^1.2.5"
|
minimist "^1.2.5"
|
||||||
request "^2.88.2"
|
request "^2.88.2"
|
||||||
|
|
||||||
|
create-require@^1.1.0:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
|
||||||
|
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
|
||||||
|
|
||||||
cross-spawn@^6.0.0:
|
cross-spawn@^6.0.0:
|
||||||
version "6.0.5"
|
version "6.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
|
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
|
||||||
|
@ -8427,7 +8473,7 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
semver "^6.0.0"
|
semver "^6.0.0"
|
||||||
|
|
||||||
make-error@1.x:
|
make-error@^1.1.1:
|
||||||
version "1.3.6"
|
version "1.3.6"
|
||||||
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
|
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
|
||||||
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
|
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
|
||||||
|
@ -11272,10 +11318,10 @@ terminal-link@^2.0.0:
|
||||||
ansi-escapes "^4.2.1"
|
ansi-escapes "^4.2.1"
|
||||||
supports-hyperlinks "^2.0.0"
|
supports-hyperlinks "^2.0.0"
|
||||||
|
|
||||||
terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.4:
|
terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.6:
|
||||||
version "5.3.5"
|
version "5.3.6"
|
||||||
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.5.tgz#f7d82286031f915a4f8fb81af4bd35d2e3c011bc"
|
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c"
|
||||||
integrity sha512-AOEDLDxD2zylUGf/wxHxklEkOe2/r+seuyOWujejFrIxHf11brA1/dWQNIgXa1c6/Wkxgu7zvv0JhOWfc2ELEA==
|
integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@jridgewell/trace-mapping" "^0.3.14"
|
"@jridgewell/trace-mapping" "^0.3.14"
|
||||||
jest-worker "^27.4.5"
|
jest-worker "^27.4.5"
|
||||||
|
@ -11495,29 +11541,24 @@ trough@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406"
|
resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406"
|
||||||
integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
|
integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
|
||||||
|
|
||||||
ts-jest@^28.0.8:
|
ts-node@^10.8.1:
|
||||||
version "28.0.8"
|
version "10.9.1"
|
||||||
resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-28.0.8.tgz#cd204b8e7a2f78da32cf6c95c9a6165c5b99cc73"
|
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b"
|
||||||
integrity sha512-5FaG0lXmRPzApix8oFG8RKjAz4ehtm8yMKOTy5HX3fY6W8kmvOrmcY0hKDElW52FJov+clhUbrKAqofnj4mXTg==
|
integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==
|
||||||
dependencies:
|
dependencies:
|
||||||
bs-logger "0.x"
|
"@cspotcode/source-map-support" "^0.8.0"
|
||||||
fast-json-stable-stringify "2.x"
|
"@tsconfig/node10" "^1.0.7"
|
||||||
jest-util "^28.0.0"
|
"@tsconfig/node12" "^1.0.7"
|
||||||
json5 "^2.2.1"
|
"@tsconfig/node14" "^1.0.0"
|
||||||
lodash.memoize "4.x"
|
"@tsconfig/node16" "^1.0.2"
|
||||||
make-error "1.x"
|
acorn "^8.4.1"
|
||||||
semver "7.x"
|
acorn-walk "^8.1.1"
|
||||||
yargs-parser "^21.0.1"
|
arg "^4.1.0"
|
||||||
|
create-require "^1.1.0"
|
||||||
ts-loader@^9.3.1:
|
diff "^4.0.1"
|
||||||
version "9.3.1"
|
make-error "^1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.3.1.tgz#fe25cca56e3e71c1087fe48dc67f4df8c59b22d4"
|
v8-compile-cache-lib "^3.0.1"
|
||||||
integrity sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw==
|
yn "3.1.1"
|
||||||
dependencies:
|
|
||||||
chalk "^4.1.0"
|
|
||||||
enhanced-resolve "^5.0.0"
|
|
||||||
micromatch "^4.0.0"
|
|
||||||
semver "^7.3.4"
|
|
||||||
|
|
||||||
tslib@^1.8.1:
|
tslib@^1.8.1:
|
||||||
version "1.14.1"
|
version "1.14.1"
|
||||||
|
@ -11851,6 +11892,11 @@ uvu@^0.5.0:
|
||||||
kleur "^4.0.3"
|
kleur "^4.0.3"
|
||||||
sade "^1.7.3"
|
sade "^1.7.3"
|
||||||
|
|
||||||
|
v8-compile-cache-lib@^3.0.1:
|
||||||
|
version "3.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
|
||||||
|
integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
|
||||||
|
|
||||||
v8-to-istanbul@^9.0.1:
|
v8-to-istanbul@^9.0.1:
|
||||||
version "9.0.1"
|
version "9.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4"
|
resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4"
|
||||||
|
@ -12145,10 +12191,10 @@ webpack-dev-middleware@^5.3.1:
|
||||||
range-parser "^1.2.1"
|
range-parser "^1.2.1"
|
||||||
schema-utils "^4.0.0"
|
schema-utils "^4.0.0"
|
||||||
|
|
||||||
webpack-dev-server@^4.3.0:
|
webpack-dev-server@^4.10.1:
|
||||||
version "4.10.0"
|
version "4.10.1"
|
||||||
resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.10.0.tgz#de270d0009eba050546912be90116e7fd740a9ca"
|
resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.10.1.tgz#124ac9ac261e75303d74d95ab6712b4aec3e12ed"
|
||||||
integrity sha512-7dezwAs+k6yXVFZ+MaL8VnE+APobiO3zvpp3rBHe/HmWQ+avwh0Q3d0xxacOiBybZZ3syTZw9HXzpa3YNbAZDQ==
|
integrity sha512-FIzMq3jbBarz3ld9l7rbM7m6Rj1lOsgq/DyLGMX/fPEB1UBUPtf5iL/4eNfhx8YYJTRlzfv107UfWSWcBK5Odw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/bonjour" "^3.5.9"
|
"@types/bonjour" "^3.5.9"
|
||||||
"@types/connect-history-api-fallback" "^1.3.5"
|
"@types/connect-history-api-fallback" "^1.3.5"
|
||||||
|
@ -12358,12 +12404,7 @@ ws@8.5.0:
|
||||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
|
resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
|
||||||
integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==
|
integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==
|
||||||
|
|
||||||
ws@^8.2.3, ws@^8.4.2:
|
ws@^8.2.3, ws@^8.4.2, ws@^8.8.0:
|
||||||
version "8.6.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23"
|
|
||||||
integrity sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==
|
|
||||||
|
|
||||||
ws@^8.8.0:
|
|
||||||
version "8.8.1"
|
version "8.8.1"
|
||||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0"
|
resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0"
|
||||||
integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==
|
integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==
|
||||||
|
@ -12502,6 +12543,11 @@ yauzl@^2.10.0:
|
||||||
buffer-crc32 "~0.2.3"
|
buffer-crc32 "~0.2.3"
|
||||||
fd-slicer "~1.1.0"
|
fd-slicer "~1.1.0"
|
||||||
|
|
||||||
|
yn@3.1.1:
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
|
||||||
|
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
|
||||||
|
|
||||||
yocto-queue@^0.1.0:
|
yocto-queue@^0.1.0:
|
||||||
version "0.1.0"
|
version "0.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||||
|
|
Loading…
Reference in New Issue