mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-09-17 22:39:56 +02:00
Merge branch 'sidv/viteVitest' into sidv/3061_monorepo
* sidv/viteVitest: fix: Core build fix: js-base64 fix OutputOptions type fix: js-base64 fix: json import, js-base64 fix: json import
This commit is contained in:
@@ -55,13 +55,17 @@ export const getBuildConfig = ({
|
|||||||
];
|
];
|
||||||
|
|
||||||
if (core) {
|
if (core) {
|
||||||
|
// Core build is used to generate file without bundled dependencies.
|
||||||
|
// This is used by downstream projects to bundle dependencies themselves.
|
||||||
external.push(...Object.keys(dependencies));
|
external.push(...Object.keys(dependencies));
|
||||||
output = {
|
// This needs to be an array. Otherwise vite will build esm & umd with same name and overwrite esm with umd.
|
||||||
name,
|
output = [
|
||||||
format: 'esm',
|
{
|
||||||
sourcemap: true,
|
format: 'esm',
|
||||||
entryFileNames: `[name].core.mjs`,
|
sourcemap: true,
|
||||||
};
|
entryFileNames: `[name].core.mjs`,
|
||||||
|
},
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
const config: InlineConfig = {
|
const config: InlineConfig = {
|
||||||
@@ -100,7 +104,7 @@ const buildPackage = async (packageName: keyof typeof packageOptions) => {
|
|||||||
return Promise.allSettled([
|
return Promise.allSettled([
|
||||||
build(getBuildConfig({ minify: false, packageName })),
|
build(getBuildConfig({ minify: false, packageName })),
|
||||||
build(getBuildConfig({ minify: 'esbuild', packageName })),
|
build(getBuildConfig({ minify: 'esbuild', packageName })),
|
||||||
build(getBuildConfig({ minify: true, core: true, packageName })),
|
build(getBuildConfig({ minify: false, core: true, packageName })),
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
6
.vite/tsconfig.json
Normal file
6
.vite/tsconfig.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"extends": "../tsconfig.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "ES2022"
|
||||||
|
}
|
||||||
|
}
|
@@ -1,4 +1,6 @@
|
|||||||
import { Base64 } from 'js-base64';
|
const utf8ToB64 = (str) => {
|
||||||
|
return window.btoa(unescape(encodeURIComponent(str)));
|
||||||
|
};
|
||||||
|
|
||||||
export const mermaidUrl = (graphStr, options, api) => {
|
export const mermaidUrl = (graphStr, options, api) => {
|
||||||
const obj = {
|
const obj = {
|
||||||
@@ -6,7 +8,7 @@ export const mermaidUrl = (graphStr, options, api) => {
|
|||||||
mermaid: options,
|
mermaid: options,
|
||||||
};
|
};
|
||||||
const objStr = JSON.stringify(obj);
|
const objStr = JSON.stringify(obj);
|
||||||
let url = 'http://localhost:9000/e2e.html?graph=' + Base64.encodeURI(objStr);
|
let url = 'http://localhost:9000/e2e.html?graph=' + utf8ToB64(objStr);
|
||||||
if (api) {
|
if (api) {
|
||||||
url = 'http://localhost:9000/xss.html?graph=' + graphStr;
|
url = 'http://localhost:9000/xss.html?graph=' + graphStr;
|
||||||
}
|
}
|
||||||
|
@@ -15,7 +15,7 @@ describe('XSS', () => {
|
|||||||
|
|
||||||
it('should not allow tags in the css', () => {
|
it('should not allow tags in the css', () => {
|
||||||
const str =
|
const str =
|
||||||
'eyJjb2RlIjoiJSV7aW5pdDogeyAnZm9udEZhbWlseSc6ICdcXFwiPjwvc3R5bGU-PGltZyBzcmM9eCBvbmVycm9yPXhzc0F0dGFjaygpPid9IH0lJVxuZ3JhcGggTFJcbiAgICAgQSAtLT4gQiIsIm1lcm1haWQiOnsidGhlbWUiOiJkZWZhdWx0IiwiZmxvd2NoYXJ0Ijp7Imh0bWxMYWJlbHMiOmZhbHNlfX0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9';
|
'eyJjb2RlIjoiJSV7aW5pdDogeyAnZm9udEZhbWlseSc6ICdcXFwiPjwvc3R5bGU+PGltZyBzcmM9eCBvbmVycm9yPXhzc0F0dGFjaygpPid9IH0lJVxuZ3JhcGggTFJcbiAgICAgQSAtLT4gQiIsIm1lcm1haWQiOnsidGhlbWUiOiJkZWZhdWx0IiwiZmxvd2NoYXJ0Ijp7Imh0bWxMYWJlbHMiOmZhbHNlfX0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9';
|
||||||
|
|
||||||
const url = mermaidUrl(
|
const url = mermaidUrl(
|
||||||
str,
|
str,
|
||||||
|
@@ -1,6 +1,9 @@
|
|||||||
import { Base64 } from '../../node_modules/js-base64';
|
|
||||||
import mermaid2 from '../../packages/mermaid/src/mermaid';
|
import mermaid2 from '../../packages/mermaid/src/mermaid';
|
||||||
|
|
||||||
|
function b64ToUtf8(str) {
|
||||||
|
return decodeURIComponent(escape(window.atob(str)));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ##contentLoaded Callback function that is called when page is loaded. This functions fetches
|
* ##contentLoaded Callback function that is called when page is loaded. This functions fetches
|
||||||
* configuration for mermaid rendering and calls init for rendering the mermaid diagrams on the
|
* configuration for mermaid rendering and calls init for rendering the mermaid diagrams on the
|
||||||
@@ -11,7 +14,7 @@ const contentLoaded = function () {
|
|||||||
if (pos > 0) {
|
if (pos > 0) {
|
||||||
pos = pos + 7;
|
pos = pos + 7;
|
||||||
const graphBase64 = document.location.href.substr(pos);
|
const graphBase64 = document.location.href.substr(pos);
|
||||||
const graphObj = JSON.parse(Base64.decode(graphBase64));
|
const graphObj = JSON.parse(b64ToUtf8(graphBase64));
|
||||||
if (graphObj.mermaid && graphObj.mermaid.theme === 'dark') {
|
if (graphObj.mermaid && graphObj.mermaid.theme === 'dark') {
|
||||||
document.body.style.background = '#3f3f3f';
|
document.body.style.background = '#3f3f3f';
|
||||||
}
|
}
|
||||||
@@ -67,7 +70,7 @@ const contentLoadedApi = function () {
|
|||||||
if (pos > 0) {
|
if (pos > 0) {
|
||||||
pos = pos + 7;
|
pos = pos + 7;
|
||||||
const graphBase64 = document.location.href.substr(pos);
|
const graphBase64 = document.location.href.substr(pos);
|
||||||
const graphObj = JSON.parse(Base64.decode(graphBase64));
|
const graphObj = JSON.parse(b64ToUtf8(graphBase64));
|
||||||
// const graph = 'hello'
|
// const graph = 'hello'
|
||||||
if (Array.isArray(graphObj.code)) {
|
if (Array.isArray(graphObj.code)) {
|
||||||
const numCodes = graphObj.code.length;
|
const numCodes = graphObj.code.length;
|
||||||
|
@@ -26,18 +26,18 @@
|
|||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"clean": "rimraf dist",
|
"clean": "rimraf dist",
|
||||||
"build:vite": "ts-node-esm .vite/build.ts",
|
"build:vite": "ts-node-esm --transpileOnly --project=.vite/tsconfig.json .vite/build.ts",
|
||||||
"build:types": "tsc -p ./packages/mermaid/tsconfig.json --emitDeclarationOnly",
|
"build:types": "tsc -p ./packages/mermaid/tsconfig.json --emitDeclarationOnly",
|
||||||
"build:watch": "yarn build:code --watch",
|
"build:watch": "yarn build:code --watch",
|
||||||
"build": "yarn clean; concurrently \"yarn build:vite\" \"yarn build:types\"",
|
"build": "yarn clean; concurrently \"yarn build:vite\" \"yarn build:types\"",
|
||||||
"dev": "concurrently \"yarn build:vite --watch\" \"ts-node-esm .vite/server\"",
|
"dev": "concurrently \"yarn build:vite --watch\" \"ts-node-esm .vite/server\"",
|
||||||
"docs:build": "ts-node-esm src/docs.mts",
|
"docs:build": "ts-node-esm --transpileOnly src/docs.mts",
|
||||||
"docs:verify": "yarn docs:build --verify",
|
"docs:verify": "yarn docs:build --verify",
|
||||||
"todo-postbuild": "documentation build src/mermaidAPI.ts src/config.ts src/defaultConfig.ts --shallow -f md --markdown-toc false > src/docs/Setup.md && prettier --write src/docs/Setup.md",
|
"todo-postbuild": "documentation build src/mermaidAPI.ts src/config.ts src/defaultConfig.ts --shallow -f md --markdown-toc false > src/docs/Setup.md && prettier --write src/docs/Setup.md",
|
||||||
"release": "yarn build",
|
"release": "yarn build",
|
||||||
"lint": "eslint --cache --ignore-path .gitignore . && yarn lint:jison && prettier --check .",
|
"lint": "eslint --cache --ignore-path .gitignore . && yarn lint:jison && prettier --check .",
|
||||||
"lint:fix": "eslint --fix --ignore-path .gitignore . && prettier --write .",
|
"lint:fix": "eslint --fix --ignore-path .gitignore . && prettier --write .",
|
||||||
"lint:jison": "ts-node-esm src/jison/lint.mts",
|
"lint:jison": "ts-node-esm --transpileOnly src/jison/lint.mts",
|
||||||
"cypress": "cypress run",
|
"cypress": "cypress run",
|
||||||
"cypress:open": "cypress open",
|
"cypress:open": "cypress open",
|
||||||
"e2e": "start-server-and-test dev http://localhost:9000/ cypress",
|
"e2e": "start-server-and-test dev http://localhost:9000/ cypress",
|
||||||
@@ -99,7 +99,6 @@
|
|||||||
"cypress": "^10.0.0",
|
"cypress": "^10.0.0",
|
||||||
"cypress-image-snapshot": "^4.0.1",
|
"cypress-image-snapshot": "^4.0.1",
|
||||||
"documentation": "13.2.0",
|
"documentation": "13.2.0",
|
||||||
"esbuild": "^0.15.8",
|
|
||||||
"eslint": "^8.23.1",
|
"eslint": "^8.23.1",
|
||||||
"eslint-config-prettier": "^8.5.0",
|
"eslint-config-prettier": "^8.5.0",
|
||||||
"eslint-plugin-cypress": "^2.12.1",
|
"eslint-plugin-cypress": "^2.12.1",
|
||||||
@@ -113,7 +112,6 @@
|
|||||||
"husky": "^8.0.0",
|
"husky": "^8.0.0",
|
||||||
"identity-obj-proxy": "^3.0.0",
|
"identity-obj-proxy": "^3.0.0",
|
||||||
"jison": "^0.4.18",
|
"jison": "^0.4.18",
|
||||||
"js-base64": "3.7.2",
|
|
||||||
"jsdom": "^20.0.0",
|
"jsdom": "^20.0.0",
|
||||||
"lint-staged": "^13.0.0",
|
"lint-staged": "^13.0.0",
|
||||||
"moment": "^2.23.0",
|
"moment": "^2.23.0",
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
'use strict';
|
|
||||||
/**
|
/**
|
||||||
* Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid
|
* Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid
|
||||||
* functionality and to render the diagrams to svg code.
|
* functionality and to render the diagrams to svg code.
|
||||||
|
@@ -27,7 +27,7 @@
|
|||||||
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
|
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
|
||||||
|
|
||||||
/* Modules */
|
/* Modules */
|
||||||
"module": "ESNext" /* Specify what module code is generated. */,
|
"module": "ES6" /* Specify what module code is generated. */,
|
||||||
"rootDir": "./packages" /* Specify the root folder within your source files. */,
|
"rootDir": "./packages" /* Specify the root folder within your source files. */,
|
||||||
"moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */,
|
"moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */,
|
||||||
// "baseUrl": "./src" /* Specify the base directory to resolve non-relative module names. */,
|
// "baseUrl": "./src" /* Specify the base directory to resolve non-relative module names. */,
|
||||||
|
Reference in New Issue
Block a user