@microsoft/connected-workbooks 3.3.1-beta → 3.4.0-beta

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.
Files changed (40) hide show
  1. package/README.md +3 -3
  2. package/dist/types.d.ts +2 -1
  3. package/dist/utils/constants.js +94 -47
  4. package/dist/utils/documentUtils.js +2 -2
  5. package/dist/utils/gridUtils.js +4 -4
  6. package/dist/utils/mashupDocumentParser.js +1 -1
  7. package/dist/utils/pqUtils.js +3 -3
  8. package/dist/utils/tableUtils.js +11 -4
  9. package/dist/utils/xmlInnerPartsUtils.js +294 -31
  10. package/dist/utils/xmlPartsUtils.js +93 -19
  11. package/dist/workbookManager.js +3 -3
  12. package/dist/workbookTemplate.js +2 -1
  13. package/package.json +5 -3
  14. package/dist/src/generators.js +0 -15
  15. package/dist/src/types.js +0 -28
  16. package/dist/src/utils/arrayUtils.js +0 -51
  17. package/dist/src/utils/constants.js +0 -166
  18. package/dist/src/utils/documentUtils.js +0 -167
  19. package/dist/src/utils/gridUtils.js +0 -103
  20. package/dist/src/utils/htmlUtils.js +0 -19
  21. package/dist/src/utils/index.js +0 -24
  22. package/dist/src/utils/mashupDocumentParser.js +0 -188
  23. package/dist/src/utils/pqUtils.js +0 -194
  24. package/dist/src/utils/tableUtils.js +0 -233
  25. package/dist/src/utils/xmlInnerPartsUtils.js +0 -400
  26. package/dist/src/utils/xmlPartsUtils.js +0 -174
  27. package/dist/src/workbookTemplate.js +0 -8
  28. package/dist/tests/arrayUtils.test.js +0 -66
  29. package/dist/tests/documentUtils.test.js +0 -70
  30. package/dist/tests/gridUtils.test.js +0 -214
  31. package/dist/tests/htmlUtils.test.js +0 -111
  32. package/dist/tests/mashupDocumentParser.test.js +0 -113
  33. package/dist/tests/mocks/PqMock.js +0 -7
  34. package/dist/tests/mocks/index.js +0 -24
  35. package/dist/tests/mocks/section1mSimpleQueryMock.js +0 -8
  36. package/dist/tests/mocks/xmlMocks.js +0 -14
  37. package/dist/tests/tableUtils.test.js +0 -70
  38. package/dist/tests/workbookQueryTemplate.test.js +0 -218
  39. package/dist/tests/workbookTableTemplate.test.js +0 -126
  40. package/dist/tests/xmlInnerPartsUtils.test.js +0 -133
@@ -1,167 +0,0 @@
1
- "use strict";
2
- // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT license.
4
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
5
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6
- return new (P || (P = Promise))(function (resolve, reject) {
7
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
8
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
9
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
10
- step((generator = generator.apply(thisArg, _arguments || [])).next());
11
- });
12
- };
13
- var __generator = (this && this.__generator) || function (thisArg, body) {
14
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
15
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
16
- function verb(n) { return function (v) { return step([n, v]); }; }
17
- function step(op) {
18
- if (f) throw new TypeError("Generator is already executing.");
19
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
20
- 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;
21
- if (y = 0, t) op = [op[0] & 2, t.value];
22
- switch (op[0]) {
23
- case 0: case 1: t = op; break;
24
- case 4: _.label++; return { value: op[1], done: false };
25
- case 5: _.label++; y = op[1]; op = [0]; continue;
26
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
27
- default:
28
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
29
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
30
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
31
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
32
- if (t[2]) _.ops.pop();
33
- _.trys.pop(); continue;
34
- }
35
- op = body.call(thisArg, _);
36
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
37
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
38
- }
39
- };
40
- Object.defineProperty(exports, "__esModule", { value: true });
41
- var constants_1 = require("./constants");
42
- var types_1 = require("../types");
43
- var xmldom_qsa_1 = require("xmldom-qsa");
44
- var createOrUpdateProperty = function (doc, parent, property, value) {
45
- if (value === undefined) {
46
- return;
47
- }
48
- var elements = parent.getElementsByTagName(property);
49
- if ((elements === null || elements === void 0 ? void 0 : elements.length) === 0) {
50
- var newElement = doc.createElement(property);
51
- newElement.textContent = value;
52
- parent.appendChild(newElement);
53
- }
54
- else if (elements.length > 1) {
55
- throw new Error("Invalid DocProps core.xml, multiple ".concat(property, " elements"));
56
- }
57
- else if ((elements === null || elements === void 0 ? void 0 : elements.length) > 0) {
58
- elements[0].textContent = value;
59
- }
60
- };
61
- var getDocPropsProperties = function (zip) { return __awaiter(void 0, void 0, void 0, function () {
62
- var docPropsCoreXmlString, parser, doc, properties;
63
- var _a;
64
- return __generator(this, function (_b) {
65
- switch (_b.label) {
66
- case 0: return [4 /*yield*/, ((_a = zip.file(constants_1.docPropsCoreXmlPath)) === null || _a === void 0 ? void 0 : _a.async(constants_1.textResultType))];
67
- case 1:
68
- docPropsCoreXmlString = _b.sent();
69
- if (docPropsCoreXmlString === undefined) {
70
- throw new Error("DocProps core.xml was not found in template");
71
- }
72
- parser = new xmldom_qsa_1.DOMParser();
73
- doc = parser.parseFromString(docPropsCoreXmlString, constants_1.xmlTextResultType);
74
- properties = doc.getElementsByTagName(constants_1.docPropsRootElement).item(0);
75
- if (properties === null) {
76
- throw new Error("Invalid DocProps core.xml");
77
- }
78
- return [2 /*return*/, { doc: doc, properties: properties }];
79
- }
80
- });
81
- }); };
82
- var getCellReferenceAbsolute = function (col, row) {
83
- return "$" + convertToExcelColumn(col) + "$" + row.toString();
84
- };
85
- var getCellReferenceRelative = function (col, row) {
86
- return convertToExcelColumn(col) + row.toString();
87
- };
88
- var convertToExcelColumn = function (index) {
89
- if (index >= 16384) {
90
- throw new Error(constants_1.columnIndexOutOfRangeErr);
91
- }
92
- var columnStr = "";
93
- var base = 26; // number of letters in the alphabet
94
- while (index >= 0) {
95
- var remainder = index % base;
96
- columnStr = String.fromCharCode(remainder + 'A'.charCodeAt(0)) + columnStr;
97
- index = Math.floor(index / base) - 1;
98
- }
99
- return columnStr;
100
- };
101
- /**
102
- * Parse an Excel range (e.g. "B2:D10") and return its starting row and column indices.
103
- * @param cellRangeRef - Range reference string.
104
- * @returns Object with numeric row and column.
105
- */
106
- var GetStartPosition = function (cellRangeRef) {
107
- var match = cellRangeRef.toUpperCase().match(/^([A-Z]+)(\d+):/);
108
- if (!match) {
109
- return { row: 0, column: 0 };
110
- }
111
- var colLetters = match[1], rowStr = match[2];
112
- var row = parseInt(rowStr, 10);
113
- var column = colLetters
114
- .split("")
115
- .reduce(function (acc, char) { return acc * 26 + (char.charCodeAt(0) - "A".charCodeAt(0) + 1); }, 0);
116
- return { row: row, column: column };
117
- };
118
- var createCellElement = function (doc, colIndex, rowIndex, data) {
119
- var cell = doc.createElementNS(doc.documentElement.namespaceURI, constants_1.element.kindCell);
120
- cell.setAttribute(constants_1.elementAttributes.row, getCellReferenceRelative(colIndex, rowIndex + 1));
121
- var cellData = doc.createElementNS(doc.documentElement.namespaceURI, constants_1.element.cellValue);
122
- updateCellData(data, cell, cellData, rowIndex === 0);
123
- cell.appendChild(cellData);
124
- return cell;
125
- };
126
- var updateCellData = function (data, cell, cellData, rowHeader) {
127
- switch (resolveType(data, rowHeader)) {
128
- case types_1.DataTypes.string:
129
- cell.setAttribute(constants_1.element.text, constants_1.dataTypeKind.string);
130
- break;
131
- case types_1.DataTypes.number:
132
- cell.setAttribute(constants_1.element.text, constants_1.dataTypeKind.number);
133
- break;
134
- case types_1.DataTypes.boolean:
135
- cell.setAttribute(constants_1.element.text, constants_1.dataTypeKind.boolean);
136
- break;
137
- }
138
- if (data.startsWith(" ") || data.endsWith(" ")) {
139
- cellData.setAttribute(constants_1.elementAttributes.space, "preserve");
140
- }
141
- cellData.textContent = data;
142
- };
143
- var resolveType = function (originalData, rowHeader) {
144
- var data = originalData;
145
- if (rowHeader || data.trim() === "") {
146
- // Headers and whitespace should be string by default.
147
- return types_1.DataTypes.string;
148
- }
149
- var dataType = isNaN(Number(data)) ? types_1.DataTypes.string : types_1.DataTypes.number;
150
- if (dataType == types_1.DataTypes.string) {
151
- if (data.trim() == constants_1.trueStr || data.trim() == constants_1.falseStr) {
152
- dataType = types_1.DataTypes.boolean;
153
- }
154
- }
155
- return dataType;
156
- };
157
- exports.default = {
158
- createOrUpdateProperty: createOrUpdateProperty,
159
- getDocPropsProperties: getDocPropsProperties,
160
- getCellReferenceRelative: getCellReferenceRelative,
161
- getCellReferenceAbsolute: getCellReferenceAbsolute,
162
- createCell: createCellElement,
163
- updateCellData: updateCellData,
164
- resolveType: resolveType,
165
- convertToExcelColumn: convertToExcelColumn,
166
- GetStartPosition: GetStartPosition,
167
- };
@@ -1,103 +0,0 @@
1
- "use strict";
2
- // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT license.
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- var constants_1 = require("../utils/constants");
6
- var parseToTableData = function (grid) {
7
- var _a, _b, _c, _d;
8
- if (grid === null || grid === undefined) {
9
- grid = { data: [] };
10
- }
11
- if (grid.data === null || grid.data === undefined) {
12
- grid.data = [];
13
- }
14
- var mergedGrid = {
15
- config: {
16
- promoteHeaders: (_b = (_a = grid.config) === null || _a === void 0 ? void 0 : _a.promoteHeaders) !== null && _b !== void 0 ? _b : false,
17
- adjustColumnNames: (_d = (_c = grid.config) === null || _c === void 0 ? void 0 : _c.adjustColumnNames) !== null && _d !== void 0 ? _d : true,
18
- },
19
- 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 : ""; }); }),
20
- };
21
- correctGrid(mergedGrid);
22
- validateGrid(mergedGrid);
23
- var columnNames = [];
24
- if (mergedGrid.config.promoteHeaders && mergedGrid.config.adjustColumnNames) {
25
- columnNames = getAdjustedColumnNames(mergedGrid.data.shift());
26
- }
27
- else if (mergedGrid.config.promoteHeaders && !mergedGrid.config.adjustColumnNames) {
28
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
29
- columnNames = mergedGrid.data.shift();
30
- }
31
- else {
32
- columnNames = Array.from({ length: mergedGrid.data[0].length }, function (_, index) { return "".concat(constants_1.defaults.columnName, " ").concat(index + 1); });
33
- }
34
- return { columnNames: columnNames, rows: mergedGrid.data };
35
- };
36
- var correctGrid = function (grid) {
37
- if (grid.data.length === 0) {
38
- // empty grid fix
39
- grid.config.promoteHeaders = false;
40
- grid.data.push([""]);
41
- return;
42
- }
43
- var getEmptyArray = function (n) { return Array.from({ length: n }, function () { return ""; }); };
44
- if (grid.data[0].length === 0) {
45
- grid.data[0] = [""];
46
- }
47
- // replace empty rows
48
- grid.data.forEach(function (row, index) {
49
- if (row.length === 0) {
50
- grid.data[index] = getEmptyArray(grid.data[0].length);
51
- }
52
- });
53
- if (grid.config.promoteHeaders && grid.data.length === 1) {
54
- // table in Excel should have at least 2 rows
55
- grid.data.push(getEmptyArray(grid.data[0].length));
56
- }
57
- };
58
- /*
59
- * Validates the grid, throws an error if the grid is invalid.
60
- * A valid grid has:
61
- * - MxN structure.
62
- * - If promoteHeaders is true - has at least 1 row, and in case adjustColumnNames is false, first row is unique and non empty.
63
- */
64
- var validateGrid = function (grid) {
65
- validateDataArrayDimensions(grid.data);
66
- if (grid.config.promoteHeaders && grid.config.adjustColumnNames === false && !validateUniqueAndValidDataArray(grid.data[0])) {
67
- throw new Error(constants_1.promotedHeadersCannotBeUsedWithoutAdjustingColumnNamesErr);
68
- }
69
- };
70
- var validateDataArrayDimensions = function (arr) {
71
- if (arr.length === 0 || arr[0].length === 0) {
72
- throw new Error(constants_1.unexpectedErr);
73
- }
74
- if (!arr.every(function (innerArr) { return innerArr.length === arr[0].length; })) {
75
- throw new Error(constants_1.arrayIsntMxNErr);
76
- }
77
- };
78
- var validateUniqueAndValidDataArray = function (arr) {
79
- if (arr.some(function (element) { return element === ""; })) {
80
- return false; // Array contains empty elements
81
- }
82
- var uniqueSet = new Set(arr);
83
- return uniqueSet.size === arr.length;
84
- };
85
- var getAdjustedColumnNames = function (columnNames) {
86
- if (columnNames === undefined) {
87
- throw new Error(constants_1.unexpectedErr);
88
- }
89
- var i = 1;
90
- // replace empty column names with default names, can still conflict if columns exist, but we handle that later
91
- columnNames = columnNames.map(function (columnName) { return columnName || "".concat(constants_1.defaults.columnName, " ").concat(i++); });
92
- var uniqueNames = new Set();
93
- return columnNames.map(function (name) {
94
- var uniqueName = name;
95
- i = 1;
96
- while (uniqueNames.has(uniqueName)) {
97
- uniqueName = "".concat(name, " (").concat(i++, ")");
98
- }
99
- uniqueNames.add(uniqueName);
100
- return uniqueName;
101
- });
102
- };
103
- exports.default = { parseToTableData: parseToTableData };
@@ -1,19 +0,0 @@
1
- "use strict";
2
- // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT license.
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- var extractTableValues = function (table) {
6
- var rows = [];
7
- // Extract values from each row
8
- for (var i = 0; i < table.rows.length; i++) {
9
- var row = table.rows[i];
10
- var rowData = [];
11
- for (var j = 0; j < row.cells.length; j++) {
12
- var cell = row.cells[j];
13
- rowData.push(cell.textContent || "");
14
- }
15
- rows.push(rowData);
16
- }
17
- return rows;
18
- };
19
- exports.default = { extractTableValues: extractTableValues };
@@ -1,24 +0,0 @@
1
- "use strict";
2
- // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT license.
4
- var __importDefault = (this && this.__importDefault) || function (mod) {
5
- return (mod && mod.__esModule) ? mod : { "default": mod };
6
- };
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.gridUtils = exports.htmlUtils = exports.tableUtils = exports.xmlInnerPartsUtils = exports.xmlPartsUtils = exports.documentUtils = exports.arrayUtils = exports.pqUtils = void 0;
9
- var pqUtils_1 = require("./pqUtils");
10
- Object.defineProperty(exports, "pqUtils", { enumerable: true, get: function () { return __importDefault(pqUtils_1).default; } });
11
- var arrayUtils_1 = require("./arrayUtils");
12
- Object.defineProperty(exports, "arrayUtils", { enumerable: true, get: function () { return __importDefault(arrayUtils_1).default; } });
13
- var documentUtils_1 = require("./documentUtils");
14
- Object.defineProperty(exports, "documentUtils", { enumerable: true, get: function () { return __importDefault(documentUtils_1).default; } });
15
- var xmlPartsUtils_1 = require("./xmlPartsUtils");
16
- Object.defineProperty(exports, "xmlPartsUtils", { enumerable: true, get: function () { return __importDefault(xmlPartsUtils_1).default; } });
17
- var xmlInnerPartsUtils_1 = require("./xmlInnerPartsUtils");
18
- Object.defineProperty(exports, "xmlInnerPartsUtils", { enumerable: true, get: function () { return __importDefault(xmlInnerPartsUtils_1).default; } });
19
- var tableUtils_1 = require("./tableUtils");
20
- Object.defineProperty(exports, "tableUtils", { enumerable: true, get: function () { return __importDefault(tableUtils_1).default; } });
21
- var htmlUtils_1 = require("./htmlUtils");
22
- Object.defineProperty(exports, "htmlUtils", { enumerable: true, get: function () { return __importDefault(htmlUtils_1).default; } });
23
- var gridUtils_1 = require("./gridUtils");
24
- Object.defineProperty(exports, "gridUtils", { enumerable: true, get: function () { return __importDefault(gridUtils_1).default; } });
@@ -1,188 +0,0 @@
1
- "use strict";
2
- // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT license.
4
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
- if (k2 === undefined) k2 = k;
6
- var desc = Object.getOwnPropertyDescriptor(m, k);
7
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
- desc = { enumerable: true, get: function() { return m[k]; } };
9
- }
10
- Object.defineProperty(o, k2, desc);
11
- }) : (function(o, m, k, k2) {
12
- if (k2 === undefined) k2 = k;
13
- o[k2] = m[k];
14
- }));
15
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
- Object.defineProperty(o, "default", { enumerable: true, value: v });
17
- }) : function(o, v) {
18
- o["default"] = v;
19
- });
20
- var __importStar = (this && this.__importStar) || function (mod) {
21
- if (mod && mod.__esModule) return mod;
22
- var result = {};
23
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
24
- __setModuleDefault(result, mod);
25
- return result;
26
- };
27
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
28
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
29
- return new (P || (P = Promise))(function (resolve, reject) {
30
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
31
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
32
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
33
- step((generator = generator.apply(thisArg, _arguments || [])).next());
34
- });
35
- };
36
- var __generator = (this && this.__generator) || function (thisArg, body) {
37
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
38
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
39
- function verb(n) { return function (v) { return step([n, v]); }; }
40
- function step(op) {
41
- if (f) throw new TypeError("Generator is already executing.");
42
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
43
- 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;
44
- if (y = 0, t) op = [op[0] & 2, t.value];
45
- switch (op[0]) {
46
- case 0: case 1: t = op; break;
47
- case 4: _.label++; return { value: op[1], done: false };
48
- case 5: _.label++; y = op[1]; op = [0]; continue;
49
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
50
- default:
51
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
52
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
53
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
54
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
55
- if (t[2]) _.ops.pop();
56
- _.trys.pop(); continue;
57
- }
58
- op = body.call(thisArg, _);
59
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
60
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
61
- }
62
- };
63
- var __importDefault = (this && this.__importDefault) || function (mod) {
64
- return (mod && mod.__esModule) ? mod : { "default": mod };
65
- };
66
- Object.defineProperty(exports, "__esModule", { value: true });
67
- exports.editSingleQueryMetadata = exports.getPackageComponents = exports.replaceSingleQuery = void 0;
68
- var base64 = __importStar(require("base64-js"));
69
- var jszip_1 = __importDefault(require("jszip"));
70
- var constants_1 = require("./constants");
71
- var _1 = require(".");
72
- var xmldom_qsa_1 = require("xmldom-qsa");
73
- var replaceSingleQuery = function (base64Str, queryName, queryMashupDoc) { return __awaiter(void 0, void 0, void 0, function () {
74
- var _a, version, packageOPC, permissionsSize, permissions, metadata, endBuffer, newPackageBuffer, packageSizeBuffer, permissionsSizeBuffer, newMetadataBuffer, metadataSizeBuffer, newMashup;
75
- return __generator(this, function (_b) {
76
- switch (_b.label) {
77
- case 0:
78
- _a = (0, exports.getPackageComponents)(base64Str), version = _a.version, packageOPC = _a.packageOPC, permissionsSize = _a.permissionsSize, permissions = _a.permissions, metadata = _a.metadata, endBuffer = _a.endBuffer;
79
- return [4 /*yield*/, editSingleQueryPackage(packageOPC, queryMashupDoc)];
80
- case 1:
81
- newPackageBuffer = _b.sent();
82
- packageSizeBuffer = _1.arrayUtils.getInt32Buffer(newPackageBuffer.byteLength);
83
- permissionsSizeBuffer = _1.arrayUtils.getInt32Buffer(permissionsSize);
84
- newMetadataBuffer = (0, exports.editSingleQueryMetadata)(metadata, { queryName: queryName });
85
- metadataSizeBuffer = _1.arrayUtils.getInt32Buffer(newMetadataBuffer.byteLength);
86
- newMashup = _1.arrayUtils.concatArrays(version, packageSizeBuffer, newPackageBuffer, permissionsSizeBuffer, permissions, metadataSizeBuffer, newMetadataBuffer, endBuffer);
87
- return [2 /*return*/, base64.fromByteArray(newMashup)];
88
- }
89
- });
90
- }); };
91
- exports.replaceSingleQuery = replaceSingleQuery;
92
- var getPackageComponents = function (base64Str) {
93
- var buffer = base64.toByteArray(base64Str).buffer;
94
- var mashupArray = new _1.arrayUtils.ArrayReader(buffer);
95
- var version = mashupArray.getBytes(4);
96
- var packageSize = mashupArray.getInt32();
97
- var packageOPC = mashupArray.getBytes(packageSize);
98
- var permissionsSize = mashupArray.getInt32();
99
- var permissions = mashupArray.getBytes(permissionsSize);
100
- var metadataSize = mashupArray.getInt32();
101
- var metadata = mashupArray.getBytes(metadataSize);
102
- var endBuffer = mashupArray.getBytes();
103
- return {
104
- version: version,
105
- packageOPC: packageOPC,
106
- permissionsSize: permissionsSize,
107
- permissions: permissions,
108
- metadata: metadata,
109
- endBuffer: endBuffer,
110
- };
111
- };
112
- exports.getPackageComponents = getPackageComponents;
113
- var editSingleQueryPackage = function (packageOPC, queryMashupDoc) { return __awaiter(void 0, void 0, void 0, function () {
114
- var packageZip;
115
- return __generator(this, function (_a) {
116
- switch (_a.label) {
117
- case 0: return [4 /*yield*/, jszip_1.default.loadAsync(packageOPC)];
118
- case 1:
119
- packageZip = _a.sent();
120
- setSection1m(queryMashupDoc, packageZip);
121
- return [4 /*yield*/, packageZip.generateAsync({ type: constants_1.uint8ArrayType })];
122
- case 2: return [2 /*return*/, _a.sent()];
123
- }
124
- });
125
- }); };
126
- var setSection1m = function (queryMashupDoc, zip) {
127
- var _a;
128
- if (!((_a = zip.file(constants_1.section1mPath)) === null || _a === void 0 ? void 0 : _a.async(constants_1.textResultType))) {
129
- throw new Error(constants_1.formulaSectionNotFoundErr);
130
- }
131
- var newSection1m = queryMashupDoc;
132
- zip.file(constants_1.section1mPath, newSection1m, {
133
- compression: constants_1.emptyValue,
134
- });
135
- };
136
- var editSingleQueryMetadata = function (metadataArray, metadata) {
137
- //extract metadataXml
138
- var mashupArray = new _1.arrayUtils.ArrayReader(metadataArray.buffer);
139
- var metadataVersion = mashupArray.getBytes(4);
140
- var metadataXmlSize = mashupArray.getInt32();
141
- var metadataXml = mashupArray.getBytes(metadataXmlSize);
142
- var endBuffer = mashupArray.getBytes();
143
- //parse metdataXml
144
- var textDecoder = new TextDecoder();
145
- var metadataString = textDecoder.decode(metadataXml);
146
- var parser = new xmldom_qsa_1.DOMParser();
147
- var serializer = new xmldom_qsa_1.XMLSerializer();
148
- var parsedMetadata = parser.parseFromString(metadataString, constants_1.xmlTextResultType);
149
- // Update InfoPaths to new QueryName
150
- var itemPaths = parsedMetadata.getElementsByTagName(constants_1.element.itemPath);
151
- if (itemPaths && itemPaths.length) {
152
- for (var i = 0; i < itemPaths.length; i++) {
153
- var itemPath = itemPaths[i];
154
- var content = itemPath.textContent;
155
- if (content.includes(constants_1.section1PathPrefix)) {
156
- var strArr = content.split(constants_1.divider);
157
- strArr[1] = encodeURIComponent(metadata.queryName);
158
- var newContent = strArr.join(constants_1.divider);
159
- itemPath.textContent = newContent;
160
- }
161
- }
162
- }
163
- var entries = parsedMetadata.getElementsByTagName(constants_1.element.entry);
164
- if (entries && entries.length) {
165
- for (var i = 0; i < entries.length; i++) {
166
- var entry = entries[i];
167
- var entryAttributesArr = Array.from(entry.attributes);
168
- var entryProp = entryAttributesArr.find(function (prop) {
169
- return (prop === null || prop === void 0 ? void 0 : prop.name) === constants_1.elementAttributes.type;
170
- });
171
- if ((entryProp === null || entryProp === void 0 ? void 0 : entryProp.nodeValue) == constants_1.elementAttributes.resultType) {
172
- entry.setAttribute(constants_1.elementAttributes.value, constants_1.elementAttributesValues.tableResultType());
173
- }
174
- if ((entryProp === null || entryProp === void 0 ? void 0 : entryProp.nodeValue) == constants_1.elementAttributes.fillLastUpdated) {
175
- var nowTime = new Date().toISOString();
176
- entry.setAttribute(constants_1.elementAttributes.value, (constants_1.elementAttributes.day + nowTime).replace(/Z/, "0000Z"));
177
- }
178
- }
179
- }
180
- // Convert new metadataXml to Uint8Array
181
- var newMetadataString = serializer.serializeToString(parsedMetadata);
182
- var encoder = new TextEncoder();
183
- var newMetadataXml = encoder.encode(newMetadataString);
184
- var newMetadataXmlSize = _1.arrayUtils.getInt32Buffer(newMetadataXml.byteLength);
185
- var newMetadataArray = _1.arrayUtils.concatArrays(metadataVersion, newMetadataXmlSize, newMetadataXml, endBuffer);
186
- return newMetadataArray;
187
- };
188
- exports.editSingleQueryMetadata = editSingleQueryMetadata;