Skip to content

Dependencies

Frédéric Jouault edited this page Dec 22, 2022 · 9 revisions

AnimUML can be used on the Web, or with Node.js. This page lists the dependencies for both cases.

When using AnimUML on the Web

  • most runtime dependencies are placed in the lib folder
    • instead of loading them from a CDN
    • so that using a locally deployed AnimUML server does not require internet access
  • JavaScript dependencies are the following:
    • Pako: pako.min.js (or compression-only pako_deflate.min.js)
      • compression
        • to generate PlantUML URIs
        • to create tar.gz archives
          • e.g., for the output of the C code generator
      • compression+decompression
        • for experiments with configuration compression/decompression, as memory optimization
    • PEG.js: peg-0.10.0.min.js
      • to generate parsers from grammars
      • currently used at runtime
    • Cassowary/JS: c.js:
      • For ATLc constraints used in diagrams
    • param.js from SVG Parameters 1.0, Part 1: Primer, with a few changes
    • <zero-md>: zero-md.min.js
      • along with its dependencies: marked.min.js, prism.min.js, and webcomponents-loader.min.js
      • for Markdown-based documents, such as doc.html / doc.md
  • Docker image dependencies are the following:
    • traefik
      • to route requests to corresponding services
    • plantuml
      • to generate PlantUML diagrams without overloading the public server
      • a custom docker image is used to work around issues with the latest official images
    • nginx
      • to serve static files (e.g., HTML, JavaScript)
    • spot
      • to generate state diagrams from LTL expressions

Remark: docker compose, which depends on Docker is used to deploy AnimUML servers.

When using AnimUML with Node.js

All JavaScript dependencies used on the Web are also used with Node.js, except <zero-md> and its dependencies.

  • it is only used in command-line and/or headless usage scenarios
    • tests
    • exploration
    • command line tools
      • e.g., to automatically extract figures from a model
  • Node.js-specific dependencies are npm-based
    • defined in package.json
    • installable with npm install
    • for runtime
      • subtle
        • an implementation of the web browser crypto API for Node.js
        • used to hash configurations
      • websocket
        • an implementation of the WebSocket browser API for Node.js
        • used to connect to either of
          • remote analysis tools (e.g., OBP)
          • remote engines (e.g., the EMI/UML bare-metal UML interpreter)
          • controllable generated C code
    • for development
      • webpack & Babel modules
      • nyc, istanbul & mocha
      • svgdom
        • used to simulate an SVG context in Node.js
          • so that ATLc-based diagrams can be generated during tests
      • dotenv
        • used to configure tests using a local .env file
      • node-fetch
        • an implementation of the web browser fetch API for Node.js
      • grammkit
        • PEG.js to railroad diagrams, used to generate diagrams for the documentation

Clone this wiki locally