@lxcat/schema
Package with JSON schemas, validator and Typescript types of LXCat documents.
LXCat is an open-access website for collecting, displaying, and downloading electron and ion scattering cross sections for modeling low temperature plasmas.
The validation is multi-step, first the input is checked against a JSON schema and then the quantum numbers of the members of the input reactions are checked.
Installation
npm install @lxcat/schema
Usage
To get Typescript type for a LXCat Cross Section Set
import type { CrossSectionSetRaw } from '@lxcat/schema/dist/css/input
To get JSON schema for a LXCat Cross Section Set
import schema from "@lxcat/schema/dist/css/CrossSectionSetRaw.schema.json";
(your tsconfig should be confgured for JSON imports)
To validate a LXCat Cross Section Set document
import { Validator } from '@lxcat/schema/dist/css/validate'
const validator = new Validator()
// Some JSON document to validate
const doc = ...
if (validator.validate(doc)) {
// is valid
// doc is now of type CrossSectionSetRaw which can be imported with
} else {
console.log(validator.errors)
// List of validation errors in format of https://ajv.js.org/api.html#validation-errors
}
Contributing
Install dependencies
cd ../..
npm run install -w packages/schema
cd packages/schema
Generate JSON schemas
The JSON schemas (src/**/*.schema.json
files) can be generated with
npm run json
Whenever the types from which the schemas are derived are changed then this command should be run.
Tests
See code contributor doc.
API documentation
API documentation can be generated using typedoc with
npx typedoc --entryPointStrategy expand src
A docs/index.html
should have been written.
Publishing
To publish @lxcat/schema
to npmjs.com perform the following steps:
- Set version in
packages/schema/package.json
withnpm workspace @lxcat/schema version <patch|minor|major>
- Commit and push changes to main branch
- Change to
packages/schema/
directory - Make sure you are logged in on npm by checking with
npm whoami --scope lxcat
and optionally login in withnpm login --scope lxcat --publish
- Make sure
npm run dev
is not running - Clean dist/ with
npm run clean
- Publish with
npm publish --otp <otp code>
- Create git tag for version with
git tag @lxcat/schema@<value at packages/schema/package.json:version>
andgit push origin --tags