UNPKG

15.1 kBSource Map (JSON)View Raw
1{"version":3,"file":"util.js","names":["_xmldom","require","B6","B8","C64","C64M","xmlDecode","xml","declaration","doctype","errors","parser","DOMParser","locator","errorHandler","warning","e","error","push","fatalError","doc","parseFromString","length","Error","childNodes","documentElement","i","l","childNode","str","toString","test","xmlElementChildElements","element","r","nodeValue","tagName","xmlElementText","assertXmlTagName","tn","assertNoXmlElementChildNodes","base64Encode","data","a","b","c","o","base64Decode","base64","OUTER","d","m","z","charCodeAt","Uint8Array"],"sources":["../src/util.ts"],"sourcesContent":["import {DOMParser} from '@xmldom/xmldom';\n\nconst B6 = 0x3f;\nconst B8 = 0xff;\nconst C64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst C64M = [\n\t-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n\t-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n\t-1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60,\n\t61, -1, -1, -1, 64, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,\n\t13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1,\n\t26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,\n\t45, 46, 47, 48, 49, 50, 51\n];\n\nexport interface IText {\n\tnodeValue: string | null;\n}\n\nexport interface IElement {\n\treadonly tagName: string;\n\tchildNodes: {\n\t\tlength: number;\n\t\t[index: number]: IElement | IText;\n\t};\n\ttoString: () => string;\n}\n\n/**\n * Decode an XML string.\n *\n * @param xml XML string.\n * @returns Decoded declaration, doctype, and document element.\n */\nexport function xmlDecode(xml: string) {\n\tlet declaration: string | null = null;\n\tlet doctype: string | null = null;\n\n\tconst errors: string[] = [];\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n\tconst parser = new DOMParser({\n\t\tlocator: {},\n\t\terrorHandler: {\n\t\t\t/**\n\t\t\t * Warning callback.\n\t\t\t *\n\t\t\t * @param e Error string.\n\t\t\t */\n\t\t\twarning: (e: string) => {\n\t\t\t\t// Ignore warnings.\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Error callback.\n\t\t\t *\n\t\t\t * @param e Error string.\n\t\t\t */\n\t\t\terror: (e: string) => {\n\t\t\t\terrors.push(e);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Fatal error callback.\n\t\t\t *\n\t\t\t * @param e Error string.\n\t\t\t */\n\t\t\tfatalError: (e: string) => {\n\t\t\t\terrors.push(e);\n\t\t\t}\n\t\t}\n\t});\n\tconst doc = parser.parseFromString(xml, 'text/xml') as unknown as {\n\t\tdocumentElement: Readonly<IElement>;\n\t\tchildNodes: {toString: () => string}[];\n\t};\n\tif (errors.length) {\n\t\tthrow new Error(`XML decode error: ${errors[0]}`);\n\t}\n\n\tconst {childNodes} = doc;\n\tconst documentElement = doc.documentElement || null;\n\n\tfor (let i = 0, l = childNodes.length; i < l; i++) {\n\t\tconst childNode = childNodes[i];\n\t\tif (childNode === documentElement) {\n\t\t\tbreak;\n\t\t}\n\t\tconst str = childNode.toString();\n\t\tif (/^<\\?xml[^>]*\\?>$/.test(str)) {\n\t\t\tdeclaration = str;\n\t\t}\n\t\tif (/^<!DOCTYPE[^>]*>$/.test(str)) {\n\t\t\tdoctype = str;\n\t\t}\n\t}\n\n\tif (!documentElement) {\n\t\tthrow new Error('XML decode error: No document element');\n\t}\n\n\treturn {\n\t\tdeclaration,\n\t\tdoctype,\n\t\tdocumentElement\n\t};\n}\n\n/**\n * List XML element child elements.\n * Throws if non-whitespace nodes are found.\n *\n * @param element XML element.\n * @returns XML element list.\n */\nexport function xmlElementChildElements<T extends Readonly<IElement>>(\n\telement: T\n): T[] {\n\tconst {childNodes} = element;\n\tconst r = [];\n\tfor (let i = 0, l = childNodes.length; i < l; i++) {\n\t\tconst childNode = childNodes[i];\n\t\tif ('tagName' in childNode) {\n\t\t\tr.push(childNode as T);\n\t\t\tcontinue;\n\t\t}\n\t\tconst {nodeValue} = childNode;\n\t\tif (nodeValue && !/^\\s*$/.test(nodeValue)) {\n\t\t\tthrow new Error(`Found text children of: ${element.tagName}`);\n\t\t}\n\t}\n\treturn r;\n}\n\n/**\n * Get the XML element text node.\n * Returns null if none, throws if multiple elements.\n *\n * @param element XML element.\n * @returns XML text node list.\n */\nexport function xmlElementText(element: Readonly<IElement>) {\n\tconst {childNodes} = element;\n\tlet r: IText | null = null;\n\tfor (let i = 0, l = childNodes.length; i < l; i++) {\n\t\tif (i) {\n\t\t\tthrow new Error(`Multiple child elements in: ${element.tagName}`);\n\t\t}\n\n\t\tconst childNode = childNodes[i];\n\t\tif (\n\t\t\t!('tagName' in childNode) &&\n\t\t\t'data' in childNode &&\n\t\t\t'nodeValue' in childNode\n\t\t) {\n\t\t\tr = childNode as IText;\n\t\t} else {\n\t\t\tthrow new Error(`Unexpected child element in: ${element.tagName}`);\n\t\t}\n\t}\n\treturn r;\n}\n\n/**\n * Assert XML element has no children.\n *\n * @param element XML element.\n * @param tagName XML element tag name.\n */\nexport function assertXmlTagName(element: Readonly<IElement>, tagName: string) {\n\tconst tn = element.tagName;\n\tif (tn !== tagName) {\n\t\tthrow new Error(`Unexpected tagName: ${tagName}`);\n\t}\n}\n\n/**\n * Assert XML element has no children.\n *\n * @param element XML element.\n */\nexport function assertNoXmlElementChildNodes(element: Readonly<IElement>) {\n\tconst {childNodes} = element;\n\tif (childNodes.length) {\n\t\tthrow new Error(`Unexpected child nodes: ${element.tagName}`);\n\t}\n}\n\n/**\n * Base64 encode function mirroring decode function.\n *\n * @param data Byte array.\n * @returns Base64 string.\n */\nexport function base64Encode(data: Uint8Array) {\n\tconst l = data.length;\n\tlet r = '';\n\tfor (let i = 0; i < l; ) {\n\t\tconst a = data[i++];\n\t\tconst b = i < l ? data[i++] : null;\n\t\tconst c = i < l ? data[i++] : null;\n\t\t// eslint-disable-next-line no-bitwise\n\t\tconst o = (a << 16) | ((b || 0) << 8) | (c || 0);\n\t\tr +=\n\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\tC64[o >> 18] +\n\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\tC64[(o >> 12) & B6] +\n\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\tC64[b === null ? 64 : (o >> 6) & B6] +\n\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\tC64[c === null ? 64 : o & B6];\n\t}\n\treturn r;\n}\n\n/**\n * Base64 decode function that matches plist parsing behavior.\n *\n * @param base64 Base64 string.\n * @returns Byte array.\n */\nexport function base64Decode(base64: string) {\n\tconst l = base64.length;\n\tconst r = [];\n\tOUTER: for (let a, b, c, d, m, z, i = 0; i < l; ) {\n\t\tfor (;;) {\n\t\t\tif ((m = C64M[base64.charCodeAt(i++)]) >= 0) {\n\t\t\t\ta = m;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (i >= l) {\n\t\t\t\tbreak OUTER;\n\t\t\t}\n\t\t}\n\t\tfor (;;) {\n\t\t\tif ((m = C64M[base64.charCodeAt(i++)]) >= 0) {\n\t\t\t\tb = m;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (i >= l) {\n\t\t\t\tbreak OUTER;\n\t\t\t}\n\t\t}\n\t\tfor (;;) {\n\t\t\tif ((m = C64M[base64.charCodeAt(i++)]) >= 0) {\n\t\t\t\tc = m;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (i >= l) {\n\t\t\t\tbreak OUTER;\n\t\t\t}\n\t\t}\n\t\tfor (;;) {\n\t\t\tif ((m = C64M[base64.charCodeAt(i++)]) >= 0) {\n\t\t\t\td = m;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (i >= l) {\n\t\t\t\tbreak OUTER;\n\t\t\t}\n\t\t}\n\t\t// eslint-disable-next-line no-bitwise\n\t\tz = ((a & B6) << 18) | ((b & B6) << 12) | ((c & B6) << 6) | (d & B6);\n\t\t// eslint-disable-next-line default-case, no-nested-ternary\n\t\tswitch (c > B6 ? (d > B6 ? 2 : 0) : d > B6 ? 1 : 0) {\n\t\t\tcase 0: {\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tr.push((z >> 16) & B8, (z >> 8) & B8, z & B8);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 1: {\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tr.push((z >> 16) & B8, (z >> 8) & B8);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 2: {\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tr.push((z >> 16) & B8);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn new Uint8Array(r);\n}\n"],"mappings":"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"}
\No newline at end of file