microsoft-graph 2.19.0 → 2.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/models/Cell.d.ts +2 -1
- package/dist/cjs/models/Cell.d.ts.map +1 -1
- package/dist/cjs/models/CellText.d.ts +4 -0
- package/dist/cjs/models/CellText.d.ts.map +1 -0
- package/dist/cjs/models/ColumnName.d.ts +3 -0
- package/dist/cjs/models/ColumnName.d.ts.map +1 -1
- package/dist/cjs/models/ColumnOffset.d.ts +3 -0
- package/dist/cjs/models/ColumnOffset.d.ts.map +1 -1
- package/dist/cjs/models/Row.d.ts +3 -0
- package/dist/cjs/models/Row.d.ts.map +1 -0
- package/dist/cjs/models/RowNumber.d.ts +3 -0
- package/dist/cjs/models/RowNumber.d.ts.map +1 -1
- package/dist/cjs/models/RowOffset.d.ts +3 -0
- package/dist/cjs/models/RowOffset.d.ts.map +1 -1
- package/dist/cjs/services/batch.d.ts +8 -0
- package/dist/cjs/services/batch.d.ts.map +1 -0
- package/dist/cjs/services/batch.js +10 -0
- package/dist/cjs/services/cellText.d.ts +6 -0
- package/dist/cjs/services/cellText.d.ts.map +1 -0
- package/dist/cjs/services/cellText.js +9 -0
- package/dist/cjs/services/rangeManipulation.d.ts +16 -7
- package/dist/cjs/services/rangeManipulation.d.ts.map +1 -1
- package/dist/cjs/services/rangeManipulation.js +35 -4
- package/dist/cjs/tasks/iterateWorkbookRange.d.ts +3 -2
- package/dist/cjs/tasks/iterateWorkbookRange.d.ts.map +1 -1
- package/dist/cjs/tasks/iterateWorkbookRange.js +3 -8
- package/dist/cjs/tasks/iterateWorkbookRangeValues.d.ts +3 -3
- package/dist/cjs/tasks/iterateWorkbookRangeValues.d.ts.map +1 -1
- package/dist/cjs/tasks/iterateWorkbookRangeValues.js +3 -9
- package/dist/cjs/tasks/readWorkbookRows.d.ts +11 -0
- package/dist/cjs/tasks/readWorkbookRows.d.ts.map +1 -0
- package/dist/cjs/tasks/readWorkbookRows.js +57 -0
- package/dist/cjs/tasks/setWorkbookRangeValues.d.ts +2 -2
- package/dist/cjs/tasks/setWorkbookRangeValues.d.ts.map +1 -1
- package/dist/cjs/tasks/writeWorkbookRows.d.ts +10 -0
- package/dist/cjs/tasks/writeWorkbookRows.d.ts.map +1 -0
- package/dist/cjs/tasks/writeWorkbookRows.js +59 -0
- package/dist/esm/models/Cell.d.ts +2 -1
- package/dist/esm/models/Cell.d.ts.map +1 -1
- package/dist/esm/models/CellText.d.ts +4 -0
- package/dist/esm/models/CellText.d.ts.map +1 -0
- package/dist/esm/models/ColumnName.d.ts +3 -0
- package/dist/esm/models/ColumnName.d.ts.map +1 -1
- package/dist/esm/models/ColumnOffset.d.ts +3 -0
- package/dist/esm/models/ColumnOffset.d.ts.map +1 -1
- package/dist/esm/models/Row.d.ts +3 -0
- package/dist/esm/models/Row.d.ts.map +1 -0
- package/dist/esm/models/RowNumber.d.ts +3 -0
- package/dist/esm/models/RowNumber.d.ts.map +1 -1
- package/dist/esm/models/RowOffset.d.ts +3 -0
- package/dist/esm/models/RowOffset.d.ts.map +1 -1
- package/dist/esm/services/batch.d.ts +8 -0
- package/dist/esm/services/batch.d.ts.map +1 -0
- package/dist/esm/services/batch.js +7 -0
- package/dist/esm/services/cellText.d.ts +6 -0
- package/dist/esm/services/cellText.d.ts.map +1 -0
- package/dist/esm/services/cellText.js +6 -0
- package/dist/esm/services/rangeManipulation.d.ts +16 -7
- package/dist/esm/services/rangeManipulation.d.ts.map +1 -1
- package/dist/esm/services/rangeManipulation.js +34 -4
- package/dist/esm/tasks/iterateWorkbookRange.d.ts +3 -2
- package/dist/esm/tasks/iterateWorkbookRange.d.ts.map +1 -1
- package/dist/esm/tasks/iterateWorkbookRange.js +2 -7
- package/dist/esm/tasks/iterateWorkbookRangeValues.d.ts +3 -3
- package/dist/esm/tasks/iterateWorkbookRangeValues.d.ts.map +1 -1
- package/dist/esm/tasks/iterateWorkbookRangeValues.js +2 -8
- package/dist/esm/tasks/readWorkbookRows.d.ts +11 -0
- package/dist/esm/tasks/readWorkbookRows.d.ts.map +1 -0
- package/dist/esm/tasks/readWorkbookRows.js +51 -0
- package/dist/esm/tasks/setWorkbookRangeValues.d.ts +2 -2
- package/dist/esm/tasks/setWorkbookRangeValues.d.ts.map +1 -1
- package/dist/esm/tasks/writeWorkbookRows.d.ts +10 -0
- package/dist/esm/tasks/writeWorkbookRows.d.ts.map +1 -0
- package/dist/esm/tasks/writeWorkbookRows.js +53 -0
- package/package.json +146 -46
- package/dist/cjs/models/CellRangeValues.d.ts +0 -3
- package/dist/cjs/models/CellRangeValues.d.ts.map +0 -1
- package/dist/cjs/models/RowRangeValues.d.ts +0 -3
- package/dist/cjs/models/RowRangeValues.d.ts.map +0 -1
- package/dist/esm/models/CellRangeValues.d.ts +0 -3
- package/dist/esm/models/CellRangeValues.d.ts.map +0 -1
- package/dist/esm/models/RowRangeValues.d.ts +0 -3
- package/dist/esm/models/RowRangeValues.d.ts.map +0 -1
- /package/dist/cjs/models/{CellRangeValues.js → CellText.js} +0 -0
- /package/dist/cjs/models/{RowRangeValues.js → Row.js} +0 -0
- /package/dist/esm/models/{CellRangeValues.js → CellText.js} +0 -0
- /package/dist/esm/models/{RowRangeValues.js → Row.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowNumber.d.ts","sourceRoot":"","sources":["../../../src/models/RowNumber.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAChC,OAAO,EAAE,WAAW,CAAC;CACrB,CAAC"}
|
|
1
|
+
{"version":3,"file":"RowNumber.d.ts","sourceRoot":"","sources":["../../../src/models/RowNumber.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAChC,OAAO,EAAE,WAAW,CAAC;CACrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowOffset.d.ts","sourceRoot":"","sources":["../../../src/models/RowOffset.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAChC,OAAO,EAAE,WAAW,CAAC;CACrB,CAAC"}
|
|
1
|
+
{"version":3,"file":"RowOffset.d.ts","sourceRoot":"","sources":["../../../src/models/RowOffset.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAChC,OAAO,EAAE,WAAW,CAAC;CACrB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maximum number of cells that can be retrieved in a single request, unless overwritten.
|
|
3
|
+
* @remarks The Microsoft Graph API documentation does not specify a fixed maximum number of cells that can be retrieved in a single request.
|
|
4
|
+
* However, it mentions that large ranges may result in errors due to resource constraints. Additionally, discussions in developer
|
|
5
|
+
* communities suggest that requests exceeding 10,000 cells may encounter issues.
|
|
6
|
+
*/
|
|
7
|
+
export declare const maxCellsPerRequest = 10000;
|
|
8
|
+
//# sourceMappingURL=batch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../src/services/batch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,QAAQ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maximum number of cells that can be retrieved in a single request, unless overwritten.
|
|
3
|
+
* @remarks The Microsoft Graph API documentation does not specify a fixed maximum number of cells that can be retrieved in a single request.
|
|
4
|
+
* However, it mentions that large ranges may result in errors due to resource constraints. Additionally, discussions in developer
|
|
5
|
+
* communities suggest that requests exceeding 10,000 cells may encounter issues.
|
|
6
|
+
*/
|
|
7
|
+
export const maxCellsPerRequest = 10000;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cellText.d.ts","sourceRoot":"","sources":["../../../src/services/cellText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAEjD"}
|
|
@@ -1,33 +1,42 @@
|
|
|
1
1
|
import type { Address } from "../models/Address.ts";
|
|
2
|
-
import type {
|
|
2
|
+
import type { CellValue } from "../models/CellValue.ts";
|
|
3
3
|
import type { ColumnOffset } from "../models/ColumnOffset.ts";
|
|
4
4
|
import type { RowOffset } from "../models/RowOffset.ts";
|
|
5
5
|
/**
|
|
6
6
|
* Converts a 2D array of cell values into range address in the upper left.
|
|
7
7
|
*
|
|
8
|
-
* @param {
|
|
8
|
+
* @param {CellValue[][]} values - A 2D array representing cell values.
|
|
9
9
|
* @param {RowOffset} [rowOffset=0] - The row offset to apply to the range address.
|
|
10
10
|
* @param {ColumnOffset} [columnOffset=0] - The column offset to apply to the range address.
|
|
11
11
|
* @returns {Address} The default cell range address (e.g., "A1:C3").
|
|
12
12
|
* @throws {InvalidArgumentError} If rows have inconsistent column counts.
|
|
13
13
|
*/
|
|
14
|
-
export declare function inferRangeAddress(values:
|
|
14
|
+
export declare function inferRangeAddress(values: CellValue[][], rowOffset?: RowOffset, columnOffset?: ColumnOffset): Address;
|
|
15
|
+
/**
|
|
16
|
+
* Converts a 2D array of cell values into a row address in the upper left.
|
|
17
|
+
*
|
|
18
|
+
* @param {CellValue[]} row - A single row of cell values.
|
|
19
|
+
* @param {RowOffset} [rowOffset=0] - The row offset to apply to the address.
|
|
20
|
+
* @param {ColumnOffset} [columnOffset=0] - The column offset to apply to the address.
|
|
21
|
+
* @returns {Address} The default cell range address for the row (e.g., "A1").
|
|
22
|
+
*/
|
|
23
|
+
export declare function inferRowAddress(row: CellValue[], rowOffset?: RowOffset, columnOffset?: ColumnOffset): Address;
|
|
15
24
|
/**
|
|
16
25
|
* Converts a 2D array of cell values into an array of objects.
|
|
17
26
|
* Assumes the first row is a header and uses it as keys for the objects.
|
|
18
27
|
*
|
|
19
|
-
* @param {
|
|
28
|
+
* @param {CellValue[][]} values - A 2D array representing cell values.
|
|
20
29
|
* @returns {unknown[]} An array of objects where each object represents a row.
|
|
21
30
|
* @throws {InvalidArgumentError} If rows have inconsistent column counts or no header row is present.
|
|
22
31
|
*/
|
|
23
|
-
export declare function inferRangeObject(values:
|
|
32
|
+
export declare function inferRangeObject(values: CellValue[][]): unknown[];
|
|
24
33
|
/**
|
|
25
34
|
* Converts an array of objects into a 2D array of cell values.
|
|
26
35
|
* The first row of the 2D array contains the keys as headers.
|
|
27
36
|
*
|
|
28
37
|
* @param {unknown[]} objs - An array of objects to convert.
|
|
29
38
|
* @param {string[] | null} header - Optional header row. If not provided, it will be inferred from the object keys.
|
|
30
|
-
* @returns {
|
|
39
|
+
* @returns {CellValue[][]} A 2D array where the first row is the header and subsequent rows are the object values.
|
|
31
40
|
*/
|
|
32
|
-
export declare function inferObjectRange(objs: unknown[], header?: string[] | null):
|
|
41
|
+
export declare function inferObjectRange(objs: unknown[], header?: string[] | null): CellValue[][];
|
|
33
42
|
//# sourceMappingURL=rangeManipulation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rangeManipulation.d.ts","sourceRoot":"","sources":["../../../src/services/rangeManipulation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"rangeManipulation.d.ts","sourceRoot":"","sources":["../../../src/services/rangeManipulation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGxD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAE,SAA0B,EAAE,YAAY,GAAE,YAAgC,GAAG,OAAO,CA8BvJ;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,SAAS,GAAE,SAA0B,EAAE,YAAY,GAAE,YAAgC,GAAG,OAAO,CAiBhJ;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,CAoBjE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,MAAM,GAAE,MAAM,EAAE,GAAG,IAAW,GAAG,SAAS,EAAE,EAAE,CAS/F"}
|
|
@@ -3,7 +3,7 @@ import { cartesianToAddress } from "./cartesianAddress.js";
|
|
|
3
3
|
/**
|
|
4
4
|
* Converts a 2D array of cell values into range address in the upper left.
|
|
5
5
|
*
|
|
6
|
-
* @param {
|
|
6
|
+
* @param {CellValue[][]} values - A 2D array representing cell values.
|
|
7
7
|
* @param {RowOffset} [rowOffset=0] - The row offset to apply to the range address.
|
|
8
8
|
* @param {ColumnOffset} [columnOffset=0] - The column offset to apply to the range address.
|
|
9
9
|
* @returns {Address} The default cell range address (e.g., "A1:C3").
|
|
@@ -12,7 +12,12 @@ import { cartesianToAddress } from "./cartesianAddress.js";
|
|
|
12
12
|
export function inferRangeAddress(values, rowOffset = 0, columnOffset = 0) {
|
|
13
13
|
const first = values[0];
|
|
14
14
|
if (!first || first.length === 0) {
|
|
15
|
-
return
|
|
15
|
+
return cartesianToAddress({
|
|
16
|
+
ax: columnOffset,
|
|
17
|
+
bx: columnOffset,
|
|
18
|
+
ay: rowOffset,
|
|
19
|
+
by: rowOffset,
|
|
20
|
+
});
|
|
16
21
|
}
|
|
17
22
|
for (const row of values) {
|
|
18
23
|
if (row.length !== first.length) {
|
|
@@ -30,11 +35,36 @@ export function inferRangeAddress(values, rowOffset = 0, columnOffset = 0) {
|
|
|
30
35
|
by: endRow,
|
|
31
36
|
});
|
|
32
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Converts a 2D array of cell values into a row address in the upper left.
|
|
40
|
+
*
|
|
41
|
+
* @param {CellValue[]} row - A single row of cell values.
|
|
42
|
+
* @param {RowOffset} [rowOffset=0] - The row offset to apply to the address.
|
|
43
|
+
* @param {ColumnOffset} [columnOffset=0] - The column offset to apply to the address.
|
|
44
|
+
* @returns {Address} The default cell range address for the row (e.g., "A1").
|
|
45
|
+
*/
|
|
46
|
+
export function inferRowAddress(row, rowOffset = 0, columnOffset = 0) {
|
|
47
|
+
if (row.length === 0) {
|
|
48
|
+
return cartesianToAddress({
|
|
49
|
+
ax: columnOffset,
|
|
50
|
+
bx: columnOffset,
|
|
51
|
+
ay: rowOffset,
|
|
52
|
+
by: rowOffset,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
const endColumn = (columnOffset + row.length - 1);
|
|
56
|
+
return cartesianToAddress({
|
|
57
|
+
ax: columnOffset,
|
|
58
|
+
bx: endColumn,
|
|
59
|
+
ay: rowOffset,
|
|
60
|
+
by: rowOffset,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
33
63
|
/**
|
|
34
64
|
* Converts a 2D array of cell values into an array of objects.
|
|
35
65
|
* Assumes the first row is a header and uses it as keys for the objects.
|
|
36
66
|
*
|
|
37
|
-
* @param {
|
|
67
|
+
* @param {CellValue[][]} values - A 2D array representing cell values.
|
|
38
68
|
* @returns {unknown[]} An array of objects where each object represents a row.
|
|
39
69
|
* @throws {InvalidArgumentError} If rows have inconsistent column counts or no header row is present.
|
|
40
70
|
*/
|
|
@@ -59,7 +89,7 @@ export function inferRangeObject(values) {
|
|
|
59
89
|
*
|
|
60
90
|
* @param {unknown[]} objs - An array of objects to convert.
|
|
61
91
|
* @param {string[] | null} header - Optional header row. If not provided, it will be inferred from the object keys.
|
|
62
|
-
* @returns {
|
|
92
|
+
* @returns {CellValue[][]} A 2D array where the first row is the header and subsequent rows are the object values.
|
|
63
93
|
*/
|
|
64
94
|
export function inferObjectRange(objs, header = null) {
|
|
65
95
|
if (objs.length === 0) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Row } from "../models/Row.ts";
|
|
2
2
|
import type { RowOffset } from "../models/RowOffset.ts";
|
|
3
3
|
import type { WorkbookRangeRef } from "../models/WorkbookRangeRef.ts";
|
|
4
4
|
/**
|
|
@@ -7,9 +7,10 @@ import type { WorkbookRangeRef } from "../models/WorkbookRangeRef.ts";
|
|
|
7
7
|
* @param rangeRef - A reference to the workbook range to iterate over.
|
|
8
8
|
* @param overwriteRowsPerRequest - Optional. The number of rows to fetch per request. If omitted, it is automatically calculated.
|
|
9
9
|
* @returns An async iterable that yields rows of range values.
|
|
10
|
+
* @deprecated Use `readWorkbookRows` instead.
|
|
10
11
|
*/
|
|
11
12
|
export default function iterateWorkbookRange(rangeRef: WorkbookRangeRef, overwriteRowsPerRequest?: number | null): AsyncIterable<{
|
|
12
13
|
rowOffset: RowOffset;
|
|
13
|
-
row:
|
|
14
|
+
row: Row;
|
|
14
15
|
}>;
|
|
15
16
|
//# sourceMappingURL=iterateWorkbookRange.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iterateWorkbookRange.d.ts","sourceRoot":"","sources":["../../../src/tasks/iterateWorkbookRange.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"iterateWorkbookRange.d.ts","sourceRoot":"","sources":["../../../src/tasks/iterateWorkbookRange.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAOtE;;;;;;;GAOG;AACH,wBAA+B,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,uBAAuB,GAAE,MAAM,GAAG,IAAW,GAAG,aAAa,CAAC;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAAC,CAsDhL"}
|
|
@@ -2,20 +2,15 @@ import InvalidArgumentError from "../errors/InvalidArgumentError.js";
|
|
|
2
2
|
import getWorkbookWorksheetRange from "../operations/workbookRange/getWorkbookWorksheetRange.js";
|
|
3
3
|
import { composeAddress, countAddressColumns, decomposeAddress } from "../services/addressManipulation.js";
|
|
4
4
|
import { columnAddressToOffset, rowAddressToOffset, rowOffsetToAddress } from "../services/addressOffset.js";
|
|
5
|
+
import { maxCellsPerRequest } from "../services/batch.js";
|
|
5
6
|
import { createWorkbookRangeRef } from "../services/workbookRange.js";
|
|
6
|
-
/**
|
|
7
|
-
* Maximum number of cells that can be retrieved in a single request, unless overwritten.
|
|
8
|
-
* @remarks The Microsoft Graph API documentation does not specify a fixed maximum number of cells that can be retrieved in a single request.
|
|
9
|
-
* However, it mentions that large ranges may result in errors due to resource constraints. Additionally, discussions in developer
|
|
10
|
-
* communities suggest that requests exceeding 10,000 cells may encounter issues.
|
|
11
|
-
*/
|
|
12
|
-
const maxCellsPerRequest = 10_000;
|
|
13
7
|
/**
|
|
14
8
|
* Iterates over the values of a workbook range in chunks, fetching data in manageable sizes.
|
|
15
9
|
*
|
|
16
10
|
* @param rangeRef - A reference to the workbook range to iterate over.
|
|
17
11
|
* @param overwriteRowsPerRequest - Optional. The number of rows to fetch per request. If omitted, it is automatically calculated.
|
|
18
12
|
* @returns An async iterable that yields rows of range values.
|
|
13
|
+
* @deprecated Use `readWorkbookRows` instead.
|
|
19
14
|
*/
|
|
20
15
|
export default async function* iterateWorkbookRange(rangeRef, overwriteRowsPerRequest = null) {
|
|
21
16
|
const address = rangeRef.address;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CellValue } from "../models/CellValue.ts";
|
|
2
2
|
import type { WorkbookRangeRef } from "../models/WorkbookRangeRef.ts";
|
|
3
3
|
/**
|
|
4
4
|
* Iterates over the values of a workbook range in chunks, fetching data in manageable sizes.
|
|
@@ -6,7 +6,7 @@ import type { WorkbookRangeRef } from "../models/WorkbookRangeRef.ts";
|
|
|
6
6
|
* @param rangeRef - A reference to the workbook range to iterate over.
|
|
7
7
|
* @param overwriteRowsPerRequest - Optional. The number of rows to fetch per request. If omitted, it is automatically calculated.
|
|
8
8
|
* @returns An async iterable that yields rows of range values.
|
|
9
|
-
* @deprecated Use `
|
|
9
|
+
* @deprecated Use `readWorkbookRows` instead.
|
|
10
10
|
*/
|
|
11
|
-
export default function iterateWorkbookRangeValues(rangeRef: WorkbookRangeRef, overwriteRowsPerRequest?: number | null): AsyncIterable<
|
|
11
|
+
export default function iterateWorkbookRangeValues(rangeRef: WorkbookRangeRef, overwriteRowsPerRequest?: number | null): AsyncIterable<CellValue[]>;
|
|
12
12
|
//# sourceMappingURL=iterateWorkbookRangeValues.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iterateWorkbookRangeValues.d.ts","sourceRoot":"","sources":["../../../src/tasks/iterateWorkbookRangeValues.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"iterateWorkbookRangeValues.d.ts","sourceRoot":"","sources":["../../../src/tasks/iterateWorkbookRangeValues.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAOtE;;;;;;;GAOG;AACH,wBAA+B,0BAA0B,CAAC,QAAQ,EAAE,gBAAgB,EAAE,uBAAuB,GAAE,MAAM,GAAG,IAAW,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC,CAoC/J"}
|
|
@@ -2,21 +2,15 @@ import InvalidArgumentError from "../errors/InvalidArgumentError.js";
|
|
|
2
2
|
import getWorkbookWorksheetRange from "../operations/workbookRange/getWorkbookWorksheetRange.js";
|
|
3
3
|
import { composeAddress, decomposeAddress } from "../services/addressManipulation.js";
|
|
4
4
|
import { columnAddressToOffset, rowAddressToOffset, rowOffsetToAddress } from "../services/addressOffset.js";
|
|
5
|
+
import { maxCellsPerRequest } from "../services/batch.js";
|
|
5
6
|
import { createWorkbookRangeRef } from "../services/workbookRange.js";
|
|
6
|
-
/**
|
|
7
|
-
* Maximum number of cells that can be retrieved in a single request, unless overwritten.
|
|
8
|
-
* @remarks The Microsoft Graph API documentation does not specify a fixed maximum number of cells that can be retrieved in a single request.
|
|
9
|
-
* However, it mentions that large ranges may result in errors due to resource constraints. Additionally, discussions in developer
|
|
10
|
-
* communities suggest that requests exceeding 10,000 cells may encounter issues.
|
|
11
|
-
*/
|
|
12
|
-
const maxCellsPerRequest = 10_000;
|
|
13
7
|
/**
|
|
14
8
|
* Iterates over the values of a workbook range in chunks, fetching data in manageable sizes.
|
|
15
9
|
*
|
|
16
10
|
* @param rangeRef - A reference to the workbook range to iterate over.
|
|
17
11
|
* @param overwriteRowsPerRequest - Optional. The number of rows to fetch per request. If omitted, it is automatically calculated.
|
|
18
12
|
* @returns An async iterable that yields rows of range values.
|
|
19
|
-
* @deprecated Use `
|
|
13
|
+
* @deprecated Use `readWorkbookRows` instead.
|
|
20
14
|
*/
|
|
21
15
|
export default async function* iterateWorkbookRangeValues(rangeRef, overwriteRowsPerRequest = null) {
|
|
22
16
|
const address = rangeRef.address;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Row } from "../models/Row.ts";
|
|
2
|
+
import type { WorkbookRangeRef } from "../models/WorkbookRangeRef.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Iterates over the values of a workbook range in chunks, fetching data in manageable sizes.
|
|
5
|
+
*
|
|
6
|
+
* @param rangeRef - A reference to the workbook range to iterate over.
|
|
7
|
+
* @param overwriteMaxRowsPerChunk - Optional. The number of rows to fetch per request. If omitted, it is automatically calculated.
|
|
8
|
+
* @returns An async iterable that yields rows of range values.
|
|
9
|
+
*/
|
|
10
|
+
export default function readWorkbookRows(rangeRef: WorkbookRangeRef, overwriteMaxRowsPerChunk?: number | null): AsyncIterable<Row>;
|
|
11
|
+
//# sourceMappingURL=readWorkbookRows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readWorkbookRows.d.ts","sourceRoot":"","sources":["../../../src/tasks/readWorkbookRows.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAOtE;;;;;;GAMG;AACH,wBAA+B,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,wBAAwB,GAAE,MAAM,GAAG,IAAW,GAAG,aAAa,CAAC,GAAG,CAAC,CA+C9I"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import InvalidArgumentError from "../errors/InvalidArgumentError.js";
|
|
2
|
+
import getWorkbookWorksheetRange from "../operations/workbookRange/getWorkbookWorksheetRange.js";
|
|
3
|
+
import { composeAddress, countAddressColumns, decomposeAddress } from "../services/addressManipulation.js";
|
|
4
|
+
import { columnAddressToOffset, rowAddressToOffset, rowOffsetToAddress } from "../services/addressOffset.js";
|
|
5
|
+
import { createWorkbookRangeRef } from "../services/workbookRange.js";
|
|
6
|
+
import { maxCellsPerRequest } from "../services/batch.js";
|
|
7
|
+
/**
|
|
8
|
+
* Iterates over the values of a workbook range in chunks, fetching data in manageable sizes.
|
|
9
|
+
*
|
|
10
|
+
* @param rangeRef - A reference to the workbook range to iterate over.
|
|
11
|
+
* @param overwriteMaxRowsPerChunk - Optional. The number of rows to fetch per request. If omitted, it is automatically calculated.
|
|
12
|
+
* @returns An async iterable that yields rows of range values.
|
|
13
|
+
*/
|
|
14
|
+
export default async function* readWorkbookRows(rangeRef, overwriteMaxRowsPerChunk = null) {
|
|
15
|
+
const address = rangeRef.address;
|
|
16
|
+
const components = decomposeAddress(address);
|
|
17
|
+
const columnsPerRow = columnAddressToOffset(components.endColumn) - columnAddressToOffset(components.startColumn) + 1;
|
|
18
|
+
if (overwriteMaxRowsPerChunk !== null && overwriteMaxRowsPerChunk < 1) {
|
|
19
|
+
throw new InvalidArgumentError("overwriteRowsPerRequest must be greater than 0");
|
|
20
|
+
}
|
|
21
|
+
const columnCount = countAddressColumns(address);
|
|
22
|
+
const rowsPerRequest = overwriteMaxRowsPerChunk ?? Math.floor(maxCellsPerRequest / columnsPerRow);
|
|
23
|
+
const rangeStartRowOffset = rowAddressToOffset(components.startRow);
|
|
24
|
+
const rangeEndRowOffset = rowAddressToOffset(components.endRow);
|
|
25
|
+
for (let chunkRowOffset = rangeStartRowOffset; chunkRowOffset <= rangeEndRowOffset; chunkRowOffset = (chunkRowOffset + rowsPerRequest)) {
|
|
26
|
+
const requestStartRowOffset = chunkRowOffset;
|
|
27
|
+
const requestEndRowOffset = Math.min(chunkRowOffset + rowsPerRequest - 1, rangeEndRowOffset);
|
|
28
|
+
const chunkStartRow = rowOffsetToAddress(requestStartRowOffset);
|
|
29
|
+
const chunkEndRow = rowOffsetToAddress(requestEndRowOffset);
|
|
30
|
+
const requestAddress = composeAddress({
|
|
31
|
+
startRow: chunkStartRow,
|
|
32
|
+
endRow: chunkEndRow,
|
|
33
|
+
startColumn: components.startColumn,
|
|
34
|
+
endColumn: components.endColumn,
|
|
35
|
+
});
|
|
36
|
+
const requestRef = createWorkbookRangeRef(rangeRef, requestAddress);
|
|
37
|
+
const range = await getWorkbookWorksheetRange(requestRef);
|
|
38
|
+
const values = range.values;
|
|
39
|
+
const text = range.text;
|
|
40
|
+
const numberFormat = range.numberFormat;
|
|
41
|
+
const rowCount = values.length;
|
|
42
|
+
for (let r = 0; r < rowCount; r++) {
|
|
43
|
+
const row = Array.from({ length: columnCount }, (_, c) => ({
|
|
44
|
+
text: text[r]?.[c] ?? "",
|
|
45
|
+
value: values[r]?.[c] ?? "",
|
|
46
|
+
numberFormat: numberFormat?.[r]?.[c] ?? "",
|
|
47
|
+
}));
|
|
48
|
+
yield row;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CellValue } from "../models/CellValue.ts";
|
|
2
2
|
import type { WorkbookRangeRef } from "../models/WorkbookRangeRef.ts";
|
|
3
3
|
/**
|
|
4
4
|
* Sets the values of a specified workbook range.
|
|
@@ -7,5 +7,5 @@ import type { WorkbookRangeRef } from "../models/WorkbookRangeRef.ts";
|
|
|
7
7
|
* @param {CellRangeValues} values - The values to set in the specified workbook range. Must match the range's dimensions.
|
|
8
8
|
* @returns Nothing
|
|
9
9
|
*/
|
|
10
|
-
export default function setWorkbookRangeValues(rangeRef: WorkbookRangeRef, values:
|
|
10
|
+
export default function setWorkbookRangeValues(rangeRef: WorkbookRangeRef, values: CellValue[][]): Promise<void>;
|
|
11
11
|
//# sourceMappingURL=setWorkbookRangeValues.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setWorkbookRangeValues.d.ts","sourceRoot":"","sources":["../../../src/tasks/setWorkbookRangeValues.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"setWorkbookRangeValues.d.ts","sourceRoot":"","sources":["../../../src/tasks/setWorkbookRangeValues.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAItE;;;;;;GAMG;AACH,wBAA8B,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,iBAcrG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Cell } from "../models/Cell.ts";
|
|
2
|
+
import type { WorkbookRangeRef } from "../models/WorkbookRangeRef.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Write rows to a workbook range. Uses batching to handle large datasets efficiently.
|
|
5
|
+
* @param originRef The reference to the workbook range where rows will be written. Only the upper-left is used as an origin point.
|
|
6
|
+
* @param rows An iterable or async iterable of rows to write. Each row is an array of cells.
|
|
7
|
+
* @param overrideMaxRowsPerUnderlyingRead Optional maximum number of rows to write in a single underlying read. If not provided, it will be automatically calculated based on a safe value.
|
|
8
|
+
*/
|
|
9
|
+
export declare function writeWorkbookRows(originRef: WorkbookRangeRef, rows: Iterable<Partial<Cell>[]> | AsyncIterable<Partial<Cell>[]>, overrideMaxRowsPerUnderlyingRead?: number | null): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=writeWorkbookRows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeWorkbookRows.d.ts","sourceRoot":"","sources":["../../../src/tasks/writeWorkbookRows.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAMtE;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,gCAAgC,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB5M"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import InvalidArgumentError from "../errors/InvalidArgumentError.js";
|
|
2
|
+
import updateWorkbookRange from "../operations/workbookRange/updateWorkbookRange.js";
|
|
3
|
+
import { maxCellsPerRequest } from "../services/batch.js";
|
|
4
|
+
import { addressToCartesian, cartesianToAddress } from "../services/cartesianAddress.js";
|
|
5
|
+
import { createWorkbookRangeRef } from "../services/workbookRange.js";
|
|
6
|
+
/**
|
|
7
|
+
* Write rows to a workbook range. Uses batching to handle large datasets efficiently.
|
|
8
|
+
* @param originRef The reference to the workbook range where rows will be written. Only the upper-left is used as an origin point.
|
|
9
|
+
* @param rows An iterable or async iterable of rows to write. Each row is an array of cells.
|
|
10
|
+
* @param overrideMaxRowsPerUnderlyingRead Optional maximum number of rows to write in a single underlying read. If not provided, it will be automatically calculated based on a safe value.
|
|
11
|
+
*/
|
|
12
|
+
export async function writeWorkbookRows(originRef, rows, overrideMaxRowsPerUnderlyingRead = null) {
|
|
13
|
+
let maxRowsPerUnderlyingRead = overrideMaxRowsPerUnderlyingRead;
|
|
14
|
+
let cellsPerRow = null;
|
|
15
|
+
let rowsCompleted = 0;
|
|
16
|
+
const batch = [];
|
|
17
|
+
for await (const row of rows) {
|
|
18
|
+
if (cellsPerRow === null) {
|
|
19
|
+
cellsPerRow = row.length;
|
|
20
|
+
}
|
|
21
|
+
else if (cellsPerRow !== row.length) {
|
|
22
|
+
throw new InvalidArgumentError("Not all rows have the same number of cells. Ensure all rows are consistent in length.");
|
|
23
|
+
}
|
|
24
|
+
if (maxRowsPerUnderlyingRead === null) {
|
|
25
|
+
maxRowsPerUnderlyingRead = Math.max(1, Math.floor(maxCellsPerRequest / cellsPerRow)); // Excel supports up to 16k columns, which exceeds the assumed 10k cell limit per write. This might not be a problem, but not worth spending time checking this currently either.
|
|
26
|
+
}
|
|
27
|
+
if (batch.push(row) >= maxRowsPerUnderlyingRead) {
|
|
28
|
+
rowsCompleted += await flushBatch(batch, originRef, rowsCompleted);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
await flushBatch(batch, originRef, rowsCompleted);
|
|
32
|
+
}
|
|
33
|
+
async function flushBatch(batch, originRef, rowsCompleted) {
|
|
34
|
+
if (batch.length === 0) {
|
|
35
|
+
return 0;
|
|
36
|
+
}
|
|
37
|
+
const { ay, ax, bx } = addressToCartesian(originRef.address);
|
|
38
|
+
const count = batch.length;
|
|
39
|
+
const address = cartesianToAddress({
|
|
40
|
+
ay: (rowsCompleted + ay),
|
|
41
|
+
by: (rowsCompleted + ay + count - 1),
|
|
42
|
+
ax,
|
|
43
|
+
bx,
|
|
44
|
+
});
|
|
45
|
+
const rangeRef = createWorkbookRangeRef(originRef, address);
|
|
46
|
+
await updateWorkbookRange(rangeRef, {
|
|
47
|
+
values: batch.map((r) => r.map((c) => c.value)),
|
|
48
|
+
text: batch.map((r) => r.map((c) => c.text)),
|
|
49
|
+
numberFormat: batch.map((r) => r.map((c) => c.numberFormat)),
|
|
50
|
+
});
|
|
51
|
+
batch.length = 0;
|
|
52
|
+
return count;
|
|
53
|
+
}
|