# @open-cyber-range/wasm-sdl-parser

> Parser library for Scenario Defined Language (SDL)

Latest version **0.21.2** (published 2024-12-20) · MIT license · 0 weekly downloads

## Install

```sh
npm install @open-cyber-range/wasm-sdl-parser
pnpm add @open-cyber-range/wasm-sdl-parser
yarn add @open-cyber-range/wasm-sdl-parser
bun add @open-cyber-range/wasm-sdl-parser
```

## Health

**Score 35/100 (D)** — status: maintenance-mode.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads; pre 1.0.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.21.2 |
| Published | 2024-12-20 |
| First published | 2023-07-12 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 1.8 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | m.antson, kristireispass |

## Links

- npm: https://www.npmjs.com/package/@open-cyber-range/wasm-sdl-parser
- npm.io page: https://npm.io/package/@open-cyber-range/wasm-sdl-parser

## Recent versions

- 0.21.2 (latest) — 2024-12-20
- 0.21.1 — 2024-12-19
- 0.21.0 — 2024-02-29
- 0.20.0 — 2024-01-25
- 0.19.0 — 2023-11-07
- 0.18.0 — 2023-11-03
- 0.17.0 — 2023-11-03
- 0.16.0 — 2023-10-23
- 0.15.0 — 2023-10-03
- 0.14.0 — 2023-09-27
- 0.1.5 — 2023-07-12

## README

<a href="https://cr14.ee">
    <img src="assets/logos/CR14-logo.svg" alt="CR14 Logo" width="100" height="100">
</a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://eas.ee">
    <img src="assets/logos/eas-logo.svg" alt="EAS Logo" width="100" height="100">
</a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://taltech.ee">
    <img src="assets/logos/Taltech-logo.svg" alt="Taltech Logo" width="100" height="100">
</a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://eeagrants.org">
    <img src="assets/logos/ng.png" alt="NG Logo" width="100" height="100">
</a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://ntnu.edu">
    <img src="assets/logos/NTNU-logo.svg" alt="NTNU Logo" width="100" height="100">
</a>

# SDL Verifier WebAssembly

This Rust-based WebAssembly library provides a simple function to verify SDL (Schema Definition Language) text using the provided `Scenario` parsing and verification code. It is intended to be used in web applications for efficient client-side SDL validation.

## Features

- Validates SDL text using a Rust-based custom `Scenario` parser.
- Exposes a WebAssembly function for use in web applications.
- Optimized for small binary size and fast execution.

## Prerequisites

- [Rust](https://www.rust-lang.org/tools/install) (latest stable version)
- [wasm-pack](https://rustwasm.github.io/wasm-pack/installer/) (latest version)

## Usage

1. Clone this repository:

    ```sh
    git clone <https://github.com/Open-Cyber-Range/SDL-parser.git>
    cd wasm-sdl-parser
    ```

2. Build the project and generate the WebAssembly binary:

    ```sh
    wasm-pack build --target web --release
    ```

    This will create a `pkg` directory containing the WebAssembly binary and a JavaScript wrapper for the `parse_and_verify_sdl` function.

3. Integrate the generated files into your web application:

    ```html
    <script type="module">
    import init, { parse_and_verify_sdl } from './pkg/wasm-sdl-parser.js';

    async function main() {
        await init(); // Initialize the WebAssembly module

        const sdl_text = `
            name: test-scenario
            description: some-description
            start: 2022-01-20T13:00:00Z
            end: 2022-01-20T23:00:00Z
        `;

        try {
            const scenario_json = parse_and_verify_sdl(sdl_text);
            console.log(scenario_json);
        } catch (error) {
            console.log(error)
        }
    }

    main();
    </script>
    ```

    Replace the `sdl_text` variable with the SDL text you want to verify.

## Customization

If you need to customize the SDL validation logic, modify the `parse_and_verify_sdl` function in src/lib.rs.

## License

This project is licensed under the MIT License.

---
_Source: https://npm.io/package/@open-cyber-range/wasm-sdl-parser · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
