@lzcontest/contest-authoring
v0.1.3
Published
Inference-preserving authoring constructors for typed amateur-radio contests.
Maintainers
Readme
@lzcontest/contest-authoring
Inference-preserving constructors for typed amateur-radio contest contracts.
Install
npm install @lzcontest/contest-authoringDefine typed building blocks
import {
categories,
contestReference,
enumCategory,
exchange,
signalReportField,
} from '@lzcontest/contest-authoring';
const reference = contestReference('example-dx', '1.0.0');
const category = categories({
power: enumCategory('Power', {
HIGH: 'High',
LOW: 'Low',
}),
});
const sent = exchange({
rst: signalReportField({
label: 'RST',
allowedLengths: [2, 3],
}),
});category.id, category.value, and sent.field retain literal keys for later contract authoring.
Core API
| Export | Purpose |
| --- | --- |
| contestReference | Create an exact contest ID and ruleset reference |
| defineContestContract | Materialize and validate a typed contract |
| categories | Preserve category IDs and value references |
| exchange | Preserve sent and received field IDs |
| enumCategory, integerCategory | Define category dimensions |
| signalReportField, serialField, uppercaseTokenField | Define exchange fields |
| dupePolicy, progressiveSerialPolicy, multipliers | Define scoring policies |
| datasetRequirement | Declare a reference dataset dependency |
