@aws-amplify/datastore 4.0.12 → 4.0.13-push-notification-dryrun.43

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 (111) hide show
  1. package/lib/datastore/datastore.d.ts +29 -3
  2. package/lib/datastore/datastore.js +308 -147
  3. package/lib/datastore/datastore.js.map +1 -1
  4. package/lib/predicates/index.d.ts +77 -7
  5. package/lib/predicates/index.js +142 -122
  6. package/lib/predicates/index.js.map +1 -1
  7. package/lib/predicates/next.d.ts +51 -10
  8. package/lib/predicates/next.js +111 -91
  9. package/lib/predicates/next.js.map +1 -1
  10. package/lib/storage/adapter/AsyncStorageAdapter.d.ts +28 -30
  11. package/lib/storage/adapter/AsyncStorageAdapter.js +135 -532
  12. package/lib/storage/adapter/AsyncStorageAdapter.js.map +1 -1
  13. package/lib/storage/adapter/AsyncStorageDatabase.js.map +1 -1
  14. package/lib/storage/adapter/IndexedDBAdapter.d.ts +28 -29
  15. package/lib/storage/adapter/IndexedDBAdapter.js +490 -885
  16. package/lib/storage/adapter/IndexedDBAdapter.js.map +1 -1
  17. package/lib/storage/adapter/StorageAdapterBase.d.ts +134 -0
  18. package/lib/storage/adapter/StorageAdapterBase.js +439 -0
  19. package/lib/storage/adapter/StorageAdapterBase.js.map +1 -0
  20. package/lib/storage/relationship.d.ts +9 -0
  21. package/lib/storage/relationship.js +9 -0
  22. package/lib/storage/relationship.js.map +1 -1
  23. package/lib/storage/storage.d.ts +1 -1
  24. package/lib/storage/storage.js +4 -3
  25. package/lib/storage/storage.js.map +1 -1
  26. package/lib/sync/index.d.ts +15 -1
  27. package/lib/sync/index.js +80 -13
  28. package/lib/sync/index.js.map +1 -1
  29. package/lib/sync/outbox.js +14 -7
  30. package/lib/sync/outbox.js.map +1 -1
  31. package/lib/sync/processors/mutation.d.ts +10 -1
  32. package/lib/sync/processors/mutation.js +33 -12
  33. package/lib/sync/processors/mutation.js.map +1 -1
  34. package/lib/sync/processors/subscription.d.ts +7 -1
  35. package/lib/sync/processors/subscription.js +196 -135
  36. package/lib/sync/processors/subscription.js.map +1 -1
  37. package/lib/sync/processors/sync.d.ts +1 -1
  38. package/lib/sync/processors/sync.js.map +1 -1
  39. package/lib/sync/utils.d.ts +66 -2
  40. package/lib/sync/utils.js +264 -16
  41. package/lib/sync/utils.js.map +1 -1
  42. package/lib/types.d.ts +9 -1
  43. package/lib/types.js.map +1 -1
  44. package/lib/util.d.ts +16 -0
  45. package/lib/util.js +31 -2
  46. package/lib/util.js.map +1 -1
  47. package/lib-esm/datastore/datastore.d.ts +29 -3
  48. package/lib-esm/datastore/datastore.js +310 -149
  49. package/lib-esm/datastore/datastore.js.map +1 -1
  50. package/lib-esm/predicates/index.d.ts +77 -7
  51. package/lib-esm/predicates/index.js +143 -123
  52. package/lib-esm/predicates/index.js.map +1 -1
  53. package/lib-esm/predicates/next.d.ts +51 -10
  54. package/lib-esm/predicates/next.js +111 -91
  55. package/lib-esm/predicates/next.js.map +1 -1
  56. package/lib-esm/storage/adapter/AsyncStorageAdapter.d.ts +28 -30
  57. package/lib-esm/storage/adapter/AsyncStorageAdapter.js +138 -535
  58. package/lib-esm/storage/adapter/AsyncStorageAdapter.js.map +1 -1
  59. package/lib-esm/storage/adapter/AsyncStorageDatabase.js.map +1 -1
  60. package/lib-esm/storage/adapter/IndexedDBAdapter.d.ts +28 -29
  61. package/lib-esm/storage/adapter/IndexedDBAdapter.js +489 -884
  62. package/lib-esm/storage/adapter/IndexedDBAdapter.js.map +1 -1
  63. package/lib-esm/storage/adapter/StorageAdapterBase.d.ts +134 -0
  64. package/lib-esm/storage/adapter/StorageAdapterBase.js +437 -0
  65. package/lib-esm/storage/adapter/StorageAdapterBase.js.map +1 -0
  66. package/lib-esm/storage/relationship.d.ts +9 -0
  67. package/lib-esm/storage/relationship.js +9 -0
  68. package/lib-esm/storage/relationship.js.map +1 -1
  69. package/lib-esm/storage/storage.d.ts +1 -1
  70. package/lib-esm/storage/storage.js +4 -3
  71. package/lib-esm/storage/storage.js.map +1 -1
  72. package/lib-esm/sync/index.d.ts +15 -1
  73. package/lib-esm/sync/index.js +82 -15
  74. package/lib-esm/sync/index.js.map +1 -1
  75. package/lib-esm/sync/outbox.js +14 -7
  76. package/lib-esm/sync/outbox.js.map +1 -1
  77. package/lib-esm/sync/processors/mutation.d.ts +10 -1
  78. package/lib-esm/sync/processors/mutation.js +33 -12
  79. package/lib-esm/sync/processors/mutation.js.map +1 -1
  80. package/lib-esm/sync/processors/subscription.d.ts +7 -1
  81. package/lib-esm/sync/processors/subscription.js +197 -136
  82. package/lib-esm/sync/processors/subscription.js.map +1 -1
  83. package/lib-esm/sync/processors/sync.d.ts +1 -1
  84. package/lib-esm/sync/processors/sync.js.map +1 -1
  85. package/lib-esm/sync/utils.d.ts +66 -2
  86. package/lib-esm/sync/utils.js +261 -18
  87. package/lib-esm/sync/utils.js.map +1 -1
  88. package/lib-esm/types.d.ts +9 -1
  89. package/lib-esm/types.js.map +1 -1
  90. package/lib-esm/util.d.ts +16 -0
  91. package/lib-esm/util.js +32 -3
  92. package/lib-esm/util.js.map +1 -1
  93. package/package.json +12 -11
  94. package/src/datastore/datastore.ts +288 -159
  95. package/src/predicates/index.ts +145 -175
  96. package/src/predicates/next.ts +114 -81
  97. package/src/storage/adapter/AsyncStorageAdapter.ts +97 -563
  98. package/src/storage/adapter/AsyncStorageDatabase.ts +2 -2
  99. package/src/storage/adapter/IndexedDBAdapter.ts +318 -770
  100. package/src/storage/adapter/StorageAdapterBase.ts +545 -0
  101. package/src/storage/relationship.ts +9 -0
  102. package/src/storage/storage.ts +12 -9
  103. package/src/sync/index.ts +108 -20
  104. package/src/sync/outbox.ts +17 -11
  105. package/src/sync/processors/mutation.ts +35 -4
  106. package/src/sync/processors/subscription.ts +124 -10
  107. package/src/sync/processors/sync.ts +4 -1
  108. package/src/sync/utils.ts +285 -15
  109. package/src/types.ts +15 -2
  110. package/src/util.ts +40 -1
  111. package/CHANGELOG.md +0 -904
@@ -1,15 +1,43 @@
1
- import { __assign, __read, __spread, __values } from "tslib";
1
+ import { __assign, __read, __spread } from "tslib";
2
2
  import { extractPrimaryKeyFieldNames, extractPrimaryKeyValues } from '../util';
3
3
  export { ModelSortPredicateCreator } from './sort';
4
4
  var predicatesAllSet = new WeakSet();
5
5
  export function isPredicatesAll(predicate) {
6
6
  return predicatesAllSet.has(predicate);
7
7
  }
8
+ /**
9
+ * The valid logical grouping keys for a predicate group.
10
+ */
8
11
  var groupKeys = new Set(['and', 'or', 'not']);
12
+ /**
13
+ * Determines whether an object is a GraphQL style predicate "group", which must be an
14
+ * object containing a single "group key", which then contains the child condition(s).
15
+ *
16
+ * E.g.,
17
+ *
18
+ * ```
19
+ * { and: [ ... ] }
20
+ * { not: { ... } }
21
+ * ```
22
+ *
23
+ * @param o The object to test.
24
+ */
9
25
  var isGroup = function (o) {
10
26
  var keys = __spread(Object.keys(o));
11
27
  return keys.length === 1 && groupKeys.has(keys[0]);
12
28
  };
29
+ /**
30
+ * Determines whether an object specifies no conditions and should match everything,
31
+ * as would be the case with `Predicates.ALL`.
32
+ *
33
+ * @param o The object to test.
34
+ */
35
+ var isEmpty = function (o) {
36
+ return !Array.isArray(o) && Object.keys(o).length === 0;
37
+ };
38
+ /**
39
+ * The valid comparison operators that can be used as keys in a predicate comparison object.
40
+ */
13
41
  export var comparisonKeys = new Set([
14
42
  'eq',
15
43
  'ne',
@@ -22,16 +50,28 @@ export var comparisonKeys = new Set([
22
50
  'beginsWith',
23
51
  'between',
24
52
  ]);
53
+ /**
54
+ * Determines whether an object is a GraphQL style predicate comparison node, which must
55
+ * be an object containing a single "comparison operator" key, which then contains the
56
+ * operand or operands to compare against.
57
+ *
58
+ * @param o The object to test.
59
+ */
25
60
  var isComparison = function (o) {
26
61
  var keys = __spread(Object.keys(o));
27
62
  return !Array.isArray(o) && keys.length === 1 && comparisonKeys.has(keys[0]);
28
63
  };
64
+ /**
65
+ * A light check to determine whether an object is a valid GraphQL Condition AST.
66
+ *
67
+ * @param o The object to test.
68
+ */
29
69
  var isValid = function (o) {
30
70
  if (Array.isArray(o)) {
31
71
  return o.every(function (v) { return isValid(v); });
32
72
  }
33
73
  else {
34
- return Object.keys(o).length === 1;
74
+ return Object.keys(o).length <= 1;
35
75
  }
36
76
  };
37
77
  // This symbol is not used at runtime, only its type (unique symbol)
@@ -54,61 +94,26 @@ export { Predicates };
54
94
  var ModelPredicateCreator = /** @class */ (function () {
55
95
  function ModelPredicateCreator() {
56
96
  }
57
- ModelPredicateCreator.createPredicateBuilder = function (modelDefinition) {
58
- var modelName = modelDefinition.name;
59
- var fieldNames = new Set(Object.keys(modelDefinition.fields));
60
- var handler;
61
- var predicate = new Proxy({}, (handler = {
62
- get: function (_, propertyKey, self) {
63
- var groupType = propertyKey;
64
- switch (groupType) {
65
- case 'and':
66
- case 'or':
67
- case 'not':
68
- var result_1 = function (newPredicate) {
69
- var group = {
70
- type: groupType,
71
- predicates: [],
72
- };
73
- // Create a new recorder
74
- var tmpPredicateRecorder = new Proxy({}, handler);
75
- // Set the recorder group
76
- ModelPredicateCreator.predicateGroupsMap.set(tmpPredicateRecorder, group);
77
- // Apply the predicates to the recorder (this is the step that records the changes)
78
- newPredicate(tmpPredicateRecorder);
79
- // Push the group to the top-level recorder
80
- ModelPredicateCreator.predicateGroupsMap
81
- .get(self)
82
- .predicates.push(group);
83
- return self;
84
- };
85
- return result_1;
86
- default:
87
- // intentionally blank.
88
- }
89
- var field = propertyKey;
90
- if (!fieldNames.has(field)) {
91
- throw new Error("Invalid field for model. field: " + field + ", model: " + modelName);
92
- }
93
- var result = function (operator, operand) {
94
- ModelPredicateCreator.predicateGroupsMap
95
- .get(self)
96
- .predicates.push({ field: field, operator: operator, operand: operand });
97
- return self;
98
- };
99
- return result;
100
- },
101
- }));
102
- var group = {
103
- type: 'and',
104
- predicates: [],
105
- };
106
- ModelPredicateCreator.predicateGroupsMap.set(predicate, group);
107
- return predicate;
108
- };
97
+ /**
98
+ * Determines whether the given storage predicate (lookup key) is a predicate
99
+ * key that DataStore recognizes.
100
+ *
101
+ * @param predicate The storage predicate (lookup key) to test.
102
+ */
109
103
  ModelPredicateCreator.isValidPredicate = function (predicate) {
110
104
  return ModelPredicateCreator.predicateGroupsMap.has(predicate);
111
105
  };
106
+ /**
107
+ * Looks for the storage predicate AST that corresponds to a given storage
108
+ * predicate key.
109
+ *
110
+ * The key must have been created internally by a DataStore utility
111
+ * method, such as `ModelPredicate.createFromAST()`.
112
+ *
113
+ * @param predicate The predicate reference to look up.
114
+ * @param throwOnInvalid Whether to throw an exception if the predicate
115
+ * isn't a valid DataStore predicate.
116
+ */
112
117
  ModelPredicateCreator.getPredicates = function (predicate, throwOnInvalid) {
113
118
  if (throwOnInvalid === void 0) { throwOnInvalid = true; }
114
119
  if (throwOnInvalid && !ModelPredicateCreator.isValidPredicate(predicate)) {
@@ -116,25 +121,25 @@ var ModelPredicateCreator = /** @class */ (function () {
116
121
  }
117
122
  return ModelPredicateCreator.predicateGroupsMap.get(predicate);
118
123
  };
119
- // transforms cb-style predicate into Proxy
120
- ModelPredicateCreator.createFromExisting = function (modelDefinition, existing) {
121
- if (!existing || !modelDefinition) {
122
- return undefined;
123
- }
124
- return existing(ModelPredicateCreator.createPredicateBuilder(modelDefinition));
125
- };
126
- ModelPredicateCreator.createForSingleField = function (modelDefinition, fieldName, value) {
127
- return ModelPredicateCreator.createPredicateBuilder(modelDefinition)[fieldName]('eq', value);
128
- };
124
+ /**
125
+ * using the PK values from the given `model` (which can be a partial of T
126
+ * Creates a predicate that matches an instance described by `modelDefinition`
127
+ * that contains only PK field values.)
128
+ *
129
+ * @param modelDefinition The model definition to create a predicate for.
130
+ * @param model The model instance to extract value equalities from.
131
+ */
129
132
  ModelPredicateCreator.createForPk = function (modelDefinition, model) {
130
133
  var keyFields = extractPrimaryKeyFieldNames(modelDefinition);
131
134
  var keyValues = extractPrimaryKeyValues(model, keyFields);
132
- var modelPredicate = ModelPredicateCreator.createPredicateBuilder(modelDefinition);
133
- keyFields.forEach(function (field, idx) {
134
- var operand = keyValues[idx];
135
- modelPredicate = modelPredicate[field]('eq', operand);
135
+ var predicate = this.createFromAST(modelDefinition, {
136
+ and: keyFields.map(function (field, idx) {
137
+ var _a;
138
+ var operand = keyValues[idx];
139
+ return _a = {}, _a[field] = { eq: operand }, _a;
140
+ }),
136
141
  });
137
- return modelPredicate;
142
+ return predicate;
138
143
  };
139
144
  /**
140
145
  * Searches a `Model` table for records matching the given equalities object.
@@ -146,60 +151,50 @@ var ModelPredicateCreator = /** @class */ (function () {
146
151
  * @param flatEqualities An object holding field equalities to search for.
147
152
  */
148
153
  ModelPredicateCreator.createFromFlatEqualities = function (modelDefinition, flatEqualities) {
149
- var e_1, _a;
150
- var predicate = ModelPredicateCreator.createPredicateBuilder(modelDefinition);
151
- try {
152
- for (var _b = __values(Object.entries(flatEqualities)), _c = _b.next(); !_c.done; _c = _b.next()) {
153
- var _d = __read(_c.value, 2), field = _d[0], value = _d[1];
154
- predicate = predicate[field]('eq', value);
155
- }
156
- }
157
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
158
- finally {
159
- try {
160
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
161
- }
162
- finally { if (e_1) throw e_1.error; }
163
- }
164
- return predicate;
165
- };
166
- ModelPredicateCreator.createGroupFromExisting = function (modelDefinition, group, existingPredicates) {
167
- var outer = ModelPredicateCreator.createPredicateBuilder(modelDefinition);
168
- outer = outer[group](function (seed) {
169
- var e_2, _a;
170
- var _b;
171
- var inner = seed;
172
- try {
173
- for (var existingPredicates_1 = __values(existingPredicates), existingPredicates_1_1 = existingPredicates_1.next(); !existingPredicates_1_1.done; existingPredicates_1_1 = existingPredicates_1.next()) {
174
- var existing = existingPredicates_1_1.value;
175
- if (typeof existing === 'function') {
176
- inner = existing(inner);
177
- }
178
- else {
179
- (_b = ModelPredicateCreator.predicateGroupsMap
180
- .get(inner)) === null || _b === void 0 ? void 0 : _b.predicates.push(ModelPredicateCreator.predicateGroupsMap.get(existing));
181
- }
182
- }
183
- }
184
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
185
- finally {
186
- try {
187
- if (existingPredicates_1_1 && !existingPredicates_1_1.done && (_a = existingPredicates_1.return)) _a.call(existingPredicates_1);
188
- }
189
- finally { if (e_2) throw e_2.error; }
190
- }
191
- return inner;
192
- });
193
- return outer;
154
+ var ast = {
155
+ and: Object.entries(flatEqualities).map(function (_a) {
156
+ var _b;
157
+ var _c = __read(_a, 2), k = _c[0], v = _c[1];
158
+ return (_b = {}, _b[k] = { eq: v }, _b);
159
+ }),
160
+ };
161
+ return this.createFromAST(modelDefinition, ast);
194
162
  };
195
- ModelPredicateCreator.transformGraphQLtoPredicateAST = function (gql) {
163
+ /**
164
+ * Accepts a GraphQL style filter predicate tree and transforms it into an
165
+ * AST that can be used for a storage adapter predicate. Example input:
166
+ *
167
+ * ```js
168
+ * {
169
+ * and: [
170
+ * { name: { eq: "Bob Jones" } },
171
+ * { age: { between: [32, 64] } },
172
+ * { not: {
173
+ * or: [
174
+ * { favoriteFood: { eq: 'pizza' } },
175
+ * { favoriteFood: { eq: 'tacos' } },
176
+ * ]
177
+ * }}
178
+ * ]
179
+ * }
180
+ * ```
181
+ *
182
+ * @param gql GraphQL style filter node.
183
+ */
184
+ ModelPredicateCreator.transformGraphQLFilterNodeToPredicateAST = function (gql) {
196
185
  var _this = this;
197
186
  if (!isValid(gql)) {
198
- throw new Error('Invalid QGL AST: ' + gql);
187
+ throw new Error('Invalid GraphQL Condition or subtree: ' + gql);
199
188
  }
200
- if (isGroup(gql)) {
189
+ if (isEmpty(gql)) {
190
+ return {
191
+ type: 'and',
192
+ predicates: [],
193
+ };
194
+ }
195
+ else if (isGroup(gql)) {
201
196
  var groupkey = Object.keys(gql)[0];
202
- var children = this.transformGraphQLtoPredicateAST(gql[groupkey]);
197
+ var children = this.transformGraphQLFilterNodeToPredicateAST(gql[groupkey]);
203
198
  return {
204
199
  type: groupkey,
205
200
  predicates: Array.isArray(children) ? children : [children],
@@ -214,19 +209,44 @@ var ModelPredicateCreator = /** @class */ (function () {
214
209
  }
215
210
  else {
216
211
  if (Array.isArray(gql)) {
217
- return gql.map(function (o) { return _this.transformGraphQLtoPredicateAST(o); });
212
+ return gql.map(function (o) { return _this.transformGraphQLFilterNodeToPredicateAST(o); });
218
213
  }
219
214
  else {
220
215
  var fieldKey = Object.keys(gql)[0];
221
- return __assign({ field: fieldKey }, this.transformGraphQLtoPredicateAST(gql[fieldKey]));
216
+ return __assign({ field: fieldKey }, this.transformGraphQLFilterNodeToPredicateAST(gql[fieldKey]));
222
217
  }
223
218
  }
224
219
  };
220
+ /**
221
+ * Accepts a GraphQL style filter predicate tree and transforms it into a predicate
222
+ * that storage adapters understand. Example input:
223
+ *
224
+ * ```js
225
+ * {
226
+ * and: [
227
+ * { name: { eq: "Bob Jones" } },
228
+ * { age: { between: [32, 64] } },
229
+ * { not: {
230
+ * or: [
231
+ * { favoriteFood: { eq: 'pizza' } },
232
+ * { favoriteFood: { eq: 'tacos' } },
233
+ * ]
234
+ * }}
235
+ * ]
236
+ * }
237
+ * ```
238
+ *
239
+ * @param modelDefinition The model that the AST/predicate must be compatible with.
240
+ * @param ast The graphQL style AST that should specify conditions for `modelDefinition`.
241
+ */
225
242
  ModelPredicateCreator.createFromAST = function (modelDefinition, ast) {
226
- var predicate = ModelPredicateCreator.createPredicateBuilder(modelDefinition);
227
- ModelPredicateCreator.predicateGroupsMap.set(predicate, this.transformGraphQLtoPredicateAST(ast));
228
- return predicate;
243
+ var key = {};
244
+ ModelPredicateCreator.predicateGroupsMap.set(key, this.transformGraphQLFilterNodeToPredicateAST(ast));
245
+ return key;
229
246
  };
247
+ /**
248
+ * Map of storage predicates (key objects) to storage predicate AST's.
249
+ */
230
250
  ModelPredicateCreator.predicateGroupsMap = new WeakMap();
231
251
  return ModelPredicateCreator;
232
252
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/predicates/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/predicates/index.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ declare type GroupOperator = 'and' | 'or' | 'not';
4
4
  declare type UntypedCondition = {
5
5
  fetch: (storage: StorageAdapter) => Promise<Record<string, any>[]>;
6
6
  matches: (item: Record<string, any>) => Promise<boolean>;
7
- copy(extract: GroupCondition): [UntypedCondition, GroupCondition | undefined];
7
+ copy(extract?: GroupCondition): [UntypedCondition, GroupCondition | undefined];
8
8
  toAST(): any;
9
9
  };
10
10
  /**
@@ -35,12 +35,45 @@ export declare class FieldCondition {
35
35
  * @param extract Not used. Present only to fulfill the `UntypedCondition` interface.
36
36
  * @returns A new, identitical `FieldCondition`.
37
37
  */
38
- copy(extract: GroupCondition): [FieldCondition, GroupCondition | undefined];
38
+ copy(extract?: GroupCondition): [FieldCondition, GroupCondition | undefined];
39
+ /**
40
+ * Produces a tree structure similar to a graphql condition. The returned
41
+ * structure is "dumb" and is intended for another query/condition
42
+ * generation mechanism to interpret, such as the cloud or storage query
43
+ * builders.
44
+ *
45
+ * E.g.,
46
+ *
47
+ * ```json
48
+ * {
49
+ * "name": {
50
+ * "eq": "robert"
51
+ * }
52
+ * }
53
+ * ```
54
+ */
39
55
  toAST(): {
40
56
  [x: string]: {
41
57
  [x: string]: string | string[];
42
58
  };
43
59
  };
60
+ /**
61
+ * Produces a new condition (`FieldCondition` or `GroupCondition`) that
62
+ * matches the opposite of this condition.
63
+ *
64
+ * Intended to be used when applying De Morgan's Law, which can be done to
65
+ * produce more efficient queries against the storage layer if a negation
66
+ * appears in the query tree.
67
+ *
68
+ * For example:
69
+ *
70
+ * 1. `name.eq('robert')` becomes `name.ne('robert')`
71
+ * 2. `price.between(100, 200)` becomes `m => m.or(m => [m.price.lt(100), m.price.gt(200)])`
72
+ *
73
+ * @param model The model meta to use when construction a new `GroupCondition`
74
+ * for cases where the negation requires multiple `FieldCondition`'s.
75
+ */
76
+ negated(model: ModelMeta<any>): GroupCondition | FieldCondition;
44
77
  /**
45
78
  * Not implemented. Not needed. GroupCondition instead consumes FieldConditions and
46
79
  * transforms them into legacy predicates. (*For now.*)
@@ -166,7 +199,17 @@ export declare class GroupCondition {
166
199
  * @param extract A node of interest. Its copy will *also* be returned if the node exists.
167
200
  * @returns [The full copy, the copy of `extract` | undefined]
168
201
  */
169
- copy(extract: GroupCondition): [GroupCondition, GroupCondition | undefined];
202
+ copy(extract?: GroupCondition): [GroupCondition, GroupCondition | undefined];
203
+ /**
204
+ * Creates a new `GroupCondition` that contains only the local field conditions,
205
+ * omitting related model conditions. That resulting `GroupCondition` can be
206
+ * used to produce predicates that are compatible with the storage adapters and
207
+ * Cloud storage.
208
+ *
209
+ * @param negate Whether the condition tree should be negated according
210
+ * to De Morgan's law.
211
+ */
212
+ withFieldConditionsOnly(negate: boolean): GroupCondition;
170
213
  /**
171
214
  * Returns a version of the predicate tree with unnecessary logical groups
172
215
  * condensed and merged together. This is intended to create a dense tree
@@ -230,7 +273,11 @@ export declare class GroupCondition {
230
273
  toAST(): {
231
274
  [x: string]: any[];
232
275
  };
233
- toStoragePredicate<T>(baseCondition?: StoragePredicate<T>): StoragePredicate<T>;
276
+ /**
277
+ * Turn this predicate group into something a storage adapter
278
+ * understands how to use.
279
+ */
280
+ toStoragePredicate<T>(): StoragePredicate<T>;
234
281
  /**
235
282
  * A JSON representation that's good for debugging.
236
283
  */
@@ -258,12 +305,6 @@ export declare class GroupCondition {
258
305
  * `predicateFor()` returns objecst with recursive getters. To facilitate this,
259
306
  * a `query` and `tail` can be provided to "accumulate" nested conditions.
260
307
  *
261
- * TODO: the sortof-immutable algorithm was originally done to support legacy style
262
- * predicate branching (`p => p.x.eq(value).y.eq(value)`). i'm not sure this is
263
- * necessary or beneficial at this point, since we decided that each field condition
264
- * must flly terminate a branch. is the strong mutation barrier between chain links
265
- * still necessary or helpful?
266
- *
267
308
  * @param ModelType The ModelMeta used to build child properties.
268
309
  * @param field Scopes the query branch to a field.
269
310
  * @param query A base query to build on. Omit to start a new query.