/**
* @description Single line markdown element type
* @summary Represents the possible header levels in markdown
* @typedef {"h1"|"h2"|"h3"|"h4"|"h5"|"h6"} MdSingleLineElement
* @memberOf module:utils
*/
export type MdSingleLineElement = "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
/**
* @description Multi-line element types in markdown
* @summary Defines the available multi-line element types
* @typedef {"p"|"blockquote"} MdMultiLineElement
* @memberOf module:utils
*/
export type MdMultiLineElement = "p" | "blockquote";
/**
* @description List element types in markdown
* @summary Defines the available list types
* @typedef {"ul"|"ol"} MdListElement
* @memberOf module:utils
*/
export type MdListElement = "ul" | "ol";
/**
* @description List element types in markdown
* @summary Defines the available list types
* @typedef {Object} MdSingleLine
* @property {string} [ul] - unordered list
* @property {string} [ol] - ordered list
* @memberOf module:utils
*/
export type MdSingleLine = {
[k in MdSingleLineElement]?: string;
};
/**
* @description Multi-line markdown element type
* @summary Represents markdown elements that can contain multiple lines of text
* @typedef {Object} MdMultiLine
* @property {string|string[]} [p] - Paragraph content
* @property {string|string[]} [blockquote] - Blockquote content
* @memberOf module:utils
*/
export type MdMultiLine = { [k in MdMultiLineElement]?: string | string[] };
/**
* @description Image definition type in markdown
* @summary Defines the structure for image elements
* @typedef {Object} MdImageDefinition
* @property {string} [title] - Optional image title
* @property {string} source - Image source URL
* @property {string} [alt] - Optional alternative text
* @memberOf module:utils
*/
export type MdImageDefinition = {
title?: string;
source: string;
alt?: string;
};
/**
* @description Image element type in markdown
* @summary Represents an image element with its properties
* @typedef {Object} MdImage
* @property {MdImageDefinition} img - The image definition object
* @memberOf module:utils
*/
export type MdImage = { img: MdImageDefinition };
/**
* @description List item element type in markdown
* @summary Represents ordered and unordered lists in markdown
* @typedef {Object} MdListItem
* @property {string[]} ul - Unordered list items
* @property {string[]} ol - Ordered list items
* @memberOf module:utils
*/
export type MdListItem = { [k in MdListElement]: string[] };
/**
* @description Table definition type in markdown
* @summary Defines the structure for table elements
* @typedef {Object} MdTableDefinition
* @property {string[]} headers - Array of table header names
* @property {Object[]} rows - Array of row objects containing column values
* @memberOf module:utils
*/
export type MdTableDefinition = {
headers: string[];
rows: { [column: string]: string | string[] }[];
};
/**
* @description Table element type in markdown
* @summary Represents a table structure with headers and rows
* @typedef {Object} MdTable
* @property {MdTableDefinition} table - The table definition object
* @memberOf module:utils
*/
export type MdTable = { table: MdTableDefinition };
/**
* @description Code block definition type in markdown
* @summary Defines the structure for code blocks
* @typedef {Object} MdCodeDefinition
* @property {string} [language] - Optional programming language specification
* @property {string|string[]} content - The code content as string or array of strings
* @memberOf module:utils
*/
export type MdCodeDefinition = {
language?: string;
content: string | string[];
};
/**
* @description Code block element type in markdown
* @summary Represents a code block with optional language specification
* @typedef {Object} MdCode
* @property {MdCodeDefinition} code - The code block definition object
* @memberOf module:utils
*/
export type MdCode = { code: MdCodeDefinition };
/**
* @description Horizontal rule element type in markdown
* @summary Represents a horizontal rule separator
* @typedef {Object} MdSeparator
* @property {string} hr - The horizontal rule representation
* @memberOf module:utils
*/
export type MdSeparator = { hr: string };
/**
* @description Link element type in markdown
* @summary Represents a hyperlink with title and source
* @typedef {Object} MdLink
* @property {{title: string, source: string}} link - The link definition object
* @memberOf module:utils
*/
export type MdLink = {
link: {
title: string;
source: string;
};
};
/**
* @description Markdown element type definition
* @summary Represents all possible markdown elements that can be used in document generation.
* This type combines various markdown elements including headers, paragraphs, images, lists,
* tables, code blocks, separators, and links into a union type for flexible markdown content creation.
* @typedef {(MdSingleLine | MdMultiLine | MdImage | MdListItem | MdTable | MdCode | MdSeparator | MdLink)} MdElements
* @memberOf module:utils
*/
export type MdElements =
| MdSingleLine
| MdMultiLine
| MdImage
| MdListItem
| MdTable
| MdCode
| MdSeparator
| MdLink;
Source