@hashbrownai/core
Version:
Runtime helpers for Hashbrown AI
133 lines • 3.07 kB
TypeScript
type MagicParseResult = {
fragments: Fragment[];
warnings: ParseWarning[];
meta: {
citationOrder: string[];
citationNumbers: Record<string, number | string>;
stats: {
chars: number;
runs: number;
fragments: number;
};
};
};
type BaseFragment = {
id: string;
range: {
start: number;
end: number;
};
state: 'final' | 'provisional';
rev: number;
};
type LinkMark = {
href: string;
title?: string;
ariaLabel?: string;
target?: string;
rel?: string;
unknownAttrs?: Record<string, string>;
policy: 'allowed';
};
type MarkSet = {
strong?: true;
em?: true;
code?: true;
link?: LinkMark;
};
type TextFragment = BaseFragment & {
kind: 'text';
text: string;
marks: MarkSet;
};
type CitationFragment = BaseFragment & {
kind: 'citation';
text: string;
marks: Record<string, never>;
citation: {
id: string;
number: number | string;
};
};
type Fragment = TextFragment | CitationFragment;
type ParseWarning = {
code: 'unknown_link_attr';
key: string;
range: [number, number];
} | {
code: 'disallowed_protocol';
href: string;
range: [number, number];
} | {
code: 'unmatched_closer';
token: string;
range: [number, number];
} | {
code: 'unterminated_construct';
kind: 'em' | 'strong' | 'link' | 'citation' | 'attrs' | 'title' | 'code';
at: number;
};
/**
* Supported MagicText formatting tags.
* @public
*/
export type MagicTextTag = 'strong' | 'em';
/**
* Whitespace flags attached to fragments for rendering fidelity.
* @public
*/
export type MagicTextHasWhitespace = {
before: boolean;
after: boolean;
};
/**
* Renderable text fragment produced by MagicText parsing.
* @public
*/
export type MagicTextFragmentText = TextFragment & {
type: 'text';
key: string;
tags: MagicTextTag[];
wrappers: MagicTextTag[];
whitespace: FragmentWhitespace;
renderWhitespace: MagicTextHasWhitespace;
isCode: boolean;
isStatic: boolean;
};
/**
* Citation fragment produced by MagicText parsing.
* @public
*/
export type MagicTextFragmentCitation = CitationFragment & {
type: 'citation';
key: string;
wrappers?: undefined;
whitespace: FragmentWhitespace;
renderWhitespace: MagicTextHasWhitespace;
isStatic: boolean;
};
/**
* Union of all MagicText fragment variants.
* @public
*/
export type MagicTextFragment = MagicTextFragmentText | MagicTextFragmentCitation;
/**
* Parsed MagicText result including fragments and warnings.
* @public
*/
export type MagicTextResult = {
fragments: MagicTextFragment[];
warnings: ParseWarning[];
meta: MagicParseResult['meta'];
};
type FragmentWhitespace = {
before: boolean;
after: boolean;
};
/**
* Parses raw MagicText into renderable fragments with whitespace hints.
* @public
*/
export declare function prepareMagicText(input: string): MagicTextResult;
export {};
//# sourceMappingURL=magic-text.d.ts.map