microsoft-graph 2.7.0 → 2.7.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/cjs/errors/BadTemplateError.js +4 -1
- package/dist/cjs/errors/ContextNotRegisteredError.js +4 -1
- package/dist/cjs/errors/EnvironmentVariableMissingError.js +4 -1
- package/dist/cjs/errors/InconsistentContextError.js +4 -1
- package/dist/cjs/errors/InvalidArgumentError.js +4 -1
- package/dist/cjs/errors/NeverError.js +4 -1
- package/dist/cjs/errors/NotFoundError.js +4 -1
- package/dist/cjs/errors/NotImplementedError.js +4 -1
- package/dist/cjs/errors/ProtocolError.js +4 -1
- package/dist/cjs/errors/RequestFailedError.js +4 -1
- package/dist/cjs/errors/UnsupportedAddressTypeError.js +4 -1
- package/dist/cjs/graphApi.js +52 -43
- package/dist/cjs/index.d.ts +0 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/models/AccessToken.js +2 -1
- package/dist/cjs/models/Address.js +2 -1
- package/dist/cjs/models/CellRangeValues.js +2 -1
- package/dist/cjs/models/CellValue.js +2 -1
- package/dist/cjs/models/ClientId.js +2 -1
- package/dist/cjs/models/ClientSecret.js +2 -1
- package/dist/cjs/models/ColumnOffset.js +2 -1
- package/dist/cjs/models/Context.js +2 -1
- package/dist/cjs/models/ContextId.js +2 -1
- package/dist/cjs/models/ContextRef.js +2 -1
- package/dist/cjs/models/DriveId.js +2 -1
- package/dist/cjs/models/DriveItemId.js +2 -1
- package/dist/cjs/models/DriveItemPath.js +2 -1
- package/dist/cjs/models/DriveItemRef.js +2 -1
- package/dist/cjs/models/DriveRef.js +2 -1
- package/dist/cjs/models/GraphOperation.js +2 -1
- package/dist/cjs/models/GraphOperationDefinition.js +2 -1
- package/dist/cjs/models/HostName.js +2 -1
- package/dist/cjs/models/HttpProxy.js +2 -1
- package/dist/cjs/models/RowOffset.js +2 -1
- package/dist/cjs/models/RowRangeValues.js +2 -1
- package/dist/cjs/models/Scope.js +2 -1
- package/dist/cjs/models/SiteId.js +2 -1
- package/dist/cjs/models/SiteName.js +2 -1
- package/dist/cjs/models/SiteRef.js +2 -1
- package/dist/cjs/models/TenantId.js +2 -1
- package/dist/cjs/models/WorkbookNamedRangeRef.js +2 -1
- package/dist/cjs/models/WorkbookRangeName.js +2 -1
- package/dist/cjs/models/WorkbookRangeRef.js +2 -1
- package/dist/cjs/models/WorkbookRef.js +2 -1
- package/dist/cjs/models/WorkbookSessionId.js +2 -1
- package/dist/cjs/models/WorkbookTableColumnRef.js +2 -1
- package/dist/cjs/models/WorkbookTableId.js +2 -1
- package/dist/cjs/models/WorkbookTableRef.js +2 -1
- package/dist/cjs/models/WorkbookWorksheetId.js +2 -1
- package/dist/cjs/models/WorkbookWorksheetName.js +2 -1
- package/dist/cjs/models/WorkbookWorksheetRef.js +2 -1
- package/dist/cjs/operations/drive/createFolder.js +10 -7
- package/dist/cjs/operations/drive/createFolder.test.js +25 -20
- package/dist/cjs/operations/drive/listDrives.js +10 -7
- package/dist/cjs/operations/drive/listDrives.test.js +13 -8
- package/dist/cjs/operations/driveItem/deleteDriveItem.js +8 -5
- package/dist/cjs/operations/driveItem/deleteDriveItem.test.js +20 -15
- package/dist/cjs/operations/driveItem/getDriveItem.js +8 -5
- package/dist/cjs/operations/driveItem/getDriveItem.test.js +22 -17
- package/dist/cjs/operations/driveItem/getDriveItemByPath.js +10 -7
- package/dist/cjs/operations/driveItem/getDriveItemByPath.test.js +24 -19
- package/dist/cjs/operations/driveItem/getDriveItemContent.js +18 -12
- package/dist/cjs/operations/driveItem/getDriveItemContent.test.js +31 -26
- package/dist/cjs/operations/driveItem/initiateCopyDriveItem.js +8 -5
- package/dist/cjs/operations/driveItem/initiateCopyDriveItem.test.js +26 -21
- package/dist/cjs/operations/driveItem/listDriveItems.js +10 -7
- package/dist/cjs/operations/driveItem/listDriveItems.test.js +22 -17
- package/dist/cjs/operations/site/getSite.js +8 -5
- package/dist/cjs/operations/site/getSite.test.js +14 -9
- package/dist/cjs/operations/site/getSiteByName.js +10 -7
- package/dist/cjs/operations/site/getSiteByName.test.js +16 -11
- package/dist/cjs/operations/site/listSites.js +10 -7
- package/dist/cjs/operations/site/listSites.test.js +14 -9
- package/dist/cjs/operations/site/searchSites.js +10 -7
- package/dist/cjs/operations/site/searchSites.test.js +18 -13
- package/dist/cjs/operations/user/userSendMail.js +11 -5
- package/dist/cjs/operations/workbook/calculateWorkbook.js +10 -6
- package/dist/cjs/operations/workbook/calculateWorkbook.test.js +34 -29
- package/dist/cjs/operations/workbook/createWorkbook.js +16 -10
- package/dist/cjs/operations/workbook/createWorkbook.test.js +18 -13
- package/dist/cjs/operations/workbook/deleteWorkbook.js +9 -3
- package/dist/cjs/operations/workbookRange/clearWorkbookRange.js +8 -5
- package/dist/cjs/operations/workbookRange/clearWorkbookRange.test.js +43 -38
- package/dist/cjs/operations/workbookRange/deleteWorkbookRange.js +8 -5
- package/dist/cjs/operations/workbookRange/deleteWorkbookRange.test.js +43 -38
- package/dist/cjs/operations/workbookRange/getWorkbookNamedRange.js +8 -5
- package/dist/cjs/operations/workbookRange/getWorkbookRangeFormat.js +8 -5
- package/dist/cjs/operations/workbookRange/getWorkbookRangeFormat.test.js +27 -22
- package/dist/cjs/operations/workbookRange/getWorkbookUsedRange.js +15 -9
- package/dist/cjs/operations/workbookRange/getWorkbookVisibleRange.js +8 -5
- package/dist/cjs/operations/workbookRange/getWorkbookVisibleRange.test.js +67 -62
- package/dist/cjs/operations/workbookRange/getWorkbookWorksheetRange.js +8 -5
- package/dist/cjs/operations/workbookRange/getWorkbookWorksheetRange.test.js +25 -20
- package/dist/cjs/operations/workbookRange/insertWorkbookCells.js +15 -9
- package/dist/cjs/operations/workbookRange/insertWorkbookCells.test.js +30 -25
- package/dist/cjs/operations/workbookRange/updateWorkbookNamedRange.js +8 -5
- package/dist/cjs/operations/workbookRange/updateWorkbookRange.js +8 -5
- package/dist/cjs/operations/workbookRange/updateWorkbookRange.test.js +41 -36
- package/dist/cjs/operations/workbookSession/closeWorkbookSession.js +13 -7
- package/dist/cjs/operations/workbookSession/createWorkbookSession.js +8 -5
- package/dist/cjs/operations/workbookSession/refreshWorkbookSession.js +13 -7
- package/dist/cjs/operations/workbookTable/applyWorkbookTableColulmnFilter.test.js +34 -29
- package/dist/cjs/operations/workbookTable/applyWorkbookTableColumnFilter.js +8 -5
- package/dist/cjs/operations/workbookTable/clearWorkbookTableFilters.js +8 -5
- package/dist/cjs/operations/workbookTable/clearWorkbookTableFilters.test.js +36 -31
- package/dist/cjs/operations/workbookTable/createWorkbookTable.js +10 -7
- package/dist/cjs/operations/workbookTable/createWorkbookTable.test.js +24 -19
- package/dist/cjs/operations/workbookTable/deleteWorkbookTable.js +8 -5
- package/dist/cjs/operations/workbookTable/deleteWorkbookTable.test.js +34 -29
- package/dist/cjs/operations/workbookTable/deleteWorkbookTablePreservingValues.js +8 -5
- package/dist/cjs/operations/workbookTable/deleteWorkbookTablePreservingValues.test.js +34 -29
- package/dist/cjs/operations/workbookTable/getWorkbookTable.js +8 -5
- package/dist/cjs/operations/workbookTable/getWorkbookTable.test.js +29 -24
- package/dist/cjs/operations/workbookTable/getWorkbookTableBodyRange.js +15 -9
- package/dist/cjs/operations/workbookTable/getWorkbookTableBodyRange.test.js +33 -28
- package/dist/cjs/operations/workbookTable/getWorkbookTableBodyVisibleRange.js +10 -7
- package/dist/cjs/operations/workbookTable/getWorkbookTableBodyVisibleRange.test.js +34 -29
- package/dist/cjs/operations/workbookTable/getWorkbookTableHeaderRange.js +15 -9
- package/dist/cjs/operations/workbookTable/getWorkbookTableHeaderRange.test.js +33 -28
- package/dist/cjs/operations/workbookTable/listWorkbookTableColumns.js +8 -5
- package/dist/cjs/operations/workbookTable/listWorkbookTableColumns.test.js +28 -23
- package/dist/cjs/operations/workbookTable/listWorkbookTableRows.js +8 -5
- package/dist/cjs/operations/workbookTable/listWorkbookTableRows.test.js +28 -23
- package/dist/cjs/operations/workbookTable/listWorkbookTables.js +10 -7
- package/dist/cjs/operations/workbookTable/listWorkbookTables.test.js +29 -24
- package/dist/cjs/operations/workbookWorksheet/createWorkbookWorksheet.js +10 -7
- package/dist/cjs/operations/workbookWorksheet/createWorkbookWorksheet.test.js +29 -24
- package/dist/cjs/operations/workbookWorksheet/deleteWorkbookWorksheet.js +8 -5
- package/dist/cjs/operations/workbookWorksheet/deleteWorkbookWorksheet.test.js +27 -22
- package/dist/cjs/operations/workbookWorksheet/getWorkbookWorksheetUsedRange.js +15 -9
- package/dist/cjs/operations/workbookWorksheet/getWorkbookWorksheetUsedRange.test.js +41 -36
- package/dist/cjs/operations/workbookWorksheet/getWorkbookWorksheetUsedVisibleRange.js +10 -7
- package/dist/cjs/operations/workbookWorksheet/getWorkbookWorksheetUsedVisibleRange.test.js +31 -26
- package/dist/cjs/operations/workbookWorksheet/listWorkbookWorksheets.js +15 -9
- package/dist/cjs/operations/workbookWorksheet/listWorkbookWorksheets.test.js +37 -32
- package/dist/cjs/operations/workbookWorksheet/updateWorkbookWorksheet.js +8 -5
- package/dist/cjs/operations/workbookWorksheet/updateWorkbookWorksheet.test.js +36 -31
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/services/accessToken.js +6 -3
- package/dist/cjs/services/addressManipulation.js +64 -41
- package/dist/cjs/services/addressManipulation.test.js +239 -234
- package/dist/cjs/services/addressOffset.js +10 -4
- package/dist/cjs/services/addressOffset.test.js +32 -30
- package/dist/cjs/services/context.js +20 -12
- package/dist/cjs/services/drive.js +22 -15
- package/dist/cjs/services/driveItem.js +21 -13
- package/dist/cjs/services/driveItem.test.js +13 -8
- package/dist/cjs/services/environmentVariable.js +11 -4
- package/dist/cjs/services/httpAgent.js +6 -3
- package/dist/cjs/services/httpStatus.js +8 -3
- package/dist/cjs/services/operationId.js +6 -2
- package/dist/cjs/services/random.js +6 -3
- package/dist/cjs/services/sharepointUrl.js +11 -5
- package/dist/cjs/services/sharepointUrl.test.js +7 -5
- package/dist/cjs/services/site.js +15 -8
- package/dist/cjs/services/sleep.js +4 -1
- package/dist/cjs/services/stringCaseConversion.js +4 -1
- package/dist/cjs/services/stringCaseConversion.test.js +13 -11
- package/dist/cjs/services/templatedPaths.js +13 -7
- package/dist/cjs/services/templatedPaths.test.js +29 -24
- package/dist/cjs/services/temporaryFiles.js +6 -3
- package/dist/cjs/services/workbookRange.js +4 -1
- package/dist/cjs/services/workbookTable.js +4 -1
- package/dist/cjs/services/workbookTableColumn.js +4 -1
- package/dist/cjs/services/workbookWorksheet.js +9 -4
- package/dist/cjs/tasks/createWorkbookAndStartSession.js +11 -5
- package/dist/cjs/tasks/deleteDriveItemWithRetry.js +12 -6
- package/dist/cjs/tasks/downloadDriveItemContent.js +11 -5
- package/dist/cjs/tasks/getRangeLastUsedCell.js +17 -11
- package/dist/cjs/tasks/getRangeLastUsedCell.test.js +56 -51
- package/dist/cjs/tasks/getWorkbookTableVisibleBody.js +11 -5
- package/dist/cjs/tasks/getWorkbookWorksheetByName.js +11 -5
- package/dist/cjs/tasks/iterateWorkbookRangeValues.js +22 -16
- package/dist/cjs/tasks/iterateWorkbookRangeValues.test.js +41 -36
- package/dist/cjs/tasks/safeDeleteWorkbook.js +11 -5
- package/dist/cjs/tasks/setColumnHidden.js +12 -6
- package/dist/cjs/tasks/setColumnHidden.test.js +46 -41
- package/dist/cjs/tasks/setRowHidden.js +12 -6
- package/dist/cjs/tasks/setRowHidden.test.js +46 -41
- package/dist/cjs/tasks/setWorkbookRangeValues.js +15 -9
- package/dist/cjs/tasks/setWorkbookRangeValues.test.js +29 -24
- package/dist/cjs/tasks/setWorkbookTableBodyVisibleRows.js +23 -17
- package/dist/cjs/tasks/setWorkbookTableBodyVisibleRows.test.js +50 -45
- package/dist/cjs/tasks/tryDeleteDriveItem.js +9 -3
- package/dist/esm/package.json +3 -0
- package/package.json +655 -2
- package/tsconfig.cjs.json +4 -3
- package/update-exports.ts +47 -13
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generatePath = generatePath;
|
|
7
|
+
const BadTemplateError_ts_1 = __importDefault(require("../errors/BadTemplateError.js"));
|
|
8
|
+
const stringCaseConversion_ts_1 = require("./stringCaseConversion.js");
|
|
3
9
|
const argumentPattern = /\{([a-z-]+)\}/g;
|
|
4
10
|
/**
|
|
5
11
|
* Generates a HTTP path based on a template and arguments. Arguments are automatically escaped.
|
|
@@ -8,18 +14,18 @@ const argumentPattern = /\{([a-z-]+)\}/g;
|
|
|
8
14
|
* @returns The generated Graph API path.
|
|
9
15
|
* @throws BadTemplateError if the template is invalid or required arguments are missing.
|
|
10
16
|
*/
|
|
11
|
-
|
|
17
|
+
function generatePath(template, args) {
|
|
12
18
|
if (!template.startsWith("/")) {
|
|
13
|
-
throw new
|
|
19
|
+
throw new BadTemplateError_ts_1.default(`Path template '${template}' must start with a slash.`);
|
|
14
20
|
}
|
|
15
21
|
if (template.includes("\n")) {
|
|
16
|
-
throw new
|
|
22
|
+
throw new BadTemplateError_ts_1.default("Path template must not contain newlines.");
|
|
17
23
|
}
|
|
18
24
|
return template.replace(argumentPattern, (_, match) => {
|
|
19
|
-
const camelCaseKey = kebabToCamelCase(match);
|
|
25
|
+
const camelCaseKey = (0, stringCaseConversion_ts_1.kebabToCamelCase)(match);
|
|
20
26
|
const value = args[camelCaseKey];
|
|
21
27
|
if (value === undefined) {
|
|
22
|
-
throw new
|
|
28
|
+
throw new BadTemplateError_ts_1.default(`Path template references argument '${camelCaseKey}' however no such argument provided.`);
|
|
23
29
|
}
|
|
24
30
|
return encodeURIComponent(value);
|
|
25
31
|
});
|
|
@@ -1,49 +1,54 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const vitest_1 = require("vitest");
|
|
7
|
+
const BadTemplateError_ts_1 = __importDefault(require("../errors/BadTemplateError.js"));
|
|
8
|
+
const templatedPaths_ts_1 = require("./templatedPaths.js");
|
|
9
|
+
(0, vitest_1.describe)("generatePath", () => {
|
|
10
|
+
(0, vitest_1.it)("should generate a valid path with correct arguments", () => {
|
|
6
11
|
const template = "/me/drive/items/{item-id}/children";
|
|
7
12
|
const args = { itemId: "123" };
|
|
8
|
-
const result = generatePath(template, args);
|
|
9
|
-
expect(result).toBe("/me/drive/items/123/children");
|
|
13
|
+
const result = (0, templatedPaths_ts_1.generatePath)(template, args);
|
|
14
|
+
(0, vitest_1.expect)(result).toBe("/me/drive/items/123/children");
|
|
10
15
|
});
|
|
11
|
-
it("should throw BadTemplateError if template does not start with a slash", () => {
|
|
16
|
+
(0, vitest_1.it)("should throw BadTemplateError if template does not start with a slash", () => {
|
|
12
17
|
const template = "me/drive/items/{item-id}/children";
|
|
13
18
|
const args = { itemId: "123" };
|
|
14
|
-
expect(() => generatePath(template, args)).toThrow(
|
|
19
|
+
(0, vitest_1.expect)(() => (0, templatedPaths_ts_1.generatePath)(template, args)).toThrow(BadTemplateError_ts_1.default);
|
|
15
20
|
});
|
|
16
|
-
it("should throw BadTemplateError if template contains newlines", () => {
|
|
21
|
+
(0, vitest_1.it)("should throw BadTemplateError if template contains newlines", () => {
|
|
17
22
|
const template = "/me/drive/items/{item-id}/children\n";
|
|
18
23
|
const args = { itemId: "123" };
|
|
19
|
-
expect(() => generatePath(template, args)).toThrow(
|
|
24
|
+
(0, vitest_1.expect)(() => (0, templatedPaths_ts_1.generatePath)(template, args)).toThrow(BadTemplateError_ts_1.default);
|
|
20
25
|
});
|
|
21
|
-
it("should throw BadTemplateError if argument is missing", () => {
|
|
26
|
+
(0, vitest_1.it)("should throw BadTemplateError if argument is missing", () => {
|
|
22
27
|
const template = "/me/drive/items/{item-id}/children";
|
|
23
28
|
const args = {};
|
|
24
|
-
expect(() => generatePath(template, args)).toThrow(
|
|
29
|
+
(0, vitest_1.expect)(() => (0, templatedPaths_ts_1.generatePath)(template, args)).toThrow(BadTemplateError_ts_1.default);
|
|
25
30
|
});
|
|
26
|
-
it("should encode URI components", () => {
|
|
31
|
+
(0, vitest_1.it)("should encode URI components", () => {
|
|
27
32
|
const template = "/me/drive/items/{item-id}/children";
|
|
28
33
|
const args = { itemId: "item name with spaces" };
|
|
29
|
-
const result = generatePath(template, args);
|
|
30
|
-
expect(result).toBe("/me/drive/items/item%20name%20with%20spaces/children");
|
|
34
|
+
const result = (0, templatedPaths_ts_1.generatePath)(template, args);
|
|
35
|
+
(0, vitest_1.expect)(result).toBe("/me/drive/items/item%20name%20with%20spaces/children");
|
|
31
36
|
});
|
|
32
|
-
it("should generate a valid path when the same argument is used twice", () => {
|
|
37
|
+
(0, vitest_1.it)("should generate a valid path when the same argument is used twice", () => {
|
|
33
38
|
const template = "/me/drive/items/{item-id}/children/{item-id}";
|
|
34
39
|
const args = { itemId: "123" };
|
|
35
|
-
const result = generatePath(template, args);
|
|
36
|
-
expect(result).toBe("/me/drive/items/123/children/123");
|
|
40
|
+
const result = (0, templatedPaths_ts_1.generatePath)(template, args);
|
|
41
|
+
(0, vitest_1.expect)(result).toBe("/me/drive/items/123/children/123");
|
|
37
42
|
});
|
|
38
|
-
it("should throw BadTemplateError if template has an argument that is not matched", () => {
|
|
43
|
+
(0, vitest_1.it)("should throw BadTemplateError if template has an argument that is not matched", () => {
|
|
39
44
|
const template = "/me/drive/items/{item-id}/children/{child-id}";
|
|
40
45
|
const args = { itemId: "123" };
|
|
41
|
-
expect(() => generatePath(template, args)).toThrow(
|
|
46
|
+
(0, vitest_1.expect)(() => (0, templatedPaths_ts_1.generatePath)(template, args)).toThrow(BadTemplateError_ts_1.default);
|
|
42
47
|
});
|
|
43
|
-
it("should generate a valid path with multiple arguments", () => {
|
|
48
|
+
(0, vitest_1.it)("should generate a valid path with multiple arguments", () => {
|
|
44
49
|
const template = "/users/{user-id}/messages/{message-id}/attachments/{attachment-id}";
|
|
45
50
|
const args = { userId: "user123", messageId: "msg456", attachmentId: "att789" };
|
|
46
|
-
const result = generatePath(template, args);
|
|
47
|
-
expect(result).toBe("/users/user123/messages/msg456/attachments/att789");
|
|
51
|
+
const result = (0, templatedPaths_ts_1.generatePath)(template, args);
|
|
52
|
+
(0, vitest_1.expect)(result).toBe("/users/user123/messages/msg456/attachments/att789");
|
|
48
53
|
});
|
|
49
54
|
});
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateTempFileName = generateTempFileName;
|
|
4
|
+
const random_ts_1 = require("./random.js");
|
|
2
5
|
/**
|
|
3
6
|
* Generates a temporary file name with the specified extension.
|
|
4
7
|
* @param extension - The file extension. Defaults to "tmp".
|
|
5
8
|
* @returns A temporary file name.
|
|
6
9
|
*/
|
|
7
|
-
|
|
8
|
-
const body = generateRandomString(16);
|
|
10
|
+
function generateTempFileName(extension = "tmp") {
|
|
11
|
+
const body = (0, random_ts_1.generateRandomString)(16);
|
|
9
12
|
return `~${body}.${extension}`;
|
|
10
13
|
}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createWorkbookRangeRef = createWorkbookRangeRef;
|
|
1
4
|
/**
|
|
2
5
|
* Creates a reference to a workbook range.
|
|
3
6
|
* @param worksheetRef - The reference to the worksheet containing the range.
|
|
4
7
|
* @param address - The address of the range.
|
|
5
8
|
* @returns A reference to the workbook range.
|
|
6
9
|
*/
|
|
7
|
-
|
|
10
|
+
function createWorkbookRangeRef(worksheetRef, address) {
|
|
8
11
|
return {
|
|
9
12
|
contextId: worksheetRef.contextId,
|
|
10
13
|
siteId: worksheetRef.siteId,
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createWorkbookTableRef = createWorkbookTableRef;
|
|
1
4
|
/**
|
|
2
5
|
* Creates a reference to a workbook table.
|
|
3
6
|
* @param worksheetRef - The reference to the worksheet containing the table.
|
|
@@ -5,7 +8,7 @@
|
|
|
5
8
|
* @returns A reference to the workbook table.
|
|
6
9
|
* @throws Error if the table ID is missing.
|
|
7
10
|
*/
|
|
8
|
-
|
|
11
|
+
function createWorkbookTableRef(worksheetRef, tableId) {
|
|
9
12
|
if (!tableId) {
|
|
10
13
|
throw new Error("TableId is missing");
|
|
11
14
|
}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createWorkbookTableColumnRef = createWorkbookTableColumnRef;
|
|
1
4
|
/**
|
|
2
5
|
* Creates a reference to a workbook table column.
|
|
3
6
|
* @param tableRef - The reference to the worksheet containing the table.
|
|
@@ -5,7 +8,7 @@
|
|
|
5
8
|
* @returns A reference to the workbook table.
|
|
6
9
|
* @throws Error if the table ID is missing.
|
|
7
10
|
*/
|
|
8
|
-
|
|
11
|
+
function createWorkbookTableColumnRef(tableRef, column) {
|
|
9
12
|
if (!column) {
|
|
10
13
|
throw new Error("TableId is missing");
|
|
11
14
|
}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultWorkbookWorksheetId = void 0;
|
|
4
|
+
exports.createWorkbookWorksheetRef = createWorkbookWorksheetRef;
|
|
5
|
+
exports.createDefaultWorkbookWorksheetRef = createDefaultWorkbookWorksheetRef;
|
|
6
|
+
exports.defaultWorkbookWorksheetId = "{00000000-0001-0000-0000-000000000000}"; // Program Manager in Microsoft Office Extensibility team says this ID is used for the first sheet of all workbooks by design, but not documented. https://github.com/OfficeDev/office-js/issues/552#issuecomment-800841930
|
|
2
7
|
/**
|
|
3
8
|
* Creates a reference to a workbook worksheet.
|
|
4
9
|
* @param workbookRef - The reference to the workbook.
|
|
@@ -6,7 +11,7 @@ export const defaultWorkbookWorksheetId = "{00000000-0001-0000-0000-000000000000
|
|
|
6
11
|
* @returns A reference to the workbook worksheet.
|
|
7
12
|
* @throws Error if the worksheet ID is missing.
|
|
8
13
|
*/
|
|
9
|
-
|
|
14
|
+
function createWorkbookWorksheetRef(workbookRef, worksheetId) {
|
|
10
15
|
if (!worksheetId) {
|
|
11
16
|
throw new Error("WorksheetID is missing");
|
|
12
17
|
}
|
|
@@ -24,6 +29,6 @@ export function createWorkbookWorksheetRef(workbookRef, worksheetId) {
|
|
|
24
29
|
* @param workbookRef - The reference to the workbook.
|
|
25
30
|
* @returns A reference to the default workbook worksheet.
|
|
26
31
|
*/
|
|
27
|
-
|
|
28
|
-
return createWorkbookWorksheetRef(workbookRef, defaultWorkbookWorksheetId);
|
|
32
|
+
function createDefaultWorkbookWorksheetRef(workbookRef) {
|
|
33
|
+
return createWorkbookWorksheetRef(workbookRef, exports.defaultWorkbookWorksheetId);
|
|
29
34
|
}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = createWorkbookAndStartSession;
|
|
7
|
+
const createWorkbook_ts_1 = __importDefault(require("../operations/workbook/createWorkbook.js"));
|
|
8
|
+
const createWorkbookSession_ts_1 = __importDefault(require("../operations/workbookSession/createWorkbookSession.js"));
|
|
3
9
|
/**
|
|
4
10
|
* Create a new workbook and open a session for that workbook in a single operation.
|
|
5
11
|
*
|
|
@@ -7,9 +13,9 @@ import createWorkbookSession from "../operations/workbookSession/createWorkbookS
|
|
|
7
13
|
* @param itemPath - The path of the new workbook within the drive.
|
|
8
14
|
* @returns The created workbook and session details.
|
|
9
15
|
*/
|
|
10
|
-
|
|
11
|
-
const workbook = await
|
|
12
|
-
const workbookRef = await
|
|
16
|
+
async function createWorkbookAndStartSession(driveRef, itemPath) {
|
|
17
|
+
const workbook = await (0, createWorkbook_ts_1.default)(driveRef, itemPath);
|
|
18
|
+
const workbookRef = await (0, createWorkbookSession_ts_1.default)(workbook);
|
|
13
19
|
return {
|
|
14
20
|
...workbook,
|
|
15
21
|
...workbookRef,
|
|
@@ -1,21 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = deleteDriveItemWithRetry;
|
|
7
|
+
const deleteDriveItem_ts_1 = __importDefault(require("../operations/driveItem/deleteDriveItem.js"));
|
|
8
|
+
const sleep_ts_1 = require("../services/sleep.js");
|
|
3
9
|
/**
|
|
4
10
|
* Delete a DriveItem, avoiding locking issues through automatic retries.
|
|
5
11
|
*
|
|
6
12
|
* @param driveItemRef - A reference to the DriveItem to delete.
|
|
7
13
|
* @returns Void when the DriveItem is successfully deleted.
|
|
8
14
|
*/
|
|
9
|
-
|
|
15
|
+
async function deleteDriveItemWithRetry(driveItemRef) {
|
|
10
16
|
const retryDelays = [1000, 2000, 4000];
|
|
11
17
|
for (const delay of retryDelays) {
|
|
12
18
|
try {
|
|
13
|
-
await
|
|
19
|
+
await (0, deleteDriveItem_ts_1.default)(driveItemRef);
|
|
14
20
|
return;
|
|
15
21
|
}
|
|
16
22
|
catch (_) {
|
|
17
|
-
await sleep(delay);
|
|
23
|
+
await (0, sleep_ts_1.sleep)(delay);
|
|
18
24
|
}
|
|
19
25
|
}
|
|
20
|
-
await
|
|
26
|
+
await (0, deleteDriveItem_ts_1.default)(driveItemRef);
|
|
21
27
|
}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = downloadDriveItemContent;
|
|
7
|
+
const promises_1 = require("node:fs/promises");
|
|
8
|
+
const getDriveItemContent_ts_1 = __importDefault(require("../operations/driveItem/getDriveItemContent.js"));
|
|
3
9
|
/**
|
|
4
10
|
* Download a DriveItem and save it as a local file.
|
|
5
11
|
*
|
|
@@ -7,8 +13,8 @@ import getDriveItemContent from "../operations/driveItem/getDriveItemContent.js"
|
|
|
7
13
|
* @param localFilePath - The local file path where the content should be saved.
|
|
8
14
|
* @returns Void when the content is successfully downloaded and saved.
|
|
9
15
|
*/
|
|
10
|
-
|
|
11
|
-
const arrayBuffer = await
|
|
16
|
+
async function downloadDriveItemContent(itemRef, localFilePath) {
|
|
17
|
+
const arrayBuffer = await (0, getDriveItemContent_ts_1.default)(itemRef);
|
|
12
18
|
const buffer = Buffer.from(arrayBuffer);
|
|
13
|
-
await writeFile(localFilePath, buffer);
|
|
19
|
+
await (0, promises_1.writeFile)(localFilePath, buffer);
|
|
14
20
|
}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = getRangeLastUsedCell;
|
|
7
|
+
const ProtocolError_ts_1 = __importDefault(require("../errors/ProtocolError.js"));
|
|
8
|
+
const getWorkbookWorksheetRange_ts_1 = __importDefault(require("../operations/workbookRange/getWorkbookWorksheetRange.js"));
|
|
9
|
+
const addressManipulation_ts_1 = require("../services/addressManipulation.js");
|
|
4
10
|
/**
|
|
5
11
|
* Get the last used cell (i.e., the most lower-right cell) in a given range.
|
|
6
12
|
*
|
|
@@ -8,31 +14,31 @@ import { getFirstCellAddress, offsetAddress } from "../services/addressManipulat
|
|
|
8
14
|
* @throws {ProtocolError} If the range's row or column counts, or values, are missing.
|
|
9
15
|
* @returns The last used cell's value and address, or `null` if no cells are used.
|
|
10
16
|
*/
|
|
11
|
-
|
|
17
|
+
async function getRangeLastUsedCell(rangeRef) {
|
|
12
18
|
// TODO: Consider adding chunking if the range is too large
|
|
13
19
|
// TODO: Reduce cells returned by using "used range"?
|
|
14
|
-
const range = await
|
|
20
|
+
const range = await (0, getWorkbookWorksheetRange_ts_1.default)(rangeRef);
|
|
15
21
|
const { rowCount, columnCount } = range;
|
|
16
22
|
if (rowCount === undefined || columnCount === undefined) {
|
|
17
|
-
throw new
|
|
23
|
+
throw new ProtocolError_ts_1.default("Counts missing");
|
|
18
24
|
}
|
|
19
25
|
const values = range.values;
|
|
20
26
|
if (values === undefined) {
|
|
21
|
-
throw new
|
|
27
|
+
throw new ProtocolError_ts_1.default("Range values missing");
|
|
22
28
|
}
|
|
23
29
|
for (let rowIndex = (rowCount - 1); rowIndex >= 0; rowIndex--) {
|
|
24
30
|
const row = values[rowIndex];
|
|
25
31
|
if (row === undefined) {
|
|
26
|
-
throw new
|
|
32
|
+
throw new ProtocolError_ts_1.default("Row missing");
|
|
27
33
|
}
|
|
28
34
|
for (let columnIndex = (columnCount - 1); columnIndex >= 0; columnIndex--) {
|
|
29
35
|
const cell = row[columnIndex];
|
|
30
36
|
if (cell === undefined) {
|
|
31
|
-
throw new
|
|
37
|
+
throw new ProtocolError_ts_1.default("Cell missing");
|
|
32
38
|
}
|
|
33
39
|
if (cell !== null && cell !== "") {
|
|
34
|
-
const firstCellAddress = getFirstCellAddress(rangeRef.address);
|
|
35
|
-
const lastUsedCellAddress = offsetAddress(firstCellAddress, columnIndex, rowIndex);
|
|
40
|
+
const firstCellAddress = (0, addressManipulation_ts_1.getFirstCellAddress)(rangeRef.address);
|
|
41
|
+
const lastUsedCellAddress = (0, addressManipulation_ts_1.offsetAddress)(firstCellAddress, columnIndex, rowIndex);
|
|
36
42
|
return {
|
|
37
43
|
value: cell,
|
|
38
44
|
address: lastUsedCellAddress,
|
|
@@ -1,85 +1,90 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const vitest_1 = require("vitest");
|
|
7
|
+
const graphApi_ts_1 = require("../graphApi.js");
|
|
8
|
+
const calculateWorkbook_ts_1 = __importDefault(require("../operations/workbook/calculateWorkbook.js"));
|
|
9
|
+
const createWorkbook_ts_1 = __importDefault(require("../operations/workbook/createWorkbook.js"));
|
|
10
|
+
const updateWorkbookRange_ts_1 = __importDefault(require("../operations/workbookRange/updateWorkbookRange.js"));
|
|
11
|
+
const drive_ts_1 = require("../services/drive.js");
|
|
12
|
+
const driveItem_ts_1 = require("../services/driveItem.js");
|
|
13
|
+
const temporaryFiles_ts_1 = require("../services/temporaryFiles.js");
|
|
14
|
+
const workbookRange_ts_1 = require("../services/workbookRange.js");
|
|
15
|
+
const workbookWorksheet_ts_1 = require("../services/workbookWorksheet.js");
|
|
16
|
+
const getRangeLastUsedCell_ts_1 = __importDefault(require("./getRangeLastUsedCell.js"));
|
|
17
|
+
const tryDeleteDriveItem_ts_1 = __importDefault(require("./tryDeleteDriveItem.js"));
|
|
18
|
+
(0, vitest_1.describe)("getRangeLastUsedCell", () => {
|
|
19
|
+
(0, vitest_1.it)("should return the last used cell value", async () => {
|
|
20
|
+
const workbookName = (0, temporaryFiles_ts_1.generateTempFileName)("xlsx");
|
|
21
|
+
const workbookPath = (0, driveItem_ts_1.driveItemPath)(workbookName);
|
|
22
|
+
const driveRef = (0, drive_ts_1.getDefaultDriveRef)();
|
|
23
|
+
const workbook = await (0, createWorkbook_ts_1.default)(driveRef, workbookPath);
|
|
24
|
+
const worksheetRef = (0, workbookWorksheet_ts_1.createWorkbookWorksheetRef)(workbook, workbookWorksheet_ts_1.defaultWorkbookWorksheetId);
|
|
25
|
+
const rangeRef = (0, workbookRange_ts_1.createWorkbookRangeRef)(worksheetRef, "A1:B2");
|
|
21
26
|
try {
|
|
22
|
-
await sequential(
|
|
27
|
+
await (0, graphApi_ts_1.sequential)((0, updateWorkbookRange_ts_1.default)(rangeRef, {
|
|
23
28
|
values: [
|
|
24
29
|
[1, 2],
|
|
25
30
|
[3, 4],
|
|
26
31
|
],
|
|
27
|
-
}),
|
|
28
|
-
const result = await
|
|
32
|
+
}), (0, calculateWorkbook_ts_1.default)(workbook));
|
|
33
|
+
const result = await (0, getRangeLastUsedCell_ts_1.default)(rangeRef);
|
|
29
34
|
if (result === null) {
|
|
30
35
|
throw new Error("Expected a result");
|
|
31
36
|
}
|
|
32
|
-
expect(result.value).toBe(4);
|
|
33
|
-
expect(result.address).toBe("B2");
|
|
37
|
+
(0, vitest_1.expect)(result.value).toBe(4);
|
|
38
|
+
(0, vitest_1.expect)(result.address).toBe("B2");
|
|
34
39
|
}
|
|
35
40
|
finally {
|
|
36
|
-
await
|
|
41
|
+
await (0, tryDeleteDriveItem_ts_1.default)(workbook);
|
|
37
42
|
}
|
|
38
43
|
});
|
|
39
|
-
it("should return the last non-empty cell value when the last cell is empty", async () => {
|
|
40
|
-
const workbookName = generateTempFileName("xlsx");
|
|
41
|
-
const workbookPath = driveItemPath(workbookName);
|
|
42
|
-
const driveRef = getDefaultDriveRef();
|
|
43
|
-
const workbook = await
|
|
44
|
-
const worksheetRef = createWorkbookWorksheetRef(workbook, defaultWorkbookWorksheetId);
|
|
45
|
-
const rangeRef = createWorkbookRangeRef(worksheetRef, "A1:B2");
|
|
44
|
+
(0, vitest_1.it)("should return the last non-empty cell value when the last cell is empty", async () => {
|
|
45
|
+
const workbookName = (0, temporaryFiles_ts_1.generateTempFileName)("xlsx");
|
|
46
|
+
const workbookPath = (0, driveItem_ts_1.driveItemPath)(workbookName);
|
|
47
|
+
const driveRef = (0, drive_ts_1.getDefaultDriveRef)();
|
|
48
|
+
const workbook = await (0, createWorkbook_ts_1.default)(driveRef, workbookPath);
|
|
49
|
+
const worksheetRef = (0, workbookWorksheet_ts_1.createWorkbookWorksheetRef)(workbook, workbookWorksheet_ts_1.defaultWorkbookWorksheetId);
|
|
50
|
+
const rangeRef = (0, workbookRange_ts_1.createWorkbookRangeRef)(worksheetRef, "A1:B2");
|
|
46
51
|
try {
|
|
47
|
-
await sequential(
|
|
52
|
+
await (0, graphApi_ts_1.sequential)((0, updateWorkbookRange_ts_1.default)(rangeRef, {
|
|
48
53
|
values: [
|
|
49
54
|
[1, 2],
|
|
50
55
|
[3, null],
|
|
51
56
|
],
|
|
52
|
-
}),
|
|
53
|
-
const result = await
|
|
57
|
+
}), (0, calculateWorkbook_ts_1.default)(workbook));
|
|
58
|
+
const result = await (0, getRangeLastUsedCell_ts_1.default)(rangeRef);
|
|
54
59
|
if (result === null) {
|
|
55
60
|
throw new Error("Expected a result");
|
|
56
61
|
}
|
|
57
|
-
expect(result.value).toBe(3);
|
|
58
|
-
expect(result.address).toBe("A2");
|
|
62
|
+
(0, vitest_1.expect)(result.value).toBe(3);
|
|
63
|
+
(0, vitest_1.expect)(result.address).toBe("A2");
|
|
59
64
|
}
|
|
60
65
|
finally {
|
|
61
|
-
await
|
|
66
|
+
await (0, tryDeleteDriveItem_ts_1.default)(workbook);
|
|
62
67
|
}
|
|
63
68
|
});
|
|
64
|
-
it("should return null when no cells are used", async () => {
|
|
65
|
-
const workbookName = generateTempFileName("xlsx");
|
|
66
|
-
const workbookPath = driveItemPath(workbookName);
|
|
67
|
-
const driveRef = getDefaultDriveRef();
|
|
68
|
-
const workbook = await
|
|
69
|
-
const worksheetRef = createWorkbookWorksheetRef(workbook, defaultWorkbookWorksheetId);
|
|
70
|
-
const rangeRef = createWorkbookRangeRef(worksheetRef, "A1:B2");
|
|
69
|
+
(0, vitest_1.it)("should return null when no cells are used", async () => {
|
|
70
|
+
const workbookName = (0, temporaryFiles_ts_1.generateTempFileName)("xlsx");
|
|
71
|
+
const workbookPath = (0, driveItem_ts_1.driveItemPath)(workbookName);
|
|
72
|
+
const driveRef = (0, drive_ts_1.getDefaultDriveRef)();
|
|
73
|
+
const workbook = await (0, createWorkbook_ts_1.default)(driveRef, workbookPath);
|
|
74
|
+
const worksheetRef = (0, workbookWorksheet_ts_1.createWorkbookWorksheetRef)(workbook, workbookWorksheet_ts_1.defaultWorkbookWorksheetId);
|
|
75
|
+
const rangeRef = (0, workbookRange_ts_1.createWorkbookRangeRef)(worksheetRef, "A1:B2");
|
|
71
76
|
try {
|
|
72
|
-
await sequential(
|
|
77
|
+
await (0, graphApi_ts_1.sequential)((0, updateWorkbookRange_ts_1.default)(rangeRef, {
|
|
73
78
|
values: [
|
|
74
79
|
[null, null],
|
|
75
80
|
[null, null],
|
|
76
81
|
],
|
|
77
|
-
}),
|
|
78
|
-
const result = await
|
|
79
|
-
expect(result).toBeNull();
|
|
82
|
+
}), (0, calculateWorkbook_ts_1.default)(workbook));
|
|
83
|
+
const result = await (0, getRangeLastUsedCell_ts_1.default)(rangeRef);
|
|
84
|
+
(0, vitest_1.expect)(result).toBeNull();
|
|
80
85
|
}
|
|
81
86
|
finally {
|
|
82
|
-
await
|
|
87
|
+
await (0, tryDeleteDriveItem_ts_1.default)(workbook);
|
|
83
88
|
}
|
|
84
89
|
});
|
|
85
90
|
});
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getWorkbookTableVisibleBody = getWorkbookTableVisibleBody;
|
|
7
|
+
const getWorkbookVisibleRange_ts_1 = __importDefault(require("../operations/workbookRange/getWorkbookVisibleRange.js"));
|
|
8
|
+
const getWorkbookTableBodyRange_ts_1 = __importDefault(require("../operations/workbookTable/getWorkbookTableBodyRange.js"));
|
|
3
9
|
/** @deprecated Use `getWorkbookTableBodyVisibleRange` instead. */
|
|
4
|
-
|
|
5
|
-
const range = await
|
|
6
|
-
const visibleRange = await
|
|
10
|
+
async function getWorkbookTableVisibleBody(tableRef) {
|
|
11
|
+
const range = await (0, getWorkbookTableBodyRange_ts_1.default)(tableRef);
|
|
12
|
+
const visibleRange = await (0, getWorkbookVisibleRange_ts_1.default)(range);
|
|
7
13
|
return visibleRange;
|
|
8
14
|
}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = getWorkbookWorksheetByName;
|
|
7
|
+
const NotFoundError_ts_1 = __importDefault(require("../errors/NotFoundError.js"));
|
|
8
|
+
const listWorkbookWorksheets_ts_1 = __importDefault(require("../operations/workbookWorksheet/listWorkbookWorksheets.js"));
|
|
3
9
|
/**
|
|
4
10
|
* Get a worksheet by its name. Throws an error if not found.
|
|
5
11
|
*
|
|
@@ -8,12 +14,12 @@ import listWorkbookWorksheets from "../operations/workbookWorksheet/listWorkbook
|
|
|
8
14
|
* @throws {NotFoundError} If the worksheet with the specified name is not found.
|
|
9
15
|
* @returns The worksheet details.
|
|
10
16
|
*/
|
|
11
|
-
|
|
17
|
+
async function getWorkbookWorksheetByName(workbookRef, name) {
|
|
12
18
|
// TODO: More performant to get it by a direct call without listing all workbooks?
|
|
13
|
-
const worksheets = await
|
|
19
|
+
const worksheets = await (0, listWorkbookWorksheets_ts_1.default)(workbookRef);
|
|
14
20
|
const worksheet = worksheets.find((worksheetRef) => worksheetRef.name === name);
|
|
15
21
|
if (!worksheet) {
|
|
16
|
-
throw new
|
|
22
|
+
throw new NotFoundError_ts_1.default(`Worksheet '${name}' not found.`);
|
|
17
23
|
}
|
|
18
24
|
return worksheet;
|
|
19
25
|
}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = iterateWorkbookRangeValues;
|
|
7
|
+
const InvalidArgumentError_ts_1 = __importDefault(require("../errors/InvalidArgumentError.js"));
|
|
8
|
+
const getWorkbookWorksheetRange_ts_1 = __importDefault(require("../operations/workbookRange/getWorkbookWorksheetRange.js"));
|
|
9
|
+
const addressManipulation_ts_1 = require("../services/addressManipulation.js");
|
|
10
|
+
const addressOffset_ts_1 = require("../services/addressOffset.js");
|
|
11
|
+
const workbookRange_ts_1 = require("../services/workbookRange.js");
|
|
6
12
|
/**
|
|
7
13
|
* Maximum number of cells that can be retrieved in a single request, unless overwritten.
|
|
8
14
|
* @remarks The Microsoft Graph API documentation does not specify a fixed maximum number of cells that can be retrieved in a single request.
|
|
@@ -17,29 +23,29 @@ const maxCellsPerRequest = 10_000;
|
|
|
17
23
|
* @param overwriteRowsPerRequest - Optional. The number of rows to fetch per request. If omitted, it is automatically calculated.
|
|
18
24
|
* @returns An async iterable that yields rows of range values.
|
|
19
25
|
*/
|
|
20
|
-
|
|
26
|
+
async function* iterateWorkbookRangeValues(rangeRef, overwriteRowsPerRequest = null) {
|
|
21
27
|
const address = rangeRef.address;
|
|
22
|
-
const components = decomposeAddress(address);
|
|
23
|
-
const columnsPerRow = columnAddressToOffset(components.endColumn) - columnAddressToOffset(components.startColumn) + 1;
|
|
28
|
+
const components = (0, addressManipulation_ts_1.decomposeAddress)(address);
|
|
29
|
+
const columnsPerRow = (0, addressOffset_ts_1.columnAddressToOffset)(components.endColumn) - (0, addressOffset_ts_1.columnAddressToOffset)(components.startColumn) + 1;
|
|
24
30
|
if (overwriteRowsPerRequest !== null && overwriteRowsPerRequest < 1) {
|
|
25
|
-
throw new
|
|
31
|
+
throw new InvalidArgumentError_ts_1.default("overwriteRowsPerRequest must be greater than 0");
|
|
26
32
|
}
|
|
27
33
|
const rowsPerRequest = overwriteRowsPerRequest ?? Math.floor(maxCellsPerRequest / columnsPerRow);
|
|
28
|
-
const rangeStartRowOffset = rowAddressToOffset(components.startRow);
|
|
29
|
-
const rangeEndRowOffset = rowAddressToOffset(components.endRow);
|
|
34
|
+
const rangeStartRowOffset = (0, addressOffset_ts_1.rowAddressToOffset)(components.startRow);
|
|
35
|
+
const rangeEndRowOffset = (0, addressOffset_ts_1.rowAddressToOffset)(components.endRow);
|
|
30
36
|
for (let chunkRowOffset = rangeStartRowOffset; chunkRowOffset <= rangeEndRowOffset; chunkRowOffset = (chunkRowOffset + rowsPerRequest)) {
|
|
31
37
|
const requestStartRowOffset = chunkRowOffset;
|
|
32
38
|
const requestEndRowOffset = Math.min(chunkRowOffset + rowsPerRequest - 1, rangeEndRowOffset);
|
|
33
|
-
const chunkStartRow = offsetToRowAddress(requestStartRowOffset);
|
|
34
|
-
const chunkEndRow = offsetToRowAddress(requestEndRowOffset);
|
|
35
|
-
const requestAddress = composeAddress({
|
|
39
|
+
const chunkStartRow = (0, addressOffset_ts_1.offsetToRowAddress)(requestStartRowOffset);
|
|
40
|
+
const chunkEndRow = (0, addressOffset_ts_1.offsetToRowAddress)(requestEndRowOffset);
|
|
41
|
+
const requestAddress = (0, addressManipulation_ts_1.composeAddress)({
|
|
36
42
|
startRow: chunkStartRow,
|
|
37
43
|
endRow: chunkEndRow,
|
|
38
44
|
startColumn: components.startColumn,
|
|
39
45
|
endColumn: components.endColumn,
|
|
40
46
|
});
|
|
41
|
-
const requestRef = createWorkbookRangeRef(rangeRef, requestAddress);
|
|
42
|
-
const range = await
|
|
47
|
+
const requestRef = (0, workbookRange_ts_1.createWorkbookRangeRef)(rangeRef, requestAddress);
|
|
48
|
+
const range = await (0, getWorkbookWorksheetRange_ts_1.default)(requestRef);
|
|
43
49
|
for (const row of range.values) {
|
|
44
50
|
yield row;
|
|
45
51
|
}
|