@lxcat/schema v0.1.0
@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/schemaUsage
To get Typescript type for a LXCat Cross Section Set
import type { CrossSectionSetRaw } from '@lxcat/schema/dist/css/inputTo 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/schemaGenerate JSON schemas
The JSON schemas (src/**/*.schema.json files) can be generated with
npm run jsonWhenever 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 srcA 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.jsonwithnpm 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 lxcatand optionally login in withnpm login --scope lxcat --publish - Make sure
npm run devis 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
3 years ago