Alois Klink f12df395f8 build(types): disable preserveSymlinks in tsconfig
PNPM uses symlinks by default for `node_modules`
(see the [`node-linker`][1] options), which doesn't work with
[TypeScript's `preserveSymlinks: true`][2] setting.

This meant that the `d3-transition` types were not applying properly in
our code.

[1]: https://pnpm.io/npmrc#node-linker
[2]: https://www.typescriptlang.org/tsconfig/#preserveSymlinks
2024-09-17 20:59:38 +09:00
..
2024-08-29 13:56:43 +05:30
2024-09-02 21:04:34 +05:30
2024-08-28 14:50:31 +02:00
2024-09-02 15:16:23 +00:00

Mermaid Parser

Mermaid parser package

NPM

How the package works

The package exports a parse function that has two parameters:

declare function parse<T extends DiagramAST>(
  diagramType: keyof typeof initializers,
  text: string
): T;

How does a Langium-based parser work?

sequenceDiagram
actor Package
participant Module
participant TokenBuilder
participant Lexer
participant Parser
participant ValueConverter


Package ->> Module: Create services
Module ->> TokenBuilder: Override or/and<br>reorder rules
TokenBuilder ->> Lexer: Read the string and transform<br>it into a token stream
Lexer ->> Parser: Parse token<br>stream into AST
Parser ->> ValueConverter: Clean/modify tokenized<br>rules returned value
ValueConverter -->> Package: Return AST
  • When to override TokenBuilder?

    • To override keyword rules.
    • To override terminal rules that need a custom function.
    • To manually reorder the list of rules.
  • When to override Lexer?

    • To modify input before tokenizing.
    • To insert/modify tokens that cannot or have not been parsed.
  • When to override LangiumParser?

    • To insert or modify attributes that can't be parsed.
  • When to override ValueConverter?

    • To modify the returned value from the parser.