open-index/open-npm huggingface dataset:
npm package: @pasqal-io/pulser-schema
Description: Schema definitions and validation utils for the Pulser sequence format. See https://github.com/pasqal-io/Pulser
Latest version: 1.3.2

# Pulser schema

Schema for the serialization of Pulser objects into the abstract representation.

This project uses TypeScript type definition as a main definition file. The JSON schema files are automatically generated from it.

## Build automation and verification

The JSON schema files are generated and verified automatically on every push to the repository.

In order to download the latest version of the generated schema files, open [latest run from `main` branch](https://gitlab.pasqal.com/quantum-libs/pulser-schema/-/pipelines?page=1&scope=all&ref=main) and download the produced schema artifacts.

## Dependencies

This project uses node dependencies in order to generate the schema files. In order to run the codegen scripts, the project must be installed.
This process is only required if you intend to build or verify the schemas locally.

```js
npm install
```

## Code generation

Sequence and Device schemas are created as Typescript type definitions. To generate both JSON schemas, run `npm run codegen`.

## Javascript validator

This project can be used to generate a Pulser Sequence validator for JS/TS applications. This validator is currently used by [Pulser Studio](https://gitlab.pasqal.com/software/sw-platform/pulser-studio) to validate and parse sequences.

### Validator generation

The validator is not part of the source code, it's generated by the [AJV](https://ajv.js.org/) tool, using schema definitions.

It can be built with the following commands:

```bash
# make sure JSON schemas are built
npm run codegen
# generate schemaValidator.js + Typescript defs in /build
npm run gen-standalone-validator
```

### NPM package update process

The validator is part of this project when published as [@pasqal-io/pulser-schema](https://www.npmjs.com/package/@pasqal-io/pulser-schema) on NPM. It's automatically regenerated on publish, thanks to the `prepare` script.

So, after Pulser schema changes are merged, the NPM package needs to be updated to keep the validator up-to-date.

1. Update the package version:
```bash
npm version <new version> -m "NPM package version: <new version>"
```
This will bump the version number in `package.json` and create a commit with the provided message.

2. Publish the new version to NPM (you must be a member of the [Pasqal-io](https://www.npmjs.com/org/pasqal-io) organization):
```bash
npm publish --access public
```
3. If publish went right, open an MR to merge this version bump.
4. Update the version of the `@pasqal-io/pulser-schema` package in projects having it as a dependency