import { LitXmlOptions } from './lit-xml-options.js'; import { XmlFragment } from './xml-fragment.js'; const DEFAULT_OPTIONS: Readonly = { format: false, indent: 2, validators: [], strictTemplateValues: false, }; export type XmlPrimitive = string | number | boolean | bigint | XmlFragment | XmlFragment[]; export type XmlTemplateLiteralTag = (xmlLiterals: TemplateStringsArray, ...values: T[]) => XmlFragment; export type XmlTemplateLiteral = XmlTemplateLiteralTag; export type StrictXmlTemplateLiteral = XmlTemplateLiteralTag; export function createLitXml>( overrideOptions?: T, ): XmlTemplateLiteralTag { const options = Object.freeze({ ...DEFAULT_OPTIONS, ...overrideOptions }); return function xml(xmlLiterals: TemplateStringsArray, ...values: unknown[]): XmlFragment { return new XmlFragment(xmlLiterals, values, options); }; } createLitXml.inject = ['lit-xml-options'] as const; export const xml = createLitXml();