@luvio/compiler 0.63.2 → 0.66.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.
Files changed (35) hide show
  1. package/dist/codegen/adapter/adapter-browser-factory.js +2 -2
  2. package/dist/codegen/adapter/adapter-network-cache-policy.js +10 -2
  3. package/dist/codegen/adapter/adapter-network-cache-policy.js.map +1 -1
  4. package/dist/codegen/adapter/adapter-network.d.ts +2 -1
  5. package/dist/codegen/adapter/adapter-network.js +21 -4
  6. package/dist/codegen/adapter/adapter-network.js.map +1 -1
  7. package/dist/codegen/adapter/adapter-prepare-request.d.ts +6 -0
  8. package/dist/codegen/adapter/adapter-prepare-request.js +215 -0
  9. package/dist/codegen/adapter/adapter-prepare-request.js.map +1 -0
  10. package/dist/codegen/adapter/constants.d.ts +1 -0
  11. package/dist/codegen/adapter/constants.js +2 -1
  12. package/dist/codegen/adapter/constants.js.map +1 -1
  13. package/dist/codegen/adapter/index.js +3 -1
  14. package/dist/codegen/adapter/index.js.map +1 -1
  15. package/dist/codegen/pagination-utils/cursor-based.js +8 -6
  16. package/dist/codegen/pagination-utils/cursor-based.js.map +1 -1
  17. package/dist/codegen/pagination-utils/synthetic-cursor.d.ts +1 -0
  18. package/dist/codegen/pagination-utils/synthetic-cursor.js +274 -0
  19. package/dist/codegen/pagination-utils/synthetic-cursor.js.map +1 -0
  20. package/dist/codegen/resource/create-resource-request.js +3 -1
  21. package/dist/codegen/resource/create-resource-request.js.map +1 -1
  22. package/dist/codegen/shape/shape-ingest-paginated.js +89 -7
  23. package/dist/codegen/shape/shape-ingest-paginated.js.map +1 -1
  24. package/dist/codegen/shape/shape-select-paginated.js +87 -4
  25. package/dist/codegen/shape/shape-select-paginated.js.map +1 -1
  26. package/dist/generate.js +9 -0
  27. package/dist/generate.js.map +1 -1
  28. package/dist/intermediate/mock-payload.d.ts +1 -1
  29. package/dist/intermediate/resource.d.ts +2 -0
  30. package/dist/intermediate/resource.js.map +1 -1
  31. package/dist/parser/main.js +11 -3
  32. package/dist/parser/main.js.map +1 -1
  33. package/dist/utils/imports.js +1 -2
  34. package/dist/utils/imports.js.map +1 -1
  35. package/package.json +3 -3
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generatePaginationUtils = void 0;
7
+ const deindent_1 = __importDefault(require("../../utils/deindent"));
8
+ const constants_1 = require("./constants");
9
+ const cursor_based_1 = require("./cursor-based");
10
+ const TYPES = (0, deindent_1.default) `
11
+ import { ${cursor_based_1.NULLABLE_TOKEN_TYPE_IDENTIFIER}, ${cursor_based_1.TOKEN_MISSING_TYPE_IDENTIFIER} } from './cursor';
12
+
13
+ export { ${constants_1.PAGINATION_PARAMS_INTERFACE_IDENTIFIER} } from './cursor';
14
+
15
+ export type ${constants_1.PAGINATION_METADATA_TYPE_IDENTIFIER} = {
16
+ clientTokens: Record<string, number>;
17
+ serverTokens: string[];
18
+ __END__?: number;
19
+ };
20
+
21
+ export interface ${constants_1.PAGE_METADATA_IDENTIFIER} {
22
+ startOffset?: number;
23
+ endOffset?: number;
24
+ nextServerToken?: ${cursor_based_1.NULLABLE_TOKEN_TYPE_IDENTIFIER};
25
+ metadataProperties: Record<string, unknown>;
26
+ };
27
+ `;
28
+ const CLIENT_TOKEN_FROM_OFFSET = (0, deindent_1.default) `
29
+ export function clientTokenFromOffset(${constants_1.PAGINATION_METADATA_IDENTIFIER}: ${constants_1.PAGINATION_METADATA_TYPE_IDENTIFIER}, offset: number): string | ${cursor_based_1.TOKEN_MISSING_TYPE_IDENTIFIER} {
30
+ const { clientTokens } = ${constants_1.PAGINATION_METADATA_IDENTIFIER};
31
+
32
+ const tokens = Object.keys(clientTokens);
33
+ for (let i = 0, len = tokens.length; i < len; i++) {
34
+ const token = tokens[i];
35
+ if (clientTokens[token] === offset) {
36
+ return token;
37
+ }
38
+ }
39
+ }
40
+ `;
41
+ const OFFSET_FROM_CLIENT_TOKEN = (0, deindent_1.default) `
42
+ export function offsetFromClientToken(${constants_1.PAGINATION_METADATA_IDENTIFIER}: ${constants_1.PAGINATION_METADATA_TYPE_IDENTIFIER}, token: string | undefined): number {
43
+ if (token === undefined) {
44
+ return 0;
45
+ }
46
+
47
+ const offset = ${constants_1.PAGINATION_METADATA_IDENTIFIER}.clientTokens[token];
48
+ return offset === undefined ? -1 : offset;
49
+ }
50
+ `;
51
+ const OFFSET_FROM_SERVER_TOKEN = (0, deindent_1.default) `
52
+ export function offsetFromServerToken(${constants_1.PAGINATION_METADATA_IDENTIFIER}: ${constants_1.PAGINATION_METADATA_TYPE_IDENTIFIER}, token: string): number {
53
+ return ${constants_1.PAGINATION_METADATA_IDENTIFIER}.serverTokens.indexOf(token);
54
+ }
55
+ `;
56
+ const NEXT_TOKEN = (0, deindent_1.default) `
57
+ export function getNextPageTokens(
58
+ ${constants_1.PAGINATION_METADATA_IDENTIFIER}: ${constants_1.PAGINATION_METADATA_TYPE_IDENTIFIER},
59
+ pageEndOffset: number
60
+ ): {
61
+ clientToken: ${cursor_based_1.NULLABLE_TOKEN_TYPE_IDENTIFIER} | ${cursor_based_1.TOKEN_MISSING_TYPE_IDENTIFIER};
62
+ serverToken: ${cursor_based_1.NULLABLE_TOKEN_TYPE_IDENTIFIER} | ${cursor_based_1.TOKEN_MISSING_TYPE_IDENTIFIER};
63
+ } {
64
+ const listEndOffset = ${constants_1.PAGINATION_METADATA_IDENTIFIER}.${cursor_based_1.LIST_END_IDENTIFIER};
65
+
66
+ if (listEndOffset === undefined || pageEndOffset < listEndOffset) {
67
+ const clientToken = clientTokenFromOffset(${constants_1.PAGINATION_METADATA_IDENTIFIER}, pageEndOffset);
68
+ if (clientToken === undefined) {
69
+ return {
70
+ clientToken: undefined,
71
+ serverToken: undefined,
72
+ };
73
+ }
74
+
75
+ return {
76
+ clientToken,
77
+ serverToken: ${constants_1.PAGINATION_METADATA_IDENTIFIER}.serverTokens[pageEndOffset]
78
+ };
79
+ }
80
+
81
+ return {
82
+ clientToken: null,
83
+ serverToken: null,
84
+ };
85
+ }
86
+ `;
87
+ const PREVIOUS_TOKEN = (0, deindent_1.default) `
88
+ export function getPreviousClientToken(
89
+ ${constants_1.PAGINATION_METADATA_IDENTIFIER}: ${constants_1.PAGINATION_METADATA_TYPE_IDENTIFIER},
90
+ startOffset: number,
91
+ pageSize: number
92
+ ): ${cursor_based_1.NULLABLE_TOKEN_TYPE_IDENTIFIER} | ${cursor_based_1.TOKEN_MISSING_TYPE_IDENTIFIER} {
93
+ const previousPageOffset = startOffset - pageSize;
94
+ if (previousPageOffset < 0) {
95
+ return null;
96
+ }
97
+
98
+ const listEndOffset = ${constants_1.PAGINATION_METADATA_IDENTIFIER}.${cursor_based_1.LIST_END_IDENTIFIER};
99
+ if (listEndOffset !== undefined && previousPageOffset >= listEndOffset) {
100
+ return;
101
+ }
102
+
103
+ return clientTokenFromOffset(${constants_1.PAGINATION_METADATA_IDENTIFIER}, previousPageOffset);
104
+ }
105
+ `;
106
+ const PAGE_END_OFFSET = (0, deindent_1.default) `
107
+ export function pageEndOffset(
108
+ ${constants_1.PAGINATION_METADATA_IDENTIFIER}: ${constants_1.PAGINATION_METADATA_TYPE_IDENTIFIER},
109
+ startOffset: number,
110
+ pageSize: number
111
+ ): number {
112
+ const listEndOffset = ${constants_1.PAGINATION_METADATA_IDENTIFIER}.${cursor_based_1.LIST_END_IDENTIFIER};
113
+ const nextPageOffset = startOffset + pageSize;
114
+ if (listEndOffset === undefined) {
115
+ return nextPageOffset;
116
+ }
117
+
118
+ return Math.min(nextPageOffset, listEndOffset);
119
+ }
120
+ `;
121
+ const GET_PAGE_TOKEN_AND_OFFSET = (0, deindent_1.default) `
122
+ export function getPageTokenAndOffset(
123
+ ${constants_1.PAGINATION_METADATA_IDENTIFIER}: ${constants_1.PAGINATION_METADATA_TYPE_IDENTIFIER},
124
+ token: string | undefined,
125
+ ): [string, number] | undefined {
126
+ if (token === undefined) {
127
+ const startToken = clientTokenFromOffset(${constants_1.PAGINATION_METADATA_IDENTIFIER}, 0);
128
+ if (startToken === undefined) {
129
+ return;
130
+ }
131
+ return [startToken, 0];
132
+ }
133
+
134
+ const startOffset = offsetFromClientToken(${constants_1.PAGINATION_METADATA_IDENTIFIER}, token);
135
+ if (startOffset < 0) {
136
+ return;
137
+ }
138
+
139
+ return [token, startOffset];
140
+ }
141
+ `;
142
+ const SERVER_TOKEN_FOR_AT_MOST = (0, deindent_1.default) `
143
+ export function serverTokenForAtMost(
144
+ ${constants_1.PAGINATION_METADATA_IDENTIFIER}: ${constants_1.PAGINATION_METADATA_TYPE_IDENTIFIER},
145
+ maxOffset: number
146
+ ): [string | undefined, number] {
147
+ const { serverTokens } = ${constants_1.PAGINATION_METADATA_IDENTIFIER};
148
+ for (let i = maxOffset; i >= 0; i--) {
149
+ const token = serverTokens[i];
150
+ if (token !== undefined) {
151
+ return [token, i];
152
+ }
153
+ }
154
+
155
+ return [undefined, -1];
156
+ }
157
+ `;
158
+ const GENERATE_CLIENT_TOKEN = (0, deindent_1.default) `
159
+ export function generateClientToken(offset: number): string {
160
+ return 'client:' + offset;
161
+ }
162
+ `;
163
+ const ADD_TOKENS = (0, deindent_1.default) `
164
+ export function addTokens(
165
+ ${constants_1.PAGINATION_METADATA_IDENTIFIER}: ${constants_1.PAGINATION_METADATA_TYPE_IDENTIFIER},
166
+ offset: number,
167
+ clientToken: string,
168
+ serverToken?: string
169
+ ) {
170
+ ${constants_1.PAGINATION_METADATA_IDENTIFIER}.clientTokens[clientToken] = offset;
171
+ if (serverToken !== undefined) {
172
+ ${constants_1.PAGINATION_METADATA_IDENTIFIER}.serverTokens[offset] = serverToken;
173
+ }
174
+ }
175
+ `;
176
+ const MERGE_METADATA = (0, deindent_1.default) `
177
+ export function mergeMetadata(
178
+ existingMetadata: ${constants_1.PAGINATION_METADATA_TYPE_IDENTIFIER} | undefined,
179
+ incomingMetadata: ${constants_1.PAGINATION_METADATA_TYPE_IDENTIFIER}
180
+ ): ${constants_1.PAGINATION_METADATA_TYPE_IDENTIFIER} {
181
+ if (existingMetadata === undefined) {
182
+ return incomingMetadata;
183
+ }
184
+
185
+ const clientTokens = {
186
+ ...existingMetadata.clientTokens,
187
+ ...incomingMetadata.clientTokens
188
+ };
189
+
190
+ const serverTokens = mergeArrays(existingMetadata.serverTokens, incomingMetadata.serverTokens);
191
+ const ${cursor_based_1.LIST_END_IDENTIFIER} = incomingMetadata.hasOwnProperty('${cursor_based_1.LIST_END_IDENTIFIER}') ? incomingMetadata.${cursor_based_1.LIST_END_IDENTIFIER} : existingMetadata.${cursor_based_1.LIST_END_IDENTIFIER};
192
+
193
+ return {
194
+ clientTokens,
195
+ serverTokens,
196
+ ${cursor_based_1.LIST_END_IDENTIFIER}
197
+ }
198
+ }
199
+
200
+ function mergeArrays(existing: string[], incoming: string[]) {
201
+ const merged = [];
202
+ const len = Math.max(existing.length, incoming.length);
203
+ for (let i = 0; i < len; i++) {
204
+ const value = incoming[i] || existing[i];
205
+ merged.push(value);
206
+ }
207
+
208
+ return merged;
209
+ }
210
+ `;
211
+ const EQUALS_METADATA = (0, deindent_1.default) `
212
+ export function equalsMetadata(
213
+ existingMetadata: PaginationMetadata,
214
+ incomingMetadata: PaginationMetadata
215
+ ): boolean {
216
+ const {
217
+ clientTokens: existingClientTokens,
218
+ serverTokens: existingServerTokens,
219
+ ${cursor_based_1.LIST_END_IDENTIFIER}: existingListEnd
220
+ } = existingMetadata;
221
+ const {
222
+ clientTokens: incomingClientTokens,
223
+ serverTokens: incomingServerTokens,
224
+ ${cursor_based_1.LIST_END_IDENTIFIER}: incomingListEnd
225
+ } = incomingMetadata;
226
+
227
+ const existingKeys = Object.keys(existingClientTokens);
228
+ const incomingKeys = Object.keys(incomingClientTokens);
229
+
230
+ const clientTokensLength = existingKeys.length;
231
+ if (clientTokensLength !== incomingKeys.length) {
232
+ return false;
233
+ }
234
+
235
+ for (let i = 0; i < clientTokensLength; i++) {
236
+ const key = existingKeys[i];
237
+ if (existingClientTokens[key] !== incomingClientTokens[key]) {
238
+ return false;
239
+ }
240
+ }
241
+
242
+ const serverTokensLength = existingServerTokens.length;
243
+ if (serverTokensLength !== incomingServerTokens.length) {
244
+ return false;
245
+ }
246
+
247
+ for (let i = 0; i < serverTokensLength; i++) {
248
+ if (existingServerTokens[i] !== incomingServerTokens[i]) {
249
+ return false;
250
+ }
251
+ }
252
+
253
+ return existingListEnd === incomingListEnd;
254
+ }
255
+ `;
256
+ function generatePaginationUtils() {
257
+ return [
258
+ TYPES,
259
+ CLIENT_TOKEN_FROM_OFFSET,
260
+ OFFSET_FROM_CLIENT_TOKEN,
261
+ OFFSET_FROM_SERVER_TOKEN,
262
+ NEXT_TOKEN,
263
+ PREVIOUS_TOKEN,
264
+ PAGE_END_OFFSET,
265
+ GET_PAGE_TOKEN_AND_OFFSET,
266
+ SERVER_TOKEN_FOR_AT_MOST,
267
+ GENERATE_CLIENT_TOKEN,
268
+ ADD_TOKENS,
269
+ MERGE_METADATA,
270
+ EQUALS_METADATA,
271
+ ].join('\n\n');
272
+ }
273
+ exports.generatePaginationUtils = generatePaginationUtils;
274
+ //# sourceMappingURL=synthetic-cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthetic-cursor.js","sourceRoot":"","sources":["../../../src/codegen/pagination-utils/synthetic-cursor.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA4C;AAE5C,2CAKqB;AAErB,iDAIwB;AAExB,MAAM,KAAK,GAAG,IAAA,kBAAQ,EAAA;eACP,6CAA8B,KAAK,4CAA6B;;eAEhE,kDAAsC;;kBAEnC,+CAAmC;;;;;;uBAM9B,oCAAwB;;;4BAGnB,6CAA8B;;;CAGzD,CAAC;AAEF,MAAM,wBAAwB,GAAG,IAAA,kBAAQ,EAAA;4CACG,0CAA8B,KAAK,+CAAmC,+BAA+B,4CAA6B;mCAC3I,0CAA8B;;;;;;;;;;CAUhE,CAAC;AAEF,MAAM,wBAAwB,GAAG,IAAA,kBAAQ,EAAA;4CACG,0CAA8B,KAAK,+CAAmC;;;;;yBAKzF,0CAA8B;;;CAGtD,CAAC;AAEF,MAAM,wBAAwB,GAAG,IAAA,kBAAQ,EAAA;4CACG,0CAA8B,KAAK,+CAAmC;iBACjG,0CAA8B;;CAE9C,CAAC;AAEF,MAAM,UAAU,GAAG,IAAA,kBAAQ,EAAA;;UAEjB,0CAA8B,KAAK,+CAAmC;;;uBAGzD,6CAA8B,MAAM,4CAA6B;uBACjE,6CAA8B,MAAM,4CAA6B;;gCAExD,0CAA8B,IAAI,kCAAmB;;;wDAG7B,0CAA8B;;;;;;;;;;+BAUvD,0CAA8B;;;;;;;;;CAS5D,CAAC;AAEF,MAAM,cAAc,GAAG,IAAA,kBAAQ,EAAA;;UAErB,0CAA8B,KAAK,+CAAmC;;;SAGvE,6CAA8B,MAAM,4CAA6B;;;;;;gCAM1C,0CAA8B,IAAI,kCAAmB;;;;;uCAK9C,0CAA8B;;CAEpE,CAAC;AAEF,MAAM,eAAe,GAAG,IAAA,kBAAQ,EAAA;;UAEtB,0CAA8B,KAAK,+CAAmC;;;;gCAIhD,0CAA8B,IAAI,kCAAmB;;;;;;;;CAQpF,CAAC;AAEF,MAAM,yBAAyB,GAAG,IAAA,kBAAQ,EAAA;;UAEhC,0CAA8B,KAAK,+CAAmC;;;;uDAIzB,0CAA8B;;;;;;;oDAOjC,0CAA8B;;;;;;;CAOjF,CAAC;AAEF,MAAM,wBAAwB,GAAG,IAAA,kBAAQ,EAAA;;UAE/B,0CAA8B,KAAK,+CAAmC;;;mCAG7C,0CAA8B;;;;;;;;;;CAUhE,CAAC;AAEF,MAAM,qBAAqB,GAAG,IAAA,kBAAQ,EAAA;;;;CAIrC,CAAC;AAEF,MAAM,UAAU,GAAG,IAAA,kBAAQ,EAAA;;UAEjB,0CAA8B,KAAK,+CAAmC;;;;;UAKtE,0CAA8B;;cAE1B,0CAA8B;;;CAG3C,CAAC;AAEF,MAAM,cAAc,GAAG,IAAA,kBAAQ,EAAA;;4BAEH,+CAAmC;4BACnC,+CAAmC;SACtD,+CAAmC;;;;;;;;;;;gBAW5B,kCAAmB,uCAAuC,kCAAmB,yBAAyB,kCAAmB,uBAAuB,kCAAmB;;;;;cAKrK,kCAAmB;;;;;;;;;;;;;;CAchC,CAAC;AAEF,MAAM,eAAe,GAAG,IAAA,kBAAQ,EAAA;;;;;;;;cAQlB,kCAAmB;;;;;cAKnB,kCAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BhC,CAAC;AAEF,SAAgB,uBAAuB;IACnC,OAAO;QACH,KAAK;QACL,wBAAwB;QACxB,wBAAwB;QACxB,wBAAwB;QACxB,UAAU;QACV,cAAc;QACd,eAAe;QACf,yBAAyB;QACzB,wBAAwB;QACxB,qBAAqB;QACrB,UAAU;QACV,cAAc;QACd,eAAe;KAClB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnB,CAAC;AAhBD,0DAgBC"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.generateCreateResourceRequest = exports.CREATE_RESOURCE_REQUEST_IDENTIFIER = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const resource_1 = require("../../intermediate/resource");
9
+ const constants_1 = require("../adapter/constants");
9
10
  const utils_1 = require("../../intermediate/utils");
10
11
  const deindent_1 = __importDefault(require("../../utils/deindent"));
11
12
  const format_1 = require("../../utils/format");
@@ -117,7 +118,7 @@ function generateCreateResourceRequest(importContext, resource, compilerConfig,
117
118
  const fulfillProperty = fulfillIdentifier === '' ? '' : `fulfill: ${fulfillIdentifier},`;
118
119
  const resourceRequestConfig = importContext.importRamlArtifact(id, resource_params_1.RESOURCE_PARAMS_INTERFACE);
119
120
  return (0, deindent_1.default) `
120
- export function ${exports.CREATE_RESOURCE_REQUEST_IDENTIFIER}(${CONFIG_IDENTIFIER}: ${resourceRequestConfig}) {
121
+ export function ${exports.CREATE_RESOURCE_REQUEST_IDENTIFIER}(${CONFIG_IDENTIFIER}: ${resourceRequestConfig}): ${constants_1.ADAPTER_RESOURCE_REQUEST_IDENTIFIER} {
121
122
  ${headers}
122
123
 
123
124
  return {
@@ -128,6 +129,7 @@ function generateCreateResourceRequest(importContext, resource, compilerConfig,
128
129
  urlParams: ${urlParams},
129
130
  queryParams: ${queryParams},
130
131
  headers,
132
+ priority: 'normal',
131
133
  ${fulfillProperty}
132
134
  }
133
135
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-resource-request.js","sourceRoot":"","sources":["../../../src/codegen/resource/create-resource-request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-resource-request.js","sourceRoot":"","sources":["../../../src/codegen/resource/create-resource-request.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ const pagination_1 = require("../../intermediate/pagination");
9
9
  const constants_1 = require("./constants");
10
10
  const constants_2 = require("../shared/constants");
11
11
  const cursor_based_1 = require("../pagination-utils/cursor-based");
12
+ const constants_3 = require("../pagination-utils/constants");
12
13
  const PAGINATION_KEY_IDENTIFIER = 'paginationKey';
13
14
  const START_OFFSET_IDENTIFIER = 'startOffset';
14
15
  const NEXT_OFFSET_IDENTIFIER = 'nextOffset';
@@ -37,17 +38,86 @@ function generateIngestPagination(shapeConfig) {
37
38
  exports.generateIngestPagination = generateIngestPagination;
38
39
  function generateIngestPaginationMetadata(importContext, shapePaginated) {
39
40
  switch (shapePaginated.strategy) {
40
- case pagination_1.Strategy.SyntheticCursor: // TODO [W-10187230]: SyntheticCursor will generate its own ingest code
41
41
  case pagination_1.Strategy.Cursor: {
42
42
  return generateIngestCursorPaginationMetadata(importContext, shapePaginated);
43
43
  }
44
+ case pagination_1.Strategy.SyntheticCursor: {
45
+ return generateIngestSyntheticCursorPaginationMetadata(importContext, shapePaginated);
46
+ }
44
47
  }
45
48
  }
49
+ function generateIngestSyntheticCursorPaginationMetadata(importContext, shapePaginated) {
50
+ const { strategy, items, metadata: pageMetadata } = shapePaginated;
51
+ const assignMetadataLink = importContext.importTypeUtil('assignMetadataLink');
52
+ const paginationMetadataType = importContext.importPaginationUtil(strategy, constants_3.PAGINATION_METADATA_TYPE_IDENTIFIER);
53
+ const offsetFromServerToken = importContext.importPaginationUtil(strategy, 'offsetFromServerToken');
54
+ const mergeMetadata = importContext.importPaginationUtil(strategy, 'mergeMetadata');
55
+ const equalsMetadata = importContext.importPaginationUtil(strategy, 'equalsMetadata');
56
+ const generateClientToken = importContext.importPaginationUtil(strategy, 'generateClientToken');
57
+ const addTokens = importContext.importPaginationUtil(strategy, 'addTokens');
58
+ return (0, deindent_1.default) `
59
+ const ${EXISTING_PAGINATION_METADATA_IDENTIFIER}: ${paginationMetadataType} | undefined = ${constants_2.LUVIO_STORE_IDENTIFIER}.records[${PAGINATION_KEY_IDENTIFIER}];
60
+
61
+ const {
62
+ ${generatePaginationProperties(pageMetadata)},
63
+ ${items}: ${pagination_1.PaginatedTypeProperty.Items}
64
+ } = ${constants_1.INPUT_IDENTIFIER};
65
+
66
+ const ${START_OFFSET_IDENTIFIER} = ${EXISTING_PAGINATION_METADATA_IDENTIFIER} === undefined ? 0 : ${offsetFromServerToken}(${EXISTING_PAGINATION_METADATA_IDENTIFIER}, ${pagination_1.CursorPaginatedTypeProperty.Token});
67
+ if (process.env.NODE_ENV !== 'production') {
68
+ if (
69
+ ${START_OFFSET_IDENTIFIER} < 0 ||
70
+ (${constants_1.EXISTING_RECORD_IDENTIFIER} && ${constants_1.EXISTING_RECORD_IDENTIFIER}.${items}.length < ${START_OFFSET_IDENTIFIER})
71
+ ) {
72
+ throw new RangeError('${pageMetadata.token} value ' + ${pagination_1.CursorPaginatedTypeProperty.Token} + ' is not recognized');
73
+ }
74
+ }
75
+
76
+ const ${INCOMING_PAGINATION_METADATA_IDENTIFIER}: ${paginationMetadataType} = {
77
+ clientTokens: {},
78
+ serverTokens: []
79
+ };
80
+
81
+ const pageClientToken = ${generateClientToken}(${START_OFFSET_IDENTIFIER});
82
+ ${addTokens}(${INCOMING_PAGINATION_METADATA_IDENTIFIER}, ${START_OFFSET_IDENTIFIER}, pageClientToken, ${pagination_1.CursorPaginatedTypeProperty.Token});
83
+
84
+ const ${NEXT_OFFSET_IDENTIFIER} = ${START_OFFSET_IDENTIFIER} + ${pagination_1.PaginatedTypeProperty.Items}.length;
85
+ if (${pagination_1.CursorPaginatedTypeProperty.NextToken} === null) {
86
+ ${INCOMING_PAGINATION_METADATA_IDENTIFIER}.${cursor_based_1.LIST_END_IDENTIFIER} = ${NEXT_OFFSET_IDENTIFIER};
87
+ } else {
88
+ const nextClientToken = ${generateClientToken}(${NEXT_OFFSET_IDENTIFIER});
89
+ ${addTokens}(${INCOMING_PAGINATION_METADATA_IDENTIFIER}, ${NEXT_OFFSET_IDENTIFIER}, nextClientToken, ${pagination_1.CursorPaginatedTypeProperty.NextToken});
90
+ if (${EXISTING_PAGINATION_METADATA_IDENTIFIER} !== undefined) {
91
+ const listEndOffset = ${EXISTING_PAGINATION_METADATA_IDENTIFIER}.${cursor_based_1.LIST_END_IDENTIFIER};
92
+ if (listEndOffset !== undefined && ${NEXT_OFFSET_IDENTIFIER} >= listEndOffset) {
93
+ ${INCOMING_PAGINATION_METADATA_IDENTIFIER}.${cursor_based_1.LIST_END_IDENTIFIER} = undefined;
94
+ }
95
+ }
96
+ }
97
+ ${generatePreviousToken(importContext, shapePaginated)}
98
+
99
+ for (let i = startOffset + 1; i < nextOffset; i++) {
100
+ const itemClientToken = ${generateClientToken}(i);
101
+ ${addTokens}(${INCOMING_PAGINATION_METADATA_IDENTIFIER}, i, itemClientToken);
102
+ }
103
+
104
+ const mergedPaginationMetadata = ${mergeMetadata}(${EXISTING_PAGINATION_METADATA_IDENTIFIER}, ${INCOMING_PAGINATION_METADATA_IDENTIFIER});
105
+ if (
106
+ ${EXISTING_PAGINATION_METADATA_IDENTIFIER} === undefined ||
107
+ ${equalsMetadata}(${EXISTING_PAGINATION_METADATA_IDENTIFIER}, mergedPaginationMetadata) === false
108
+ ) {
109
+ luvio.storePublish(${PAGINATION_KEY_IDENTIFIER}, mergedPaginationMetadata);
110
+ }
111
+
112
+ ${assignMetadataLink}(${constants_1.INCOMING_RECORD_IDENTIFIER}, ${PAGINATION_KEY_IDENTIFIER});
113
+
114
+ `;
115
+ }
46
116
  function generateIngestCursorPaginationMetadata(importContext, shapePaginated) {
47
117
  const { strategy, items, metadata: pageMetadata } = shapePaginated;
48
118
  const assignMetadataLink = importContext.importTypeUtil('assignMetadataLink');
49
119
  const equalsObject = importContext.importTypeUtil('equalsObject');
50
- const paginationMetadataType = importContext.importPaginationUtil(strategy, 'PaginationMetadata');
120
+ const paginationMetadataType = importContext.importPaginationUtil(strategy, constants_3.PAGINATION_METADATA_TYPE_IDENTIFIER);
51
121
  const offsetFromToken = importContext.importPaginationUtil(strategy, 'offsetFromToken');
52
122
  const mergeMetadata = importContext.importPaginationUtil(strategy, 'mergeMetadata');
53
123
  return (0, deindent_1.default) `
@@ -84,7 +154,7 @@ function generateIngestCursorPaginationMetadata(importContext, shapePaginated) {
84
154
  }
85
155
  }
86
156
  }
87
- ${generatePreviousToken(pageMetadata)}
157
+ ${generatePreviousToken(importContext, shapePaginated)}
88
158
 
89
159
  const mergedPaginationMetadata = ${mergeMetadata}(${EXISTING_PAGINATION_METADATA_IDENTIFIER}, ${INCOMING_PAGINATION_METADATA_IDENTIFIER});
90
160
  if (
@@ -107,14 +177,26 @@ function generatePaginationProperties(metadataProperties) {
107
177
  })
108
178
  .join(',\n');
109
179
  }
110
- function generatePreviousToken(metadataProperties) {
111
- if (pagination_1.CursorPaginatedTypeProperty.PreviousToken in metadataProperties) {
180
+ function generatePreviousToken(importContext, paginatedType) {
181
+ const { strategy, metadata: metadataProperties } = paginatedType;
182
+ if (metadataProperties[pagination_1.CursorPaginatedTypeProperty.PreviousToken] === undefined) {
183
+ return '';
184
+ }
185
+ if (strategy === pagination_1.Strategy.SyntheticCursor) {
186
+ const generateClientToken = importContext.importPaginationUtil(strategy, 'generateClientToken');
187
+ const addTokens = importContext.importPaginationUtil(strategy, 'addTokens');
112
188
  return (0, deindent_1.default) `
113
189
  if (${pagination_1.CursorPaginatedTypeProperty.PreviousToken} !== null) {
114
- ${INCOMING_PAGINATION_METADATA_IDENTIFIER}[${pagination_1.CursorPaginatedTypeProperty.PreviousToken}] = ${START_OFFSET_IDENTIFIER} - ${pagination_1.CursorPaginatedTypeProperty.PageSize};
190
+ const previousOffset = ${START_OFFSET_IDENTIFIER} - ${pagination_1.CursorPaginatedTypeProperty.PageSize};
191
+ const previousClientToken = ${generateClientToken}(previousOffset);
192
+ ${addTokens}(${INCOMING_PAGINATION_METADATA_IDENTIFIER}, previousOffset, previousClientToken, ${pagination_1.CursorPaginatedTypeProperty.PreviousToken});
115
193
  }
116
194
  `;
117
195
  }
118
- return '';
196
+ return (0, deindent_1.default) `
197
+ if (${pagination_1.CursorPaginatedTypeProperty.PreviousToken} !== null) {
198
+ ${INCOMING_PAGINATION_METADATA_IDENTIFIER}[${pagination_1.CursorPaginatedTypeProperty.PreviousToken}] = ${START_OFFSET_IDENTIFIER} - ${pagination_1.CursorPaginatedTypeProperty.PageSize};
199
+ }
200
+ `;
119
201
  }
120
202
  //# sourceMappingURL=shape-ingest-paginated.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shape-ingest-paginated.js","sourceRoot":"","sources":["../../../src/codegen/shape/shape-ingest-paginated.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA4C;AAE5C,8DAMuC;AAIvC,2CAKqB;AACrB,mDAA6D;AAC7D,mEAAuE;AAEvE,MAAM,yBAAyB,GAAG,eAAe,CAAC;AAClD,MAAM,uBAAuB,GAAG,aAAa,CAAC;AAC9C,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAC5C,MAAM,uCAAuC,GAAG,4BAA4B,CAAC;AAC7E,MAAM,uCAAuC,GAAG,4BAA4B,CAAC;AAE7E,SAAgB,wBAAwB,CAAC,WAA+B;IACpE,MAAM,EACF,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EACtB,SAAS,EACT,aAAa,GAChB,GAAG,WAAW,CAAC;IAChB,MAAM,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,cAAc,KAAK,SAAS,EAAE;QAC9B,OAAO,EAAE,CAAC;KACb;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC;IAEjC,OAAO,IAAA,kBAAQ,EAAA;gBACH,yBAAyB,MAAM,0BAAc;UACnD,gCAAgC,CAAC,aAAa,EAAE,cAAc,CAAC;;cAE3D,sCAA0B;cAC1B,sCAA0B,IAAI,KAAK;qBAC5B,sCAA0B,IAAI,KAAK,aAAa,uBAAuB;qBACvE,sCAA0B,IAAI,KAAK;qBACnC,sCAA0B,IAAI,KAAK,UAAU,sBAAsB;;;KAGnF,CAAC;AACN,CAAC;AAzBD,4DAyBC;AAED,SAAS,gCAAgC,CACrC,aAA4B,EAC5B,cAA6B;IAE7B,QAAQ,cAAc,CAAC,QAAQ,EAAE;QAC7B,KAAK,qBAAkB,CAAC,eAAe,CAAC,CAAC,uEAAuE;QAChH,KAAK,qBAAkB,CAAC,MAAM,CAAC,CAAC;YAC5B,OAAO,sCAAsC,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;SAChF;KACJ;AACL,CAAC;AAED,SAAS,sCAAsC,CAC3C,aAA4B,EAC5B,cAA6B;IAE7B,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,cAAc,CAAC;IAEnE,MAAM,kBAAkB,GAAG,aAAa,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAElE,MAAM,sBAAsB,GAAG,aAAa,CAAC,oBAAoB,CAC7D,QAAQ,EACR,oBAAoB,CACvB,CAAC;IACF,MAAM,eAAe,GAAG,aAAa,CAAC,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IACxF,MAAM,aAAa,GAAG,aAAa,CAAC,oBAAoB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAEpF,OAAO,IAAA,kBAAQ,EAAA;gBACH,uCAAuC,KAAK,sBAAsB,kBAAkB,kCAAsB,YAAY,yBAAyB;;;cAGjJ,4BAA4B,CAAC,YAAY,CAAC;cAC1C,KAAK,KAAK,kCAAqB,CAAC,KAAK;cACrC,4BAAgB;;gBAEd,uBAAuB,MAAM,uCAAuC,wBAAwB,eAAe,IAAI,uCAAuC,KAC9J,wCAA2B,CAAC,KAChC;;;kBAGc,uBAAuB;mBACtB,sCAA0B,OAAO,sCAA0B,IAAI,KAAK,aAAa,uBAAuB;;wCAEnF,YAAY,CAAC,KAAK,cAClD,wCAA2B,CAAC,KAChC;;;;gBAIY,uCAAuC,KAAK,sBAAsB;eACnE,wCAA2B,CAAC,KAAK,MAAM,uBAAuB;;;gBAG7D,sBAAsB,MAAM,uBAAuB,MAC3D,kCAAqB,CAAC,KAC1B;cACU,wCAA2B,CAAC,SAAS;cACrC,uCAAuC,IAAI,kCAAmB,MAAM,sBAAsB;;cAE1F,uCAAuC,IAC7C,wCAA2B,CAAC,SAChC,OAAO,sBAAsB;kBACf,uCAAuC;wCACjB,uCAAuC,IAAI,kCAAmB;qDACjD,sBAAsB;sBACrD,uCAAuC,IAAI,kCAAmB;;;;UAI1E,qBAAqB,CAAC,YAAY,CAAC;;2CAEF,aAAa,IAAI,uCAAuC,KAAK,uCAAuC;;cAEjI,uCAAuC;cACvC,YAAY,IAAI,uCAAuC;;;;iCAIpC,yBAAyB;;;UAGhD,kBAAkB,IAAI,sCAA0B,KAAK,yBAAyB;;KAEnF,CAAC;AACN,CAAC;AAED,SAAS,4BAA4B,CAAC,kBAAmD;IACrF,OAAO,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC;SACpC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,EAAE;QAC9B,OAAO,GAAG,QAAQ,KAAK,YAAY,EAAE,CAAC;IAC1C,CAAC,CAAC;SACD,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,qBAAqB,CAAC,kBAAmD;IAC9E,IAAI,wCAA2B,CAAC,aAAa,IAAI,kBAAkB,EAAE;QACjE,OAAO,IAAA,kBAAQ,EAAA;kBACL,wCAA2B,CAAC,aAAa;kBACzC,uCAAuC,IAAI,wCAA2B,CAAC,aAAa,OAAO,uBAAuB,MAAM,wCAA2B,CAAC,QAAQ;;SAErK,CAAC;KACL;IAED,OAAO,EAAE,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"shape-ingest-paginated.js","sourceRoot":"","sources":["../../../src/codegen/shape/shape-ingest-paginated.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,8 @@ const END_OFFSET_IDENTIFIER = 'endOffset';
22
22
  const METADATA_PROPERTIES_IDENTIFIER = 'metadataProperties';
23
23
  function generateGetPageMetadata(shapePaginated, importContext) {
24
24
  switch (shapePaginated.strategy) {
25
- case pagination_1.Strategy.SyntheticCursor: // TODO [W-10187314]: SyntheticCursor will generate its own select code
25
+ case pagination_1.Strategy.SyntheticCursor:
26
+ return generateSyntheticCursorGetPageMetadata(shapePaginated, importContext);
26
27
  case pagination_1.Strategy.Cursor:
27
28
  return generateCursorGetPageMetadata(shapePaginated, importContext);
28
29
  default:
@@ -67,6 +68,78 @@ function generateCursorGetPageMetadata(shapePaginated, importContext) {
67
68
  }
68
69
  `;
69
70
  }
71
+ function generateSyntheticCursorGetPageMetadata(shapePaginated, importContext) {
72
+ const { strategy } = shapePaginated;
73
+ const paginationMetadataType = importContext.importPaginationUtil(strategy, constants_2.PAGINATION_METADATA_TYPE_IDENTIFIER);
74
+ const paginationParamsType = importContext.importPaginationUtil(strategy, constants_2.PAGINATION_PARAMS_INTERFACE_IDENTIFIER);
75
+ const pageMetadataType = importContext.importPaginationUtil(strategy, constants_2.PAGE_METADATA_IDENTIFIER);
76
+ const getPageTokenAndOffset = importContext.importPaginationUtil(strategy, 'getPageTokenAndOffset');
77
+ const pageEndOffset = importContext.importPaginationUtil(strategy, 'pageEndOffset');
78
+ return (0, deindent_1.default) `
79
+ function ${GET_PAGE_METADATA}(
80
+ ${constants_2.PAGINATION_METADATA_IDENTIFIER}: ${paginationMetadataType} | undefined,
81
+ ${constants_2.PAGINATION_PARAMS_IDENTIFIER}: ${paginationParamsType}
82
+ ): ${pageMetadataType} {
83
+ const metadataProperties: Record<string, unknown> = {};
84
+ const ${constants_1.SINK_IDENTIFIER}: ${pageMetadataType} = {
85
+ metadataProperties
86
+ };
87
+ if (${constants_2.PAGINATION_METADATA_IDENTIFIER} === undefined) {
88
+ return ${constants_1.SINK_IDENTIFIER};
89
+ }
90
+
91
+ const { ${pagination_1.CursorPaginationParameter.Token}, ${pagination_1.CursorPaginationParameter.PageSize} } = ${constants_2.PAGINATION_PARAMS_IDENTIFIER};
92
+ const pageTokenAndOffset = ${getPageTokenAndOffset}(${constants_2.PAGINATION_METADATA_IDENTIFIER}, ${pagination_1.CursorPaginationParameter.Token});
93
+ if (pageTokenAndOffset === undefined) {
94
+ return ${constants_1.SINK_IDENTIFIER};
95
+ }
96
+ const [ ${PAGE_TOKEN_IDENTIFIER}, ${START_OFFSET_IDENTIFIER} ] = pageTokenAndOffset;
97
+ const ${END_OFFSET_IDENTIFIER} = ${pageEndOffset}(${constants_2.PAGINATION_METADATA_IDENTIFIER}, ${START_OFFSET_IDENTIFIER}, ${pagination_1.CursorPaginationParameter.PageSize});
98
+
99
+ ${constants_1.SINK_IDENTIFIER}.${START_OFFSET_IDENTIFIER} = ${START_OFFSET_IDENTIFIER};
100
+ ${constants_1.SINK_IDENTIFIER}.${END_OFFSET_IDENTIFIER} = ${END_OFFSET_IDENTIFIER};
101
+
102
+ ${generateSyntheticCursorMetadataEvaluation(shapePaginated, importContext)}
103
+
104
+ return ${constants_1.SINK_IDENTIFIER};
105
+ }
106
+ `;
107
+ }
108
+ function generateSyntheticCursorMetadataEvaluation(shapePaginated, importContext) {
109
+ const { metadata: paginationProperties, strategy } = shapePaginated;
110
+ const getNextPageTokens = importContext.importPaginationUtil(strategy, 'getNextPageTokens');
111
+ const tokenPropertyName = paginationProperties[pagination_2.CursorPaginatedTypeProperty.Token];
112
+ const nextTokenPropertyName = paginationProperties[pagination_2.CursorPaginatedTypeProperty.NextToken];
113
+ const previousTokenPropertyName = paginationProperties[pagination_2.CursorPaginatedTypeProperty.PreviousToken];
114
+ const pageSizePropertyName = paginationProperties[pagination_2.CursorPaginatedTypeProperty.PageSize];
115
+ const countPropertyName = paginationProperties[pagination_2.CursorPaginatedTypeProperty.Count];
116
+ const statements = [];
117
+ statements.push((0, deindent_1.default) `
118
+ ${METADATA_PROPERTIES_IDENTIFIER}.${tokenPropertyName} = ${PAGE_TOKEN_IDENTIFIER};
119
+
120
+ const { clientToken: nextClientToken, serverToken: nextServerToken } = ${getNextPageTokens}(paginationMetadata, ${END_OFFSET_IDENTIFIER});
121
+ if (nextClientToken !== undefined) {
122
+ ${METADATA_PROPERTIES_IDENTIFIER}.${nextTokenPropertyName} = nextClientToken;
123
+ ${constants_1.SINK_IDENTIFIER}.nextServerToken = nextServerToken;
124
+ }
125
+ `);
126
+ if (previousTokenPropertyName !== undefined) {
127
+ const getPreviousPageToken = importContext.importPaginationUtil(strategy, 'getPreviousPageToken');
128
+ statements.push((0, deindent_1.default) `
129
+ const { clientToken: previousClientToken, serverToken: previousServerToken } = ${getPreviousPageToken}(paginationMetadata, ${START_OFFSET_IDENTIFIER}, ${pagination_2.CursorPaginatedTypeProperty.PageSize});
130
+ if (previousClientToken !== undefined) {
131
+ ${METADATA_PROPERTIES_IDENTIFIER}.${previousTokenPropertyName} = previousClientToken;
132
+ }
133
+ `);
134
+ }
135
+ if (pageSizePropertyName !== undefined) {
136
+ statements.push(`${METADATA_PROPERTIES_IDENTIFIER}.${pageSizePropertyName} = ${pagination_2.CursorPaginatedTypeProperty.PageSize};`);
137
+ }
138
+ if (countPropertyName !== undefined) {
139
+ statements.push(`${METADATA_PROPERTIES_IDENTIFIER}.${countPropertyName} = ${END_OFFSET_IDENTIFIER} - ${START_OFFSET_IDENTIFIER};`);
140
+ }
141
+ return statements.join('\n\n');
142
+ }
70
143
  function generateCursorMetadataEvaluation(shapePaginated, importContext) {
71
144
  const { metadata: paginationProperties, strategy } = shapePaginated;
72
145
  const getNextPageToken = importContext.importPaginationUtil(strategy, 'getNextPageToken');
@@ -108,11 +181,13 @@ function selectPaginated(shape, state, shapePaginated) {
108
181
  case pagination_1.Strategy.SyntheticCursor:
109
182
  case pagination_1.Strategy.Cursor:
110
183
  return selectCursorPaginated(shape, state, shapePaginated, paginationProperties);
184
+ default:
185
+ return '';
111
186
  }
112
187
  }
113
188
  exports.selectPaginated = selectPaginated;
114
189
  function selectCursorPaginated(shape, state, shapePaginated, paginationProperties) {
115
- const { items: itemsProperty, metadata: metadataProperties, strategy } = shapePaginated;
190
+ const { items: itemsProperty, strategy } = shapePaginated;
116
191
  const paginationMetadataType = state.importContext.importPaginationUtil(strategy, constants_2.PAGINATION_METADATA_TYPE_IDENTIFIER);
117
192
  return (0, deindent_1.default) `
118
193
  {
@@ -136,7 +211,7 @@ function selectCursorPaginated(shape, state, shapePaginated, paginationPropertie
136
211
  ${selectPaginatedItems(shape, state, itemsProperty)}
137
212
  }
138
213
 
139
- ${selectCursorPaginatedMetadata(metadataProperties)}
214
+ ${selectCursorPaginatedMetadata(shapePaginated)}
140
215
 
141
216
  ${selectProperties(shape, state, paginationProperties)}
142
217
 
@@ -218,11 +293,19 @@ function generateReadItemsFunction(shape, state) {
218
293
  }
219
294
  return '';
220
295
  }
221
- function selectCursorPaginatedMetadata(metadata) {
296
+ function selectCursorPaginatedMetadata(paginatedType) {
297
+ const { metadata, strategy } = paginatedType;
222
298
  const statements = [
223
299
  generateReadMetadata(metadata[pagination_2.CursorPaginatedTypeProperty.Token]),
224
300
  generateReadMetadata(metadata[pagination_2.CursorPaginatedTypeProperty.NextToken]),
225
301
  ];
302
+ if (strategy === pagination_1.Strategy.SyntheticCursor) {
303
+ statements.push((0, deindent_1.default) `
304
+ if (${CURRENT_PAGE_METADATA_IDENTIFIER}.nextServerToken === undefined) {
305
+ ${constants_1.READER_IDENTIFIER}.markStale();
306
+ }
307
+ `);
308
+ }
226
309
  const previousTokenPropertyName = metadata[pagination_2.CursorPaginatedTypeProperty.PreviousToken];
227
310
  if (previousTokenPropertyName !== undefined) {
228
311
  statements.push(generateReadMetadata(previousTokenPropertyName));