depends-txt
Version:
A parser module for TeX Live's DEPENDS.txt file format
89 lines (88 loc) • 2.94 kB
TypeScript
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 {};