@curvenote/schema
Version:
Schema and markdown parser for @curvenote/editor
54 lines (53 loc) • 1.84 kB
TypeScript
import type { ReferenceKind } from '../nodes/types';
export declare type CounterMeta = Record<string, string | number | boolean | null>;
export declare type Reference<K = ReferenceKind, T = CounterMeta> = {
id: string | null;
kind: K;
label: string | null;
numbered: boolean;
number: number | null;
title: string;
meta: T;
};
export declare type Counter<R extends Reference> = {
kind: R['kind'];
total: number;
all: R[];
};
export declare type SectionReference = Reference<ReferenceKind.sec, {
level: number;
section: string | null;
}>;
export declare type FigureReference = Reference<ReferenceKind.fig, {
src: string;
alt: string;
}>;
export declare type EquationReference = Reference<ReferenceKind.eq, {
math: string;
}>;
export declare type CodeReference = Reference<ReferenceKind.code, {
code: string;
language: string | null;
}>;
export declare type TableReference = Reference<ReferenceKind.table>;
export declare type LinkReference = Reference<ReferenceKind.link, {
url: string;
}>;
export declare type CiteReference = Reference<ReferenceKind.cite, {
key: string;
}>;
export declare type AnyReference = SectionReference | FigureReference | EquationReference | CodeReference | TableReference | CiteReference | LinkReference;
export declare type StateCounter = {
[ReferenceKind.sec]: Counter<SectionReference>;
[ReferenceKind.fig]: Counter<FigureReference>;
[ReferenceKind.eq]: Counter<EquationReference>;
[ReferenceKind.code]: Counter<CodeReference>;
[ReferenceKind.table]: Counter<TableReference>;
[ReferenceKind.link]: Counter<LinkReference>;
[ReferenceKind.cite]: Counter<CiteReference>;
};
export declare type WordCounter = {
words: number;
characters_excluding_spaces: number;
characters_including_spaces: number;
};