@azure/core-paging 1.6.3-alpha.20250620.3 → 1.6.3-alpha.20250730.1
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/browser/getPagedAsyncIterator.js +43 -73
- package/dist/browser/getPagedAsyncIterator.js.map +1 -1
- package/dist/commonjs/getPagedAsyncIterator.js +43 -73
- package/dist/commonjs/getPagedAsyncIterator.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +11 -11
- package/dist/esm/getPagedAsyncIterator.js +43 -73
- package/dist/esm/getPagedAsyncIterator.js.map +1 -1
- package/dist/react-native/getPagedAsyncIterator.js +43 -73
- package/dist/react-native/getPagedAsyncIterator.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
|
-
import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from "tslib";
|
|
4
3
|
/**
|
|
5
4
|
* returns an async iterator that iterates over results. It also has a `byPage`
|
|
6
5
|
* method that returns pages of items at once.
|
|
@@ -9,7 +8,6 @@ import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from "tsli
|
|
|
9
8
|
* @returns a paged async iterator that iterates over results.
|
|
10
9
|
*/
|
|
11
10
|
export function getPagedAsyncIterator(pagedResult) {
|
|
12
|
-
var _a;
|
|
13
11
|
const iter = getItemAsyncIterator(pagedResult);
|
|
14
12
|
return {
|
|
15
13
|
next() {
|
|
@@ -18,85 +16,57 @@ export function getPagedAsyncIterator(pagedResult) {
|
|
|
18
16
|
[Symbol.asyncIterator]() {
|
|
19
17
|
return this;
|
|
20
18
|
},
|
|
21
|
-
byPage:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
byPage: pagedResult?.byPage ??
|
|
20
|
+
((settings) => {
|
|
21
|
+
const { continuationToken, maxPageSize } = settings ?? {};
|
|
22
|
+
return getPageAsyncIterator(pagedResult, {
|
|
23
|
+
pageLink: continuationToken,
|
|
24
|
+
maxPageSize,
|
|
25
|
+
});
|
|
26
|
+
}),
|
|
28
27
|
};
|
|
29
28
|
}
|
|
30
|
-
function getItemAsyncIterator(pagedResult) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
//
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
yield
|
|
41
|
-
try {
|
|
42
|
-
for (var _g = true, pages_1 = __asyncValues(pages), pages_1_1; pages_1_1 = yield __await(pages_1.next()), _a = pages_1_1.done, !_a; _g = true) {
|
|
43
|
-
_c = pages_1_1.value;
|
|
44
|
-
_g = false;
|
|
45
|
-
const page = _c;
|
|
46
|
-
yield __await(yield* __asyncDelegator(__asyncValues(toElements(page))));
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
50
|
-
finally {
|
|
51
|
-
try {
|
|
52
|
-
if (!_g && !_a && (_b = pages_1.return)) yield __await(_b.call(pages_1));
|
|
53
|
-
}
|
|
54
|
-
finally { if (e_1) throw e_1.error; }
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
yield yield __await(firstVal.value);
|
|
59
|
-
// `pages` is of type `AsyncIterableIterator<TPage>` but TPage = TElement in this case
|
|
60
|
-
yield __await(yield* __asyncDelegator(__asyncValues(pages)));
|
|
29
|
+
async function* getItemAsyncIterator(pagedResult) {
|
|
30
|
+
const pages = getPageAsyncIterator(pagedResult);
|
|
31
|
+
const firstVal = await pages.next();
|
|
32
|
+
// if the result does not have an array shape, i.e. TPage = TElement, then we return it as is
|
|
33
|
+
if (!Array.isArray(firstVal.value)) {
|
|
34
|
+
// can extract elements from this page
|
|
35
|
+
const { toElements } = pagedResult;
|
|
36
|
+
if (toElements) {
|
|
37
|
+
yield* toElements(firstVal.value);
|
|
38
|
+
for await (const page of pages) {
|
|
39
|
+
yield* toElements(page);
|
|
61
40
|
}
|
|
62
41
|
}
|
|
63
42
|
else {
|
|
64
|
-
yield
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
_f = pages_2_1.value;
|
|
68
|
-
_h = false;
|
|
69
|
-
const page = _f;
|
|
70
|
-
// pages is of type `AsyncIterableIterator<TPage>` so `page` is of type `TPage`. In this branch,
|
|
71
|
-
// it must be the case that `TPage = TElement[]`
|
|
72
|
-
yield __await(yield* __asyncDelegator(__asyncValues(page)));
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
76
|
-
finally {
|
|
77
|
-
try {
|
|
78
|
-
if (!_h && !_d && (_e = pages_2.return)) yield __await(_e.call(pages_2));
|
|
79
|
-
}
|
|
80
|
-
finally { if (e_2) throw e_2.error; }
|
|
81
|
-
}
|
|
43
|
+
yield firstVal.value;
|
|
44
|
+
// `pages` is of type `AsyncIterableIterator<TPage>` but TPage = TElement in this case
|
|
45
|
+
yield* pages;
|
|
82
46
|
}
|
|
83
|
-
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
yield* firstVal.value;
|
|
50
|
+
for await (const page of pages) {
|
|
51
|
+
// pages is of type `AsyncIterableIterator<TPage>` so `page` is of type `TPage`. In this branch,
|
|
52
|
+
// it must be the case that `TPage = TElement[]`
|
|
53
|
+
yield* page;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
84
56
|
}
|
|
85
|
-
function getPageAsyncIterator(
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
57
|
+
async function* getPageAsyncIterator(pagedResult, options = {}) {
|
|
58
|
+
const { pageLink, maxPageSize } = options;
|
|
59
|
+
let response = await pagedResult.getPage(pageLink ?? pagedResult.firstPageLink, maxPageSize);
|
|
60
|
+
if (!response) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
yield response.page;
|
|
64
|
+
while (response.nextPageLink) {
|
|
65
|
+
response = await pagedResult.getPage(response.nextPageLink, maxPageSize);
|
|
89
66
|
if (!response) {
|
|
90
|
-
return
|
|
91
|
-
}
|
|
92
|
-
yield yield __await(response.page);
|
|
93
|
-
while (response.nextPageLink) {
|
|
94
|
-
response = yield __await(pagedResult.getPage(response.nextPageLink, maxPageSize));
|
|
95
|
-
if (!response) {
|
|
96
|
-
return yield __await(void 0);
|
|
97
|
-
}
|
|
98
|
-
yield yield __await(response.page);
|
|
67
|
+
return;
|
|
99
68
|
}
|
|
100
|
-
|
|
69
|
+
yield response.page;
|
|
70
|
+
}
|
|
101
71
|
}
|
|
102
72
|
//# sourceMappingURL=getPagedAsyncIterator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPagedAsyncIterator.js","sourceRoot":"","sources":["../../src/getPagedAsyncIterator.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC
|
|
1
|
+
{"version":3,"file":"getPagedAsyncIterator.js","sourceRoot":"","sources":["../../src/getPagedAsyncIterator.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;;;;GAMG;AAEH,MAAM,UAAU,qBAAqB,CAMnC,WAAqD;IAErD,MAAM,IAAI,GAAG,oBAAoB,CAAwC,WAAW,CAAC,CAAC;IACtF,OAAO;QACL,IAAI;YACF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC;QACD,CAAC,MAAM,CAAC,aAAa,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EACJ,WAAW,EAAE,MAAM;YAClB,CAAC,CAAC,QAAuB,EAAE,EAAE;gBAC5B,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAG,QAAQ,IAAI,EAAE,CAAC;gBAC1D,OAAO,oBAAoB,CAAC,WAAW,EAAE;oBACvC,QAAQ,EAAE,iBAAiD;oBAC3D,WAAW;iBACZ,CAAC,CAAC;YACL,CAAC,CAA2E;KAC/E,CAAC;AACJ,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,oBAAoB,CAClC,WAAqD;IAErD,MAAM,KAAK,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACpC,6FAA6F;IAC7F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,sCAAsC;QACtC,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC;QACnC,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAe,CAAC;YAChD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC/B,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAe,CAAC;YACxC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,CAAC,KAAK,CAAC;YACrB,sFAAsF;YACtF,KAAK,CAAC,CAAC,KAAmD,CAAC;QAC7D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC/B,gGAAgG;YAChG,gDAAgD;YAChD,KAAK,CAAC,CAAC,IAA6B,CAAC;QACvC,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,oBAAoB,CAClC,WAAqD,EACrD,UAGI,EAAE;IAEN,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAC1C,IAAI,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC7F,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,CAAC,IAAI,CAAC;IACpB,OAAO,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC7B,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,CAAC,IAAI,CAAC;IACtB,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PageSettings, PagedAsyncIterableIterator, PagedResult } from \"./models.js\";\n\n/**\n * returns an async iterator that iterates over results. It also has a `byPage`\n * method that returns pages of items at once.\n *\n * @param pagedResult - an object that specifies how to get pages.\n * @returns a paged async iterator that iterates over results.\n */\n\nexport function getPagedAsyncIterator<\n TElement,\n TPage = TElement[],\n TPageSettings = PageSettings,\n TLink = string,\n>(\n pagedResult: PagedResult<TPage, TPageSettings, TLink>,\n): PagedAsyncIterableIterator<TElement, TPage, TPageSettings> {\n const iter = getItemAsyncIterator<TElement, TPage, TLink, TPageSettings>(pagedResult);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage:\n pagedResult?.byPage ??\n (((settings?: PageSettings) => {\n const { continuationToken, maxPageSize } = settings ?? {};\n return getPageAsyncIterator(pagedResult, {\n pageLink: continuationToken as unknown as TLink | undefined,\n maxPageSize,\n });\n }) as unknown as (settings?: TPageSettings) => AsyncIterableIterator<TPage>),\n };\n}\n\nasync function* getItemAsyncIterator<TElement, TPage, TLink, TPageSettings>(\n pagedResult: PagedResult<TPage, TPageSettings, TLink>,\n): AsyncIterableIterator<TElement> {\n const pages = getPageAsyncIterator(pagedResult);\n const firstVal = await pages.next();\n // if the result does not have an array shape, i.e. TPage = TElement, then we return it as is\n if (!Array.isArray(firstVal.value)) {\n // can extract elements from this page\n const { toElements } = pagedResult;\n if (toElements) {\n yield* toElements(firstVal.value) as TElement[];\n for await (const page of pages) {\n yield* toElements(page) as TElement[];\n }\n } else {\n yield firstVal.value;\n // `pages` is of type `AsyncIterableIterator<TPage>` but TPage = TElement in this case\n yield* pages as unknown as AsyncIterableIterator<TElement>;\n }\n } else {\n yield* firstVal.value;\n for await (const page of pages) {\n // pages is of type `AsyncIterableIterator<TPage>` so `page` is of type `TPage`. In this branch,\n // it must be the case that `TPage = TElement[]`\n yield* page as unknown as TElement[];\n }\n }\n}\n\nasync function* getPageAsyncIterator<TPage, TLink, TPageSettings>(\n pagedResult: PagedResult<TPage, TPageSettings, TLink>,\n options: {\n maxPageSize?: number;\n pageLink?: TLink;\n } = {},\n): AsyncIterableIterator<TPage> {\n const { pageLink, maxPageSize } = options;\n let response = await pagedResult.getPage(pageLink ?? pagedResult.firstPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n while (response.nextPageLink) {\n response = await pagedResult.getPage(response.nextPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n }\n}\n"]}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
// Licensed under the MIT License.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.getPagedAsyncIterator = getPagedAsyncIterator;
|
|
6
|
-
const tslib_1 = require("tslib");
|
|
7
6
|
/**
|
|
8
7
|
* returns an async iterator that iterates over results. It also has a `byPage`
|
|
9
8
|
* method that returns pages of items at once.
|
|
@@ -12,7 +11,6 @@ const tslib_1 = require("tslib");
|
|
|
12
11
|
* @returns a paged async iterator that iterates over results.
|
|
13
12
|
*/
|
|
14
13
|
function getPagedAsyncIterator(pagedResult) {
|
|
15
|
-
var _a;
|
|
16
14
|
const iter = getItemAsyncIterator(pagedResult);
|
|
17
15
|
return {
|
|
18
16
|
next() {
|
|
@@ -21,85 +19,57 @@ function getPagedAsyncIterator(pagedResult) {
|
|
|
21
19
|
[Symbol.asyncIterator]() {
|
|
22
20
|
return this;
|
|
23
21
|
},
|
|
24
|
-
byPage:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
22
|
+
byPage: pagedResult?.byPage ??
|
|
23
|
+
((settings) => {
|
|
24
|
+
const { continuationToken, maxPageSize } = settings ?? {};
|
|
25
|
+
return getPageAsyncIterator(pagedResult, {
|
|
26
|
+
pageLink: continuationToken,
|
|
27
|
+
maxPageSize,
|
|
28
|
+
});
|
|
29
|
+
}),
|
|
31
30
|
};
|
|
32
31
|
}
|
|
33
|
-
function getItemAsyncIterator(pagedResult) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
yield
|
|
44
|
-
try {
|
|
45
|
-
for (var _g = true, pages_1 = tslib_1.__asyncValues(pages), pages_1_1; pages_1_1 = yield tslib_1.__await(pages_1.next()), _a = pages_1_1.done, !_a; _g = true) {
|
|
46
|
-
_c = pages_1_1.value;
|
|
47
|
-
_g = false;
|
|
48
|
-
const page = _c;
|
|
49
|
-
yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(toElements(page))));
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
53
|
-
finally {
|
|
54
|
-
try {
|
|
55
|
-
if (!_g && !_a && (_b = pages_1.return)) yield tslib_1.__await(_b.call(pages_1));
|
|
56
|
-
}
|
|
57
|
-
finally { if (e_1) throw e_1.error; }
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
yield yield tslib_1.__await(firstVal.value);
|
|
62
|
-
// `pages` is of type `AsyncIterableIterator<TPage>` but TPage = TElement in this case
|
|
63
|
-
yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(pages)));
|
|
32
|
+
async function* getItemAsyncIterator(pagedResult) {
|
|
33
|
+
const pages = getPageAsyncIterator(pagedResult);
|
|
34
|
+
const firstVal = await pages.next();
|
|
35
|
+
// if the result does not have an array shape, i.e. TPage = TElement, then we return it as is
|
|
36
|
+
if (!Array.isArray(firstVal.value)) {
|
|
37
|
+
// can extract elements from this page
|
|
38
|
+
const { toElements } = pagedResult;
|
|
39
|
+
if (toElements) {
|
|
40
|
+
yield* toElements(firstVal.value);
|
|
41
|
+
for await (const page of pages) {
|
|
42
|
+
yield* toElements(page);
|
|
64
43
|
}
|
|
65
44
|
}
|
|
66
45
|
else {
|
|
67
|
-
yield
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
_f = pages_2_1.value;
|
|
71
|
-
_h = false;
|
|
72
|
-
const page = _f;
|
|
73
|
-
// pages is of type `AsyncIterableIterator<TPage>` so `page` is of type `TPage`. In this branch,
|
|
74
|
-
// it must be the case that `TPage = TElement[]`
|
|
75
|
-
yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
79
|
-
finally {
|
|
80
|
-
try {
|
|
81
|
-
if (!_h && !_d && (_e = pages_2.return)) yield tslib_1.__await(_e.call(pages_2));
|
|
82
|
-
}
|
|
83
|
-
finally { if (e_2) throw e_2.error; }
|
|
84
|
-
}
|
|
46
|
+
yield firstVal.value;
|
|
47
|
+
// `pages` is of type `AsyncIterableIterator<TPage>` but TPage = TElement in this case
|
|
48
|
+
yield* pages;
|
|
85
49
|
}
|
|
86
|
-
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
yield* firstVal.value;
|
|
53
|
+
for await (const page of pages) {
|
|
54
|
+
// pages is of type `AsyncIterableIterator<TPage>` so `page` is of type `TPage`. In this branch,
|
|
55
|
+
// it must be the case that `TPage = TElement[]`
|
|
56
|
+
yield* page;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
87
59
|
}
|
|
88
|
-
function getPageAsyncIterator(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
60
|
+
async function* getPageAsyncIterator(pagedResult, options = {}) {
|
|
61
|
+
const { pageLink, maxPageSize } = options;
|
|
62
|
+
let response = await pagedResult.getPage(pageLink ?? pagedResult.firstPageLink, maxPageSize);
|
|
63
|
+
if (!response) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
yield response.page;
|
|
67
|
+
while (response.nextPageLink) {
|
|
68
|
+
response = await pagedResult.getPage(response.nextPageLink, maxPageSize);
|
|
92
69
|
if (!response) {
|
|
93
|
-
return
|
|
94
|
-
}
|
|
95
|
-
yield yield tslib_1.__await(response.page);
|
|
96
|
-
while (response.nextPageLink) {
|
|
97
|
-
response = yield tslib_1.__await(pagedResult.getPage(response.nextPageLink, maxPageSize));
|
|
98
|
-
if (!response) {
|
|
99
|
-
return yield tslib_1.__await(void 0);
|
|
100
|
-
}
|
|
101
|
-
yield yield tslib_1.__await(response.page);
|
|
70
|
+
return;
|
|
102
71
|
}
|
|
103
|
-
|
|
72
|
+
yield response.page;
|
|
73
|
+
}
|
|
104
74
|
}
|
|
105
75
|
//# sourceMappingURL=getPagedAsyncIterator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPagedAsyncIterator.js","sourceRoot":"","sources":["../../src/getPagedAsyncIterator.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAYlC,sDA0BC
|
|
1
|
+
{"version":3,"file":"getPagedAsyncIterator.js","sourceRoot":"","sources":["../../src/getPagedAsyncIterator.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAYlC,sDA0BC;AAlCD;;;;;;GAMG;AAEH,SAAgB,qBAAqB,CAMnC,WAAqD;IAErD,MAAM,IAAI,GAAG,oBAAoB,CAAwC,WAAW,CAAC,CAAC;IACtF,OAAO;QACL,IAAI;YACF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC;QACD,CAAC,MAAM,CAAC,aAAa,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EACJ,WAAW,EAAE,MAAM;YAClB,CAAC,CAAC,QAAuB,EAAE,EAAE;gBAC5B,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAG,QAAQ,IAAI,EAAE,CAAC;gBAC1D,OAAO,oBAAoB,CAAC,WAAW,EAAE;oBACvC,QAAQ,EAAE,iBAAiD;oBAC3D,WAAW;iBACZ,CAAC,CAAC;YACL,CAAC,CAA2E;KAC/E,CAAC;AACJ,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,oBAAoB,CAClC,WAAqD;IAErD,MAAM,KAAK,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACpC,6FAA6F;IAC7F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,sCAAsC;QACtC,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC;QACnC,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAe,CAAC;YAChD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC/B,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAe,CAAC;YACxC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,CAAC,KAAK,CAAC;YACrB,sFAAsF;YACtF,KAAK,CAAC,CAAC,KAAmD,CAAC;QAC7D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC/B,gGAAgG;YAChG,gDAAgD;YAChD,KAAK,CAAC,CAAC,IAA6B,CAAC;QACvC,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,oBAAoB,CAClC,WAAqD,EACrD,UAGI,EAAE;IAEN,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAC1C,IAAI,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC7F,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,CAAC,IAAI,CAAC;IACpB,OAAO,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC7B,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,CAAC,IAAI,CAAC;IACtB,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PageSettings, PagedAsyncIterableIterator, PagedResult } from \"./models.js\";\n\n/**\n * returns an async iterator that iterates over results. It also has a `byPage`\n * method that returns pages of items at once.\n *\n * @param pagedResult - an object that specifies how to get pages.\n * @returns a paged async iterator that iterates over results.\n */\n\nexport function getPagedAsyncIterator<\n TElement,\n TPage = TElement[],\n TPageSettings = PageSettings,\n TLink = string,\n>(\n pagedResult: PagedResult<TPage, TPageSettings, TLink>,\n): PagedAsyncIterableIterator<TElement, TPage, TPageSettings> {\n const iter = getItemAsyncIterator<TElement, TPage, TLink, TPageSettings>(pagedResult);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage:\n pagedResult?.byPage ??\n (((settings?: PageSettings) => {\n const { continuationToken, maxPageSize } = settings ?? {};\n return getPageAsyncIterator(pagedResult, {\n pageLink: continuationToken as unknown as TLink | undefined,\n maxPageSize,\n });\n }) as unknown as (settings?: TPageSettings) => AsyncIterableIterator<TPage>),\n };\n}\n\nasync function* getItemAsyncIterator<TElement, TPage, TLink, TPageSettings>(\n pagedResult: PagedResult<TPage, TPageSettings, TLink>,\n): AsyncIterableIterator<TElement> {\n const pages = getPageAsyncIterator(pagedResult);\n const firstVal = await pages.next();\n // if the result does not have an array shape, i.e. TPage = TElement, then we return it as is\n if (!Array.isArray(firstVal.value)) {\n // can extract elements from this page\n const { toElements } = pagedResult;\n if (toElements) {\n yield* toElements(firstVal.value) as TElement[];\n for await (const page of pages) {\n yield* toElements(page) as TElement[];\n }\n } else {\n yield firstVal.value;\n // `pages` is of type `AsyncIterableIterator<TPage>` but TPage = TElement in this case\n yield* pages as unknown as AsyncIterableIterator<TElement>;\n }\n } else {\n yield* firstVal.value;\n for await (const page of pages) {\n // pages is of type `AsyncIterableIterator<TPage>` so `page` is of type `TPage`. In this branch,\n // it must be the case that `TPage = TElement[]`\n yield* page as unknown as TElement[];\n }\n }\n}\n\nasync function* getPageAsyncIterator<TPage, TLink, TPageSettings>(\n pagedResult: PagedResult<TPage, TPageSettings, TLink>,\n options: {\n maxPageSize?: number;\n pageLink?: TLink;\n } = {},\n): AsyncIterableIterator<TPage> {\n const { pageLink, maxPageSize } = options;\n let response = await pagedResult.getPage(pageLink ?? pagedResult.firstPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n while (response.nextPageLink) {\n response = await pagedResult.getPage(response.nextPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n }\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
// This file is read by tools that parse documentation comments conforming to the TSDoc standard.
|
|
2
|
-
// It should be published with your NPM package. It should not be tracked by Git.
|
|
3
|
-
{
|
|
4
|
-
"tsdocVersion": "0.12",
|
|
5
|
-
"toolPackages": [
|
|
6
|
-
{
|
|
7
|
-
"packageName": "@microsoft/api-extractor",
|
|
8
|
-
"packageVersion": "7.52.
|
|
9
|
-
}
|
|
10
|
-
]
|
|
11
|
-
}
|
|
1
|
+
// This file is read by tools that parse documentation comments conforming to the TSDoc standard.
|
|
2
|
+
// It should be published with your NPM package. It should not be tracked by Git.
|
|
3
|
+
{
|
|
4
|
+
"tsdocVersion": "0.12",
|
|
5
|
+
"toolPackages": [
|
|
6
|
+
{
|
|
7
|
+
"packageName": "@microsoft/api-extractor",
|
|
8
|
+
"packageVersion": "7.52.9"
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
|
-
import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from "tslib";
|
|
4
3
|
/**
|
|
5
4
|
* returns an async iterator that iterates over results. It also has a `byPage`
|
|
6
5
|
* method that returns pages of items at once.
|
|
@@ -9,7 +8,6 @@ import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from "tsli
|
|
|
9
8
|
* @returns a paged async iterator that iterates over results.
|
|
10
9
|
*/
|
|
11
10
|
export function getPagedAsyncIterator(pagedResult) {
|
|
12
|
-
var _a;
|
|
13
11
|
const iter = getItemAsyncIterator(pagedResult);
|
|
14
12
|
return {
|
|
15
13
|
next() {
|
|
@@ -18,85 +16,57 @@ export function getPagedAsyncIterator(pagedResult) {
|
|
|
18
16
|
[Symbol.asyncIterator]() {
|
|
19
17
|
return this;
|
|
20
18
|
},
|
|
21
|
-
byPage:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
byPage: pagedResult?.byPage ??
|
|
20
|
+
((settings) => {
|
|
21
|
+
const { continuationToken, maxPageSize } = settings ?? {};
|
|
22
|
+
return getPageAsyncIterator(pagedResult, {
|
|
23
|
+
pageLink: continuationToken,
|
|
24
|
+
maxPageSize,
|
|
25
|
+
});
|
|
26
|
+
}),
|
|
28
27
|
};
|
|
29
28
|
}
|
|
30
|
-
function getItemAsyncIterator(pagedResult) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
//
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
yield
|
|
41
|
-
try {
|
|
42
|
-
for (var _g = true, pages_1 = __asyncValues(pages), pages_1_1; pages_1_1 = yield __await(pages_1.next()), _a = pages_1_1.done, !_a; _g = true) {
|
|
43
|
-
_c = pages_1_1.value;
|
|
44
|
-
_g = false;
|
|
45
|
-
const page = _c;
|
|
46
|
-
yield __await(yield* __asyncDelegator(__asyncValues(toElements(page))));
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
50
|
-
finally {
|
|
51
|
-
try {
|
|
52
|
-
if (!_g && !_a && (_b = pages_1.return)) yield __await(_b.call(pages_1));
|
|
53
|
-
}
|
|
54
|
-
finally { if (e_1) throw e_1.error; }
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
yield yield __await(firstVal.value);
|
|
59
|
-
// `pages` is of type `AsyncIterableIterator<TPage>` but TPage = TElement in this case
|
|
60
|
-
yield __await(yield* __asyncDelegator(__asyncValues(pages)));
|
|
29
|
+
async function* getItemAsyncIterator(pagedResult) {
|
|
30
|
+
const pages = getPageAsyncIterator(pagedResult);
|
|
31
|
+
const firstVal = await pages.next();
|
|
32
|
+
// if the result does not have an array shape, i.e. TPage = TElement, then we return it as is
|
|
33
|
+
if (!Array.isArray(firstVal.value)) {
|
|
34
|
+
// can extract elements from this page
|
|
35
|
+
const { toElements } = pagedResult;
|
|
36
|
+
if (toElements) {
|
|
37
|
+
yield* toElements(firstVal.value);
|
|
38
|
+
for await (const page of pages) {
|
|
39
|
+
yield* toElements(page);
|
|
61
40
|
}
|
|
62
41
|
}
|
|
63
42
|
else {
|
|
64
|
-
yield
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
_f = pages_2_1.value;
|
|
68
|
-
_h = false;
|
|
69
|
-
const page = _f;
|
|
70
|
-
// pages is of type `AsyncIterableIterator<TPage>` so `page` is of type `TPage`. In this branch,
|
|
71
|
-
// it must be the case that `TPage = TElement[]`
|
|
72
|
-
yield __await(yield* __asyncDelegator(__asyncValues(page)));
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
76
|
-
finally {
|
|
77
|
-
try {
|
|
78
|
-
if (!_h && !_d && (_e = pages_2.return)) yield __await(_e.call(pages_2));
|
|
79
|
-
}
|
|
80
|
-
finally { if (e_2) throw e_2.error; }
|
|
81
|
-
}
|
|
43
|
+
yield firstVal.value;
|
|
44
|
+
// `pages` is of type `AsyncIterableIterator<TPage>` but TPage = TElement in this case
|
|
45
|
+
yield* pages;
|
|
82
46
|
}
|
|
83
|
-
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
yield* firstVal.value;
|
|
50
|
+
for await (const page of pages) {
|
|
51
|
+
// pages is of type `AsyncIterableIterator<TPage>` so `page` is of type `TPage`. In this branch,
|
|
52
|
+
// it must be the case that `TPage = TElement[]`
|
|
53
|
+
yield* page;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
84
56
|
}
|
|
85
|
-
function getPageAsyncIterator(
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
57
|
+
async function* getPageAsyncIterator(pagedResult, options = {}) {
|
|
58
|
+
const { pageLink, maxPageSize } = options;
|
|
59
|
+
let response = await pagedResult.getPage(pageLink ?? pagedResult.firstPageLink, maxPageSize);
|
|
60
|
+
if (!response) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
yield response.page;
|
|
64
|
+
while (response.nextPageLink) {
|
|
65
|
+
response = await pagedResult.getPage(response.nextPageLink, maxPageSize);
|
|
89
66
|
if (!response) {
|
|
90
|
-
return
|
|
91
|
-
}
|
|
92
|
-
yield yield __await(response.page);
|
|
93
|
-
while (response.nextPageLink) {
|
|
94
|
-
response = yield __await(pagedResult.getPage(response.nextPageLink, maxPageSize));
|
|
95
|
-
if (!response) {
|
|
96
|
-
return yield __await(void 0);
|
|
97
|
-
}
|
|
98
|
-
yield yield __await(response.page);
|
|
67
|
+
return;
|
|
99
68
|
}
|
|
100
|
-
|
|
69
|
+
yield response.page;
|
|
70
|
+
}
|
|
101
71
|
}
|
|
102
72
|
//# sourceMappingURL=getPagedAsyncIterator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPagedAsyncIterator.js","sourceRoot":"","sources":["../../src/getPagedAsyncIterator.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC
|
|
1
|
+
{"version":3,"file":"getPagedAsyncIterator.js","sourceRoot":"","sources":["../../src/getPagedAsyncIterator.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;;;;GAMG;AAEH,MAAM,UAAU,qBAAqB,CAMnC,WAAqD;IAErD,MAAM,IAAI,GAAG,oBAAoB,CAAwC,WAAW,CAAC,CAAC;IACtF,OAAO;QACL,IAAI;YACF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC;QACD,CAAC,MAAM,CAAC,aAAa,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EACJ,WAAW,EAAE,MAAM;YAClB,CAAC,CAAC,QAAuB,EAAE,EAAE;gBAC5B,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAG,QAAQ,IAAI,EAAE,CAAC;gBAC1D,OAAO,oBAAoB,CAAC,WAAW,EAAE;oBACvC,QAAQ,EAAE,iBAAiD;oBAC3D,WAAW;iBACZ,CAAC,CAAC;YACL,CAAC,CAA2E;KAC/E,CAAC;AACJ,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,oBAAoB,CAClC,WAAqD;IAErD,MAAM,KAAK,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACpC,6FAA6F;IAC7F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,sCAAsC;QACtC,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC;QACnC,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAe,CAAC;YAChD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC/B,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAe,CAAC;YACxC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,CAAC,KAAK,CAAC;YACrB,sFAAsF;YACtF,KAAK,CAAC,CAAC,KAAmD,CAAC;QAC7D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC/B,gGAAgG;YAChG,gDAAgD;YAChD,KAAK,CAAC,CAAC,IAA6B,CAAC;QACvC,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,oBAAoB,CAClC,WAAqD,EACrD,UAGI,EAAE;IAEN,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAC1C,IAAI,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC7F,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,CAAC,IAAI,CAAC;IACpB,OAAO,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC7B,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,CAAC,IAAI,CAAC;IACtB,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PageSettings, PagedAsyncIterableIterator, PagedResult } from \"./models.js\";\n\n/**\n * returns an async iterator that iterates over results. It also has a `byPage`\n * method that returns pages of items at once.\n *\n * @param pagedResult - an object that specifies how to get pages.\n * @returns a paged async iterator that iterates over results.\n */\n\nexport function getPagedAsyncIterator<\n TElement,\n TPage = TElement[],\n TPageSettings = PageSettings,\n TLink = string,\n>(\n pagedResult: PagedResult<TPage, TPageSettings, TLink>,\n): PagedAsyncIterableIterator<TElement, TPage, TPageSettings> {\n const iter = getItemAsyncIterator<TElement, TPage, TLink, TPageSettings>(pagedResult);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage:\n pagedResult?.byPage ??\n (((settings?: PageSettings) => {\n const { continuationToken, maxPageSize } = settings ?? {};\n return getPageAsyncIterator(pagedResult, {\n pageLink: continuationToken as unknown as TLink | undefined,\n maxPageSize,\n });\n }) as unknown as (settings?: TPageSettings) => AsyncIterableIterator<TPage>),\n };\n}\n\nasync function* getItemAsyncIterator<TElement, TPage, TLink, TPageSettings>(\n pagedResult: PagedResult<TPage, TPageSettings, TLink>,\n): AsyncIterableIterator<TElement> {\n const pages = getPageAsyncIterator(pagedResult);\n const firstVal = await pages.next();\n // if the result does not have an array shape, i.e. TPage = TElement, then we return it as is\n if (!Array.isArray(firstVal.value)) {\n // can extract elements from this page\n const { toElements } = pagedResult;\n if (toElements) {\n yield* toElements(firstVal.value) as TElement[];\n for await (const page of pages) {\n yield* toElements(page) as TElement[];\n }\n } else {\n yield firstVal.value;\n // `pages` is of type `AsyncIterableIterator<TPage>` but TPage = TElement in this case\n yield* pages as unknown as AsyncIterableIterator<TElement>;\n }\n } else {\n yield* firstVal.value;\n for await (const page of pages) {\n // pages is of type `AsyncIterableIterator<TPage>` so `page` is of type `TPage`. In this branch,\n // it must be the case that `TPage = TElement[]`\n yield* page as unknown as TElement[];\n }\n }\n}\n\nasync function* getPageAsyncIterator<TPage, TLink, TPageSettings>(\n pagedResult: PagedResult<TPage, TPageSettings, TLink>,\n options: {\n maxPageSize?: number;\n pageLink?: TLink;\n } = {},\n): AsyncIterableIterator<TPage> {\n const { pageLink, maxPageSize } = options;\n let response = await pagedResult.getPage(pageLink ?? pagedResult.firstPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n while (response.nextPageLink) {\n response = await pagedResult.getPage(response.nextPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n }\n}\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
|
-
import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from "tslib";
|
|
4
3
|
/**
|
|
5
4
|
* returns an async iterator that iterates over results. It also has a `byPage`
|
|
6
5
|
* method that returns pages of items at once.
|
|
@@ -9,7 +8,6 @@ import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from "tsli
|
|
|
9
8
|
* @returns a paged async iterator that iterates over results.
|
|
10
9
|
*/
|
|
11
10
|
export function getPagedAsyncIterator(pagedResult) {
|
|
12
|
-
var _a;
|
|
13
11
|
const iter = getItemAsyncIterator(pagedResult);
|
|
14
12
|
return {
|
|
15
13
|
next() {
|
|
@@ -18,85 +16,57 @@ export function getPagedAsyncIterator(pagedResult) {
|
|
|
18
16
|
[Symbol.asyncIterator]() {
|
|
19
17
|
return this;
|
|
20
18
|
},
|
|
21
|
-
byPage:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
byPage: pagedResult?.byPage ??
|
|
20
|
+
((settings) => {
|
|
21
|
+
const { continuationToken, maxPageSize } = settings ?? {};
|
|
22
|
+
return getPageAsyncIterator(pagedResult, {
|
|
23
|
+
pageLink: continuationToken,
|
|
24
|
+
maxPageSize,
|
|
25
|
+
});
|
|
26
|
+
}),
|
|
28
27
|
};
|
|
29
28
|
}
|
|
30
|
-
function getItemAsyncIterator(pagedResult) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
//
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
yield
|
|
41
|
-
try {
|
|
42
|
-
for (var _g = true, pages_1 = __asyncValues(pages), pages_1_1; pages_1_1 = yield __await(pages_1.next()), _a = pages_1_1.done, !_a; _g = true) {
|
|
43
|
-
_c = pages_1_1.value;
|
|
44
|
-
_g = false;
|
|
45
|
-
const page = _c;
|
|
46
|
-
yield __await(yield* __asyncDelegator(__asyncValues(toElements(page))));
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
50
|
-
finally {
|
|
51
|
-
try {
|
|
52
|
-
if (!_g && !_a && (_b = pages_1.return)) yield __await(_b.call(pages_1));
|
|
53
|
-
}
|
|
54
|
-
finally { if (e_1) throw e_1.error; }
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
yield yield __await(firstVal.value);
|
|
59
|
-
// `pages` is of type `AsyncIterableIterator<TPage>` but TPage = TElement in this case
|
|
60
|
-
yield __await(yield* __asyncDelegator(__asyncValues(pages)));
|
|
29
|
+
async function* getItemAsyncIterator(pagedResult) {
|
|
30
|
+
const pages = getPageAsyncIterator(pagedResult);
|
|
31
|
+
const firstVal = await pages.next();
|
|
32
|
+
// if the result does not have an array shape, i.e. TPage = TElement, then we return it as is
|
|
33
|
+
if (!Array.isArray(firstVal.value)) {
|
|
34
|
+
// can extract elements from this page
|
|
35
|
+
const { toElements } = pagedResult;
|
|
36
|
+
if (toElements) {
|
|
37
|
+
yield* toElements(firstVal.value);
|
|
38
|
+
for await (const page of pages) {
|
|
39
|
+
yield* toElements(page);
|
|
61
40
|
}
|
|
62
41
|
}
|
|
63
42
|
else {
|
|
64
|
-
yield
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
_f = pages_2_1.value;
|
|
68
|
-
_h = false;
|
|
69
|
-
const page = _f;
|
|
70
|
-
// pages is of type `AsyncIterableIterator<TPage>` so `page` is of type `TPage`. In this branch,
|
|
71
|
-
// it must be the case that `TPage = TElement[]`
|
|
72
|
-
yield __await(yield* __asyncDelegator(__asyncValues(page)));
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
76
|
-
finally {
|
|
77
|
-
try {
|
|
78
|
-
if (!_h && !_d && (_e = pages_2.return)) yield __await(_e.call(pages_2));
|
|
79
|
-
}
|
|
80
|
-
finally { if (e_2) throw e_2.error; }
|
|
81
|
-
}
|
|
43
|
+
yield firstVal.value;
|
|
44
|
+
// `pages` is of type `AsyncIterableIterator<TPage>` but TPage = TElement in this case
|
|
45
|
+
yield* pages;
|
|
82
46
|
}
|
|
83
|
-
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
yield* firstVal.value;
|
|
50
|
+
for await (const page of pages) {
|
|
51
|
+
// pages is of type `AsyncIterableIterator<TPage>` so `page` is of type `TPage`. In this branch,
|
|
52
|
+
// it must be the case that `TPage = TElement[]`
|
|
53
|
+
yield* page;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
84
56
|
}
|
|
85
|
-
function getPageAsyncIterator(
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
57
|
+
async function* getPageAsyncIterator(pagedResult, options = {}) {
|
|
58
|
+
const { pageLink, maxPageSize } = options;
|
|
59
|
+
let response = await pagedResult.getPage(pageLink ?? pagedResult.firstPageLink, maxPageSize);
|
|
60
|
+
if (!response) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
yield response.page;
|
|
64
|
+
while (response.nextPageLink) {
|
|
65
|
+
response = await pagedResult.getPage(response.nextPageLink, maxPageSize);
|
|
89
66
|
if (!response) {
|
|
90
|
-
return
|
|
91
|
-
}
|
|
92
|
-
yield yield __await(response.page);
|
|
93
|
-
while (response.nextPageLink) {
|
|
94
|
-
response = yield __await(pagedResult.getPage(response.nextPageLink, maxPageSize));
|
|
95
|
-
if (!response) {
|
|
96
|
-
return yield __await(void 0);
|
|
97
|
-
}
|
|
98
|
-
yield yield __await(response.page);
|
|
67
|
+
return;
|
|
99
68
|
}
|
|
100
|
-
|
|
69
|
+
yield response.page;
|
|
70
|
+
}
|
|
101
71
|
}
|
|
102
72
|
//# sourceMappingURL=getPagedAsyncIterator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPagedAsyncIterator.js","sourceRoot":"","sources":["../../src/getPagedAsyncIterator.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC
|
|
1
|
+
{"version":3,"file":"getPagedAsyncIterator.js","sourceRoot":"","sources":["../../src/getPagedAsyncIterator.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;;;;GAMG;AAEH,MAAM,UAAU,qBAAqB,CAMnC,WAAqD;IAErD,MAAM,IAAI,GAAG,oBAAoB,CAAwC,WAAW,CAAC,CAAC;IACtF,OAAO;QACL,IAAI;YACF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC;QACD,CAAC,MAAM,CAAC,aAAa,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EACJ,WAAW,EAAE,MAAM;YAClB,CAAC,CAAC,QAAuB,EAAE,EAAE;gBAC5B,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAG,QAAQ,IAAI,EAAE,CAAC;gBAC1D,OAAO,oBAAoB,CAAC,WAAW,EAAE;oBACvC,QAAQ,EAAE,iBAAiD;oBAC3D,WAAW;iBACZ,CAAC,CAAC;YACL,CAAC,CAA2E;KAC/E,CAAC;AACJ,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,oBAAoB,CAClC,WAAqD;IAErD,MAAM,KAAK,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACpC,6FAA6F;IAC7F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,sCAAsC;QACtC,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC;QACnC,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAe,CAAC;YAChD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC/B,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAe,CAAC;YACxC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,CAAC,KAAK,CAAC;YACrB,sFAAsF;YACtF,KAAK,CAAC,CAAC,KAAmD,CAAC;QAC7D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC/B,gGAAgG;YAChG,gDAAgD;YAChD,KAAK,CAAC,CAAC,IAA6B,CAAC;QACvC,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,oBAAoB,CAClC,WAAqD,EACrD,UAGI,EAAE;IAEN,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAC1C,IAAI,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC7F,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,CAAC,IAAI,CAAC;IACpB,OAAO,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC7B,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,CAAC,IAAI,CAAC;IACtB,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PageSettings, PagedAsyncIterableIterator, PagedResult } from \"./models.js\";\n\n/**\n * returns an async iterator that iterates over results. It also has a `byPage`\n * method that returns pages of items at once.\n *\n * @param pagedResult - an object that specifies how to get pages.\n * @returns a paged async iterator that iterates over results.\n */\n\nexport function getPagedAsyncIterator<\n TElement,\n TPage = TElement[],\n TPageSettings = PageSettings,\n TLink = string,\n>(\n pagedResult: PagedResult<TPage, TPageSettings, TLink>,\n): PagedAsyncIterableIterator<TElement, TPage, TPageSettings> {\n const iter = getItemAsyncIterator<TElement, TPage, TLink, TPageSettings>(pagedResult);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage:\n pagedResult?.byPage ??\n (((settings?: PageSettings) => {\n const { continuationToken, maxPageSize } = settings ?? {};\n return getPageAsyncIterator(pagedResult, {\n pageLink: continuationToken as unknown as TLink | undefined,\n maxPageSize,\n });\n }) as unknown as (settings?: TPageSettings) => AsyncIterableIterator<TPage>),\n };\n}\n\nasync function* getItemAsyncIterator<TElement, TPage, TLink, TPageSettings>(\n pagedResult: PagedResult<TPage, TPageSettings, TLink>,\n): AsyncIterableIterator<TElement> {\n const pages = getPageAsyncIterator(pagedResult);\n const firstVal = await pages.next();\n // if the result does not have an array shape, i.e. TPage = TElement, then we return it as is\n if (!Array.isArray(firstVal.value)) {\n // can extract elements from this page\n const { toElements } = pagedResult;\n if (toElements) {\n yield* toElements(firstVal.value) as TElement[];\n for await (const page of pages) {\n yield* toElements(page) as TElement[];\n }\n } else {\n yield firstVal.value;\n // `pages` is of type `AsyncIterableIterator<TPage>` but TPage = TElement in this case\n yield* pages as unknown as AsyncIterableIterator<TElement>;\n }\n } else {\n yield* firstVal.value;\n for await (const page of pages) {\n // pages is of type `AsyncIterableIterator<TPage>` so `page` is of type `TPage`. In this branch,\n // it must be the case that `TPage = TElement[]`\n yield* page as unknown as TElement[];\n }\n }\n}\n\nasync function* getPageAsyncIterator<TPage, TLink, TPageSettings>(\n pagedResult: PagedResult<TPage, TPageSettings, TLink>,\n options: {\n maxPageSize?: number;\n pageLink?: TLink;\n } = {},\n): AsyncIterableIterator<TPage> {\n const { pageLink, maxPageSize } = options;\n let response = await pagedResult.getPage(pageLink ?? pagedResult.firstPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n while (response.nextPageLink) {\n response = await pagedResult.getPage(response.nextPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@azure/core-paging",
|
|
3
3
|
"author": "Microsoft Corporation",
|
|
4
4
|
"sdk-type": "client",
|
|
5
|
-
"version": "1.6.3-alpha.
|
|
5
|
+
"version": "1.6.3-alpha.20250730.1",
|
|
6
6
|
"description": "Core types for paging async iterable iterators",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"main": "./dist/commonjs/index.js",
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
"react-native"
|
|
114
114
|
],
|
|
115
115
|
"selfLink": false,
|
|
116
|
-
"project": "
|
|
116
|
+
"project": "../../../tsconfig.src.build.json"
|
|
117
117
|
},
|
|
118
118
|
"module": "./dist/esm/index.js"
|
|
119
119
|
}
|