BetaThe primitive definition.
The same primitive, unchanged.
import { definePrimitive } from '@limetech/lime-web-components';
type OlderThanArgs = { days: number };
const olderThan = definePrimitive({
id: 'limetech.older-than',
reads: ['limeobject'],
build:
({ days }: OlderThanArgs) =>
(scope) => {
// @ts-expect-error 'user' is not listed in reads
scope.get('user');
return scope.get('limeobject') !== undefined && days > 0;
},
});
Identity helper for declaring a primitive. Returns its argument unchanged.
The helper exists so TypeScript can infer
TArgsfrom the annotation onbuild's parameter, andTReadsfrom thereadstuple. Without it, the args shape must either be repeated as a variable type annotation, orTArgsfalls back to itsunknowndefault, discarding the args type at every downstream call site.Inferring
TReadsalso narrows the predicate's scope.get, so reading a key that is not listed inreadsis a compile error.Does not validate the
idnamespace, that check happens at runtime inside RuleRegistry.register.