@microsoft/connected-workbooks 3.1.1-beta.1 → 3.1.1-beta.2

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/main.js CHANGED
@@ -55,10 +55,10 @@ eval("/*!\n\nJSZip v3.8.0 - A JavaScript class for generating and reading zip fi
55
55
  /*!***************************!*\
56
56
  !*** ./src/generators.ts ***!
57
57
  \***************************/
58
- /***/ ((__unused_webpack_module, exports) => {
58
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
59
59
 
60
60
  "use strict";
61
- eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.generateCustomXmlFilePath = exports.generateSingleQueryMashup = exports.generateMashupXMLTemplate = void 0;\r\nconst generateMashupXMLTemplate = (base64) => `<?xml version=\"1.0\" encoding=\"utf-16\"?><DataMashup xmlns=\"http://schemas.microsoft.com/DataMashup\">${base64}</DataMashup>`;\r\nexports.generateMashupXMLTemplate = generateMashupXMLTemplate;\r\nconst generateSingleQueryMashup = (queryName, query) => `section Section1;\r\n \r\n shared #\"${queryName}\" = \r\n ${query};`;\r\nexports.generateSingleQueryMashup = generateSingleQueryMashup;\r\nconst generateCustomXmlFilePath = (i) => `customXml/item${i}.xml`;\r\nexports.generateCustomXmlFilePath = generateCustomXmlFilePath;\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/generators.ts?");
61
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ generateCustomXmlFilePath: () => (/* binding */ generateCustomXmlFilePath),\n/* harmony export */ generateMashupXMLTemplate: () => (/* binding */ generateMashupXMLTemplate),\n/* harmony export */ generateSingleQueryMashup: () => (/* binding */ generateSingleQueryMashup)\n/* harmony export */ });\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar generateMashupXMLTemplate = function (base64) {\r\n return \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-16\\\"?><DataMashup xmlns=\\\"http://schemas.microsoft.com/DataMashup\\\">\".concat(base64, \"</DataMashup>\");\r\n};\r\nvar generateSingleQueryMashup = function (queryName, query) {\r\n return \"section Section1;\\n \\n shared #\\\"\".concat(queryName, \"\\\" = \\n \").concat(query, \";\");\r\n};\r\nvar generateCustomXmlFilePath = function (i) { return \"customXml/item\".concat(i, \".xml\"); };\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/generators.ts?");
62
62
 
63
63
  /***/ }),
64
64
 
@@ -66,10 +66,10 @@ eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT l
66
66
  /*!**********************!*\
67
67
  !*** ./src/index.ts ***!
68
68
  \**********************/
69
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
69
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
70
70
 
71
71
  "use strict";
72
- eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.DataTypes = void 0;\r\nconst workbookManager = __importStar(__webpack_require__(/*! ./workbookManager */ \"./src/workbookManager.ts\"));\r\nconst types_1 = __webpack_require__(/*! ./types */ \"./src/types.ts\");\r\nObject.defineProperty(exports, \"DataTypes\", ({ enumerable: true, get: function () { return types_1.DataTypes; } }));\r\nexports[\"default\"] = workbookManager;\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/index.ts?");
72
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DataTypes: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_1__.DataTypes),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _workbookManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./workbookManager */ \"./src/workbookManager.ts\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types */ \"./src/types.ts\");\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\n\r\n\r\n\r\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_workbookManager__WEBPACK_IMPORTED_MODULE_0__);\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/index.ts?");
73
73
 
74
74
  /***/ }),
75
75
 
@@ -77,10 +77,10 @@ eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT l
77
77
  /*!**********************!*\
78
78
  !*** ./src/types.ts ***!
79
79
  \**********************/
80
- /***/ ((__unused_webpack_module, exports) => {
80
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
81
81
 
82
82
  "use strict";
83
- eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.DocPropsAutoUpdatedElements = exports.DocPropsModifiableElements = exports.DataTypes = void 0;\r\nvar DataTypes;\r\n(function (DataTypes) {\r\n DataTypes[DataTypes[\"null\"] = 0] = \"null\";\r\n DataTypes[DataTypes[\"string\"] = 1] = \"string\";\r\n DataTypes[DataTypes[\"number\"] = 2] = \"number\";\r\n DataTypes[DataTypes[\"boolean\"] = 3] = \"boolean\";\r\n})(DataTypes = exports.DataTypes || (exports.DataTypes = {}));\r\nvar DocPropsModifiableElements;\r\n(function (DocPropsModifiableElements) {\r\n DocPropsModifiableElements[\"title\"] = \"dc:title\";\r\n DocPropsModifiableElements[\"subject\"] = \"dc:subject\";\r\n DocPropsModifiableElements[\"keywords\"] = \"cp:keywords\";\r\n DocPropsModifiableElements[\"createdBy\"] = \"dc:creator\";\r\n DocPropsModifiableElements[\"description\"] = \"dc:description\";\r\n DocPropsModifiableElements[\"lastModifiedBy\"] = \"cp:lastModifiedBy\";\r\n DocPropsModifiableElements[\"category\"] = \"cp:category\";\r\n DocPropsModifiableElements[\"revision\"] = \"cp:revision\";\r\n})(DocPropsModifiableElements = exports.DocPropsModifiableElements || (exports.DocPropsModifiableElements = {}));\r\nvar DocPropsAutoUpdatedElements;\r\n(function (DocPropsAutoUpdatedElements) {\r\n DocPropsAutoUpdatedElements[\"created\"] = \"dcterms:created\";\r\n DocPropsAutoUpdatedElements[\"modified\"] = \"dcterms:modified\";\r\n})(DocPropsAutoUpdatedElements = exports.DocPropsAutoUpdatedElements || (exports.DocPropsAutoUpdatedElements = {}));\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/types.ts?");
83
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DataTypes: () => (/* binding */ DataTypes),\n/* harmony export */ DocPropsAutoUpdatedElements: () => (/* binding */ DocPropsAutoUpdatedElements),\n/* harmony export */ DocPropsModifiableElements: () => (/* binding */ DocPropsModifiableElements)\n/* harmony export */ });\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar DataTypes;\r\n(function (DataTypes) {\r\n DataTypes[DataTypes[\"null\"] = 0] = \"null\";\r\n DataTypes[DataTypes[\"string\"] = 1] = \"string\";\r\n DataTypes[DataTypes[\"number\"] = 2] = \"number\";\r\n DataTypes[DataTypes[\"boolean\"] = 3] = \"boolean\";\r\n})(DataTypes || (DataTypes = {}));\r\nvar DocPropsModifiableElements;\r\n(function (DocPropsModifiableElements) {\r\n DocPropsModifiableElements[\"title\"] = \"dc:title\";\r\n DocPropsModifiableElements[\"subject\"] = \"dc:subject\";\r\n DocPropsModifiableElements[\"keywords\"] = \"cp:keywords\";\r\n DocPropsModifiableElements[\"createdBy\"] = \"dc:creator\";\r\n DocPropsModifiableElements[\"description\"] = \"dc:description\";\r\n DocPropsModifiableElements[\"lastModifiedBy\"] = \"cp:lastModifiedBy\";\r\n DocPropsModifiableElements[\"category\"] = \"cp:category\";\r\n DocPropsModifiableElements[\"revision\"] = \"cp:revision\";\r\n})(DocPropsModifiableElements || (DocPropsModifiableElements = {}));\r\nvar DocPropsAutoUpdatedElements;\r\n(function (DocPropsAutoUpdatedElements) {\r\n DocPropsAutoUpdatedElements[\"created\"] = \"dcterms:created\";\r\n DocPropsAutoUpdatedElements[\"modified\"] = \"dcterms:modified\";\r\n})(DocPropsAutoUpdatedElements || (DocPropsAutoUpdatedElements = {}));\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/types.ts?");
84
84
 
85
85
  /***/ }),
86
86
 
@@ -88,10 +88,10 @@ eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT l
88
88
  /*!*********************************!*\
89
89
  !*** ./src/utils/arrayUtils.ts ***!
90
90
  \*********************************/
91
- /***/ ((__unused_webpack_module, exports) => {
91
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
92
92
 
93
93
  "use strict";
94
- eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ArrayReader = void 0;\r\nclass ArrayReader {\r\n constructor(array) {\r\n this._array = array;\r\n this._position = 0;\r\n }\r\n getInt32() {\r\n const retVal = new DataView(this._array, this._position, 4).getInt32(0, true);\r\n this._position += 4;\r\n return retVal;\r\n }\r\n getBytes(bytes) {\r\n const retVal = this._array.slice(this._position, bytes ? bytes + this._position : bytes);\r\n this._position += retVal.byteLength;\r\n return new Uint8Array(retVal);\r\n }\r\n reset() {\r\n this._position = 0;\r\n }\r\n}\r\nexports.ArrayReader = ArrayReader;\r\nfunction getInt32Buffer(val) {\r\n const packageSizeBuffer = new ArrayBuffer(4);\r\n new DataView(packageSizeBuffer).setInt32(0, val, true);\r\n return new Uint8Array(packageSizeBuffer);\r\n}\r\nfunction concatArrays(...args) {\r\n let size = 0;\r\n args.forEach((arr) => (size += arr.byteLength));\r\n const retVal = new Uint8Array(size);\r\n let position = 0;\r\n args.forEach((arr) => {\r\n retVal.set(arr, position);\r\n position += arr.byteLength;\r\n });\r\n return retVal;\r\n}\r\nexports[\"default\"] = {\r\n ArrayReader,\r\n getInt32Buffer,\r\n concatArrays,\r\n};\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/arrayUtils.ts?");
94
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ArrayReader: () => (/* binding */ ArrayReader),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar ArrayReader = /** @class */ (function () {\r\n function ArrayReader(array) {\r\n this._array = array;\r\n this._position = 0;\r\n }\r\n ArrayReader.prototype.getInt32 = function () {\r\n var retVal = new DataView(this._array, this._position, 4).getInt32(0, true);\r\n this._position += 4;\r\n return retVal;\r\n };\r\n ArrayReader.prototype.getBytes = function (bytes) {\r\n var retVal = this._array.slice(this._position, bytes ? bytes + this._position : bytes);\r\n this._position += retVal.byteLength;\r\n return new Uint8Array(retVal);\r\n };\r\n ArrayReader.prototype.reset = function () {\r\n this._position = 0;\r\n };\r\n return ArrayReader;\r\n}());\r\n\r\nfunction getInt32Buffer(val) {\r\n var packageSizeBuffer = new ArrayBuffer(4);\r\n new DataView(packageSizeBuffer).setInt32(0, val, true);\r\n return new Uint8Array(packageSizeBuffer);\r\n}\r\nfunction concatArrays() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var size = 0;\r\n args.forEach(function (arr) { return (size += arr.byteLength); });\r\n var retVal = new Uint8Array(size);\r\n var position = 0;\r\n args.forEach(function (arr) {\r\n retVal.set(arr, position);\r\n position += arr.byteLength;\r\n });\r\n return retVal;\r\n}\r\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\r\n ArrayReader: ArrayReader,\r\n getInt32Buffer: getInt32Buffer,\r\n concatArrays: concatArrays,\r\n});\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/arrayUtils.ts?");
95
95
 
96
96
  /***/ }),
97
97
 
@@ -99,10 +99,10 @@ eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT l
99
99
  /*!********************************!*\
100
100
  !*** ./src/utils/constants.ts ***!
101
101
  \********************************/
102
- /***/ ((__unused_webpack_module, exports) => {
102
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
103
103
 
104
104
  "use strict";
105
- eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.trueStr = exports.maxQueryLength = exports.divider = exports.section1PathPrefix = exports.emptyValue = exports.falseValue = exports.trueValue = exports.pivotCachesPathPrefix = exports.xmlTextResultType = exports.textResultType = exports.application = exports.uint8ArrayType = exports.blobFileType = exports.relsNotFoundErr = exports.arrayIsntMxNErr = exports.unexpectedErr = exports.promotedHeadersCannotBeUsedWithoutAdjustingColumnNamesErr = exports.InvalidColumnNameErr = exports.stylesNotFoundErr = exports.EmptyQueryNameErr = exports.QueryNameInvalidCharsErr = exports.QueryNameMaxLengthErr = exports.invalidDataTypeErr = exports.headerNotFoundErr = exports.invalidValueInColumnErr = exports.tableNotFoundErr = exports.queryTableNotFoundErr = exports.templateWithInitialDataErr = exports.formulaSectionNotFoundErr = exports.queryConnectionNotFoundErr = exports.queryAndPivotTableNotFoundErr = exports.queryNameNotFoundErr = exports.emptyQueryMashupErr = exports.base64NotFoundErr = exports.sheetsNotFoundErr = exports.connectionsNotFoundErr = exports.sharedStringsNotFoundErr = exports.docPropsRootElement = exports.docMetadataXmlPath = exports.relsXmlPath = exports.docPropsCoreXmlPath = exports.section1mPath = exports.pivotCachesPath = exports.queryTablesPath = exports.workbookXmlPath = exports.queryTableXmlPath = exports.tableXmlPath = exports.sheetsXmlPath = exports.sharedStringsXmlPath = exports.connectionsXmlPath = void 0;\r\nexports.headers = exports.URLS = exports.defaults = exports.elementAttributesValues = exports.dataTypeKind = exports.elementAttributes = exports.element = exports.BOM = exports.falseStr = void 0;\r\nexports.connectionsXmlPath = \"xl/connections.xml\";\r\nexports.sharedStringsXmlPath = \"xl/sharedStrings.xml\";\r\nexports.sheetsXmlPath = \"xl/worksheets/sheet1.xml\";\r\nexports.tableXmlPath = \"xl/tables/table1.xml\";\r\nexports.queryTableXmlPath = \"xl/queryTables/queryTable1.xml\";\r\nexports.workbookXmlPath = \"xl/workbook.xml\";\r\nexports.queryTablesPath = \"xl/queryTables/\";\r\nexports.pivotCachesPath = \"xl/pivotCache/\";\r\nexports.section1mPath = \"Formulas/Section1.m\";\r\nexports.docPropsCoreXmlPath = \"docProps/core.xml\";\r\nexports.relsXmlPath = \"_rels/.rels\";\r\nexports.docMetadataXmlPath = \"docMetadata\";\r\nexports.docPropsRootElement = \"cp:coreProperties\";\r\nexports.sharedStringsNotFoundErr = \"SharedStrings were not found in template\";\r\nexports.connectionsNotFoundErr = \"Connections were not found in template\";\r\nexports.sheetsNotFoundErr = \"Sheets were not found in template\";\r\nexports.base64NotFoundErr = \"Base64 was not found in template\";\r\nexports.emptyQueryMashupErr = \"Query mashup is empty\";\r\nexports.queryNameNotFoundErr = \"Query name was not found\";\r\nexports.queryAndPivotTableNotFoundErr = \"No such query found in Query Table or Pivot Table found in given template\";\r\nexports.queryConnectionNotFoundErr = \"No connection found for query\";\r\nexports.formulaSectionNotFoundErr = \"Formula section wasn't found in template\";\r\nexports.templateWithInitialDataErr = \"Cannot use a template file with initial data\";\r\nexports.queryTableNotFoundErr = \"Query table wasn't found in template\";\r\nexports.tableNotFoundErr = \"Table wasn't found in template\";\r\nexports.invalidValueInColumnErr = \"Invalid cell value in column\";\r\nexports.headerNotFoundErr = \"Invalid JSON file, header is missing\";\r\nexports.invalidDataTypeErr = \"Invalid JSON file, invalid data type\";\r\nexports.QueryNameMaxLengthErr = \"Query names are limited to 80 characters\";\r\nexports.QueryNameInvalidCharsErr = 'Query names cannot contain periods or quotation marks. (. \")';\r\nexports.EmptyQueryNameErr = \"Query name cannot be empty\";\r\nexports.stylesNotFoundErr = \"Styles were not found in template\";\r\nexports.InvalidColumnNameErr = \"Invalid column name\";\r\nexports.promotedHeadersCannotBeUsedWithoutAdjustingColumnNamesErr = \"Headers cannot be promoted without adjusting column names\";\r\nexports.unexpectedErr = \"Unexpected error\";\r\nexports.arrayIsntMxNErr = \"Array isn't MxN\";\r\nexports.relsNotFoundErr = \".rels were not found in template\";\r\nexports.blobFileType = \"blob\";\r\nexports.uint8ArrayType = \"uint8array\";\r\nexports.application = \"application/xlsx\";\r\nexports.textResultType = \"text\";\r\nexports.xmlTextResultType = \"text/xml\";\r\nexports.pivotCachesPathPrefix = \"pivotCacheDefinition\";\r\nexports.trueValue = \"1\";\r\nexports.falseValue = \"0\";\r\nexports.emptyValue = \"\";\r\nexports.section1PathPrefix = \"Section1/\";\r\nexports.divider = \"/\";\r\nexports.maxQueryLength = 80;\r\nexports.trueStr = \"true\";\r\nexports.falseStr = \"false\";\r\nexports.BOM = \"\\ufeff\";\r\nexports.element = {\r\n sharedStringTable: \"sst\",\r\n text: \"t\",\r\n sharedStringItem: \"si\",\r\n cellValue: \"v\",\r\n databaseProperties: \"dbPr\",\r\n queryTable: \"queryTable\",\r\n cacheSource: \"cacheSource\",\r\n item: \"Item\",\r\n items: \"Items\",\r\n itemPath: \"ItemPath\",\r\n itemType: \"ItemType\",\r\n itemLocation: \"ItemLocation\",\r\n entry: \"Entry\",\r\n stableEntries: \"StableEntries\",\r\n tableColumns: \"tableColumns\",\r\n tableColumn: \"tableColumn\",\r\n table: \"table\",\r\n autoFilter: \"autoFilter\",\r\n definedName: \"definedName\",\r\n queryTableFields: \"queryTableFields\",\r\n queryTableField: \"queryTableField\",\r\n queryTableRefresh: \"queryTableRefresh\",\r\n sheetData: \"sheetData\",\r\n row: \"row\",\r\n dimension: \"dimension\",\r\n selection: \"selection\",\r\n kindCell: \"c\",\r\n};\r\nexports.elementAttributes = {\r\n connection: \"connection\",\r\n command: \"command\",\r\n refreshOnLoad: \"refreshOnLoad\",\r\n count: \"count\",\r\n uniqueCount: \"uniqueCount\",\r\n queryTable: \"queryTable\",\r\n connectionId: \"connectionId\",\r\n cacheSource: \"cacheSource\",\r\n name: \"name\",\r\n description: \"description\",\r\n id: \"id\",\r\n type: \"Type\",\r\n value: \"Value\",\r\n relationshipInfo: \"RelationshipInfoContainer\",\r\n resultType: \"ResultType\",\r\n fillColumnNames: \"FillColumnNames\",\r\n fillTarget: \"FillTarget\",\r\n fillLastUpdated: \"FillLastUpdated\",\r\n day: \"d\",\r\n uniqueName: \"uniqueName\",\r\n queryTableFieldId: \"queryTableFieldId\",\r\n reference: \"ref\",\r\n sqref: \"sqref\",\r\n tableColumnId: \"tableColumnId\",\r\n nextId: \"nextId\",\r\n row: \"r\",\r\n spans: \"spans\",\r\n x14acDyDescent: \"x14ac:dyDescent\",\r\n xr3uid: \"xr3:uid\",\r\n space: \"xml:space\",\r\n};\r\nexports.dataTypeKind = {\r\n string: \"str\",\r\n number: \"1\",\r\n boolean: \"b\",\r\n};\r\nexports.elementAttributesValues = {\r\n connectionName: (queryName) => `Query - ${queryName}`,\r\n connectionDescription: (queryName) => `Connection to the '${queryName}' query in the workbook.`,\r\n connection: (queryName) => `Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=\"${queryName}\";`,\r\n connectionCommand: (queryName) => `SELECT * FROM [${queryName}]`,\r\n tableResultType: () => \"sTable\",\r\n};\r\nexports.defaults = {\r\n queryName: \"Query1\",\r\n sheetName: \"Sheet1\",\r\n columnName: \"Column\",\r\n};\r\nexports.URLS = {\r\n PQ: [\r\n \"http://schemas.microsoft.com/DataMashup\",\r\n \"http://schemas.microsoft.com/DataExplorer\",\r\n \"http://schemas.microsoft.com/DataMashup/Temp\",\r\n \"http://schemas.microsoft.com/DataExplorer/Temp\",\r\n ],\r\n CONNECTED_WORKBOOK: \"http://schemas.microsoft.com/ConnectedWorkbook\",\r\n};\r\n// Content-Type header to indicate that the content is an Excel document\r\nexports.headers = {\r\n \"Content-Type\": \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\r\n};\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/constants.ts?");
105
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BOM: () => (/* binding */ BOM),\n/* harmony export */ EmptyQueryNameErr: () => (/* binding */ EmptyQueryNameErr),\n/* harmony export */ InvalidColumnNameErr: () => (/* binding */ InvalidColumnNameErr),\n/* harmony export */ OFU: () => (/* binding */ OFU),\n/* harmony export */ QueryNameInvalidCharsErr: () => (/* binding */ QueryNameInvalidCharsErr),\n/* harmony export */ QueryNameMaxLengthErr: () => (/* binding */ QueryNameMaxLengthErr),\n/* harmony export */ URLS: () => (/* binding */ URLS),\n/* harmony export */ application: () => (/* binding */ application),\n/* harmony export */ arrayIsntMxNErr: () => (/* binding */ arrayIsntMxNErr),\n/* harmony export */ base64NotFoundErr: () => (/* binding */ base64NotFoundErr),\n/* harmony export */ blobFileType: () => (/* binding */ blobFileType),\n/* harmony export */ connectionsNotFoundErr: () => (/* binding */ connectionsNotFoundErr),\n/* harmony export */ connectionsXmlPath: () => (/* binding */ connectionsXmlPath),\n/* harmony export */ dataTypeKind: () => (/* binding */ dataTypeKind),\n/* harmony export */ defaults: () => (/* binding */ defaults),\n/* harmony export */ divider: () => (/* binding */ divider),\n/* harmony export */ docMetadataXmlPath: () => (/* binding */ docMetadataXmlPath),\n/* harmony export */ docPropsCoreXmlPath: () => (/* binding */ docPropsCoreXmlPath),\n/* harmony export */ docPropsRootElement: () => (/* binding */ docPropsRootElement),\n/* harmony export */ element: () => (/* binding */ element),\n/* harmony export */ elementAttributes: () => (/* binding */ elementAttributes),\n/* harmony export */ elementAttributesValues: () => (/* binding */ elementAttributesValues),\n/* harmony export */ emptyQueryMashupErr: () => (/* binding */ emptyQueryMashupErr),\n/* harmony export */ emptyValue: () => (/* binding */ emptyValue),\n/* harmony export */ falseStr: () => (/* binding */ falseStr),\n/* harmony export */ falseValue: () => (/* binding */ falseValue),\n/* harmony export */ formulaSectionNotFoundErr: () => (/* binding */ formulaSectionNotFoundErr),\n/* harmony export */ headerNotFoundErr: () => (/* binding */ headerNotFoundErr),\n/* harmony export */ headers: () => (/* binding */ headers),\n/* harmony export */ invalidDataTypeErr: () => (/* binding */ invalidDataTypeErr),\n/* harmony export */ invalidValueInColumnErr: () => (/* binding */ invalidValueInColumnErr),\n/* harmony export */ maxQueryLength: () => (/* binding */ maxQueryLength),\n/* harmony export */ pivotCachesPath: () => (/* binding */ pivotCachesPath),\n/* harmony export */ pivotCachesPathPrefix: () => (/* binding */ pivotCachesPathPrefix),\n/* harmony export */ promotedHeadersCannotBeUsedWithoutAdjustingColumnNamesErr: () => (/* binding */ promotedHeadersCannotBeUsedWithoutAdjustingColumnNamesErr),\n/* harmony export */ queryAndPivotTableNotFoundErr: () => (/* binding */ queryAndPivotTableNotFoundErr),\n/* harmony export */ queryConnectionNotFoundErr: () => (/* binding */ queryConnectionNotFoundErr),\n/* harmony export */ queryNameNotFoundErr: () => (/* binding */ queryNameNotFoundErr),\n/* harmony export */ queryTableNotFoundErr: () => (/* binding */ queryTableNotFoundErr),\n/* harmony export */ queryTableXmlPath: () => (/* binding */ queryTableXmlPath),\n/* harmony export */ queryTablesPath: () => (/* binding */ queryTablesPath),\n/* harmony export */ relsNotFoundErr: () => (/* binding */ relsNotFoundErr),\n/* harmony export */ relsXmlPath: () => (/* binding */ relsXmlPath),\n/* harmony export */ section1PathPrefix: () => (/* binding */ section1PathPrefix),\n/* harmony export */ section1mPath: () => (/* binding */ section1mPath),\n/* harmony export */ sharedStringsNotFoundErr: () => (/* binding */ sharedStringsNotFoundErr),\n/* harmony export */ sharedStringsXmlPath: () => (/* binding */ sharedStringsXmlPath),\n/* harmony export */ sheetsNotFoundErr: () => (/* binding */ sheetsNotFoundErr),\n/* harmony export */ sheetsXmlPath: () => (/* binding */ sheetsXmlPath),\n/* harmony export */ stylesNotFoundErr: () => (/* binding */ stylesNotFoundErr),\n/* harmony export */ tableNotFoundErr: () => (/* binding */ tableNotFoundErr),\n/* harmony export */ tableXmlPath: () => (/* binding */ tableXmlPath),\n/* harmony export */ templateWithInitialDataErr: () => (/* binding */ templateWithInitialDataErr),\n/* harmony export */ textResultType: () => (/* binding */ textResultType),\n/* harmony export */ trueStr: () => (/* binding */ trueStr),\n/* harmony export */ trueValue: () => (/* binding */ trueValue),\n/* harmony export */ uint8ArrayType: () => (/* binding */ uint8ArrayType),\n/* harmony export */ unexpectedErr: () => (/* binding */ unexpectedErr),\n/* harmony export */ workbookXmlPath: () => (/* binding */ workbookXmlPath),\n/* harmony export */ xmlTextResultType: () => (/* binding */ xmlTextResultType)\n/* harmony export */ });\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar connectionsXmlPath = \"xl/connections.xml\";\r\nvar sharedStringsXmlPath = \"xl/sharedStrings.xml\";\r\nvar sheetsXmlPath = \"xl/worksheets/sheet1.xml\";\r\nvar tableXmlPath = \"xl/tables/table1.xml\";\r\nvar queryTableXmlPath = \"xl/queryTables/queryTable1.xml\";\r\nvar workbookXmlPath = \"xl/workbook.xml\";\r\nvar queryTablesPath = \"xl/queryTables/\";\r\nvar pivotCachesPath = \"xl/pivotCache/\";\r\nvar section1mPath = \"Formulas/Section1.m\";\r\nvar docPropsCoreXmlPath = \"docProps/core.xml\";\r\nvar relsXmlPath = \"_rels/.rels\";\r\nvar docMetadataXmlPath = \"docMetadata\";\r\nvar docPropsRootElement = \"cp:coreProperties\";\r\nvar sharedStringsNotFoundErr = \"SharedStrings were not found in template\";\r\nvar connectionsNotFoundErr = \"Connections were not found in template\";\r\nvar sheetsNotFoundErr = \"Sheets were not found in template\";\r\nvar base64NotFoundErr = \"Base64 was not found in template\";\r\nvar emptyQueryMashupErr = \"Query mashup is empty\";\r\nvar queryNameNotFoundErr = \"Query name was not found\";\r\nvar queryAndPivotTableNotFoundErr = \"No such query found in Query Table or Pivot Table found in given template\";\r\nvar queryConnectionNotFoundErr = \"No connection found for query\";\r\nvar formulaSectionNotFoundErr = \"Formula section wasn't found in template\";\r\nvar templateWithInitialDataErr = \"Cannot use a template file with initial data\";\r\nvar queryTableNotFoundErr = \"Query table wasn't found in template\";\r\nvar tableNotFoundErr = \"Table wasn't found in template\";\r\nvar invalidValueInColumnErr = \"Invalid cell value in column\";\r\nvar headerNotFoundErr = \"Invalid JSON file, header is missing\";\r\nvar invalidDataTypeErr = \"Invalid JSON file, invalid data type\";\r\nvar QueryNameMaxLengthErr = \"Query names are limited to 80 characters\";\r\nvar QueryNameInvalidCharsErr = 'Query names cannot contain periods or quotation marks. (. \")';\r\nvar EmptyQueryNameErr = \"Query name cannot be empty\";\r\nvar stylesNotFoundErr = \"Styles were not found in template\";\r\nvar InvalidColumnNameErr = \"Invalid column name\";\r\nvar promotedHeadersCannotBeUsedWithoutAdjustingColumnNamesErr = \"Headers cannot be promoted without adjusting column names\";\r\nvar unexpectedErr = \"Unexpected error\";\r\nvar arrayIsntMxNErr = \"Array isn't MxN\";\r\nvar relsNotFoundErr = \".rels were not found in template\";\r\nvar blobFileType = \"blob\";\r\nvar uint8ArrayType = \"uint8array\";\r\nvar application = \"application/xlsx\";\r\nvar textResultType = \"text\";\r\nvar xmlTextResultType = \"text/xml\";\r\nvar pivotCachesPathPrefix = \"pivotCacheDefinition\";\r\nvar trueValue = \"1\";\r\nvar falseValue = \"0\";\r\nvar emptyValue = \"\";\r\nvar section1PathPrefix = \"Section1/\";\r\nvar divider = \"/\";\r\nvar maxQueryLength = 80;\r\nvar trueStr = \"true\";\r\nvar falseStr = \"false\";\r\nvar BOM = \"\\ufeff\";\r\nvar element = {\r\n sharedStringTable: \"sst\",\r\n text: \"t\",\r\n sharedStringItem: \"si\",\r\n cellValue: \"v\",\r\n databaseProperties: \"dbPr\",\r\n queryTable: \"queryTable\",\r\n cacheSource: \"cacheSource\",\r\n item: \"Item\",\r\n items: \"Items\",\r\n itemPath: \"ItemPath\",\r\n itemType: \"ItemType\",\r\n itemLocation: \"ItemLocation\",\r\n entry: \"Entry\",\r\n stableEntries: \"StableEntries\",\r\n tableColumns: \"tableColumns\",\r\n tableColumn: \"tableColumn\",\r\n table: \"table\",\r\n autoFilter: \"autoFilter\",\r\n definedName: \"definedName\",\r\n queryTableFields: \"queryTableFields\",\r\n queryTableField: \"queryTableField\",\r\n queryTableRefresh: \"queryTableRefresh\",\r\n sheetData: \"sheetData\",\r\n row: \"row\",\r\n dimension: \"dimension\",\r\n selection: \"selection\",\r\n kindCell: \"c\",\r\n};\r\nvar elementAttributes = {\r\n connection: \"connection\",\r\n command: \"command\",\r\n refreshOnLoad: \"refreshOnLoad\",\r\n count: \"count\",\r\n uniqueCount: \"uniqueCount\",\r\n queryTable: \"queryTable\",\r\n connectionId: \"connectionId\",\r\n cacheSource: \"cacheSource\",\r\n name: \"name\",\r\n description: \"description\",\r\n id: \"id\",\r\n type: \"Type\",\r\n value: \"Value\",\r\n relationshipInfo: \"RelationshipInfoContainer\",\r\n resultType: \"ResultType\",\r\n fillColumnNames: \"FillColumnNames\",\r\n fillTarget: \"FillTarget\",\r\n fillLastUpdated: \"FillLastUpdated\",\r\n day: \"d\",\r\n uniqueName: \"uniqueName\",\r\n queryTableFieldId: \"queryTableFieldId\",\r\n reference: \"ref\",\r\n sqref: \"sqref\",\r\n tableColumnId: \"tableColumnId\",\r\n nextId: \"nextId\",\r\n row: \"r\",\r\n spans: \"spans\",\r\n x14acDyDescent: \"x14ac:dyDescent\",\r\n xr3uid: \"xr3:uid\",\r\n space: \"xml:space\",\r\n};\r\nvar dataTypeKind = {\r\n string: \"str\",\r\n number: \"1\",\r\n boolean: \"b\",\r\n};\r\nvar elementAttributesValues = {\r\n connectionName: function (queryName) { return \"Query - \".concat(queryName); },\r\n connectionDescription: function (queryName) { return \"Connection to the '\".concat(queryName, \"' query in the workbook.\"); },\r\n connection: function (queryName) { return \"Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=\\\"\".concat(queryName, \"\\\";\"); },\r\n connectionCommand: function (queryName) { return \"SELECT * FROM [\".concat(queryName, \"]\"); },\r\n tableResultType: function () { return \"sTable\"; },\r\n};\r\nvar defaults = {\r\n queryName: \"Query1\",\r\n sheetName: \"Sheet1\",\r\n columnName: \"Column\",\r\n};\r\nvar URLS = {\r\n PQ: [\r\n \"http://schemas.microsoft.com/DataMashup\",\r\n \"http://schemas.microsoft.com/DataExplorer\",\r\n \"http://schemas.microsoft.com/DataMashup/Temp\",\r\n \"http://schemas.microsoft.com/DataExplorer/Temp\",\r\n ],\r\n CONNECTED_WORKBOOK: \"http://schemas.microsoft.com/ConnectedWorkbook\",\r\n};\r\n// Content-Type header to indicate that the content is an Excel document\r\nvar headers = {\r\n \"Content-Type\": \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\r\n};\r\nvar OFU = {\r\n ViewUrl: \"https://view.officeapps.live.com/op/view.aspx?src=http://connectedWorkbooks.excel/\",\r\n PostUrl: \"https://view.officeapps.live.com/op/viewpost.aspx?src=http://connectedWorkbooks.excel/\",\r\n allowTyping: \"AllowTyping\",\r\n};\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/constants.ts?");
106
106
 
107
107
  /***/ }),
108
108
 
@@ -110,10 +110,10 @@ eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT l
110
110
  /*!************************************!*\
111
111
  !*** ./src/utils/documentUtils.ts ***!
112
112
  \************************************/
113
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
113
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
114
114
 
115
115
  "use strict";
116
- eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nconst constants_1 = __webpack_require__(/*! ./constants */ \"./src/utils/constants.ts\");\r\nconst types_1 = __webpack_require__(/*! ../types */ \"./src/types.ts\");\r\nconst createOrUpdateProperty = (doc, parent, property, value) => {\r\n if (value === undefined) {\r\n return;\r\n }\r\n const elements = parent.getElementsByTagName(property);\r\n if ((elements === null || elements === void 0 ? void 0 : elements.length) === 0) {\r\n const newElement = doc.createElement(property);\r\n newElement.textContent = value;\r\n parent.appendChild(newElement);\r\n }\r\n else if (elements.length > 1) {\r\n throw new Error(`Invalid DocProps core.xml, multiple ${property} elements`);\r\n }\r\n else if ((elements === null || elements === void 0 ? void 0 : elements.length) > 0) {\r\n elements[0].textContent = value;\r\n }\r\n};\r\nconst getDocPropsProperties = (zip) => __awaiter(void 0, void 0, void 0, function* () {\r\n var _a;\r\n const docPropsCoreXmlString = yield ((_a = zip.file(constants_1.docPropsCoreXmlPath)) === null || _a === void 0 ? void 0 : _a.async(constants_1.textResultType));\r\n if (docPropsCoreXmlString === undefined) {\r\n throw new Error(\"DocProps core.xml was not found in template\");\r\n }\r\n const parser = new DOMParser();\r\n const doc = parser.parseFromString(docPropsCoreXmlString, constants_1.xmlTextResultType);\r\n const properties = doc.getElementsByTagName(constants_1.docPropsRootElement).item(0);\r\n if (properties === null) {\r\n throw new Error(\"Invalid DocProps core.xml\");\r\n }\r\n return { doc, properties };\r\n});\r\nconst getCellReferenceAbsolute = (col, row) => {\r\n // 65 is the ascii value of first column 'A'\r\n return \"$\" + String.fromCharCode(col + 65) + \"$\" + row.toString();\r\n};\r\nconst getCellReferenceRelative = (col, row) => {\r\n // 65 is the ascii value of first column 'A'\r\n return String.fromCharCode(col + 65) + row.toString();\r\n};\r\nconst getTableReference = (numberOfCols, numberOfRows) => {\r\n return `A1:${getCellReferenceRelative(numberOfCols, numberOfRows)}`;\r\n};\r\nconst createCellElement = (doc, colIndex, rowIndex, data) => {\r\n const cell = doc.createElementNS(doc.documentElement.namespaceURI, constants_1.element.kindCell);\r\n cell.setAttribute(constants_1.elementAttributes.row, getCellReferenceRelative(colIndex, rowIndex + 1));\r\n const cellData = doc.createElementNS(doc.documentElement.namespaceURI, constants_1.element.cellValue);\r\n updateCellData(data, cell, cellData, rowIndex === 0);\r\n cell.appendChild(cellData);\r\n return cell;\r\n};\r\nconst updateCellData = (data, cell, cellData, rowHeader) => {\r\n switch (resolveType(data, rowHeader)) {\r\n case types_1.DataTypes.string:\r\n cell.setAttribute(constants_1.element.text, constants_1.dataTypeKind.string);\r\n break;\r\n case types_1.DataTypes.number:\r\n cell.setAttribute(constants_1.element.text, constants_1.dataTypeKind.number);\r\n break;\r\n case types_1.DataTypes.boolean:\r\n cell.setAttribute(constants_1.element.text, constants_1.dataTypeKind.boolean);\r\n break;\r\n }\r\n if (data.startsWith(\" \") || data.endsWith(\" \")) {\r\n cellData.setAttribute(constants_1.elementAttributes.space, \"preserve\");\r\n }\r\n cellData.textContent = data;\r\n};\r\nconst resolveType = (originalData, rowHeader) => {\r\n const data = originalData;\r\n if ((rowHeader) || (data.trim() === \"\")) {\r\n // Headers and whitespace should be string by default.\r\n return types_1.DataTypes.string;\r\n }\r\n let dataType = isNaN(Number(data)) ? types_1.DataTypes.string : types_1.DataTypes.number;\r\n if (dataType == types_1.DataTypes.string) {\r\n if (data.trim() == constants_1.trueStr || data.trim() == constants_1.falseStr) {\r\n dataType = types_1.DataTypes.boolean;\r\n }\r\n }\r\n return dataType;\r\n};\r\nexports[\"default\"] = {\r\n createOrUpdateProperty,\r\n getDocPropsProperties,\r\n getCellReferenceRelative,\r\n getCellReferenceAbsolute,\r\n createCell: createCellElement,\r\n getTableReference,\r\n updateCellData,\r\n resolveType,\r\n};\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/documentUtils.ts?");
116
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ \"./src/utils/constants.ts\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../types */ \"./src/types.ts\");\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\n\r\n\r\nvar createOrUpdateProperty = function (doc, parent, property, value) {\r\n if (value === undefined) {\r\n return;\r\n }\r\n var elements = parent.getElementsByTagName(property);\r\n if ((elements === null || elements === void 0 ? void 0 : elements.length) === 0) {\r\n var newElement = doc.createElement(property);\r\n newElement.textContent = value;\r\n parent.appendChild(newElement);\r\n }\r\n else if (elements.length > 1) {\r\n throw new Error(\"Invalid DocProps core.xml, multiple \".concat(property, \" elements\"));\r\n }\r\n else if ((elements === null || elements === void 0 ? void 0 : elements.length) > 0) {\r\n elements[0].textContent = value;\r\n }\r\n};\r\nvar getDocPropsProperties = function (zip) { return __awaiter(void 0, void 0, void 0, function () {\r\n var docPropsCoreXmlString, parser, doc, properties;\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, ((_a = zip.file(_constants__WEBPACK_IMPORTED_MODULE_0__.docPropsCoreXmlPath)) === null || _a === void 0 ? void 0 : _a.async(_constants__WEBPACK_IMPORTED_MODULE_0__.textResultType))];\r\n case 1:\r\n docPropsCoreXmlString = _b.sent();\r\n if (docPropsCoreXmlString === undefined) {\r\n throw new Error(\"DocProps core.xml was not found in template\");\r\n }\r\n parser = new DOMParser();\r\n doc = parser.parseFromString(docPropsCoreXmlString, _constants__WEBPACK_IMPORTED_MODULE_0__.xmlTextResultType);\r\n properties = doc.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_0__.docPropsRootElement).item(0);\r\n if (properties === null) {\r\n throw new Error(\"Invalid DocProps core.xml\");\r\n }\r\n return [2 /*return*/, { doc: doc, properties: properties }];\r\n }\r\n });\r\n}); };\r\nvar getCellReferenceAbsolute = function (col, row) {\r\n // 65 is the ascii value of first column 'A'\r\n return \"$\" + String.fromCharCode(col + 65) + \"$\" + row.toString();\r\n};\r\nvar getCellReferenceRelative = function (col, row) {\r\n // 65 is the ascii value of first column 'A'\r\n return String.fromCharCode(col + 65) + row.toString();\r\n};\r\nvar getTableReference = function (numberOfCols, numberOfRows) {\r\n return \"A1:\".concat(getCellReferenceRelative(numberOfCols, numberOfRows));\r\n};\r\nvar createCellElement = function (doc, colIndex, rowIndex, data) {\r\n var cell = doc.createElementNS(doc.documentElement.namespaceURI, _constants__WEBPACK_IMPORTED_MODULE_0__.element.kindCell);\r\n cell.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.row, getCellReferenceRelative(colIndex, rowIndex + 1));\r\n var cellData = doc.createElementNS(doc.documentElement.namespaceURI, _constants__WEBPACK_IMPORTED_MODULE_0__.element.cellValue);\r\n updateCellData(data, cell, cellData, rowIndex === 0);\r\n cell.appendChild(cellData);\r\n return cell;\r\n};\r\nvar updateCellData = function (data, cell, cellData, rowHeader) {\r\n switch (resolveType(data, rowHeader)) {\r\n case _types__WEBPACK_IMPORTED_MODULE_1__.DataTypes.string:\r\n cell.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.element.text, _constants__WEBPACK_IMPORTED_MODULE_0__.dataTypeKind.string);\r\n break;\r\n case _types__WEBPACK_IMPORTED_MODULE_1__.DataTypes.number:\r\n cell.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.element.text, _constants__WEBPACK_IMPORTED_MODULE_0__.dataTypeKind.number);\r\n break;\r\n case _types__WEBPACK_IMPORTED_MODULE_1__.DataTypes.boolean:\r\n cell.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.element.text, _constants__WEBPACK_IMPORTED_MODULE_0__.dataTypeKind.boolean);\r\n break;\r\n }\r\n if (data.startsWith(\" \") || data.endsWith(\" \")) {\r\n cellData.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.space, \"preserve\");\r\n }\r\n cellData.textContent = data;\r\n};\r\nvar resolveType = function (originalData, rowHeader) {\r\n var data = originalData;\r\n if ((rowHeader) || (data.trim() === \"\")) {\r\n // Headers and whitespace should be string by default.\r\n return _types__WEBPACK_IMPORTED_MODULE_1__.DataTypes.string;\r\n }\r\n var dataType = isNaN(Number(data)) ? _types__WEBPACK_IMPORTED_MODULE_1__.DataTypes.string : _types__WEBPACK_IMPORTED_MODULE_1__.DataTypes.number;\r\n if (dataType == _types__WEBPACK_IMPORTED_MODULE_1__.DataTypes.string) {\r\n if (data.trim() == _constants__WEBPACK_IMPORTED_MODULE_0__.trueStr || data.trim() == _constants__WEBPACK_IMPORTED_MODULE_0__.falseStr) {\r\n dataType = _types__WEBPACK_IMPORTED_MODULE_1__.DataTypes.boolean;\r\n }\r\n }\r\n return dataType;\r\n};\r\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\r\n createOrUpdateProperty: createOrUpdateProperty,\r\n getDocPropsProperties: getDocPropsProperties,\r\n getCellReferenceRelative: getCellReferenceRelative,\r\n getCellReferenceAbsolute: getCellReferenceAbsolute,\r\n createCell: createCellElement,\r\n getTableReference: getTableReference,\r\n updateCellData: updateCellData,\r\n resolveType: resolveType,\r\n});\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/documentUtils.ts?");
117
117
 
118
118
  /***/ }),
119
119
 
@@ -121,10 +121,10 @@ eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT l
121
121
  /*!********************************!*\
122
122
  !*** ./src/utils/gridUtils.ts ***!
123
123
  \********************************/
124
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
124
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
125
125
 
126
126
  "use strict";
127
- eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nconst constants_1 = __webpack_require__(/*! ../utils/constants */ \"./src/utils/constants.ts\");\r\nconst parseToTableData = (grid) => {\r\n var _a, _b, _c, _d;\r\n if (grid === null || grid === undefined) {\r\n grid = { data: [] };\r\n }\r\n if (grid.data === null || grid.data === undefined) {\r\n grid.data = [];\r\n }\r\n const mergedGrid = {\r\n config: {\r\n promoteHeaders: (_b = (_a = grid.config) === null || _a === void 0 ? void 0 : _a.promoteHeaders) !== null && _b !== void 0 ? _b : false,\r\n adjustColumnNames: (_d = (_c = grid.config) === null || _c === void 0 ? void 0 : _c.adjustColumnNames) !== null && _d !== void 0 ? _d : true,\r\n },\r\n data: grid.data.map((row) => row.map((value) => { var _a; return (_a = value === null || value === void 0 ? void 0 : value.toString()) !== null && _a !== void 0 ? _a : \"\"; })),\r\n };\r\n correctGrid(mergedGrid);\r\n validateGrid(mergedGrid);\r\n let columnNames = [];\r\n if (mergedGrid.config.promoteHeaders && mergedGrid.config.adjustColumnNames) {\r\n columnNames = getAdjustedColumnNames(mergedGrid.data.shift());\r\n }\r\n else if (mergedGrid.config.promoteHeaders && !mergedGrid.config.adjustColumnNames) {\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n columnNames = mergedGrid.data.shift();\r\n }\r\n else {\r\n columnNames = Array.from({ length: mergedGrid.data[0].length }, (_, index) => `${constants_1.defaults.columnName} ${index + 1}`);\r\n }\r\n return { columnNames: columnNames, rows: mergedGrid.data };\r\n};\r\nconst correctGrid = (grid) => {\r\n if (grid.data.length === 0) {\r\n // empty grid fix\r\n grid.config.promoteHeaders = false;\r\n grid.data.push([\"\"]);\r\n return;\r\n }\r\n const getEmptyArray = (n) => Array.from({ length: n }, () => \"\");\r\n if (grid.data[0].length === 0) {\r\n grid.data[0] = [\"\"];\r\n }\r\n // replace empty rows\r\n grid.data.forEach((row, index) => {\r\n if (row.length === 0) {\r\n grid.data[index] = getEmptyArray(grid.data[0].length);\r\n }\r\n });\r\n if (grid.config.promoteHeaders && grid.data.length === 1) {\r\n // table in Excel should have at least 2 rows\r\n grid.data.push(getEmptyArray(grid.data[0].length));\r\n }\r\n};\r\n/*\r\n * Validates the grid, throws an error if the grid is invalid.\r\n * A valid grid has:\r\n * - MxN structure.\r\n * - If promoteHeaders is true - has at least 1 row, and in case adjustColumnNames is false, first row is unique and non empty.\r\n */\r\nconst validateGrid = (grid) => {\r\n validateDataArrayDimensions(grid.data);\r\n if (grid.config.promoteHeaders && grid.config.adjustColumnNames === false && !validateUniqueAndValidDataArray(grid.data[0])) {\r\n throw new Error(constants_1.promotedHeadersCannotBeUsedWithoutAdjustingColumnNamesErr);\r\n }\r\n};\r\nconst validateDataArrayDimensions = (arr) => {\r\n if (arr.length === 0 || arr[0].length === 0) {\r\n throw new Error(constants_1.unexpectedErr);\r\n }\r\n if (!arr.every((innerArr) => innerArr.length === arr[0].length)) {\r\n throw new Error(constants_1.arrayIsntMxNErr);\r\n }\r\n};\r\nconst validateUniqueAndValidDataArray = (arr) => {\r\n if (arr.some((element) => element === \"\")) {\r\n return false; // Array contains empty elements\r\n }\r\n const uniqueSet = new Set(arr);\r\n return uniqueSet.size === arr.length;\r\n};\r\nconst getAdjustedColumnNames = (columnNames) => {\r\n if (columnNames === undefined) {\r\n throw new Error(constants_1.unexpectedErr);\r\n }\r\n let i = 1;\r\n // replace empty column names with default names, can still conflict if columns exist, but we handle that later\r\n columnNames = columnNames.map((columnName) => columnName || `${constants_1.defaults.columnName} ${i++}`);\r\n const uniqueNames = new Set();\r\n return columnNames.map((name) => {\r\n let uniqueName = name;\r\n i = 1;\r\n while (uniqueNames.has(uniqueName)) {\r\n uniqueName = `${name} (${i++})`;\r\n }\r\n uniqueNames.add(uniqueName);\r\n return uniqueName;\r\n });\r\n};\r\nexports[\"default\"] = { parseToTableData };\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/gridUtils.ts?");
127
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/constants */ \"./src/utils/constants.ts\");\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\n\r\nvar parseToTableData = function (grid) {\r\n var _a, _b, _c, _d;\r\n if (grid === null || grid === undefined) {\r\n grid = { data: [] };\r\n }\r\n if (grid.data === null || grid.data === undefined) {\r\n grid.data = [];\r\n }\r\n var mergedGrid = {\r\n config: {\r\n promoteHeaders: (_b = (_a = grid.config) === null || _a === void 0 ? void 0 : _a.promoteHeaders) !== null && _b !== void 0 ? _b : false,\r\n adjustColumnNames: (_d = (_c = grid.config) === null || _c === void 0 ? void 0 : _c.adjustColumnNames) !== null && _d !== void 0 ? _d : true,\r\n },\r\n data: grid.data.map(function (row) { return row.map(function (value) { var _a; return (_a = value === null || value === void 0 ? void 0 : value.toString()) !== null && _a !== void 0 ? _a : \"\"; }); }),\r\n };\r\n correctGrid(mergedGrid);\r\n validateGrid(mergedGrid);\r\n var columnNames = [];\r\n if (mergedGrid.config.promoteHeaders && mergedGrid.config.adjustColumnNames) {\r\n columnNames = getAdjustedColumnNames(mergedGrid.data.shift());\r\n }\r\n else if (mergedGrid.config.promoteHeaders && !mergedGrid.config.adjustColumnNames) {\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n columnNames = mergedGrid.data.shift();\r\n }\r\n else {\r\n columnNames = Array.from({ length: mergedGrid.data[0].length }, function (_, index) { return \"\".concat(_utils_constants__WEBPACK_IMPORTED_MODULE_0__.defaults.columnName, \" \").concat(index + 1); });\r\n }\r\n return { columnNames: columnNames, rows: mergedGrid.data };\r\n};\r\nvar correctGrid = function (grid) {\r\n if (grid.data.length === 0) {\r\n // empty grid fix\r\n grid.config.promoteHeaders = false;\r\n grid.data.push([\"\"]);\r\n return;\r\n }\r\n var getEmptyArray = function (n) { return Array.from({ length: n }, function () { return \"\"; }); };\r\n if (grid.data[0].length === 0) {\r\n grid.data[0] = [\"\"];\r\n }\r\n // replace empty rows\r\n grid.data.forEach(function (row, index) {\r\n if (row.length === 0) {\r\n grid.data[index] = getEmptyArray(grid.data[0].length);\r\n }\r\n });\r\n if (grid.config.promoteHeaders && grid.data.length === 1) {\r\n // table in Excel should have at least 2 rows\r\n grid.data.push(getEmptyArray(grid.data[0].length));\r\n }\r\n};\r\n/*\r\n * Validates the grid, throws an error if the grid is invalid.\r\n * A valid grid has:\r\n * - MxN structure.\r\n * - If promoteHeaders is true - has at least 1 row, and in case adjustColumnNames is false, first row is unique and non empty.\r\n */\r\nvar validateGrid = function (grid) {\r\n validateDataArrayDimensions(grid.data);\r\n if (grid.config.promoteHeaders && grid.config.adjustColumnNames === false && !validateUniqueAndValidDataArray(grid.data[0])) {\r\n throw new Error(_utils_constants__WEBPACK_IMPORTED_MODULE_0__.promotedHeadersCannotBeUsedWithoutAdjustingColumnNamesErr);\r\n }\r\n};\r\nvar validateDataArrayDimensions = function (arr) {\r\n if (arr.length === 0 || arr[0].length === 0) {\r\n throw new Error(_utils_constants__WEBPACK_IMPORTED_MODULE_0__.unexpectedErr);\r\n }\r\n if (!arr.every(function (innerArr) { return innerArr.length === arr[0].length; })) {\r\n throw new Error(_utils_constants__WEBPACK_IMPORTED_MODULE_0__.arrayIsntMxNErr);\r\n }\r\n};\r\nvar validateUniqueAndValidDataArray = function (arr) {\r\n if (arr.some(function (element) { return element === \"\"; })) {\r\n return false; // Array contains empty elements\r\n }\r\n var uniqueSet = new Set(arr);\r\n return uniqueSet.size === arr.length;\r\n};\r\nvar getAdjustedColumnNames = function (columnNames) {\r\n if (columnNames === undefined) {\r\n throw new Error(_utils_constants__WEBPACK_IMPORTED_MODULE_0__.unexpectedErr);\r\n }\r\n var i = 1;\r\n // replace empty column names with default names, can still conflict if columns exist, but we handle that later\r\n columnNames = columnNames.map(function (columnName) { return columnName || \"\".concat(_utils_constants__WEBPACK_IMPORTED_MODULE_0__.defaults.columnName, \" \").concat(i++); });\r\n var uniqueNames = new Set();\r\n return columnNames.map(function (name) {\r\n var uniqueName = name;\r\n i = 1;\r\n while (uniqueNames.has(uniqueName)) {\r\n uniqueName = \"\".concat(name, \" (\").concat(i++, \")\");\r\n }\r\n uniqueNames.add(uniqueName);\r\n return uniqueName;\r\n });\r\n};\r\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ parseToTableData: parseToTableData });\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/gridUtils.ts?");
128
128
 
129
129
  /***/ }),
130
130
 
@@ -132,10 +132,10 @@ eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT l
132
132
  /*!********************************!*\
133
133
  !*** ./src/utils/htmlUtils.ts ***!
134
134
  \********************************/
135
- /***/ ((__unused_webpack_module, exports) => {
135
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
136
136
 
137
137
  "use strict";
138
- eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nconst extractTableValues = (table) => {\r\n const rows = [];\r\n // Extract values from each row\r\n for (let i = 0; i < table.rows.length; i++) {\r\n const row = table.rows[i];\r\n const rowData = [];\r\n for (let j = 0; j < row.cells.length; j++) {\r\n const cell = row.cells[j];\r\n rowData.push(cell.textContent || \"\");\r\n }\r\n rows.push(rowData);\r\n }\r\n return rows;\r\n};\r\nexports[\"default\"] = { extractTableValues };\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/htmlUtils.ts?");
138
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar extractTableValues = function (table) {\r\n var rows = [];\r\n // Extract values from each row\r\n for (var i = 0; i < table.rows.length; i++) {\r\n var row = table.rows[i];\r\n var rowData = [];\r\n for (var j = 0; j < row.cells.length; j++) {\r\n var cell = row.cells[j];\r\n rowData.push(cell.textContent || \"\");\r\n }\r\n rows.push(rowData);\r\n }\r\n return rows;\r\n};\r\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ extractTableValues: extractTableValues });\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/htmlUtils.ts?");
139
139
 
140
140
  /***/ }),
141
141
 
@@ -143,10 +143,10 @@ eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT l
143
143
  /*!****************************!*\
144
144
  !*** ./src/utils/index.ts ***!
145
145
  \****************************/
146
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
146
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
147
147
 
148
148
  "use strict";
149
- eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.gridUtils = exports.htmlUtils = exports.tableUtils = exports.xmlInnerPartsUtils = exports.xmlPartsUtils = exports.documentUtils = exports.arrayUtils = exports.pqUtils = void 0;\r\nvar pqUtils_1 = __webpack_require__(/*! ./pqUtils */ \"./src/utils/pqUtils.ts\");\r\nObject.defineProperty(exports, \"pqUtils\", ({ enumerable: true, get: function () { return __importDefault(pqUtils_1).default; } }));\r\nvar arrayUtils_1 = __webpack_require__(/*! ./arrayUtils */ \"./src/utils/arrayUtils.ts\");\r\nObject.defineProperty(exports, \"arrayUtils\", ({ enumerable: true, get: function () { return __importDefault(arrayUtils_1).default; } }));\r\nvar documentUtils_1 = __webpack_require__(/*! ./documentUtils */ \"./src/utils/documentUtils.ts\");\r\nObject.defineProperty(exports, \"documentUtils\", ({ enumerable: true, get: function () { return __importDefault(documentUtils_1).default; } }));\r\nvar xmlPartsUtils_1 = __webpack_require__(/*! ./xmlPartsUtils */ \"./src/utils/xmlPartsUtils.ts\");\r\nObject.defineProperty(exports, \"xmlPartsUtils\", ({ enumerable: true, get: function () { return __importDefault(xmlPartsUtils_1).default; } }));\r\nvar xmlInnerPartsUtils_1 = __webpack_require__(/*! ./xmlInnerPartsUtils */ \"./src/utils/xmlInnerPartsUtils.ts\");\r\nObject.defineProperty(exports, \"xmlInnerPartsUtils\", ({ enumerable: true, get: function () { return __importDefault(xmlInnerPartsUtils_1).default; } }));\r\nvar tableUtils_1 = __webpack_require__(/*! ./tableUtils */ \"./src/utils/tableUtils.ts\");\r\nObject.defineProperty(exports, \"tableUtils\", ({ enumerable: true, get: function () { return __importDefault(tableUtils_1).default; } }));\r\nvar htmlUtils_1 = __webpack_require__(/*! ./htmlUtils */ \"./src/utils/htmlUtils.ts\");\r\nObject.defineProperty(exports, \"htmlUtils\", ({ enumerable: true, get: function () { return __importDefault(htmlUtils_1).default; } }));\r\nvar gridUtils_1 = __webpack_require__(/*! ./gridUtils */ \"./src/utils/gridUtils.ts\");\r\nObject.defineProperty(exports, \"gridUtils\", ({ enumerable: true, get: function () { return __importDefault(gridUtils_1).default; } }));\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/index.ts?");
149
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ arrayUtils: () => (/* reexport safe */ _arrayUtils__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ documentUtils: () => (/* reexport safe */ _documentUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ gridUtils: () => (/* reexport safe */ _gridUtils__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n/* harmony export */ htmlUtils: () => (/* reexport safe */ _htmlUtils__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n/* harmony export */ pqUtils: () => (/* reexport safe */ _pqUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ tableUtils: () => (/* reexport safe */ _tableUtils__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ xmlInnerPartsUtils: () => (/* reexport safe */ _xmlInnerPartsUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ xmlPartsUtils: () => (/* reexport safe */ _xmlPartsUtils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _pqUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pqUtils */ \"./src/utils/pqUtils.ts\");\n/* harmony import */ var _arrayUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arrayUtils */ \"./src/utils/arrayUtils.ts\");\n/* harmony import */ var _documentUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./documentUtils */ \"./src/utils/documentUtils.ts\");\n/* harmony import */ var _xmlPartsUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./xmlPartsUtils */ \"./src/utils/xmlPartsUtils.ts\");\n/* harmony import */ var _xmlInnerPartsUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./xmlInnerPartsUtils */ \"./src/utils/xmlInnerPartsUtils.ts\");\n/* harmony import */ var _tableUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./tableUtils */ \"./src/utils/tableUtils.ts\");\n/* harmony import */ var _htmlUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./htmlUtils */ \"./src/utils/htmlUtils.ts\");\n/* harmony import */ var _gridUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./gridUtils */ \"./src/utils/gridUtils.ts\");\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/index.ts?");
150
150
 
151
151
  /***/ }),
152
152
 
@@ -154,10 +154,10 @@ eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT l
154
154
  /*!*******************************************!*\
155
155
  !*** ./src/utils/mashupDocumentParser.ts ***!
156
156
  \*******************************************/
157
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
157
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
158
158
 
159
159
  "use strict";
160
- eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.editSingleQueryMetadata = exports.getPackageComponents = exports.replaceSingleQuery = void 0;\r\nconst base64 = __importStar(__webpack_require__(/*! base64-js */ \"./node_modules/base64-js/index.js\"));\r\nconst jszip_1 = __importDefault(__webpack_require__(/*! jszip */ \"./node_modules/jszip/dist/jszip.min.js\"));\r\nconst constants_1 = __webpack_require__(/*! ./constants */ \"./src/utils/constants.ts\");\r\nconst _1 = __webpack_require__(/*! . */ \"./src/utils/index.ts\");\r\nconst replaceSingleQuery = (base64Str, queryName, queryMashupDoc) => __awaiter(void 0, void 0, void 0, function* () {\r\n const { version, packageOPC, permissionsSize, permissions, metadata, endBuffer } = (0, exports.getPackageComponents)(base64Str);\r\n const newPackageBuffer = yield editSingleQueryPackage(packageOPC, queryMashupDoc);\r\n const packageSizeBuffer = _1.arrayUtils.getInt32Buffer(newPackageBuffer.byteLength);\r\n const permissionsSizeBuffer = _1.arrayUtils.getInt32Buffer(permissionsSize);\r\n const newMetadataBuffer = (0, exports.editSingleQueryMetadata)(metadata, { queryName });\r\n const metadataSizeBuffer = _1.arrayUtils.getInt32Buffer(newMetadataBuffer.byteLength);\r\n const newMashup = _1.arrayUtils.concatArrays(version, packageSizeBuffer, newPackageBuffer, permissionsSizeBuffer, permissions, metadataSizeBuffer, newMetadataBuffer, endBuffer);\r\n return base64.fromByteArray(newMashup);\r\n});\r\nexports.replaceSingleQuery = replaceSingleQuery;\r\nconst getPackageComponents = (base64Str) => {\r\n const buffer = base64.toByteArray(base64Str).buffer;\r\n const mashupArray = new _1.arrayUtils.ArrayReader(buffer);\r\n const version = mashupArray.getBytes(4);\r\n const packageSize = mashupArray.getInt32();\r\n const packageOPC = mashupArray.getBytes(packageSize);\r\n const permissionsSize = mashupArray.getInt32();\r\n const permissions = mashupArray.getBytes(permissionsSize);\r\n const metadataSize = mashupArray.getInt32();\r\n const metadata = mashupArray.getBytes(metadataSize);\r\n const endBuffer = mashupArray.getBytes();\r\n return {\r\n version,\r\n packageOPC,\r\n permissionsSize,\r\n permissions,\r\n metadata,\r\n endBuffer,\r\n };\r\n};\r\nexports.getPackageComponents = getPackageComponents;\r\nconst editSingleQueryPackage = (packageOPC, queryMashupDoc) => __awaiter(void 0, void 0, void 0, function* () {\r\n const packageZip = yield jszip_1.default.loadAsync(packageOPC);\r\n setSection1m(queryMashupDoc, packageZip);\r\n return yield packageZip.generateAsync({ type: constants_1.uint8ArrayType });\r\n});\r\nconst setSection1m = (queryMashupDoc, zip) => {\r\n var _a;\r\n if (!((_a = zip.file(constants_1.section1mPath)) === null || _a === void 0 ? void 0 : _a.async(constants_1.textResultType))) {\r\n throw new Error(constants_1.formulaSectionNotFoundErr);\r\n }\r\n const newSection1m = queryMashupDoc;\r\n zip.file(constants_1.section1mPath, newSection1m, {\r\n compression: constants_1.emptyValue,\r\n });\r\n};\r\nconst editSingleQueryMetadata = (metadataArray, metadata) => {\r\n //extract metadataXml\r\n const mashupArray = new _1.arrayUtils.ArrayReader(metadataArray.buffer);\r\n const metadataVersion = mashupArray.getBytes(4);\r\n const metadataXmlSize = mashupArray.getInt32();\r\n const metadataXml = mashupArray.getBytes(metadataXmlSize);\r\n const endBuffer = mashupArray.getBytes();\r\n //parse metdataXml\r\n const textDecoder = new TextDecoder();\r\n const metadataString = textDecoder.decode(metadataXml);\r\n const parser = new DOMParser();\r\n const serializer = new XMLSerializer();\r\n const parsedMetadata = parser.parseFromString(metadataString, constants_1.xmlTextResultType);\r\n // Update InfoPaths to new QueryName\r\n const itemPaths = parsedMetadata.getElementsByTagName(constants_1.element.itemPath);\r\n if (itemPaths && itemPaths.length) {\r\n for (let i = 0; i < itemPaths.length; i++) {\r\n const itemPath = itemPaths[i];\r\n const content = itemPath.innerHTML;\r\n if (content.includes(constants_1.section1PathPrefix)) {\r\n const strArr = content.split(constants_1.divider);\r\n strArr[1] = encodeURIComponent(metadata.queryName);\r\n const newContent = strArr.join(constants_1.divider);\r\n itemPath.textContent = newContent;\r\n }\r\n }\r\n }\r\n const entries = parsedMetadata.getElementsByTagName(constants_1.element.entry);\r\n if (entries && entries.length) {\r\n for (let i = 0; i < entries.length; i++) {\r\n const entry = entries[i];\r\n const entryAttributes = entry.attributes;\r\n const entryAttributesArr = [...entryAttributes];\r\n const entryProp = entryAttributesArr.find((prop) => {\r\n return (prop === null || prop === void 0 ? void 0 : prop.name) === constants_1.elementAttributes.type;\r\n });\r\n if ((entryProp === null || entryProp === void 0 ? void 0 : entryProp.nodeValue) == constants_1.elementAttributes.resultType) {\r\n entry.setAttribute(constants_1.elementAttributes.value, constants_1.elementAttributesValues.tableResultType());\r\n }\r\n if ((entryProp === null || entryProp === void 0 ? void 0 : entryProp.nodeValue) == constants_1.elementAttributes.fillLastUpdated) {\r\n const nowTime = new Date().toISOString();\r\n entry.setAttribute(constants_1.elementAttributes.value, (constants_1.elementAttributes.day + nowTime).replace(/Z/, \"0000Z\"));\r\n }\r\n }\r\n }\r\n // Convert new metadataXml to Uint8Array\r\n const newMetadataString = serializer.serializeToString(parsedMetadata);\r\n const encoder = new TextEncoder();\r\n const newMetadataXml = encoder.encode(newMetadataString);\r\n const newMetadataXmlSize = _1.arrayUtils.getInt32Buffer(newMetadataXml.byteLength);\r\n const newMetadataArray = _1.arrayUtils.concatArrays(metadataVersion, newMetadataXmlSize, newMetadataXml, endBuffer);\r\n return newMetadataArray;\r\n};\r\nexports.editSingleQueryMetadata = editSingleQueryMetadata;\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/mashupDocumentParser.ts?");
160
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ editSingleQueryMetadata: () => (/* binding */ editSingleQueryMetadata),\n/* harmony export */ getPackageComponents: () => (/* binding */ getPackageComponents),\n/* harmony export */ replaceSingleQuery: () => (/* binding */ replaceSingleQuery)\n/* harmony export */ });\n/* harmony import */ var base64_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! base64-js */ \"./node_modules/base64-js/index.js\");\n/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jszip */ \"./node_modules/jszip/dist/jszip.min.js\");\n/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jszip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ \"./src/utils/constants.ts\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! . */ \"./src/utils/index.ts\");\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\n\r\n\r\n\r\n\r\nvar replaceSingleQuery = function (base64Str, queryName, queryMashupDoc) { return __awaiter(void 0, void 0, void 0, function () {\r\n var _a, version, packageOPC, permissionsSize, permissions, metadata, endBuffer, newPackageBuffer, packageSizeBuffer, permissionsSizeBuffer, newMetadataBuffer, metadataSizeBuffer, newMashup;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _a = getPackageComponents(base64Str), version = _a.version, packageOPC = _a.packageOPC, permissionsSize = _a.permissionsSize, permissions = _a.permissions, metadata = _a.metadata, endBuffer = _a.endBuffer;\r\n return [4 /*yield*/, editSingleQueryPackage(packageOPC, queryMashupDoc)];\r\n case 1:\r\n newPackageBuffer = _b.sent();\r\n packageSizeBuffer = ___WEBPACK_IMPORTED_MODULE_3__.arrayUtils.getInt32Buffer(newPackageBuffer.byteLength);\r\n permissionsSizeBuffer = ___WEBPACK_IMPORTED_MODULE_3__.arrayUtils.getInt32Buffer(permissionsSize);\r\n newMetadataBuffer = editSingleQueryMetadata(metadata, { queryName: queryName });\r\n metadataSizeBuffer = ___WEBPACK_IMPORTED_MODULE_3__.arrayUtils.getInt32Buffer(newMetadataBuffer.byteLength);\r\n newMashup = ___WEBPACK_IMPORTED_MODULE_3__.arrayUtils.concatArrays(version, packageSizeBuffer, newPackageBuffer, permissionsSizeBuffer, permissions, metadataSizeBuffer, newMetadataBuffer, endBuffer);\r\n return [2 /*return*/, base64_js__WEBPACK_IMPORTED_MODULE_0__.fromByteArray(newMashup)];\r\n }\r\n });\r\n}); };\r\nvar getPackageComponents = function (base64Str) {\r\n var buffer = base64_js__WEBPACK_IMPORTED_MODULE_0__.toByteArray(base64Str).buffer;\r\n var mashupArray = new ___WEBPACK_IMPORTED_MODULE_3__.arrayUtils.ArrayReader(buffer);\r\n var version = mashupArray.getBytes(4);\r\n var packageSize = mashupArray.getInt32();\r\n var packageOPC = mashupArray.getBytes(packageSize);\r\n var permissionsSize = mashupArray.getInt32();\r\n var permissions = mashupArray.getBytes(permissionsSize);\r\n var metadataSize = mashupArray.getInt32();\r\n var metadata = mashupArray.getBytes(metadataSize);\r\n var endBuffer = mashupArray.getBytes();\r\n return {\r\n version: version,\r\n packageOPC: packageOPC,\r\n permissionsSize: permissionsSize,\r\n permissions: permissions,\r\n metadata: metadata,\r\n endBuffer: endBuffer,\r\n };\r\n};\r\nvar editSingleQueryPackage = function (packageOPC, queryMashupDoc) { return __awaiter(void 0, void 0, void 0, function () {\r\n var packageZip;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, jszip__WEBPACK_IMPORTED_MODULE_1___default().loadAsync(packageOPC)];\r\n case 1:\r\n packageZip = _a.sent();\r\n setSection1m(queryMashupDoc, packageZip);\r\n return [4 /*yield*/, packageZip.generateAsync({ type: _constants__WEBPACK_IMPORTED_MODULE_2__.uint8ArrayType })];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n}); };\r\nvar setSection1m = function (queryMashupDoc, zip) {\r\n var _a;\r\n if (!((_a = zip.file(_constants__WEBPACK_IMPORTED_MODULE_2__.section1mPath)) === null || _a === void 0 ? void 0 : _a.async(_constants__WEBPACK_IMPORTED_MODULE_2__.textResultType))) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_2__.formulaSectionNotFoundErr);\r\n }\r\n var newSection1m = queryMashupDoc;\r\n zip.file(_constants__WEBPACK_IMPORTED_MODULE_2__.section1mPath, newSection1m, {\r\n compression: _constants__WEBPACK_IMPORTED_MODULE_2__.emptyValue,\r\n });\r\n};\r\nvar editSingleQueryMetadata = function (metadataArray, metadata) {\r\n //extract metadataXml\r\n var mashupArray = new ___WEBPACK_IMPORTED_MODULE_3__.arrayUtils.ArrayReader(metadataArray.buffer);\r\n var metadataVersion = mashupArray.getBytes(4);\r\n var metadataXmlSize = mashupArray.getInt32();\r\n var metadataXml = mashupArray.getBytes(metadataXmlSize);\r\n var endBuffer = mashupArray.getBytes();\r\n //parse metdataXml\r\n var textDecoder = new TextDecoder();\r\n var metadataString = textDecoder.decode(metadataXml);\r\n var parser = new DOMParser();\r\n var serializer = new XMLSerializer();\r\n var parsedMetadata = parser.parseFromString(metadataString, _constants__WEBPACK_IMPORTED_MODULE_2__.xmlTextResultType);\r\n // Update InfoPaths to new QueryName\r\n var itemPaths = parsedMetadata.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_2__.element.itemPath);\r\n if (itemPaths && itemPaths.length) {\r\n for (var i = 0; i < itemPaths.length; i++) {\r\n var itemPath = itemPaths[i];\r\n var content = itemPath.innerHTML;\r\n if (content.includes(_constants__WEBPACK_IMPORTED_MODULE_2__.section1PathPrefix)) {\r\n var strArr = content.split(_constants__WEBPACK_IMPORTED_MODULE_2__.divider);\r\n strArr[1] = encodeURIComponent(metadata.queryName);\r\n var newContent = strArr.join(_constants__WEBPACK_IMPORTED_MODULE_2__.divider);\r\n itemPath.textContent = newContent;\r\n }\r\n }\r\n }\r\n var entries = parsedMetadata.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_2__.element.entry);\r\n if (entries && entries.length) {\r\n for (var i = 0; i < entries.length; i++) {\r\n var entry = entries[i];\r\n var entryAttributes = entry.attributes;\r\n var entryAttributesArr = __spreadArray([], entryAttributes, true);\r\n var entryProp = entryAttributesArr.find(function (prop) {\r\n return (prop === null || prop === void 0 ? void 0 : prop.name) === _constants__WEBPACK_IMPORTED_MODULE_2__.elementAttributes.type;\r\n });\r\n if ((entryProp === null || entryProp === void 0 ? void 0 : entryProp.nodeValue) == _constants__WEBPACK_IMPORTED_MODULE_2__.elementAttributes.resultType) {\r\n entry.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_2__.elementAttributes.value, _constants__WEBPACK_IMPORTED_MODULE_2__.elementAttributesValues.tableResultType());\r\n }\r\n if ((entryProp === null || entryProp === void 0 ? void 0 : entryProp.nodeValue) == _constants__WEBPACK_IMPORTED_MODULE_2__.elementAttributes.fillLastUpdated) {\r\n var nowTime = new Date().toISOString();\r\n entry.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_2__.elementAttributes.value, (_constants__WEBPACK_IMPORTED_MODULE_2__.elementAttributes.day + nowTime).replace(/Z/, \"0000Z\"));\r\n }\r\n }\r\n }\r\n // Convert new metadataXml to Uint8Array\r\n var newMetadataString = serializer.serializeToString(parsedMetadata);\r\n var encoder = new TextEncoder();\r\n var newMetadataXml = encoder.encode(newMetadataString);\r\n var newMetadataXmlSize = ___WEBPACK_IMPORTED_MODULE_3__.arrayUtils.getInt32Buffer(newMetadataXml.byteLength);\r\n var newMetadataArray = ___WEBPACK_IMPORTED_MODULE_3__.arrayUtils.concatArrays(metadataVersion, newMetadataXmlSize, newMetadataXml, endBuffer);\r\n return newMetadataArray;\r\n};\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/mashupDocumentParser.ts?");
161
161
 
162
162
  /***/ }),
163
163
 
@@ -165,10 +165,10 @@ eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT l
165
165
  /*!******************************!*\
166
166
  !*** ./src/utils/pqUtils.ts ***!
167
167
  \******************************/
168
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
168
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
169
169
 
170
170
  "use strict";
171
- eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nconst constants_1 = __webpack_require__(/*! ./constants */ \"./src/utils/constants.ts\");\r\nconst generators_1 = __webpack_require__(/*! ../generators */ \"./src/generators.ts\");\r\nconst buffer_1 = __webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\");\r\nconst getBase64 = (zip) => __awaiter(void 0, void 0, void 0, function* () {\r\n const mashup = yield getDataMashupFile(zip);\r\n return mashup.value;\r\n});\r\nconst setBase64 = (zip, base64) => __awaiter(void 0, void 0, void 0, function* () {\r\n const newXml = (0, generators_1.generateMashupXMLTemplate)(base64);\r\n const encoded = buffer_1.Buffer.from(constants_1.BOM + newXml, \"ucs2\");\r\n const mashup = yield getDataMashupFile(zip);\r\n zip.file(mashup === null || mashup === void 0 ? void 0 : mashup.path, encoded);\r\n});\r\nconst getDataMashupFile = (zip) => __awaiter(void 0, void 0, void 0, function* () {\r\n let mashup;\r\n for (const url of constants_1.URLS.PQ) {\r\n const item = yield getCustomXmlFile(zip, url);\r\n if (item.found) {\r\n mashup = item;\r\n break;\r\n }\r\n }\r\n if (!mashup) {\r\n throw new Error(\"DataMashup XML is not found\");\r\n }\r\n return mashup;\r\n});\r\nconst getCustomXmlFile = (zip, url, encoding = \"utf16le\") => __awaiter(void 0, void 0, void 0, function* () {\r\n var _a, _b;\r\n const parser = new DOMParser();\r\n const itemsArray = yield zip.file(/customXml\\/item\\d.xml/);\r\n if (!itemsArray || itemsArray.length === 0) {\r\n throw new Error(\"No customXml files were found!\");\r\n }\r\n let found = false;\r\n let path;\r\n let xmlString;\r\n let value;\r\n for (let i = 1; i <= itemsArray.length; i++) {\r\n path = (0, generators_1.generateCustomXmlFilePath)(i);\r\n const xmlValue = yield ((_a = zip.file(path)) === null || _a === void 0 ? void 0 : _a.async(\"uint8array\"));\r\n if (xmlValue === undefined) {\r\n break;\r\n }\r\n xmlString = buffer_1.Buffer.from(xmlValue)\r\n .toString(encoding)\r\n .replace(/^\\ufeff/, \"\");\r\n const doc = parser.parseFromString(xmlString, \"text/xml\");\r\n found = ((_b = doc === null || doc === void 0 ? void 0 : doc.documentElement) === null || _b === void 0 ? void 0 : _b.namespaceURI) === url;\r\n if (found) {\r\n value = doc.documentElement.innerHTML;\r\n break;\r\n }\r\n }\r\n return { found, path: path, xmlString: xmlString, value };\r\n});\r\nconst queryNameHasInvalidChars = (queryName) => {\r\n const invalidQueryNameChars = ['\"', \".\"];\r\n // Control characters as defined in Unicode\r\n for (let c = 0; c <= 0x001f; ++c) {\r\n invalidQueryNameChars.push(String.fromCharCode(c));\r\n }\r\n for (let c = 0x007f; c <= 0x009f; ++c) {\r\n invalidQueryNameChars.push(String.fromCharCode(c));\r\n }\r\n return queryName.split(\"\").some((ch) => invalidQueryNameChars.indexOf(ch) !== -1);\r\n};\r\nconst validateQueryName = (queryName) => {\r\n if (queryName) {\r\n if (queryName.length > constants_1.maxQueryLength) {\r\n throw new Error(constants_1.QueryNameMaxLengthErr);\r\n }\r\n if (queryNameHasInvalidChars(queryName)) {\r\n throw new Error(constants_1.QueryNameInvalidCharsErr);\r\n }\r\n }\r\n if (!queryName.trim()) {\r\n throw new Error(constants_1.EmptyQueryNameErr);\r\n }\r\n};\r\nexports[\"default\"] = {\r\n getBase64,\r\n setBase64,\r\n getCustomXmlFile,\r\n getDataMashupFile,\r\n validateQueryName,\r\n};\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/pqUtils.ts?");
171
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ \"./src/utils/constants.ts\");\n/* harmony import */ var _generators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../generators */ \"./src/generators.ts\");\n/* harmony import */ var buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\");\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\n\r\n\r\n\r\nvar getBase64 = function (zip) { return __awaiter(void 0, void 0, void 0, function () {\r\n var mashup;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getDataMashupFile(zip)];\r\n case 1:\r\n mashup = _a.sent();\r\n return [2 /*return*/, mashup.value];\r\n }\r\n });\r\n}); };\r\nvar setBase64 = function (zip, base64) { return __awaiter(void 0, void 0, void 0, function () {\r\n var newXml, encoded, mashup;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n newXml = (0,_generators__WEBPACK_IMPORTED_MODULE_1__.generateMashupXMLTemplate)(base64);\r\n encoded = buffer__WEBPACK_IMPORTED_MODULE_2__.Buffer.from(_constants__WEBPACK_IMPORTED_MODULE_0__.BOM + newXml, \"ucs2\");\r\n return [4 /*yield*/, getDataMashupFile(zip)];\r\n case 1:\r\n mashup = _a.sent();\r\n zip.file(mashup === null || mashup === void 0 ? void 0 : mashup.path, encoded);\r\n return [2 /*return*/];\r\n }\r\n });\r\n}); };\r\nvar getDataMashupFile = function (zip) { return __awaiter(void 0, void 0, void 0, function () {\r\n var mashup, _i, _a, url, item;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _i = 0, _a = _constants__WEBPACK_IMPORTED_MODULE_0__.URLS.PQ;\r\n _b.label = 1;\r\n case 1:\r\n if (!(_i < _a.length)) return [3 /*break*/, 4];\r\n url = _a[_i];\r\n return [4 /*yield*/, getCustomXmlFile(zip, url)];\r\n case 2:\r\n item = _b.sent();\r\n if (item.found) {\r\n mashup = item;\r\n return [3 /*break*/, 4];\r\n }\r\n _b.label = 3;\r\n case 3:\r\n _i++;\r\n return [3 /*break*/, 1];\r\n case 4:\r\n if (!mashup) {\r\n throw new Error(\"DataMashup XML is not found\");\r\n }\r\n return [2 /*return*/, mashup];\r\n }\r\n });\r\n}); };\r\nvar getCustomXmlFile = function (zip, url, encoding) {\r\n if (encoding === void 0) { encoding = \"utf16le\"; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var parser, itemsArray, found, path, xmlString, value, i, xmlValue, doc;\r\n var _a, _b;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n parser = new DOMParser();\r\n return [4 /*yield*/, zip.file(/customXml\\/item\\d.xml/)];\r\n case 1:\r\n itemsArray = _c.sent();\r\n if (!itemsArray || itemsArray.length === 0) {\r\n throw new Error(\"No customXml files were found!\");\r\n }\r\n found = false;\r\n i = 1;\r\n _c.label = 2;\r\n case 2:\r\n if (!(i <= itemsArray.length)) return [3 /*break*/, 5];\r\n path = (0,_generators__WEBPACK_IMPORTED_MODULE_1__.generateCustomXmlFilePath)(i);\r\n return [4 /*yield*/, ((_a = zip.file(path)) === null || _a === void 0 ? void 0 : _a.async(\"uint8array\"))];\r\n case 3:\r\n xmlValue = _c.sent();\r\n if (xmlValue === undefined) {\r\n return [3 /*break*/, 5];\r\n }\r\n xmlString = buffer__WEBPACK_IMPORTED_MODULE_2__.Buffer.from(xmlValue)\r\n .toString(encoding)\r\n .replace(/^\\ufeff/, \"\");\r\n doc = parser.parseFromString(xmlString, \"text/xml\");\r\n found = ((_b = doc === null || doc === void 0 ? void 0 : doc.documentElement) === null || _b === void 0 ? void 0 : _b.namespaceURI) === url;\r\n if (found) {\r\n value = doc.documentElement.innerHTML;\r\n return [3 /*break*/, 5];\r\n }\r\n _c.label = 4;\r\n case 4:\r\n i++;\r\n return [3 /*break*/, 2];\r\n case 5: return [2 /*return*/, { found: found, path: path, xmlString: xmlString, value: value }];\r\n }\r\n });\r\n });\r\n};\r\nvar queryNameHasInvalidChars = function (queryName) {\r\n var invalidQueryNameChars = ['\"', \".\"];\r\n // Control characters as defined in Unicode\r\n for (var c = 0; c <= 0x001f; ++c) {\r\n invalidQueryNameChars.push(String.fromCharCode(c));\r\n }\r\n for (var c = 0x007f; c <= 0x009f; ++c) {\r\n invalidQueryNameChars.push(String.fromCharCode(c));\r\n }\r\n return queryName.split(\"\").some(function (ch) { return invalidQueryNameChars.indexOf(ch) !== -1; });\r\n};\r\nvar validateQueryName = function (queryName) {\r\n if (queryName) {\r\n if (queryName.length > _constants__WEBPACK_IMPORTED_MODULE_0__.maxQueryLength) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_0__.QueryNameMaxLengthErr);\r\n }\r\n if (queryNameHasInvalidChars(queryName)) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_0__.QueryNameInvalidCharsErr);\r\n }\r\n }\r\n if (!queryName.trim()) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_0__.EmptyQueryNameErr);\r\n }\r\n};\r\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\r\n getBase64: getBase64,\r\n setBase64: setBase64,\r\n getCustomXmlFile: getCustomXmlFile,\r\n getDataMashupFile: getDataMashupFile,\r\n validateQueryName: validateQueryName,\r\n});\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/pqUtils.ts?");
172
172
 
173
173
  /***/ }),
174
174
 
@@ -176,10 +176,10 @@ eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT l
176
176
  /*!*********************************!*\
177
177
  !*** ./src/utils/tableUtils.ts ***!
178
178
  \*********************************/
179
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
179
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
180
180
 
181
181
  "use strict";
182
- eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nconst constants_1 = __webpack_require__(/*! ./constants */ \"./src/utils/constants.ts\");\r\nconst documentUtils_1 = __importDefault(__webpack_require__(/*! ./documentUtils */ \"./src/utils/documentUtils.ts\"));\r\nconst uuid_1 = __webpack_require__(/*! uuid */ \"./node_modules/uuid/dist/commonjs-browser/index.js\");\r\nconst updateTableInitialDataIfNeeded = (zip, tableData, updateQueryTable) => __awaiter(void 0, void 0, void 0, function* () {\r\n var _a, _b, _c, _d;\r\n if (!tableData) {\r\n return;\r\n }\r\n const sheetsXmlString = yield ((_a = zip.file(constants_1.sheetsXmlPath)) === null || _a === void 0 ? void 0 : _a.async(constants_1.textResultType));\r\n if (sheetsXmlString === undefined) {\r\n throw new Error(constants_1.sheetsNotFoundErr);\r\n }\r\n const newSheet = updateSheetsInitialData(sheetsXmlString, tableData);\r\n zip.file(constants_1.sheetsXmlPath, newSheet);\r\n if (updateQueryTable) {\r\n const queryTableXmlString = yield ((_b = zip.file(constants_1.queryTableXmlPath)) === null || _b === void 0 ? void 0 : _b.async(constants_1.textResultType));\r\n if (queryTableXmlString === undefined) {\r\n throw new Error(constants_1.queryTableNotFoundErr);\r\n }\r\n const newQueryTable = yield updateQueryTablesInitialData(queryTableXmlString, tableData);\r\n zip.file(constants_1.queryTableXmlPath, newQueryTable);\r\n // update defined name\r\n const workbookXmlString = yield ((_c = zip.file(constants_1.workbookXmlPath)) === null || _c === void 0 ? void 0 : _c.async(constants_1.textResultType));\r\n if (workbookXmlString === undefined) {\r\n throw new Error(constants_1.sheetsNotFoundErr);\r\n }\r\n const newWorkbook = updateWorkbookInitialData(workbookXmlString, tableData);\r\n zip.file(constants_1.workbookXmlPath, newWorkbook);\r\n }\r\n const tableXmlString = yield ((_d = zip.file(constants_1.tableXmlPath)) === null || _d === void 0 ? void 0 : _d.async(constants_1.textResultType));\r\n if (tableXmlString === undefined) {\r\n throw new Error(constants_1.tableNotFoundErr);\r\n }\r\n const newTable = updateTablesInitialData(tableXmlString, tableData, updateQueryTable);\r\n zip.file(constants_1.tableXmlPath, newTable);\r\n});\r\nconst updateTablesInitialData = (tableXmlString, tableData, updateQueryTable = false) => {\r\n const parser = new DOMParser();\r\n const serializer = new XMLSerializer();\r\n const tableDoc = parser.parseFromString(tableXmlString, constants_1.xmlTextResultType);\r\n const tableColumns = tableDoc.getElementsByTagName(constants_1.element.tableColumns)[0];\r\n tableColumns.textContent = \"\";\r\n tableData.columnNames.forEach((column, columnIndex) => {\r\n const tableColumn = tableDoc.createElementNS(tableDoc.documentElement.namespaceURI, constants_1.element.tableColumn);\r\n tableColumn.setAttribute(constants_1.elementAttributes.id, (columnIndex + 1).toString());\r\n tableColumn.setAttribute(constants_1.elementAttributes.name, column);\r\n tableColumns.appendChild(tableColumn);\r\n tableColumn.setAttribute(constants_1.elementAttributes.xr3uid, \"{\" + (0, uuid_1.v4)().toUpperCase() + \"}\");\r\n if (updateQueryTable) {\r\n tableColumn.setAttribute(constants_1.elementAttributes.uniqueName, (columnIndex + 1).toString());\r\n tableColumn.setAttribute(constants_1.elementAttributes.queryTableFieldId, (columnIndex + 1).toString());\r\n }\r\n });\r\n tableColumns.setAttribute(constants_1.elementAttributes.count, tableData.columnNames.length.toString());\r\n tableDoc\r\n .getElementsByTagName(constants_1.element.table)[0]\r\n .setAttribute(constants_1.elementAttributes.reference, `A1:${documentUtils_1.default.getCellReferenceRelative(tableData.columnNames.length - 1, tableData.rows.length + 1)}`);\r\n tableDoc\r\n .getElementsByTagName(constants_1.element.autoFilter)[0]\r\n .setAttribute(constants_1.elementAttributes.reference, `A1:${documentUtils_1.default.getCellReferenceRelative(tableData.columnNames.length - 1, tableData.rows.length + 1)}`);\r\n return serializer.serializeToString(tableDoc);\r\n};\r\nconst updateWorkbookInitialData = (workbookXmlString, tableData) => {\r\n const newParser = new DOMParser();\r\n const newSerializer = new XMLSerializer();\r\n const workbookDoc = newParser.parseFromString(workbookXmlString, constants_1.xmlTextResultType);\r\n const definedName = workbookDoc.getElementsByTagName(constants_1.element.definedName)[0];\r\n definedName.textContent =\r\n constants_1.defaults.sheetName + `!$A$1:${documentUtils_1.default.getCellReferenceAbsolute(tableData.columnNames.length - 1, tableData.rows.length + 1)}`;\r\n return newSerializer.serializeToString(workbookDoc);\r\n};\r\nconst updateQueryTablesInitialData = (queryTableXmlString, tableData) => {\r\n const parser = new DOMParser();\r\n const serializer = new XMLSerializer();\r\n const queryTableDoc = parser.parseFromString(queryTableXmlString, constants_1.xmlTextResultType);\r\n const queryTableFields = queryTableDoc.getElementsByTagName(constants_1.element.queryTableFields)[0];\r\n queryTableFields.textContent = \"\";\r\n tableData.columnNames.forEach((column, columnIndex) => {\r\n const queryTableField = queryTableDoc.createElementNS(queryTableDoc.documentElement.namespaceURI, constants_1.element.queryTableField);\r\n queryTableField.setAttribute(constants_1.elementAttributes.id, (columnIndex + 1).toString());\r\n queryTableField.setAttribute(constants_1.elementAttributes.name, column);\r\n queryTableField.setAttribute(constants_1.elementAttributes.tableColumnId, (columnIndex + 1).toString());\r\n queryTableFields.appendChild(queryTableField);\r\n });\r\n queryTableFields.setAttribute(constants_1.elementAttributes.count, tableData.columnNames.length.toString());\r\n queryTableDoc.getElementsByTagName(constants_1.element.queryTableRefresh)[0].setAttribute(constants_1.elementAttributes.nextId, (tableData.columnNames.length + 1).toString());\r\n return serializer.serializeToString(queryTableDoc);\r\n};\r\nconst updateSheetsInitialData = (sheetsXmlString, tableData) => {\r\n const parser = new DOMParser();\r\n const serializer = new XMLSerializer();\r\n const sheetsDoc = parser.parseFromString(sheetsXmlString, constants_1.xmlTextResultType);\r\n const sheetData = sheetsDoc.getElementsByTagName(constants_1.element.sheetData)[0];\r\n sheetData.textContent = \"\";\r\n let rowIndex = 0;\r\n const columnRow = sheetsDoc.createElementNS(sheetsDoc.documentElement.namespaceURI, constants_1.element.row);\r\n columnRow.setAttribute(constants_1.elementAttributes.row, (rowIndex + 1).toString());\r\n columnRow.setAttribute(constants_1.elementAttributes.spans, \"1:\" + tableData.columnNames.length);\r\n columnRow.setAttribute(constants_1.elementAttributes.x14acDyDescent, \"0.3\");\r\n tableData.columnNames.forEach((col, colIndex) => {\r\n columnRow.appendChild(documentUtils_1.default.createCell(sheetsDoc, colIndex, rowIndex, col));\r\n });\r\n sheetData.appendChild(columnRow);\r\n rowIndex++;\r\n tableData.rows.forEach((row) => {\r\n const newRow = sheetsDoc.createElementNS(sheetsDoc.documentElement.namespaceURI, constants_1.element.row);\r\n newRow.setAttribute(constants_1.elementAttributes.row, (rowIndex + 1).toString());\r\n newRow.setAttribute(constants_1.elementAttributes.spans, \"1:\" + row.length);\r\n newRow.setAttribute(constants_1.elementAttributes.x14acDyDescent, \"0.3\");\r\n row.forEach((cellContent, colIndex) => {\r\n newRow.appendChild(documentUtils_1.default.createCell(sheetsDoc, colIndex, rowIndex, cellContent));\r\n });\r\n sheetData.appendChild(newRow);\r\n rowIndex++;\r\n });\r\n const reference = documentUtils_1.default.getTableReference(tableData.rows[0].length - 1, tableData.rows.length + 1);\r\n sheetsDoc.getElementsByTagName(constants_1.element.dimension)[0].setAttribute(constants_1.elementAttributes.reference, reference);\r\n sheetsDoc.getElementsByTagName(constants_1.element.selection)[0].setAttribute(constants_1.elementAttributes.sqref, reference);\r\n return serializer.serializeToString(sheetsDoc);\r\n};\r\nexports[\"default\"] = {\r\n updateTableInitialDataIfNeeded,\r\n updateSheetsInitialData,\r\n updateWorkbookInitialData,\r\n updateTablesInitialData,\r\n updateQueryTablesInitialData,\r\n};\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/tableUtils.ts?");
182
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ \"./src/utils/constants.ts\");\n/* harmony import */ var _documentUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./documentUtils */ \"./src/utils/documentUtils.ts\");\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! uuid */ \"./node_modules/uuid/dist/esm-browser/v4.js\");\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\n\r\n\r\n\r\nvar updateTableInitialDataIfNeeded = function (zip, tableData, updateQueryTable) { return __awaiter(void 0, void 0, void 0, function () {\r\n var sheetsXmlString, newSheet, queryTableXmlString, newQueryTable, workbookXmlString, newWorkbook, tableXmlString, newTable;\r\n var _a, _b, _c, _d;\r\n return __generator(this, function (_e) {\r\n switch (_e.label) {\r\n case 0:\r\n if (!tableData) {\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, ((_a = zip.file(_constants__WEBPACK_IMPORTED_MODULE_0__.sheetsXmlPath)) === null || _a === void 0 ? void 0 : _a.async(_constants__WEBPACK_IMPORTED_MODULE_0__.textResultType))];\r\n case 1:\r\n sheetsXmlString = _e.sent();\r\n if (sheetsXmlString === undefined) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_0__.sheetsNotFoundErr);\r\n }\r\n newSheet = updateSheetsInitialData(sheetsXmlString, tableData);\r\n zip.file(_constants__WEBPACK_IMPORTED_MODULE_0__.sheetsXmlPath, newSheet);\r\n if (!updateQueryTable) return [3 /*break*/, 5];\r\n return [4 /*yield*/, ((_b = zip.file(_constants__WEBPACK_IMPORTED_MODULE_0__.queryTableXmlPath)) === null || _b === void 0 ? void 0 : _b.async(_constants__WEBPACK_IMPORTED_MODULE_0__.textResultType))];\r\n case 2:\r\n queryTableXmlString = _e.sent();\r\n if (queryTableXmlString === undefined) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_0__.queryTableNotFoundErr);\r\n }\r\n return [4 /*yield*/, updateQueryTablesInitialData(queryTableXmlString, tableData)];\r\n case 3:\r\n newQueryTable = _e.sent();\r\n zip.file(_constants__WEBPACK_IMPORTED_MODULE_0__.queryTableXmlPath, newQueryTable);\r\n return [4 /*yield*/, ((_c = zip.file(_constants__WEBPACK_IMPORTED_MODULE_0__.workbookXmlPath)) === null || _c === void 0 ? void 0 : _c.async(_constants__WEBPACK_IMPORTED_MODULE_0__.textResultType))];\r\n case 4:\r\n workbookXmlString = _e.sent();\r\n if (workbookXmlString === undefined) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_0__.sheetsNotFoundErr);\r\n }\r\n newWorkbook = updateWorkbookInitialData(workbookXmlString, tableData);\r\n zip.file(_constants__WEBPACK_IMPORTED_MODULE_0__.workbookXmlPath, newWorkbook);\r\n _e.label = 5;\r\n case 5: return [4 /*yield*/, ((_d = zip.file(_constants__WEBPACK_IMPORTED_MODULE_0__.tableXmlPath)) === null || _d === void 0 ? void 0 : _d.async(_constants__WEBPACK_IMPORTED_MODULE_0__.textResultType))];\r\n case 6:\r\n tableXmlString = _e.sent();\r\n if (tableXmlString === undefined) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_0__.tableNotFoundErr);\r\n }\r\n newTable = updateTablesInitialData(tableXmlString, tableData, updateQueryTable);\r\n zip.file(_constants__WEBPACK_IMPORTED_MODULE_0__.tableXmlPath, newTable);\r\n return [2 /*return*/];\r\n }\r\n });\r\n}); };\r\nvar updateTablesInitialData = function (tableXmlString, tableData, updateQueryTable) {\r\n if (updateQueryTable === void 0) { updateQueryTable = false; }\r\n var parser = new DOMParser();\r\n var serializer = new XMLSerializer();\r\n var tableDoc = parser.parseFromString(tableXmlString, _constants__WEBPACK_IMPORTED_MODULE_0__.xmlTextResultType);\r\n var tableColumns = tableDoc.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_0__.element.tableColumns)[0];\r\n tableColumns.textContent = \"\";\r\n tableData.columnNames.forEach(function (column, columnIndex) {\r\n var tableColumn = tableDoc.createElementNS(tableDoc.documentElement.namespaceURI, _constants__WEBPACK_IMPORTED_MODULE_0__.element.tableColumn);\r\n tableColumn.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.id, (columnIndex + 1).toString());\r\n tableColumn.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.name, column);\r\n tableColumns.appendChild(tableColumn);\r\n tableColumn.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.xr3uid, \"{\" + (0,uuid__WEBPACK_IMPORTED_MODULE_2__[\"default\"])().toUpperCase() + \"}\");\r\n if (updateQueryTable) {\r\n tableColumn.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.uniqueName, (columnIndex + 1).toString());\r\n tableColumn.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.queryTableFieldId, (columnIndex + 1).toString());\r\n }\r\n });\r\n tableColumns.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.count, tableData.columnNames.length.toString());\r\n tableDoc\r\n .getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_0__.element.table)[0]\r\n .setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.reference, \"A1:\".concat(_documentUtils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCellReferenceRelative(tableData.columnNames.length - 1, tableData.rows.length + 1)));\r\n tableDoc\r\n .getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_0__.element.autoFilter)[0]\r\n .setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.reference, \"A1:\".concat(_documentUtils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCellReferenceRelative(tableData.columnNames.length - 1, tableData.rows.length + 1)));\r\n return serializer.serializeToString(tableDoc);\r\n};\r\nvar updateWorkbookInitialData = function (workbookXmlString, tableData) {\r\n var newParser = new DOMParser();\r\n var newSerializer = new XMLSerializer();\r\n var workbookDoc = newParser.parseFromString(workbookXmlString, _constants__WEBPACK_IMPORTED_MODULE_0__.xmlTextResultType);\r\n var definedName = workbookDoc.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_0__.element.definedName)[0];\r\n definedName.textContent =\r\n _constants__WEBPACK_IMPORTED_MODULE_0__.defaults.sheetName + \"!$A$1:\".concat(_documentUtils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCellReferenceAbsolute(tableData.columnNames.length - 1, tableData.rows.length + 1));\r\n return newSerializer.serializeToString(workbookDoc);\r\n};\r\nvar updateQueryTablesInitialData = function (queryTableXmlString, tableData) {\r\n var parser = new DOMParser();\r\n var serializer = new XMLSerializer();\r\n var queryTableDoc = parser.parseFromString(queryTableXmlString, _constants__WEBPACK_IMPORTED_MODULE_0__.xmlTextResultType);\r\n var queryTableFields = queryTableDoc.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_0__.element.queryTableFields)[0];\r\n queryTableFields.textContent = \"\";\r\n tableData.columnNames.forEach(function (column, columnIndex) {\r\n var queryTableField = queryTableDoc.createElementNS(queryTableDoc.documentElement.namespaceURI, _constants__WEBPACK_IMPORTED_MODULE_0__.element.queryTableField);\r\n queryTableField.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.id, (columnIndex + 1).toString());\r\n queryTableField.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.name, column);\r\n queryTableField.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.tableColumnId, (columnIndex + 1).toString());\r\n queryTableFields.appendChild(queryTableField);\r\n });\r\n queryTableFields.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.count, tableData.columnNames.length.toString());\r\n queryTableDoc.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_0__.element.queryTableRefresh)[0].setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.nextId, (tableData.columnNames.length + 1).toString());\r\n return serializer.serializeToString(queryTableDoc);\r\n};\r\nvar updateSheetsInitialData = function (sheetsXmlString, tableData) {\r\n var parser = new DOMParser();\r\n var serializer = new XMLSerializer();\r\n var sheetsDoc = parser.parseFromString(sheetsXmlString, _constants__WEBPACK_IMPORTED_MODULE_0__.xmlTextResultType);\r\n var sheetData = sheetsDoc.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_0__.element.sheetData)[0];\r\n sheetData.textContent = \"\";\r\n var rowIndex = 0;\r\n var columnRow = sheetsDoc.createElementNS(sheetsDoc.documentElement.namespaceURI, _constants__WEBPACK_IMPORTED_MODULE_0__.element.row);\r\n columnRow.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.row, (rowIndex + 1).toString());\r\n columnRow.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.spans, \"1:\" + tableData.columnNames.length);\r\n columnRow.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.x14acDyDescent, \"0.3\");\r\n tableData.columnNames.forEach(function (col, colIndex) {\r\n columnRow.appendChild(_documentUtils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].createCell(sheetsDoc, colIndex, rowIndex, col));\r\n });\r\n sheetData.appendChild(columnRow);\r\n rowIndex++;\r\n tableData.rows.forEach(function (row) {\r\n var newRow = sheetsDoc.createElementNS(sheetsDoc.documentElement.namespaceURI, _constants__WEBPACK_IMPORTED_MODULE_0__.element.row);\r\n newRow.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.row, (rowIndex + 1).toString());\r\n newRow.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.spans, \"1:\" + row.length);\r\n newRow.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.x14acDyDescent, \"0.3\");\r\n row.forEach(function (cellContent, colIndex) {\r\n newRow.appendChild(_documentUtils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].createCell(sheetsDoc, colIndex, rowIndex, cellContent));\r\n });\r\n sheetData.appendChild(newRow);\r\n rowIndex++;\r\n });\r\n var reference = _documentUtils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getTableReference(tableData.rows[0].length - 1, tableData.rows.length + 1);\r\n sheetsDoc.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_0__.element.dimension)[0].setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.reference, reference);\r\n sheetsDoc.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_0__.element.selection)[0].setAttribute(_constants__WEBPACK_IMPORTED_MODULE_0__.elementAttributes.sqref, reference);\r\n return serializer.serializeToString(sheetsDoc);\r\n};\r\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\r\n updateTableInitialDataIfNeeded: updateTableInitialDataIfNeeded,\r\n updateSheetsInitialData: updateSheetsInitialData,\r\n updateWorkbookInitialData: updateWorkbookInitialData,\r\n updateTablesInitialData: updateTablesInitialData,\r\n updateQueryTablesInitialData: updateQueryTablesInitialData,\r\n});\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/tableUtils.ts?");
183
183
 
184
184
  /***/ }),
185
185
 
@@ -187,10 +187,10 @@ eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT l
187
187
  /*!*****************************************!*\
188
188
  !*** ./src/utils/xmlInnerPartsUtils.ts ***!
189
189
  \*****************************************/
190
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
190
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
191
191
 
192
192
  "use strict";
193
- eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nconst types_1 = __webpack_require__(/*! ../types */ \"./src/types.ts\");\r\nconst constants_1 = __webpack_require__(/*! ./constants */ \"./src/utils/constants.ts\");\r\nconst documentUtils_1 = __importDefault(__webpack_require__(/*! ./documentUtils */ \"./src/utils/documentUtils.ts\"));\r\nconst updateDocProps = (zip, docProps = {}) => __awaiter(void 0, void 0, void 0, function* () {\r\n const { doc, properties } = yield documentUtils_1.default.getDocPropsProperties(zip);\r\n //set auto updated elements\r\n const docPropsAutoUpdatedElementsArr = Object.keys(types_1.DocPropsAutoUpdatedElements);\r\n const nowTime = new Date().toISOString();\r\n docPropsAutoUpdatedElementsArr.forEach((tag) => {\r\n documentUtils_1.default.createOrUpdateProperty(doc, properties, types_1.DocPropsAutoUpdatedElements[tag], nowTime);\r\n });\r\n //set modifiable elements\r\n const docPropsModifiableElementsArr = Object.keys(types_1.DocPropsModifiableElements);\r\n docPropsModifiableElementsArr\r\n .map((key) => ({\r\n name: types_1.DocPropsModifiableElements[key],\r\n value: docProps[key],\r\n }))\r\n .forEach((kvp) => {\r\n documentUtils_1.default.createOrUpdateProperty(doc, properties, kvp.name, kvp.value);\r\n });\r\n const serializer = new XMLSerializer();\r\n const newDoc = serializer.serializeToString(doc);\r\n zip.file(constants_1.docPropsCoreXmlPath, newDoc);\r\n});\r\nconst clearLabelInfo = (zip) => __awaiter(void 0, void 0, void 0, function* () {\r\n var _a, _b, _c, _d;\r\n // remove docMetadata folder that contains only LabelInfo.xml in template file.\r\n zip.remove(constants_1.docMetadataXmlPath);\r\n // fix rels\r\n const relsString = yield ((_a = zip.file(constants_1.relsXmlPath)) === null || _a === void 0 ? void 0 : _a.async(constants_1.textResultType));\r\n if (relsString === undefined) {\r\n throw new Error(constants_1.relsNotFoundErr);\r\n }\r\n const parser = new DOMParser();\r\n const doc = parser.parseFromString(relsString, constants_1.xmlTextResultType);\r\n const relationships = doc.querySelector(\"Relationships\");\r\n if (relationships === null) {\r\n throw new Error(constants_1.unexpectedErr);\r\n }\r\n const element = relationships.querySelector('Relationship[Target=\"docMetadata/LabelInfo.xml\"]');\r\n if (element) {\r\n relationships.removeChild(element);\r\n }\r\n (_b = relationships.querySelector('Relationship[Target=\"xl/workbook.xml\"]')) === null || _b === void 0 ? void 0 : _b.setAttribute(\"Id\", \"rId1\");\r\n (_c = relationships.querySelector('Relationship[Target=\"docProps/core.xml\"]')) === null || _c === void 0 ? void 0 : _c.setAttribute(\"Id\", \"rId2\");\r\n (_d = relationships.querySelector('Relationship[Target=\"docProps/app.xml\"]')) === null || _d === void 0 ? void 0 : _d.setAttribute(\"Id\", \"rId3\");\r\n const serializer = new XMLSerializer();\r\n const newDoc = serializer.serializeToString(doc);\r\n zip.file(constants_1.relsXmlPath, newDoc);\r\n});\r\nconst updateConnections = (connectionsXmlString, queryName, refreshOnOpen) => {\r\n var _a, _b, _c;\r\n const parser = new DOMParser();\r\n const serializer = new XMLSerializer();\r\n const refreshOnLoadValue = refreshOnOpen ? constants_1.trueValue : constants_1.falseValue;\r\n const connectionsDoc = parser.parseFromString(connectionsXmlString, constants_1.xmlTextResultType);\r\n const connectionsProperties = connectionsDoc.getElementsByTagName(constants_1.element.databaseProperties);\r\n const dbPr = connectionsProperties[0];\r\n dbPr.setAttribute(constants_1.elementAttributes.refreshOnLoad, refreshOnLoadValue);\r\n // Update query details to match queryName\r\n (_a = dbPr.parentElement) === null || _a === void 0 ? void 0 : _a.setAttribute(constants_1.elementAttributes.name, constants_1.elementAttributesValues.connectionName(queryName));\r\n (_b = dbPr.parentElement) === null || _b === void 0 ? void 0 : _b.setAttribute(constants_1.elementAttributes.description, constants_1.elementAttributesValues.connectionDescription(queryName));\r\n dbPr.setAttribute(constants_1.elementAttributes.connection, constants_1.elementAttributesValues.connection(queryName));\r\n dbPr.setAttribute(constants_1.elementAttributes.command, constants_1.elementAttributesValues.connectionCommand(queryName));\r\n const connectionId = (_c = dbPr.parentElement) === null || _c === void 0 ? void 0 : _c.getAttribute(constants_1.elementAttributes.id);\r\n const connectionXmlFileString = serializer.serializeToString(connectionsDoc);\r\n if (connectionId === null) {\r\n throw new Error(constants_1.connectionsNotFoundErr);\r\n }\r\n return { connectionId, connectionXmlFileString };\r\n};\r\nconst updateSharedStrings = (sharedStringsXmlString, queryName) => {\r\n const parser = new DOMParser();\r\n const serializer = new XMLSerializer();\r\n const sharedStringsDoc = parser.parseFromString(sharedStringsXmlString, constants_1.xmlTextResultType);\r\n const sharedStringsTable = sharedStringsDoc.getElementsByTagName(constants_1.element.sharedStringTable)[0];\r\n if (!sharedStringsTable) {\r\n throw new Error(constants_1.sharedStringsNotFoundErr);\r\n }\r\n const textElementCollection = sharedStringsDoc.getElementsByTagName(constants_1.element.text);\r\n let textElement = null;\r\n let sharedStringIndex = textElementCollection.length;\r\n if (textElementCollection && textElementCollection.length) {\r\n for (let i = 0; i < textElementCollection.length; i++) {\r\n if (textElementCollection[i].innerHTML === queryName) {\r\n textElement = textElementCollection[i];\r\n sharedStringIndex = i + 1;\r\n break;\r\n }\r\n }\r\n }\r\n if (textElement === null) {\r\n if (sharedStringsDoc.documentElement.namespaceURI) {\r\n textElement = sharedStringsDoc.createElementNS(sharedStringsDoc.documentElement.namespaceURI, constants_1.element.text);\r\n textElement.textContent = queryName;\r\n const siElement = sharedStringsDoc.createElementNS(sharedStringsDoc.documentElement.namespaceURI, constants_1.element.sharedStringItem);\r\n siElement.appendChild(textElement);\r\n sharedStringsDoc.getElementsByTagName(constants_1.element.sharedStringTable)[0].appendChild(siElement);\r\n }\r\n const value = sharedStringsTable.getAttribute(constants_1.elementAttributes.count);\r\n if (value) {\r\n sharedStringsTable.setAttribute(constants_1.elementAttributes.count, (parseInt(value) + 1).toString());\r\n }\r\n const uniqueValue = sharedStringsTable.getAttribute(constants_1.elementAttributes.uniqueCount);\r\n if (uniqueValue) {\r\n sharedStringsTable.setAttribute(constants_1.elementAttributes.uniqueCount, (parseInt(uniqueValue) + 1).toString());\r\n }\r\n }\r\n const newSharedStrings = serializer.serializeToString(sharedStringsDoc);\r\n return { sharedStringIndex, newSharedStrings };\r\n};\r\nconst updateWorksheet = (sheetsXmlString, sharedStringIndex) => {\r\n const parser = new DOMParser();\r\n const serializer = new XMLSerializer();\r\n const sheetsDoc = parser.parseFromString(sheetsXmlString, constants_1.xmlTextResultType);\r\n sheetsDoc.getElementsByTagName(constants_1.element.cellValue)[0].innerHTML = sharedStringIndex.toString();\r\n const newSheet = serializer.serializeToString(sheetsDoc);\r\n return newSheet;\r\n};\r\nconst updatePivotTablesandQueryTables = (zip, queryName, refreshOnOpen, connectionId) => __awaiter(void 0, void 0, void 0, function* () {\r\n var _e, _f;\r\n // Find Query Table\r\n let found = false;\r\n const queryTablePromises = [];\r\n (_e = zip.folder(constants_1.queryTablesPath)) === null || _e === void 0 ? void 0 : _e.forEach((relativePath, queryTableFile) => __awaiter(void 0, void 0, void 0, function* () {\r\n queryTablePromises.push((() => {\r\n return queryTableFile.async(constants_1.textResultType).then((queryTableString) => {\r\n return {\r\n path: relativePath,\r\n queryTableXmlString: queryTableString,\r\n };\r\n });\r\n })());\r\n }));\r\n (yield Promise.all(queryTablePromises)).forEach(({ path, queryTableXmlString }) => {\r\n const { isQueryTableUpdated, newQueryTable } = updateQueryTable(queryTableXmlString, connectionId, refreshOnOpen);\r\n zip.file(constants_1.queryTablesPath + path, newQueryTable);\r\n if (isQueryTableUpdated) {\r\n found = true;\r\n }\r\n });\r\n if (found) {\r\n return;\r\n }\r\n // Find Pivot Table\r\n const pivotCachePromises = [];\r\n (_f = zip.folder(constants_1.pivotCachesPath)) === null || _f === void 0 ? void 0 : _f.forEach((relativePath, pivotCacheFile) => __awaiter(void 0, void 0, void 0, function* () {\r\n if (relativePath.startsWith(constants_1.pivotCachesPathPrefix)) {\r\n pivotCachePromises.push((() => {\r\n return pivotCacheFile.async(constants_1.textResultType).then((pivotCacheString) => {\r\n return {\r\n path: relativePath,\r\n pivotCacheXmlString: pivotCacheString,\r\n };\r\n });\r\n })());\r\n }\r\n }));\r\n (yield Promise.all(pivotCachePromises)).forEach(({ path, pivotCacheXmlString }) => {\r\n const { isPivotTableUpdated, newPivotTable } = updatePivotTable(pivotCacheXmlString, connectionId, refreshOnOpen);\r\n zip.file(constants_1.pivotCachesPath + path, newPivotTable);\r\n if (isPivotTableUpdated) {\r\n found = true;\r\n }\r\n });\r\n if (!found) {\r\n throw new Error(constants_1.queryAndPivotTableNotFoundErr);\r\n }\r\n});\r\nconst updateQueryTable = (tableXmlString, connectionId, refreshOnOpen) => {\r\n const refreshOnLoadValue = refreshOnOpen ? constants_1.trueValue : constants_1.falseValue;\r\n let isQueryTableUpdated = false;\r\n const parser = new DOMParser();\r\n const serializer = new XMLSerializer();\r\n const queryTableDoc = parser.parseFromString(tableXmlString, constants_1.xmlTextResultType);\r\n const queryTable = queryTableDoc.getElementsByTagName(constants_1.element.queryTable)[0];\r\n let newQueryTable = constants_1.emptyValue;\r\n if (queryTable.getAttribute(constants_1.elementAttributes.connectionId) == connectionId) {\r\n queryTable.setAttribute(constants_1.elementAttributes.refreshOnLoad, refreshOnLoadValue);\r\n newQueryTable = serializer.serializeToString(queryTableDoc);\r\n isQueryTableUpdated = true;\r\n }\r\n return { isQueryTableUpdated, newQueryTable };\r\n};\r\nconst updatePivotTable = (tableXmlString, connectionId, refreshOnOpen) => {\r\n const refreshOnLoadValue = refreshOnOpen ? constants_1.trueValue : constants_1.falseValue;\r\n let isPivotTableUpdated = false;\r\n const parser = new DOMParser();\r\n const serializer = new XMLSerializer();\r\n const pivotCacheDoc = parser.parseFromString(tableXmlString, constants_1.xmlTextResultType);\r\n let cacheSource = pivotCacheDoc.getElementsByTagName(constants_1.element.cacheSource)[0];\r\n let newPivotTable = constants_1.emptyValue;\r\n if (cacheSource.getAttribute(constants_1.elementAttributes.connectionId) == connectionId) {\r\n cacheSource = cacheSource.parentElement;\r\n cacheSource.setAttribute(constants_1.elementAttributes.refreshOnLoad, refreshOnLoadValue);\r\n newPivotTable = serializer.serializeToString(pivotCacheDoc);\r\n isPivotTableUpdated = true;\r\n }\r\n return { isPivotTableUpdated, newPivotTable };\r\n};\r\nexports[\"default\"] = {\r\n updateDocProps,\r\n clearLabelInfo,\r\n updateConnections,\r\n updateSharedStrings,\r\n updateWorksheet,\r\n updatePivotTablesandQueryTables,\r\n updateQueryTable,\r\n updatePivotTable,\r\n};\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/xmlInnerPartsUtils.ts?");
193
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ \"./src/types.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ \"./src/utils/constants.ts\");\n/* harmony import */ var _documentUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./documentUtils */ \"./src/utils/documentUtils.ts\");\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\n\r\n\r\n\r\nvar updateDocProps = function (zip, docProps) {\r\n if (docProps === void 0) { docProps = {}; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var _a, doc, properties, docPropsAutoUpdatedElementsArr, nowTime, docPropsModifiableElementsArr, serializer, newDoc;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, _documentUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getDocPropsProperties(zip)];\r\n case 1:\r\n _a = _b.sent(), doc = _a.doc, properties = _a.properties;\r\n docPropsAutoUpdatedElementsArr = Object.keys(_types__WEBPACK_IMPORTED_MODULE_0__.DocPropsAutoUpdatedElements);\r\n nowTime = new Date().toISOString();\r\n docPropsAutoUpdatedElementsArr.forEach(function (tag) {\r\n _documentUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].createOrUpdateProperty(doc, properties, _types__WEBPACK_IMPORTED_MODULE_0__.DocPropsAutoUpdatedElements[tag], nowTime);\r\n });\r\n docPropsModifiableElementsArr = Object.keys(_types__WEBPACK_IMPORTED_MODULE_0__.DocPropsModifiableElements);\r\n docPropsModifiableElementsArr\r\n .map(function (key) { return ({\r\n name: _types__WEBPACK_IMPORTED_MODULE_0__.DocPropsModifiableElements[key],\r\n value: docProps[key],\r\n }); })\r\n .forEach(function (kvp) {\r\n _documentUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].createOrUpdateProperty(doc, properties, kvp.name, kvp.value);\r\n });\r\n serializer = new XMLSerializer();\r\n newDoc = serializer.serializeToString(doc);\r\n zip.file(_constants__WEBPACK_IMPORTED_MODULE_1__.docPropsCoreXmlPath, newDoc);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n};\r\nvar clearLabelInfo = function (zip) { return __awaiter(void 0, void 0, void 0, function () {\r\n var relsString, parser, doc, relationships, element, serializer, newDoc;\r\n var _a, _b, _c, _d;\r\n return __generator(this, function (_e) {\r\n switch (_e.label) {\r\n case 0:\r\n // remove docMetadata folder that contains only LabelInfo.xml in template file.\r\n zip.remove(_constants__WEBPACK_IMPORTED_MODULE_1__.docMetadataXmlPath);\r\n return [4 /*yield*/, ((_a = zip.file(_constants__WEBPACK_IMPORTED_MODULE_1__.relsXmlPath)) === null || _a === void 0 ? void 0 : _a.async(_constants__WEBPACK_IMPORTED_MODULE_1__.textResultType))];\r\n case 1:\r\n relsString = _e.sent();\r\n if (relsString === undefined) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_1__.relsNotFoundErr);\r\n }\r\n parser = new DOMParser();\r\n doc = parser.parseFromString(relsString, _constants__WEBPACK_IMPORTED_MODULE_1__.xmlTextResultType);\r\n relationships = doc.querySelector(\"Relationships\");\r\n if (relationships === null) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_1__.unexpectedErr);\r\n }\r\n element = relationships.querySelector('Relationship[Target=\"docMetadata/LabelInfo.xml\"]');\r\n if (element) {\r\n relationships.removeChild(element);\r\n }\r\n (_b = relationships.querySelector('Relationship[Target=\"xl/workbook.xml\"]')) === null || _b === void 0 ? void 0 : _b.setAttribute(\"Id\", \"rId1\");\r\n (_c = relationships.querySelector('Relationship[Target=\"docProps/core.xml\"]')) === null || _c === void 0 ? void 0 : _c.setAttribute(\"Id\", \"rId2\");\r\n (_d = relationships.querySelector('Relationship[Target=\"docProps/app.xml\"]')) === null || _d === void 0 ? void 0 : _d.setAttribute(\"Id\", \"rId3\");\r\n serializer = new XMLSerializer();\r\n newDoc = serializer.serializeToString(doc);\r\n zip.file(_constants__WEBPACK_IMPORTED_MODULE_1__.relsXmlPath, newDoc);\r\n return [2 /*return*/];\r\n }\r\n });\r\n}); };\r\nvar updateConnections = function (connectionsXmlString, queryName, refreshOnOpen) {\r\n var _a, _b, _c;\r\n var parser = new DOMParser();\r\n var serializer = new XMLSerializer();\r\n var refreshOnLoadValue = refreshOnOpen ? _constants__WEBPACK_IMPORTED_MODULE_1__.trueValue : _constants__WEBPACK_IMPORTED_MODULE_1__.falseValue;\r\n var connectionsDoc = parser.parseFromString(connectionsXmlString, _constants__WEBPACK_IMPORTED_MODULE_1__.xmlTextResultType);\r\n var connectionsProperties = connectionsDoc.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_1__.element.databaseProperties);\r\n var dbPr = connectionsProperties[0];\r\n dbPr.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributes.refreshOnLoad, refreshOnLoadValue);\r\n // Update query details to match queryName\r\n (_a = dbPr.parentElement) === null || _a === void 0 ? void 0 : _a.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributes.name, _constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributesValues.connectionName(queryName));\r\n (_b = dbPr.parentElement) === null || _b === void 0 ? void 0 : _b.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributes.description, _constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributesValues.connectionDescription(queryName));\r\n dbPr.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributes.connection, _constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributesValues.connection(queryName));\r\n dbPr.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributes.command, _constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributesValues.connectionCommand(queryName));\r\n var connectionId = (_c = dbPr.parentElement) === null || _c === void 0 ? void 0 : _c.getAttribute(_constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributes.id);\r\n var connectionXmlFileString = serializer.serializeToString(connectionsDoc);\r\n if (connectionId === null) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_1__.connectionsNotFoundErr);\r\n }\r\n return { connectionId: connectionId, connectionXmlFileString: connectionXmlFileString };\r\n};\r\nvar updateSharedStrings = function (sharedStringsXmlString, queryName) {\r\n var parser = new DOMParser();\r\n var serializer = new XMLSerializer();\r\n var sharedStringsDoc = parser.parseFromString(sharedStringsXmlString, _constants__WEBPACK_IMPORTED_MODULE_1__.xmlTextResultType);\r\n var sharedStringsTable = sharedStringsDoc.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_1__.element.sharedStringTable)[0];\r\n if (!sharedStringsTable) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_1__.sharedStringsNotFoundErr);\r\n }\r\n var textElementCollection = sharedStringsDoc.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_1__.element.text);\r\n var textElement = null;\r\n var sharedStringIndex = textElementCollection.length;\r\n if (textElementCollection && textElementCollection.length) {\r\n for (var i = 0; i < textElementCollection.length; i++) {\r\n if (textElementCollection[i].innerHTML === queryName) {\r\n textElement = textElementCollection[i];\r\n sharedStringIndex = i + 1;\r\n break;\r\n }\r\n }\r\n }\r\n if (textElement === null) {\r\n if (sharedStringsDoc.documentElement.namespaceURI) {\r\n textElement = sharedStringsDoc.createElementNS(sharedStringsDoc.documentElement.namespaceURI, _constants__WEBPACK_IMPORTED_MODULE_1__.element.text);\r\n textElement.textContent = queryName;\r\n var siElement = sharedStringsDoc.createElementNS(sharedStringsDoc.documentElement.namespaceURI, _constants__WEBPACK_IMPORTED_MODULE_1__.element.sharedStringItem);\r\n siElement.appendChild(textElement);\r\n sharedStringsDoc.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_1__.element.sharedStringTable)[0].appendChild(siElement);\r\n }\r\n var value = sharedStringsTable.getAttribute(_constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributes.count);\r\n if (value) {\r\n sharedStringsTable.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributes.count, (parseInt(value) + 1).toString());\r\n }\r\n var uniqueValue = sharedStringsTable.getAttribute(_constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributes.uniqueCount);\r\n if (uniqueValue) {\r\n sharedStringsTable.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributes.uniqueCount, (parseInt(uniqueValue) + 1).toString());\r\n }\r\n }\r\n var newSharedStrings = serializer.serializeToString(sharedStringsDoc);\r\n return { sharedStringIndex: sharedStringIndex, newSharedStrings: newSharedStrings };\r\n};\r\nvar updateWorksheet = function (sheetsXmlString, sharedStringIndex) {\r\n var parser = new DOMParser();\r\n var serializer = new XMLSerializer();\r\n var sheetsDoc = parser.parseFromString(sheetsXmlString, _constants__WEBPACK_IMPORTED_MODULE_1__.xmlTextResultType);\r\n sheetsDoc.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_1__.element.cellValue)[0].innerHTML = sharedStringIndex.toString();\r\n var newSheet = serializer.serializeToString(sheetsDoc);\r\n return newSheet;\r\n};\r\nvar updatePivotTablesandQueryTables = function (zip, queryName, refreshOnOpen, connectionId) { return __awaiter(void 0, void 0, void 0, function () {\r\n var found, queryTablePromises, pivotCachePromises;\r\n var _a, _b;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n found = false;\r\n queryTablePromises = [];\r\n (_a = zip.folder(_constants__WEBPACK_IMPORTED_MODULE_1__.queryTablesPath)) === null || _a === void 0 ? void 0 : _a.forEach(function (relativePath, queryTableFile) { return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n queryTablePromises.push((function () {\r\n return queryTableFile.async(_constants__WEBPACK_IMPORTED_MODULE_1__.textResultType).then(function (queryTableString) {\r\n return {\r\n path: relativePath,\r\n queryTableXmlString: queryTableString,\r\n };\r\n });\r\n })());\r\n return [2 /*return*/];\r\n });\r\n }); });\r\n return [4 /*yield*/, Promise.all(queryTablePromises)];\r\n case 1:\r\n (_c.sent()).forEach(function (_a) {\r\n var path = _a.path, queryTableXmlString = _a.queryTableXmlString;\r\n var _b = updateQueryTable(queryTableXmlString, connectionId, refreshOnOpen), isQueryTableUpdated = _b.isQueryTableUpdated, newQueryTable = _b.newQueryTable;\r\n zip.file(_constants__WEBPACK_IMPORTED_MODULE_1__.queryTablesPath + path, newQueryTable);\r\n if (isQueryTableUpdated) {\r\n found = true;\r\n }\r\n });\r\n if (found) {\r\n return [2 /*return*/];\r\n }\r\n pivotCachePromises = [];\r\n (_b = zip.folder(_constants__WEBPACK_IMPORTED_MODULE_1__.pivotCachesPath)) === null || _b === void 0 ? void 0 : _b.forEach(function (relativePath, pivotCacheFile) { return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (relativePath.startsWith(_constants__WEBPACK_IMPORTED_MODULE_1__.pivotCachesPathPrefix)) {\r\n pivotCachePromises.push((function () {\r\n return pivotCacheFile.async(_constants__WEBPACK_IMPORTED_MODULE_1__.textResultType).then(function (pivotCacheString) {\r\n return {\r\n path: relativePath,\r\n pivotCacheXmlString: pivotCacheString,\r\n };\r\n });\r\n })());\r\n }\r\n return [2 /*return*/];\r\n });\r\n }); });\r\n return [4 /*yield*/, Promise.all(pivotCachePromises)];\r\n case 2:\r\n (_c.sent()).forEach(function (_a) {\r\n var path = _a.path, pivotCacheXmlString = _a.pivotCacheXmlString;\r\n var _b = updatePivotTable(pivotCacheXmlString, connectionId, refreshOnOpen), isPivotTableUpdated = _b.isPivotTableUpdated, newPivotTable = _b.newPivotTable;\r\n zip.file(_constants__WEBPACK_IMPORTED_MODULE_1__.pivotCachesPath + path, newPivotTable);\r\n if (isPivotTableUpdated) {\r\n found = true;\r\n }\r\n });\r\n if (!found) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_1__.queryAndPivotTableNotFoundErr);\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n}); };\r\nvar updateQueryTable = function (tableXmlString, connectionId, refreshOnOpen) {\r\n var refreshOnLoadValue = refreshOnOpen ? _constants__WEBPACK_IMPORTED_MODULE_1__.trueValue : _constants__WEBPACK_IMPORTED_MODULE_1__.falseValue;\r\n var isQueryTableUpdated = false;\r\n var parser = new DOMParser();\r\n var serializer = new XMLSerializer();\r\n var queryTableDoc = parser.parseFromString(tableXmlString, _constants__WEBPACK_IMPORTED_MODULE_1__.xmlTextResultType);\r\n var queryTable = queryTableDoc.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_1__.element.queryTable)[0];\r\n var newQueryTable = _constants__WEBPACK_IMPORTED_MODULE_1__.emptyValue;\r\n if (queryTable.getAttribute(_constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributes.connectionId) == connectionId) {\r\n queryTable.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributes.refreshOnLoad, refreshOnLoadValue);\r\n newQueryTable = serializer.serializeToString(queryTableDoc);\r\n isQueryTableUpdated = true;\r\n }\r\n return { isQueryTableUpdated: isQueryTableUpdated, newQueryTable: newQueryTable };\r\n};\r\nvar updatePivotTable = function (tableXmlString, connectionId, refreshOnOpen) {\r\n var refreshOnLoadValue = refreshOnOpen ? _constants__WEBPACK_IMPORTED_MODULE_1__.trueValue : _constants__WEBPACK_IMPORTED_MODULE_1__.falseValue;\r\n var isPivotTableUpdated = false;\r\n var parser = new DOMParser();\r\n var serializer = new XMLSerializer();\r\n var pivotCacheDoc = parser.parseFromString(tableXmlString, _constants__WEBPACK_IMPORTED_MODULE_1__.xmlTextResultType);\r\n var cacheSource = pivotCacheDoc.getElementsByTagName(_constants__WEBPACK_IMPORTED_MODULE_1__.element.cacheSource)[0];\r\n var newPivotTable = _constants__WEBPACK_IMPORTED_MODULE_1__.emptyValue;\r\n if (cacheSource.getAttribute(_constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributes.connectionId) == connectionId) {\r\n cacheSource = cacheSource.parentElement;\r\n cacheSource.setAttribute(_constants__WEBPACK_IMPORTED_MODULE_1__.elementAttributes.refreshOnLoad, refreshOnLoadValue);\r\n newPivotTable = serializer.serializeToString(pivotCacheDoc);\r\n isPivotTableUpdated = true;\r\n }\r\n return { isPivotTableUpdated: isPivotTableUpdated, newPivotTable: newPivotTable };\r\n};\r\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\r\n updateDocProps: updateDocProps,\r\n clearLabelInfo: clearLabelInfo,\r\n updateConnections: updateConnections,\r\n updateSharedStrings: updateSharedStrings,\r\n updateWorksheet: updateWorksheet,\r\n updatePivotTablesandQueryTables: updatePivotTablesandQueryTables,\r\n updateQueryTable: updateQueryTable,\r\n updatePivotTable: updatePivotTable,\r\n});\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/xmlInnerPartsUtils.ts?");
194
194
 
195
195
  /***/ }),
196
196
 
@@ -198,10 +198,10 @@ eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT l
198
198
  /*!************************************!*\
199
199
  !*** ./src/utils/xmlPartsUtils.ts ***!
200
200
  \************************************/
201
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
201
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
202
202
 
203
203
  "use strict";
204
- eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nconst constants_1 = __webpack_require__(/*! ./constants */ \"./src/utils/constants.ts\");\r\nconst mashupDocumentParser_1 = __webpack_require__(/*! ./mashupDocumentParser */ \"./src/utils/mashupDocumentParser.ts\");\r\nconst pqUtils_1 = __importDefault(__webpack_require__(/*! ./pqUtils */ \"./src/utils/pqUtils.ts\"));\r\nconst xmlInnerPartsUtils_1 = __importDefault(__webpack_require__(/*! ./xmlInnerPartsUtils */ \"./src/utils/xmlInnerPartsUtils.ts\"));\r\nconst tableUtils_1 = __importDefault(__webpack_require__(/*! ./tableUtils */ \"./src/utils/tableUtils.ts\"));\r\nconst updateWorkbookDataAndConfigurations = (zip, fileConfigs, tableData, updateQueryTable = false) => __awaiter(void 0, void 0, void 0, function* () {\r\n yield xmlInnerPartsUtils_1.default.updateDocProps(zip, fileConfigs === null || fileConfigs === void 0 ? void 0 : fileConfigs.docProps);\r\n if ((fileConfigs === null || fileConfigs === void 0 ? void 0 : fileConfigs.templateFile) === undefined) {\r\n // If we are using our base template, we need to clear label info\r\n yield xmlInnerPartsUtils_1.default.clearLabelInfo(zip);\r\n }\r\n yield tableUtils_1.default.updateTableInitialDataIfNeeded(zip, tableData, updateQueryTable);\r\n});\r\nconst updateWorkbookPowerQueryDocument = (zip, queryName, queryMashupDoc) => __awaiter(void 0, void 0, void 0, function* () {\r\n const old_base64 = yield pqUtils_1.default.getBase64(zip);\r\n if (!old_base64) {\r\n throw new Error(constants_1.base64NotFoundErr);\r\n }\r\n const new_base64 = yield (0, mashupDocumentParser_1.replaceSingleQuery)(old_base64, queryName, queryMashupDoc);\r\n yield pqUtils_1.default.setBase64(zip, new_base64);\r\n});\r\nconst updateWorkbookSingleQueryAttributes = (zip, queryName, refreshOnOpen) => __awaiter(void 0, void 0, void 0, function* () {\r\n var _a, _b, _c;\r\n // Update connections\r\n const connectionsXmlString = yield ((_a = zip.file(constants_1.connectionsXmlPath)) === null || _a === void 0 ? void 0 : _a.async(constants_1.textResultType));\r\n if (connectionsXmlString === undefined) {\r\n throw new Error(constants_1.connectionsNotFoundErr);\r\n }\r\n const { connectionId, connectionXmlFileString } = xmlInnerPartsUtils_1.default.updateConnections(connectionsXmlString, queryName, refreshOnOpen);\r\n zip.file(constants_1.connectionsXmlPath, connectionXmlFileString);\r\n // Update sharedStrings\r\n const sharedStringsXmlString = yield ((_b = zip.file(constants_1.sharedStringsXmlPath)) === null || _b === void 0 ? void 0 : _b.async(constants_1.textResultType));\r\n if (sharedStringsXmlString === undefined) {\r\n throw new Error(constants_1.sharedStringsNotFoundErr);\r\n }\r\n const { sharedStringIndex, newSharedStrings } = xmlInnerPartsUtils_1.default.updateSharedStrings(sharedStringsXmlString, queryName);\r\n zip.file(constants_1.sharedStringsXmlPath, newSharedStrings);\r\n // Update sheet\r\n const sheetsXmlString = yield ((_c = zip.file(constants_1.sheetsXmlPath)) === null || _c === void 0 ? void 0 : _c.async(constants_1.textResultType));\r\n if (sheetsXmlString === undefined) {\r\n throw new Error(constants_1.sheetsNotFoundErr);\r\n }\r\n const worksheetString = xmlInnerPartsUtils_1.default.updateWorksheet(sheetsXmlString, sharedStringIndex.toString());\r\n zip.file(constants_1.sheetsXmlPath, worksheetString);\r\n // Update tables\r\n yield xmlInnerPartsUtils_1.default.updatePivotTablesandQueryTables(zip, queryName, refreshOnOpen, connectionId);\r\n});\r\nexports[\"default\"] = {\r\n updateWorkbookDataAndConfigurations,\r\n updateWorkbookPowerQueryDocument,\r\n updateWorkbookSingleQueryAttributes,\r\n};\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/xmlPartsUtils.ts?");
204
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ \"./src/utils/constants.ts\");\n/* harmony import */ var _mashupDocumentParser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mashupDocumentParser */ \"./src/utils/mashupDocumentParser.ts\");\n/* harmony import */ var _pqUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pqUtils */ \"./src/utils/pqUtils.ts\");\n/* harmony import */ var _xmlInnerPartsUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./xmlInnerPartsUtils */ \"./src/utils/xmlInnerPartsUtils.ts\");\n/* harmony import */ var _tableUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tableUtils */ \"./src/utils/tableUtils.ts\");\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\n\r\n\r\n\r\n\r\n\r\nvar updateWorkbookDataAndConfigurations = function (zip, fileConfigs, tableData, updateQueryTable) {\r\n if (updateQueryTable === void 0) { updateQueryTable = false; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, _xmlInnerPartsUtils__WEBPACK_IMPORTED_MODULE_3__[\"default\"].updateDocProps(zip, fileConfigs === null || fileConfigs === void 0 ? void 0 : fileConfigs.docProps)];\r\n case 1:\r\n _a.sent();\r\n if (!((fileConfigs === null || fileConfigs === void 0 ? void 0 : fileConfigs.templateFile) === undefined)) return [3 /*break*/, 3];\r\n // If we are using our base template, we need to clear label info\r\n return [4 /*yield*/, _xmlInnerPartsUtils__WEBPACK_IMPORTED_MODULE_3__[\"default\"].clearLabelInfo(zip)];\r\n case 2:\r\n // If we are using our base template, we need to clear label info\r\n _a.sent();\r\n _a.label = 3;\r\n case 3: return [4 /*yield*/, _tableUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].updateTableInitialDataIfNeeded(zip, tableData, updateQueryTable)];\r\n case 4:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n};\r\nvar updateWorkbookPowerQueryDocument = function (zip, queryName, queryMashupDoc) { return __awaiter(void 0, void 0, void 0, function () {\r\n var old_base64, new_base64;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, _pqUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getBase64(zip)];\r\n case 1:\r\n old_base64 = _a.sent();\r\n if (!old_base64) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_0__.base64NotFoundErr);\r\n }\r\n return [4 /*yield*/, (0,_mashupDocumentParser__WEBPACK_IMPORTED_MODULE_1__.replaceSingleQuery)(old_base64, queryName, queryMashupDoc)];\r\n case 2:\r\n new_base64 = _a.sent();\r\n return [4 /*yield*/, _pqUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setBase64(zip, new_base64)];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n}); };\r\nvar updateWorkbookSingleQueryAttributes = function (zip, queryName, refreshOnOpen) { return __awaiter(void 0, void 0, void 0, function () {\r\n var connectionsXmlString, _a, connectionId, connectionXmlFileString, sharedStringsXmlString, _b, sharedStringIndex, newSharedStrings, sheetsXmlString, worksheetString;\r\n var _c, _d, _e;\r\n return __generator(this, function (_f) {\r\n switch (_f.label) {\r\n case 0: return [4 /*yield*/, ((_c = zip.file(_constants__WEBPACK_IMPORTED_MODULE_0__.connectionsXmlPath)) === null || _c === void 0 ? void 0 : _c.async(_constants__WEBPACK_IMPORTED_MODULE_0__.textResultType))];\r\n case 1:\r\n connectionsXmlString = _f.sent();\r\n if (connectionsXmlString === undefined) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_0__.connectionsNotFoundErr);\r\n }\r\n _a = _xmlInnerPartsUtils__WEBPACK_IMPORTED_MODULE_3__[\"default\"].updateConnections(connectionsXmlString, queryName, refreshOnOpen), connectionId = _a.connectionId, connectionXmlFileString = _a.connectionXmlFileString;\r\n zip.file(_constants__WEBPACK_IMPORTED_MODULE_0__.connectionsXmlPath, connectionXmlFileString);\r\n return [4 /*yield*/, ((_d = zip.file(_constants__WEBPACK_IMPORTED_MODULE_0__.sharedStringsXmlPath)) === null || _d === void 0 ? void 0 : _d.async(_constants__WEBPACK_IMPORTED_MODULE_0__.textResultType))];\r\n case 2:\r\n sharedStringsXmlString = _f.sent();\r\n if (sharedStringsXmlString === undefined) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_0__.sharedStringsNotFoundErr);\r\n }\r\n _b = _xmlInnerPartsUtils__WEBPACK_IMPORTED_MODULE_3__[\"default\"].updateSharedStrings(sharedStringsXmlString, queryName), sharedStringIndex = _b.sharedStringIndex, newSharedStrings = _b.newSharedStrings;\r\n zip.file(_constants__WEBPACK_IMPORTED_MODULE_0__.sharedStringsXmlPath, newSharedStrings);\r\n return [4 /*yield*/, ((_e = zip.file(_constants__WEBPACK_IMPORTED_MODULE_0__.sheetsXmlPath)) === null || _e === void 0 ? void 0 : _e.async(_constants__WEBPACK_IMPORTED_MODULE_0__.textResultType))];\r\n case 3:\r\n sheetsXmlString = _f.sent();\r\n if (sheetsXmlString === undefined) {\r\n throw new Error(_constants__WEBPACK_IMPORTED_MODULE_0__.sheetsNotFoundErr);\r\n }\r\n worksheetString = _xmlInnerPartsUtils__WEBPACK_IMPORTED_MODULE_3__[\"default\"].updateWorksheet(sheetsXmlString, sharedStringIndex.toString());\r\n zip.file(_constants__WEBPACK_IMPORTED_MODULE_0__.sheetsXmlPath, worksheetString);\r\n // Update tables\r\n return [4 /*yield*/, _xmlInnerPartsUtils__WEBPACK_IMPORTED_MODULE_3__[\"default\"].updatePivotTablesandQueryTables(zip, queryName, refreshOnOpen, connectionId)];\r\n case 4:\r\n // Update tables\r\n _f.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n}); };\r\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\r\n updateWorkbookDataAndConfigurations: updateWorkbookDataAndConfigurations,\r\n updateWorkbookPowerQueryDocument: updateWorkbookPowerQueryDocument,\r\n updateWorkbookSingleQueryAttributes: updateWorkbookSingleQueryAttributes,\r\n});\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/utils/xmlPartsUtils.ts?");
205
205
 
206
206
  /***/ }),
207
207
 
@@ -209,10 +209,10 @@ eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT l
209
209
  /*!********************************!*\
210
210
  !*** ./src/workbookManager.ts ***!
211
211
  \********************************/
212
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
212
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
213
213
 
214
214
  "use strict";
215
- eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.openInExcelWeb = exports.downloadWorkbook = exports.generateTableWorkbookFromGrid = exports.generateTableWorkbookFromHtml = exports.generateSingleQueryWorkbook = void 0;\r\nconst axios_1 = __importDefault(__webpack_require__(/*! axios */ \"./node_modules/axios/dist/browser/axios.cjs\"));\r\nconst jszip_1 = __importDefault(__webpack_require__(/*! jszip */ \"./node_modules/jszip/dist/jszip.min.js\"));\r\nconst utils_1 = __webpack_require__(/*! ./utils */ \"./src/utils/index.ts\");\r\nconst workbookTemplate_1 = __webpack_require__(/*! ./workbookTemplate */ \"./src/workbookTemplate.ts\");\r\nconst constants_1 = __webpack_require__(/*! ./utils/constants */ \"./src/utils/constants.ts\");\r\nconst generators_1 = __webpack_require__(/*! ./generators */ \"./src/generators.ts\");\r\nconst generateSingleQueryWorkbook = (query, initialDataGrid, fileConfigs) => __awaiter(void 0, void 0, void 0, function* () {\r\n if (!query.queryMashup) {\r\n throw new Error(constants_1.emptyQueryMashupErr);\r\n }\r\n if (!query.queryName) {\r\n query.queryName = constants_1.defaults.queryName;\r\n }\r\n const templateFile = fileConfigs === null || fileConfigs === void 0 ? void 0 : fileConfigs.templateFile;\r\n if (templateFile !== undefined && initialDataGrid !== undefined) {\r\n throw new Error(constants_1.templateWithInitialDataErr);\r\n }\r\n utils_1.pqUtils.validateQueryName(query.queryName);\r\n const zip = templateFile === undefined ? yield jszip_1.default.loadAsync(workbookTemplate_1.SIMPLE_QUERY_WORKBOOK_TEMPLATE, { base64: true }) : yield jszip_1.default.loadAsync(templateFile);\r\n const tableData = initialDataGrid ? utils_1.gridUtils.parseToTableData(initialDataGrid) : undefined;\r\n return yield generateSingleQueryWorkbookFromZip(zip, query, fileConfigs, tableData);\r\n});\r\nexports.generateSingleQueryWorkbook = generateSingleQueryWorkbook;\r\nconst generateTableWorkbookFromHtml = (htmlTable, fileConfigs) => __awaiter(void 0, void 0, void 0, function* () {\r\n const gridData = utils_1.htmlUtils.extractTableValues(htmlTable);\r\n return yield (0, exports.generateTableWorkbookFromGrid)({ data: gridData, config: { promoteHeaders: true } }, fileConfigs);\r\n});\r\nexports.generateTableWorkbookFromHtml = generateTableWorkbookFromHtml;\r\nconst generateTableWorkbookFromGrid = (grid, fileConfigs) => __awaiter(void 0, void 0, void 0, function* () {\r\n const zip = (fileConfigs === null || fileConfigs === void 0 ? void 0 : fileConfigs.templateFile) === undefined\r\n ? yield jszip_1.default.loadAsync(workbookTemplate_1.SIMPLE_BLANK_TABLE_TEMPLATE, { base64: true })\r\n : yield jszip_1.default.loadAsync(fileConfigs.templateFile);\r\n const tableData = utils_1.gridUtils.parseToTableData(grid);\r\n if (tableData === undefined) {\r\n throw new Error(constants_1.tableNotFoundErr);\r\n }\r\n yield utils_1.xmlPartsUtils.updateWorkbookDataAndConfigurations(zip, fileConfigs, tableData);\r\n return yield zip.generateAsync({\r\n type: constants_1.blobFileType,\r\n mimeType: constants_1.application,\r\n });\r\n});\r\nexports.generateTableWorkbookFromGrid = generateTableWorkbookFromGrid;\r\nconst generateSingleQueryWorkbookFromZip = (zip, query, fileConfigs, tableData) => __awaiter(void 0, void 0, void 0, function* () {\r\n if (!query.queryName) {\r\n query.queryName = constants_1.defaults.queryName;\r\n }\r\n yield utils_1.xmlPartsUtils.updateWorkbookPowerQueryDocument(zip, query.queryName, (0, generators_1.generateSingleQueryMashup)(query.queryName, query.queryMashup));\r\n yield utils_1.xmlPartsUtils.updateWorkbookSingleQueryAttributes(zip, query.queryName, query.refreshOnOpen);\r\n yield utils_1.xmlPartsUtils.updateWorkbookDataAndConfigurations(zip, fileConfigs, tableData, true /*updateQueryTable*/);\r\n return yield zip.generateAsync({\r\n type: constants_1.blobFileType,\r\n mimeType: constants_1.application,\r\n });\r\n});\r\nconst downloadWorkbook = (file, filename) => {\r\n const nav = window.navigator;\r\n if (nav.msSaveOrOpenBlob)\r\n // IE10+\r\n nav.msSaveOrOpenBlob(file, filename);\r\n else {\r\n // Others\r\n const a = document.createElement(\"a\");\r\n const url = URL.createObjectURL(file);\r\n a.href = url;\r\n a.download = filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n setTimeout(function () {\r\n document.body.removeChild(a);\r\n window.URL.revokeObjectURL(url);\r\n }, 0);\r\n }\r\n};\r\nexports.downloadWorkbook = downloadWorkbook;\r\nconst openInExcelWeb = (file, filename, allowTyping) => __awaiter(void 0, void 0, void 0, function* () {\r\n var _a;\r\n // Check if the file exists\r\n if (file.size > 0) {\r\n // Read the content of the Excel file into a buffer\r\n const fileContent = file;\r\n // Create a new axios instance\r\n const client = axios_1.default.create();\r\n const fileNameGuid = (_a = new Date().getTime().toString() + \"_\" + filename) !== null && _a !== void 0 ? _a : \"\";\r\n // Parse allowTyping parameter\r\n const allowTypingParam = allowTyping ? 1 : 0;\r\n // Send the POST request to the desired endpoint\r\n const response = yield client.post(`https://view.officeapps.live.com/op/viewpost.aspx?src=http://connectedWorkbooks.excel/${fileNameGuid}`, fileContent, {\r\n headers: constants_1.headers,\r\n });\r\n // Check if the response is successful\r\n if (response.status === 200) {\r\n // if upload was successful - open the file in a new tab\r\n window.open(`https://view.officeapps.live.com/op/view.aspx?src=http://connectedWorkbooks.excel/${fileNameGuid}&allowTyping=${allowTypingParam}`, \"_blank\");\r\n }\r\n else {\r\n throw new Error(`File upload failed. Status code: ${response.status}`);\r\n }\r\n }\r\n});\r\nexports.openInExcelWeb = openInExcelWeb;\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/workbookManager.ts?");
215
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ downloadWorkbook: () => (/* binding */ downloadWorkbook),\n/* harmony export */ generateSingleQueryWorkbook: () => (/* binding */ generateSingleQueryWorkbook),\n/* harmony export */ generateTableWorkbookFromGrid: () => (/* binding */ generateTableWorkbookFromGrid),\n/* harmony export */ generateTableWorkbookFromHtml: () => (/* binding */ generateTableWorkbookFromHtml),\n/* harmony export */ openInExcelWeb: () => (/* binding */ openInExcelWeb)\n/* harmony export */ });\n/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jszip */ \"./node_modules/jszip/dist/jszip.min.js\");\n/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jszip__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/utils/index.ts\");\n/* harmony import */ var _workbookTemplate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./workbookTemplate */ \"./src/workbookTemplate.ts\");\n/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/constants */ \"./src/utils/constants.ts\");\n/* harmony import */ var _generators__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./generators */ \"./src/generators.ts\");\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\n\r\n\r\n\r\n\r\n\r\nvar generateSingleQueryWorkbook = function (query, initialDataGrid, fileConfigs) { return __awaiter(void 0, void 0, void 0, function () {\r\n var templateFile, zip, _a, tableData;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!query.queryMashup) {\r\n throw new Error(_utils_constants__WEBPACK_IMPORTED_MODULE_3__.emptyQueryMashupErr);\r\n }\r\n if (!query.queryName) {\r\n query.queryName = _utils_constants__WEBPACK_IMPORTED_MODULE_3__.defaults.queryName;\r\n }\r\n templateFile = fileConfigs === null || fileConfigs === void 0 ? void 0 : fileConfigs.templateFile;\r\n if (templateFile !== undefined && initialDataGrid !== undefined) {\r\n throw new Error(_utils_constants__WEBPACK_IMPORTED_MODULE_3__.templateWithInitialDataErr);\r\n }\r\n _utils__WEBPACK_IMPORTED_MODULE_1__.pqUtils.validateQueryName(query.queryName);\r\n if (!(templateFile === undefined)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, jszip__WEBPACK_IMPORTED_MODULE_0___default().loadAsync(_workbookTemplate__WEBPACK_IMPORTED_MODULE_2__.SIMPLE_QUERY_WORKBOOK_TEMPLATE, { base64: true })];\r\n case 1:\r\n _a = _b.sent();\r\n return [3 /*break*/, 4];\r\n case 2: return [4 /*yield*/, jszip__WEBPACK_IMPORTED_MODULE_0___default().loadAsync(templateFile)];\r\n case 3:\r\n _a = _b.sent();\r\n _b.label = 4;\r\n case 4:\r\n zip = _a;\r\n tableData = initialDataGrid ? _utils__WEBPACK_IMPORTED_MODULE_1__.gridUtils.parseToTableData(initialDataGrid) : undefined;\r\n return [4 /*yield*/, generateSingleQueryWorkbookFromZip(zip, query, fileConfigs, tableData)];\r\n case 5: return [2 /*return*/, _b.sent()];\r\n }\r\n });\r\n}); };\r\nvar generateTableWorkbookFromHtml = function (htmlTable, fileConfigs) { return __awaiter(void 0, void 0, void 0, function () {\r\n var gridData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n gridData = _utils__WEBPACK_IMPORTED_MODULE_1__.htmlUtils.extractTableValues(htmlTable);\r\n return [4 /*yield*/, generateTableWorkbookFromGrid({ data: gridData, config: { promoteHeaders: true } }, fileConfigs)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n}); };\r\nvar generateTableWorkbookFromGrid = function (grid, fileConfigs) { return __awaiter(void 0, void 0, void 0, function () {\r\n var zip, _a, tableData;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!((fileConfigs === null || fileConfigs === void 0 ? void 0 : fileConfigs.templateFile) === undefined)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, jszip__WEBPACK_IMPORTED_MODULE_0___default().loadAsync(_workbookTemplate__WEBPACK_IMPORTED_MODULE_2__.SIMPLE_BLANK_TABLE_TEMPLATE, { base64: true })];\r\n case 1:\r\n _a = _b.sent();\r\n return [3 /*break*/, 4];\r\n case 2: return [4 /*yield*/, jszip__WEBPACK_IMPORTED_MODULE_0___default().loadAsync(fileConfigs.templateFile)];\r\n case 3:\r\n _a = _b.sent();\r\n _b.label = 4;\r\n case 4:\r\n zip = _a;\r\n tableData = _utils__WEBPACK_IMPORTED_MODULE_1__.gridUtils.parseToTableData(grid);\r\n if (tableData === undefined) {\r\n throw new Error(_utils_constants__WEBPACK_IMPORTED_MODULE_3__.tableNotFoundErr);\r\n }\r\n return [4 /*yield*/, _utils__WEBPACK_IMPORTED_MODULE_1__.xmlPartsUtils.updateWorkbookDataAndConfigurations(zip, fileConfigs, tableData)];\r\n case 5:\r\n _b.sent();\r\n return [4 /*yield*/, zip.generateAsync({\r\n type: _utils_constants__WEBPACK_IMPORTED_MODULE_3__.blobFileType,\r\n mimeType: _utils_constants__WEBPACK_IMPORTED_MODULE_3__.application,\r\n })];\r\n case 6: return [2 /*return*/, _b.sent()];\r\n }\r\n });\r\n}); };\r\nvar generateSingleQueryWorkbookFromZip = function (zip, query, fileConfigs, tableData) { return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!query.queryName) {\r\n query.queryName = _utils_constants__WEBPACK_IMPORTED_MODULE_3__.defaults.queryName;\r\n }\r\n return [4 /*yield*/, _utils__WEBPACK_IMPORTED_MODULE_1__.xmlPartsUtils.updateWorkbookPowerQueryDocument(zip, query.queryName, (0,_generators__WEBPACK_IMPORTED_MODULE_4__.generateSingleQueryMashup)(query.queryName, query.queryMashup))];\r\n case 1:\r\n _a.sent();\r\n return [4 /*yield*/, _utils__WEBPACK_IMPORTED_MODULE_1__.xmlPartsUtils.updateWorkbookSingleQueryAttributes(zip, query.queryName, query.refreshOnOpen)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, _utils__WEBPACK_IMPORTED_MODULE_1__.xmlPartsUtils.updateWorkbookDataAndConfigurations(zip, fileConfigs, tableData, true /*updateQueryTable*/)];\r\n case 3:\r\n _a.sent();\r\n return [4 /*yield*/, zip.generateAsync({\r\n type: _utils_constants__WEBPACK_IMPORTED_MODULE_3__.blobFileType,\r\n mimeType: _utils_constants__WEBPACK_IMPORTED_MODULE_3__.application,\r\n })];\r\n case 4: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n}); };\r\nvar downloadWorkbook = function (file, filename) {\r\n var nav = window.navigator;\r\n if (nav.msSaveOrOpenBlob)\r\n // IE10+\r\n nav.msSaveOrOpenBlob(file, filename);\r\n else {\r\n // Others\r\n var a_1 = document.createElement(\"a\");\r\n var url_1 = URL.createObjectURL(file);\r\n a_1.href = url_1;\r\n a_1.download = filename;\r\n document.body.appendChild(a_1);\r\n a_1.click();\r\n setTimeout(function () {\r\n document.body.removeChild(a_1);\r\n window.URL.revokeObjectURL(url_1);\r\n }, 0);\r\n }\r\n};\r\nvar openInExcelWeb = function (file, filename, allowTyping) { return __awaiter(void 0, void 0, void 0, function () {\r\n var fileContent, fileNameGuid, allowTypingParam, response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(file.size > 0)) return [3 /*break*/, 4];\r\n fileContent = file;\r\n fileNameGuid = new Date().getTime().toString() + (filename ? \"_\" + filename : \"\") + \".xlsx\";\r\n allowTypingParam = allowTyping ? 1 : 0;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, fetch(\"\".concat(_utils_constants__WEBPACK_IMPORTED_MODULE_3__.OFU.PostUrl).concat(fileNameGuid), {\r\n method: \"POST\",\r\n headers: _utils_constants__WEBPACK_IMPORTED_MODULE_3__.headers,\r\n body: fileContent,\r\n })];\r\n case 2:\r\n response = _a.sent();\r\n // Check if the response is successful\r\n if (response.ok) {\r\n // if upload was successful - open the file in a new tab\r\n window.open(\"\".concat(_utils_constants__WEBPACK_IMPORTED_MODULE_3__.OFU.ViewUrl).concat(fileNameGuid, \"&\").concat(_utils_constants__WEBPACK_IMPORTED_MODULE_3__.OFU.allowTyping, \"=\").concat(allowTypingParam), \"_blank\");\r\n }\r\n else {\r\n throw new Error(\"File upload failed. Status code: \".concat(response.status));\r\n }\r\n return [3 /*break*/, 4];\r\n case 3:\r\n error_1 = _a.sent();\r\n console.error(\"An error occurred:\", error_1);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n}); };\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/workbookManager.ts?");
216
216
 
217
217
  /***/ }),
218
218
 
@@ -220,197 +220,76 @@ eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT l
220
220
  /*!*********************************!*\
221
221
  !*** ./src/workbookTemplate.ts ***!
222
222
  \*********************************/
223
- /***/ ((__unused_webpack_module, exports) => {
223
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
224
224
 
225
225
  "use strict";
226
- eval("\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.SIMPLE_BLANK_TABLE_TEMPLATE = exports.SIMPLE_QUERY_WORKBOOK_TEMPLATE = void 0;\r\nexports.SIMPLE_QUERY_WORKBOOK_TEMPLATE = \"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\";\r\nexports.SIMPLE_BLANK_TABLE_TEMPLATE = \"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\";\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/workbookTemplate.ts?");
226
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SIMPLE_BLANK_TABLE_TEMPLATE: () => (/* binding */ SIMPLE_BLANK_TABLE_TEMPLATE),\n/* harmony export */ SIMPLE_QUERY_WORKBOOK_TEMPLATE: () => (/* binding */ SIMPLE_QUERY_WORKBOOK_TEMPLATE)\n/* harmony export */ });\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\nvar SIMPLE_QUERY_WORKBOOK_TEMPLATE = \"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\";\r\nvar SIMPLE_BLANK_TABLE_TEMPLATE = \"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\";\r\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./src/workbookTemplate.ts?");
227
227
 
228
228
  /***/ }),
229
229
 
230
- /***/ "./node_modules/uuid/dist/commonjs-browser/index.js":
231
- /*!**********************************************************!*\
232
- !*** ./node_modules/uuid/dist/commonjs-browser/index.js ***!
233
- \**********************************************************/
234
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
230
+ /***/ "./node_modules/uuid/dist/esm-browser/native.js":
231
+ /*!******************************************************!*\
232
+ !*** ./node_modules/uuid/dist/esm-browser/native.js ***!
233
+ \******************************************************/
234
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
235
235
 
236
236
  "use strict";
237
- eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"NIL\", ({\n enumerable: true,\n get: function get() {\n return _nil.default;\n }\n}));\nObject.defineProperty(exports, \"parse\", ({\n enumerable: true,\n get: function get() {\n return _parse.default;\n }\n}));\nObject.defineProperty(exports, \"stringify\", ({\n enumerable: true,\n get: function get() {\n return _stringify.default;\n }\n}));\nObject.defineProperty(exports, \"v1\", ({\n enumerable: true,\n get: function get() {\n return _v.default;\n }\n}));\nObject.defineProperty(exports, \"v3\", ({\n enumerable: true,\n get: function get() {\n return _v2.default;\n }\n}));\nObject.defineProperty(exports, \"v4\", ({\n enumerable: true,\n get: function get() {\n return _v3.default;\n }\n}));\nObject.defineProperty(exports, \"v5\", ({\n enumerable: true,\n get: function get() {\n return _v4.default;\n }\n}));\nObject.defineProperty(exports, \"validate\", ({\n enumerable: true,\n get: function get() {\n return _validate.default;\n }\n}));\nObject.defineProperty(exports, \"version\", ({\n enumerable: true,\n get: function get() {\n return _version.default;\n }\n}));\n\nvar _v = _interopRequireDefault(__webpack_require__(/*! ./v1.js */ \"./node_modules/uuid/dist/commonjs-browser/v1.js\"));\n\nvar _v2 = _interopRequireDefault(__webpack_require__(/*! ./v3.js */ \"./node_modules/uuid/dist/commonjs-browser/v3.js\"));\n\nvar _v3 = _interopRequireDefault(__webpack_require__(/*! ./v4.js */ \"./node_modules/uuid/dist/commonjs-browser/v4.js\"));\n\nvar _v4 = _interopRequireDefault(__webpack_require__(/*! ./v5.js */ \"./node_modules/uuid/dist/commonjs-browser/v5.js\"));\n\nvar _nil = _interopRequireDefault(__webpack_require__(/*! ./nil.js */ \"./node_modules/uuid/dist/commonjs-browser/nil.js\"));\n\nvar _version = _interopRequireDefault(__webpack_require__(/*! ./version.js */ \"./node_modules/uuid/dist/commonjs-browser/version.js\"));\n\nvar _validate = _interopRequireDefault(__webpack_require__(/*! ./validate.js */ \"./node_modules/uuid/dist/commonjs-browser/validate.js\"));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(/*! ./stringify.js */ \"./node_modules/uuid/dist/commonjs-browser/stringify.js\"));\n\nvar _parse = _interopRequireDefault(__webpack_require__(/*! ./parse.js */ \"./node_modules/uuid/dist/commonjs-browser/parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/commonjs-browser/index.js?");
237
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n randomUUID\n});\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/esm-browser/native.js?");
238
238
 
239
239
  /***/ }),
240
240
 
241
- /***/ "./node_modules/uuid/dist/commonjs-browser/md5.js":
242
- /*!********************************************************!*\
243
- !*** ./node_modules/uuid/dist/commonjs-browser/md5.js ***!
244
- \********************************************************/
245
- /***/ ((__unused_webpack_module, exports) => {
241
+ /***/ "./node_modules/uuid/dist/esm-browser/regex.js":
242
+ /*!*****************************************************!*\
243
+ !*** ./node_modules/uuid/dist/esm-browser/regex.js ***!
244
+ \*****************************************************/
245
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
246
246
 
247
247
  "use strict";
248
- eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (let i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n const output = [];\n const length32 = input.length * 32;\n const hexTab = '0123456789abcdef';\n\n for (let i = 0; i < length32; i += 8) {\n const x = input[i >> 5] >>> i % 32 & 0xff;\n const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n const length8 = input.length * 8;\n const output = new Uint32Array(getOutputLength(length8));\n\n for (let i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/commonjs-browser/md5.js?");
248
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i);\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/esm-browser/regex.js?");
249
249
 
250
250
  /***/ }),
251
251
 
252
- /***/ "./node_modules/uuid/dist/commonjs-browser/native.js":
253
- /*!***********************************************************!*\
254
- !*** ./node_modules/uuid/dist/commonjs-browser/native.js ***!
255
- \***********************************************************/
256
- /***/ ((__unused_webpack_module, exports) => {
257
-
258
- "use strict";
259
- eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nvar _default = {\n randomUUID\n};\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/commonjs-browser/native.js?");
260
-
261
- /***/ }),
262
-
263
- /***/ "./node_modules/uuid/dist/commonjs-browser/nil.js":
264
- /*!********************************************************!*\
265
- !*** ./node_modules/uuid/dist/commonjs-browser/nil.js ***!
266
- \********************************************************/
267
- /***/ ((__unused_webpack_module, exports) => {
268
-
269
- "use strict";
270
- eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/commonjs-browser/nil.js?");
271
-
272
- /***/ }),
273
-
274
- /***/ "./node_modules/uuid/dist/commonjs-browser/parse.js":
275
- /*!**********************************************************!*\
276
- !*** ./node_modules/uuid/dist/commonjs-browser/parse.js ***!
277
- \**********************************************************/
278
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
279
-
280
- "use strict";
281
- eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\n\nvar _validate = _interopRequireDefault(__webpack_require__(/*! ./validate.js */ \"./node_modules/uuid/dist/commonjs-browser/validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/commonjs-browser/parse.js?");
282
-
283
- /***/ }),
284
-
285
- /***/ "./node_modules/uuid/dist/commonjs-browser/regex.js":
286
- /*!**********************************************************!*\
287
- !*** ./node_modules/uuid/dist/commonjs-browser/regex.js ***!
288
- \**********************************************************/
289
- /***/ ((__unused_webpack_module, exports) => {
290
-
291
- "use strict";
292
- eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/commonjs-browser/regex.js?");
293
-
294
- /***/ }),
295
-
296
- /***/ "./node_modules/uuid/dist/commonjs-browser/rng.js":
297
- /*!********************************************************!*\
298
- !*** ./node_modules/uuid/dist/commonjs-browser/rng.js ***!
299
- \********************************************************/
300
- /***/ ((__unused_webpack_module, exports) => {
252
+ /***/ "./node_modules/uuid/dist/esm-browser/rng.js":
253
+ /*!***************************************************!*\
254
+ !*** ./node_modules/uuid/dist/esm-browser/rng.js ***!
255
+ \***************************************************/
256
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
301
257
 
302
258
  "use strict";
303
- eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\n\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/commonjs-browser/rng.js?");
259
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ rng)\n/* harmony export */ });\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/esm-browser/rng.js?");
304
260
 
305
261
  /***/ }),
306
262
 
307
- /***/ "./node_modules/uuid/dist/commonjs-browser/sha1.js":
263
+ /***/ "./node_modules/uuid/dist/esm-browser/stringify.js":
308
264
  /*!*********************************************************!*\
309
- !*** ./node_modules/uuid/dist/commonjs-browser/sha1.js ***!
265
+ !*** ./node_modules/uuid/dist/esm-browser/stringify.js ***!
310
266
  \*********************************************************/
311
- /***/ ((__unused_webpack_module, exports) => {
312
-
313
- "use strict";
314
- eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/commonjs-browser/sha1.js?");
315
-
316
- /***/ }),
317
-
318
- /***/ "./node_modules/uuid/dist/commonjs-browser/stringify.js":
319
- /*!**************************************************************!*\
320
- !*** ./node_modules/uuid/dist/commonjs-browser/stringify.js ***!
321
- \**************************************************************/
322
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
323
-
324
- "use strict";
325
- eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(__webpack_require__(/*! ./validate.js */ \"./node_modules/uuid/dist/commonjs-browser/validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/commonjs-browser/stringify.js?");
326
-
327
- /***/ }),
328
-
329
- /***/ "./node_modules/uuid/dist/commonjs-browser/v1.js":
330
- /*!*******************************************************!*\
331
- !*** ./node_modules/uuid/dist/commonjs-browser/v1.js ***!
332
- \*******************************************************/
333
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
267
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
334
268
 
335
269
  "use strict";
336
- eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\n\nvar _rng = _interopRequireDefault(__webpack_require__(/*! ./rng.js */ \"./node_modules/uuid/dist/commonjs-browser/rng.js\"));\n\nvar _stringify = __webpack_require__(/*! ./stringify.js */ \"./node_modules/uuid/dist/commonjs-browser/stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/commonjs-browser/v1.js?");
270
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ unsafeStringify: () => (/* binding */ unsafeStringify)\n/* harmony export */ });\n/* harmony import */ var _validate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validate.js */ \"./node_modules/uuid/dist/esm-browser/validate.js\");\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0,_validate_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (stringify);\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/esm-browser/stringify.js?");
337
271
 
338
272
  /***/ }),
339
273
 
340
- /***/ "./node_modules/uuid/dist/commonjs-browser/v3.js":
341
- /*!*******************************************************!*\
342
- !*** ./node_modules/uuid/dist/commonjs-browser/v3.js ***!
343
- \*******************************************************/
344
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
274
+ /***/ "./node_modules/uuid/dist/esm-browser/v4.js":
275
+ /*!**************************************************!*\
276
+ !*** ./node_modules/uuid/dist/esm-browser/v4.js ***!
277
+ \**************************************************/
278
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
345
279
 
346
280
  "use strict";
347
- eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\n\nvar _v = _interopRequireDefault(__webpack_require__(/*! ./v35.js */ \"./node_modules/uuid/dist/commonjs-browser/v35.js\"));\n\nvar _md = _interopRequireDefault(__webpack_require__(/*! ./md5.js */ \"./node_modules/uuid/dist/commonjs-browser/md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/commonjs-browser/v3.js?");
281
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _native_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./native.js */ \"./node_modules/uuid/dist/esm-browser/native.js\");\n/* harmony import */ var _rng_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rng.js */ \"./node_modules/uuid/dist/esm-browser/rng.js\");\n/* harmony import */ var _stringify_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stringify.js */ \"./node_modules/uuid/dist/esm-browser/stringify.js\");\n\n\n\n\nfunction v4(options, buf, offset) {\n if (_native_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].randomUUID && !buf && !options) {\n return _native_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || _rng_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0,_stringify_js__WEBPACK_IMPORTED_MODULE_2__.unsafeStringify)(rnds);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (v4);\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/esm-browser/v4.js?");
348
282
 
349
283
  /***/ }),
350
284
 
351
- /***/ "./node_modules/uuid/dist/commonjs-browser/v35.js":
285
+ /***/ "./node_modules/uuid/dist/esm-browser/validate.js":
352
286
  /*!********************************************************!*\
353
- !*** ./node_modules/uuid/dist/commonjs-browser/v35.js ***!
287
+ !*** ./node_modules/uuid/dist/esm-browser/validate.js ***!
354
288
  \********************************************************/
355
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
356
-
357
- "use strict";
358
- eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.URL = exports.DNS = void 0;\nexports[\"default\"] = v35;\n\nvar _stringify = __webpack_require__(/*! ./stringify.js */ \"./node_modules/uuid/dist/commonjs-browser/stringify.js\");\n\nvar _parse = _interopRequireDefault(__webpack_require__(/*! ./parse.js */ \"./node_modules/uuid/dist/commonjs-browser/parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/commonjs-browser/v35.js?");
359
-
360
- /***/ }),
361
-
362
- /***/ "./node_modules/uuid/dist/commonjs-browser/v4.js":
363
- /*!*******************************************************!*\
364
- !*** ./node_modules/uuid/dist/commonjs-browser/v4.js ***!
365
- \*******************************************************/
366
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
289
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
367
290
 
368
291
  "use strict";
369
- eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\n\nvar _native = _interopRequireDefault(__webpack_require__(/*! ./native.js */ \"./node_modules/uuid/dist/commonjs-browser/native.js\"));\n\nvar _rng = _interopRequireDefault(__webpack_require__(/*! ./rng.js */ \"./node_modules/uuid/dist/commonjs-browser/rng.js\"));\n\nvar _stringify = __webpack_require__(/*! ./stringify.js */ \"./node_modules/uuid/dist/commonjs-browser/stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/commonjs-browser/v4.js?");
370
-
371
- /***/ }),
372
-
373
- /***/ "./node_modules/uuid/dist/commonjs-browser/v5.js":
374
- /*!*******************************************************!*\
375
- !*** ./node_modules/uuid/dist/commonjs-browser/v5.js ***!
376
- \*******************************************************/
377
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
378
-
379
- "use strict";
380
- eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\n\nvar _v = _interopRequireDefault(__webpack_require__(/*! ./v35.js */ \"./node_modules/uuid/dist/commonjs-browser/v35.js\"));\n\nvar _sha = _interopRequireDefault(__webpack_require__(/*! ./sha1.js */ \"./node_modules/uuid/dist/commonjs-browser/sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/commonjs-browser/v5.js?");
381
-
382
- /***/ }),
383
-
384
- /***/ "./node_modules/uuid/dist/commonjs-browser/validate.js":
385
- /*!*************************************************************!*\
386
- !*** ./node_modules/uuid/dist/commonjs-browser/validate.js ***!
387
- \*************************************************************/
388
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
389
-
390
- "use strict";
391
- eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\n\nvar _regex = _interopRequireDefault(__webpack_require__(/*! ./regex.js */ \"./node_modules/uuid/dist/commonjs-browser/regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/commonjs-browser/validate.js?");
392
-
393
- /***/ }),
394
-
395
- /***/ "./node_modules/uuid/dist/commonjs-browser/version.js":
396
- /*!************************************************************!*\
397
- !*** ./node_modules/uuid/dist/commonjs-browser/version.js ***!
398
- \************************************************************/
399
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
400
-
401
- "use strict";
402
- eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\n\nvar _validate = _interopRequireDefault(__webpack_require__(/*! ./validate.js */ \"./node_modules/uuid/dist/commonjs-browser/validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/commonjs-browser/version.js?");
403
-
404
- /***/ }),
405
-
406
- /***/ "./node_modules/axios/dist/browser/axios.cjs":
407
- /*!***************************************************!*\
408
- !*** ./node_modules/axios/dist/browser/axios.cjs ***!
409
- \***************************************************/
410
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
411
-
412
- "use strict";
413
- eval("// Axios v1.6.8 Copyright (c) 2024 Matt Zabriskie and contributors\n\n\nfunction bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n};\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : __webpack_require__.g)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n};\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n};\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz';\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n};\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0];\n }\n\n return str;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nvar utils$1 = {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils$1.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils$1.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype$1 = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype$1, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype$1);\n\n utils$1.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\n// eslint-disable-next-line strict\nvar httpAdapter = null;\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils$1.isPlainObject(thing) || utils$1.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils$1.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils$1.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils$1.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils$1.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils$1.isSpecCompliantForm(formData);\n\n if (!utils$1.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils$1.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils$1.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils$1.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils$1.isArray(value) && isFlatArray(value)) ||\n ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils$1.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils$1.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils$1.forEach(value, function each(el, key) {\n const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils$1.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode$1(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode$1);\n } : encode$1;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nfunction buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils$1.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils$1.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nvar InterceptorManager$1 = InterceptorManager;\n\nvar transitionalDefaults = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n\nvar URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n\nvar FormData$1 = typeof FormData !== 'undefined' ? FormData : null;\n\nvar Blob$1 = typeof Blob !== 'undefined' ? Blob : null;\n\nvar platform$1 = {\n isBrowser: true,\n classes: {\n URLSearchParams: URLSearchParams$1,\n FormData: FormData$1,\n Blob: Blob$1\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n\nconst hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nvar utils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n hasBrowserEnv: hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv: hasStandardBrowserEnv\n});\n\nvar platform = {\n ...utils,\n ...platform$1\n};\n\nfunction toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils$1.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils$1.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils$1.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils$1.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils$1.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils$1.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) {\n const obj = {};\n\n utils$1.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils$1.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils$1.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils$1.isObject(data);\n\n if (isObjectPayload && utils$1.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils$1.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils$1.isArrayBuffer(data) ||\n utils$1.isBuffer(data) ||\n utils$1.isStream(data) ||\n utils$1.isFile(data) ||\n utils$1.isBlob(data)\n ) {\n return data;\n }\n if (utils$1.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils$1.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nvar defaults$1 = defaults;\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils$1.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nvar parseHeaders = rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils$1.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils$1.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils$1.isString(value)) return;\n\n if (utils$1.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils$1.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils$1.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils$1.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils$1.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils$1.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils$1.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils$1.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils$1.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils$1.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils$1.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils$1.forEach(this, (value, header) => {\n const key = utils$1.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils$1.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils$1.freezeMethods(AxiosHeaders);\n\nvar AxiosHeaders$1 = AxiosHeaders;\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nfunction transformData(fns, response) {\n const config = this || defaults$1;\n const context = response || config;\n const headers = AxiosHeaders$1.from(context.headers);\n let data = context.data;\n\n utils$1.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n\nfunction isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils$1.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nfunction settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n\nvar cookies = platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils$1.isString(path) && cookie.push('path=' + path);\n\n utils$1.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nfunction isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nfunction combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nfunction buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n\nvar isURLSameOrigin = platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils$1.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n\nfunction parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nvar xhrAdapter = isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders$1.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils$1.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders$1.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils$1.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n};\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n};\n\nutils$1.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false;\n\nvar adapters = {\n getAdapter: (adapters) => {\n adapters = utils$1.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n};\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nfunction dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders$1.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders$1.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders$1.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nfunction mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {\n return utils$1.merge.call({caseless}, target, source);\n } else if (utils$1.isPlainObject(source)) {\n return utils$1.merge({}, source);\n } else if (utils$1.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils$1.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils$1.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n\nconst VERSION = \"1.6.8\";\n\nconst validators$1 = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators$1[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators$1.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nvar validator = {\n assertOptions,\n validators: validators$1\n};\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager$1(),\n response: new InterceptorManager$1()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack;\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils$1.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n };\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils$1.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils$1.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders$1.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nvar Axios$1 = Axios;\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nvar CancelToken$1 = CancelToken;\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nfunction spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nfunction isAxiosError(payload) {\n return utils$1.isObject(payload) && (payload.isAxiosError === true);\n}\n\nconst HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nvar HttpStatusCode$1 = HttpStatusCode;\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios$1(defaultConfig);\n const instance = bind(Axios$1.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils$1.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults$1);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios$1;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken$1;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders$1;\n\naxios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode$1;\n\naxios.default = axios;\n\nmodule.exports = axios;\n//# sourceMappingURL=axios.cjs.map\n\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/axios/dist/browser/axios.cjs?");
292
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _regex_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./regex.js */ \"./node_modules/uuid/dist/esm-browser/regex.js\");\n\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].test(uuid);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (validate);\n\n//# sourceURL=webpack://@microsoft/connected-workbooks/./node_modules/uuid/dist/esm-browser/validate.js?");
414
293
 
415
294
  /***/ })
416
295
 
@@ -434,13 +313,37 @@ eval("// Axios v1.6.8 Copyright (c) 2024 Matt Zabriskie and contributors\n\n\nfu
434
313
  /******/ };
435
314
  /******/
436
315
  /******/ // Execute the module function
437
- /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
316
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
438
317
  /******/
439
318
  /******/ // Return the exports of the module
440
319
  /******/ return module.exports;
441
320
  /******/ }
442
321
  /******/
443
322
  /************************************************************************/
323
+ /******/ /* webpack/runtime/compat get default export */
324
+ /******/ (() => {
325
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
326
+ /******/ __webpack_require__.n = (module) => {
327
+ /******/ var getter = module && module.__esModule ?
328
+ /******/ () => (module['default']) :
329
+ /******/ () => (module);
330
+ /******/ __webpack_require__.d(getter, { a: getter });
331
+ /******/ return getter;
332
+ /******/ };
333
+ /******/ })();
334
+ /******/
335
+ /******/ /* webpack/runtime/define property getters */
336
+ /******/ (() => {
337
+ /******/ // define getter functions for harmony exports
338
+ /******/ __webpack_require__.d = (exports, definition) => {
339
+ /******/ for(var key in definition) {
340
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
341
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
342
+ /******/ }
343
+ /******/ }
344
+ /******/ };
345
+ /******/ })();
346
+ /******/
444
347
  /******/ /* webpack/runtime/global */
445
348
  /******/ (() => {
446
349
  /******/ __webpack_require__.g = (function() {
@@ -453,11 +356,27 @@ eval("// Axios v1.6.8 Copyright (c) 2024 Matt Zabriskie and contributors\n\n\nfu
453
356
  /******/ })();
454
357
  /******/ })();
455
358
  /******/
359
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
360
+ /******/ (() => {
361
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
362
+ /******/ })();
363
+ /******/
364
+ /******/ /* webpack/runtime/make namespace object */
365
+ /******/ (() => {
366
+ /******/ // define __esModule on exports
367
+ /******/ __webpack_require__.r = (exports) => {
368
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
369
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
370
+ /******/ }
371
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
372
+ /******/ };
373
+ /******/ })();
374
+ /******/
456
375
  /************************************************************************/
457
376
  /******/
458
377
  /******/ // startup
459
378
  /******/ // Load entry module and return exports
460
- /******/ // This entry module is referenced by other modules so it can't be inlined
379
+ /******/ // This entry module can't be inlined because the eval devtool is used.
461
380
  /******/ var __webpack_exports__ = __webpack_require__("./src/index.ts");
462
381
  /******/
463
382
  /******/ })()