Skip to content

Documentation / @facturometro/einvoice / defineRuleset

Function: defineRuleset() ​

defineRuleset(definition): Ruleset

Defined in: packages/validator/src/rulesets/define.ts:193

Defines a ruleset constant.

The definition is checked for a rule id that appears twice and frozen; everything that involves other rulesets - requires, disable, override, duplicate ids across constants - is checked when a composition is compiled, that is on the first validate() with it or on registerRuleset(). See the design's "Rulesets & extension API" for the full semantics.

Parameters ​

definition ​

RulesetDefinition

The definition.

Returns ​

Ruleset

The frozen ruleset.

Throws ​

When a rule id appears twice in rules.

Example ​

ts
import { defineRuleset, en16931Ruleset, peppolRuleset, rule, validate } from '@facturometro/validator';

const acme = defineRuleset({
  id: 'acme',
  version: '1.0.0',
  requires: [peppolRuleset],
  rules: [
    rule.custom('ACME-R-001', {
      at: 'document',
      message: 'A purchase order reference is required.',
      severity: 'fatal',
      test: (document) => document.orderReference?.id !== undefined,
    }),
  ],
  disable: ['PEPPOL-EN16931-R003'],
  override: { 'BR-52': { severity: 'warning' } },
});

validate(invoice, { ruleset: [en16931Ruleset, peppolRuleset, acme] });

MIT licensed. Specification artefacts belong to OpenPEPPOL, CEN and OASIS.