@kontent-ai/core-sdk 12.0.0-preview.10 → 12.0.0-preview.11
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/http/http.models.d.ts +0 -4
- package/dist/public_api.d.ts +1 -1
- package/dist/public_api.js.map +1 -1
- package/dist/sdk/sdk-models.d.ts +2 -2
- package/dist/sdk/sdk-queries.d.ts +5 -5
- package/dist/sdk/sdk-queries.js +16 -13
- package/dist/sdk/sdk-queries.js.map +1 -1
- package/dist/sdk-info.js +1 -1
- package/lib/http/http.models.ts +0 -5
- package/lib/public_api.ts +0 -1
- package/lib/sdk/sdk-models.ts +2 -2
- package/lib/sdk/sdk-queries.ts +35 -27
- package/package.json +1 -1
|
@@ -100,10 +100,6 @@ export type GetNextPageData<TResponsePayload extends JsonValue, TMeta> = (respon
|
|
|
100
100
|
export type PaginationConfig = {
|
|
101
101
|
readonly maxPagesCount?: number;
|
|
102
102
|
};
|
|
103
|
-
export type Pagination<TResponsePayload extends JsonValue, TMeta> = {
|
|
104
|
-
readonly getNextPageData: GetNextPageData<TResponsePayload, TMeta>;
|
|
105
|
-
readonly config?: PaginationConfig;
|
|
106
|
-
};
|
|
107
103
|
/**
|
|
108
104
|
* Defines the adapter responsible solely for executing HTTP requests.
|
|
109
105
|
*
|
package/dist/public_api.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** biome-ignore-all lint/performance/noBarrelFile: One barrel for exported API is fine */
|
|
2
2
|
export { getDefaultHttpAdapter } from "./http/http.adapter.js";
|
|
3
|
-
export type { AdapterRequestOptions, AdapterResponse, DefaultHttpServiceConfig, DownloadFileRequestOptions, ExecuteRequestOptions, GetNextPageData, HttpAdapter, HttpResponse, HttpService, HttpServiceStatus,
|
|
3
|
+
export type { AdapterRequestOptions, AdapterResponse, DefaultHttpServiceConfig, DownloadFileRequestOptions, ExecuteRequestOptions, GetNextPageData, HttpAdapter, HttpResponse, HttpService, HttpServiceStatus, PaginationConfig, UploadFileRequestOptions, } from "./http/http.models.js";
|
|
4
4
|
export { getDefaultHttpService } from "./http/http.service.js";
|
|
5
5
|
export type { CommonHeaderNames, ContinuationHeaderName, ErrorResponseData, Header, HttpMethod, RetryStrategyOptions, SDKInfo, ValidationError, } from "./models/core.models.js";
|
|
6
6
|
export { type ErrorReason, type ErrorReasonData, KontentSdkError } from "./models/error.models.js";
|
package/dist/public_api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_api.js","sourceRoot":"","sources":["../lib/public_api.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"public_api.js","sourceRoot":"","sources":["../lib/public_api.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAe/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAW/D,OAAO,EAA0C,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAcnG,OAAO,EACN,iBAAiB,EACjB,WAAW,EACX,wBAAwB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/sdk/sdk-models.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Shared query models/types intended to be reused across SDKs (e.g. Sync, Delivery, Management)
|
|
3
3
|
* to keep common code and behavior consistent.
|
|
4
4
|
*/
|
|
5
|
-
import type { AdapterResponse, HttpResponse, HttpService, RequestBody, ResponseData } from "../http/http.models.js";
|
|
5
|
+
import type { AdapterResponse, HttpResponse, HttpService, PaginationConfig, RequestBody, ResponseData } from "../http/http.models.js";
|
|
6
6
|
import type { KontentSdkError } from "../models/error.models.js";
|
|
7
7
|
import type { Prettify } from "../models/utility.models.js";
|
|
8
8
|
export type QueryResponseMeta<TMeta = unknown> = Pick<AdapterResponse, "status" | "responseHeaders" | "url"> & {
|
|
@@ -45,7 +45,7 @@ export type Query<TResponsePayload, TMeta = unknown> = {
|
|
|
45
45
|
toPromise(): Promise<QueryResult<QueryResponse<TResponsePayload, TMeta>>>;
|
|
46
46
|
};
|
|
47
47
|
export type PagingQuery<TResponsePayload, TMeta = unknown> = Query<TResponsePayload, TMeta> & {
|
|
48
|
-
toAllPromise(): Promise<PagingQueryResult<QueryResponse<TResponsePayload, TMeta>>>;
|
|
48
|
+
toAllPromise(config?: PaginationConfig): Promise<PagingQueryResult<QueryResponse<TResponsePayload, TMeta>>>;
|
|
49
49
|
};
|
|
50
50
|
export type SuccessfulHttpResponse<TResponsePayload extends ResponseData, TRequestBody extends RequestBody> = Prettify<Extract<HttpResponse<TResponsePayload, TRequestBody>, {
|
|
51
51
|
readonly success: true;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* to keep common code and behavior consistent.
|
|
4
4
|
*/
|
|
5
5
|
import type { ZodType } from "zod";
|
|
6
|
-
import type {
|
|
6
|
+
import type { GetNextPageData, HttpService, RequestBody } from "../http/http.models.js";
|
|
7
7
|
import type { Header, SDKInfo } from "../models/core.models.js";
|
|
8
8
|
import type { JsonValue } from "../models/json.models.js";
|
|
9
9
|
import type { EmptyObject } from "../models/utility.models.js";
|
|
@@ -16,7 +16,7 @@ type MetadataMapperConfig<TResponsePayload extends JsonValue, TRequestBody exten
|
|
|
16
16
|
readonly mapMetadata: MetadataMapper<TResponsePayload, TRequestBody, TMeta>;
|
|
17
17
|
};
|
|
18
18
|
type ResolveQueryData<TResponsePayload extends JsonValue, TRequestBody extends RequestBody, TMeta> = {
|
|
19
|
-
readonly
|
|
19
|
+
readonly nextPageState: NextPageStateWithRequest;
|
|
20
20
|
readonly request: Parameters<HttpService["requestAsync"]>[number] & {
|
|
21
21
|
readonly body: TRequestBody;
|
|
22
22
|
};
|
|
@@ -41,9 +41,9 @@ type NextPageStateWithRequest = {
|
|
|
41
41
|
readonly continuationToken?: never;
|
|
42
42
|
readonly nextPageUrl?: never;
|
|
43
43
|
};
|
|
44
|
-
export declare function createQuery<TResponsePayload extends JsonValue, TRequestBody extends RequestBody, TMeta = EmptyObject>(data: Omit<ResolveQueryData<TResponsePayload, TRequestBody, TMeta>, "continuationToken" | "
|
|
45
|
-
export declare function createPagingQuery<TResponsePayload extends JsonValue, TRequestBody extends RequestBody, TMeta = EmptyObject>(data: Omit<ResolveQueryData<TResponsePayload, TRequestBody, TMeta>, "
|
|
46
|
-
readonly
|
|
44
|
+
export declare function createQuery<TResponsePayload extends JsonValue, TRequestBody extends RequestBody, TMeta = EmptyObject>(data: Omit<ResolveQueryData<TResponsePayload, TRequestBody, TMeta>, "continuationToken" | "nextPageState" | "pageIndex">): Pick<Query<TResponsePayload, TMeta>, "toPromise">;
|
|
45
|
+
export declare function createPagingQuery<TResponsePayload extends JsonValue, TRequestBody extends RequestBody, TMeta = EmptyObject>(data: Omit<ResolveQueryData<TResponsePayload, TRequestBody, TMeta>, "nextPageState" | "pageIndex"> & {
|
|
46
|
+
readonly getNextPageData: GetNextPageData<TResponsePayload, TMeta>;
|
|
47
47
|
}): Pick<PagingQuery<TResponsePayload, TMeta>, "toPromise" | "toAllPromise">;
|
|
48
48
|
export declare function extractContinuationToken(responseHeaders: readonly Header[]): string | undefined;
|
|
49
49
|
export {};
|
package/dist/sdk/sdk-queries.js
CHANGED
|
@@ -11,7 +11,7 @@ export function createQuery(data) {
|
|
|
11
11
|
toPromise: async () => {
|
|
12
12
|
return await resolveQueryAsync({
|
|
13
13
|
...data,
|
|
14
|
-
|
|
14
|
+
nextPageState: {
|
|
15
15
|
hasNextPage: true,
|
|
16
16
|
pageSource: "firstRequest",
|
|
17
17
|
},
|
|
@@ -22,10 +22,11 @@ export function createQuery(data) {
|
|
|
22
22
|
export function createPagingQuery(data) {
|
|
23
23
|
return {
|
|
24
24
|
...createQuery(data),
|
|
25
|
-
toAllPromise: async () => {
|
|
25
|
+
toAllPromise: async (config) => {
|
|
26
26
|
return await resolvePagingQueryAsync({
|
|
27
27
|
...data,
|
|
28
28
|
pageIndex: 0,
|
|
29
|
+
paginationConfig: config,
|
|
29
30
|
});
|
|
30
31
|
},
|
|
31
32
|
};
|
|
@@ -34,21 +35,21 @@ export function extractContinuationToken(responseHeaders) {
|
|
|
34
35
|
return responseHeaders.find((header) => header.name.toLowerCase() === "X-Continuation".toLowerCase())
|
|
35
36
|
?.value;
|
|
36
37
|
}
|
|
37
|
-
function resolveNextPageState({
|
|
38
|
-
return match({
|
|
38
|
+
function resolveNextPageState({ paginationConfig, getNextPageData, pageIndex, response, }) {
|
|
39
|
+
return match({ getNextPageData, paginationConfig, pageIndex, response })
|
|
39
40
|
.returnType()
|
|
40
41
|
.with({ response: undefined }, () => ({
|
|
41
42
|
hasNextPage: true,
|
|
42
43
|
pageSource: "firstRequest",
|
|
43
44
|
}))
|
|
44
|
-
.with({
|
|
45
|
+
.with({ paginationConfig: { maxPagesCount: 0 } }, () => ({
|
|
45
46
|
hasNextPage: false,
|
|
46
47
|
}))
|
|
47
|
-
.with({
|
|
48
|
+
.with({ paginationConfig: { maxPagesCount: pageIndex } }, () => ({
|
|
48
49
|
hasNextPage: false,
|
|
49
50
|
}))
|
|
50
51
|
.with({ response: P.not(undefined) }, (m) => {
|
|
51
|
-
const responsePageData = m.
|
|
52
|
+
const responsePageData = m.getNextPageData(m.response);
|
|
52
53
|
return match(responsePageData)
|
|
53
54
|
.returnType()
|
|
54
55
|
.with({ continuationToken: P.string.minLength(1) }, (m) => ({
|
|
@@ -112,7 +113,8 @@ async function resolvePagingQueryAsync(data) {
|
|
|
112
113
|
}
|
|
113
114
|
async function fetchAllPagesAsync(data) {
|
|
114
115
|
const initialPageState = resolveNextPageState({
|
|
115
|
-
|
|
116
|
+
getNextPageData: data.getNextPageData,
|
|
117
|
+
paginationConfig: data.paginationConfig,
|
|
116
118
|
pageIndex: data.pageIndex,
|
|
117
119
|
response: undefined,
|
|
118
120
|
});
|
|
@@ -131,7 +133,7 @@ async function fetchAllPagesInternal({ queryData, nextPageState, responses, }) {
|
|
|
131
133
|
}
|
|
132
134
|
const { success, error, response } = await resolveQueryAsync({
|
|
133
135
|
...queryData,
|
|
134
|
-
|
|
136
|
+
nextPageState: nextPageState,
|
|
135
137
|
});
|
|
136
138
|
if (!success) {
|
|
137
139
|
return {
|
|
@@ -143,7 +145,8 @@ async function fetchAllPagesInternal({ queryData, nextPageState, responses, }) {
|
|
|
143
145
|
return await fetchAllPagesInternal({
|
|
144
146
|
queryData: queryData,
|
|
145
147
|
nextPageState: resolveNextPageState({
|
|
146
|
-
|
|
148
|
+
getNextPageData: queryData.getNextPageData,
|
|
149
|
+
paginationConfig: queryData.paginationConfig,
|
|
147
150
|
pageIndex: updatedResponses.length,
|
|
148
151
|
response: response,
|
|
149
152
|
}),
|
|
@@ -168,14 +171,14 @@ function validateAndBuildPagingResult(responses, requestUrl) {
|
|
|
168
171
|
lastContinuationToken: lastResponse.meta.continuationToken,
|
|
169
172
|
};
|
|
170
173
|
}
|
|
171
|
-
async function resolveQueryAsync({ config, request, mapMetadata, zodSchema, sdkInfo, authorizationApiKey,
|
|
174
|
+
async function resolveQueryAsync({ config, request, mapMetadata, zodSchema, sdkInfo, authorizationApiKey, nextPageState, }) {
|
|
172
175
|
const { success, response, error } = await getHttpService(config).requestAsync({
|
|
173
176
|
body: request.body,
|
|
174
|
-
url:
|
|
177
|
+
url: nextPageState?.nextPageUrl ?? request.url,
|
|
175
178
|
method: request.method,
|
|
176
179
|
requestHeaders: getCombinedRequestHeaders({
|
|
177
180
|
requestHeaders: request.requestHeaders ?? [],
|
|
178
|
-
continuationToken:
|
|
181
|
+
continuationToken: nextPageState?.continuationToken,
|
|
179
182
|
authorizationApiKey: authorizationApiKey,
|
|
180
183
|
sdkInfo,
|
|
181
184
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-queries.js","sourceRoot":"","sources":["../../lib/sdk/sdk-queries.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAqE1D,MAAM,UAAU,WAAW,CAC1B,
|
|
1
|
+
{"version":3,"file":"sdk-queries.js","sourceRoot":"","sources":["../../lib/sdk/sdk-queries.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk-info.js
CHANGED
package/lib/http/http.models.ts
CHANGED
|
@@ -125,11 +125,6 @@ export type PaginationConfig = {
|
|
|
125
125
|
readonly maxPagesCount?: number;
|
|
126
126
|
};
|
|
127
127
|
|
|
128
|
-
export type Pagination<TResponsePayload extends JsonValue, TMeta> = {
|
|
129
|
-
readonly getNextPageData: GetNextPageData<TResponsePayload, TMeta>;
|
|
130
|
-
readonly config?: PaginationConfig;
|
|
131
|
-
};
|
|
132
|
-
|
|
133
128
|
/**
|
|
134
129
|
* Defines the adapter responsible solely for executing HTTP requests.
|
|
135
130
|
*
|
package/lib/public_api.ts
CHANGED
package/lib/sdk/sdk-models.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* to keep common code and behavior consistent.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { AdapterResponse, HttpResponse, HttpService, RequestBody, ResponseData } from "../http/http.models.js";
|
|
6
|
+
import type { AdapterResponse, HttpResponse, HttpService, PaginationConfig, RequestBody, ResponseData } from "../http/http.models.js";
|
|
7
7
|
import type { KontentSdkError } from "../models/error.models.js";
|
|
8
8
|
import type { Prettify } from "../models/utility.models.js";
|
|
9
9
|
|
|
@@ -53,7 +53,7 @@ export type Query<TResponsePayload, TMeta = unknown> = {
|
|
|
53
53
|
};
|
|
54
54
|
|
|
55
55
|
export type PagingQuery<TResponsePayload, TMeta = unknown> = Query<TResponsePayload, TMeta> & {
|
|
56
|
-
toAllPromise(): Promise<PagingQueryResult<QueryResponse<TResponsePayload, TMeta>>>;
|
|
56
|
+
toAllPromise(config?: PaginationConfig): Promise<PagingQueryResult<QueryResponse<TResponsePayload, TMeta>>>;
|
|
57
57
|
};
|
|
58
58
|
|
|
59
59
|
export type SuccessfulHttpResponse<TResponsePayload extends ResponseData, TRequestBody extends RequestBody> = Prettify<
|
package/lib/sdk/sdk-queries.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { match, P } from "ts-pattern";
|
|
7
7
|
import type { ZodError, ZodType } from "zod";
|
|
8
|
-
import type { HttpService,
|
|
8
|
+
import type { GetNextPageData, HttpService, PaginationConfig, RequestBody } from "../http/http.models.js";
|
|
9
9
|
import { getDefaultHttpService } from "../http/http.service.js";
|
|
10
10
|
import type { CommonHeaderNames, ContinuationHeaderName, Header, SDKInfo } from "../models/core.models.js";
|
|
11
11
|
import type { JsonValue } from "../models/json.models.js";
|
|
@@ -34,7 +34,7 @@ type MetadataMapperConfig<TResponsePayload extends JsonValue, TRequestBody exten
|
|
|
34
34
|
readonly mapMetadata: MetadataMapper<TResponsePayload, TRequestBody, TMeta>;
|
|
35
35
|
};
|
|
36
36
|
type ResolveQueryData<TResponsePayload extends JsonValue, TRequestBody extends RequestBody, TMeta> = {
|
|
37
|
-
readonly
|
|
37
|
+
readonly nextPageState: NextPageStateWithRequest;
|
|
38
38
|
readonly request: Parameters<HttpService["requestAsync"]>[number] & { readonly body: TRequestBody };
|
|
39
39
|
readonly config: SdkConfig;
|
|
40
40
|
readonly zodSchema: ZodType<TResponsePayload>;
|
|
@@ -81,13 +81,13 @@ type FetchAllPagesResult<TResponsePayload extends JsonValue, TMeta> =
|
|
|
81
81
|
};
|
|
82
82
|
|
|
83
83
|
export function createQuery<TResponsePayload extends JsonValue, TRequestBody extends RequestBody, TMeta = EmptyObject>(
|
|
84
|
-
data: Omit<ResolveQueryData<TResponsePayload, TRequestBody, TMeta>, "continuationToken" | "
|
|
84
|
+
data: Omit<ResolveQueryData<TResponsePayload, TRequestBody, TMeta>, "continuationToken" | "nextPageState" | "pageIndex">,
|
|
85
85
|
): Pick<Query<TResponsePayload, TMeta>, "toPromise"> {
|
|
86
86
|
return {
|
|
87
87
|
toPromise: async () => {
|
|
88
88
|
return await resolveQueryAsync<TResponsePayload, TRequestBody, TMeta>({
|
|
89
89
|
...data,
|
|
90
|
-
|
|
90
|
+
nextPageState: {
|
|
91
91
|
hasNextPage: true,
|
|
92
92
|
pageSource: "firstRequest",
|
|
93
93
|
},
|
|
@@ -97,16 +97,17 @@ export function createQuery<TResponsePayload extends JsonValue, TRequestBody ext
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
export function createPagingQuery<TResponsePayload extends JsonValue, TRequestBody extends RequestBody, TMeta = EmptyObject>(
|
|
100
|
-
data: Omit<ResolveQueryData<TResponsePayload, TRequestBody, TMeta>, "
|
|
101
|
-
readonly
|
|
100
|
+
data: Omit<ResolveQueryData<TResponsePayload, TRequestBody, TMeta>, "nextPageState" | "pageIndex"> & {
|
|
101
|
+
readonly getNextPageData: GetNextPageData<TResponsePayload, TMeta>;
|
|
102
102
|
},
|
|
103
103
|
): Pick<PagingQuery<TResponsePayload, TMeta>, "toPromise" | "toAllPromise"> {
|
|
104
104
|
return {
|
|
105
105
|
...createQuery<TResponsePayload, TRequestBody, TMeta>(data),
|
|
106
|
-
toAllPromise: async () => {
|
|
106
|
+
toAllPromise: async (config: PaginationConfig) => {
|
|
107
107
|
return await resolvePagingQueryAsync<TResponsePayload, TRequestBody, TMeta>({
|
|
108
108
|
...data,
|
|
109
109
|
pageIndex: 0,
|
|
110
|
+
paginationConfig: config,
|
|
110
111
|
});
|
|
111
112
|
},
|
|
112
113
|
};
|
|
@@ -118,28 +119,30 @@ export function extractContinuationToken(responseHeaders: readonly Header[]): st
|
|
|
118
119
|
}
|
|
119
120
|
|
|
120
121
|
function resolveNextPageState<TResponsePayload extends JsonValue, TMeta>({
|
|
121
|
-
|
|
122
|
+
paginationConfig,
|
|
123
|
+
getNextPageData,
|
|
122
124
|
pageIndex,
|
|
123
125
|
response,
|
|
124
126
|
}: {
|
|
125
|
-
readonly
|
|
127
|
+
readonly getNextPageData: GetNextPageData<TResponsePayload, TMeta>;
|
|
128
|
+
readonly paginationConfig: PaginationConfig;
|
|
126
129
|
readonly pageIndex: number;
|
|
127
130
|
readonly response: QueryResponse<TResponsePayload, TMeta> | undefined;
|
|
128
131
|
}): NextPageState {
|
|
129
|
-
return match({
|
|
132
|
+
return match({ getNextPageData, paginationConfig, pageIndex, response })
|
|
130
133
|
.returnType<NextPageState>()
|
|
131
134
|
.with({ response: undefined }, () => ({
|
|
132
135
|
hasNextPage: true,
|
|
133
136
|
pageSource: "firstRequest",
|
|
134
137
|
}))
|
|
135
|
-
.with({
|
|
138
|
+
.with({ paginationConfig: { maxPagesCount: 0 } }, () => ({
|
|
136
139
|
hasNextPage: false,
|
|
137
140
|
}))
|
|
138
|
-
.with({
|
|
141
|
+
.with({ paginationConfig: { maxPagesCount: pageIndex } }, () => ({
|
|
139
142
|
hasNextPage: false,
|
|
140
143
|
}))
|
|
141
144
|
.with({ response: P.not(undefined) }, (m) => {
|
|
142
|
-
const responsePageData = m.
|
|
145
|
+
const responsePageData = m.getNextPageData(m.response);
|
|
143
146
|
|
|
144
147
|
return match(responsePageData)
|
|
145
148
|
.returnType<NextPageState>()
|
|
@@ -205,9 +208,10 @@ function getCombinedRequestHeaders({
|
|
|
205
208
|
];
|
|
206
209
|
}
|
|
207
210
|
|
|
208
|
-
async function resolvePagingQueryAsync<TResponsePayload extends JsonValue, TRequestBody extends RequestBody, TMeta = EmptyObject>(
|
|
209
|
-
data: Omit<ResolveQueryData<TResponsePayload, TRequestBody, TMeta>, "
|
|
210
|
-
readonly
|
|
211
|
+
async function resolvePagingQueryAsync<TResponsePayload extends JsonValue, TRequestBody extends RequestBody = null, TMeta = EmptyObject>(
|
|
212
|
+
data: Omit<ResolveQueryData<TResponsePayload, TRequestBody, TMeta>, "nextPageState" | "getNextPageData"> & {
|
|
213
|
+
readonly getNextPageData: GetNextPageData<TResponsePayload, TMeta>;
|
|
214
|
+
readonly paginationConfig: PaginationConfig;
|
|
211
215
|
readonly pageIndex: number;
|
|
212
216
|
},
|
|
213
217
|
): Promise<PagingQueryPromiseResult<TResponsePayload, TMeta>> {
|
|
@@ -223,14 +227,16 @@ async function resolvePagingQueryAsync<TResponsePayload extends JsonValue, TRequ
|
|
|
223
227
|
return validateAndBuildPagingResult(responses, data.request.url);
|
|
224
228
|
}
|
|
225
229
|
|
|
226
|
-
async function fetchAllPagesAsync<TResponsePayload extends JsonValue, TRequestBody extends RequestBody, TMeta = EmptyObject>(
|
|
227
|
-
data: Omit<ResolveQueryData<TResponsePayload, TRequestBody, TMeta>, "
|
|
228
|
-
readonly
|
|
230
|
+
async function fetchAllPagesAsync<TResponsePayload extends JsonValue, TRequestBody extends RequestBody = null, TMeta = EmptyObject>(
|
|
231
|
+
data: Omit<ResolveQueryData<TResponsePayload, TRequestBody, TMeta>, "nextPageState"> & {
|
|
232
|
+
readonly getNextPageData: GetNextPageData<TResponsePayload, TMeta>;
|
|
233
|
+
readonly paginationConfig: PaginationConfig;
|
|
229
234
|
readonly pageIndex: number;
|
|
230
235
|
},
|
|
231
236
|
): Promise<FetchAllPagesResult<TResponsePayload, TMeta>> {
|
|
232
237
|
const initialPageState: NextPageState = resolveNextPageState({
|
|
233
|
-
|
|
238
|
+
getNextPageData: data.getNextPageData,
|
|
239
|
+
paginationConfig: data.paginationConfig,
|
|
234
240
|
pageIndex: data.pageIndex,
|
|
235
241
|
response: undefined,
|
|
236
242
|
});
|
|
@@ -247,8 +253,9 @@ async function fetchAllPagesInternal<TResponsePayload extends JsonValue, TReques
|
|
|
247
253
|
nextPageState,
|
|
248
254
|
responses,
|
|
249
255
|
}: {
|
|
250
|
-
readonly queryData: Omit<ResolveQueryData<TResponsePayload, TRequestBody, TMeta>, "
|
|
251
|
-
readonly
|
|
256
|
+
readonly queryData: Omit<ResolveQueryData<TResponsePayload, TRequestBody, TMeta>, "nextPageState"> & {
|
|
257
|
+
readonly getNextPageData: GetNextPageData<TResponsePayload, TMeta>;
|
|
258
|
+
readonly paginationConfig: PaginationConfig;
|
|
252
259
|
readonly pageIndex: number;
|
|
253
260
|
};
|
|
254
261
|
readonly nextPageState: NextPageState;
|
|
@@ -263,7 +270,7 @@ async function fetchAllPagesInternal<TResponsePayload extends JsonValue, TReques
|
|
|
263
270
|
|
|
264
271
|
const { success, error, response } = await resolveQueryAsync<TResponsePayload, TRequestBody, TMeta>({
|
|
265
272
|
...queryData,
|
|
266
|
-
|
|
273
|
+
nextPageState: nextPageState,
|
|
267
274
|
});
|
|
268
275
|
|
|
269
276
|
if (!success) {
|
|
@@ -278,7 +285,8 @@ async function fetchAllPagesInternal<TResponsePayload extends JsonValue, TReques
|
|
|
278
285
|
return await fetchAllPagesInternal<TResponsePayload, TRequestBody, TMeta>({
|
|
279
286
|
queryData: queryData,
|
|
280
287
|
nextPageState: resolveNextPageState({
|
|
281
|
-
|
|
288
|
+
getNextPageData: queryData.getNextPageData,
|
|
289
|
+
paginationConfig: queryData.paginationConfig,
|
|
282
290
|
pageIndex: updatedResponses.length,
|
|
283
291
|
response: response,
|
|
284
292
|
}),
|
|
@@ -317,15 +325,15 @@ async function resolveQueryAsync<TResponsePayload extends JsonValue, TRequestBod
|
|
|
317
325
|
zodSchema,
|
|
318
326
|
sdkInfo,
|
|
319
327
|
authorizationApiKey,
|
|
320
|
-
|
|
328
|
+
nextPageState,
|
|
321
329
|
}: ResolveQueryData<TResponsePayload, TRequestBody, TMeta>): QueryPromiseResult<TResponsePayload, TMeta> {
|
|
322
330
|
const { success, response, error } = await getHttpService(config).requestAsync<TResponsePayload, TRequestBody>({
|
|
323
331
|
body: request.body,
|
|
324
|
-
url:
|
|
332
|
+
url: nextPageState?.nextPageUrl ?? request.url,
|
|
325
333
|
method: request.method,
|
|
326
334
|
requestHeaders: getCombinedRequestHeaders({
|
|
327
335
|
requestHeaders: request.requestHeaders ?? [],
|
|
328
|
-
continuationToken:
|
|
336
|
+
continuationToken: nextPageState?.continuationToken,
|
|
329
337
|
authorizationApiKey: authorizationApiKey,
|
|
330
338
|
sdkInfo,
|
|
331
339
|
}),
|