From c8f04e4c96a7887d19b38c36cf98e0fdc1b5be65 Mon Sep 17 00:00:00 2001 From: mabezen Date: Tue, 19 Sep 2023 16:47:59 +0300 Subject: [PATCH 1/3] try to add a support to nodejs --- package-lock.json | 121 ++++++++++++++++++++++++++---- package.json | 6 +- src/utils/documentUtils.ts | 1 + src/utils/mashupDocumentParser.ts | 6 +- src/utils/pqUtils.ts | 9 ++- src/utils/tableUtils.ts | 1 + src/utils/xmlInnerPartsUtils.ts | 13 ++-- src/utils/xmlPartsUtils.ts | 2 +- 8 files changed, 128 insertions(+), 31 deletions(-) diff --git a/package-lock.json b/package-lock.json index c92551c..33e485f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,20 @@ { "name": "@microsoft/connected-workbooks", - "version": "2.1.26", + "version": "3.0.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@microsoft/connected-workbooks", - "version": "2.1.26", + "version": "3.0.3", "license": "MIT", "dependencies": { + "@types/jsdom": "^21.1.2", "base64-js": "^1.5.1", "buffer": "^6.0.3", "jszip": "^3.5.0", - "uuid": "^9.0.0" + "uuid": "^9.0.0", + "xmldom": "^0.6.0" }, "devDependencies": { "@babel/core": "^7.14.6", @@ -23,6 +25,7 @@ "@types/jszip": "^3.4.1", "@types/uuid": "^9.0.2", "@types/webpack-bundle-analyzer": "^4.6.0", + "@types/xmldom": "^0.1.32", "@typescript-eslint/eslint-plugin": "^4.28.2", "@typescript-eslint/parser": "^4.28.2", "@webpack-cli/generators": "^3.0.7", @@ -5218,6 +5221,16 @@ "node": ">= 10" } }, + "node_modules/@types/jsdom": { + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.2.tgz", + "integrity": "sha512-bGj+7TaCkOwkJfx7HtS9p22Ij0A2aKMuz8a1+owpkxa1wU/HUBy/WAXhdv90uDdVI9rSjGvUrXmLSeA9VP3JeA==", + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, "node_modules/@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", @@ -5243,8 +5256,7 @@ "node_modules/@types/node": { "version": "16.0.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.0.1.tgz", - "integrity": "sha512-hBOx4SUlEPKwRi6PrXuTGw1z6lz0fjsibcWCM378YxsSu/6+C30L6CR49zIBKHiwNWCYIcOLjg4OHKZaFeLAug==", - "dev": true + "integrity": "sha512-hBOx4SUlEPKwRi6PrXuTGw1z6lz0fjsibcWCM378YxsSu/6+C30L6CR49zIBKHiwNWCYIcOLjg4OHKZaFeLAug==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -5264,6 +5276,11 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "node_modules/@types/tough-cookie": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", + "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==" + }, "node_modules/@types/uuid": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz", @@ -5291,6 +5308,12 @@ "webpack": "^5" } }, + "node_modules/@types/xmldom": { + "version": "0.1.32", + "resolved": "https://registry.npmjs.org/@types/xmldom/-/xmldom-0.1.32.tgz", + "integrity": "sha512-zPO1iqnODar0cIXhuCc0QyGP+t2IG9dr//VkxDtYKZJSikgN7bdLyMdnUNWRtCKeHkgc9KkbgsdccVbrCHCn2g==", + "dev": true + }, "node_modules/@types/yargs": { "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", @@ -7248,6 +7271,17 @@ "node": ">=8.6" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -9705,6 +9739,12 @@ "node": ">=0.4.0" } }, + "node_modules/jsdom/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -11531,10 +11571,15 @@ } }, "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } }, "node_modules/path-exists": { "version": "4.0.0", @@ -14798,6 +14843,14 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, + "node_modules/xmldom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.6.0.tgz", + "integrity": "sha512-iAcin401y58LckRZ0TkI4k0VSM1Qg0KGSc3i8rU+xrxe19A/BN1zHyVSJY7uoutVlaTSzYyk/v5AmkewAP7jtg==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -19678,6 +19731,16 @@ } } }, + "@types/jsdom": { + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.2.tgz", + "integrity": "sha512-bGj+7TaCkOwkJfx7HtS9p22Ij0A2aKMuz8a1+owpkxa1wU/HUBy/WAXhdv90uDdVI9rSjGvUrXmLSeA9VP3JeA==", + "requires": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, "@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", @@ -19702,8 +19765,7 @@ "@types/node": { "version": "16.0.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.0.1.tgz", - "integrity": "sha512-hBOx4SUlEPKwRi6PrXuTGw1z6lz0fjsibcWCM378YxsSu/6+C30L6CR49zIBKHiwNWCYIcOLjg4OHKZaFeLAug==", - "dev": true + "integrity": "sha512-hBOx4SUlEPKwRi6PrXuTGw1z6lz0fjsibcWCM378YxsSu/6+C30L6CR49zIBKHiwNWCYIcOLjg4OHKZaFeLAug==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -19723,6 +19785,11 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "@types/tough-cookie": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", + "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==" + }, "@types/uuid": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz", @@ -19750,6 +19817,12 @@ "webpack": "^5" } }, + "@types/xmldom": { + "version": "0.1.32", + "resolved": "https://registry.npmjs.org/@types/xmldom/-/xmldom-0.1.32.tgz", + "integrity": "sha512-zPO1iqnODar0cIXhuCc0QyGP+t2IG9dr//VkxDtYKZJSikgN7bdLyMdnUNWRtCKeHkgc9KkbgsdccVbrCHCn2g==", + "dev": true + }, "@types/yargs": { "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", @@ -21237,6 +21310,11 @@ "ansi-colors": "^4.1.1" } }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + }, "env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -23087,6 +23165,12 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", "dev": true + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true } } }, @@ -24504,10 +24588,12 @@ } }, "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "requires": { + "entities": "^4.4.0" + } }, "path-exists": { "version": "4.0.0", @@ -26937,6 +27023,11 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, + "xmldom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.6.0.tgz", + "integrity": "sha512-iAcin401y58LckRZ0TkI4k0VSM1Qg0KGSc3i8rU+xrxe19A/BN1zHyVSJY7uoutVlaTSzYyk/v5AmkewAP7jtg==" + }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index 00bf185..6e108a5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/connected-workbooks", - "version": "3.0.0", + "version": "3.0.3", "description": "Microsoft backed, Excel advanced xlsx workbook generation JavaScript library", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -40,7 +40,8 @@ "base64-js": "^1.5.1", "buffer": "^6.0.3", "jszip": "^3.5.0", - "uuid": "^9.0.0" + "uuid": "^9.0.0", + "xmldom": "^0.6.0" }, "devDependencies": { "@babel/core": "^7.14.6", @@ -51,6 +52,7 @@ "@types/jszip": "^3.4.1", "@types/uuid": "^9.0.2", "@types/webpack-bundle-analyzer": "^4.6.0", + "@types/xmldom": "^0.1.32", "@typescript-eslint/eslint-plugin": "^4.28.2", "@typescript-eslint/parser": "^4.28.2", "@webpack-cli/generators": "^3.0.7", diff --git a/src/utils/documentUtils.ts b/src/utils/documentUtils.ts index 030ca18..4a1b9cc 100644 --- a/src/utils/documentUtils.ts +++ b/src/utils/documentUtils.ts @@ -2,6 +2,7 @@ // Licensed under the MIT license. import JSZip from "jszip"; +import { DOMParser } from 'xmldom' import { dataTypeKind, docPropsCoreXmlPath, diff --git a/src/utils/mashupDocumentParser.ts b/src/utils/mashupDocumentParser.ts index b7c58ca..08eeacc 100644 --- a/src/utils/mashupDocumentParser.ts +++ b/src/utils/mashupDocumentParser.ts @@ -3,6 +3,7 @@ import * as base64 from "base64-js"; import JSZip from "jszip"; +import { DOMParser, XMLSerializer } from 'xmldom' import { section1mPath, defaults, @@ -111,7 +112,7 @@ export const editSingleQueryMetadata = (metadataArray: Uint8Array, metadata: Met if (itemPaths && itemPaths.length) { for (let i = 0; i < itemPaths.length; i++) { const itemPath: Element = itemPaths[i]; - const content: string = itemPath.innerHTML; + const content: string = itemPath.textContent as string; if (content.includes(section1PathPrefix)) { const strArr: string[] = content.split(divider); strArr[1] = encodeURIComponent(metadata.queryName); @@ -125,8 +126,7 @@ export const editSingleQueryMetadata = (metadataArray: Uint8Array, metadata: Met if (entries && entries.length) { for (let i = 0; i < entries.length; i++) { const entry: Element = entries[i]; - const entryAttributes: NamedNodeMap = entry.attributes; - const entryAttributesArr: Attr[] = [...entryAttributes]; + const entryAttributesArr: Attr[] = Array.from(entry.attributes); const entryProp: Attr | undefined = entryAttributesArr.find((prop) => { return prop?.name === elementAttributes.type; }); diff --git a/src/utils/pqUtils.ts b/src/utils/pqUtils.ts index 4812320..1dccc22 100644 --- a/src/utils/pqUtils.ts +++ b/src/utils/pqUtils.ts @@ -5,15 +5,16 @@ import JSZip from "jszip"; import { EmptyQueryNameErr, QueryNameMaxLengthErr, maxQueryLength, URLS, BOM, QueryNameInvalidCharsErr } from "./constants"; import { generateMashupXMLTemplate, generateCustomXmlFilePath } from "../generators"; import { Buffer } from "buffer"; +import { DOMParser } from 'xmldom' type CustomXmlFile = { found: boolean; path: string; xmlString: string | undefined; - value: string | undefined; + value: string | null; }; -const getBase64 = async (zip: JSZip): Promise => { +const getBase64 = async (zip: JSZip): Promise => { const mashup = await getDataMashupFile(zip); return mashup.value; }; @@ -54,7 +55,7 @@ const getCustomXmlFile = async (zip: JSZip, url: string, encoding: BufferEncodin let found = false; let path: string; let xmlString: string | undefined; - let value: string | undefined; + let value: string | null = null; for (let i = 1; i <= itemsArray.length; i++) { path = generateCustomXmlFilePath(i); @@ -72,7 +73,7 @@ const getCustomXmlFile = async (zip: JSZip, url: string, encoding: BufferEncodin found = doc?.documentElement?.namespaceURI === url; if (found) { - value = doc.documentElement.innerHTML; + value = doc.documentElement.textContent; break; } } diff --git a/src/utils/tableUtils.ts b/src/utils/tableUtils.ts index 4d1fc69..3c46e32 100644 --- a/src/utils/tableUtils.ts +++ b/src/utils/tableUtils.ts @@ -3,6 +3,7 @@ import JSZip from "jszip"; import { TableData } from "../types"; +import { DOMParser, XMLSerializer } from 'xmldom' import { defaults, element, diff --git a/src/utils/xmlInnerPartsUtils.ts b/src/utils/xmlInnerPartsUtils.ts index 4621221..83959c0 100644 --- a/src/utils/xmlInnerPartsUtils.ts +++ b/src/utils/xmlInnerPartsUtils.ts @@ -2,6 +2,7 @@ // Licensed under the MIT license. import JSZip from "jszip"; +import { DOMParser, XMLSerializer } from 'xmldom' import { DocProps, DocPropsAutoUpdatedElements, DocPropsModifiableElements } from "../types"; import { docPropsCoreXmlPath, @@ -69,11 +70,11 @@ const clearLabelInfo = async (zip: JSZip): Promise => { const parser = new DOMParser(); const doc = parser.parseFromString(relsString, xmlTextResultType); - const relationships = doc.querySelector("Relationships"); + const relationships = doc.xpath("Relationships"); if (relationships === null) { throw new Error(unexpectedErr); } - const element = relationships.querySelector('Relationship[Target="docMetadata/LabelInfo.xml"]'); + const element = relationships.xpath('Relationship[Target="docMetadata/LabelInfo.xml"]'); if (element) { relationships.removeChild(element); } @@ -100,11 +101,11 @@ const updateConnections = ( dbPr.setAttribute(elementAttributes.refreshOnLoad, refreshOnLoadValue); // Update query details to match queryName - dbPr.parentElement?.setAttribute(elementAttributes.name, elementAttributesValues.connectionName(queryName)); - dbPr.parentElement?.setAttribute(elementAttributes.description, elementAttributesValues.connectionDescription(queryName)); + (dbPr.parentNode as Element)?.setAttribute(elementAttributes.name, elementAttributesValues.connectionName(queryName)); + (dbPr.parentNode as Element)?.setAttribute(elementAttributes.description, elementAttributesValues.connectionDescription(queryName)); dbPr.setAttribute(elementAttributes.connection, elementAttributesValues.connection(queryName)); dbPr.setAttribute(elementAttributes.command, elementAttributesValues.connectionCommand(queryName)); - const connectionId: string | null | undefined = dbPr.parentElement?.getAttribute(elementAttributes.id); + const connectionId: string | null | undefined = (dbPr.parentNode as Element)?.getAttribute(elementAttributes.id); const connectionXmlFileString: string = serializer.serializeToString(connectionsDoc); if (connectionId === null) { @@ -128,7 +129,7 @@ const updateSharedStrings = (sharedStringsXmlString: string, queryName: string): let sharedStringIndex: number = textElementCollection.length; if (textElementCollection && textElementCollection.length) { for (let i = 0; i < textElementCollection.length; i++) { - if (textElementCollection[i].innerHTML === queryName) { + if (textElementCollection[i].textContent === queryName) { textElement = textElementCollection[i]; sharedStringIndex = i + 1; break; diff --git a/src/utils/xmlPartsUtils.ts b/src/utils/xmlPartsUtils.ts index 36fd306..8f792e6 100644 --- a/src/utils/xmlPartsUtils.ts +++ b/src/utils/xmlPartsUtils.ts @@ -28,7 +28,7 @@ const updateWorkbookDataAndConfigurations = async (zip: JSZip, fileConfigs?: Fil }; const updateWorkbookPowerQueryDocument = async (zip: JSZip, queryName: string, queryMashupDoc: string): Promise => { - const old_base64: string | undefined = await pqUtils.getBase64(zip); + const old_base64: string | null = await pqUtils.getBase64(zip); if (!old_base64) { throw new Error(base64NotFoundErr); From 7fd68b718de036c17229ad5ddb14126ba4447aaf Mon Sep 17 00:00:00 2001 From: mabezen Date: Tue, 19 Sep 2023 16:52:18 +0300 Subject: [PATCH 2/3] fix build --- src/utils/xmlInnerPartsUtils.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/utils/xmlInnerPartsUtils.ts b/src/utils/xmlInnerPartsUtils.ts index 83959c0..1dff306 100644 --- a/src/utils/xmlInnerPartsUtils.ts +++ b/src/utils/xmlInnerPartsUtils.ts @@ -2,7 +2,7 @@ // Licensed under the MIT license. import JSZip from "jszip"; -import { DOMParser, XMLSerializer } from 'xmldom' +import { DOMParser, XMLSerializer } from "xmldom"; import { DocProps, DocPropsAutoUpdatedElements, DocPropsModifiableElements } from "../types"; import { docPropsCoreXmlPath, @@ -70,11 +70,11 @@ const clearLabelInfo = async (zip: JSZip): Promise => { const parser = new DOMParser(); const doc = parser.parseFromString(relsString, xmlTextResultType); - const relationships = doc.xpath("Relationships"); + const relationships = doc.querySelector("Relationships"); if (relationships === null) { throw new Error(unexpectedErr); } - const element = relationships.xpath('Relationship[Target="docMetadata/LabelInfo.xml"]'); + const element = relationships.querySelector('Relationship[Target="docMetadata/LabelInfo.xml"]'); if (element) { relationships.removeChild(element); } From 5d474284885de51cb4715cfc5c50e037f7195b21 Mon Sep 17 00:00:00 2001 From: shanialbeck Date: Wed, 20 Sep 2023 11:29:39 +0300 Subject: [PATCH 3/3] replace xmldom with xmldom-qsa --- package-lock.json | 88 +++++++------------------------ package.json | 3 +- src/utils/documentUtils.ts | 2 +- src/utils/mashupDocumentParser.ts | 2 +- src/utils/pqUtils.ts | 2 +- src/utils/tableUtils.ts | 2 +- src/utils/xmlInnerPartsUtils.ts | 2 +- 7 files changed, 26 insertions(+), 75 deletions(-) diff --git a/package-lock.json b/package-lock.json index 33e485f..db9025c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,12 +9,12 @@ "version": "3.0.3", "license": "MIT", "dependencies": { - "@types/jsdom": "^21.1.2", "base64-js": "^1.5.1", "buffer": "^6.0.3", "jszip": "^3.5.0", "uuid": "^9.0.0", - "xmldom": "^0.6.0" + "xmldom": "^0.6.0", + "xmldom-qsa": "^1.1.3" }, "devDependencies": { "@babel/core": "^7.14.6", @@ -5221,16 +5221,6 @@ "node": ">= 10" } }, - "node_modules/@types/jsdom": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.2.tgz", - "integrity": "sha512-bGj+7TaCkOwkJfx7HtS9p22Ij0A2aKMuz8a1+owpkxa1wU/HUBy/WAXhdv90uDdVI9rSjGvUrXmLSeA9VP3JeA==", - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, "node_modules/@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", @@ -5256,7 +5246,8 @@ "node_modules/@types/node": { "version": "16.0.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.0.1.tgz", - "integrity": "sha512-hBOx4SUlEPKwRi6PrXuTGw1z6lz0fjsibcWCM378YxsSu/6+C30L6CR49zIBKHiwNWCYIcOLjg4OHKZaFeLAug==" + "integrity": "sha512-hBOx4SUlEPKwRi6PrXuTGw1z6lz0fjsibcWCM378YxsSu/6+C30L6CR49zIBKHiwNWCYIcOLjg4OHKZaFeLAug==", + "dev": true }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -5276,11 +5267,6 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, - "node_modules/@types/tough-cookie": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", - "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==" - }, "node_modules/@types/uuid": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz", @@ -7271,17 +7257,6 @@ "node": ">=8.6" } }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -11570,17 +11545,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -14851,6 +14815,14 @@ "node": ">=10.0.0" } }, + "node_modules/xmldom-qsa": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/xmldom-qsa/-/xmldom-qsa-1.1.3.tgz", + "integrity": "sha512-IJBOczBpAYrIBJFFsmCBwfBhwe4zdMR3Xz0ZBX0OFtgO49rLy/BWbhkegOwsthdBWb1gUtFK6ZZnGdT8ZqPRBA==", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -19731,16 +19703,6 @@ } } }, - "@types/jsdom": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.2.tgz", - "integrity": "sha512-bGj+7TaCkOwkJfx7HtS9p22Ij0A2aKMuz8a1+owpkxa1wU/HUBy/WAXhdv90uDdVI9rSjGvUrXmLSeA9VP3JeA==", - "requires": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, "@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", @@ -19765,7 +19727,8 @@ "@types/node": { "version": "16.0.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.0.1.tgz", - "integrity": "sha512-hBOx4SUlEPKwRi6PrXuTGw1z6lz0fjsibcWCM378YxsSu/6+C30L6CR49zIBKHiwNWCYIcOLjg4OHKZaFeLAug==" + "integrity": "sha512-hBOx4SUlEPKwRi6PrXuTGw1z6lz0fjsibcWCM378YxsSu/6+C30L6CR49zIBKHiwNWCYIcOLjg4OHKZaFeLAug==", + "dev": true }, "@types/normalize-package-data": { "version": "2.4.1", @@ -19785,11 +19748,6 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, - "@types/tough-cookie": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", - "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==" - }, "@types/uuid": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz", @@ -21310,11 +21268,6 @@ "ansi-colors": "^4.1.1" } }, - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" - }, "env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -24587,14 +24540,6 @@ "lines-and-columns": "^1.1.6" } }, - "parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "requires": { - "entities": "^4.4.0" - } - }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -27028,6 +26973,11 @@ "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.6.0.tgz", "integrity": "sha512-iAcin401y58LckRZ0TkI4k0VSM1Qg0KGSc3i8rU+xrxe19A/BN1zHyVSJY7uoutVlaTSzYyk/v5AmkewAP7jtg==" }, + "xmldom-qsa": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/xmldom-qsa/-/xmldom-qsa-1.1.3.tgz", + "integrity": "sha512-IJBOczBpAYrIBJFFsmCBwfBhwe4zdMR3Xz0ZBX0OFtgO49rLy/BWbhkegOwsthdBWb1gUtFK6ZZnGdT8ZqPRBA==" + }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index 6e108a5..b3a9d17 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,8 @@ "buffer": "^6.0.3", "jszip": "^3.5.0", "uuid": "^9.0.0", - "xmldom": "^0.6.0" + "xmldom": "^0.6.0", + "xmldom-qsa": "^1.1.3" }, "devDependencies": { "@babel/core": "^7.14.6", diff --git a/src/utils/documentUtils.ts b/src/utils/documentUtils.ts index 4a1b9cc..57cdd0e 100644 --- a/src/utils/documentUtils.ts +++ b/src/utils/documentUtils.ts @@ -2,7 +2,7 @@ // Licensed under the MIT license. import JSZip from "jszip"; -import { DOMParser } from 'xmldom' +import { DOMParser } from "xmldom-qsa"; import { dataTypeKind, docPropsCoreXmlPath, diff --git a/src/utils/mashupDocumentParser.ts b/src/utils/mashupDocumentParser.ts index 08eeacc..88d7f56 100644 --- a/src/utils/mashupDocumentParser.ts +++ b/src/utils/mashupDocumentParser.ts @@ -3,7 +3,7 @@ import * as base64 from "base64-js"; import JSZip from "jszip"; -import { DOMParser, XMLSerializer } from 'xmldom' +import { DOMParser, XMLSerializer } from "xmldom-qsa"; import { section1mPath, defaults, diff --git a/src/utils/pqUtils.ts b/src/utils/pqUtils.ts index 1dccc22..dbc3a65 100644 --- a/src/utils/pqUtils.ts +++ b/src/utils/pqUtils.ts @@ -5,7 +5,7 @@ import JSZip from "jszip"; import { EmptyQueryNameErr, QueryNameMaxLengthErr, maxQueryLength, URLS, BOM, QueryNameInvalidCharsErr } from "./constants"; import { generateMashupXMLTemplate, generateCustomXmlFilePath } from "../generators"; import { Buffer } from "buffer"; -import { DOMParser } from 'xmldom' +import { DOMParser } from "xmldom-qsa"; type CustomXmlFile = { found: boolean; diff --git a/src/utils/tableUtils.ts b/src/utils/tableUtils.ts index 3c46e32..fa2e571 100644 --- a/src/utils/tableUtils.ts +++ b/src/utils/tableUtils.ts @@ -3,7 +3,7 @@ import JSZip from "jszip"; import { TableData } from "../types"; -import { DOMParser, XMLSerializer } from 'xmldom' +import { DOMParser, XMLSerializer } from "xmldom-qsa"; import { defaults, element, diff --git a/src/utils/xmlInnerPartsUtils.ts b/src/utils/xmlInnerPartsUtils.ts index 1dff306..8e1ebe1 100644 --- a/src/utils/xmlInnerPartsUtils.ts +++ b/src/utils/xmlInnerPartsUtils.ts @@ -2,7 +2,7 @@ // Licensed under the MIT license. import JSZip from "jszip"; -import { DOMParser, XMLSerializer } from "xmldom"; +import { DOMParser, XMLSerializer } from "xmldom-qsa"; import { DocProps, DocPropsAutoUpdatedElements, DocPropsModifiableElements } from "../types"; import { docPropsCoreXmlPath,