@aws-amplify/api-graphql 4.0.1-api-v6-models.3eb7748.0 → 4.0.1-api-v6-models.01b2bb8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/internals/APIClient.d.ts +4 -0
- package/lib/internals/APIClient.js +60 -60
- package/lib/internals/generateModelsProperty.js +163 -5
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/utils/findIndexByFields.d.ts +9 -0
- package/lib/utils/findIndexByFields.js +28 -0
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/index.js +5 -1
- package/lib/utils/resolvePKFields.d.ts +13 -0
- package/lib/utils/resolvePKFields.js +16 -0
- package/lib-esm/internals/APIClient.d.ts +4 -0
- package/lib-esm/internals/APIClient.js +60 -60
- package/lib-esm/internals/generateModelsProperty.js +165 -7
- package/lib-esm/tsconfig.tsbuildinfo +1 -1
- package/lib-esm/utils/findIndexByFields.d.ts +9 -0
- package/lib-esm/utils/findIndexByFields.js +24 -0
- package/lib-esm/utils/index.d.ts +2 -0
- package/lib-esm/utils/index.js +2 -0
- package/lib-esm/utils/resolvePKFields.d.ts +13 -0
- package/lib-esm/utils/resolvePKFields.js +12 -0
- package/package.json +5 -5
- package/src/internals/APIClient.ts +69 -56
- package/src/internals/generateModelsProperty.ts +147 -4
- package/src/utils/findIndexByFields.ts +29 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/resolvePKFields.ts +22 -0
|
@@ -42,6 +42,10 @@ export declare const graphQLOperationsInfo: {
|
|
|
42
42
|
operationPrefix: "onDelete";
|
|
43
43
|
usePlural: boolean;
|
|
44
44
|
};
|
|
45
|
+
OBSERVE_QUERY: {
|
|
46
|
+
operationPrefix: "observeQuery";
|
|
47
|
+
usePlural: boolean;
|
|
48
|
+
};
|
|
45
49
|
};
|
|
46
50
|
export type ModelOperation = keyof typeof graphQLOperationsInfo;
|
|
47
51
|
/**
|
|
@@ -145,9 +145,10 @@ exports.graphQLOperationsInfo = {
|
|
|
145
145
|
ONCREATE: { operationPrefix: 'onCreate', usePlural: false },
|
|
146
146
|
ONUPDATE: { operationPrefix: 'onUpdate', usePlural: false },
|
|
147
147
|
ONDELETE: { operationPrefix: 'onDelete', usePlural: false },
|
|
148
|
+
OBSERVE_QUERY: { operationPrefix: 'observeQuery', usePlural: false },
|
|
148
149
|
};
|
|
149
150
|
var graphQLDocumentsCache = new Map();
|
|
150
|
-
var
|
|
151
|
+
var SELECTION_SET_WILDCARD = '*';
|
|
151
152
|
function defaultSelectionSetForModel(modelDefinition) {
|
|
152
153
|
// fields that are explicitly part of the graphql schema; not
|
|
153
154
|
// inferred from owner auth rules.
|
|
@@ -184,71 +185,54 @@ var FIELD_IR = '';
|
|
|
184
185
|
* ```
|
|
185
186
|
*/
|
|
186
187
|
function customSelectionSetToIR(modelIntrospection, modelName, selectionSet) {
|
|
187
|
-
var e_2, _a;
|
|
188
|
-
var _b, _c, _d, _e;
|
|
189
188
|
var modelDefinition = modelIntrospection[modelName];
|
|
190
|
-
var
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
var
|
|
196
|
-
if (
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
if (!relatedModel) {
|
|
200
|
-
// TODO: may need to change this to support custom types
|
|
201
|
-
throw Error("".concat(modelFieldName, " is not a model field"));
|
|
202
|
-
}
|
|
203
|
-
if (selectedField === SELECTION_SET_ALL_NESTED) {
|
|
204
|
-
var relatedModelDefinition = modelIntrospection[relatedModel];
|
|
205
|
-
var defaultSelectionSet = defaultSelectionSetForModel(relatedModelDefinition);
|
|
206
|
-
var reduced = defaultSelectionSet.reduce(function (acc, curVal) {
|
|
207
|
-
acc[curVal] = FIELD_IR;
|
|
208
|
-
return acc;
|
|
209
|
-
}, {});
|
|
210
|
-
if ((_d = fields[modelFieldName]) === null || _d === void 0 ? void 0 : _d.isArray) {
|
|
211
|
-
intermediateSelectionSet[modelFieldName] = {
|
|
212
|
-
items: reduced,
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
intermediateSelectionSet[modelFieldName] = reduced;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
else {
|
|
220
|
-
var getNestedSelSet = customSelectionSetToIR(modelIntrospection, relatedModel, [selectedField]);
|
|
221
|
-
if ((_e = fields[modelFieldName]) === null || _e === void 0 ? void 0 : _e.isArray) {
|
|
222
|
-
var existing = intermediateSelectionSet[modelFieldName] || { items: {} };
|
|
223
|
-
var merged = tslib_1.__assign(tslib_1.__assign({}, existing.items), getNestedSelSet);
|
|
224
|
-
intermediateSelectionSet[modelFieldName] = { items: merged };
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
var existingItems = intermediateSelectionSet[modelFieldName] || {};
|
|
228
|
-
var merged = tslib_1.__assign(tslib_1.__assign({}, existingItems), getNestedSelSet);
|
|
229
|
-
intermediateSelectionSet[modelFieldName] = merged;
|
|
230
|
-
}
|
|
231
|
-
}
|
|
189
|
+
var modelFields = modelDefinition.fields;
|
|
190
|
+
return selectionSet.reduce(function (resultObj, path) {
|
|
191
|
+
var _a, _b, _c;
|
|
192
|
+
var _d = tslib_1.__read(path.split('.')), fieldName = _d[0], nested = _d[1], rest = _d.slice(2);
|
|
193
|
+
if (nested) {
|
|
194
|
+
var relatedModel = (_b = (_a = modelFields[fieldName]) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.model;
|
|
195
|
+
if (!relatedModel) {
|
|
196
|
+
// TODO: may need to change this to support custom types
|
|
197
|
+
throw Error("".concat(fieldName, " is not a model field"));
|
|
232
198
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
199
|
+
var relatedModelDefinition = modelIntrospection[relatedModel];
|
|
200
|
+
var selectionSet_1 = nested === SELECTION_SET_WILDCARD
|
|
201
|
+
? defaultSelectionSetIR(relatedModelDefinition)
|
|
202
|
+
: // if we have a path like 'field.anotherField' recursively build up selection set IR
|
|
203
|
+
customSelectionSetToIR(modelIntrospection, relatedModel, [
|
|
204
|
+
tslib_1.__spreadArray([nested], tslib_1.__read(rest), false).join('.'),
|
|
205
|
+
]);
|
|
206
|
+
if ((_c = modelFields[fieldName]) === null || _c === void 0 ? void 0 : _c.isArray) {
|
|
207
|
+
var existing = resultObj[fieldName] || {
|
|
208
|
+
items: {},
|
|
209
|
+
};
|
|
210
|
+
var merged_1 = tslib_1.__assign(tslib_1.__assign({}, existing.items), selectionSet_1);
|
|
211
|
+
resultObj[fieldName] = { items: merged_1 };
|
|
212
|
+
return resultObj;
|
|
239
213
|
}
|
|
214
|
+
var existingItems = resultObj[fieldName] || {};
|
|
215
|
+
var merged = tslib_1.__assign(tslib_1.__assign({}, existingItems), selectionSet_1);
|
|
216
|
+
resultObj[fieldName] = merged;
|
|
217
|
+
return resultObj;
|
|
240
218
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
try {
|
|
245
|
-
if (selectionSet_1_1 && !selectionSet_1_1.done && (_a = selectionSet_1.return)) _a.call(selectionSet_1);
|
|
219
|
+
var exists = Boolean(modelFields[fieldName]);
|
|
220
|
+
if (!exists) {
|
|
221
|
+
throw Error("".concat(fieldName, " is not a field of model ").concat(modelName));
|
|
246
222
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
223
|
+
resultObj[fieldName] = FIELD_IR;
|
|
224
|
+
return resultObj;
|
|
225
|
+
}, {});
|
|
250
226
|
}
|
|
251
227
|
exports.customSelectionSetToIR = customSelectionSetToIR;
|
|
228
|
+
var defaultSelectionSetIR = function (relatedModelDefinition) {
|
|
229
|
+
var defaultSelectionSet = defaultSelectionSetForModel(relatedModelDefinition);
|
|
230
|
+
var reduced = defaultSelectionSet.reduce(function (acc, curVal) {
|
|
231
|
+
acc[curVal] = FIELD_IR;
|
|
232
|
+
return acc;
|
|
233
|
+
}, {});
|
|
234
|
+
return reduced;
|
|
235
|
+
};
|
|
252
236
|
/**
|
|
253
237
|
* Stringifies selection set IR
|
|
254
238
|
* * @example
|
|
@@ -334,9 +318,11 @@ function generateGraphQLDocument(modelIntrospection, modelName, modelOperation,
|
|
|
334
318
|
case 'LIST':
|
|
335
319
|
graphQLArguments !== null && graphQLArguments !== void 0 ? graphQLArguments : (graphQLArguments = {
|
|
336
320
|
filter: "Model".concat(name, "FilterInput"),
|
|
321
|
+
limit: 'Int',
|
|
322
|
+
nextToken: 'String',
|
|
337
323
|
});
|
|
338
324
|
graphQLOperationType !== null && graphQLOperationType !== void 0 ? graphQLOperationType : (graphQLOperationType = 'query');
|
|
339
|
-
graphQLSelectionSet !== null && graphQLSelectionSet !== void 0 ? graphQLSelectionSet : (graphQLSelectionSet = "items { ".concat(selectionSetFields, " }"));
|
|
325
|
+
graphQLSelectionSet !== null && graphQLSelectionSet !== void 0 ? graphQLSelectionSet : (graphQLSelectionSet = "items { ".concat(selectionSetFields, " } nextToken __typename"));
|
|
340
326
|
case 'ONCREATE':
|
|
341
327
|
case 'ONUPDATE':
|
|
342
328
|
case 'ONDELETE':
|
|
@@ -345,6 +331,10 @@ function generateGraphQLDocument(modelIntrospection, modelName, modelOperation,
|
|
|
345
331
|
});
|
|
346
332
|
graphQLOperationType !== null && graphQLOperationType !== void 0 ? graphQLOperationType : (graphQLOperationType = 'subscription');
|
|
347
333
|
graphQLSelectionSet !== null && graphQLSelectionSet !== void 0 ? graphQLSelectionSet : (graphQLSelectionSet = selectionSetFields);
|
|
334
|
+
break;
|
|
335
|
+
case 'OBSERVE_QUERY':
|
|
336
|
+
default:
|
|
337
|
+
throw new Error('Internal error: Attempted to generate graphql document for observeQuery. Please report this error.');
|
|
348
338
|
}
|
|
349
339
|
var graphQLDocument = "".concat(graphQLOperationType).concat(graphQLArguments
|
|
350
340
|
? "(".concat(Object.entries(graphQLArguments).map(function (_a) {
|
|
@@ -393,6 +383,13 @@ function buildGraphQLVariables(modelDefinition, operation, arg, modelIntrospecti
|
|
|
393
383
|
}
|
|
394
384
|
break;
|
|
395
385
|
case 'LIST':
|
|
386
|
+
if (arg === null || arg === void 0 ? void 0 : arg.filter) {
|
|
387
|
+
variables.filter = arg.filter;
|
|
388
|
+
}
|
|
389
|
+
if (arg === null || arg === void 0 ? void 0 : arg.nextToken) {
|
|
390
|
+
variables.nextToken = arg.nextToken;
|
|
391
|
+
}
|
|
392
|
+
break;
|
|
396
393
|
case 'ONCREATE':
|
|
397
394
|
case 'ONUPDATE':
|
|
398
395
|
case 'ONDELETE':
|
|
@@ -400,6 +397,9 @@ function buildGraphQLVariables(modelDefinition, operation, arg, modelIntrospecti
|
|
|
400
397
|
variables = { filter: arg.filter };
|
|
401
398
|
}
|
|
402
399
|
break;
|
|
400
|
+
case 'OBSERVE_QUERY':
|
|
401
|
+
throw new Error('Internal error: Attempted to build variables for observeQuery. Please report this error.');
|
|
402
|
+
break;
|
|
403
403
|
default:
|
|
404
404
|
var exhaustiveCheck = operation;
|
|
405
405
|
throw new Error("Unhandled operation case: ".concat(exhaustiveCheck));
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.generateModelsProperty = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var APIClient_1 = require("./APIClient");
|
|
6
|
+
var utils_1 = require("../utils");
|
|
6
7
|
var rxjs_1 = require("rxjs");
|
|
7
8
|
function generateModelsProperty(client, params) {
|
|
8
9
|
var e_1, _a;
|
|
@@ -22,7 +23,7 @@ function generateModelsProperty(client, params) {
|
|
|
22
23
|
var operation = key;
|
|
23
24
|
if (operation === 'LIST') {
|
|
24
25
|
models[name_1][operationPrefix] = function (args) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
25
|
-
var query, variables, _a, data,
|
|
26
|
+
var query, variables, _a, data, extensions, _b, key_1, flattenedResult, initialized, error_1;
|
|
26
27
|
return tslib_1.__generator(this, function (_c) {
|
|
27
28
|
switch (_c.label) {
|
|
28
29
|
case 0:
|
|
@@ -36,7 +37,7 @@ function generateModelsProperty(client, params) {
|
|
|
36
37
|
variables: variables,
|
|
37
38
|
})];
|
|
38
39
|
case 2:
|
|
39
|
-
_a = (_c.sent()), data = _a.data,
|
|
40
|
+
_a = (_c.sent()), data = _a.data, extensions = _a.extensions;
|
|
40
41
|
// flatten response
|
|
41
42
|
if (data !== undefined) {
|
|
42
43
|
_b = tslib_1.__read(Object.keys(data), 1), key_1 = _b[0];
|
|
@@ -46,7 +47,7 @@ function generateModelsProperty(client, params) {
|
|
|
46
47
|
if (args === null || args === void 0 ? void 0 : args.selectionSet) {
|
|
47
48
|
return [2 /*return*/, {
|
|
48
49
|
data: flattenedResult,
|
|
49
|
-
nextToken: nextToken,
|
|
50
|
+
nextToken: data[key_1].nextToken,
|
|
50
51
|
extensions: extensions,
|
|
51
52
|
}];
|
|
52
53
|
}
|
|
@@ -54,14 +55,14 @@ function generateModelsProperty(client, params) {
|
|
|
54
55
|
initialized = (0, APIClient_1.initializeModel)(client, name_1, flattenedResult, modelIntrospection);
|
|
55
56
|
return [2 /*return*/, {
|
|
56
57
|
data: initialized,
|
|
57
|
-
nextToken: nextToken,
|
|
58
|
+
nextToken: data[key_1].nextToken,
|
|
58
59
|
extensions: extensions,
|
|
59
60
|
}];
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
63
|
return [2 /*return*/, {
|
|
63
64
|
data: data[key_1],
|
|
64
|
-
nextToken: nextToken,
|
|
65
|
+
nextToken: data[key_1].nextToken,
|
|
65
66
|
extensions: extensions,
|
|
66
67
|
}];
|
|
67
68
|
}
|
|
@@ -96,6 +97,163 @@ function generateModelsProperty(client, params) {
|
|
|
96
97
|
}));
|
|
97
98
|
};
|
|
98
99
|
}
|
|
100
|
+
else if (operation === 'OBSERVE_QUERY') {
|
|
101
|
+
models[name_1][operationPrefix] = function (arg, options) {
|
|
102
|
+
return new rxjs_1.Observable(function (subscriber) {
|
|
103
|
+
// what we'll be sending to our subscribers
|
|
104
|
+
var items = [];
|
|
105
|
+
// To enqueue subscription messages while we collect our initial
|
|
106
|
+
// result set.
|
|
107
|
+
var messageQueue = [];
|
|
108
|
+
// operation to take when message(s) arrive.
|
|
109
|
+
// this operation will be swapped out once initial "sync" is complete
|
|
110
|
+
// to immediately ingest messsages.
|
|
111
|
+
var receiveMessages = function () {
|
|
112
|
+
var messages = [];
|
|
113
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
114
|
+
messages[_i] = arguments[_i];
|
|
115
|
+
}
|
|
116
|
+
return messageQueue.push.apply(messageQueue, tslib_1.__spreadArray([], tslib_1.__read(messages), false));
|
|
117
|
+
};
|
|
118
|
+
// start subscriptions
|
|
119
|
+
var onCreateSub = models[name_1]
|
|
120
|
+
.onCreate(arg, options)
|
|
121
|
+
.subscribe({
|
|
122
|
+
next: function (item) {
|
|
123
|
+
receiveMessages({ item: item, type: 'create' });
|
|
124
|
+
},
|
|
125
|
+
error: function (error) {
|
|
126
|
+
subscriber.error({ type: 'onCreate', error: error });
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
var onUpdateSub = models[name_1]
|
|
130
|
+
.onUpdate(arg, options)
|
|
131
|
+
.subscribe({
|
|
132
|
+
next: function (item) {
|
|
133
|
+
receiveMessages({ item: item, type: 'update' });
|
|
134
|
+
},
|
|
135
|
+
error: function (error) {
|
|
136
|
+
subscriber.error({ type: 'onUpdate', error: error });
|
|
137
|
+
},
|
|
138
|
+
});
|
|
139
|
+
var onDeleteSub = models[name_1]
|
|
140
|
+
.onDelete(arg, options)
|
|
141
|
+
.subscribe({
|
|
142
|
+
next: function (item) {
|
|
143
|
+
receiveMessages({ item: item, type: 'delete' });
|
|
144
|
+
},
|
|
145
|
+
error: function (error) {
|
|
146
|
+
subscriber.error({ type: 'onDelete', error: error });
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
// consumes a list of messages and sends a snapshot
|
|
150
|
+
function ingestMessages(messages) {
|
|
151
|
+
var e_2, _a;
|
|
152
|
+
try {
|
|
153
|
+
for (var messages_1 = tslib_1.__values(messages), messages_1_1 = messages_1.next(); !messages_1_1.done; messages_1_1 = messages_1.next()) {
|
|
154
|
+
var message = messages_1_1.value;
|
|
155
|
+
var idx = (0, utils_1.findIndexByFields)(message.item, items, pkFields);
|
|
156
|
+
switch (message.type) {
|
|
157
|
+
case 'create':
|
|
158
|
+
if (idx < 0)
|
|
159
|
+
items.push(message.item);
|
|
160
|
+
break;
|
|
161
|
+
case 'update':
|
|
162
|
+
if (idx >= 0)
|
|
163
|
+
items[idx] = message.item;
|
|
164
|
+
break;
|
|
165
|
+
case 'delete':
|
|
166
|
+
if (idx >= 0)
|
|
167
|
+
items.splice(idx, 1);
|
|
168
|
+
break;
|
|
169
|
+
default:
|
|
170
|
+
console.error('Unrecognized message in observeQuery.', message);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
175
|
+
finally {
|
|
176
|
+
try {
|
|
177
|
+
if (messages_1_1 && !messages_1_1.done && (_a = messages_1.return)) _a.call(messages_1);
|
|
178
|
+
}
|
|
179
|
+
finally { if (e_2) throw e_2.error; }
|
|
180
|
+
}
|
|
181
|
+
subscriber.next({
|
|
182
|
+
items: items,
|
|
183
|
+
isSynced: true,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
var pkFields = (0, utils_1.resolvePKFields)(model);
|
|
187
|
+
// initial results
|
|
188
|
+
(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
189
|
+
var firstPage, nextToken, _a, page, errors, _nextToken, isSynced, errors_1, errors_1_1, error;
|
|
190
|
+
var e_3, _b;
|
|
191
|
+
return tslib_1.__generator(this, function (_c) {
|
|
192
|
+
switch (_c.label) {
|
|
193
|
+
case 0:
|
|
194
|
+
firstPage = true;
|
|
195
|
+
nextToken = null;
|
|
196
|
+
_c.label = 1;
|
|
197
|
+
case 1:
|
|
198
|
+
if (!(!subscriber.closed && (firstPage || nextToken))) return [3 /*break*/, 3];
|
|
199
|
+
firstPage = false;
|
|
200
|
+
return [4 /*yield*/, models[name_1].list(tslib_1.__assign(tslib_1.__assign({}, arg), { nextToken: nextToken }), options)];
|
|
201
|
+
case 2:
|
|
202
|
+
_a = _c.sent(), page = _a.data, errors = _a.errors, _nextToken = _a.nextToken;
|
|
203
|
+
nextToken = _nextToken;
|
|
204
|
+
items.push.apply(items, tslib_1.__spreadArray([], tslib_1.__read(page), false));
|
|
205
|
+
isSynced = messageQueue.length === 0 &&
|
|
206
|
+
(nextToken === null || nextToken === undefined);
|
|
207
|
+
subscriber.next({
|
|
208
|
+
items: items,
|
|
209
|
+
isSynced: isSynced,
|
|
210
|
+
});
|
|
211
|
+
if (Array.isArray(errors)) {
|
|
212
|
+
try {
|
|
213
|
+
for (errors_1 = (e_3 = void 0, tslib_1.__values(errors)), errors_1_1 = errors_1.next(); !errors_1_1.done; errors_1_1 = errors_1.next()) {
|
|
214
|
+
error = errors_1_1.value;
|
|
215
|
+
subscriber.error(error);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
219
|
+
finally {
|
|
220
|
+
try {
|
|
221
|
+
if (errors_1_1 && !errors_1_1.done && (_b = errors_1.return)) _b.call(errors_1);
|
|
222
|
+
}
|
|
223
|
+
finally { if (e_3) throw e_3.error; }
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return [3 /*break*/, 1];
|
|
227
|
+
case 3:
|
|
228
|
+
// play through the queue
|
|
229
|
+
if (messageQueue.length > 0) {
|
|
230
|
+
ingestMessages(messageQueue);
|
|
231
|
+
}
|
|
232
|
+
// switch the queue to write directly to the items collection
|
|
233
|
+
receiveMessages = function () {
|
|
234
|
+
var messages = [];
|
|
235
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
236
|
+
messages[_i] = arguments[_i];
|
|
237
|
+
}
|
|
238
|
+
ingestMessages(messages);
|
|
239
|
+
return items.length;
|
|
240
|
+
};
|
|
241
|
+
return [2 /*return*/];
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
}); })();
|
|
245
|
+
// when subscriber unsubscribes, tear down internal subs
|
|
246
|
+
return function () {
|
|
247
|
+
// 1. tear down internal subs
|
|
248
|
+
onCreateSub.unsubscribe();
|
|
249
|
+
onUpdateSub.unsubscribe();
|
|
250
|
+
onDeleteSub.unsubscribe();
|
|
251
|
+
// 2. there is no need to explicitly stop paging. instead, we
|
|
252
|
+
// just check `subscriber.closed` above before fetching each page.
|
|
253
|
+
};
|
|
254
|
+
});
|
|
255
|
+
};
|
|
256
|
+
}
|
|
99
257
|
else {
|
|
100
258
|
models[name_1][operationPrefix] = function (arg, options) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
101
259
|
var query, variables, _a, data, extensions, _b, key_2, flattenedResult, _c, initialized, error_2;
|