@azure/core-xml 1.4.1 → 1.4.2-alpha.20240329.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/xml-browser.mjs.map +1 -1
- package/dist/browser/xml.js +20 -16
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/commonjs/xml.js +6 -19
- package/dist/commonjs/xml.js.map +1 -1
- package/dist/esm/xml.js +6 -19
- package/dist/esm/xml.js.map +1 -1
- package/dist/react-native/xml.js +6 -19
- package/dist/react-native/xml.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xml-browser.mjs","sourceRoot":"","sources":["../../src/xml-browser.mts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/// <reference lib=\"dom\"/>\nimport { XML_ATTRKEY, XML_CHARKEY, XmlOptions } from \"./xml.common.js\";\n\nif (!document || !DOMParser || !Node || !XMLSerializer) {\n throw new Error(\n `This library depends on the following DOM objects: [\"document\", \"DOMParser\", \"Node\", \"XMLSerializer\"] to parse XML, but some of these are undefined. You may provide a polyfill to make these globally available in order to support your environment. For more information, please refer to https://aka.ms/azsdk/js/web-workers. `,\n );\n}\n\n// Policy to make our code Trusted Types compliant at running time.\n// https://github.com/w3c/webappsec-trusted-types\n// We are calling DOMParser.parseFromString() to parse XML payload from Azure services.\n// The parsed DOM object is not exposed to outside. Scripts are disabled when parsing\n// according to the spec. There are no HTML/XSS security concerns on the usage of\n// parseFromString() here.\nlet ttPolicy: Pick<TrustedTypePolicy, \"createHTML\"> | undefined;\ntry {\n if (typeof self.trustedTypes !== \"undefined\") {\n ttPolicy = self.trustedTypes.createPolicy(\"@azure/core-xml#xml.browser\", {\n createHTML: (s: string) => s,\n });\n }\n} catch (e: any) {\n console.warn('Could not create trusted types policy \"@azure/core-xml#xml.browser\"');\n}\n\nconst doc = document.implementation.createDocument(null, null, null);\n\nconst parser = new DOMParser();\nexport function parseXML(str: string, opts: XmlOptions = {}): Promise<any> {\n try {\n const updatedOptions: Required<XmlOptions> = {\n rootName: opts.rootName ?? \"\",\n includeRoot: opts.includeRoot ?? false,\n xmlCharKey: opts.xmlCharKey ?? XML_CHARKEY,\n cdataPropName: opts.cdataPropName ?? \"__cdata\",\n stopNodes: opts.stopNodes ?? [],\n };\n const dom = parser.parseFromString(\n (ttPolicy?.createHTML(str) ?? str) as string,\n \"application/xml\",\n );\n throwIfError(dom);\n\n let obj;\n if (updatedOptions.includeRoot) {\n obj = domToObject(dom, updatedOptions);\n } else {\n obj = domToObject(dom.childNodes[0], updatedOptions);\n }\n\n return Promise.resolve(obj);\n } catch (err: any) {\n return Promise.reject(err);\n }\n}\n\nlet errorNS: string | undefined;\n\nfunction getErrorNamespace(): string {\n if (errorNS === undefined) {\n try {\n const invalidXML = (ttPolicy?.createHTML(\"INVALID\") ?? \"INVALID\") as string;\n errorNS =\n parser.parseFromString(invalidXML, \"text/xml\").getElementsByTagName(\"parsererror\")[0]\n .namespaceURI! ?? \"\";\n } catch (ignored: any) {\n // Most browsers will return a document containing <parsererror>, but IE will throw.\n errorNS = \"\";\n }\n }\n\n return errorNS;\n}\n\nfunction throwIfError(dom: Document): void {\n const parserErrors = dom.getElementsByTagName(\"parsererror\");\n if (parserErrors.length > 0 && getErrorNamespace()) {\n for (let i = 0; i < parserErrors.length; i++) {\n if (parserErrors[i].namespaceURI === errorNS) {\n throw new Error(parserErrors[i].innerHTML);\n }\n }\n }\n}\n\nfunction isElement(node: Node): node is Element {\n return !!(node as Element).attributes;\n}\n\n/**\n * Get the Element-typed version of the provided Node if the provided node is an element with\n * attributes. If it isn't, then undefined is returned.\n */\nfunction asElementWithAttributes(node: Node): Element | undefined {\n return isElement(node) && node.hasAttributes() ? node : undefined;\n}\n\nfunction domToObject(node: Node, options: Required<XmlOptions>): any {\n let result: any = {};\n\n const childNodeCount: number = node.childNodes.length;\n\n const firstChildNode: Node = node.childNodes[0];\n const onlyChildTextValue: string | undefined =\n (firstChildNode &&\n childNodeCount === 1 &&\n firstChildNode.nodeType === Node.TEXT_NODE &&\n firstChildNode.nodeValue) ||\n undefined;\n\n const elementWithAttributes: Element | undefined = asElementWithAttributes(node);\n if (elementWithAttributes) {\n result[XML_ATTRKEY] = {};\n\n for (let i = 0; i < elementWithAttributes.attributes.length; i++) {\n const attr = elementWithAttributes.attributes[i];\n result[XML_ATTRKEY][attr.nodeName] = attr.nodeValue;\n }\n\n if (onlyChildTextValue) {\n result[options.xmlCharKey] = onlyChildTextValue;\n }\n } else if (childNodeCount === 0) {\n result = \"\";\n } else if (onlyChildTextValue) {\n result = onlyChildTextValue;\n }\n\n if (!onlyChildTextValue) {\n for (let i = 0; i < childNodeCount; i++) {\n const child = node.childNodes[i];\n\n // Check if CData\n if (child?.nodeType === Node.CDATA_SECTION_NODE) {\n // Already in the CDATA\n result = child.textContent;\n } else if (child?.firstChild?.nodeType === Node.CDATA_SECTION_NODE) {\n // Look if child is CDATA\n result[child.nodeName] = child.textContent;\n } else if (child.nodeType !== Node.TEXT_NODE) {\n // Ignore leading/trailing whitespace nodes\n const childObject: any = domToObject(child, options);\n\n if (!result[child.nodeName]) {\n result[child.nodeName] = childObject;\n } else if (Array.isArray(result[child.nodeName])) {\n result[child.nodeName].push(childObject);\n } else {\n result[child.nodeName] = [result[child.nodeName], childObject];\n }\n }\n }\n }\n\n return result;\n}\n\nconst serializer = new XMLSerializer();\n\nexport function stringifyXML(content: unknown, opts: XmlOptions = {}): string {\n const updatedOptions: Required<XmlOptions> = {\n rootName: opts.rootName ?? \"root\",\n includeRoot: opts.includeRoot ?? false,\n xmlCharKey: opts.xmlCharKey ?? XML_CHARKEY,\n cdataPropName: opts.cdataPropName ?? \"__cdata\",\n stopNodes: opts.stopNodes ?? [],\n };\n const dom = buildNode(content, updatedOptions.rootName, updatedOptions)[0];\n return (\n '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' + serializer.serializeToString(dom)\n );\n}\n\nfunction buildAttributes(attrs: { [key: string]: { toString(): string } }): Attr[] {\n const result = [];\n for (const key of Object.keys(attrs)) {\n const attr = doc.createAttribute(key);\n attr.value = attrs[key].toString();\n result.push(attr);\n }\n return result;\n}\n\nfunction buildNode(obj: any, elementName: string, options: Required<XmlOptions>): Node[] {\n if (\n obj === undefined ||\n obj === null ||\n typeof obj === \"string\" ||\n typeof obj === \"number\" ||\n typeof obj === \"boolean\"\n ) {\n const elem = doc.createElement(elementName);\n elem.textContent = obj === undefined || obj === null ? \"\" : obj.toString();\n return [elem];\n } else if (Array.isArray(obj)) {\n const result = [];\n for (const arrayElem of obj) {\n for (const child of buildNode(arrayElem, elementName, options)) {\n result.push(child);\n }\n }\n return result;\n } else if (typeof obj === \"object\") {\n const elem = doc.createElement(elementName);\n for (const key of Object.keys(obj)) {\n if (key === XML_ATTRKEY) {\n for (const attr of buildAttributes(obj[key])) {\n elem.attributes.setNamedItem(attr);\n }\n } else if (key === options.xmlCharKey) {\n elem.textContent = obj[key].toString();\n } else if (key === options.cdataPropName) {\n const cdataElement = doc.createCDATASection(obj[key].toString());\n elem.appendChild(cdataElement);\n } else {\n for (const child of buildNode(obj[key], key, options)) {\n elem.appendChild(child);\n }\n }\n }\n return [elem];\n } else {\n throw new Error(`Illegal value passed to buildObject: ${obj}`);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"xml-browser.mjs","sourceRoot":"","sources":["../../src/xml-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,0BAA0B;AAC1B,OAAO,EAAE,WAAW,EAAE,WAAW,EAAc,MAAM,iBAAiB,CAAC;AAEvE,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;IACvD,MAAM,IAAI,KAAK,CACb,oUAAoU,CACrU,CAAC;AACJ,CAAC;AAED,mEAAmE;AACnE,mDAAmD;AACnD,uFAAuF;AACvF,qFAAqF;AACrF,kFAAkF;AAClF,0BAA0B;AAC1B,IAAI,QAA2D,CAAC;AAChE,IAAI,CAAC;IACH,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;QAC7C,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,6BAA6B,EAAE;YACvE,UAAU,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC;SAC7B,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAAC,OAAO,CAAM,EAAE,CAAC;IAChB,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAErE,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;AAC/B,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,OAAmB,EAAE;;IACzD,IAAI,CAAC;QACH,MAAM,cAAc,GAAyB;YAC3C,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,mCAAI,EAAE;YAC7B,WAAW,EAAE,MAAA,IAAI,CAAC,WAAW,mCAAI,KAAK;YACtC,UAAU,EAAE,MAAA,IAAI,CAAC,UAAU,mCAAI,WAAW;YAC1C,aAAa,EAAE,MAAA,IAAI,CAAC,aAAa,mCAAI,SAAS;YAC9C,SAAS,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,EAAE;SAChC,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAChC,CAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,CAAC,GAAG,CAAC,mCAAI,GAAG,CAAW,EAC5C,iBAAiB,CAClB,CAAC;QACF,YAAY,CAAC,GAAG,CAAC,CAAC;QAElB,IAAI,GAAG,CAAC;QACR,IAAI,cAAc,CAAC,WAAW,EAAE,CAAC;YAC/B,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,IAAI,OAA2B,CAAC;AAEhC,SAAS,iBAAiB;;IACxB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,CAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,CAAC,SAAS,CAAC,mCAAI,SAAS,CAAW,CAAC;YAC5E,OAAO;gBACL,MAAA,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;qBAClF,YAAa,mCAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,OAAY,EAAE,CAAC;YACtB,oFAAoF;YACpF,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,GAAa;IACjC,MAAM,YAAY,GAAG,GAAG,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAC7D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,EAAE,EAAE,CAAC;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAU;IAC3B,OAAO,CAAC,CAAE,IAAgB,CAAC,UAAU,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAAC,IAAU;IACzC,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,CAAC;AAED,SAAS,WAAW,CAAC,IAAU,EAAE,OAA6B;;IAC5D,IAAI,MAAM,GAAQ,EAAE,CAAC;IAErB,MAAM,cAAc,GAAW,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAEtD,MAAM,cAAc,GAAS,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,kBAAkB,GACtB,CAAC,cAAc;QACb,cAAc,KAAK,CAAC;QACpB,cAAc,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS;QAC1C,cAAc,CAAC,SAAS,CAAC;QAC3B,SAAS,CAAC;IAEZ,MAAM,qBAAqB,GAAwB,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACjF,IAAI,qBAAqB,EAAE,CAAC;QAC1B,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;QAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,qBAAqB,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjE,MAAM,IAAI,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QACtD,CAAC;QAED,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,kBAAkB,CAAC;QAClD,CAAC;IACH,CAAC;SAAM,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,GAAG,EAAE,CAAC;IACd,CAAC;SAAM,IAAI,kBAAkB,EAAE,CAAC;QAC9B,MAAM,GAAG,kBAAkB,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAEjC,iBAAiB;YACjB,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,MAAK,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAChD,uBAAuB;gBACvB,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC;YAC7B,CAAC;iBAAM,IAAI,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,QAAQ,MAAK,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACnE,yBAAyB;gBACzB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;YAC7C,CAAC;iBAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC7C,2CAA2C;gBAC3C,MAAM,WAAW,GAAQ,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAErD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;gBACvC,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;oBACjD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;AAEvC,MAAM,UAAU,YAAY,CAAC,OAAgB,EAAE,OAAmB,EAAE;;IAClE,MAAM,cAAc,GAAyB;QAC3C,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,mCAAI,MAAM;QACjC,WAAW,EAAE,MAAA,IAAI,CAAC,WAAW,mCAAI,KAAK;QACtC,UAAU,EAAE,MAAA,IAAI,CAAC,UAAU,mCAAI,WAAW;QAC1C,aAAa,EAAE,MAAA,IAAI,CAAC,aAAa,mCAAI,SAAS;QAC9C,SAAS,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,EAAE;KAChC,CAAC;IACF,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,CACL,yDAAyD,GAAG,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAC9F,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAgD;IACvE,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,GAAQ,EAAE,WAAmB,EAAE,OAA6B;IAC7E,IACE,GAAG,KAAK,SAAS;QACjB,GAAG,KAAK,IAAI;QACZ,OAAO,GAAG,KAAK,QAAQ;QACvB,OAAO,GAAG,KAAK,QAAQ;QACvB,OAAO,GAAG,KAAK,SAAS,EACxB,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,KAAK,MAAM,SAAS,IAAI,GAAG,EAAE,CAAC;YAC5B,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC/D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;SAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC5C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;gBACxB,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC7C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC;gBACtC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;YACzC,CAAC;iBAAM,IAAI,GAAG,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC;gBACzC,MAAM,YAAY,GAAG,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACjE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;oBACtD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/// <reference lib=\"dom\"/>\nimport { XML_ATTRKEY, XML_CHARKEY, XmlOptions } from \"./xml.common.js\";\n\nif (!document || !DOMParser || !Node || !XMLSerializer) {\n throw new Error(\n `This library depends on the following DOM objects: [\"document\", \"DOMParser\", \"Node\", \"XMLSerializer\"] to parse XML, but some of these are undefined. You may provide a polyfill to make these globally available in order to support your environment. For more information, please refer to https://aka.ms/azsdk/js/web-workers. `,\n );\n}\n\n// Policy to make our code Trusted Types compliant at running time.\n// https://github.com/w3c/webappsec-trusted-types\n// We are calling DOMParser.parseFromString() to parse XML payload from Azure services.\n// The parsed DOM object is not exposed to outside. Scripts are disabled when parsing\n// according to the spec. There are no HTML/XSS security concerns on the usage of\n// parseFromString() here.\nlet ttPolicy: Pick<TrustedTypePolicy, \"createHTML\"> | undefined;\ntry {\n if (typeof self.trustedTypes !== \"undefined\") {\n ttPolicy = self.trustedTypes.createPolicy(\"@azure/core-xml#xml.browser\", {\n createHTML: (s: string) => s,\n });\n }\n} catch (e: any) {\n console.warn('Could not create trusted types policy \"@azure/core-xml#xml.browser\"');\n}\n\nconst doc = document.implementation.createDocument(null, null, null);\n\nconst parser = new DOMParser();\nexport function parseXML(str: string, opts: XmlOptions = {}): Promise<any> {\n try {\n const updatedOptions: Required<XmlOptions> = {\n rootName: opts.rootName ?? \"\",\n includeRoot: opts.includeRoot ?? false,\n xmlCharKey: opts.xmlCharKey ?? XML_CHARKEY,\n cdataPropName: opts.cdataPropName ?? \"__cdata\",\n stopNodes: opts.stopNodes ?? [],\n };\n const dom = parser.parseFromString(\n (ttPolicy?.createHTML(str) ?? str) as string,\n \"application/xml\",\n );\n throwIfError(dom);\n\n let obj;\n if (updatedOptions.includeRoot) {\n obj = domToObject(dom, updatedOptions);\n } else {\n obj = domToObject(dom.childNodes[0], updatedOptions);\n }\n\n return Promise.resolve(obj);\n } catch (err: any) {\n return Promise.reject(err);\n }\n}\n\nlet errorNS: string | undefined;\n\nfunction getErrorNamespace(): string {\n if (errorNS === undefined) {\n try {\n const invalidXML = (ttPolicy?.createHTML(\"INVALID\") ?? \"INVALID\") as string;\n errorNS =\n parser.parseFromString(invalidXML, \"text/xml\").getElementsByTagName(\"parsererror\")[0]\n .namespaceURI! ?? \"\";\n } catch (ignored: any) {\n // Most browsers will return a document containing <parsererror>, but IE will throw.\n errorNS = \"\";\n }\n }\n\n return errorNS;\n}\n\nfunction throwIfError(dom: Document): void {\n const parserErrors = dom.getElementsByTagName(\"parsererror\");\n if (parserErrors.length > 0 && getErrorNamespace()) {\n for (let i = 0; i < parserErrors.length; i++) {\n if (parserErrors[i].namespaceURI === errorNS) {\n throw new Error(parserErrors[i].innerHTML);\n }\n }\n }\n}\n\nfunction isElement(node: Node): node is Element {\n return !!(node as Element).attributes;\n}\n\n/**\n * Get the Element-typed version of the provided Node if the provided node is an element with\n * attributes. If it isn't, then undefined is returned.\n */\nfunction asElementWithAttributes(node: Node): Element | undefined {\n return isElement(node) && node.hasAttributes() ? node : undefined;\n}\n\nfunction domToObject(node: Node, options: Required<XmlOptions>): any {\n let result: any = {};\n\n const childNodeCount: number = node.childNodes.length;\n\n const firstChildNode: Node = node.childNodes[0];\n const onlyChildTextValue: string | undefined =\n (firstChildNode &&\n childNodeCount === 1 &&\n firstChildNode.nodeType === Node.TEXT_NODE &&\n firstChildNode.nodeValue) ||\n undefined;\n\n const elementWithAttributes: Element | undefined = asElementWithAttributes(node);\n if (elementWithAttributes) {\n result[XML_ATTRKEY] = {};\n\n for (let i = 0; i < elementWithAttributes.attributes.length; i++) {\n const attr = elementWithAttributes.attributes[i];\n result[XML_ATTRKEY][attr.nodeName] = attr.nodeValue;\n }\n\n if (onlyChildTextValue) {\n result[options.xmlCharKey] = onlyChildTextValue;\n }\n } else if (childNodeCount === 0) {\n result = \"\";\n } else if (onlyChildTextValue) {\n result = onlyChildTextValue;\n }\n\n if (!onlyChildTextValue) {\n for (let i = 0; i < childNodeCount; i++) {\n const child = node.childNodes[i];\n\n // Check if CData\n if (child?.nodeType === Node.CDATA_SECTION_NODE) {\n // Already in the CDATA\n result = child.textContent;\n } else if (child?.firstChild?.nodeType === Node.CDATA_SECTION_NODE) {\n // Look if child is CDATA\n result[child.nodeName] = child.textContent;\n } else if (child.nodeType !== Node.TEXT_NODE) {\n // Ignore leading/trailing whitespace nodes\n const childObject: any = domToObject(child, options);\n\n if (!result[child.nodeName]) {\n result[child.nodeName] = childObject;\n } else if (Array.isArray(result[child.nodeName])) {\n result[child.nodeName].push(childObject);\n } else {\n result[child.nodeName] = [result[child.nodeName], childObject];\n }\n }\n }\n }\n\n return result;\n}\n\nconst serializer = new XMLSerializer();\n\nexport function stringifyXML(content: unknown, opts: XmlOptions = {}): string {\n const updatedOptions: Required<XmlOptions> = {\n rootName: opts.rootName ?? \"root\",\n includeRoot: opts.includeRoot ?? false,\n xmlCharKey: opts.xmlCharKey ?? XML_CHARKEY,\n cdataPropName: opts.cdataPropName ?? \"__cdata\",\n stopNodes: opts.stopNodes ?? [],\n };\n const dom = buildNode(content, updatedOptions.rootName, updatedOptions)[0];\n return (\n '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' + serializer.serializeToString(dom)\n );\n}\n\nfunction buildAttributes(attrs: { [key: string]: { toString(): string } }): Attr[] {\n const result = [];\n for (const key of Object.keys(attrs)) {\n const attr = doc.createAttribute(key);\n attr.value = attrs[key].toString();\n result.push(attr);\n }\n return result;\n}\n\nfunction buildNode(obj: any, elementName: string, options: Required<XmlOptions>): Node[] {\n if (\n obj === undefined ||\n obj === null ||\n typeof obj === \"string\" ||\n typeof obj === \"number\" ||\n typeof obj === \"boolean\"\n ) {\n const elem = doc.createElement(elementName);\n elem.textContent = obj === undefined || obj === null ? \"\" : obj.toString();\n return [elem];\n } else if (Array.isArray(obj)) {\n const result = [];\n for (const arrayElem of obj) {\n for (const child of buildNode(arrayElem, elementName, options)) {\n result.push(child);\n }\n }\n return result;\n } else if (typeof obj === \"object\") {\n const elem = doc.createElement(elementName);\n for (const key of Object.keys(obj)) {\n if (key === XML_ATTRKEY) {\n for (const attr of buildAttributes(obj[key])) {\n elem.attributes.setNamedItem(attr);\n }\n } else if (key === options.xmlCharKey) {\n elem.textContent = obj[key].toString();\n } else if (key === options.cdataPropName) {\n const cdataElement = doc.createCDATASection(obj[key].toString());\n elem.appendChild(cdataElement);\n } else {\n for (const child of buildNode(obj[key], key, options)) {\n elem.appendChild(child);\n }\n }\n }\n return [elem];\n } else {\n throw new Error(`Illegal value passed to buildObject: ${obj}`);\n }\n}\n"]}
|
package/dist/browser/xml.js
CHANGED
|
@@ -25,15 +25,16 @@ catch (e) {
|
|
|
25
25
|
const doc = document.implementation.createDocument(null, null, null);
|
|
26
26
|
const parser = new DOMParser();
|
|
27
27
|
export function parseXML(str, opts = {}) {
|
|
28
|
+
var _a, _b, _c, _d, _e, _f;
|
|
28
29
|
try {
|
|
29
30
|
const updatedOptions = {
|
|
30
|
-
rootName: opts.rootName
|
|
31
|
-
includeRoot: opts.includeRoot
|
|
32
|
-
xmlCharKey: opts.xmlCharKey
|
|
33
|
-
cdataPropName: opts.cdataPropName
|
|
34
|
-
stopNodes: opts.stopNodes
|
|
31
|
+
rootName: (_a = opts.rootName) !== null && _a !== void 0 ? _a : "",
|
|
32
|
+
includeRoot: (_b = opts.includeRoot) !== null && _b !== void 0 ? _b : false,
|
|
33
|
+
xmlCharKey: (_c = opts.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,
|
|
34
|
+
cdataPropName: (_d = opts.cdataPropName) !== null && _d !== void 0 ? _d : "__cdata",
|
|
35
|
+
stopNodes: (_e = opts.stopNodes) !== null && _e !== void 0 ? _e : [],
|
|
35
36
|
};
|
|
36
|
-
const dom = parser.parseFromString((ttPolicy
|
|
37
|
+
const dom = parser.parseFromString(((_f = ttPolicy === null || ttPolicy === void 0 ? void 0 : ttPolicy.createHTML(str)) !== null && _f !== void 0 ? _f : str), "application/xml");
|
|
37
38
|
throwIfError(dom);
|
|
38
39
|
let obj;
|
|
39
40
|
if (updatedOptions.includeRoot) {
|
|
@@ -50,12 +51,13 @@ export function parseXML(str, opts = {}) {
|
|
|
50
51
|
}
|
|
51
52
|
let errorNS;
|
|
52
53
|
function getErrorNamespace() {
|
|
54
|
+
var _a, _b;
|
|
53
55
|
if (errorNS === undefined) {
|
|
54
56
|
try {
|
|
55
|
-
const invalidXML = (ttPolicy
|
|
57
|
+
const invalidXML = ((_a = ttPolicy === null || ttPolicy === void 0 ? void 0 : ttPolicy.createHTML("INVALID")) !== null && _a !== void 0 ? _a : "INVALID");
|
|
56
58
|
errorNS =
|
|
57
|
-
parser.parseFromString(invalidXML, "text/xml").getElementsByTagName("parsererror")[0]
|
|
58
|
-
.namespaceURI
|
|
59
|
+
(_b = parser.parseFromString(invalidXML, "text/xml").getElementsByTagName("parsererror")[0]
|
|
60
|
+
.namespaceURI) !== null && _b !== void 0 ? _b : "";
|
|
59
61
|
}
|
|
60
62
|
catch (ignored) {
|
|
61
63
|
// Most browsers will return a document containing <parsererror>, but IE will throw.
|
|
@@ -85,6 +87,7 @@ function asElementWithAttributes(node) {
|
|
|
85
87
|
return isElement(node) && node.hasAttributes() ? node : undefined;
|
|
86
88
|
}
|
|
87
89
|
function domToObject(node, options) {
|
|
90
|
+
var _a;
|
|
88
91
|
let result = {};
|
|
89
92
|
const childNodeCount = node.childNodes.length;
|
|
90
93
|
const firstChildNode = node.childNodes[0];
|
|
@@ -114,11 +117,11 @@ function domToObject(node, options) {
|
|
|
114
117
|
for (let i = 0; i < childNodeCount; i++) {
|
|
115
118
|
const child = node.childNodes[i];
|
|
116
119
|
// Check if CData
|
|
117
|
-
if (child
|
|
120
|
+
if ((child === null || child === void 0 ? void 0 : child.nodeType) === Node.CDATA_SECTION_NODE) {
|
|
118
121
|
// Already in the CDATA
|
|
119
122
|
result = child.textContent;
|
|
120
123
|
}
|
|
121
|
-
else if (child
|
|
124
|
+
else if (((_a = child === null || child === void 0 ? void 0 : child.firstChild) === null || _a === void 0 ? void 0 : _a.nodeType) === Node.CDATA_SECTION_NODE) {
|
|
122
125
|
// Look if child is CDATA
|
|
123
126
|
result[child.nodeName] = child.textContent;
|
|
124
127
|
}
|
|
@@ -141,12 +144,13 @@ function domToObject(node, options) {
|
|
|
141
144
|
}
|
|
142
145
|
const serializer = new XMLSerializer();
|
|
143
146
|
export function stringifyXML(content, opts = {}) {
|
|
147
|
+
var _a, _b, _c, _d, _e;
|
|
144
148
|
const updatedOptions = {
|
|
145
|
-
rootName: opts.rootName
|
|
146
|
-
includeRoot: opts.includeRoot
|
|
147
|
-
xmlCharKey: opts.xmlCharKey
|
|
148
|
-
cdataPropName: opts.cdataPropName
|
|
149
|
-
stopNodes: opts.stopNodes
|
|
149
|
+
rootName: (_a = opts.rootName) !== null && _a !== void 0 ? _a : "root",
|
|
150
|
+
includeRoot: (_b = opts.includeRoot) !== null && _b !== void 0 ? _b : false,
|
|
151
|
+
xmlCharKey: (_c = opts.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,
|
|
152
|
+
cdataPropName: (_d = opts.cdataPropName) !== null && _d !== void 0 ? _d : "__cdata",
|
|
153
|
+
stopNodes: (_e = opts.stopNodes) !== null && _e !== void 0 ? _e : [],
|
|
150
154
|
};
|
|
151
155
|
const dom = buildNode(content, updatedOptions.rootName, updatedOptions)[0];
|
|
152
156
|
return ('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' + serializer.serializeToString(dom));
|
package/dist/commonjs/xml.js
CHANGED
|
@@ -6,33 +6,20 @@ exports.parseXML = exports.stringifyXML = void 0;
|
|
|
6
6
|
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
7
7
|
const xml_common_js_1 = require("./xml.common.js");
|
|
8
8
|
function getCommonOptions(options) {
|
|
9
|
+
var _a;
|
|
9
10
|
return {
|
|
10
11
|
attributesGroupName: xml_common_js_1.XML_ATTRKEY,
|
|
11
|
-
textNodeName: options.xmlCharKey
|
|
12
|
+
textNodeName: (_a = options.xmlCharKey) !== null && _a !== void 0 ? _a : xml_common_js_1.XML_CHARKEY,
|
|
12
13
|
ignoreAttributes: false,
|
|
13
14
|
suppressBooleanAttributes: false,
|
|
14
15
|
};
|
|
15
16
|
}
|
|
16
17
|
function getSerializerOptions(options = {}) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
attributeNamePrefix: "@_",
|
|
20
|
-
format: true,
|
|
21
|
-
suppressEmptyNode: true,
|
|
22
|
-
indentBy: "",
|
|
23
|
-
rootNodeName: options.rootName ?? "root",
|
|
24
|
-
cdataPropName: options.cdataPropName ?? "__cdata",
|
|
25
|
-
};
|
|
18
|
+
var _a, _b;
|
|
19
|
+
return Object.assign(Object.assign({}, getCommonOptions(options)), { attributeNamePrefix: "@_", format: true, suppressEmptyNode: true, indentBy: "", rootNodeName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "root", cdataPropName: (_b = options.cdataPropName) !== null && _b !== void 0 ? _b : "__cdata" });
|
|
26
20
|
}
|
|
27
21
|
function getParserOptions(options = {}) {
|
|
28
|
-
return {
|
|
29
|
-
...getCommonOptions(options),
|
|
30
|
-
parseAttributeValue: false,
|
|
31
|
-
parseTagValue: false,
|
|
32
|
-
attributeNamePrefix: "",
|
|
33
|
-
stopNodes: options.stopNodes,
|
|
34
|
-
processEntities: true,
|
|
35
|
-
};
|
|
22
|
+
return Object.assign(Object.assign({}, getCommonOptions(options)), { parseAttributeValue: false, parseTagValue: false, attributeNamePrefix: "", stopNodes: options.stopNodes, processEntities: true });
|
|
36
23
|
}
|
|
37
24
|
/**
|
|
38
25
|
* Converts given JSON object to XML string
|
|
@@ -72,7 +59,7 @@ async function parseXML(str, opts = {}) {
|
|
|
72
59
|
if (!opts.includeRoot) {
|
|
73
60
|
for (const key of Object.keys(parsedXml)) {
|
|
74
61
|
const value = parsedXml[key];
|
|
75
|
-
return typeof value === "object" ? {
|
|
62
|
+
return typeof value === "object" ? Object.assign({}, value) : value;
|
|
76
63
|
}
|
|
77
64
|
}
|
|
78
65
|
return parsedXml;
|
package/dist/commonjs/xml.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../../src/xml.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,qDAAsE;AACtE,mDAA4E;AAE5E,SAAS,gBAAgB,CAAC,OAAmB
|
|
1
|
+
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../../src/xml.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,qDAAsE;AACtE,mDAA4E;AAE5E,SAAS,gBAAgB,CAAC,OAAmB;;IAM3C,OAAO;QACL,mBAAmB,EAAE,2BAAW;QAChC,YAAY,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,2BAAW;QAC/C,gBAAgB,EAAE,KAAK;QACvB,yBAAyB,EAAE,KAAK;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAsB,EAAE;;IAYpD,uCACK,gBAAgB,CAAC,OAAO,CAAC,KAC5B,mBAAmB,EAAE,IAAI,EACzB,MAAM,EAAE,IAAI,EACZ,iBAAiB,EAAE,IAAI,EACvB,QAAQ,EAAE,EAAE,EACZ,YAAY,EAAE,MAAA,OAAO,CAAC,QAAQ,mCAAI,MAAM,EACxC,aAAa,EAAE,MAAA,OAAO,CAAC,aAAa,mCAAI,SAAS,IACjD;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAsB,EAAE;IAWhD,uCACK,gBAAgB,CAAC,OAAO,CAAC,KAC5B,mBAAmB,EAAE,KAAK,EAC1B,aAAa,EAAE,KAAK,EACpB,mBAAmB,EAAE,EAAE,EACvB,SAAS,EAAE,OAAO,CAAC,SAAS,EAC5B,eAAe,EAAE,IAAI,IACrB;AACJ,CAAC;AACD;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,GAAY,EAAE,OAAmB,EAAE;IAC9D,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,IAAI,4BAAU,CAAC,aAAa,CAAC,CAAC;IAE1C,MAAM,IAAI,GAAG,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IAEnD,MAAM,OAAO,GAAW,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,0DAA0D,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAChG,CAAC;AARD,oCAQC;AAED;;;;;GAKG;AACI,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,OAAmB,EAAE;IAC/D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,UAAU,GAAG,8BAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE9C,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,MAAM,UAAU,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,2BAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEpC,0CAA0C;IAC1C,qDAAqD;IACrD,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,mBAAM,KAAK,EAAG,CAAC,CAAC,KAAK,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AA5BD,4BA4BC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { XMLBuilder, XMLParser, XMLValidator } from \"fast-xml-parser\";\nimport { XML_ATTRKEY, XML_CHARKEY, type XmlOptions } from \"./xml.common.js\";\n\nfunction getCommonOptions(options: XmlOptions): {\n attributesGroupName: string;\n textNodeName: string;\n ignoreAttributes: boolean;\n suppressBooleanAttributes: boolean;\n} {\n return {\n attributesGroupName: XML_ATTRKEY,\n textNodeName: options.xmlCharKey ?? XML_CHARKEY,\n ignoreAttributes: false,\n suppressBooleanAttributes: false,\n };\n}\n\nfunction getSerializerOptions(options: XmlOptions = {}): {\n attributesGroupName: string;\n textNodeName: string;\n ignoreAttributes: boolean;\n suppressBooleanAttributes: boolean;\n attributeNamePrefix: string;\n format: boolean;\n suppressEmptyNode: boolean;\n indentBy: string;\n rootNodeName: string;\n cdataPropName: string;\n} {\n return {\n ...getCommonOptions(options),\n attributeNamePrefix: \"@_\",\n format: true,\n suppressEmptyNode: true,\n indentBy: \"\",\n rootNodeName: options.rootName ?? \"root\",\n cdataPropName: options.cdataPropName ?? \"__cdata\",\n };\n}\n\nfunction getParserOptions(options: XmlOptions = {}): {\n attributesGroupName: string;\n textNodeName: string;\n ignoreAttributes: boolean;\n suppressBooleanAttributes: boolean;\n parseAttributeValue: boolean;\n parseTagValue: boolean;\n attributeNamePrefix: string;\n stopNodes?: string[];\n processEntities: boolean;\n} {\n return {\n ...getCommonOptions(options),\n parseAttributeValue: false,\n parseTagValue: false,\n attributeNamePrefix: \"\",\n stopNodes: options.stopNodes,\n processEntities: true,\n };\n}\n/**\n * Converts given JSON object to XML string\n * @param obj - JSON object to be converted into XML string\n * @param opts - Options that govern the XML building of given JSON object\n * `rootName` indicates the name of the root element in the resulting XML\n */\nexport function stringifyXML(obj: unknown, opts: XmlOptions = {}): string {\n const parserOptions = getSerializerOptions(opts);\n const j2x = new XMLBuilder(parserOptions);\n\n const node = { [parserOptions.rootNodeName]: obj };\n\n const xmlData: string = j2x.build(node);\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${xmlData}`.replace(/\\n/g, \"\");\n}\n\n/**\n * Converts given XML string into JSON\n * @param str - String containing the XML content to be parsed into JSON\n * @param opts - Options that govern the parsing of given xml string\n * `includeRoot` indicates whether the root element is to be included or not in the output\n */\nexport async function parseXML(str: string, opts: XmlOptions = {}): Promise<any> {\n if (!str) {\n throw new Error(\"Document is empty\");\n }\n\n const validation = XMLValidator.validate(str);\n\n if (validation !== true) {\n throw validation;\n }\n\n const parser = new XMLParser(getParserOptions(opts));\n const parsedXml = parser.parse(str);\n\n // Remove the <?xml version=\"...\" ?> node.\n // This is a change in behavior on fxp v4. Issue #424\n if (parsedXml[\"?xml\"]) {\n delete parsedXml[\"?xml\"];\n }\n\n if (!opts.includeRoot) {\n for (const key of Object.keys(parsedXml)) {\n const value = parsedXml[key];\n return typeof value === \"object\" ? { ...value } : value;\n }\n }\n\n return parsedXml;\n}\n"]}
|
package/dist/esm/xml.js
CHANGED
|
@@ -3,33 +3,20 @@
|
|
|
3
3
|
import { XMLBuilder, XMLParser, XMLValidator } from "fast-xml-parser";
|
|
4
4
|
import { XML_ATTRKEY, XML_CHARKEY } from "./xml.common.js";
|
|
5
5
|
function getCommonOptions(options) {
|
|
6
|
+
var _a;
|
|
6
7
|
return {
|
|
7
8
|
attributesGroupName: XML_ATTRKEY,
|
|
8
|
-
textNodeName: options.xmlCharKey
|
|
9
|
+
textNodeName: (_a = options.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY,
|
|
9
10
|
ignoreAttributes: false,
|
|
10
11
|
suppressBooleanAttributes: false,
|
|
11
12
|
};
|
|
12
13
|
}
|
|
13
14
|
function getSerializerOptions(options = {}) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
attributeNamePrefix: "@_",
|
|
17
|
-
format: true,
|
|
18
|
-
suppressEmptyNode: true,
|
|
19
|
-
indentBy: "",
|
|
20
|
-
rootNodeName: options.rootName ?? "root",
|
|
21
|
-
cdataPropName: options.cdataPropName ?? "__cdata",
|
|
22
|
-
};
|
|
15
|
+
var _a, _b;
|
|
16
|
+
return Object.assign(Object.assign({}, getCommonOptions(options)), { attributeNamePrefix: "@_", format: true, suppressEmptyNode: true, indentBy: "", rootNodeName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "root", cdataPropName: (_b = options.cdataPropName) !== null && _b !== void 0 ? _b : "__cdata" });
|
|
23
17
|
}
|
|
24
18
|
function getParserOptions(options = {}) {
|
|
25
|
-
return {
|
|
26
|
-
...getCommonOptions(options),
|
|
27
|
-
parseAttributeValue: false,
|
|
28
|
-
parseTagValue: false,
|
|
29
|
-
attributeNamePrefix: "",
|
|
30
|
-
stopNodes: options.stopNodes,
|
|
31
|
-
processEntities: true,
|
|
32
|
-
};
|
|
19
|
+
return Object.assign(Object.assign({}, getCommonOptions(options)), { parseAttributeValue: false, parseTagValue: false, attributeNamePrefix: "", stopNodes: options.stopNodes, processEntities: true });
|
|
33
20
|
}
|
|
34
21
|
/**
|
|
35
22
|
* Converts given JSON object to XML string
|
|
@@ -68,7 +55,7 @@ export async function parseXML(str, opts = {}) {
|
|
|
68
55
|
if (!opts.includeRoot) {
|
|
69
56
|
for (const key of Object.keys(parsedXml)) {
|
|
70
57
|
const value = parsedXml[key];
|
|
71
|
-
return typeof value === "object" ? {
|
|
58
|
+
return typeof value === "object" ? Object.assign({}, value) : value;
|
|
72
59
|
}
|
|
73
60
|
}
|
|
74
61
|
return parsedXml;
|
package/dist/esm/xml.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../../src/xml.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAE5E,SAAS,gBAAgB,CAAC,OAAmB
|
|
1
|
+
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../../src/xml.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAE5E,SAAS,gBAAgB,CAAC,OAAmB;;IAM3C,OAAO;QACL,mBAAmB,EAAE,WAAW;QAChC,YAAY,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,WAAW;QAC/C,gBAAgB,EAAE,KAAK;QACvB,yBAAyB,EAAE,KAAK;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAsB,EAAE;;IAYpD,uCACK,gBAAgB,CAAC,OAAO,CAAC,KAC5B,mBAAmB,EAAE,IAAI,EACzB,MAAM,EAAE,IAAI,EACZ,iBAAiB,EAAE,IAAI,EACvB,QAAQ,EAAE,EAAE,EACZ,YAAY,EAAE,MAAA,OAAO,CAAC,QAAQ,mCAAI,MAAM,EACxC,aAAa,EAAE,MAAA,OAAO,CAAC,aAAa,mCAAI,SAAS,IACjD;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAsB,EAAE;IAWhD,uCACK,gBAAgB,CAAC,OAAO,CAAC,KAC5B,mBAAmB,EAAE,KAAK,EAC1B,aAAa,EAAE,KAAK,EACpB,mBAAmB,EAAE,EAAE,EACvB,SAAS,EAAE,OAAO,CAAC,SAAS,EAC5B,eAAe,EAAE,IAAI,IACrB;AACJ,CAAC;AACD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY,EAAE,OAAmB,EAAE;IAC9D,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;IAE1C,MAAM,IAAI,GAAG,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IAEnD,MAAM,OAAO,GAAW,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,0DAA0D,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAChG,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,OAAmB,EAAE;IAC/D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE9C,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,MAAM,UAAU,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEpC,0CAA0C;IAC1C,qDAAqD;IACrD,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,mBAAM,KAAK,EAAG,CAAC,CAAC,KAAK,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { XMLBuilder, XMLParser, XMLValidator } from \"fast-xml-parser\";\nimport { XML_ATTRKEY, XML_CHARKEY, type XmlOptions } from \"./xml.common.js\";\n\nfunction getCommonOptions(options: XmlOptions): {\n attributesGroupName: string;\n textNodeName: string;\n ignoreAttributes: boolean;\n suppressBooleanAttributes: boolean;\n} {\n return {\n attributesGroupName: XML_ATTRKEY,\n textNodeName: options.xmlCharKey ?? XML_CHARKEY,\n ignoreAttributes: false,\n suppressBooleanAttributes: false,\n };\n}\n\nfunction getSerializerOptions(options: XmlOptions = {}): {\n attributesGroupName: string;\n textNodeName: string;\n ignoreAttributes: boolean;\n suppressBooleanAttributes: boolean;\n attributeNamePrefix: string;\n format: boolean;\n suppressEmptyNode: boolean;\n indentBy: string;\n rootNodeName: string;\n cdataPropName: string;\n} {\n return {\n ...getCommonOptions(options),\n attributeNamePrefix: \"@_\",\n format: true,\n suppressEmptyNode: true,\n indentBy: \"\",\n rootNodeName: options.rootName ?? \"root\",\n cdataPropName: options.cdataPropName ?? \"__cdata\",\n };\n}\n\nfunction getParserOptions(options: XmlOptions = {}): {\n attributesGroupName: string;\n textNodeName: string;\n ignoreAttributes: boolean;\n suppressBooleanAttributes: boolean;\n parseAttributeValue: boolean;\n parseTagValue: boolean;\n attributeNamePrefix: string;\n stopNodes?: string[];\n processEntities: boolean;\n} {\n return {\n ...getCommonOptions(options),\n parseAttributeValue: false,\n parseTagValue: false,\n attributeNamePrefix: \"\",\n stopNodes: options.stopNodes,\n processEntities: true,\n };\n}\n/**\n * Converts given JSON object to XML string\n * @param obj - JSON object to be converted into XML string\n * @param opts - Options that govern the XML building of given JSON object\n * `rootName` indicates the name of the root element in the resulting XML\n */\nexport function stringifyXML(obj: unknown, opts: XmlOptions = {}): string {\n const parserOptions = getSerializerOptions(opts);\n const j2x = new XMLBuilder(parserOptions);\n\n const node = { [parserOptions.rootNodeName]: obj };\n\n const xmlData: string = j2x.build(node);\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${xmlData}`.replace(/\\n/g, \"\");\n}\n\n/**\n * Converts given XML string into JSON\n * @param str - String containing the XML content to be parsed into JSON\n * @param opts - Options that govern the parsing of given xml string\n * `includeRoot` indicates whether the root element is to be included or not in the output\n */\nexport async function parseXML(str: string, opts: XmlOptions = {}): Promise<any> {\n if (!str) {\n throw new Error(\"Document is empty\");\n }\n\n const validation = XMLValidator.validate(str);\n\n if (validation !== true) {\n throw validation;\n }\n\n const parser = new XMLParser(getParserOptions(opts));\n const parsedXml = parser.parse(str);\n\n // Remove the <?xml version=\"...\" ?> node.\n // This is a change in behavior on fxp v4. Issue #424\n if (parsedXml[\"?xml\"]) {\n delete parsedXml[\"?xml\"];\n }\n\n if (!opts.includeRoot) {\n for (const key of Object.keys(parsedXml)) {\n const value = parsedXml[key];\n return typeof value === \"object\" ? { ...value } : value;\n }\n }\n\n return parsedXml;\n}\n"]}
|
package/dist/react-native/xml.js
CHANGED
|
@@ -3,33 +3,20 @@
|
|
|
3
3
|
import { XMLBuilder, XMLParser, XMLValidator } from "fast-xml-parser";
|
|
4
4
|
import { XML_ATTRKEY, XML_CHARKEY } from "./xml.common.js";
|
|
5
5
|
function getCommonOptions(options) {
|
|
6
|
+
var _a;
|
|
6
7
|
return {
|
|
7
8
|
attributesGroupName: XML_ATTRKEY,
|
|
8
|
-
textNodeName: options.xmlCharKey
|
|
9
|
+
textNodeName: (_a = options.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY,
|
|
9
10
|
ignoreAttributes: false,
|
|
10
11
|
suppressBooleanAttributes: false,
|
|
11
12
|
};
|
|
12
13
|
}
|
|
13
14
|
function getSerializerOptions(options = {}) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
attributeNamePrefix: "@_",
|
|
17
|
-
format: true,
|
|
18
|
-
suppressEmptyNode: true,
|
|
19
|
-
indentBy: "",
|
|
20
|
-
rootNodeName: options.rootName ?? "root",
|
|
21
|
-
cdataPropName: options.cdataPropName ?? "__cdata",
|
|
22
|
-
};
|
|
15
|
+
var _a, _b;
|
|
16
|
+
return Object.assign(Object.assign({}, getCommonOptions(options)), { attributeNamePrefix: "@_", format: true, suppressEmptyNode: true, indentBy: "", rootNodeName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "root", cdataPropName: (_b = options.cdataPropName) !== null && _b !== void 0 ? _b : "__cdata" });
|
|
23
17
|
}
|
|
24
18
|
function getParserOptions(options = {}) {
|
|
25
|
-
return {
|
|
26
|
-
...getCommonOptions(options),
|
|
27
|
-
parseAttributeValue: false,
|
|
28
|
-
parseTagValue: false,
|
|
29
|
-
attributeNamePrefix: "",
|
|
30
|
-
stopNodes: options.stopNodes,
|
|
31
|
-
processEntities: true,
|
|
32
|
-
};
|
|
19
|
+
return Object.assign(Object.assign({}, getCommonOptions(options)), { parseAttributeValue: false, parseTagValue: false, attributeNamePrefix: "", stopNodes: options.stopNodes, processEntities: true });
|
|
33
20
|
}
|
|
34
21
|
/**
|
|
35
22
|
* Converts given JSON object to XML string
|
|
@@ -68,7 +55,7 @@ export async function parseXML(str, opts = {}) {
|
|
|
68
55
|
if (!opts.includeRoot) {
|
|
69
56
|
for (const key of Object.keys(parsedXml)) {
|
|
70
57
|
const value = parsedXml[key];
|
|
71
|
-
return typeof value === "object" ? {
|
|
58
|
+
return typeof value === "object" ? Object.assign({}, value) : value;
|
|
72
59
|
}
|
|
73
60
|
}
|
|
74
61
|
return parsedXml;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../../src/xml.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAE5E,SAAS,gBAAgB,CAAC,OAAmB
|
|
1
|
+
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../../src/xml.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAE5E,SAAS,gBAAgB,CAAC,OAAmB;;IAM3C,OAAO;QACL,mBAAmB,EAAE,WAAW;QAChC,YAAY,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,WAAW;QAC/C,gBAAgB,EAAE,KAAK;QACvB,yBAAyB,EAAE,KAAK;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAsB,EAAE;;IAYpD,uCACK,gBAAgB,CAAC,OAAO,CAAC,KAC5B,mBAAmB,EAAE,IAAI,EACzB,MAAM,EAAE,IAAI,EACZ,iBAAiB,EAAE,IAAI,EACvB,QAAQ,EAAE,EAAE,EACZ,YAAY,EAAE,MAAA,OAAO,CAAC,QAAQ,mCAAI,MAAM,EACxC,aAAa,EAAE,MAAA,OAAO,CAAC,aAAa,mCAAI,SAAS,IACjD;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAsB,EAAE;IAWhD,uCACK,gBAAgB,CAAC,OAAO,CAAC,KAC5B,mBAAmB,EAAE,KAAK,EAC1B,aAAa,EAAE,KAAK,EACpB,mBAAmB,EAAE,EAAE,EACvB,SAAS,EAAE,OAAO,CAAC,SAAS,EAC5B,eAAe,EAAE,IAAI,IACrB;AACJ,CAAC;AACD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY,EAAE,OAAmB,EAAE;IAC9D,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;IAE1C,MAAM,IAAI,GAAG,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IAEnD,MAAM,OAAO,GAAW,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,0DAA0D,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAChG,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,OAAmB,EAAE;IAC/D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE9C,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,MAAM,UAAU,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEpC,0CAA0C;IAC1C,qDAAqD;IACrD,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,mBAAM,KAAK,EAAG,CAAC,CAAC,KAAK,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { XMLBuilder, XMLParser, XMLValidator } from \"fast-xml-parser\";\nimport { XML_ATTRKEY, XML_CHARKEY, type XmlOptions } from \"./xml.common.js\";\n\nfunction getCommonOptions(options: XmlOptions): {\n attributesGroupName: string;\n textNodeName: string;\n ignoreAttributes: boolean;\n suppressBooleanAttributes: boolean;\n} {\n return {\n attributesGroupName: XML_ATTRKEY,\n textNodeName: options.xmlCharKey ?? XML_CHARKEY,\n ignoreAttributes: false,\n suppressBooleanAttributes: false,\n };\n}\n\nfunction getSerializerOptions(options: XmlOptions = {}): {\n attributesGroupName: string;\n textNodeName: string;\n ignoreAttributes: boolean;\n suppressBooleanAttributes: boolean;\n attributeNamePrefix: string;\n format: boolean;\n suppressEmptyNode: boolean;\n indentBy: string;\n rootNodeName: string;\n cdataPropName: string;\n} {\n return {\n ...getCommonOptions(options),\n attributeNamePrefix: \"@_\",\n format: true,\n suppressEmptyNode: true,\n indentBy: \"\",\n rootNodeName: options.rootName ?? \"root\",\n cdataPropName: options.cdataPropName ?? \"__cdata\",\n };\n}\n\nfunction getParserOptions(options: XmlOptions = {}): {\n attributesGroupName: string;\n textNodeName: string;\n ignoreAttributes: boolean;\n suppressBooleanAttributes: boolean;\n parseAttributeValue: boolean;\n parseTagValue: boolean;\n attributeNamePrefix: string;\n stopNodes?: string[];\n processEntities: boolean;\n} {\n return {\n ...getCommonOptions(options),\n parseAttributeValue: false,\n parseTagValue: false,\n attributeNamePrefix: \"\",\n stopNodes: options.stopNodes,\n processEntities: true,\n };\n}\n/**\n * Converts given JSON object to XML string\n * @param obj - JSON object to be converted into XML string\n * @param opts - Options that govern the XML building of given JSON object\n * `rootName` indicates the name of the root element in the resulting XML\n */\nexport function stringifyXML(obj: unknown, opts: XmlOptions = {}): string {\n const parserOptions = getSerializerOptions(opts);\n const j2x = new XMLBuilder(parserOptions);\n\n const node = { [parserOptions.rootNodeName]: obj };\n\n const xmlData: string = j2x.build(node);\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${xmlData}`.replace(/\\n/g, \"\");\n}\n\n/**\n * Converts given XML string into JSON\n * @param str - String containing the XML content to be parsed into JSON\n * @param opts - Options that govern the parsing of given xml string\n * `includeRoot` indicates whether the root element is to be included or not in the output\n */\nexport async function parseXML(str: string, opts: XmlOptions = {}): Promise<any> {\n if (!str) {\n throw new Error(\"Document is empty\");\n }\n\n const validation = XMLValidator.validate(str);\n\n if (validation !== true) {\n throw validation;\n }\n\n const parser = new XMLParser(getParserOptions(opts));\n const parsedXml = parser.parse(str);\n\n // Remove the <?xml version=\"...\" ?> node.\n // This is a change in behavior on fxp v4. Issue #424\n if (parsedXml[\"?xml\"]) {\n delete parsedXml[\"?xml\"];\n }\n\n if (!opts.includeRoot) {\n for (const key of Object.keys(parsedXml)) {\n const value = parsedXml[key];\n return typeof value === \"object\" ? { ...value } : value;\n }\n }\n\n return parsedXml;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@azure/core-xml",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.2-alpha.20240329.3",
|
|
4
4
|
"description": "Core library for interacting with XML payloads",
|
|
5
5
|
"sdk-type": "client",
|
|
6
6
|
"type": "module",
|
|
@@ -76,8 +76,8 @@
|
|
|
76
76
|
"fast-xml-parser": "^4.3.2"
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
|
-
"@azure/dev-tool": "
|
|
80
|
-
"@azure/eslint-plugin-azure-sdk": "
|
|
79
|
+
"@azure/dev-tool": ">=1.0.0-alpha <1.0.0-alphb",
|
|
80
|
+
"@azure/eslint-plugin-azure-sdk": ">=3.0.0-alpha <3.0.0-alphb",
|
|
81
81
|
"@microsoft/api-extractor": "^7.40.3",
|
|
82
82
|
"@types/node": "^18.0.0",
|
|
83
83
|
"@types/trusted-types": "^2.0.0",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"playwright": "^1.41.2",
|
|
88
88
|
"prettier": "^3.2.5",
|
|
89
89
|
"rimraf": "^5.0.5",
|
|
90
|
-
"tshy": "^1.
|
|
90
|
+
"tshy": "^1.13.0",
|
|
91
91
|
"typescript": "~5.3.3",
|
|
92
92
|
"vitest": "^1.3.1"
|
|
93
93
|
},
|