microsoft-graph 2.2.2 → 2.2.4
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/errors/NotImplementedError.d.ts +4 -0
- package/dist/errors/NotImplementedError.d.ts.map +1 -0
- package/dist/errors/NotImplementedError.js +6 -0
- package/dist/graphApi.js +12 -6
- package/dist/models/Address.d.ts +8 -0
- package/dist/models/Address.d.ts.map +1 -0
- package/dist/{microsoftGraph/models/AccessToken.js → models/Address.js} +0 -0
- package/dist/models/Box.d.ts +5 -0
- package/dist/models/Box.d.ts.map +1 -0
- package/dist/{microsoftGraph/models/DriveId.js → models/Box.js} +0 -0
- package/dist/models/Cell.d.ts +4 -0
- package/dist/models/Cell.d.ts.map +1 -0
- package/dist/{microsoftGraph/models/DriveItemId.js → models/Cell.js} +0 -0
- package/dist/models/Column.d.ts +2 -0
- package/dist/models/Column.d.ts.map +1 -0
- package/dist/{microsoftGraph/models/DriveItemPath.js → models/Column.js} +0 -0
- package/dist/models/ColumnIndex.d.ts +4 -0
- package/dist/models/ColumnIndex.d.ts.map +1 -0
- package/dist/{microsoftGraph/models/DriveItemRef.js → models/ColumnIndex.js} +0 -0
- package/dist/models/RangeAddress.d.ts +7 -0
- package/dist/models/RangeAddress.d.ts.map +1 -0
- package/dist/{microsoftGraph/models/DriveRef.js → models/RangeAddress.js} +0 -0
- package/dist/models/Row.d.ts +2 -0
- package/dist/models/Row.d.ts.map +1 -0
- package/dist/{microsoftGraph/models/GraphOperation.js → models/Row.js} +0 -0
- package/dist/models/RowIndex.d.ts +4 -0
- package/dist/models/RowIndex.d.ts.map +1 -0
- package/dist/{microsoftGraph/models/GraphOptions.js → models/RowIndex.js} +0 -0
- package/dist/models/WorkbookRangeRef.d.ts +2 -2
- package/dist/models/WorkbookRangeRef.d.ts.map +1 -1
- package/dist/operations/workbookRange/clearWorkbookRange.test.js +13 -21
- package/dist/operations/workbookRange/deleteWorkbookRange.test.js +13 -17
- package/dist/operations/workbookRange/getWorkbookRangeFormat.d.ts +6 -0
- package/dist/operations/workbookRange/getWorkbookRangeFormat.d.ts.map +1 -0
- package/dist/operations/workbookRange/getWorkbookRangeFormat.js +21 -0
- package/dist/operations/workbookRange/getWorkbookRangeFormat.test.d.ts +2 -0
- package/dist/operations/workbookRange/getWorkbookRangeFormat.test.d.ts.map +1 -0
- package/dist/operations/workbookRange/getWorkbookRangeFormat.test.js +33 -0
- package/dist/operations/workbookRange/getWorkbookUsedRange.d.ts.map +1 -1
- package/dist/operations/workbookRange/getWorkbookUsedRange.js +4 -0
- package/dist/operations/workbookRange/getWorkbookUsedRange.test.js +6 -12
- package/dist/operations/workbookRange/getWorkbookVisibleRange.test.js +6 -12
- package/dist/operations/workbookRange/getWorkbookWorksheetRange.d.ts +6 -0
- package/dist/operations/workbookRange/getWorkbookWorksheetRange.d.ts.map +1 -0
- package/dist/operations/workbookRange/getWorkbookWorksheetRange.js +21 -0
- package/dist/operations/workbookRange/getWorkbookWorksheetRange.test.d.ts +2 -0
- package/dist/operations/workbookRange/getWorkbookWorksheetRange.test.d.ts.map +1 -0
- package/dist/operations/workbookRange/getWorkbookWorksheetRange.test.js +32 -0
- package/dist/operations/workbookRange/insertWorkbookCells.d.ts +2 -2
- package/dist/operations/workbookRange/insertWorkbookCells.d.ts.map +1 -1
- package/dist/operations/workbookRange/insertWorkbookCells.js +4 -0
- package/dist/operations/workbookRange/insertWorkbookCells.test.js +1 -2
- package/dist/operations/workbookRange/updateWorkbookRange.test.js +7 -13
- package/dist/operations/workbookTable/createWorkbookTable.test.js +3 -3
- package/dist/operations/workbookTable/getWorkbookTable.test.js +3 -3
- package/dist/operations/workbookTable/getWorkbookTableBodyRange.d.ts.map +1 -1
- package/dist/operations/workbookTable/getWorkbookTableBodyRange.js +4 -0
- package/dist/operations/workbookTable/getWorkbookTableBodyRange.test.js +3 -3
- package/dist/operations/workbookTable/getWorkbookTableHeaderRange.d.ts.map +1 -1
- package/dist/operations/workbookTable/getWorkbookTableHeaderRange.js +4 -0
- package/dist/operations/workbookTable/getWorkbookTableHeaderRange.test.js +3 -3
- package/dist/operations/workbookTable/listWorkbookTableColumns.test.js +3 -3
- package/dist/operations/workbookTable/listWorkbookTableRows.test.js +3 -3
- package/dist/operations/workbookTable/listWorkbookTables.test.js +4 -4
- package/dist/operations/workbookWorksheet/getWorkbookWorksheetRange.d.ts.map +1 -1
- package/dist/operations/workbookWorksheet/getWorkbookWorksheetRange.js +1 -0
- package/dist/operations/workbookWorksheet/updateWorkbookWorksheet.test.js +6 -3
- package/dist/services/address.d.ts +12 -1
- package/dist/services/address.d.ts.map +1 -1
- package/dist/services/address.js +134 -2
- package/dist/services/address.test.d.ts +2 -0
- package/dist/services/address.test.d.ts.map +1 -0
- package/dist/services/address.test.js +82 -0
- package/dist/services/httpStatus.d.ts +1 -0
- package/dist/services/httpStatus.d.ts.map +1 -1
- package/dist/services/httpStatus.js +3 -0
- package/dist/services/workbookRange.d.ts +2 -2
- package/dist/services/workbookRange.d.ts.map +1 -1
- package/dist/services/workbookRangeAddress.d.ts +2 -2
- package/dist/services/workbookRangeAddress.d.ts.map +1 -1
- package/dist/services/workbookWorksheet.d.ts +1 -0
- package/dist/services/workbookWorksheet.d.ts.map +1 -1
- package/dist/services/workbookWorksheet.js +3 -0
- package/dist/tasks/getRangeLastUsedCell.d.ts.map +1 -1
- package/dist/tasks/getRangeLastUsedCell.js +5 -5
- package/dist/tasks/getWorkbookTableVisibleBody.test.js +3 -0
- package/dist/tasks/setColumnHidden.d.ts +2 -1
- package/dist/tasks/setColumnHidden.d.ts.map +1 -1
- package/dist/tasks/setColumnHidden.js +1 -1
- package/dist/tasks/setRowHidden.d.ts +2 -1
- package/dist/tasks/setRowHidden.d.ts.map +1 -1
- package/dist/tasks/setRowHidden.js +1 -1
- package/dist/tasks/setWorkbookTableBodyVisibleRows.d.ts +4 -0
- package/dist/tasks/setWorkbookTableBodyVisibleRows.d.ts.map +1 -0
- package/dist/tasks/setWorkbookTableBodyVisibleRows.js +39 -0
- package/dist/tasks/setWorkbookTableBodyVisibleRows.test.d.ts +2 -0
- package/dist/tasks/setWorkbookTableBodyVisibleRows.test.d.ts.map +1 -0
- package/dist/tasks/setWorkbookTableBodyVisibleRows.test.js +83 -0
- package/package.json +49 -521
- package/vitest.config.ts +2 -2
- package/dist/docs/getItem.js +0 -11
- package/dist/microsoftGraph/errors/BadTemplateError.js +0 -6
- package/dist/microsoftGraph/errors/InvalidArgumentError.js +0 -6
- package/dist/microsoftGraph/errors/RequestFailedError.js +0 -6
- package/dist/microsoftGraph/graphApi.js +0 -49
- package/dist/microsoftGraph/helpers/openSite.js +0 -12
- package/dist/microsoftGraph/helpers/openWorkbook.js +0 -23
- package/dist/microsoftGraph/helpers/openWorksheet.js +0 -7
- package/dist/microsoftGraph/models/HostName.js +0 -1
- package/dist/microsoftGraph/models/Scope.js +0 -1
- package/dist/microsoftGraph/models/SiteId.js +0 -1
- package/dist/microsoftGraph/models/SiteName.js +0 -1
- package/dist/microsoftGraph/models/SiteRef.js +0 -1
- package/dist/microsoftGraph/models/WorkbookNamedRangeRef.js +0 -1
- package/dist/microsoftGraph/models/WorkbookRangeAddress.js +0 -1
- package/dist/microsoftGraph/models/WorkbookRangeName.js +0 -1
- package/dist/microsoftGraph/models/WorkbookRangeRef.js +0 -1
- package/dist/microsoftGraph/models/WorkbookRef.js +0 -1
- package/dist/microsoftGraph/models/WorkbookSessionId.js +0 -1
- package/dist/microsoftGraph/models/WorkbookWorksheetId.js +0 -1
- package/dist/microsoftGraph/models/WorkbookWorksheetRef.js +0 -1
- package/dist/microsoftGraph/models/regenerate-dtos.js +0 -68
- package/dist/microsoftGraph/operations/drive/createFolder.js +0 -17
- package/dist/microsoftGraph/operations/drive/listDrives.js +0 -11
- package/dist/microsoftGraph/operations/driveItem/copyDriveItem.js +0 -20
- package/dist/microsoftGraph/operations/driveItem/deleteDriveItem.js +0 -11
- package/dist/microsoftGraph/operations/driveItem/getDriveItem.js +0 -11
- package/dist/microsoftGraph/operations/driveItem/getDriveItemByPath.js +0 -11
- package/dist/microsoftGraph/operations/driveItem/listDriveItems.js +0 -11
- package/dist/microsoftGraph/operations/site/getSite.js +0 -11
- package/dist/microsoftGraph/operations/site/getSiteByName.js +0 -11
- package/dist/microsoftGraph/operations/site/listSites.js +0 -11
- package/dist/microsoftGraph/operations/site/searchSites.js +0 -11
- package/dist/microsoftGraph/operations/workbook/createWorkbook.js +0 -14
- package/dist/microsoftGraph/operations/workbook/deleteWorkbook.js +0 -5
- package/dist/microsoftGraph/operations/workbookRange/clearWorkbookRange.js +0 -16
- package/dist/microsoftGraph/operations/workbookRange/deleteWorkbookRange.js +0 -16
- package/dist/microsoftGraph/operations/workbookRange/getWorkbookNamedRange.js +0 -13
- package/dist/microsoftGraph/operations/workbookRange/getWorkbookRange.js +0 -13
- package/dist/microsoftGraph/operations/workbookRange/getWorkbookUsedRange.js +0 -13
- package/dist/microsoftGraph/operations/workbookRange/insertWorkbookCells.js +0 -16
- package/dist/microsoftGraph/operations/workbookRange/updateWorkbookNamedRange.js +0 -14
- package/dist/microsoftGraph/operations/workbookRange/updateWorkbookRange.js +0 -14
- package/dist/microsoftGraph/operations/workbookSession/closeWorkbookSession.js +0 -17
- package/dist/microsoftGraph/operations/workbookSession/createWorkbookSession.js +0 -15
- package/dist/microsoftGraph/operations/workbookSession/refreshWorkbookSession.js +0 -18
- package/dist/microsoftGraph/operations/workbookWorksheet/createWorkbookWorksheet.js +0 -16
- package/dist/microsoftGraph/operations/workbookWorksheet/deleteWorkbookWorksheet.js +0 -13
- package/dist/microsoftGraph/operations/workbookWorksheet/listWorkbookWorksheets.js +0 -13
- package/dist/microsoftGraph/operations/workbookWorksheet/updateWorkbookWorksheet.js +0 -14
- package/dist/microsoftGraph/services/accessToken.js +0 -12
- package/dist/microsoftGraph/services/configuration.js +0 -20
- package/dist/microsoftGraph/services/sharepointUrl.js +0 -23
- package/dist/microsoftGraph/services/stringCaseConversion.js +0 -3
- package/dist/microsoftGraph/services/templatedPaths.js +0 -19
- package/dist/models/WorkbookRangeAddress.d.ts +0 -10
- package/dist/models/WorkbookRangeAddress.d.ts.map +0 -1
- package/dist/models/WorkbookRangeAddress.js +0 -1
- package/dist/operations/driveItem/copyDriveItem.d.ts +0 -5
- package/dist/operations/driveItem/copyDriveItem.d.ts.map +0 -1
- package/dist/operations/driveItem/copyDriveItem.js +0 -21
- package/dist/operations/driveItem/copyDriveItem.test.d.ts +0 -2
- package/dist/operations/driveItem/copyDriveItem.test.d.ts.map +0 -1
- package/dist/operations/driveItem/copyDriveItem.test.js +0 -28
- package/dist/operations/user/userSendMail.test.d.ts +0 -2
- package/dist/operations/user/userSendMail.test.d.ts.map +0 -1
- package/dist/operations/user/userSendMail.test.js +0 -17
- package/dist/services/configuration.d.ts +0 -7
- package/dist/services/configuration.d.ts.map +0 -1
- package/dist/services/configuration.js +0 -20
- package/dist/tasks/endSessionAndDeleteWorkbook.d.ts +0 -3
- package/dist/tasks/endSessionAndDeleteWorkbook.d.ts.map +0 -1
- package/dist/tasks/endSessionAndDeleteWorkbook.js +0 -6
- package/dist/tasks/getWorkbookWorksheetRefByName.d.ts +0 -5
- package/dist/tasks/getWorkbookWorksheetRefByName.d.ts.map +0 -1
- package/dist/tasks/getWorkbookWorksheetRefByName.js +0 -10
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -12,7 +12,6 @@ import insertWorkbookCells from "./insertWorkbookCells.js";
|
|
|
12
12
|
import updateWorkbookRange from "./updateWorkbookRange.js";
|
|
13
13
|
describe("insertWorkbookCells", () => {
|
|
14
14
|
it("can insert cells in an existing workbook using sequential", { timeout: 20000 }, async () => {
|
|
15
|
-
const address = "A1:B2";
|
|
16
15
|
const initialValues = [
|
|
17
16
|
[1, 2],
|
|
18
17
|
[3, 4],
|
|
@@ -26,7 +25,7 @@ describe("insertWorkbookCells", () => {
|
|
|
26
25
|
const workbookPath = driveItemPath(workbookName);
|
|
27
26
|
const workbook = await createWorkbook(getDefaultDriveRef(), workbookPath);
|
|
28
27
|
const worksheetRef = createWorkbookWorksheetRef(workbook, defaultWorkbookWorksheetId);
|
|
29
|
-
const rangeRef = createWorkbookRangeRef(worksheetRef,
|
|
28
|
+
const rangeRef = createWorkbookRangeRef(worksheetRef, "A1:B2");
|
|
30
29
|
try {
|
|
31
30
|
await updateWorkbookRange(rangeRef, { values: initialValues });
|
|
32
31
|
await insertWorkbookCells(worksheetRef, "A1", "Down");
|
|
@@ -8,21 +8,20 @@ import { createWorkbookWorksheetRef, defaultWorkbookWorksheetId } from "../../se
|
|
|
8
8
|
import deleteDriveItemWithRetry from "../../tasks/deleteDriveItemWithRetry.js";
|
|
9
9
|
import calculateWorkbook from "../workbook/calculateWorkbook.js";
|
|
10
10
|
import createWorkbook from "../workbook/createWorkbook.js";
|
|
11
|
-
import getWorkbookWorksheetRange from "
|
|
11
|
+
import getWorkbookWorksheetRange from "./getWorkbookWorksheetRange.js";
|
|
12
12
|
import updateWorkbookRange from "./updateWorkbookRange.js";
|
|
13
|
+
const values = [
|
|
14
|
+
[1, 2],
|
|
15
|
+
[3, 4],
|
|
16
|
+
];
|
|
13
17
|
describe("updateWorkbookRange", () => {
|
|
14
18
|
it("can update a range in an existing workbook", async () => {
|
|
15
|
-
const address = "A1:B2";
|
|
16
|
-
const values = [
|
|
17
|
-
[1, 2],
|
|
18
|
-
[3, 4],
|
|
19
|
-
];
|
|
20
19
|
const workbookName = generateTempFileName("xlsx");
|
|
21
20
|
const workbookPath = driveItemPath(workbookName);
|
|
22
21
|
const driveRef = getDefaultDriveRef();
|
|
23
22
|
const workbook = await createWorkbook(driveRef, workbookPath);
|
|
24
23
|
const worksheetRef = createWorkbookWorksheetRef(workbook, defaultWorkbookWorksheetId);
|
|
25
|
-
const rangeRef = createWorkbookRangeRef(worksheetRef,
|
|
24
|
+
const rangeRef = createWorkbookRangeRef(worksheetRef, "A1:B2");
|
|
26
25
|
try {
|
|
27
26
|
await updateWorkbookRange(rangeRef, {
|
|
28
27
|
values: values,
|
|
@@ -36,17 +35,12 @@ describe("updateWorkbookRange", () => {
|
|
|
36
35
|
}
|
|
37
36
|
});
|
|
38
37
|
it("can update a range in an existing workbook sequential", async () => {
|
|
39
|
-
const address = "A1:B2";
|
|
40
|
-
const values = [
|
|
41
|
-
[1, 2],
|
|
42
|
-
[3, 4],
|
|
43
|
-
];
|
|
44
38
|
const workbookName = generateTempFileName("xlsx");
|
|
45
39
|
const workbookPath = driveItemPath(workbookName);
|
|
46
40
|
const driveRef = getDefaultDriveRef();
|
|
47
41
|
const workbook = await createWorkbook(driveRef, workbookPath);
|
|
48
42
|
const worksheetRef = createWorkbookWorksheetRef(workbook, defaultWorkbookWorksheetId);
|
|
49
|
-
const rangeRef = createWorkbookRangeRef(worksheetRef,
|
|
43
|
+
const rangeRef = createWorkbookRangeRef(worksheetRef, "A1:B2");
|
|
50
44
|
try {
|
|
51
45
|
const [_, __, updatedRange] = await sequential(updateWorkbookRange(rangeRef, {
|
|
52
46
|
values: values,
|
|
@@ -3,9 +3,9 @@ import { getDefaultDriveRef } from "../../services/drive.js";
|
|
|
3
3
|
import { driveItemPath } from "../../services/driveItem.js";
|
|
4
4
|
import { generateTempFileName } from "../../services/temporaryFiles.js";
|
|
5
5
|
import { createWorkbookRangeRef } from "../../services/workbookRange.js";
|
|
6
|
+
import { createDefaultWorkbookWorksheetRef } from "../../services/workbookWorksheet.js";
|
|
6
7
|
import deleteDriveItemWithRetry from "../../tasks/deleteDriveItemWithRetry.js";
|
|
7
8
|
import createWorkbook from "../workbook/createWorkbook.js";
|
|
8
|
-
import createWorkbookWorksheet from "../workbookWorksheet/createWorkbookWorksheet.js";
|
|
9
9
|
import createWorkbookTable from "./createWorkbookTable.js";
|
|
10
10
|
describe("createWorkbookTable", () => {
|
|
11
11
|
it("can create a new table in an existing worksheet", async () => {
|
|
@@ -13,8 +13,8 @@ describe("createWorkbookTable", () => {
|
|
|
13
13
|
const workbookPath = driveItemPath(workbookName);
|
|
14
14
|
const workbook = await createWorkbook(getDefaultDriveRef(), workbookPath);
|
|
15
15
|
try {
|
|
16
|
-
const
|
|
17
|
-
const rangeRef = createWorkbookRangeRef(
|
|
16
|
+
const worksheetRef = createDefaultWorkbookWorksheetRef(workbook);
|
|
17
|
+
const rangeRef = createWorkbookRangeRef(worksheetRef, "A1:D4");
|
|
18
18
|
const table = await createWorkbookTable(rangeRef, true);
|
|
19
19
|
expect(table.id).toBeTruthy();
|
|
20
20
|
}
|
|
@@ -3,10 +3,10 @@ import { getDefaultDriveRef } from "../../services/drive.js";
|
|
|
3
3
|
import { driveItemPath } from "../../services/driveItem.js";
|
|
4
4
|
import { generateTempFileName } from "../../services/temporaryFiles.js";
|
|
5
5
|
import { createWorkbookRangeRef } from "../../services/workbookRange.js";
|
|
6
|
+
import { createDefaultWorkbookWorksheetRef } from "../../services/workbookWorksheet.js";
|
|
6
7
|
import deleteDriveItemWithRetry from "../../tasks/deleteDriveItemWithRetry.js";
|
|
7
8
|
import calculateWorkbook from "../workbook/calculateWorkbook.js";
|
|
8
9
|
import createWorkbook from "../workbook/createWorkbook.js";
|
|
9
|
-
import createWorkbookWorksheet from "../workbookWorksheet/createWorkbookWorksheet.js";
|
|
10
10
|
import createWorkbookTable from "./createWorkbookTable.js";
|
|
11
11
|
import getWorkbookTable from "./getWorkbookTable.js";
|
|
12
12
|
describe("getWorkbookTable", () => {
|
|
@@ -16,8 +16,8 @@ describe("getWorkbookTable", () => {
|
|
|
16
16
|
const driveRef = getDefaultDriveRef();
|
|
17
17
|
const workbook = await createWorkbook(driveRef, workbookPath);
|
|
18
18
|
try {
|
|
19
|
-
const
|
|
20
|
-
const rangeRef = createWorkbookRangeRef(
|
|
19
|
+
const worksheetRef = createDefaultWorkbookWorksheetRef(workbook);
|
|
20
|
+
const rangeRef = createWorkbookRangeRef(worksheetRef, "A1:D4");
|
|
21
21
|
const table = await createWorkbookTable(rangeRef, true);
|
|
22
22
|
await calculateWorkbook(workbook);
|
|
23
23
|
const retrievedTable = await getWorkbookTable(table);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getWorkbookTableBodyRange.d.ts","sourceRoot":"","sources":["../../../src/operations/workbookTable/getWorkbookTableBodyRange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"getWorkbookTableBodyRange.d.ts","sourceRoot":"","sources":["../../../src/operations/workbookTable/getWorkbookTableBodyRange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAItE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAIzE,oHAAoH;AACpH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,cAAc,CAAC,aAAa,GAAG,gBAAgB,CAAC,CAsB9H"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import ProtocolError from "../../errors/ProtocolError.js";
|
|
1
2
|
import { operation } from "../../graphApi.js";
|
|
2
3
|
import { generatePath } from "../../services/templatedPaths.js";
|
|
3
4
|
import { createWorkbookRangeRef } from "../../services/workbookRange.js";
|
|
@@ -13,6 +14,9 @@ export default function getWorkbookTableBodyRange(tableRef) {
|
|
|
13
14
|
body: null,
|
|
14
15
|
responseTransform: (response) => {
|
|
15
16
|
const range = response;
|
|
17
|
+
if (!range.address) {
|
|
18
|
+
throw new ProtocolError("Invalid response: address is missing");
|
|
19
|
+
}
|
|
16
20
|
const rangeRef = createWorkbookRangeRef(tableRef, range.address);
|
|
17
21
|
return {
|
|
18
22
|
...range,
|
|
@@ -8,9 +8,9 @@ import deleteDriveItemWithRetry from "../../tasks/deleteDriveItemWithRetry.js";
|
|
|
8
8
|
import calculateWorkbook from "../workbook/calculateWorkbook.js";
|
|
9
9
|
import createWorkbook from "../workbook/createWorkbook.js";
|
|
10
10
|
import updateWorkbookRange from "../workbookRange/updateWorkbookRange.js";
|
|
11
|
-
import createWorkbookWorksheet from "../workbookWorksheet/createWorkbookWorksheet.js";
|
|
12
11
|
import createWorkbookTable from "./createWorkbookTable.js";
|
|
13
12
|
import getWorkbookTableBodyRange from "./getWorkbookTableBodyRange.js";
|
|
13
|
+
import { createDefaultWorkbookWorksheetRef } from "../../services/workbookWorksheet.js";
|
|
14
14
|
describe("getWorkbookTableBodyRange", () => {
|
|
15
15
|
it("can retrieve the data body range of a table", async () => {
|
|
16
16
|
const workbookName = generateTempFileName("xlsx");
|
|
@@ -18,8 +18,8 @@ describe("getWorkbookTableBodyRange", () => {
|
|
|
18
18
|
const driveRef = getDefaultDriveRef();
|
|
19
19
|
const workbook = await createWorkbook(driveRef, workbookPath);
|
|
20
20
|
try {
|
|
21
|
-
const
|
|
22
|
-
const rangeRef = createWorkbookRangeRef(
|
|
21
|
+
const worksheetRef = createDefaultWorkbookWorksheetRef(workbook);
|
|
22
|
+
const rangeRef = createWorkbookRangeRef(worksheetRef, "A1:D4");
|
|
23
23
|
const table = await createWorkbookTable(rangeRef, true);
|
|
24
24
|
await updateWorkbookRange(rangeRef, {
|
|
25
25
|
values: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getWorkbookTableHeaderRange.d.ts","sourceRoot":"","sources":["../../../src/operations/workbookTable/getWorkbookTableHeaderRange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"getWorkbookTableHeaderRange.d.ts","sourceRoot":"","sources":["../../../src/operations/workbookTable/getWorkbookTableHeaderRange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAItE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAIzE,sHAAsH;AACtH,MAAM,CAAC,OAAO,UAAU,2BAA2B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,cAAc,CAAC,aAAa,GAAG,gBAAgB,CAAC,CAsBhI"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import ProtocolError from "../../errors/ProtocolError.js";
|
|
1
2
|
import { operation } from "../../graphApi.js";
|
|
2
3
|
import { generatePath } from "../../services/templatedPaths.js";
|
|
3
4
|
import { createWorkbookRangeRef } from "../../services/workbookRange.js";
|
|
@@ -13,6 +14,9 @@ export default function getWorkbookTableHeaderRange(tableRef) {
|
|
|
13
14
|
body: null,
|
|
14
15
|
responseTransform: (response) => {
|
|
15
16
|
const range = response;
|
|
17
|
+
if (!range.address) {
|
|
18
|
+
throw new ProtocolError("Invalid response: address is missing");
|
|
19
|
+
}
|
|
16
20
|
const rangeRef = createWorkbookRangeRef(tableRef, range.address);
|
|
17
21
|
return {
|
|
18
22
|
...range,
|
|
@@ -4,11 +4,11 @@ import { getDefaultDriveRef } from "../../services/drive.js";
|
|
|
4
4
|
import { driveItemPath } from "../../services/driveItem.js";
|
|
5
5
|
import { generateTempFileName } from "../../services/temporaryFiles.js";
|
|
6
6
|
import { createWorkbookRangeRef } from "../../services/workbookRange.js";
|
|
7
|
+
import { createDefaultWorkbookWorksheetRef } from "../../services/workbookWorksheet.js";
|
|
7
8
|
import deleteDriveItemWithRetry from "../../tasks/deleteDriveItemWithRetry.js";
|
|
8
9
|
import calculateWorkbook from "../workbook/calculateWorkbook.js";
|
|
9
10
|
import createWorkbook from "../workbook/createWorkbook.js";
|
|
10
11
|
import updateWorkbookRange from "../workbookRange/updateWorkbookRange.js";
|
|
11
|
-
import createWorkbookWorksheet from "../workbookWorksheet/createWorkbookWorksheet.js";
|
|
12
12
|
import createWorkbookTable from "./createWorkbookTable.js";
|
|
13
13
|
import getWorkbookTableHeaderRange from "./getWorkbookTableHeaderRange.js";
|
|
14
14
|
describe("getWorkbookTableHeaderRange", () => {
|
|
@@ -18,8 +18,8 @@ describe("getWorkbookTableHeaderRange", () => {
|
|
|
18
18
|
const driveRef = getDefaultDriveRef();
|
|
19
19
|
const workbook = await createWorkbook(driveRef, workbookPath);
|
|
20
20
|
try {
|
|
21
|
-
const
|
|
22
|
-
const rangeRef = createWorkbookRangeRef(
|
|
21
|
+
const worksheetRef = createDefaultWorkbookWorksheetRef(workbook);
|
|
22
|
+
const rangeRef = createWorkbookRangeRef(worksheetRef, "A1:D4");
|
|
23
23
|
const table = await createWorkbookTable(rangeRef, true);
|
|
24
24
|
await updateWorkbookRange(rangeRef, {
|
|
25
25
|
values: [
|
|
@@ -3,10 +3,10 @@ import { getDefaultDriveRef } from "../../services/drive.js";
|
|
|
3
3
|
import { driveItemPath } from "../../services/driveItem.js";
|
|
4
4
|
import { generateTempFileName } from "../../services/temporaryFiles.js";
|
|
5
5
|
import { createWorkbookRangeRef } from "../../services/workbookRange.js";
|
|
6
|
+
import { createDefaultWorkbookWorksheetRef } from "../../services/workbookWorksheet.js";
|
|
6
7
|
import deleteDriveItemWithRetry from "../../tasks/deleteDriveItemWithRetry.js";
|
|
7
8
|
import calculateWorkbook from "../workbook/calculateWorkbook.js";
|
|
8
9
|
import createWorkbook from "../workbook/createWorkbook.js";
|
|
9
|
-
import createWorkbookWorksheet from "../workbookWorksheet/createWorkbookWorksheet.js";
|
|
10
10
|
import createWorkbookTable from "./createWorkbookTable.js";
|
|
11
11
|
import listWorkbookTableColumns from "./listWorkbookTableColumns.js";
|
|
12
12
|
describe("listWorkbookTableColumns", () => {
|
|
@@ -15,8 +15,8 @@ describe("listWorkbookTableColumns", () => {
|
|
|
15
15
|
const workbookPath = driveItemPath(workbookName);
|
|
16
16
|
const workbook = await createWorkbook(getDefaultDriveRef(), workbookPath);
|
|
17
17
|
try {
|
|
18
|
-
const
|
|
19
|
-
const rangeRef = createWorkbookRangeRef(
|
|
18
|
+
const worksheetRef = createDefaultWorkbookWorksheetRef(workbook);
|
|
19
|
+
const rangeRef = createWorkbookRangeRef(worksheetRef, "A1:D4");
|
|
20
20
|
const table = await createWorkbookTable(rangeRef, true);
|
|
21
21
|
await calculateWorkbook(workbook);
|
|
22
22
|
const columns = await listWorkbookTableColumns(table);
|
|
@@ -3,10 +3,10 @@ import { getDefaultDriveRef } from "../../services/drive.js";
|
|
|
3
3
|
import { driveItemPath } from "../../services/driveItem.js";
|
|
4
4
|
import { generateTempFileName } from "../../services/temporaryFiles.js";
|
|
5
5
|
import { createWorkbookRangeRef } from "../../services/workbookRange.js";
|
|
6
|
+
import { createDefaultWorkbookWorksheetRef } from "../../services/workbookWorksheet.js";
|
|
6
7
|
import deleteDriveItemWithRetry from "../../tasks/deleteDriveItemWithRetry.js";
|
|
7
8
|
import calculateWorkbook from "../workbook/calculateWorkbook.js";
|
|
8
9
|
import createWorkbook from "../workbook/createWorkbook.js";
|
|
9
|
-
import createWorkbookWorksheet from "../workbookWorksheet/createWorkbookWorksheet.js";
|
|
10
10
|
import createWorkbookTable from "./createWorkbookTable.js";
|
|
11
11
|
import listWorkbookTableRows from "./listWorkbookTableRows.js";
|
|
12
12
|
describe("listWorkbookTableRows", () => {
|
|
@@ -15,8 +15,8 @@ describe("listWorkbookTableRows", () => {
|
|
|
15
15
|
const workbookPath = driveItemPath(workbookName);
|
|
16
16
|
const workbook = await createWorkbook(getDefaultDriveRef(), workbookPath);
|
|
17
17
|
try {
|
|
18
|
-
const
|
|
19
|
-
const rangeRef = createWorkbookRangeRef(
|
|
18
|
+
const worksheetRef = createDefaultWorkbookWorksheetRef(workbook);
|
|
19
|
+
const rangeRef = createWorkbookRangeRef(worksheetRef, "A1:D4");
|
|
20
20
|
const table = await createWorkbookTable(rangeRef, true);
|
|
21
21
|
await calculateWorkbook(workbook);
|
|
22
22
|
const rows = await listWorkbookTableRows(table);
|
|
@@ -3,10 +3,10 @@ import { getDefaultDriveRef } from "../../services/drive.js";
|
|
|
3
3
|
import { driveItemPath } from "../../services/driveItem.js";
|
|
4
4
|
import { generateTempFileName } from "../../services/temporaryFiles.js";
|
|
5
5
|
import { createWorkbookRangeRef } from "../../services/workbookRange.js";
|
|
6
|
+
import { createDefaultWorkbookWorksheetRef } from "../../services/workbookWorksheet.js";
|
|
6
7
|
import deleteDriveItemWithRetry from "../../tasks/deleteDriveItemWithRetry.js";
|
|
7
8
|
import calculateWorkbook from "../workbook/calculateWorkbook.js";
|
|
8
9
|
import createWorkbook from "../workbook/createWorkbook.js";
|
|
9
|
-
import createWorkbookWorksheet from "../workbookWorksheet/createWorkbookWorksheet.js";
|
|
10
10
|
import createWorkbookTable from "./createWorkbookTable.js";
|
|
11
11
|
import listTables from "./listWorkbookTables.js";
|
|
12
12
|
describe("listWorkbookTables", () => {
|
|
@@ -16,11 +16,11 @@ describe("listWorkbookTables", () => {
|
|
|
16
16
|
const driveRef = getDefaultDriveRef();
|
|
17
17
|
const workbook = await createWorkbook(driveRef, workbookPath);
|
|
18
18
|
try {
|
|
19
|
-
const
|
|
20
|
-
const rangeRef = createWorkbookRangeRef(
|
|
19
|
+
const worksheetRef = createDefaultWorkbookWorksheetRef(workbook);
|
|
20
|
+
const rangeRef = createWorkbookRangeRef(worksheetRef, "A1:D4");
|
|
21
21
|
await createWorkbookTable(rangeRef, true);
|
|
22
22
|
await calculateWorkbook(workbook);
|
|
23
|
-
const tables = await listTables(
|
|
23
|
+
const tables = await listTables(worksheetRef);
|
|
24
24
|
expect(tables.length).toBeGreaterThan(0);
|
|
25
25
|
}
|
|
26
26
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getWorkbookWorksheetRange.d.ts","sourceRoot":"","sources":["../../../src/operations/workbookWorksheet/getWorkbookWorksheetRange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"getWorkbookWorksheetRange.d.ts","sourceRoot":"","sources":["../../../src/operations/workbookWorksheet/getWorkbookWorksheetRange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAKzE,iHAAiH;AACjH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,cAAc,CAAC,aAAa,GAAG,gBAAgB,CAAC,CAkB9H"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { operation } from "../../graphApi.js";
|
|
2
2
|
import { generatePath } from "../../services/templatedPaths.js";
|
|
3
|
+
// TODO: Move this to workbookRange
|
|
3
4
|
/** Fetch a range, including values and formatting. @see https://learn.microsoft.com/en-us/graph/api/range-get */
|
|
4
5
|
export default function getWorkbookWorksheetRange(rangeRef) {
|
|
5
6
|
return operation({
|
|
@@ -2,8 +2,10 @@ import { describe, expect, it } from "vitest";
|
|
|
2
2
|
import { getDefaultDriveRef } from "../../services/drive.js";
|
|
3
3
|
import { driveItemPath } from "../../services/driveItem.js";
|
|
4
4
|
import { generateTempFileName } from "../../services/temporaryFiles.js";
|
|
5
|
+
import { createDefaultWorkbookWorksheetRef } from "../../services/workbookWorksheet.js";
|
|
5
6
|
import deleteDriveItemWithRetry from "../../tasks/deleteDriveItemWithRetry.js";
|
|
6
7
|
import getWorkbookWorksheetByName from "../../tasks/getWorkbookWorksheetByName.js";
|
|
8
|
+
import calculateWorkbook from "../workbook/calculateWorkbook.js";
|
|
7
9
|
import createWorkbook from "../workbook/createWorkbook.js";
|
|
8
10
|
import createWorkbookWorksheet from "./createWorkbookWorksheet.js";
|
|
9
11
|
import updateWorkbookWorksheet from "./updateWorkbookWorksheet.js";
|
|
@@ -13,9 +15,10 @@ describe("updateWorkbookWorksheet", () => {
|
|
|
13
15
|
const workbookPath = driveItemPath(workbookName);
|
|
14
16
|
const workbook = await createWorkbook(getDefaultDriveRef(), workbookPath);
|
|
15
17
|
try {
|
|
16
|
-
const
|
|
18
|
+
const worksheetRef = createDefaultWorkbookWorksheetRef(workbook);
|
|
17
19
|
const newName = "UpdatedSheet";
|
|
18
|
-
await updateWorkbookWorksheet(
|
|
20
|
+
await updateWorkbookWorksheet(worksheetRef, { name: newName });
|
|
21
|
+
await calculateWorkbook(workbook);
|
|
19
22
|
const updatedWorksheet = await getWorkbookWorksheetByName(workbook, newName);
|
|
20
23
|
expect(updatedWorksheet.name).toBe(newName);
|
|
21
24
|
}
|
|
@@ -29,7 +32,7 @@ describe("updateWorkbookWorksheet", () => {
|
|
|
29
32
|
const workbook = await createWorkbook(getDefaultDriveRef(), workbookPath);
|
|
30
33
|
try {
|
|
31
34
|
const worksheetName = "Sheet2";
|
|
32
|
-
const worksheet = await createWorkbookWorksheet(workbook
|
|
35
|
+
const worksheet = await createWorkbookWorksheet(workbook); // Can't hide the single worksheet
|
|
33
36
|
await updateWorkbookWorksheet(worksheet, { visibility: "Hidden" });
|
|
34
37
|
const updatedWorksheet = await getWorkbookWorksheetByName(worksheet, worksheetName);
|
|
35
38
|
expect(updatedWorksheet.visibility).toBe("Hidden");
|
|
@@ -1,2 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
import type { Address, BoxRangeAddress, CellAddress, ColumnAddress, RowAddress } from "../models/Address.ts";
|
|
2
|
+
import type { ColumnIndex } from "../models/ColumnIndex.ts";
|
|
3
|
+
import type { RowIndex } from "../models/RowIndex.ts";
|
|
4
|
+
export declare function getAddressFirstCell(address: Address): CellAddress;
|
|
5
|
+
export declare function getAddressLastCell(address: Address): CellAddress;
|
|
6
|
+
export declare function cellAddressToIndexes(address: CellAddress): [RowIndex, ColumnIndex];
|
|
7
|
+
export declare function indexesToCellAddress(rowIndex: RowIndex, columnIndex: ColumnIndex): CellAddress;
|
|
8
|
+
export declare function indexesToBoxRangeAddress(startRowIndex: RowIndex, startColumnIndex: ColumnIndex, endRowIndex: RowIndex, endColumnIndex: ColumnIndex): BoxRangeAddress;
|
|
9
|
+
export declare function columnAddressToIndex(column: ColumnAddress): ColumnIndex;
|
|
10
|
+
export declare function indexToColumnAddress(index: ColumnIndex): ColumnAddress;
|
|
11
|
+
export declare function rowAddressToIndex(row: RowAddress): RowIndex;
|
|
12
|
+
export declare function indexToRowAddress(index: RowIndex): RowAddress;
|
|
2
13
|
//# sourceMappingURL=address.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../src/services/address.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../src/services/address.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC7G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AActD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CA8CjE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CA6ChE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAclF;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,GAAG,WAAW,CAE9F;AAED,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,GAAG,eAAe,CAEpK;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,CAMvE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,CAStE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,QAAQ,CAE3D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,CAE7D"}
|
package/dist/services/address.js
CHANGED
|
@@ -1,3 +1,135 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import InvalidArgumentError from "../errors/InvalidArgumentError.js";
|
|
2
|
+
const firstColumn = "A";
|
|
3
|
+
const lastColumn = "XFD";
|
|
4
|
+
const firstRow = "1";
|
|
5
|
+
const lastRow = "1048576";
|
|
6
|
+
const columnAddressPattern = /^(?<sheet>[A-Za-z0-9_]+!)?(?<column>[A-Z]+)$/;
|
|
7
|
+
const rowAddressPattern = /^(?<sheet>[A-Za-z0-9_]+!)?(?<row>\d+)$/;
|
|
8
|
+
const columnRangeAddressPattern = /^(?<sheet>[A-Za-z0-9_]+!)?(?<startColumn>[A-Z]+):(?<endColumn>[A-Z]+)$/;
|
|
9
|
+
const rowRangeAddressPattern = /^(?<sheet>[A-Za-z0-9_]+!)?(?<startRow>\d+):(?<endRow>\d+)$/;
|
|
10
|
+
const cellAddressPattern = /^(?<sheet>[A-Za-z0-9_]+!)?(?<column>[A-Z]+)(?<row>\d+)$/;
|
|
11
|
+
const boxRangeAddressPattern = /^(?<sheet>[A-Za-z0-9_]+!)?(?<startCell>[A-Z]+\d+):(?<endCell>[A-Z]+\d+)$/;
|
|
12
|
+
export function getAddressFirstCell(address) {
|
|
13
|
+
const columnAddressMatch = address.match(columnAddressPattern);
|
|
14
|
+
if (columnAddressMatch) {
|
|
15
|
+
// biome-ignore lint/complexity/useLiteralKeys:Regex named capture groups are used
|
|
16
|
+
const column = columnAddressMatch?.groups?.["column"] ?? "";
|
|
17
|
+
return `${column}${firstRow}`;
|
|
18
|
+
}
|
|
19
|
+
const rowAddressMatch = address.match(rowAddressPattern);
|
|
20
|
+
if (rowAddressMatch) {
|
|
21
|
+
// biome-ignore lint/complexity/useLiteralKeys:Regex named capture groups are used
|
|
22
|
+
const row = rowAddressMatch?.groups?.["row"] ?? "";
|
|
23
|
+
return `${firstColumn}${row}`;
|
|
24
|
+
}
|
|
25
|
+
const columnRangeMatch = address.match(columnRangeAddressPattern);
|
|
26
|
+
if (columnRangeMatch) {
|
|
27
|
+
// biome-ignore lint/complexity/useLiteralKeys:Regex named capture groups are used
|
|
28
|
+
const startColumn = columnRangeMatch?.groups?.["startColumn"] ?? "";
|
|
29
|
+
return `${startColumn}${firstRow}`;
|
|
30
|
+
}
|
|
31
|
+
const rowRangeMatch = address.match(rowRangeAddressPattern);
|
|
32
|
+
if (rowRangeMatch) {
|
|
33
|
+
// biome-ignore lint/complexity/useLiteralKeys:Regex named capture groups are used
|
|
34
|
+
const startRow = rowRangeMatch?.groups?.["startRow"] ?? "";
|
|
35
|
+
return `${firstColumn}${startRow}`;
|
|
36
|
+
}
|
|
37
|
+
const boxRangeMatch = address.match(boxRangeAddressPattern);
|
|
38
|
+
if (boxRangeMatch) {
|
|
39
|
+
// biome-ignore lint/complexity/useLiteralKeys:Regex named capture groups are used
|
|
40
|
+
const startCell = boxRangeMatch?.groups?.["startCell"];
|
|
41
|
+
return startCell;
|
|
42
|
+
}
|
|
43
|
+
const cellAddressMatch = address.match(cellAddressPattern);
|
|
44
|
+
if (cellAddressMatch) {
|
|
45
|
+
// biome-ignore lint/complexity/useLiteralKeys:Regex named capture groups are used
|
|
46
|
+
const column = cellAddressMatch?.groups?.["column"] ?? "";
|
|
47
|
+
// biome-ignore lint/complexity/useLiteralKeys:Regex named capture groups are used
|
|
48
|
+
const row = cellAddressMatch?.groups?.["row"] ?? "";
|
|
49
|
+
return (column + row);
|
|
50
|
+
}
|
|
51
|
+
throw new InvalidArgumentError(`Invalid address format '${address}'`);
|
|
52
|
+
}
|
|
53
|
+
export function getAddressLastCell(address) {
|
|
54
|
+
const columnAddressMatch = address.match(columnAddressPattern);
|
|
55
|
+
if (columnAddressMatch) {
|
|
56
|
+
// biome-ignore lint/complexity/useLiteralKeys:Regex named capture groups are used
|
|
57
|
+
const column = columnAddressMatch?.groups?.["column"] ?? "";
|
|
58
|
+
return `${column}${lastRow}`;
|
|
59
|
+
}
|
|
60
|
+
const rowAddressMatch = address.match(rowAddressPattern);
|
|
61
|
+
if (rowAddressMatch) {
|
|
62
|
+
// biome-ignore lint/complexity/useLiteralKeys:Regex named capture groups are used
|
|
63
|
+
const row = rowAddressMatch?.groups?.["row"] ?? "";
|
|
64
|
+
return `${lastColumn}${row}`;
|
|
65
|
+
}
|
|
66
|
+
const columnRangeMatch = address.match(columnRangeAddressPattern);
|
|
67
|
+
if (columnRangeMatch) {
|
|
68
|
+
// biome-ignore lint/complexity/useLiteralKeys:Regex named capture groups are used
|
|
69
|
+
const endColumn = columnRangeMatch?.groups?.["endColumn"] ?? "";
|
|
70
|
+
return `${endColumn}${lastRow}`;
|
|
71
|
+
}
|
|
72
|
+
const rowRangeMatch = address.match(rowRangeAddressPattern);
|
|
73
|
+
if (rowRangeMatch) {
|
|
74
|
+
// biome-ignore lint/complexity/useLiteralKeys:Regex named capture groups are used
|
|
75
|
+
const endRow = rowRangeMatch?.groups?.["endRow"] ?? "";
|
|
76
|
+
return `${lastColumn}${endRow}`;
|
|
77
|
+
}
|
|
78
|
+
const boxRangeMatch = address.match(boxRangeAddressPattern);
|
|
79
|
+
if (boxRangeMatch) {
|
|
80
|
+
// biome-ignore lint/complexity/useLiteralKeys:Regex named capture groups are used
|
|
81
|
+
const endCell = boxRangeMatch?.groups?.["endCell"];
|
|
82
|
+
return endCell;
|
|
83
|
+
}
|
|
84
|
+
const cellAddressMatch = address.match(cellAddressPattern);
|
|
85
|
+
if (cellAddressMatch) {
|
|
86
|
+
// biome-ignore lint/complexity/useLiteralKeys:Regex named capture groups are used
|
|
87
|
+
const column = cellAddressMatch?.groups?.["column"] ?? "";
|
|
88
|
+
// biome-ignore lint/complexity/useLiteralKeys:Regex named capture groups are used
|
|
89
|
+
const row = cellAddressMatch?.groups?.["row"] ?? "";
|
|
90
|
+
return (column + row);
|
|
91
|
+
}
|
|
92
|
+
throw new Error(`Invalid address format '${address}'`);
|
|
93
|
+
}
|
|
94
|
+
export function cellAddressToIndexes(address) {
|
|
95
|
+
const match = address.match(cellAddressPattern);
|
|
96
|
+
if (!match?.groups) {
|
|
97
|
+
throw new Error(`Invalid cell format '${address}', must match '${cellAddressPattern}`);
|
|
98
|
+
}
|
|
99
|
+
// biome-ignore lint/complexity/useLiteralKeys: Named capture groups are used
|
|
100
|
+
const column = match.groups["column"];
|
|
101
|
+
// biome-ignore lint/complexity/useLiteralKeys: Named capture groups are used
|
|
102
|
+
const row = match.groups["row"];
|
|
103
|
+
const rowIndex = rowAddressToIndex(row);
|
|
104
|
+
const columnIndex = columnAddressToIndex(column);
|
|
105
|
+
return [rowIndex, columnIndex];
|
|
106
|
+
}
|
|
107
|
+
export function indexesToCellAddress(rowIndex, columnIndex) {
|
|
108
|
+
return `${indexToColumnAddress(columnIndex)}${indexToRowAddress(rowIndex)}`;
|
|
109
|
+
}
|
|
110
|
+
export function indexesToBoxRangeAddress(startRowIndex, startColumnIndex, endRowIndex, endColumnIndex) {
|
|
111
|
+
return `${indexesToCellAddress(startRowIndex, startColumnIndex)}:${indexesToCellAddress(endRowIndex, endColumnIndex)}`;
|
|
112
|
+
}
|
|
113
|
+
export function columnAddressToIndex(column) {
|
|
114
|
+
let index = 0;
|
|
115
|
+
for (let i = 0; i < column.length; i++) {
|
|
116
|
+
index = index * 26 + (column.charCodeAt(i) - 65 + 1);
|
|
117
|
+
}
|
|
118
|
+
return (index - 1);
|
|
119
|
+
}
|
|
120
|
+
export function indexToColumnAddress(index) {
|
|
121
|
+
let result = "";
|
|
122
|
+
let currentIndex = index + 1;
|
|
123
|
+
while (currentIndex > 0) {
|
|
124
|
+
currentIndex -= 1;
|
|
125
|
+
result = String.fromCharCode((currentIndex % 26) + 65) + result;
|
|
126
|
+
currentIndex = Math.floor(currentIndex / 26);
|
|
127
|
+
}
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
export function rowAddressToIndex(row) {
|
|
131
|
+
return (Number.parseInt(row, 10) - 1);
|
|
132
|
+
}
|
|
133
|
+
export function indexToRowAddress(index) {
|
|
134
|
+
return (index + 1).toString();
|
|
3
135
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.test.d.ts","sourceRoot":"","sources":["../../src/services/address.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { cellAddressToIndexes, columnAddressToIndex, getAddressFirstCell, getAddressLastCell, indexesToCellAddress, indexToColumnAddress, indexToRowAddress, rowAddressToIndex } from "./address.js";
|
|
3
|
+
describe("indexesToCellAddress", () => {
|
|
4
|
+
it("should convert row and column indexes to an address", () => {
|
|
5
|
+
expect(indexesToCellAddress(0, 0)).toBe("A1");
|
|
6
|
+
expect(indexesToCellAddress(4, 2)).toBe("C5");
|
|
7
|
+
expect(indexesToCellAddress(10, 25)).toBe("Z11");
|
|
8
|
+
});
|
|
9
|
+
});
|
|
10
|
+
describe("columnAddressToIndex", () => {
|
|
11
|
+
it("should convert column letters to a zero-based index", () => {
|
|
12
|
+
expect(columnAddressToIndex("A")).toBe(0);
|
|
13
|
+
expect(columnAddressToIndex("Z")).toBe(25);
|
|
14
|
+
expect(columnAddressToIndex("AA")).toBe(26);
|
|
15
|
+
expect(columnAddressToIndex("AB")).toBe(27);
|
|
16
|
+
expect(columnAddressToIndex("ZZ")).toBe(701);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
describe("indexToColumnAddress", () => {
|
|
20
|
+
it("should convert a zero-based index to column letters", () => {
|
|
21
|
+
expect(indexToColumnAddress(0)).toBe("A");
|
|
22
|
+
expect(indexToColumnAddress(25)).toBe("Z");
|
|
23
|
+
expect(indexToColumnAddress(26)).toBe("AA");
|
|
24
|
+
expect(indexToColumnAddress(27)).toBe("AB");
|
|
25
|
+
expect(indexToColumnAddress(701)).toBe("ZZ");
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe("rowAddressToIndex", () => {
|
|
29
|
+
it("should convert a 1-based row to a 0-based index", () => {
|
|
30
|
+
expect(rowAddressToIndex("1")).toBe(0);
|
|
31
|
+
expect(rowAddressToIndex("5")).toBe(4);
|
|
32
|
+
expect(rowAddressToIndex("100")).toBe(99);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe("indexToRowAddress", () => {
|
|
36
|
+
it("should convert a 0-based index to a 1-based row", () => {
|
|
37
|
+
expect(indexToRowAddress(0)).toBe("1");
|
|
38
|
+
expect(indexToRowAddress(4)).toBe("5");
|
|
39
|
+
expect(indexToRowAddress(99)).toBe("100");
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
describe("cellAddressToIndexes", () => {
|
|
43
|
+
it("should convert a cell address to row and column indexes", () => {
|
|
44
|
+
expect(cellAddressToIndexes("A1")).toEqual([0, 0]);
|
|
45
|
+
expect(cellAddressToIndexes("C5")).toEqual([4, 2]);
|
|
46
|
+
expect(cellAddressToIndexes("Z11")).toEqual([10, 25]);
|
|
47
|
+
expect(cellAddressToIndexes("AA1")).toEqual([0, 26]);
|
|
48
|
+
expect(cellAddressToIndexes("ZZ100")).toEqual([99, 701]);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe("getAddressFirstCell", () => {
|
|
52
|
+
it("should return the start cell of a range address", () => {
|
|
53
|
+
expect(getAddressFirstCell("C3:D4")).toBe("C3");
|
|
54
|
+
expect(getAddressFirstCell("Sheet!A1:B2")).toBe("A1");
|
|
55
|
+
expect(getAddressFirstCell("E5")).toBe("E5"); // Single cell address
|
|
56
|
+
expect(getAddressFirstCell("Sheet!E5")).toBe("E5"); // Single cell address
|
|
57
|
+
expect(getAddressFirstCell("C")).toBe("C1"); // ColumnAddress
|
|
58
|
+
expect(getAddressFirstCell("Sheet!C")).toBe("C1"); // ColumnAddress
|
|
59
|
+
expect(getAddressFirstCell("3")).toBe("A3"); // RowAddress
|
|
60
|
+
expect(getAddressFirstCell("Sheet!3")).toBe("A3"); // RowAddress
|
|
61
|
+
expect(getAddressFirstCell("A:Z")).toBe("A1"); // ColumnRangeAddress
|
|
62
|
+
expect(getAddressFirstCell("Sheet!A:Z")).toBe("A1"); // ColumnRangeAddress
|
|
63
|
+
expect(getAddressFirstCell("1:10")).toBe("A1"); // RowRangeAddress
|
|
64
|
+
expect(getAddressFirstCell("Sheet!1:10")).toBe("A1"); // RowRangeAddress
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
describe("getAddressLastCell", () => {
|
|
68
|
+
it("should return the end cell of a range address", () => {
|
|
69
|
+
expect(getAddressLastCell("C3:D4")).toBe("D4");
|
|
70
|
+
expect(getAddressLastCell("Sheet!A1:B2")).toBe("B2");
|
|
71
|
+
expect(getAddressLastCell("E5")).toBe("E5"); // Single cell address
|
|
72
|
+
expect(getAddressLastCell("Sheet!E5")).toBe("E5"); // Single cell address
|
|
73
|
+
expect(getAddressLastCell("C")).toBe("C1048576"); // ColumnAddress
|
|
74
|
+
expect(getAddressLastCell("Sheet!C")).toBe("C1048576"); // ColumnAddress
|
|
75
|
+
expect(getAddressLastCell("3")).toBe("XFD3"); // RowAddress
|
|
76
|
+
expect(getAddressLastCell("Sheet!3")).toBe("XFD3"); // RowAddress
|
|
77
|
+
expect(getAddressLastCell("A:Z")).toBe("Z1048576"); // ColumnRangeAddress
|
|
78
|
+
expect(getAddressLastCell("Sheet!A:Z")).toBe("Z1048576"); // ColumnRangeAddress
|
|
79
|
+
expect(getAddressLastCell("1:10")).toBe("XFD10"); // RowRangeAddress
|
|
80
|
+
expect(getAddressLastCell("Sheet!1:10")).toBe("XFD10"); // RowRangeAddress
|
|
81
|
+
});
|
|
82
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpStatus.d.ts","sourceRoot":"","sources":["../../src/services/httpStatus.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D"}
|
|
1
|
+
{"version":3,"file":"httpStatus.d.ts","sourceRoot":"","sources":["../../src/services/httpStatus.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE5D"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Address } from "../models/Address.ts";
|
|
2
2
|
import type { WorkbookRangeRef } from "../models/WorkbookRangeRef.ts";
|
|
3
3
|
import type { WorkbookWorksheetRef } from "../models/WorkbookWorksheetRef.ts";
|
|
4
|
-
export declare function createWorkbookRangeRef(worksheetRef: WorkbookWorksheetRef, address:
|
|
4
|
+
export declare function createWorkbookRangeRef(worksheetRef: WorkbookWorksheetRef, address: Address): WorkbookRangeRef;
|
|
5
5
|
//# sourceMappingURL=workbookRange.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workbookRange.d.ts","sourceRoot":"","sources":["../../src/services/workbookRange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"workbookRange.d.ts","sourceRoot":"","sources":["../../src/services/workbookRange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,oBAAoB,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAU7G"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function createWorkbookRangeAddress(address:
|
|
1
|
+
import type { RangeAddress, RangeAddressUnderlying } from "../models/RangeAddress.ts";
|
|
2
|
+
export declare function createWorkbookRangeAddress(address: RangeAddressUnderlying): RangeAddress;
|
|
3
3
|
//# sourceMappingURL=workbookRangeAddress.d.ts.map
|