UNPKG

7.02 kBSource Map (JSON)View Raw
1{"version":3,"file":"plist.mjs","names":["INDENT_ROOT","NEWLINE_STRING","xmlDecode","xmlElementChildElements","ValueDict","xmlDeclaration","xmlDoctype","Plist","XML_DECLARATION","XML_DOCTYPE","value","constructor","getValue","Error","valueCastTo","Type","castTo","valueCastAs","casted","TYPE","fromXml","xml","declaration","doctype","documentElement","fromXmlElement","element","tagName","childElements","childElementsL","length","childFromXmlElement","a","toXml","options","ir","indentRoot","n","newlineString","v","filter","s","join"],"sources":["../src/plist.ts"],"sourcesContent":["import {INDENT_ROOT, IToXmlOptions, NEWLINE_STRING} from './options';\nimport {IElement, xmlDecode, xmlElementChildElements} from './util';\nimport {Value} from './value';\nimport {ValueDict} from './value/dict';\n\nconst xmlDeclaration = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>';\nconst xmlDoctype =\n\t'<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">';\n\n/**\n * Plist object.\n */\nexport class Plist {\n\t/**\n\t * Default XML declaration.\n\t */\n\tpublic static readonly XML_DECLARATION = xmlDeclaration;\n\n\t/**\n\t * Default XML doctype.\n\t */\n\tpublic static readonly XML_DOCTYPE = xmlDoctype;\n\n\t/**\n\t * XML declaration.\n\t */\n\tpublic xmlDeclaration = xmlDeclaration;\n\n\t/**\n\t * XML doctype.\n\t */\n\tpublic xmlDoctype = xmlDoctype;\n\n\t/**\n\t * Value element.\n\t */\n\tpublic value: Value | null = null;\n\n\t/**\n\t * Plist constructor.\n\t *\n\t * @param value The value.\n\t */\n\tconstructor(value: Value | null = null) {\n\t\tthis.value = value;\n\t}\n\n\t/**\n\t * Get value or throw if null.\n\t *\n\t * @returns The value.\n\t */\n\tpublic getValue() {\n\t\tconst {value} = this;\n\t\tif (!value) {\n\t\t\tthrow new Error('Value is null');\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * Cast to specific type or null.\n\t *\n\t * @param Type Type constructor.\n\t * @returns The object or null.\n\t */\n\tpublic valueCastTo<T extends typeof Value>(Type: T): T['prototype'] | null {\n\t\tconst {value} = this;\n\t\treturn value ? value.castTo(Type) : null;\n\t}\n\n\t/**\n\t * Cast to specific type or throw.\n\t *\n\t * @param Type Type constructor.\n\t * @returns The object.\n\t */\n\tpublic valueCastAs<T extends typeof Value>(Type: T): T['prototype'] {\n\t\tconst casted = this.valueCastTo(Type);\n\t\tif (!casted) {\n\t\t\tthrow new Error(`Cannot cast value to type '${Type.TYPE}'`);\n\t\t}\n\t\treturn casted;\n\t}\n\n\t/**\n\t * Decode document from string.\n\t *\n\t * @param xml XML string.\n\t */\n\tpublic fromXml(xml: string) {\n\t\tconst {declaration, doctype, documentElement} = xmlDecode(xml);\n\t\tthis.fromXmlElement(documentElement, declaration, doctype);\n\t}\n\n\t/**\n\t * Decode document from element.\n\t *\n\t * @param element XML element.\n\t * @param declaration XML declaration.\n\t * @param doctype XML doctype.\n\t */\n\tpublic fromXmlElement(\n\t\telement: Readonly<IElement>,\n\t\tdeclaration: string | null = null,\n\t\tdoctype: string | null = null\n\t) {\n\t\tconst {tagName} = element;\n\t\tif (tagName !== 'plist') {\n\t\t\tthrow new Error(`Unexpected root plist tag name: ${tagName}`);\n\t\t}\n\n\t\tconst childElements = xmlElementChildElements(element);\n\t\tconst childElementsL = childElements.length;\n\t\tif (childElementsL > 1) {\n\t\t\tthrow new Error(`Multiple root plist child tag: ${childElementsL}`);\n\t\t}\n\n\t\tthis.value = childElementsL\n\t\t\t? this.childFromXmlElement(childElements[0])\n\t\t\t: null;\n\t\tthis.xmlDeclaration = declaration || '';\n\t\tthis.xmlDoctype = doctype || '';\n\t}\n\n\t/**\n\t * Decode child element from XML element.\n\t *\n\t * @param element XML element.\n\t * @returns Value element.\n\t */\n\tpublic childFromXmlElement(element: IElement) {\n\t\tconst a = new ValueDict();\n\t\treturn a.childFromXmlElement(element);\n\t}\n\n\t/**\n\t * Encode documents to string.\n\t *\n\t * @param options Options object.\n\t * @returns XML string.\n\t */\n\tpublic toXml(options: Readonly<IToXmlOptions> | null = null) {\n\t\tconst ir = options?.indentRoot ?? INDENT_ROOT;\n\t\tconst n = options?.newlineString ?? NEWLINE_STRING;\n\n\t\tconst v = this.value;\n\t\treturn [\n\t\t\t...[this.xmlDeclaration, this.xmlDoctype].filter(s => s),\n\t\t\t'<plist version=\"1.0\">',\n\t\t\t...(v ? [v.toXml(options, ir ? 1 : 0)] : []),\n\t\t\t'</plist>',\n\t\t\t''\n\t\t].join(n);\n\t}\n}\n"],"mappings":"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"}
\No newline at end of file