UNPKG

depends-txt

Version:
89 lines (88 loc) 2.94 kB
import type { Literal, Position } from 'unist'; import type { Token } from './tokenize.js'; export declare const Event: { readonly Name: "Name"; readonly Directive: "Directive"; readonly WhiteSpace: "WhiteSpace"; readonly Comment: "Comment"; readonly NewLine: "NewLine"; readonly Error: "Error"; }; /** * [`unist`](https://github.com/syntax-tree/unist)-compatible node interface. */ export type Event = Event.Name | Event.Directive | Event.WhiteSpace | Event.Comment | Event.NewLine | Event.Error; export declare namespace Event { interface Base<out T extends keyof typeof Event> extends Literal { type: T; position: Token['position']; value: string; } export interface Name extends Base<typeof Event.Name> { } export interface WhiteSpace extends Base<typeof Event.WhiteSpace> { } export interface NewLine extends Base<typeof Event.NewLine> { } export interface Comment extends Base<typeof Event.Comment> { } export interface Directive extends Base<typeof Event.Directive> { value: typeof Directive[keyof typeof Directive]; } export interface Error extends Base<typeof Event.Error> { data: { message: Message; }; } export {}; } export declare const Directive: { readonly Hard: "hard"; readonly Soft: "soft"; readonly Package: "package"; }; export type Directive = typeof Directive[keyof typeof Directive]; /** * Diagnostic message format. Can be used with * [`vfile-message`](https://www.npmjs.com/package/vfile-message). */ export interface Message { ruleId: RuleId; reason: string; fatal: Severity; place: Position; actual?: string; expected?: string[]; } export declare const Severity: { readonly Error: true; readonly Warning: false; readonly Info: undefined; }; export type Severity = typeof Severity[keyof typeof Severity]; export type RuleId = typeof RULES[keyof typeof RULES]['ruleId'] | 'too-many-arguments'; export declare function validate(event: Readonly<Event>): Generator<Message, void, undefined>; declare const RULES: { readonly Name: { readonly ruleId: "illegal-character-in-package-name"; readonly reason: "this character is not allowed in package names"; readonly fatal: false; readonly expected: string[]; readonly re: RegExp; }; readonly WhiteSpace: { readonly ruleId: "illegal-whitespace-character"; readonly reason: "this character cannot be used as a whitespace character"; readonly fatal: false; readonly expected: string[]; readonly re: RegExp; }; readonly NewLine: { readonly ruleId: "illegal-newline-character"; readonly reason: "this character cannot be used as a newline sequence"; readonly fatal: false; readonly expected: string[]; readonly re: RegExp; }; }; export {};