mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-01-28 07:03:17 +08:00
convert svgDrawCommon
to TS
This commit is contained in:
parent
da602add5d
commit
92098e23eb
@ -1,15 +1,15 @@
|
|||||||
import { sanitizeText, removeScript, parseGenericTypes } from './common.js';
|
import { sanitizeText, removeScript, parseGenericTypes } from './common.js';
|
||||||
|
|
||||||
describe('when securityLevel is antiscript, all script must be removed', function () {
|
describe('when securityLevel is antiscript, all script must be removed', () => {
|
||||||
/**
|
/**
|
||||||
* @param {string} original The original text
|
* @param original - The original text
|
||||||
* @param {string} result The expected sanitized text
|
* @param result - The expected sanitized text
|
||||||
*/
|
*/
|
||||||
function compareRemoveScript(original, result) {
|
function compareRemoveScript(original: string, result: string) {
|
||||||
expect(removeScript(original).trim()).toEqual(result);
|
expect(removeScript(original).trim()).toEqual(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
it('should remove all script block, script inline.', function () {
|
it('should remove all script block, script inline.', () => {
|
||||||
const labelString = `1
|
const labelString = `1
|
||||||
Act1: Hello 1<script src="http://abc.com/script1.js"></script>1
|
Act1: Hello 1<script src="http://abc.com/script1.js"></script>1
|
||||||
<b>Act2</b>:
|
<b>Act2</b>:
|
||||||
@ -25,7 +25,7 @@ describe('when securityLevel is antiscript, all script must be removed', functio
|
|||||||
compareRemoveScript(labelString, exactlyString);
|
compareRemoveScript(labelString, exactlyString);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should remove all javascript urls', function () {
|
it('should remove all javascript urls', () => {
|
||||||
compareRemoveScript(
|
compareRemoveScript(
|
||||||
`This is a <a href="javascript:runHijackingScript();">clean link</a> + <a href="javascript:runHijackingScript();">clean link</a>
|
`This is a <a href="javascript:runHijackingScript();">clean link</a> + <a href="javascript:runHijackingScript();">clean link</a>
|
||||||
and <a href="javascript:bipassedMining();">me too</a>`,
|
and <a href="javascript:bipassedMining();">me too</a>`,
|
||||||
@ -34,11 +34,11 @@ describe('when securityLevel is antiscript, all script must be removed', functio
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should detect malicious images', function () {
|
it('should detect malicious images', () => {
|
||||||
compareRemoveScript(`<img onerror="alert('hello');">`, `<img>`);
|
compareRemoveScript(`<img onerror="alert('hello');">`, `<img>`);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should detect iframes', function () {
|
it('should detect iframes', () => {
|
||||||
compareRemoveScript(
|
compareRemoveScript(
|
||||||
`<iframe src="http://abc.com/script1.js"></iframe>
|
`<iframe src="http://abc.com/script1.js"></iframe>
|
||||||
<iframe src="http://example.com/iframeexample"></iframe>`,
|
<iframe src="http://example.com/iframeexample"></iframe>`,
|
||||||
@ -47,8 +47,8 @@ describe('when securityLevel is antiscript, all script must be removed', functio
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Sanitize text', function () {
|
describe('Sanitize text', () => {
|
||||||
it('should remove script tag', function () {
|
it('should remove script tag', () => {
|
||||||
const maliciousStr = 'javajavascript:script:alert(1)';
|
const maliciousStr = 'javajavascript:script:alert(1)';
|
||||||
const result = sanitizeText(maliciousStr, {
|
const result = sanitizeText(maliciousStr, {
|
||||||
securityLevel: 'strict',
|
securityLevel: 'strict',
|
||||||
@ -58,8 +58,8 @@ describe('Sanitize text', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('generic parser', function () {
|
describe('generic parser', () => {
|
||||||
it('should parse generic types', function () {
|
it('should parse generic types', () => {
|
||||||
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(
|
expect(parseGenericTypes('test~Array~Array~string[]~~~')).toEqual(
|
@ -1,3 +1,4 @@
|
|||||||
|
// @ts-nocheck - ignore to convert to TS
|
||||||
import { sanitizeUrl } from '@braintree/sanitize-url';
|
import { sanitizeUrl } from '@braintree/sanitize-url';
|
||||||
|
|
||||||
export const drawRect = function (elem, rectData) {
|
export const drawRect = function (elem, rectData) {
|
||||||
@ -12,7 +13,7 @@ export const drawRect = function (elem, rectData) {
|
|||||||
rectElem.attr('ry', rectData.ry);
|
rectElem.attr('ry', rectData.ry);
|
||||||
|
|
||||||
if (rectData.attrs !== 'undefined' && rectData.attrs !== null) {
|
if (rectData.attrs !== 'undefined' && rectData.attrs !== null) {
|
||||||
for (let attrKey in rectData.attrs) {
|
for (const attrKey in rectData.attrs) {
|
||||||
rectElem.attr(attrKey, rectData.attrs[attrKey]);
|
rectElem.attr(attrKey, rectData.attrs[attrKey]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -27,8 +28,8 @@ export const drawRect = function (elem, rectData) {
|
|||||||
/**
|
/**
|
||||||
* Draws a background rectangle
|
* Draws a background rectangle
|
||||||
*
|
*
|
||||||
* @param {any} elem Diagram (reference for bounds)
|
* @param elem - Diagram (reference for bounds)
|
||||||
* @param {any} bounds Shape of the rectangle
|
* @param bounds - Shape of the rectangle
|
||||||
*/
|
*/
|
||||||
export const drawBackgroundRect = function (elem, bounds) {
|
export const drawBackgroundRect = function (elem, bounds) {
|
||||||
const rectElem = drawRect(elem, {
|
const rectElem = drawRect(elem, {
|
||||||
@ -69,7 +70,7 @@ export const drawImage = function (elem, x, y, link) {
|
|||||||
const imageElem = elem.append('image');
|
const imageElem = elem.append('image');
|
||||||
imageElem.attr('x', x);
|
imageElem.attr('x', x);
|
||||||
imageElem.attr('y', y);
|
imageElem.attr('y', y);
|
||||||
var sanitizedLink = sanitizeUrl(link);
|
const sanitizedLink = sanitizeUrl(link);
|
||||||
imageElem.attr('xlink:href', sanitizedLink);
|
imageElem.attr('xlink:href', sanitizedLink);
|
||||||
};
|
};
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user