@selenite/commons
Version:
This typescript package provides a set of frequently used utilities, types and svelte actions for building projects with Typescript and Svelte.
63 lines (62 loc) • 2.16 kB
TypeScript
/**
* Utils to parse, format and write XML.
* @module
*/
import type { XmlSchema } from './xsd';
export declare function parseXMLArray(xml: string): unknown[] | undefined;
export declare function formatXMLArray(arr: unknown[]): string;
declare function parseXml(xml: string): ParsedXmlNodes;
export declare function buildXml({ parsedXml, indent, baseSpace, cursorTag, endWithNewLine }: {
parsedXml: ParsedXmlNodes;
indent?: number;
baseSpace?: string;
cursorTag?: string;
endWithNewLine?: boolean;
}): string;
export declare function getElementFromParsedXml(xml: Record<string, unknown>): string | null;
/**
* Returns the different paths to the possible merge positions
* @param param0
* @returns
*/
export declare function findPossibleMergePositions({ baseXml, element, typesPaths, cursorTag }: {
baseXml: ParsedXmlNodes;
element: string;
typesPaths: XmlSchema['typePaths'];
cursorTag?: string;
}): {
path: {
pos: number;
key: string;
}[];
withCursor: boolean;
}[];
export declare function getXmlAttributes(xml: {
[key: string]: ParsedXmlNodes | ParsedXmlNode[] | ParsedXmlAttribute | undefined;
':@'?: ParsedXmlAttribute | undefined;
}): Record<string, string>;
export declare function mergeParsedXml({ baseXml, newXml, typesPaths, cursorTag }: {
baseXml: ParsedXmlNodes;
newXml: ParsedXmlNodes;
cursorTag?: string;
typesPaths: XmlSchema['typePaths'];
}): ParsedXmlNodes;
declare function formatXml({ xml, indent }: {
xml: string;
indent?: number;
}): string;
declare function formatComment(comment: string): string;
type ParsedXmlAttribute = Record<string, string>;
type ParsedXmlNode = {
'#text'?: string;
[key: string]: ParsedXmlAttribute | Array<ParsedXmlNode> | string | undefined;
};
type parsedXmlComment = {
'#comment': string;
};
type ParsedXmlNodes = Array<parsedXmlComment | {
':@'?: ParsedXmlAttribute;
[key: string]: ParsedXmlNodes | Array<ParsedXmlNode> | ParsedXmlAttribute | undefined;
}>;
export type { ParsedXmlNodes, ParsedXmlNode, parsedXmlComment, ParsedXmlAttribute };
export { parseXml, formatXml, formatComment };