diff --git a/.esbuild/esbuild.cjs b/.esbuild/esbuild.cjs
deleted file mode 100644
index 393dadcf3..000000000
--- a/.esbuild/esbuild.cjs
+++ /dev/null
@@ -1,20 +0,0 @@
-const { esmBuild, esmCoreBuild, iifeBuild } = require('./util.cjs');
-const { build } = require('esbuild');
-
-const handler = (e) => {
- console.error(e);
- process.exit(1);
-};
-const watch = process.argv.includes('--watch');
-
-// mermaid.js
-build(iifeBuild({ minify: false, watch })).catch(handler);
-// mermaid.esm.mjs
-build(esmBuild({ minify: false, watch })).catch(handler);
-
-// mermaid.min.js
-build(iifeBuild()).catch(handler);
-// mermaid.esm.min.mjs
-build(esmBuild()).catch(handler);
-// mermaid.core.mjs (node_modules unbundled)
-build(esmCoreBuild()).catch(handler);
diff --git a/.esbuild/jison.js b/.esbuild/jison.js
deleted file mode 100644
index 7b68f9809..000000000
--- a/.esbuild/jison.js
+++ /dev/null
@@ -1,18 +0,0 @@
-// eslint-disable-next-line @typescript-eslint/no-var-requires
-const { transformJison } = require('./jisonTransformer.cjs');
-const fileRegex = /\.(jison)$/;
-
-export default function jison() {
- return {
- name: 'jison',
-
- transform(src, id) {
- if (fileRegex.test(id)) {
- return {
- code: transformJison(src),
- map: null, // provide source map if available
- };
- }
- },
- };
-}
diff --git a/.esbuild/jisonTransformer.cjs b/.esbuild/jisonTransformer.cjs
deleted file mode 100644
index 5f89c6647..000000000
--- a/.esbuild/jisonTransformer.cjs
+++ /dev/null
@@ -1,14 +0,0 @@
-const { Generator } = require('jison');
-exports.transformJison = (src) => {
- const parser = new Generator(src, {
- moduleType: 'js',
- 'token-stack': true,
- });
- const source = parser.generate({ moduleMain: '() => {}' });
- const exporter = `
- parser.parser = parser;
- export { parser };
- export default parser;
- `;
- return `${source} ${exporter}`;
-};
diff --git a/.esbuild/serve.cjs b/.esbuild/serve.cjs
deleted file mode 100644
index 4c06572f3..000000000
--- a/.esbuild/serve.cjs
+++ /dev/null
@@ -1,79 +0,0 @@
-const esbuild = require('esbuild');
-const http = require('http');
-const { iifeBuild, esmBuild } = require('./util.cjs');
-const express = require('express');
-
-// Start 2 esbuild servers. One for IIFE and one for ESM
-// Serve 2 static directories: demo & cypress/platform
-// Have 3 entry points:
-// mermaid: './src/mermaid',
-// e2e: './cypress/platform/viewer.js',
-// 'bundle-test': './cypress/platform/bundle-test.js',
-
-const getEntryPointsAndExtensions = (format) => {
- return {
- entryPoints: {
- mermaid: './src/mermaid',
- e2e: 'cypress/platform/viewer.js',
- 'bundle-test': 'cypress/platform/bundle-test.js',
- },
- outExtension: { '.js': format === 'iife' ? '.js' : '.esm.mjs' },
- };
-};
-
-const generateHandler = (server) => {
- return (req, res) => {
- const options = {
- hostname: server.host,
- port: server.port,
- path: req.url,
- method: req.method,
- headers: req.headers,
- };
- // Forward each incoming request to esbuild
- const proxyReq = http.request(options, (proxyRes) => {
- // If esbuild returns "not found", send a custom 404 page
- if (proxyRes.statusCode === 404) {
- if (!req.url.endsWith('.html')) {
- res.writeHead(404, { 'Content-Type': 'text/html' });
- res.end('
A custom 404 page
');
- return;
- }
- }
- // Otherwise, forward the response from esbuild to the client
- res.writeHead(proxyRes.statusCode, proxyRes.headers);
- proxyRes.pipe(res, { end: true });
- });
- // Forward the body of the request to esbuild
- req.pipe(proxyReq, { end: true });
- };
-};
-
-(async () => {
- const iifeServer = await esbuild.serve(
- {},
- {
- ...iifeBuild({ minify: false, outfile: undefined, outdir: 'dist' }),
- ...getEntryPointsAndExtensions('iife'),
- }
- );
- const esmServer = await esbuild.serve(
- {},
- {
- ...esmBuild({ minify: false, outfile: undefined, outdir: 'dist' }),
- ...getEntryPointsAndExtensions('esm'),
- }
- );
- const app = express();
-
- app.use(express.static('demos'));
- app.use(express.static('cypress/platform'));
- app.all('/mermaid.js', generateHandler(iifeServer));
- app.all('/mermaid.esm.mjs', generateHandler(esmServer));
-
- app.all('/e2e.esm.mjs', generateHandler(esmServer));
- app.all('/bundle-test.esm.mjs', generateHandler(esmServer));
- app.listen(9000, () => {
- console.log(`Listening on http://localhost:9000`);
- });
-})();
diff --git a/.esbuild/util.cjs b/.esbuild/util.cjs
deleted file mode 100644
index 4dbcd01c3..000000000
--- a/.esbuild/util.cjs
+++ /dev/null
@@ -1,94 +0,0 @@
-const { transformJison } = require('./jisonTransformer.cjs');
-const fs = require('fs');
-const { dependencies } = require('../package.json');
-
-/** @typedef {import('esbuild').BuildOptions} Options */
-
-/**
- * @param {Options} override
- * @returns {Options}
- */
-const buildOptions = (override = {}) => {
- return {
- bundle: true,
- minify: true,
- keepNames: true,
- banner: { js: '"use strict";' },
- globalName: 'mermaid',
- platform: 'browser',
- tsconfig: 'tsconfig.json',
- resolveExtensions: ['.ts', '.js', '.mjs', '.json', '.jison'],
- external: ['require', 'fs', 'path'],
- entryPoints: ['src/mermaid.ts'],
- outfile: 'dist/mermaid.min.js',
- plugins: [jisonPlugin],
- sourcemap: 'external',
- ...override,
- };
-};
-
-/**
- * Build options for mermaid.esm.* build.
- *
- * For ESM browser use.
- *
- * @param {Options} override - Override options.
- * @returns {Options} ESBuild build options.
- */
-exports.esmBuild = (override = { minify: true }) => {
- return buildOptions({
- format: 'esm',
- outfile: `dist/mermaid.esm${override.minify ? '.min' : ''}.mjs`,
- ...override,
- });
-};
-
-/**
- * Build options for mermaid.core.* build.
- *
- * This build does not bundle `./node_modules/`, as it is designed to be used with
- * Webpack/ESBuild/Vite to use mermaid inside an app/website.
- *
- * @param {Options} override - Override options.
- * @returns {Options} ESBuild build options.
- */
-exports.esmCoreBuild = (override) => {
- return buildOptions({
- format: 'esm',
- outfile: `dist/mermaid.core.mjs`,
- external: ['require', 'fs', 'path', ...Object.keys(dependencies)],
- platform: 'neutral',
- ...override,
- });
-};
-
-/**
- * Build options for mermaid.js build.
- *
- * For IIFE browser use (where ESM is not yet supported).
- *
- * @param {Options} override - Override options.
- * @returns {Options} ESBuild build options.
- */
-exports.iifeBuild = (override = { minify: true }) => {
- return buildOptions({
- outfile: `dist/mermaid${override.minify ? '.min' : ''}.js`,
- format: 'iife',
- footer: {
- js: 'mermaid = mermaid.default;',
- },
- ...override,
- });
-};
-
-const jisonPlugin = {
- name: 'jison',
- setup(build) {
- build.onLoad({ filter: /\.jison$/ }, async (args) => {
- // Load the file from the file system
- const source = await fs.promises.readFile(args.path, 'utf8');
- const contents = transformJison(source);
- return { contents, warnings: [] };
- });
- },
-};
diff --git a/package.json b/package.json
index 50083fd40..531c3925d 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,6 @@
"scripts": {
"clean": "rimraf dist",
"build:vite": "ts-node-esm .vite/build.ts",
- "build:esbuild": "node .esbuild/esbuild.cjs",
"build:types": "tsc -p ./tsconfig.json --emitDeclarationOnly",
"build:watch": "yarn build:code --watch",
"build": "yarn clean; concurrently \"yarn build:vite\" \"yarn build:types\"",