Default mermaid back to being a CommonJS module.
Improrting Mermaid as CommonJS (e.g. using `require("mermaid")`)
is normally broken (since v8), due to it's dependency on d3,
which is now ESM only.
However, it looks like some software
(e.g. TypeScript, in the docusaurus project)
could still handle the CommonJS version of Mermaid.
This commit now means that older versions of Node/build-tools
should now default to using the CommonJS version of Mermaid.
Newer tools should still see that the `"module"` field points to ESM,
or use the `exports["."]["import"]` field to load ESM.
Expose the function `initThrowsErrorsAsync()` publicly
as `mermaid.initThrowsErrorsAsync()`.
It has the TSDoc `@alpha` and `@deprecated` tags, so people should
be warned that it might be modified in Mermaid v10 or earlier.
Needed for `mermaid-cli` to handle `lazyLoadedDiagrams`.
This reverts commit 1a0309fb87, reversing
changes made to 56a8068a7f.
This is because the PR https://github.com/mermaid-js/mermaid/pull/3702
worked fine on the `develop` and `release_9.2.0_buggfixes` branches,
but had a bunch of git merge conflicts on the `release/9.2.0` branch.
Exposes the registerDiagram() function publically as
`mermaid.mermaidAPI.registerDiagram` so that users can add their
own diagrams at bundle-time.
This is instead of using the lazyLoadedDiagrams config setting.
Remove the callback function parameter from registerDiagram.
Instead, we can just load the callback function from the `injectUtils`
diagram definition, if it exists.
* sidv/noVar: (77 commits)
fix: Fix eslint warnings
docs: Fix docs path in Contributing.md
Fix file name during "dev" script
docs: Sync
capitalization fix
format Setup.md
format cSpell.json
format docs YAML
format cSpell.json
separate words & ignoreWords
fix: "skin param"
ignore the changelog
Revert "fix: "skin param""
fix: "skin param"
fix: "corresponding"
known terms
known terms
fix: "JetBrains"
known terms
known terms
...
* develop: (50 commits)
docs: Sync
capitalization fix
format Setup.md
format cSpell.json
format docs YAML
format cSpell.json
separate words & ignoreWords
fix: "skin param"
ignore the changelog
Revert "fix: "skin param""
fix: "skin param"
fix: "corresponding"
known terms
known terms
fix: "JetBrains"
known terms
known terms
fix: "stable"
known term
add known term
...
* develop:
Fix for broken test
fix: build npm-script
Fix for issue in classdiagram-v2 from the typescript updates
fix: build npm-script
chore: Cleanup
chore: cleanup
fix: dynamic import
fix: module import in pie chart demo
fix: use async in render-after-error
* develop:
Appended Contact Mail of Mermaid
Added sttributes to CODE OF CONDUCT
build(test): remove vitest from subpackages
test: remove `import {it} from "vitest"`
chore(docs): run `pnpm run docs:build`
CODE_OF_CONDUCT Uploaded
Removes vitest from all subpackages so that vitest/`pnpm run test`
are only in the root mono-repo.
This is required, because otherwise the root vitest and the subpackage
vitest versions can otherwise be slightly different, which causes
issues when running unit tests:
```Snapshot cannot be used outside of test```
In the future, we may want to consider moving package specific
tests into `packages/*/test`, and instead running these tests
with `pnpm run --recursive`, so that tests are run in each package by
their own version of vitest. This is the way that most projects
do things (e.g. https://github.com/vitest-dev/vitest).
We're getting a lot of vitest errors that say:
```Error: No test suite found in file```
I think this is because vitest is somehow
importing a different version the it/test function than the globally
inserted functions.
Removing the imports fixes this.
It looks like the docs/ folder somehow got out of sync
with the packages/mermaid/src/docs folder.
Maybe it was due to a semantic merge conflict
(e.g. `git merge` didn't throw an error, but the merge was bad)
* upstream/develop: (33 commits)
Updated lockfile
chore(deps-dev): update vite requirement from ^3.0.9 to ^3.1.4
chore(deps-dev): update typescript requirement from ^4.8.3 to ^4.8.4
chore(deps-dev): update @vitest/coverage-c8 requirement
chore(deps-dev): update @typescript-eslint/eslint-plugin requirement
chore(deps-dev): update esbuild requirement from ^0.15.8 to ^0.15.10
chore(deps-dev): update @commitlint/config-conventional requirement
chore(deps-dev): update eslint-plugin-jest requirement
chore(deps-dev): update @applitools/eyes-cypress requirement
chore(deps-dev): update jsdom requirement from ^20.0.0 to ^20.0.1
chore(deps-dev): update vitest requirement from ^0.23.1 to ^0.23.4
chore(deps-dev): update lint-staged requirement from ^13.0.0 to ^13.0.3
chore(deps): update @types/node requirement from ^18.7.21 to ^18.8.1
chore(deps-dev): update @typescript-eslint/parser requirement
Fix postbuild script
#3561 Adding cScale0-11 etc and usage of the colors from the mindmap diagram
Fix for broken test
Mindmap cleanup
Using cose-bilkent layout algorithm for mindmaps
chore(deps-dev): update husky requirement from ^8.0.0 to ^8.0.1
...
When running lint-staged during git pre-commit scripts,
search for docs in the packages/mermaid/src/docs folder instead
of the original src/docs folder.
Our docs script was searching for docs in the src/docs folder,
which no longer exists.
Instead, it should be looking at the packages/mermaid/src/docs folder.
Re-enables the `pnpm run prepare` script.
The prepare script is automatically run when running
`pnpm install` locally.
It both:
- Sets up husky/git pre-commit scripts
- Builds the `packages/mermaid/dist` folder.
When running the e2e action from a fork, we prevent multi-processing
in the E2E cypress tests skipping runs that aren't
matrix.container == 1.
However, this means that the pnpm cache folder isn't created, causing
the cache action to throw an error.
To fix this, we also skip building Node/cache setup step.
Fixes: f60c7fff65
When moving to the mono-repo,
`<script src="http://localhost:9000/mermaid.js"/>`
stopped working, since the vite dev server was exposing
the `./dist` folder, when the folder had moved to
the `./packages/mermaid/dist` folder.
Fixes most CI actions to support pnpm and the mono-repo.
It looks like there are some errors related to `mermaid-mindmap`
not being able to find `mermaid` or `mermaid/diagramAPI`
* sidv/viteVitest:
ts conversion
cleanup
remove esbuild
fix: tests
chore: Add recommended extensions
Fix user-journey leaking css
Add "Debug Current Test File" configuration for VSCode
Fix unit test coverage
Use vite for build
Fix docs
vite
vite Server
Cleanup
Merge vitest & esbuild
Merge vitest
fix jison generation
Vite
Vite
This fixes a CSS syntax error that causes the CSS parser to soft-fail, which leads to the later CSS (custom styles) to not properly append the `#id` to them.
* develop: (30 commits)
Fix docs
Auto stash before merge of "develop" and "origin/develop"
vite -> cts
add lcov
chore(deps-dev): bump esbuild from 0.15.6 to 0.15.8
fix(docs): update link
CI Concurrency 4
Remove build
Parallel e2e
Revert "unify Jison tranformers"
Update yarn.lock
fix(docs): `mmd` detection
Hope this fails
Remove `docs:build` from postbuild.
Add verification log
This should fail CI
chore(deps-dev): bump @types/lodash from 4.14.184 to 4.14.185
Update integrations.md
Add vitepress pluin
Fix lint
...
* develop: (28 commits)
fix(docs): update link
Revert "unify Jison tranformers"
Update yarn.lock
Revert "fix(test): No esm exports"
fix(test): No esm exports
fix(docs): `mmd` detection
Hope this fails
unify Jison tranformers
Fix jest
Remove `docs:build` from postbuild.
Add verification log
This should fail CI
fix: imports in HTML
Revert "Add diagramAPI to outfile"
Add `type: module` to package.json
chore(deps-dev): bump @types/lodash from 4.14.184 to 4.14.185
Update integrations.md
Add vitepress pluin
Update mermaid version
Fix ports
...
* develop: (28 commits)
fix(docs): update link
Revert "unify Jison tranformers"
Update yarn.lock
Revert "fix(test): No esm exports"
fix(test): No esm exports
fix(docs): `mmd` detection
Hope this fails
unify Jison tranformers
Fix jest
Remove `docs:build` from postbuild.
Add verification log
This should fail CI
fix: imports in HTML
Revert "Add diagramAPI to outfile"
Add `type: module` to package.json
chore(deps-dev): bump @types/lodash from 4.14.184 to 4.14.185
Update integrations.md
Add vitepress pluin
Update mermaid version
Fix ports
...
* develop: (23 commits)
Revert #3475
chore: updyaate browsers list
Support EMPTYSTR in jison parser, add unit tests for git graph parser
Use undefined to mean default tagging behavior
feat(git): allow cherry-pick to suppress tag altogether
Update src/diagrams/git/parser/gitGraph.jison
fix(git): fix cherry-pick regex parsing error
test(git): add basic parsing test for cherry-pick
feat(git): cherry-pick keyword supports tag attribute
ci(e2e-applitols): add applitools CI action
Test docs:verify
Cleanup docs
Fixed Linting issues
ci(e2e): re-enable e2e tests
style: fix .github/workflow/e2e styling
chore: upgrade cypress to v10
fix(flowchart-v2): fix arrowMarkerAbsolute=true
test(e2e): fix most arrowMarkerAbsolute tests
text(e2e): give git tests consistent commit id
test(e2e): widen flowchart width to within 10%
...
* develop:
Revert #3475
chore: update browsers list
Support EMPTYSTR in jison parser, add unit tests for git graph parser
Use undefined to mean default tagging behavior
feat(git): allow cherry-pick to suppress tag altogether
Update src/diagrams/git/parser/gitGraph.jison
fix(git): fix cherry-pick regex parsing error
test(git): add basic parsing test for cherry-pick
feat(git): cherry-pick keyword supports tag attribute
ci(e2e-applitols): add applitools CI action
Test docs:verify
Cleanup docs
Fixed Linting issues
#3409 Clean up dead code
#3409 Fixed the truncated tags issue
* develop:
chore: update browsers list
Support EMPTYSTR in jison parser, add unit tests for git graph parser
Use undefined to mean default tagging behavior
feat(git): allow cherry-pick to suppress tag altogether
Update src/diagrams/git/parser/gitGraph.jison
fix(git): fix cherry-pick regex parsing error
test(git): add basic parsing test for cherry-pick
feat(git): cherry-pick keyword supports tag attribute
Test docs:verify
Cleanup docs
Fixed Linting issues
Adds a [`workflow_dispatch`][1] GitHub Actions CI workflow
that performs an E2E Cypress rendering test with Applitools
integration.
If the APPLITOOLS_API_KEY secret is not set, this action fallsback to
just doing a normal E2E Cypress test without Applitools support.
[1]: https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow
* develop: (221 commits)
cleanup
Fix docs
Fix coverage
Fix for issues in errorhandling and class diagrams after refactoring
Replace GoogleAnalytics with Plausible
chore(deps): bump dompurify from 2.3.10 to 2.4.0 (#3444)
chore(deps): bump stylis from 4.1.1 to 4.1.2 (#3439)
chore(deps-dev): bump webpack-dev-server from 4.10.1 to 4.11.0 (#3450)
fix(git): support single character branch names
Cleanup unused variables and some commented out code
Cleanup fixing som lingering issues
Remove extension
Apply suggestions from code review
ci(e2e): re-enable e2e tests
style: fix .github/workflow/e2e styling
chore: upgrade cypress to v10
fix(flowchart-v2): fix arrowMarkerAbsolute=true
test(e2e): fix most arrowMarkerAbsolute tests
text(e2e): give git tests consistent commit id
test(e2e): widen flowchart width to within 10%
...
* develop:
cleanup
Fix docs
Fix coverage
Fix for issues in errorhandling and class diagrams after refactoring
Replace GoogleAnalytics with Plausible
fix(git): support single character branch names
Cleanup unused variables and some commented out code
ci(e2e): re-enable e2e tests
style: fix .github/workflow/e2e styling
chore: upgrade cypress to v10
fix(flowchart-v2): fix arrowMarkerAbsolute=true
test(e2e): fix most arrowMarkerAbsolute tests
text(e2e): give git tests consistent commit id
test(e2e): widen flowchart width to within 10%
test(e2e): fix failing xss9 test
* develop: (77 commits)
cleanup
Fix docs
Fix coverage
Fix for issues in errorhandling and class diagrams after refactoring
Replace GoogleAnalytics with Plausible
chore(deps): bump dompurify from 2.3.10 to 2.4.0 (#3444)
chore(deps): bump stylis from 4.1.1 to 4.1.2 (#3439)
chore(deps-dev): bump webpack-dev-server from 4.10.1 to 4.11.0 (#3450)
fix(git): support single character branch names
Cleanup unused variables and some commented out code
Cleanup fixing som lingering issues
Remove extension
Apply suggestions from code review
ci(e2e): re-enable e2e tests
style: fix .github/workflow/e2e styling
chore: upgrade cypress to v10
fix(flowchart-v2): fix arrowMarkerAbsolute=true
test(e2e): fix most arrowMarkerAbsolute tests
text(e2e): give git tests consistent commit id
test(e2e): widen flowchart width to within 10%
...
* sidv/esbuild: (115 commits)
cleanup
Fix docs
Fix coverage
Fix for issues in errorhandling and class diagrams after refactoring
Replace GoogleAnalytics with Plausible
chore(deps): bump dompurify from 2.3.10 to 2.4.0 (#3444)
chore(deps): bump stylis from 4.1.1 to 4.1.2 (#3439)
chore(deps-dev): bump webpack-dev-server from 4.10.1 to 4.11.0 (#3450)
fix(git): support single character branch names
Cleanup unused variables and some commented out code
Cleanup fixing som lingering issues
Remove extension
Apply suggestions from code review
chore(deps-dev): bump eslint-plugin-jest from 27.0.1 to 27.0.4 (#3458)
chore(deps-dev): bump @typescript-eslint/eslint-plugin (#3457)
chore(deps-dev): bump concurrently from 7.3.0 to 7.4.0 (#3445)
chore(deps-dev): bump @babel/preset-env from 7.18.10 to 7.19.0 (#3442)
chore(deps-dev): bump @typescript-eslint/parser from 5.36.1 to 5.37.0 (#3451)
chore(deps-dev): bump @babel/core from 7.18.13 to 7.19.0 (#3447)
chore(deps-dev): bump jest-environment-jsdom from 29.0.2 to 29.0.3 (#3441)
...
* develop:
Replace GoogleAnalytics with Plausible
fix(git): support single character branch names
Cleanup unused variables and some commented out code
Release 9.1.7
Fix for broken rendering test
Fix for issue #3428, load the configured diagrams even when initialize has not been called.
#3395 Renabling the error graph which is rendered on error
#3395 Fix for lopp stopping at first failure
* sidv/esbuild:
chore(deps): bump dompurify from 2.3.10 to 2.4.0 (#3444)
chore(deps): bump stylis from 4.1.1 to 4.1.2 (#3439)
chore(deps-dev): bump webpack-dev-server from 4.10.1 to 4.11.0 (#3450)
Cleanup fixing som lingering issues
Apply suggestions from code review
chore: fix eslint warnings
chore: Turn off eslint rules in spec, demos, etc.
* develop: (56 commits)
chore(deps): bump dompurify from 2.3.10 to 2.4.0 (#3444)
chore(deps): bump stylis from 4.1.1 to 4.1.2 (#3439)
chore(deps-dev): bump webpack-dev-server from 4.10.1 to 4.11.0 (#3450)
Cleanup fixing som lingering issues
Apply suggestions from code review
chore(deps-dev): bump eslint-plugin-jest from 27.0.1 to 27.0.4 (#3458)
chore(deps-dev): bump @typescript-eslint/eslint-plugin (#3457)
chore(deps-dev): bump concurrently from 7.3.0 to 7.4.0 (#3445)
chore(deps-dev): bump @babel/preset-env from 7.18.10 to 7.19.0 (#3442)
chore(deps-dev): bump @typescript-eslint/parser from 5.36.1 to 5.37.0 (#3451)
chore(deps-dev): bump @babel/core from 7.18.13 to 7.19.0 (#3447)
chore(deps-dev): bump jest-environment-jsdom from 29.0.2 to 29.0.3 (#3441)
chore(deps-dev): bump babel-jest from 29.0.2 to 29.0.3 (#3448)
chore(deps-dev): bump eslint from 8.23.0 to 8.23.1
chore: fix eslint warnings
chore: Turn off eslint rules in spec, demos, etc.
chore(deps-dev): bump typescript from 4.8.2 to 4.8.3 (#3446)
chore(deps): bump actions/checkout from 2 to 3 (#3449)
change wording of console log message (use comma)
Moving out tests from mermaid.spec.js
...
In gitGraph, add support branch names that only have a single
character.
The branch regex is checking for a starting character, and an
ending character, so it currently needs at least two characters.
I've wrapped everything except the first character in a `()?` to fix
this.
There are some really complicated regexes that do match what
valid git branches are (see https://stackoverflow.com/a/12093994), but
I'm reluctant to add them in, since it will be a pain to test all
the different edgecases.
Hopefully https://github.com/mermaid-js/mermaid/pull/3432 might be used
in the future to make a better gitgraph parser!
* sidv/mergeRelease:
chore(deps-dev): bump eslint-plugin-jest from 27.0.1 to 27.0.4 (#3458)
chore(deps-dev): bump @typescript-eslint/eslint-plugin (#3457)
chore(deps-dev): bump concurrently from 7.3.0 to 7.4.0 (#3445)
chore(deps-dev): bump @babel/preset-env from 7.18.10 to 7.19.0 (#3442)
chore(deps-dev): bump @typescript-eslint/parser from 5.36.1 to 5.37.0 (#3451)
chore(deps-dev): bump @babel/core from 7.18.13 to 7.19.0 (#3447)
chore(deps-dev): bump jest-environment-jsdom from 29.0.2 to 29.0.3 (#3441)
chore(deps-dev): bump babel-jest from 29.0.2 to 29.0.3 (#3448)
chore(deps-dev): bump eslint from 8.23.0 to 8.23.1
Release 9.1.7
Fix for broken rendering test
Fix for issue #3428, load the configured diagrams even when initialize has not been called.
* origin/release/9.1.7:
Release 9.1.7
Fix for broken rendering test
Fix for issue #3428, load the configured diagrams even when initialize has not been called.
I've removed the coverage upload bit, since although the
[@cypress/code-coverage][1] plugin is pretty easy to setup,
it requires babel, which we're about to remove and replace
with ESBuild.
Cypress v10 had some minor breaking changes,
(e.g. the cypress/plugins folder dissapeared)
so I had to change some things.
It looks like the Cypress was previously reverted in [dee9cfe][1],
due to applitools not working properly,
but I think my changes fix this, so it should be okay.
[1]: dee9cfea85
The if-check for arrowMarkerAbsolute in the flowchart-v2 code is in
dagre-wrapper. Unfortunately, I can't seem to find a way to find the
local conf (e.g. the one set via `flowRenderer.setConf()`, so instead
I'm using global mermaid config from `src/config`.
Flowchart v1 arrowMarkerAbsolute=true is still broken, but I'm not
really sure how to fix that.
gitGraph render tests are currently using random commit ids,
which causes visual regression tests to fail.
I couldn't find a way to make the random commit IDs consistent
(JavaScript/Cypress doesn't seem to have a random.seed() function),
so I've just hardcoded all the commit ids.
* develop: (40 commits)
chore(deps-dev): bump typescript from 4.8.2 to 4.8.3 (#3446)
chore(deps): bump actions/checkout from 2 to 3 (#3449)
change wording of console log message (use comma)
Moving out tests from mermaid.spec.js
Fix for issue with setting the loglevel via numbers
chore: update browsers list
Limiting the interaction between the mermaid diagram and Mermaid to the diagramAPI
Fix for broken tests
chore(docs): Remove edit this page
fix(git): support unusual prefixes in branch name
formatting
eslint fixes
Creating detectors and moving out diagram specific code from the diagramAPI
add eslint-disable no-console for file
fix: Run precommit hook for doc.mts changes too
chore: Updated doc files
fix: Formatting issue
(formatting only) sort imports just to force a new CI lint check
ci: re-enable coveralls coverage upload
build(dev-deps): remove unused `coveralls`
...
jison throws an error if a branch name starts with an unusual prefix.
For example, a branch named `branch/test-branch` will throw a
parse error, since jison thinks it's a `branch` command, and not
a branch id.
An easy fix is to use the `(?=\s|$)` regex to ensure that only
'branch ' or 'branch\n' will be parsed as the branch command.
Fixes: https://github.com/mermaid-js/mermaid/issues/3362
`mermaid.core.mjs` should be the default export.
This is because it does not bundle `node_modules/`, allowing users of
mermaid to bundle dependencies themselves,
using Webpack/ESBuild/others.
The `mermaid.core.js` build was previously a UMD build that did not
have `node_modules` bundled.
This was designed for users to add `mermaid` to their own apps,
then bundle with Webpack/ESBuild.
Hence the bundle test in `cypress/platform/bundle-test.js`.
As ESBuild does not support UMD, I've switched the `mermaid.core.js`
to instead use ESM, as Mermaid now requires ESM
(due to d3 requiring ESM). All modern bundlers also support ESM.
When converting a `.jison` file into a CommonJS module,
jison by default adds a main() function that calls `require("fs");`
Even though the main function is never used in the browser,
because `fs` is a Node.JS only module, this causes some esbuild issues.
To disable this, we can just set an empty main to the jison generator.
* develop: (67 commits)
fix: Tsconfig
Update prettier
chore: Run postbuild with prepare
(formatting) prettier fix
Removed warnings in the grammar oand some console logging
ci: lint .jison files for any console.log()
fix JSDOC @param, @returns; fixed a few minor typos in comments
unmangle sentence about doc changes committed and showing up on docsify site
change references from /docs to /src/docs; rework doc section in CONTRIBUTING
Update after lint comments
Regenerate the directive docs as I changed them
chore(deps-dev): bump typescript from 4.7.4 to 4.8.2
Update duplicate copy pasted directive description
chore(deps-dev): bump @types/dompurify from 2.3.3 to 2.3.4
chore(deps-dev): bump jest-environment-jsdom from 29.0.1 to 29.0.2
chore(deps-dev): bump babel-jest from 29.0.1 to 29.0.2
Lint fixes
Removing requirement to add ids for nodes with a shape
#3336 Merged typescript changes
Merged typescript changes
...
* develop: (22 commits)
fix: Tsconfig
ci: lint .jison files for any console.log()
refactor: remove `console.log` in c4Diagram.jison
style: forbid using `console` in mermaid src code
Add tests for other boundary properties
Add first test for Boundary
Test all different types of systems
Introduce shape list in test
Add tests for C4 System
Make test grouping more explicit
Copy tests from Person to PersonExt
Add test for link to Person_Ext
Add question on Person_Ext
Add test for structure of Person_Ext
Add test for alias
Add test for label
Add test for description
Add test for $tags
Add test for $link
Add test for $sprite
...
* develop: (22 commits)
fix: Tsconfig
ci: lint .jison files for any console.log()
refactor: remove `console.log` in c4Diagram.jison
style: forbid using `console` in mermaid src code
Add tests for other boundary properties
Add first test for Boundary
Test all different types of systems
Introduce shape list in test
Add tests for C4 System
Make test grouping more explicit
Copy tests from Person to PersonExt
Add test for link to Person_Ext
Add question on Person_Ext
Add test for structure of Person_Ext
Add test for alias
Add test for label
Add test for description
Add test for $tags
Add test for $link
Add test for $sprite
...
Reverts commits:
- Disabling coveralls temporarilly
aedf066337
- Tmo disabling of coveralls
a6b4cb24b8
I'm not 100% sure whether the `parallel` option is needed,
but I've left it disabled for now, since it'd would mean that we need
to merge both the `test.yml` and the `e2e.yml` file together.
Coverage for `.jison` files doesn't make sense, since most of the
created JS lines are auto-generated.
If jison ever adds a source-map feature, we can renable coverage for
jison.
* develop:
Update prettier
chore: Run postbuild with prepare
(formatting) prettier fix
Removed warnings in the grammar oand some console logging
unmangle sentence about doc changes committed and showing up on docsify site
change references from /docs to /src/docs; rework doc section in CONTRIBUTING
* develop: (37 commits)
fix JSDOC @param, @returns; fixed a few minor typos in comments
Update after lint comments
Regenerate the directive docs as I changed them
chore(deps-dev): bump typescript from 4.7.4 to 4.8.2
Update duplicate copy pasted directive description
chore(deps-dev): bump babel-jest from 29.0.1 to 29.0.2
Lint fixes
Removing requirement to add ids for nodes with a shape
Merged typescript changes
Updated with cloud and bang shapes
Adding cloud and bang shapes
fix(git): support numeric branch names
Fix for unit tests after refactoring
Documenting classes and icons
Startingpoint for the documentation
Some theming/styling fixes
Adding some rendering tests
...
* develop: (37 commits)
fix JSDOC @param, @returns; fixed a few minor typos in comments
Update after lint comments
Regenerate the directive docs as I changed them
chore(deps-dev): bump typescript from 4.7.4 to 4.8.2
Update duplicate copy pasted directive description
chore(deps-dev): bump babel-jest from 29.0.1 to 29.0.2
Lint fixes
Removing requirement to add ids for nodes with a shape
Merged typescript changes
Updated with cloud and bang shapes
Adding cloud and bang shapes
fix(git): support numeric branch names
Fix for unit tests after refactoring
Documenting classes and icons
Startingpoint for the documentation
Some theming/styling fixes
Adding some rendering tests
...
Converts the *.jison files into .js, then lints them using just
the `no-console` rule.
To keep things simple, I've just made this run only on CI.
If we want to do more complex linting on `*.jison` files, it might
be worth making an `eslint-plugin-jison`, so that we can directly
parse jison in ESLint.
* develop: (50 commits)
Build docs
chore: update browsers list
Fix pre
Fix mermaid code formatting in html
Prettier pass
Fix XSS htmls
fix#3407 Replace `div` with `pre` and format
Add change in `src/docs`
Fix lint issue
build: run `build:prod` on `yarn prepare`
Build documentation
Fix typo
Fix typo in documentation
Fix doc
Add files only when running from lint-staged
Add files only when running from lint-staged
Fix configuration doc
Prettier Pass
Add dotfiles
Prettier
...
* develop: (50 commits)
Build docs
chore: update browsers list
Fix pre
Fix mermaid code formatting in html
Prettier pass
Fix XSS htmls
fix#3407 Replace `div` with `pre` and format
Add change in `src/docs`
Fix lint issue
build: run `build:prod` on `yarn prepare`
Build documentation
Fix typo
Fix typo in documentation
Fix doc
Add files only when running from lint-staged
Add files only when running from lint-staged
Fix configuration doc
Prettier Pass
Add dotfiles
Prettier
...
Adds an eslint rule forbidding using `console` in the mermaid source
code. Instead, the `src/logger` should be used instead, so that
websites can disable logging.
This is allowed in the `cypress/` and `demos/` folder.
I've also removed the two instances on `console.log`/`console.error`
that currently exist in the mermaid source code.
Adds `yarn build:prod` to the `yarn prepare` script.
For most package managers (e.g. yarn v1 and NPM),
the `prepare` script is called automatically when installing
from a local location/git url. It's not called when installing
from NPM.
This is required because the source code doesn't contain
the `dist/mermaid.min.js` file, it has to be built first.
Fixes installing mermaid via `git`, e.g.:
`yarn add git+https://github.com/mermaid-js/mermaid.git`
Fixes: 1549eb20df
Passing a single Node to mermaid.init() results in an error, as it
calls `new NodeList()`, which causes `TypeError: Illegal constructor`.
See 5597cf45bf/src/mermaid.ts (L73)
If we instead use the `ArrayLike` interface, we can just use a simple
array, instead of a NodeList.
I've also added a basic test case, by mocking the `mermaidAPI.render()`
function so it isn't called, as the d3 functions don't work in Node.JS.
The mocks are a bit messy, since
a) Jest doesn't fully support ESM yet, and
b) mermaidAPI is frozen with `Object.freeze()`,
but the mermaidAPI mocks work as long as we keep them simple.
Fixes: c68ec54fdd
gitGraph does not support branch names that start with a number,
because the gitGraph.jison file parses these as NUM (number) instead.
To fix this, I've changed the NUM parser to only accept strings that
end with whitespace (e.g 1234 is a NUM, but 1234abc is not a NUM).
To do this, I had to move the "skip all whitespace" step to the
end of the parser, but this doesn't seem to have caused any issues,
so it's probably fine.
* develop: (50 commits)
Typo fix
Fix repo URL
Revert flowchart change
Revert flowchart change
Fix TODO Qs
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
Update dependabot.yml
Replacing replaceAll with replace
Rework 'parseDuration' as a pure duration parsing
Supports duration in decimal
Create a more consistent 'parseDuration'
Remove `@ts-ignore`s.
Fix svgDraw return types
...
* 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
* develop:
chore(deps-dev): bump @commitlint/cli from 17.0.3 to 17.1.1 (#3376)
chore(deps-dev): bump eslint from 8.22.0 to 8.23.0 (#3378)
chore(deps): bump dompurify from 2.3.10 to 2.4.0 (#3375)
chore(deps-dev): bump @commitlint/config-conventional (#3370)
chore(deps-dev): bump @babel/core from 7.18.10 to 7.18.13 (#3373)
chore(deps-dev): bump eslint-plugin-jest from 26.8.7 to 27.0.1 (#3372)
chore(deps-dev): bump jest-environment-jsdom from 28.1.3 to 29.0.1 (#3369)
chore(deps-dev): bump babel-jest from 28.1.3 to 29.0.1 (#3368)
Updating docs to latest mermaid version
build: add eslint --cache file
Adjusting size and test
Updated viewBox settings
Border
feat(git): allow custom merge commit ids
Document line curve options
Added 'ms' duration
Fix font weight for messages in sequence diagrams
Added lollipop feature for updated codebase
Currently, doing a `git commit` is a bit low, as eslint runs before
the commit.
Adding an `eslint --cache` makes it slightly faster.
On my PC, `git commit` currently is `Done in 12.24s.`
However, after adding this cache file, it is `Done in 7.54s.`,
so about 1.6x faster.
Currently, merge commits can have a git tag, but they cannot have a
custom git commit ID.
This commit allows modifying the default merge commit id.
It also displays all merge commits IDs, which undoes
3ccf027f42
* develop: (22 commits)
Fix for build by revering jsdoc
Revert "chore(deps-dev): bump documentation from 13.2.0 to 14.0.0"
Review comments.
Add test for handling parameter names that are "default"
Add test for handling parameter names that are keywords
Add test for handling trailing whitespaces
Add first C4 parser test
chore(deps-dev): bump eslint-plugin-jest from 26.8.2 to 26.8.7
chore(deps-dev): bump documentation from 13.2.0 to 14.0.0
chore(deps-dev): bump terser-webpack-plugin from 5.3.4 to 5.3.5
chore(deps-dev): bump prettier-plugin-jsdoc from 0.3.38 to 0.4.1
test(e2e): add array and generic attributes erDiagram test
test(common): add generic parser test
test(parser): add tests for generics and arrays in erDiagram
feat: add array and generic symbols for erDiagram
Lint markdown
Fix prettier formatting in vscode
Prettier
Fix `securityLevel` docs
Update README.md
...
Replaced "JavaScript based" with "JavaScript-based" in the following sentence: "Mermaid is a JavaScript based diagramming and charting tool that uses Markdown-inspired text definitions and a renderer to create and modify complex diagrams."
Please refer our [Security Policy](https://github.com/mermaid-js/.github/blob/main/SECURITY.md) and report to keep vulnerabilities confidential so we can release fixes first.
## Before you submit...
We like to help you, but in order to do that should you make a few things first:
- Use a clear and concise title
- Fill out the text fields with as much detail as possible.
- Never be shy to give us screenshots and/or code samples. It will help!
- type:textarea
attributes:
label:Description
description:Give a clear and concise description of what the bug is.
placeholder:When I do ... does ... happen.
validations:
required:true
- type:textarea
attributes:
label:Steps to reproduce
description:Give a step-by-step example on how to reproduce the bug.
placeholder:|-
1. Do this
2. Do that
3. ...
4. Bug!
validations:
required:true
- type:textarea
attributes:
label:Screenshots
description:If applicable, add screenshots to help explain your issue.
- type:textarea
attributes:
label:Code Sample
description:|-
If applicable, add the code sample or a link to the [Live Editor](https://mermaid.live).
Any text pasted here will be rendered as a Code block.
render:text
- type:textarea
attributes:
label:Setup
description:|-
Please fill out the below info.
Note that you only need to fill out one and not both sections.
- wip: class diagram cardinality display [\#705](https://github.com/knsv/mermaid/pull/705) ([Vrixyz](https://github.com/Vrixyz))
- wip: class diagram cardinality display [\#705](https://github.com/knsv/mermaid/pull/705) ([Vrixyz](https://github.com/Vrixyz))
- add comments about CSS in config [\#688](https://github.com/knsv/mermaid/pull/688) ([imma90](https://github.com/imma90))
- SequenceDiagram: Add support for multiple alt else statements [\#641](https://github.com/knsv/mermaid/pull/641) ([sechel](https://github.com/sechel))
- fix \#426 - add class .clickable on nodes with click function or link [\#598](https://github.com/knsv/mermaid/pull/598) ([thomasleveil](https://github.com/thomasleveil))
- Uses an empty text node instead of a string for svg group labels [\#429](https://github.com/knsv/mermaid/pull/429) ([daveaglick](https://github.com/daveaglick))
- use tspan via d3.textwrap to place actor text in sequence diagram [\#427](https://github.com/knsv/mermaid/pull/427) ([whyzdev](https://github.com/whyzdev))
- \#422 use foreignObject/div to place actor label in sequence diagram [\#423](https://github.com/knsv/mermaid/pull/423) ([whyzdev](https://github.com/whyzdev))
- \#422 use foreignObject/div to place actor label in sequence diagram [\#423](https://github.com/knsv/mermaid/pull/423) ([whyzdev](https://github.com/whyzdev))
- Clarify the need for a CSS stylesheet [\#413](https://github.com/knsv/mermaid/pull/413) ([sifb](https://github.com/sifb))
- Ignore all files except the license and dist/ folder when installing with Bower. [\#112](https://github.com/knsv/mermaid/pull/112) ([jasonbellamy](https://github.com/jasonbellamy))
- New grammar will allow statements ending without semicolon as disccused in Issue \#38 [\#63](https://github.com/knsv/mermaid/pull/63) ([vijay40](https://github.com/vijay40))
- Class based styling [\#62](https://github.com/knsv/mermaid/pull/62) ([bjowes](https://github.com/bjowes))
# npx is required for first install as volta support for pnpm is not added yet.
npx pnpm install
pnpm test
```
## Committing code
We make all changes via pull requests. As we have many pull requests from developers new to mermaid, the current approach is to have *knsv, Knut Sveidqvist* as a main reviewer of changes and merging pull requests. More precisely like this:
We make all changes via pull requests. As we have many pull requests from developers new to mermaid, the current approach is to have _knsv, Knut Sveidqvist_ as a main reviewer of changes and merging pull requests. More precisely like this:
* Large changes reviewed by knsv or other developer asked to review by knsv
* Smaller low-risk changes like dependencies, documentation etc can be merged by active collaborators
*documentation (updates to the docs folder is also allowed via direct commits)
- Large changes reviewed by knsv or other developer asked to review by knsv
- Smaller low-risk changes like dependencies, documentation, etc. can be merged by active collaborators
-Documentation (updates to the `src/docs` folder is also allowed via direct commits)
To commit code, create a branch, let it start with the type like feature or bug followed by the issue number for reference and some describing text.
@@ -36,12 +48,28 @@ Another:
Less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator.
The documentation is located in the `docs` directory and published using GitHub Pages.
The documentation site is powered by [Docsify](https://docsify.js.org), a simple documentation site generator.
The documentation is written in **Markdown**. For more information about Markdown [see the GitHub Markdown help page](https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax).
The documentation is written in Markdown, for more information about Markdown [see the GitHub Markdown help page](https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax).
### Documentation source files are in [`/packages/mermaid/src/docs`](packages/mermaid/src/docs)
If you want to preview the documentation site on your machine, you need to install `docsify-cli`:
The source files for the project documentation are located in the [`/packages/mermaid/src/docs`](packages/mermaid/src/docs) directory. This is where you should make changes.
The files under `/packages/mermaid/src/docs` are processed to generate the published documentation, and the resulting files are put into the `/docs` directory.
source["files in /packages/mermaid/src/docs\n(changes should be done here)"] -- automatic processing\nto generate the final documentation--> published["files in /docs\ndisplayed on the official documentation site"]
```
**_DO NOT CHANGE FILES IN `/docs`_**
### The official documentation site
**[The mermaid documentation site](https://mermaid-js.github.io/mermaid/) is powered by [Docsify](https://docsify.js.org), a simple documentation site generator.**
If you want to preview the whole documentation site on your machine, you need to install `docsify-cli`:
```sh
$ npm i docsify-cli -g
@@ -86,17 +114,18 @@ This is important so that, if someone else does a change to the grammar that doe
This tests the rendering and visual appearance of the diagram. This ensures that the rendering of that feature in the e2e will be reviewed in the release process going forward. Less chance that it breaks!
To start working with the e2e tests, run `yarn dev` to start the dev server, after that start cypress by running `cypress open` in the mermaid folder. (Make sure you have path to cypress in order, the binary is located in node_modules/.bin).
To start working with the e2e tests, run `pnpm run dev` to start the dev server, after that start cypress by running `pnpm exec cypress open` in the mermaid folder.
The rendering tests are very straightforward to create. There is a function imgSnapshotTest. This function takes a diagram in text form, the mermaid options and renders that diagram in cypress.
When running in ci it will take a snapshot of the rendered diagram and compare it with the snapshot from last build and flag for review it if it differs.
This is what a rendering test looks like:
```javascript
it('should render forks and joins', () => {
imgSnapshotTest(
`
it('should render forks and joins',()=>{
imgSnapshotTest(
`
stateDiagram
state fork_state <<fork>>
[*] --> fork_state
@@ -109,20 +138,23 @@ This is what a rendering test looks like:
join_state --> State4
State4 --> [*]
`,
{ logLevel: 0 }
);
cy.get('svg');
});
```
{ logLevel:0}
);
cy.get('svg');
});
```
### **Add documentation for it**
Finally, if it is not in the documentation, no one will know about it and then **no one will use it**. Wouldn't that be sad? With all the effort that was put into the feature?
The docs are located in the docs folder and are ofc written in markdown. Just pick the right section and start typing. If you want to add to the structure as in adding a new section and new file you do that via the _navbar.md.
The source files for documentation are in `/packages/mermaid/src/docs` and are written in markdown. Just pick the right section and start typing. See the [Committing Documentation](#committing-documentation) section for more about how the documentation is generated.
The changes in master is reflected in https://mermaid-js.github.io/mermaid/ once released the updates are committed to https://mermaid-js.github.io/#/
#### Adding to or changing the documentation organization
If you want to add a new section or change the organization (structure), then you need to make sure to **change the side navigation** in `src/docs/_sidebar.md`.
When changes are committed and then released, they become part of the `master` branch and become part of the published documentation on https://mermaid-js.github.io/mermaid/
## Last words
@@ -130,5 +162,4 @@ Don't get daunted if it is hard in the beginning. We have a great community with
[Join our slack community if you want closer contact!](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE)

We are transforming the Mermaid repository to a so called mono-repo. This is a part of the effort to decouple the diagrams from the core of mermaid. This will:
- Make it possible to select which diagrams to include on your site
- Open up for lazy loading
- Make it possible to add diagrams from outside of the Mermaid repository
- Separate the release flow between different diagrams and the Mermaid core
As such be aware of some changes..
# We use pnpm now
# The source code has moved
It is now located in the src folder for each respective package located as subfolders in packages.
English | [简体中文](./README.zh-CN.md)
@@ -6,8 +25,6 @@ English | [简体中文](./README.zh-CN.md)
:trophy: **Mermaid was nominated and won the [JS Open Source Awards (2019)](https://osawards.com/javascript/2019) in the category "The most exciting use of technology"!!!**
**Thanks to all involved, people committing pull requests, people answering questions! 🙏**
<ahref="https://mermaid-js.github.io/mermaid/landing/"><imgsrc="https://github.com/mermaid-js/mermaid/blob/master/docs/img/book-banner-post-release.jpg"alt="Explore Mermaid.js in depth, with real-world examples, tips & tricks from the creator... The first official book on Mermaid is available for purchase. Check it out!"></a>
@@ -15,40 +32,38 @@ English | [简体中文](./README.zh-CN.md)
## About
<!-- <Main description> -->
Mermaid is a JavaScript based diagramming and charting tool that uses Markdown-inspired text definitions and a renderer to create and modify complex diagrams. The main purpose of Mermaid is to help documentation catch up with development.
Mermaid is a JavaScript-based diagramming and charting tool that uses Markdown-inspired text definitions and a renderer to create and modify complex diagrams. The main purpose of Mermaid is to help documentation catch up with development.
> Doc-Rot is a Catch-22 that Mermaid helps to solve.
Diagramming and documentation costs precious developer time and gets outdated quickly.
But not having diagrams or docs ruins productivity and hurts organizational learning.<br/>
Mermaid addresses this problem by enabling users to create easily modifiable diagrams, it can also be made part of production scripts (and other pieces of code).<br/>
<br/>
Mermaid addresses this problem by enabling users to create easily modifiable diagrams. It can also be made part of production scripts (and other pieces of code).<br/>
<br/>
Mermaid allows even non-programmers to easily create detailed diagrams through the [Mermaid Live Editor](https://mermaid.live/).<br/>
[Tutorials](./docs/Tutorials.md) has video tutorials.
Use Mermaid with your favorite applications, check out the list of [Integrations and Usages of Mermaid](./docs/integrations.md).
You can also use Mermaid within [GitHub](https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/) as well many of your other favorite applications, check out the list of [Integrations and Usages of Mermaid](./docs/integrations.md).
You can also use Mermaid within [GitHub](https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/) as well many of your other favorite applications—check out the list of [Integrations and Usages of Mermaid](./docs/integrations.md).
For a more detailed introduction to Mermaid and some of its more basic uses, look to the [Beginner's Guide](./docs/n00b-overview.md), [Usage](./docs/usage.md) and [Tutorials](./docs/Tutorials.md).
In our release process we rely heavily on visual regression tests using [applitools](https://applitools.com/). Applitools is a great service which has been easy to use and integrate with our tests.
__The following are some examples of the diagrams, charts and graphs that can be made using Mermaid. Click here jump into the [text syntax](https://mermaid-js.github.io/mermaid/#/n00b-syntaxReference).__
**The following are some examples of the diagrams, charts and graphs that can be made using Mermaid. Click here to jump into the [text syntax](https://mermaid-js.github.io/mermaid/#/n00b-syntaxReference).**
title System Context diagram for Internet Banking System
@@ -316,23 +340,24 @@ Detailed information about how to contribute can be found in the [contribution g
## Security and safe diagrams
For public sites, it can be precarious to retrieve text from users on the internet, storing that content for presentation in a browser at a later stage. The reason is that the user content can contain embedded malicious scripts that will run when the data is presented. For Mermaid this is a risk, specially as mermaid diagrams contain many characters that are used in html which makes the standard sanitation unusable as it also breaks the diagrams. We still make an effort to sanitise the incoming code and keep refining the process but it is hard to guarantee that there are no loop holes.
For public sites, it can be precarious to retrieve text from users on the internet, storing that content for presentation in a browser at a later stage. The reason is that the user content can contain embedded malicious scripts that will run when the data is presented. For Mermaid this is a risk, specially as mermaid diagrams contain many characters that are used in html which makes the standard sanitation unusable as it also breaks the diagrams. We still make an effort to sanitise the incoming code and keep refining the process but it is hard to guarantee that there are no loop holes.
As an extra level of security for sites with external users we are happy to introduce a new security level in which the diagram is rendered in a sandboxed iframe preventing javascript in the code from being executed. This is a great step forward for better security.
As an extra level of security for sites with external users we are happy to introduce a new security level in which the diagram is rendered in a sandboxed iframe preventing javascript in the code from being executed. This is a great step forward for better security.
*Unfortunately you can not have a cake and eat it at the same time which in this case means that some of the interactive functionality gets blocked along with the possible malicious code.*
_Unfortunately you can not have a cake and eat it at the same time which in this case means that some of the interactive functionality gets blocked along with the possible malicious code._
## Reporting vulnerabilities
To report a vulnerability, please e-mail security@mermaid.live with a description of the issue, the steps you took to create the issue, affected versions, and if known, mitigations for the issue.
## Appreciation
A quick note from Knut Sveidqvist:
>*Many thanks to the [d3](https://d3js.org/) and [dagre-d3](https://github.com/cpettitt/dagre-d3) projects for providing the graphical layout and drawing libraries!*
>*Thanks also to the [js-sequence-diagram](https://bramp.github.io/js-sequence-diagrams) project for usage of the grammar for the sequence diagrams. Thanks to Jessica Peter for inspiration and starting point for gantt rendering.*
>*Thank you to [Tyler Long](https://github.com/tylerlong) who has been a collaborator since April 2017.*
> _Many thanks to the [d3](https://d3js.org/) and [dagre-d3](https://github.com/cpettitt/dagre-d3) projects for providing the graphical layout and drawing libraries!_ >_Thanks also to the [js-sequence-diagram](https://bramp.github.io/js-sequence-diagrams) project for usage of the grammar for the sequence diagrams. Thanks to Jessica Peter for inspiration and starting point for gantt rendering._ >_Thank you to [Tyler Long](https://github.com/tylerlong) who has been a collaborator since April 2017._
>
>*Thank you to the ever-growing list of [contributors](https://github.com/knsv/mermaid/graphs/contributors) that brought the project this far!*
> _Thank you to the ever-growing list of [contributors](https://github.com/knsv/mermaid/graphs/contributors) that brought the project this far!_
---
*Mermaid was created by Knut Sveidqvist for easier documentation.*
_Mermaid was created by Knut Sveidqvist for easier documentation._
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.