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.
Files changed (177) hide show
  1. package/dist/errors/NotImplementedError.d.ts +4 -0
  2. package/dist/errors/NotImplementedError.d.ts.map +1 -0
  3. package/dist/errors/NotImplementedError.js +6 -0
  4. package/dist/graphApi.js +12 -6
  5. package/dist/models/Address.d.ts +8 -0
  6. package/dist/models/Address.d.ts.map +1 -0
  7. package/dist/{microsoftGraph/models/AccessToken.js → models/Address.js} +0 -0
  8. package/dist/models/Box.d.ts +5 -0
  9. package/dist/models/Box.d.ts.map +1 -0
  10. package/dist/{microsoftGraph/models/DriveId.js → models/Box.js} +0 -0
  11. package/dist/models/Cell.d.ts +4 -0
  12. package/dist/models/Cell.d.ts.map +1 -0
  13. package/dist/{microsoftGraph/models/DriveItemId.js → models/Cell.js} +0 -0
  14. package/dist/models/Column.d.ts +2 -0
  15. package/dist/models/Column.d.ts.map +1 -0
  16. package/dist/{microsoftGraph/models/DriveItemPath.js → models/Column.js} +0 -0
  17. package/dist/models/ColumnIndex.d.ts +4 -0
  18. package/dist/models/ColumnIndex.d.ts.map +1 -0
  19. package/dist/{microsoftGraph/models/DriveItemRef.js → models/ColumnIndex.js} +0 -0
  20. package/dist/models/RangeAddress.d.ts +7 -0
  21. package/dist/models/RangeAddress.d.ts.map +1 -0
  22. package/dist/{microsoftGraph/models/DriveRef.js → models/RangeAddress.js} +0 -0
  23. package/dist/models/Row.d.ts +2 -0
  24. package/dist/models/Row.d.ts.map +1 -0
  25. package/dist/{microsoftGraph/models/GraphOperation.js → models/Row.js} +0 -0
  26. package/dist/models/RowIndex.d.ts +4 -0
  27. package/dist/models/RowIndex.d.ts.map +1 -0
  28. package/dist/{microsoftGraph/models/GraphOptions.js → models/RowIndex.js} +0 -0
  29. package/dist/models/WorkbookRangeRef.d.ts +2 -2
  30. package/dist/models/WorkbookRangeRef.d.ts.map +1 -1
  31. package/dist/operations/workbookRange/clearWorkbookRange.test.js +13 -21
  32. package/dist/operations/workbookRange/deleteWorkbookRange.test.js +13 -17
  33. package/dist/operations/workbookRange/getWorkbookRangeFormat.d.ts +6 -0
  34. package/dist/operations/workbookRange/getWorkbookRangeFormat.d.ts.map +1 -0
  35. package/dist/operations/workbookRange/getWorkbookRangeFormat.js +21 -0
  36. package/dist/operations/workbookRange/getWorkbookRangeFormat.test.d.ts +2 -0
  37. package/dist/operations/workbookRange/getWorkbookRangeFormat.test.d.ts.map +1 -0
  38. package/dist/operations/workbookRange/getWorkbookRangeFormat.test.js +33 -0
  39. package/dist/operations/workbookRange/getWorkbookUsedRange.d.ts.map +1 -1
  40. package/dist/operations/workbookRange/getWorkbookUsedRange.js +4 -0
  41. package/dist/operations/workbookRange/getWorkbookUsedRange.test.js +6 -12
  42. package/dist/operations/workbookRange/getWorkbookVisibleRange.test.js +6 -12
  43. package/dist/operations/workbookRange/getWorkbookWorksheetRange.d.ts +6 -0
  44. package/dist/operations/workbookRange/getWorkbookWorksheetRange.d.ts.map +1 -0
  45. package/dist/operations/workbookRange/getWorkbookWorksheetRange.js +21 -0
  46. package/dist/operations/workbookRange/getWorkbookWorksheetRange.test.d.ts +2 -0
  47. package/dist/operations/workbookRange/getWorkbookWorksheetRange.test.d.ts.map +1 -0
  48. package/dist/operations/workbookRange/getWorkbookWorksheetRange.test.js +32 -0
  49. package/dist/operations/workbookRange/insertWorkbookCells.d.ts +2 -2
  50. package/dist/operations/workbookRange/insertWorkbookCells.d.ts.map +1 -1
  51. package/dist/operations/workbookRange/insertWorkbookCells.js +4 -0
  52. package/dist/operations/workbookRange/insertWorkbookCells.test.js +1 -2
  53. package/dist/operations/workbookRange/updateWorkbookRange.test.js +7 -13
  54. package/dist/operations/workbookTable/createWorkbookTable.test.js +3 -3
  55. package/dist/operations/workbookTable/getWorkbookTable.test.js +3 -3
  56. package/dist/operations/workbookTable/getWorkbookTableBodyRange.d.ts.map +1 -1
  57. package/dist/operations/workbookTable/getWorkbookTableBodyRange.js +4 -0
  58. package/dist/operations/workbookTable/getWorkbookTableBodyRange.test.js +3 -3
  59. package/dist/operations/workbookTable/getWorkbookTableHeaderRange.d.ts.map +1 -1
  60. package/dist/operations/workbookTable/getWorkbookTableHeaderRange.js +4 -0
  61. package/dist/operations/workbookTable/getWorkbookTableHeaderRange.test.js +3 -3
  62. package/dist/operations/workbookTable/listWorkbookTableColumns.test.js +3 -3
  63. package/dist/operations/workbookTable/listWorkbookTableRows.test.js +3 -3
  64. package/dist/operations/workbookTable/listWorkbookTables.test.js +4 -4
  65. package/dist/operations/workbookWorksheet/getWorkbookWorksheetRange.d.ts.map +1 -1
  66. package/dist/operations/workbookWorksheet/getWorkbookWorksheetRange.js +1 -0
  67. package/dist/operations/workbookWorksheet/updateWorkbookWorksheet.test.js +6 -3
  68. package/dist/services/address.d.ts +12 -1
  69. package/dist/services/address.d.ts.map +1 -1
  70. package/dist/services/address.js +134 -2
  71. package/dist/services/address.test.d.ts +2 -0
  72. package/dist/services/address.test.d.ts.map +1 -0
  73. package/dist/services/address.test.js +82 -0
  74. package/dist/services/httpStatus.d.ts +1 -0
  75. package/dist/services/httpStatus.d.ts.map +1 -1
  76. package/dist/services/httpStatus.js +3 -0
  77. package/dist/services/workbookRange.d.ts +2 -2
  78. package/dist/services/workbookRange.d.ts.map +1 -1
  79. package/dist/services/workbookRangeAddress.d.ts +2 -2
  80. package/dist/services/workbookRangeAddress.d.ts.map +1 -1
  81. package/dist/services/workbookWorksheet.d.ts +1 -0
  82. package/dist/services/workbookWorksheet.d.ts.map +1 -1
  83. package/dist/services/workbookWorksheet.js +3 -0
  84. package/dist/tasks/getRangeLastUsedCell.d.ts.map +1 -1
  85. package/dist/tasks/getRangeLastUsedCell.js +5 -5
  86. package/dist/tasks/getWorkbookTableVisibleBody.test.js +3 -0
  87. package/dist/tasks/setColumnHidden.d.ts +2 -1
  88. package/dist/tasks/setColumnHidden.d.ts.map +1 -1
  89. package/dist/tasks/setColumnHidden.js +1 -1
  90. package/dist/tasks/setRowHidden.d.ts +2 -1
  91. package/dist/tasks/setRowHidden.d.ts.map +1 -1
  92. package/dist/tasks/setRowHidden.js +1 -1
  93. package/dist/tasks/setWorkbookTableBodyVisibleRows.d.ts +4 -0
  94. package/dist/tasks/setWorkbookTableBodyVisibleRows.d.ts.map +1 -0
  95. package/dist/tasks/setWorkbookTableBodyVisibleRows.js +39 -0
  96. package/dist/tasks/setWorkbookTableBodyVisibleRows.test.d.ts +2 -0
  97. package/dist/tasks/setWorkbookTableBodyVisibleRows.test.d.ts.map +1 -0
  98. package/dist/tasks/setWorkbookTableBodyVisibleRows.test.js +83 -0
  99. package/package.json +49 -521
  100. package/vitest.config.ts +2 -2
  101. package/dist/docs/getItem.js +0 -11
  102. package/dist/microsoftGraph/errors/BadTemplateError.js +0 -6
  103. package/dist/microsoftGraph/errors/InvalidArgumentError.js +0 -6
  104. package/dist/microsoftGraph/errors/RequestFailedError.js +0 -6
  105. package/dist/microsoftGraph/graphApi.js +0 -49
  106. package/dist/microsoftGraph/helpers/openSite.js +0 -12
  107. package/dist/microsoftGraph/helpers/openWorkbook.js +0 -23
  108. package/dist/microsoftGraph/helpers/openWorksheet.js +0 -7
  109. package/dist/microsoftGraph/models/HostName.js +0 -1
  110. package/dist/microsoftGraph/models/Scope.js +0 -1
  111. package/dist/microsoftGraph/models/SiteId.js +0 -1
  112. package/dist/microsoftGraph/models/SiteName.js +0 -1
  113. package/dist/microsoftGraph/models/SiteRef.js +0 -1
  114. package/dist/microsoftGraph/models/WorkbookNamedRangeRef.js +0 -1
  115. package/dist/microsoftGraph/models/WorkbookRangeAddress.js +0 -1
  116. package/dist/microsoftGraph/models/WorkbookRangeName.js +0 -1
  117. package/dist/microsoftGraph/models/WorkbookRangeRef.js +0 -1
  118. package/dist/microsoftGraph/models/WorkbookRef.js +0 -1
  119. package/dist/microsoftGraph/models/WorkbookSessionId.js +0 -1
  120. package/dist/microsoftGraph/models/WorkbookWorksheetId.js +0 -1
  121. package/dist/microsoftGraph/models/WorkbookWorksheetRef.js +0 -1
  122. package/dist/microsoftGraph/models/regenerate-dtos.js +0 -68
  123. package/dist/microsoftGraph/operations/drive/createFolder.js +0 -17
  124. package/dist/microsoftGraph/operations/drive/listDrives.js +0 -11
  125. package/dist/microsoftGraph/operations/driveItem/copyDriveItem.js +0 -20
  126. package/dist/microsoftGraph/operations/driveItem/deleteDriveItem.js +0 -11
  127. package/dist/microsoftGraph/operations/driveItem/getDriveItem.js +0 -11
  128. package/dist/microsoftGraph/operations/driveItem/getDriveItemByPath.js +0 -11
  129. package/dist/microsoftGraph/operations/driveItem/listDriveItems.js +0 -11
  130. package/dist/microsoftGraph/operations/site/getSite.js +0 -11
  131. package/dist/microsoftGraph/operations/site/getSiteByName.js +0 -11
  132. package/dist/microsoftGraph/operations/site/listSites.js +0 -11
  133. package/dist/microsoftGraph/operations/site/searchSites.js +0 -11
  134. package/dist/microsoftGraph/operations/workbook/createWorkbook.js +0 -14
  135. package/dist/microsoftGraph/operations/workbook/deleteWorkbook.js +0 -5
  136. package/dist/microsoftGraph/operations/workbookRange/clearWorkbookRange.js +0 -16
  137. package/dist/microsoftGraph/operations/workbookRange/deleteWorkbookRange.js +0 -16
  138. package/dist/microsoftGraph/operations/workbookRange/getWorkbookNamedRange.js +0 -13
  139. package/dist/microsoftGraph/operations/workbookRange/getWorkbookRange.js +0 -13
  140. package/dist/microsoftGraph/operations/workbookRange/getWorkbookUsedRange.js +0 -13
  141. package/dist/microsoftGraph/operations/workbookRange/insertWorkbookCells.js +0 -16
  142. package/dist/microsoftGraph/operations/workbookRange/updateWorkbookNamedRange.js +0 -14
  143. package/dist/microsoftGraph/operations/workbookRange/updateWorkbookRange.js +0 -14
  144. package/dist/microsoftGraph/operations/workbookSession/closeWorkbookSession.js +0 -17
  145. package/dist/microsoftGraph/operations/workbookSession/createWorkbookSession.js +0 -15
  146. package/dist/microsoftGraph/operations/workbookSession/refreshWorkbookSession.js +0 -18
  147. package/dist/microsoftGraph/operations/workbookWorksheet/createWorkbookWorksheet.js +0 -16
  148. package/dist/microsoftGraph/operations/workbookWorksheet/deleteWorkbookWorksheet.js +0 -13
  149. package/dist/microsoftGraph/operations/workbookWorksheet/listWorkbookWorksheets.js +0 -13
  150. package/dist/microsoftGraph/operations/workbookWorksheet/updateWorkbookWorksheet.js +0 -14
  151. package/dist/microsoftGraph/services/accessToken.js +0 -12
  152. package/dist/microsoftGraph/services/configuration.js +0 -20
  153. package/dist/microsoftGraph/services/sharepointUrl.js +0 -23
  154. package/dist/microsoftGraph/services/stringCaseConversion.js +0 -3
  155. package/dist/microsoftGraph/services/templatedPaths.js +0 -19
  156. package/dist/models/WorkbookRangeAddress.d.ts +0 -10
  157. package/dist/models/WorkbookRangeAddress.d.ts.map +0 -1
  158. package/dist/models/WorkbookRangeAddress.js +0 -1
  159. package/dist/operations/driveItem/copyDriveItem.d.ts +0 -5
  160. package/dist/operations/driveItem/copyDriveItem.d.ts.map +0 -1
  161. package/dist/operations/driveItem/copyDriveItem.js +0 -21
  162. package/dist/operations/driveItem/copyDriveItem.test.d.ts +0 -2
  163. package/dist/operations/driveItem/copyDriveItem.test.d.ts.map +0 -1
  164. package/dist/operations/driveItem/copyDriveItem.test.js +0 -28
  165. package/dist/operations/user/userSendMail.test.d.ts +0 -2
  166. package/dist/operations/user/userSendMail.test.d.ts.map +0 -1
  167. package/dist/operations/user/userSendMail.test.js +0 -17
  168. package/dist/services/configuration.d.ts +0 -7
  169. package/dist/services/configuration.d.ts.map +0 -1
  170. package/dist/services/configuration.js +0 -20
  171. package/dist/tasks/endSessionAndDeleteWorkbook.d.ts +0 -3
  172. package/dist/tasks/endSessionAndDeleteWorkbook.d.ts.map +0 -1
  173. package/dist/tasks/endSessionAndDeleteWorkbook.js +0 -6
  174. package/dist/tasks/getWorkbookWorksheetRefByName.d.ts +0 -5
  175. package/dist/tasks/getWorkbookWorksheetRefByName.d.ts.map +0 -1
  176. package/dist/tasks/getWorkbookWorksheetRefByName.js +0 -10
  177. 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, address);
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 "../workbookWorksheet/getWorkbookWorksheetRange.js";
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, address);
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, address);
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 worksheet = await createWorkbookWorksheet(workbook);
17
- const rangeRef = createWorkbookRangeRef(worksheet, "A1:D4");
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 worksheet = await createWorkbookWorksheet(workbook);
20
- const rangeRef = createWorkbookRangeRef(worksheet, "A1:D4");
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;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,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,CAmB9H"}
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 worksheet = await createWorkbookWorksheet(workbook);
22
- const rangeRef = createWorkbookRangeRef(worksheet, "A1:D4");
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;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,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,CAmBhI"}
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 worksheet = await createWorkbookWorksheet(workbook);
22
- const rangeRef = createWorkbookRangeRef(worksheet, "A1:D4");
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 worksheet = await createWorkbookWorksheet(workbook);
19
- const rangeRef = createWorkbookRangeRef(worksheet, "A1:D4");
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 worksheet = await createWorkbookWorksheet(workbook);
19
- const rangeRef = createWorkbookRangeRef(worksheet, "A1:D4");
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 worksheet = await createWorkbookWorksheet(workbook);
20
- const rangeRef = createWorkbookRangeRef(worksheet, "A1:D4");
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(worksheet);
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;AAGzE,iHAAiH;AACjH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,cAAc,CAAC,aAAa,GAAG,gBAAgB,CAAC,CAkB9H"}
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 worksheet = await createWorkbookWorksheet(workbook);
18
+ const worksheetRef = createDefaultWorkbookWorksheetRef(workbook);
17
19
  const newName = "UpdatedSheet";
18
- await updateWorkbookWorksheet(worksheet, { name: newName });
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, worksheetName);
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
- export declare function indexesToAddress(row: number, col: number): string;
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":"AAAA,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjE"}
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"}
@@ -1,3 +1,135 @@
1
- export function indexesToAddress(row, col) {
2
- return `${String.fromCharCode(65 + col)}${row + 1}`;
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=address.test.d.ts.map
@@ -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,3 +1,4 @@
1
1
  export declare function isHttpOk(status: number): boolean;
2
2
  export declare function isHttpTooManyRequests(status: number): boolean;
3
+ export declare function isServiceUnavailable(status: number): boolean;
3
4
  //# sourceMappingURL=httpStatus.d.ts.map
@@ -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"}
@@ -4,3 +4,6 @@ export function isHttpOk(status) {
4
4
  export function isHttpTooManyRequests(status) {
5
5
  return status === 429;
6
6
  }
7
+ export function isServiceUnavailable(status) {
8
+ return status === 503;
9
+ }
@@ -1,5 +1,5 @@
1
- import type { WorkbookRangeAddressUnderlying } from "../models/WorkbookRangeAddress.ts";
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: WorkbookRangeAddressUnderlying): WorkbookRangeRef;
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,EAAwB,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAC9G,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,8BAA8B,GAAG,gBAAgB,CAUpI"}
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 { WorkbookRangeAddress, WorkbookRangeAddressUnderlying } from "../models/WorkbookRangeAddress.ts";
2
- export declare function createWorkbookRangeAddress(address: WorkbookRangeAddressUnderlying): WorkbookRangeAddress;
1
+ import type { RangeAddress, RangeAddressUnderlying } from "../models/RangeAddress.ts";
2
+ export declare function createWorkbookRangeAddress(address: RangeAddressUnderlying): RangeAddress;
3
3
  //# sourceMappingURL=workbookRangeAddress.d.ts.map