@squidcloud/local-backend 1.0.142 → 1.0.143

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 (173) hide show
  1. package/dist/common/src/ai-assistant.types.d.ts +34 -128
  2. package/dist/common/src/ai-assistant.types.js +2 -17
  3. package/dist/common/src/ai-assistant.types.js.map +1 -1
  4. package/dist/common/src/ai-chatbot.context.d.ts +13 -0
  5. package/dist/common/src/{ai-assistant.context.js → ai-chatbot.context.js} +20 -20
  6. package/dist/common/src/ai-chatbot.context.js.map +1 -0
  7. package/dist/common/src/ai-chatbot.schemas.d.ts +18 -0
  8. package/dist/common/src/ai-chatbot.schemas.js +22 -0
  9. package/dist/common/src/ai-chatbot.schemas.js.map +1 -0
  10. package/dist/common/src/ai-chatbot.types.d.ts +121 -0
  11. package/dist/common/src/ai-chatbot.types.js +18 -0
  12. package/dist/common/src/ai-chatbot.types.js.map +1 -0
  13. package/dist/common/src/api-call.context.d.ts +13 -13
  14. package/dist/common/src/api-call.context.js +16 -16
  15. package/dist/common/src/api.types.d.ts +22 -22
  16. package/dist/common/src/api.types.js +2 -2
  17. package/dist/common/src/application.schemas.d.ts +1648 -1648
  18. package/dist/common/src/application.schemas.js +1001 -1001
  19. package/dist/common/src/application.schemas.js.map +1 -1
  20. package/dist/common/src/application.types.d.ts +193 -193
  21. package/dist/common/src/application.types.js +89 -89
  22. package/dist/common/src/backend-function.schemas.d.ts +3 -3
  23. package/dist/common/src/backend-function.schemas.js +11 -11
  24. package/dist/common/src/backend-function.types.d.ts +4 -4
  25. package/dist/common/src/backend-function.types.js +2 -2
  26. package/dist/common/src/backend-run.types.d.ts +54 -54
  27. package/dist/common/src/backend-run.types.js +95 -95
  28. package/dist/common/src/backend-run.types.js.map +1 -1
  29. package/dist/common/src/bundle-api.types.d.ts +69 -68
  30. package/dist/common/src/bundle-api.types.js +2 -2
  31. package/dist/common/src/bundle-data.types.d.ts +74 -61
  32. package/dist/common/src/bundle-data.types.js +2 -2
  33. package/dist/common/src/communication.types.d.ts +19 -19
  34. package/dist/common/src/communication.types.js +40 -40
  35. package/dist/common/src/context.types.d.ts +24 -24
  36. package/dist/common/src/context.types.js +2 -2
  37. package/dist/common/src/distributed-lock.context.d.ts +4 -4
  38. package/dist/common/src/distributed-lock.context.js +9 -9
  39. package/dist/common/src/document.types.d.ts +32 -32
  40. package/dist/common/src/document.types.js +50 -50
  41. package/dist/common/src/graphql.context.d.ts +14 -14
  42. package/dist/common/src/graphql.context.js +12 -12
  43. package/dist/common/src/graphql.types.d.ts +11 -11
  44. package/dist/common/src/graphql.types.js +34 -34
  45. package/dist/common/src/heartbeat.types.d.ts +4 -4
  46. package/dist/common/src/heartbeat.types.js +16 -16
  47. package/dist/common/src/http-status.enum.d.ts +50 -50
  48. package/dist/common/src/http-status.enum.js +54 -54
  49. package/dist/common/src/index.d.ts +57 -56
  50. package/dist/common/src/index.js +73 -72
  51. package/dist/common/src/index.js.map +1 -1
  52. package/dist/common/src/integrations/ai_chatbot.types.d.ts +31 -0
  53. package/dist/common/src/integrations/{ai_assistant.types.js → ai_chatbot.types.js} +3 -3
  54. package/dist/common/src/integrations/ai_chatbot.types.js.map +1 -0
  55. package/dist/common/src/integrations/api.types.d.ts +80 -80
  56. package/dist/common/src/integrations/api.types.js +2 -2
  57. package/dist/common/src/integrations/auth.types.d.ts +39 -39
  58. package/dist/common/src/integrations/auth.types.js +2 -2
  59. package/dist/common/src/integrations/database.types.d.ts +274 -274
  60. package/dist/common/src/integrations/database.types.js +2 -2
  61. package/dist/common/src/integrations/index.d.ts +134 -134
  62. package/dist/common/src/integrations/index.js +119 -119
  63. package/dist/common/src/integrations/index.js.map +1 -1
  64. package/dist/common/src/integrations/observability.types.d.ts +23 -23
  65. package/dist/common/src/integrations/observability.types.js +23 -23
  66. package/dist/common/src/logger.types.d.ts +21 -21
  67. package/dist/common/src/logger.types.js +11 -11
  68. package/dist/common/src/metrics.types.d.ts +73 -73
  69. package/dist/common/src/metrics.types.js +11 -11
  70. package/dist/common/src/mutation.context.d.ts +13 -13
  71. package/dist/common/src/mutation.context.js +26 -26
  72. package/dist/common/src/mutation.schemas.d.ts +5 -5
  73. package/dist/common/src/mutation.schemas.js +114 -114
  74. package/dist/common/src/mutation.types.d.ts +63 -63
  75. package/dist/common/src/mutation.types.js +142 -142
  76. package/dist/common/src/named-query.context.d.ts +4 -4
  77. package/dist/common/src/named-query.context.js +9 -9
  78. package/dist/common/src/named-query.schemas.d.ts +3 -3
  79. package/dist/common/src/named-query.schemas.js +13 -13
  80. package/dist/common/src/named-query.types.d.ts +8 -8
  81. package/dist/common/src/named-query.types.js +2 -2
  82. package/dist/common/src/native-query.context.d.ts +7 -7
  83. package/dist/common/src/native-query.context.js +11 -11
  84. package/dist/common/src/native-query.types.d.ts +16 -16
  85. package/dist/common/src/native-query.types.js +2 -2
  86. package/dist/common/src/query/base-query-builder.d.ts +38 -38
  87. package/dist/common/src/query/base-query-builder.js +39 -39
  88. package/dist/common/src/query/index.d.ts +4 -4
  89. package/dist/common/src/query/index.js +20 -20
  90. package/dist/common/src/query/pagination.d.ts +46 -46
  91. package/dist/common/src/query/pagination.js +211 -211
  92. package/dist/common/src/query/query-context.d.ts +47 -47
  93. package/dist/common/src/query/query-context.js +159 -159
  94. package/dist/common/src/query/serialized-query.types.d.ts +24 -24
  95. package/dist/common/src/query/serialized-query.types.js +2 -2
  96. package/dist/common/src/query.types.d.ts +86 -86
  97. package/dist/common/src/query.types.js +171 -171
  98. package/dist/common/src/regions.d.ts +21 -21
  99. package/dist/common/src/regions.js +46 -46
  100. package/dist/common/src/schema/schema.types.d.ts +30 -30
  101. package/dist/common/src/schema/schema.types.js +173 -173
  102. package/dist/common/src/secret.schemas.d.ts +4 -4
  103. package/dist/common/src/secret.schemas.js +17 -17
  104. package/dist/common/src/secret.types.d.ts +68 -68
  105. package/dist/common/src/secret.types.js +5 -5
  106. package/dist/common/src/security.types.d.ts +3 -3
  107. package/dist/common/src/security.types.js +2 -2
  108. package/dist/common/src/socket.schemas.d.ts +3 -3
  109. package/dist/common/src/socket.schemas.js +57 -57
  110. package/dist/common/src/socket.types.d.ts +126 -126
  111. package/dist/common/src/socket.types.js +9 -9
  112. package/dist/common/src/time-units.d.ts +5 -5
  113. package/dist/common/src/time-units.js +8 -8
  114. package/dist/common/src/trigger.types.d.ts +15 -15
  115. package/dist/common/src/trigger.types.js +2 -2
  116. package/dist/common/src/types.d.ts +21 -21
  117. package/dist/common/src/types.js +2 -2
  118. package/dist/common/src/utils/array.d.ts +8 -8
  119. package/dist/common/src/utils/array.js +54 -54
  120. package/dist/common/src/utils/assert.d.ts +3 -3
  121. package/dist/common/src/utils/assert.js +14 -14
  122. package/dist/common/src/utils/error.d.ts +4 -4
  123. package/dist/common/src/utils/error.js +10 -10
  124. package/dist/common/src/utils/global.utils.d.ts +11 -11
  125. package/dist/common/src/utils/global.utils.js +50 -50
  126. package/dist/common/src/utils/http.d.ts +2 -2
  127. package/dist/common/src/utils/http.js +51 -51
  128. package/dist/common/src/utils/id.d.ts +2 -2
  129. package/dist/common/src/utils/id.js +21 -21
  130. package/dist/common/src/utils/lock.manager.d.ts +9 -9
  131. package/dist/common/src/utils/lock.manager.js +39 -39
  132. package/dist/common/src/utils/object.d.ts +5 -5
  133. package/dist/common/src/utils/object.js +75 -75
  134. package/dist/common/src/utils/serialization.d.ts +6 -6
  135. package/dist/common/src/utils/serialization.js +77 -77
  136. package/dist/common/src/utils/transforms.d.ts +18 -18
  137. package/dist/common/src/utils/transforms.js +104 -104
  138. package/dist/common/src/utils/url.d.ts +1 -1
  139. package/dist/common/src/utils/url.js +15 -15
  140. package/dist/common/src/utils/validation.d.ts +17 -17
  141. package/dist/common/src/utils/validation.js +209 -209
  142. package/dist/common/src/webhook-response.d.ts +6 -6
  143. package/dist/common/src/webhook-response.js +2 -2
  144. package/dist/common/src/websocket.impl.d.ts +21 -21
  145. package/dist/common/src/websocket.impl.js +79 -79
  146. package/dist/internal-common/src/code-executor.types.d.ts +13 -13
  147. package/dist/internal-common/src/code-executor.types.js +2 -2
  148. package/dist/internal-common/src/local-dev.types.d.ts +35 -35
  149. package/dist/internal-common/src/local-dev.types.js +2 -2
  150. package/dist/internal-common/src/utils/logger-utils.d.ts +3 -3
  151. package/dist/internal-common/src/utils/logger-utils.js +28 -28
  152. package/dist/local-backend/package.json +50 -57
  153. package/dist/local-backend/src/index.d.ts +4 -4
  154. package/dist/local-backend/src/index.js +26 -26
  155. package/dist/local-backend/src/local-backend-socket.service.d.ts +18 -18
  156. package/dist/local-backend/src/local-backend-socket.service.js +108 -108
  157. package/dist/local-backend/src/local-backend.app.d.ts +2 -2
  158. package/dist/local-backend/src/local-backend.app.js +19 -19
  159. package/dist/local-backend/src/local-backend.controller.d.ts +8 -8
  160. package/dist/local-backend/src/local-backend.controller.js +49 -49
  161. package/dist/local-backend/src/local-backend.module.d.ts +8 -8
  162. package/dist/local-backend/src/local-backend.module.js +53 -53
  163. package/dist/local-backend/src/local-backend.service.d.ts +15 -15
  164. package/dist/local-backend/src/local-backend.service.js +176 -176
  165. package/dist/tsconfig.build.tsbuildinfo +1 -1
  166. package/package.json +2 -9
  167. package/dist/common/src/ai-assistant.context.d.ts +0 -13
  168. package/dist/common/src/ai-assistant.context.js.map +0 -1
  169. package/dist/common/src/ai-assistant.schemas.d.ts +0 -243
  170. package/dist/common/src/ai-assistant.schemas.js +0 -211
  171. package/dist/common/src/ai-assistant.schemas.js.map +0 -1
  172. package/dist/common/src/integrations/ai_assistant.types.d.ts +0 -31
  173. package/dist/common/src/integrations/ai_assistant.types.js.map +0 -1
@@ -1,212 +1,212 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Pagination = void 0;
4
- const rxjs_1 = require("rxjs");
5
- const object_1 = require("../utils/object");
6
- const lodash_1 = require("lodash");
7
- class Pagination {
8
- constructor(snapshotEmitter, options = {}) {
9
- this.internalStateObserver = new rxjs_1.BehaviorSubject(null);
10
- this.firstElement = null;
11
- this.isDestroyed = new rxjs_1.BehaviorSubject(false);
12
- this.snapshotSubject = new rxjs_1.Subject();
13
- this.onFirstPage = true;
14
- this.navigatingToLastPage = false;
15
- this.lastElement = null;
16
- this.snapshotSubject.pipe((0, rxjs_1.switchAll)()).subscribe(data => this.dataReceived(data));
17
- this.templateSnapshotEmitter = snapshotEmitter.clone();
18
- this.options = Object.assign({ pageSize: 100, subscribe: true }, options);
19
- this.goToFirstPage();
20
- }
21
- goToFirstPage() {
22
- this.onFirstPage = true;
23
- const firstPageSnapshot = this.templateSnapshotEmitter
24
- .clone()
25
- .limit(this.options.pageSize * 3)
26
- .snapshots(this.options.subscribe);
27
- this.snapshotSubject.next(firstPageSnapshot);
28
- }
29
- static compareValues(a, b) {
30
- if (lodash_1.default.isNil(a)) {
31
- return lodash_1.default.isNil(b) ? 0 : -1;
32
- }
33
- if (lodash_1.default.isNil(b)) {
34
- return 1;
35
- }
36
- if (a > b) {
37
- return 1;
38
- }
39
- else if (a < b) {
40
- return -1;
41
- }
42
- else {
43
- return 0;
44
- }
45
- }
46
- compare(doc1, doc2) {
47
- if (lodash_1.default.isNil(doc2)) {
48
- return 1;
49
- }
50
- for (const so of this.templateSnapshotEmitter.getSortOrders()) {
51
- const currentComparison = Pagination.compareValues((0, object_1.getInPath)(doc1, so.fieldName), (0, object_1.getInPath)(doc2, so.fieldName));
52
- if (currentComparison !== 0) {
53
- if (so.asc) {
54
- return currentComparison;
55
- }
56
- else {
57
- return -currentComparison;
58
- }
59
- }
60
- }
61
- return 0;
62
- }
63
- async dataReceived(data) {
64
- const extractedData = data.map(s => this.templateSnapshotEmitter.extractData(s));
65
- if (data.length === 0) {
66
- if (this.onFirstPage) {
67
- this.internalStateObserver.next({ numBefore: 0, numAfter: 0, data, extractedData });
68
- }
69
- else {
70
- this.goToFirstPage();
71
- }
72
- return;
73
- }
74
- if (this.firstElement === null) {
75
- if (this.lastElement !== null) {
76
- const numAfter = extractedData.filter(s => this.compare(s, this.lastElement) === 1).length;
77
- this.firstElement = extractedData[data.length - numAfter - this.options.pageSize];
78
- this.lastElement = null;
79
- }
80
- else if (this.navigatingToLastPage) {
81
- this.firstElement = extractedData[data.length - this.options.pageSize];
82
- this.navigatingToLastPage = false;
83
- }
84
- }
85
- const numBefore = extractedData.filter(s => this.compare(s, this.firstElement) === -1).length;
86
- const numAfter = Math.max(0, data.length - numBefore - this.options.pageSize);
87
- if (numBefore === data.length) {
88
- this.prevInternal({ numBefore, numAfter, data, extractedData });
89
- return;
90
- }
91
- this.internalStateObserver.next({ numBefore, numAfter, data, extractedData });
92
- }
93
- doNewQuery(startingDoc, reverseOrder) {
94
- this.onFirstPage = false;
95
- if (reverseOrder) {
96
- const newSnapshotEmitter = this.templateSnapshotEmitter
97
- .clone()
98
- .limit(this.options.pageSize * 3)
99
- .flipSortOrder();
100
- if (startingDoc) {
101
- newSnapshotEmitter.addCompositeCondition(this.templateSnapshotEmitter.getSortOrders().map(sortOrder => {
102
- return {
103
- fieldName: sortOrder.fieldName,
104
- operator: sortOrder.asc ? '<=' : '>=',
105
- value: (0, object_1.getInPath)(startingDoc, sortOrder.fieldName) || null,
106
- };
107
- }));
108
- }
109
- this.snapshotSubject.next(newSnapshotEmitter.snapshots(this.options.subscribe).pipe((0, rxjs_1.map)(s => s.reverse())));
110
- }
111
- else {
112
- const newSnapshotEmitter = this.templateSnapshotEmitter.clone().limit(this.options.pageSize * 3);
113
- if (startingDoc) {
114
- newSnapshotEmitter.addCompositeCondition(this.templateSnapshotEmitter.getSortOrders().map(sortOrder => {
115
- return {
116
- fieldName: sortOrder.fieldName,
117
- operator: sortOrder.asc ? '>=' : '<=',
118
- value: (0, object_1.getInPath)(startingDoc, sortOrder.fieldName) || null,
119
- };
120
- }));
121
- }
122
- this.snapshotSubject.next(newSnapshotEmitter.snapshots(this.options.subscribe));
123
- }
124
- }
125
- async waitForInternalState() {
126
- const internalState = this.internalStateObserver.value;
127
- if (internalState !== null) {
128
- return internalState;
129
- }
130
- return await (0, rxjs_1.firstValueFrom)((0, rxjs_1.race)(this.isDestroyed.pipe((0, rxjs_1.filter)(Boolean), (0, rxjs_1.map)(_ => ({
131
- data: [],
132
- extractedData: [],
133
- numBefore: 0,
134
- numAfter: 0,
135
- }))), this.internalStateObserver.pipe((0, rxjs_1.filter)((state) => state !== null), (0, rxjs_1.take)(1))));
136
- }
137
- internalStateToState(internalState) {
138
- const { data, numBefore, numAfter, extractedData } = internalState;
139
- return {
140
- data: data
141
- .filter((_, i) => this.compare(extractedData[i], this.firstElement) !== -1)
142
- .slice(0, this.options.pageSize),
143
- hasNext: numAfter > 0,
144
- hasPrev: numBefore > 0,
145
- };
146
- }
147
- unsubscribe() {
148
- this.isDestroyed.next(true);
149
- this.isDestroyed.complete();
150
- this.internalStateObserver.complete();
151
- this.snapshotSubject.complete();
152
- }
153
- prevInternal(internalState) {
154
- const { numBefore, numAfter, data, extractedData } = internalState;
155
- this.firstElement = null;
156
- this.lastElement = extractedData[numBefore - 1];
157
- this.internalStateObserver.next(null);
158
- this.doNewQuery(extractedData[extractedData.length - numAfter - 1], true);
159
- }
160
- async prev() {
161
- this.prevInternal(await this.waitForInternalState());
162
- return await this.waitForData();
163
- }
164
- async next() {
165
- const { numBefore, extractedData } = await this.waitForInternalState();
166
- if (numBefore + this.options.pageSize < extractedData.length) {
167
- this.firstElement = extractedData[numBefore + this.options.pageSize];
168
- }
169
- this.internalStateObserver.next(null);
170
- this.doNewQuery(extractedData[numBefore], false);
171
- return await this.waitForData();
172
- }
173
- async waitForData() {
174
- return this.internalStateToState(await this.waitForInternalState());
175
- }
176
- observeState() {
177
- return this.internalStateObserver.pipe((0, rxjs_1.filter)((state) => state !== null), (0, rxjs_1.map)(state => {
178
- return this.internalStateToState(state);
179
- }));
180
- }
181
- async first() {
182
- await this.waitForInternalState();
183
- this.internalStateObserver.next(null);
184
- this.firstElement = null;
185
- this.lastElement = null;
186
- this.goToFirstPage();
187
- return await this.waitForData();
188
- }
189
- async refreshPage() {
190
- const { extractedData } = await this.waitForInternalState();
191
- this.internalStateObserver.next(null);
192
- this.doNewQuery(extractedData[0], false);
193
- return await this.waitForData();
194
- }
195
- async last() {
196
- await this.waitForInternalState();
197
- this.internalStateObserver.next(null);
198
- this.firstElement = null;
199
- this.lastElement = null;
200
- this.navigatingToLastPage = true;
201
- const lastPageSnapshot = this.templateSnapshotEmitter
202
- .clone()
203
- .limit(this.options.pageSize * 3)
204
- .flipSortOrder()
205
- .snapshots(this.options.subscribe)
206
- .pipe((0, rxjs_1.map)(s => s.reverse()));
207
- this.snapshotSubject.next(lastPageSnapshot);
208
- return await this.waitForData();
209
- }
210
- }
211
- exports.Pagination = Pagination;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Pagination = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const object_1 = require("../utils/object");
6
+ const lodash_1 = require("lodash");
7
+ class Pagination {
8
+ constructor(snapshotEmitter, options = {}) {
9
+ this.internalStateObserver = new rxjs_1.BehaviorSubject(null);
10
+ this.firstElement = null;
11
+ this.isDestroyed = new rxjs_1.BehaviorSubject(false);
12
+ this.snapshotSubject = new rxjs_1.Subject();
13
+ this.onFirstPage = true;
14
+ this.navigatingToLastPage = false;
15
+ this.lastElement = null;
16
+ this.snapshotSubject.pipe((0, rxjs_1.switchAll)()).subscribe(data => this.dataReceived(data));
17
+ this.templateSnapshotEmitter = snapshotEmitter.clone();
18
+ this.options = Object.assign({ pageSize: 100, subscribe: true }, options);
19
+ this.goToFirstPage();
20
+ }
21
+ goToFirstPage() {
22
+ this.onFirstPage = true;
23
+ const firstPageSnapshot = this.templateSnapshotEmitter
24
+ .clone()
25
+ .limit(this.options.pageSize * 3)
26
+ .snapshots(this.options.subscribe);
27
+ this.snapshotSubject.next(firstPageSnapshot);
28
+ }
29
+ static compareValues(a, b) {
30
+ if (lodash_1.default.isNil(a)) {
31
+ return lodash_1.default.isNil(b) ? 0 : -1;
32
+ }
33
+ if (lodash_1.default.isNil(b)) {
34
+ return 1;
35
+ }
36
+ if (a > b) {
37
+ return 1;
38
+ }
39
+ else if (a < b) {
40
+ return -1;
41
+ }
42
+ else {
43
+ return 0;
44
+ }
45
+ }
46
+ compare(doc1, doc2) {
47
+ if (lodash_1.default.isNil(doc2)) {
48
+ return 1;
49
+ }
50
+ for (const so of this.templateSnapshotEmitter.getSortOrders()) {
51
+ const currentComparison = Pagination.compareValues((0, object_1.getInPath)(doc1, so.fieldName), (0, object_1.getInPath)(doc2, so.fieldName));
52
+ if (currentComparison !== 0) {
53
+ if (so.asc) {
54
+ return currentComparison;
55
+ }
56
+ else {
57
+ return -currentComparison;
58
+ }
59
+ }
60
+ }
61
+ return 0;
62
+ }
63
+ async dataReceived(data) {
64
+ const extractedData = data.map(s => this.templateSnapshotEmitter.extractData(s));
65
+ if (data.length === 0) {
66
+ if (this.onFirstPage) {
67
+ this.internalStateObserver.next({ numBefore: 0, numAfter: 0, data, extractedData });
68
+ }
69
+ else {
70
+ this.goToFirstPage();
71
+ }
72
+ return;
73
+ }
74
+ if (this.firstElement === null) {
75
+ if (this.lastElement !== null) {
76
+ const numAfter = extractedData.filter(s => this.compare(s, this.lastElement) === 1).length;
77
+ this.firstElement = extractedData[data.length - numAfter - this.options.pageSize];
78
+ this.lastElement = null;
79
+ }
80
+ else if (this.navigatingToLastPage) {
81
+ this.firstElement = extractedData[data.length - this.options.pageSize];
82
+ this.navigatingToLastPage = false;
83
+ }
84
+ }
85
+ const numBefore = extractedData.filter(s => this.compare(s, this.firstElement) === -1).length;
86
+ const numAfter = Math.max(0, data.length - numBefore - this.options.pageSize);
87
+ if (numBefore === data.length) {
88
+ this.prevInternal({ numBefore, numAfter, data, extractedData });
89
+ return;
90
+ }
91
+ this.internalStateObserver.next({ numBefore, numAfter, data, extractedData });
92
+ }
93
+ doNewQuery(startingDoc, reverseOrder) {
94
+ this.onFirstPage = false;
95
+ if (reverseOrder) {
96
+ const newSnapshotEmitter = this.templateSnapshotEmitter
97
+ .clone()
98
+ .limit(this.options.pageSize * 3)
99
+ .flipSortOrder();
100
+ if (startingDoc) {
101
+ newSnapshotEmitter.addCompositeCondition(this.templateSnapshotEmitter.getSortOrders().map(sortOrder => {
102
+ return {
103
+ fieldName: sortOrder.fieldName,
104
+ operator: sortOrder.asc ? '<=' : '>=',
105
+ value: (0, object_1.getInPath)(startingDoc, sortOrder.fieldName) || null,
106
+ };
107
+ }));
108
+ }
109
+ this.snapshotSubject.next(newSnapshotEmitter.snapshots(this.options.subscribe).pipe((0, rxjs_1.map)(s => s.reverse())));
110
+ }
111
+ else {
112
+ const newSnapshotEmitter = this.templateSnapshotEmitter.clone().limit(this.options.pageSize * 3);
113
+ if (startingDoc) {
114
+ newSnapshotEmitter.addCompositeCondition(this.templateSnapshotEmitter.getSortOrders().map(sortOrder => {
115
+ return {
116
+ fieldName: sortOrder.fieldName,
117
+ operator: sortOrder.asc ? '>=' : '<=',
118
+ value: (0, object_1.getInPath)(startingDoc, sortOrder.fieldName) || null,
119
+ };
120
+ }));
121
+ }
122
+ this.snapshotSubject.next(newSnapshotEmitter.snapshots(this.options.subscribe));
123
+ }
124
+ }
125
+ async waitForInternalState() {
126
+ const internalState = this.internalStateObserver.value;
127
+ if (internalState !== null) {
128
+ return internalState;
129
+ }
130
+ return await (0, rxjs_1.firstValueFrom)((0, rxjs_1.race)(this.isDestroyed.pipe((0, rxjs_1.filter)(Boolean), (0, rxjs_1.map)(_ => ({
131
+ data: [],
132
+ extractedData: [],
133
+ numBefore: 0,
134
+ numAfter: 0,
135
+ }))), this.internalStateObserver.pipe((0, rxjs_1.filter)((state) => state !== null), (0, rxjs_1.take)(1))));
136
+ }
137
+ internalStateToState(internalState) {
138
+ const { data, numBefore, numAfter, extractedData } = internalState;
139
+ return {
140
+ data: data
141
+ .filter((_, i) => this.compare(extractedData[i], this.firstElement) !== -1)
142
+ .slice(0, this.options.pageSize),
143
+ hasNext: numAfter > 0,
144
+ hasPrev: numBefore > 0,
145
+ };
146
+ }
147
+ unsubscribe() {
148
+ this.isDestroyed.next(true);
149
+ this.isDestroyed.complete();
150
+ this.internalStateObserver.complete();
151
+ this.snapshotSubject.complete();
152
+ }
153
+ prevInternal(internalState) {
154
+ const { numBefore, numAfter, data, extractedData } = internalState;
155
+ this.firstElement = null;
156
+ this.lastElement = extractedData[numBefore - 1];
157
+ this.internalStateObserver.next(null);
158
+ this.doNewQuery(extractedData[extractedData.length - numAfter - 1], true);
159
+ }
160
+ async prev() {
161
+ this.prevInternal(await this.waitForInternalState());
162
+ return await this.waitForData();
163
+ }
164
+ async next() {
165
+ const { numBefore, extractedData } = await this.waitForInternalState();
166
+ if (numBefore + this.options.pageSize < extractedData.length) {
167
+ this.firstElement = extractedData[numBefore + this.options.pageSize];
168
+ }
169
+ this.internalStateObserver.next(null);
170
+ this.doNewQuery(extractedData[numBefore], false);
171
+ return await this.waitForData();
172
+ }
173
+ async waitForData() {
174
+ return this.internalStateToState(await this.waitForInternalState());
175
+ }
176
+ observeState() {
177
+ return this.internalStateObserver.pipe((0, rxjs_1.filter)((state) => state !== null), (0, rxjs_1.map)(state => {
178
+ return this.internalStateToState(state);
179
+ }));
180
+ }
181
+ async first() {
182
+ await this.waitForInternalState();
183
+ this.internalStateObserver.next(null);
184
+ this.firstElement = null;
185
+ this.lastElement = null;
186
+ this.goToFirstPage();
187
+ return await this.waitForData();
188
+ }
189
+ async refreshPage() {
190
+ const { extractedData } = await this.waitForInternalState();
191
+ this.internalStateObserver.next(null);
192
+ this.doNewQuery(extractedData[0], false);
193
+ return await this.waitForData();
194
+ }
195
+ async last() {
196
+ await this.waitForInternalState();
197
+ this.internalStateObserver.next(null);
198
+ this.firstElement = null;
199
+ this.lastElement = null;
200
+ this.navigatingToLastPage = true;
201
+ const lastPageSnapshot = this.templateSnapshotEmitter
202
+ .clone()
203
+ .limit(this.options.pageSize * 3)
204
+ .flipSortOrder()
205
+ .snapshots(this.options.subscribe)
206
+ .pipe((0, rxjs_1.map)(s => s.reverse()));
207
+ this.snapshotSubject.next(lastPageSnapshot);
208
+ return await this.waitForData();
209
+ }
210
+ }
211
+ exports.Pagination = Pagination;
212
212
  //# sourceMappingURL=pagination.js.map
@@ -1,47 +1,47 @@
1
- import { IntegrationId } from '../communication.types';
2
- import { CollectionName, DocumentData } from '../document.types';
3
- import { FieldSort, Operator, Query, SimpleCondition } from '../query.types';
4
- import { DeepRecord, FieldOf, PartialBy, Paths } from '../types';
5
- export declare class QueryContext<T extends DocumentData = any> {
6
- readonly query: Query<T>;
7
- private readonly parsedConditions;
8
- constructor(query: Query<T>);
9
- get integrationId(): IntegrationId;
10
- get collectionName(): CollectionName;
11
- get limit(): number;
12
- sortedBy(sorts: Array<PartialBy<FieldSort<T>, 'asc'>>): boolean;
13
- sortedByExact(sorts: Array<PartialBy<FieldSort<T>, 'asc'>>): boolean;
14
- isSubqueryOf<F extends Paths<T>, O extends AllOperators>(fieldName: F, operator: O, value: GenericValue<T, F, O> | null): boolean;
15
- isSubqueryOfCondition(condition: GeneralCondition<T>): boolean;
16
- isSubqueryOfConditions(conditions: GeneralConditions<T>): boolean;
17
- isSubqueryOfQuery(query: Query<T>): boolean;
18
- getConditionsFor<K extends Paths<T>>(...fieldNames: Array<K>): ContextConditions<T, K>;
19
- getConditionsForField<K extends Paths<T>>(fieldName: K): ContextConditions<T>;
20
- documentMatchesQuery(doc: DocumentData): boolean;
21
- private evaluateSubset;
22
- private evaluateIncludes;
23
- private parseConditions;
24
- }
25
- export type ContextConditions<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> = Array<ContextCondition<Doc, F>>;
26
- type ContextCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> = InContextCondition<Doc, F> | NotInContextCondition<Doc, F> | OtherContextCondition<Doc, F>;
27
- interface InContextCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> extends SimpleCondition<Doc, F, 'in'> {
28
- operator: 'in';
29
- value: Array<FieldOf<DeepRecord<Doc>, Paths<Doc>> | any>;
30
- }
31
- interface NotInContextCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> extends SimpleCondition<Doc, F, 'not in'> {
32
- operator: 'not in';
33
- value: Array<FieldOf<DeepRecord<Doc>, Paths<Doc>> | any>;
34
- }
35
- interface OtherContextCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> extends SimpleCondition<Doc, F, Exclude<ContextOperator, 'in' | 'not in'>> {
36
- operator: Exclude<ContextOperator, 'in' | 'not in'>;
37
- value: FieldOf<DeepRecord<Doc>, Paths<Doc>> | any;
38
- }
39
- interface GeneralCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> extends SimpleCondition<Doc, F, AllOperators> {
40
- operator: AllOperators;
41
- value: any;
42
- }
43
- type GeneralConditions<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> = Array<GeneralCondition<Doc, F>>;
44
- type ContextOperator = Exclude<Operator, '==' | '!='> | 'in' | 'not in';
45
- type AllOperators = Operator | 'in' | 'not in';
46
- type GenericValue<Doc = any, F extends Paths<Doc> = Paths<Doc>, O extends AllOperators = any> = O extends 'in' ? Array<DeepRecord<Doc>[F]> | null : O extends 'not in' ? Array<DeepRecord<Doc>[F]> | null : DeepRecord<Doc>[F] | null;
47
- export {};
1
+ import { IntegrationId } from '../communication.types';
2
+ import { CollectionName, DocumentData } from '../document.types';
3
+ import { FieldSort, Operator, Query, SimpleCondition } from '../query.types';
4
+ import { DeepRecord, FieldOf, PartialBy, Paths } from '../types';
5
+ export declare class QueryContext<T extends DocumentData = any> {
6
+ readonly query: Query<T>;
7
+ private readonly parsedConditions;
8
+ constructor(query: Query<T>);
9
+ get integrationId(): IntegrationId;
10
+ get collectionName(): CollectionName;
11
+ get limit(): number;
12
+ sortedBy(sorts: Array<PartialBy<FieldSort<T>, 'asc'>>): boolean;
13
+ sortedByExact(sorts: Array<PartialBy<FieldSort<T>, 'asc'>>): boolean;
14
+ isSubqueryOf<F extends Paths<T>, O extends AllOperators>(fieldName: F, operator: O, value: GenericValue<T, F, O> | null): boolean;
15
+ isSubqueryOfCondition(condition: GeneralCondition<T>): boolean;
16
+ isSubqueryOfConditions(conditions: GeneralConditions<T>): boolean;
17
+ isSubqueryOfQuery(query: Query<T>): boolean;
18
+ getConditionsFor<K extends Paths<T>>(...fieldNames: Array<K>): ContextConditions<T, K>;
19
+ getConditionsForField<K extends Paths<T>>(fieldName: K): ContextConditions<T>;
20
+ documentMatchesQuery(doc: DocumentData): boolean;
21
+ private evaluateSubset;
22
+ private evaluateIncludes;
23
+ private parseConditions;
24
+ }
25
+ export type ContextConditions<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> = Array<ContextCondition<Doc, F>>;
26
+ type ContextCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> = InContextCondition<Doc, F> | NotInContextCondition<Doc, F> | OtherContextCondition<Doc, F>;
27
+ interface InContextCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> extends SimpleCondition<Doc, F, 'in'> {
28
+ operator: 'in';
29
+ value: Array<FieldOf<DeepRecord<Doc>, Paths<Doc>> | any>;
30
+ }
31
+ interface NotInContextCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> extends SimpleCondition<Doc, F, 'not in'> {
32
+ operator: 'not in';
33
+ value: Array<FieldOf<DeepRecord<Doc>, Paths<Doc>> | any>;
34
+ }
35
+ interface OtherContextCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> extends SimpleCondition<Doc, F, Exclude<ContextOperator, 'in' | 'not in'>> {
36
+ operator: Exclude<ContextOperator, 'in' | 'not in'>;
37
+ value: FieldOf<DeepRecord<Doc>, Paths<Doc>> | any;
38
+ }
39
+ interface GeneralCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> extends SimpleCondition<Doc, F, AllOperators> {
40
+ operator: AllOperators;
41
+ value: any;
42
+ }
43
+ type GeneralConditions<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> = Array<GeneralCondition<Doc, F>>;
44
+ type ContextOperator = Exclude<Operator, '==' | '!='> | 'in' | 'not in';
45
+ type AllOperators = Operator | 'in' | 'not in';
46
+ type GenericValue<Doc = any, F extends Paths<Doc> = Paths<Doc>, O extends AllOperators = any> = O extends 'in' ? Array<DeepRecord<Doc>[F]> | null : O extends 'not in' ? Array<DeepRecord<Doc>[F]> | null : DeepRecord<Doc>[F] | null;
47
+ export {};