@squidcloud/local-backend 1.0.65 → 1.0.67

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 (182) hide show
  1. package/dist/common/src/ai-assistant.context.d.ts +13 -13
  2. package/dist/common/src/ai-assistant.context.js +19 -19
  3. package/dist/common/src/ai-assistant.schemas.d.ts +243 -243
  4. package/dist/common/src/ai-assistant.schemas.js +210 -210
  5. package/dist/common/src/ai-assistant.types.d.ts +90 -90
  6. package/dist/common/src/ai-assistant.types.js +11 -11
  7. package/dist/common/src/api-call.context.d.ts +13 -13
  8. package/dist/common/src/api-call.context.js +16 -16
  9. package/dist/common/src/api.types.d.ts +23 -23
  10. package/dist/common/src/api.types.js +2 -2
  11. package/dist/common/src/application.schemas.d.ts +1312 -1312
  12. package/dist/common/src/application.schemas.js +860 -860
  13. package/dist/common/src/application.types.d.ts +186 -186
  14. package/dist/common/src/application.types.js +89 -89
  15. package/dist/common/src/backend-function.schemas.d.ts +3 -3
  16. package/dist/common/src/backend-function.schemas.js +12 -12
  17. package/dist/common/src/backend-function.types.d.ts +6 -6
  18. package/dist/common/src/backend-function.types.js +2 -2
  19. package/dist/common/src/backend-run.types.d.ts +54 -54
  20. package/dist/common/src/backend-run.types.js +96 -96
  21. package/dist/common/src/bundle-api.types.d.ts +63 -63
  22. package/dist/common/src/bundle-api.types.js +2 -2
  23. package/dist/common/src/bundle-data.types.d.ts +59 -59
  24. package/dist/common/src/bundle-data.types.js +2 -2
  25. package/dist/common/src/communication.types.d.ts +18 -18
  26. package/dist/common/src/communication.types.js +40 -40
  27. package/dist/common/src/context.types.d.ts +24 -24
  28. package/dist/common/src/context.types.js +2 -2
  29. package/dist/common/src/distributed-lock.context.d.ts +5 -5
  30. package/dist/common/src/distributed-lock.context.js +10 -10
  31. package/dist/common/src/document.types.d.ts +32 -32
  32. package/dist/common/src/document.types.js +50 -50
  33. package/dist/common/src/graphql.context.d.ts +14 -14
  34. package/dist/common/src/graphql.context.js +12 -12
  35. package/dist/common/src/graphql.types.d.ts +11 -11
  36. package/dist/common/src/graphql.types.js +34 -34
  37. package/dist/common/src/heartbeat.types.d.ts +4 -4
  38. package/dist/common/src/heartbeat.types.js +16 -16
  39. package/dist/common/src/http-status.enum.d.ts +50 -50
  40. package/dist/common/src/http-status.enum.js +54 -54
  41. package/dist/common/src/index.d.ts +55 -55
  42. package/dist/common/src/index.js +71 -71
  43. package/dist/common/src/integrations/ai_assistant.types.d.ts +24 -24
  44. package/dist/common/src/integrations/ai_assistant.types.js +2 -2
  45. package/dist/common/src/integrations/api.types.d.ts +80 -80
  46. package/dist/common/src/integrations/api.types.js +2 -2
  47. package/dist/common/src/integrations/auth.types.d.ts +39 -39
  48. package/dist/common/src/integrations/auth.types.js +2 -2
  49. package/dist/common/src/integrations/database.types.d.ts +231 -231
  50. package/dist/common/src/integrations/database.types.js +2 -2
  51. package/dist/common/src/integrations/index.d.ts +124 -124
  52. package/dist/common/src/integrations/index.js +111 -111
  53. package/dist/common/src/integrations/observability.types.d.ts +23 -23
  54. package/dist/common/src/integrations/observability.types.js +23 -23
  55. package/dist/common/src/logger.types.d.ts +21 -21
  56. package/dist/common/src/logger.types.js +11 -11
  57. package/dist/common/src/metrics.types.d.ts +73 -73
  58. package/dist/common/src/metrics.types.js +11 -11
  59. package/dist/common/src/mutation.context.d.ts +13 -13
  60. package/dist/common/src/mutation.context.js +26 -26
  61. package/dist/common/src/mutation.schemas.d.ts +5 -5
  62. package/dist/common/src/mutation.schemas.js +114 -114
  63. package/dist/common/src/mutation.types.d.ts +63 -63
  64. package/dist/common/src/mutation.types.js +142 -142
  65. package/dist/common/src/named-query.context.d.ts +4 -4
  66. package/dist/common/src/named-query.context.js +9 -9
  67. package/dist/common/src/named-query.schemas.d.ts +3 -3
  68. package/dist/common/src/named-query.schemas.js +13 -13
  69. package/dist/common/src/named-query.types.d.ts +8 -8
  70. package/dist/common/src/named-query.types.js +2 -2
  71. package/dist/common/src/query/base-query-builder.d.ts +37 -37
  72. package/dist/common/src/query/base-query-builder.js +36 -36
  73. package/dist/common/src/query/index.d.ts +4 -4
  74. package/dist/common/src/query/index.js +20 -20
  75. package/dist/common/src/query/pagination.d.ts +42 -42
  76. package/dist/common/src/query/pagination.js +164 -164
  77. package/dist/common/src/query/query-context.d.ts +47 -47
  78. package/dist/common/src/query/query-context.js +159 -159
  79. package/dist/common/src/query/serialized-query.types.d.ts +24 -24
  80. package/dist/common/src/query/serialized-query.types.js +2 -2
  81. package/dist/common/src/query.types.d.ts +86 -86
  82. package/dist/common/src/query.types.js +153 -153
  83. package/dist/common/src/regions.d.ts +21 -21
  84. package/dist/common/src/regions.js +46 -46
  85. package/dist/common/src/schema/schema.types.d.ts +30 -30
  86. package/dist/common/src/schema/schema.types.js +172 -172
  87. package/dist/common/src/secret.schemas.d.ts +6 -6
  88. package/dist/common/src/secret.schemas.js +38 -32
  89. package/dist/common/src/secret.schemas.js.map +1 -1
  90. package/dist/common/src/secret.types.d.ts +49 -49
  91. package/dist/common/src/secret.types.js +5 -5
  92. package/dist/common/src/security.types.d.ts +3 -3
  93. package/dist/common/src/security.types.js +2 -2
  94. package/dist/common/src/socket.schemas.d.ts +3 -3
  95. package/dist/common/src/socket.schemas.js +58 -58
  96. package/dist/common/src/socket.types.d.ts +112 -112
  97. package/dist/common/src/socket.types.js +2 -2
  98. package/dist/common/src/time-units.d.ts +5 -5
  99. package/dist/common/src/time-units.js +8 -8
  100. package/dist/common/src/trigger.types.d.ts +15 -15
  101. package/dist/common/src/trigger.types.js +2 -2
  102. package/dist/common/src/types.d.ts +21 -21
  103. package/dist/common/src/types.js +2 -2
  104. package/dist/common/src/utils/array.d.ts +8 -8
  105. package/dist/common/src/utils/array.js +54 -54
  106. package/dist/common/src/utils/assert.d.ts +8 -8
  107. package/dist/common/src/utils/assert.js +49 -49
  108. package/dist/common/src/utils/error.d.ts +4 -4
  109. package/dist/common/src/utils/error.js +10 -10
  110. package/dist/common/src/utils/global.utils.d.ts +10 -10
  111. package/dist/common/src/utils/global.utils.js +46 -46
  112. package/dist/common/src/utils/http.d.ts +2 -2
  113. package/dist/common/src/utils/http.js +41 -40
  114. package/dist/common/src/utils/http.js.map +1 -1
  115. package/dist/common/src/utils/id.d.ts +2 -2
  116. package/dist/common/src/utils/id.js +21 -21
  117. package/dist/common/src/utils/lock.manager.d.ts +9 -9
  118. package/dist/common/src/utils/lock.manager.js +39 -39
  119. package/dist/common/src/utils/nullish.d.ts +2 -2
  120. package/dist/common/src/utils/nullish.js +11 -11
  121. package/dist/common/src/utils/object.d.ts +5 -5
  122. package/dist/common/src/utils/object.js +75 -75
  123. package/dist/common/src/utils/serialization.d.ts +6 -6
  124. package/dist/common/src/utils/serialization.js +77 -77
  125. package/dist/common/src/utils/transforms.d.ts +18 -18
  126. package/dist/common/src/utils/transforms.js +92 -92
  127. package/dist/common/src/utils/url.d.ts +1 -1
  128. package/dist/common/src/utils/url.js +15 -15
  129. package/dist/common/src/utils/validation.d.ts +17 -17
  130. package/dist/common/src/utils/validation.js +209 -209
  131. package/dist/common/src/webhook-response.d.ts +6 -6
  132. package/dist/common/src/webhook-response.js +2 -2
  133. package/dist/common/src/websocket.impl.d.ts +21 -21
  134. package/dist/common/src/websocket.impl.js +76 -76
  135. package/dist/internal-common/src/async-queue.d.ts +4 -4
  136. package/dist/internal-common/src/async-queue.js +17 -17
  137. package/dist/internal-common/src/code-executor.types.d.ts +13 -13
  138. package/dist/internal-common/src/code-executor.types.js +2 -2
  139. package/dist/internal-common/src/dao.types.d.ts +46 -46
  140. package/dist/internal-common/src/dao.types.js +2 -2
  141. package/dist/internal-common/src/environment/environment.types.d.ts +74 -74
  142. package/dist/internal-common/src/environment/environment.types.js +2 -2
  143. package/dist/internal-common/src/environment/index.d.ts +6 -6
  144. package/dist/internal-common/src/environment/index.js +27 -27
  145. package/dist/internal-common/src/environment/local.environment.d.ts +2 -2
  146. package/dist/internal-common/src/environment/local.environment.js +62 -62
  147. package/dist/internal-common/src/filters/custom-exception.filter.d.ts +6 -6
  148. package/dist/internal-common/src/filters/custom-exception.filter.js +44 -44
  149. package/dist/internal-common/src/index.d.ts +14 -14
  150. package/dist/internal-common/src/index.js +32 -32
  151. package/dist/internal-common/src/interceptors/body.interceptor.d.ts +5 -5
  152. package/dist/internal-common/src/interceptors/body.interceptor.js +24 -24
  153. package/dist/internal-common/src/kafka/kafka.manager.d.ts +22 -22
  154. package/dist/internal-common/src/kafka/kafka.manager.js +129 -129
  155. package/dist/internal-common/src/kafka/kafka.types.d.ts +17 -17
  156. package/dist/internal-common/src/kafka/kafka.types.js +2 -2
  157. package/dist/internal-common/src/kafka-observability-publisher.d.ts +11 -11
  158. package/dist/internal-common/src/kafka-observability-publisher.js +20 -20
  159. package/dist/internal-common/src/local-dev.types.d.ts +35 -35
  160. package/dist/internal-common/src/local-dev.types.js +2 -2
  161. package/dist/internal-common/src/observability-publisher.d.ts +9 -9
  162. package/dist/internal-common/src/observability-publisher.js +58 -58
  163. package/dist/internal-common/src/observability.types.d.ts +17 -17
  164. package/dist/internal-common/src/observability.types.js +2 -2
  165. package/dist/internal-common/src/shutdown.manager.d.ts +20 -20
  166. package/dist/internal-common/src/shutdown.manager.js +75 -75
  167. package/dist/internal-common/src/utils.d.ts +5 -5
  168. package/dist/internal-common/src/utils.js +29 -29
  169. package/dist/local-backend/src/index.d.ts +4 -4
  170. package/dist/local-backend/src/index.js +20 -20
  171. package/dist/local-backend/src/local-backend-socket.service.d.ts +19 -19
  172. package/dist/local-backend/src/local-backend-socket.service.js +110 -110
  173. package/dist/local-backend/src/local-backend.app.d.ts +2 -2
  174. package/dist/local-backend/src/local-backend.app.js +19 -19
  175. package/dist/local-backend/src/local-backend.controller.d.ts +8 -8
  176. package/dist/local-backend/src/local-backend.controller.js +49 -49
  177. package/dist/local-backend/src/local-backend.module.d.ts +8 -8
  178. package/dist/local-backend/src/local-backend.module.js +53 -53
  179. package/dist/local-backend/src/local-backend.service.d.ts +15 -15
  180. package/dist/local-backend/src/local-backend.service.js +165 -165
  181. package/dist/tsconfig.build.tsbuildinfo +1 -1
  182. package/package.json +1 -1
@@ -1,42 +1,42 @@
1
- import { SnapshotEmitter } from './base-query-builder';
2
- import { Observable } from 'rxjs';
3
- export interface PaginationState<ReturnType> {
4
- data: Array<ReturnType>;
5
- hasNext: boolean;
6
- hasPrev: boolean;
7
- }
8
- export interface PaginationOptions {
9
- subscribe: boolean;
10
- pageSize: number;
11
- }
12
- interface InternalState<ReturnType> {
13
- data: ReturnType[];
14
- extractedData: any[];
15
- numBefore: number;
16
- numAfter: number;
17
- }
18
- export declare class Pagination<ReturnType> {
19
- private readonly options;
20
- private internalStateObserver;
21
- private firstElement;
22
- private lastElement;
23
- private readonly isDestroyed;
24
- private templateSnapshotEmitter;
25
- private snapshotSubject;
26
- private onFirstPage;
27
- constructor(snapshotEmitter: SnapshotEmitter<ReturnType>, options?: Partial<PaginationOptions>);
28
- private goToFirstPage;
29
- private static compareValues;
30
- private compare;
31
- dataReceived(data: Array<ReturnType>): Promise<void>;
32
- private doNewQuery;
33
- private waitForInternalState;
34
- private internalStateToState;
35
- unsubscribe(): void;
36
- prevInternal(internalState: InternalState<ReturnType>): void;
37
- prev(): Promise<PaginationState<ReturnType>>;
38
- next(): Promise<PaginationState<ReturnType>>;
39
- waitForData(): Promise<PaginationState<ReturnType>>;
40
- observeState(): Observable<PaginationState<ReturnType>>;
41
- }
42
- export {};
1
+ import { SnapshotEmitter } from './base-query-builder';
2
+ import { Observable } from 'rxjs';
3
+ export interface PaginationState<ReturnType> {
4
+ data: Array<ReturnType>;
5
+ hasNext: boolean;
6
+ hasPrev: boolean;
7
+ }
8
+ export interface PaginationOptions {
9
+ subscribe: boolean;
10
+ pageSize: number;
11
+ }
12
+ interface InternalState<ReturnType> {
13
+ data: ReturnType[];
14
+ extractedData: any[];
15
+ numBefore: number;
16
+ numAfter: number;
17
+ }
18
+ export declare class Pagination<ReturnType> {
19
+ private readonly options;
20
+ private internalStateObserver;
21
+ private firstElement;
22
+ private lastElement;
23
+ private readonly isDestroyed;
24
+ private templateSnapshotEmitter;
25
+ private snapshotSubject;
26
+ private onFirstPage;
27
+ constructor(snapshotEmitter: SnapshotEmitter<ReturnType>, options?: Partial<PaginationOptions>);
28
+ private goToFirstPage;
29
+ private static compareValues;
30
+ private compare;
31
+ dataReceived(data: Array<ReturnType>): Promise<void>;
32
+ private doNewQuery;
33
+ private waitForInternalState;
34
+ private internalStateToState;
35
+ unsubscribe(): void;
36
+ prevInternal(internalState: InternalState<ReturnType>): void;
37
+ prev(): Promise<PaginationState<ReturnType>>;
38
+ next(): Promise<PaginationState<ReturnType>>;
39
+ waitForData(): Promise<PaginationState<ReturnType>>;
40
+ observeState(): Observable<PaginationState<ReturnType>>;
41
+ }
42
+ export {};
@@ -1,165 +1,165 @@
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
- class Pagination {
7
- constructor(snapshotEmitter, options = {}) {
8
- this.internalStateObserver = new rxjs_1.BehaviorSubject(null);
9
- this.firstElement = null;
10
- this.lastElement = null;
11
- this.isDestroyed = new rxjs_1.BehaviorSubject(false);
12
- this.snapshotSubject = new rxjs_1.Subject();
13
- this.onFirstPage = true;
14
- this.snapshotSubject.pipe((0, rxjs_1.switchAll)()).subscribe((data) => this.dataReceived(data));
15
- this.templateSnapshotEmitter = snapshotEmitter.clone();
16
- this.options = Object.assign({ pageSize: 100, subscribe: true }, options);
17
- this.goToFirstPage();
18
- }
19
- goToFirstPage() {
20
- this.onFirstPage = true;
21
- const firstPageSnapshot = this.templateSnapshotEmitter
22
- .clone()
23
- .limit(this.options.pageSize * 3)
24
- .snapshots(this.options.subscribe);
25
- this.snapshotSubject.next(firstPageSnapshot);
26
- }
27
- static compareValues(a, b) {
28
- if (a > b) {
29
- return 1;
30
- }
31
- else if (a < b) {
32
- return -1;
33
- }
34
- else {
35
- return 0;
36
- }
37
- }
38
- compare(doc1, doc2) {
39
- if (doc2 === null) {
40
- return 1;
41
- }
42
- for (const so of this.templateSnapshotEmitter.getSortOrders()) {
43
- const currentComparison = Pagination.compareValues((0, object_1.getInPath)(doc1, so.fieldName), (0, object_1.getInPath)(doc2, so.fieldName));
44
- if (currentComparison !== 0) {
45
- if (so.asc) {
46
- return currentComparison;
47
- }
48
- else {
49
- return -currentComparison;
50
- }
51
- }
52
- }
53
- return 0;
54
- }
55
- async dataReceived(data) {
56
- const extractedData = data.map((s) => this.templateSnapshotEmitter.extractData(s));
57
- if (data.length === 0) {
58
- if (this.onFirstPage) {
59
- this.internalStateObserver.next({ numBefore: 0, numAfter: 0, data, extractedData });
60
- }
61
- else {
62
- this.goToFirstPage();
63
- }
64
- return;
65
- }
66
- if (this.firstElement === null && this.lastElement !== null) {
67
- const numAfter = extractedData.filter((s) => this.compare(s, this.lastElement) === 1).length;
68
- this.firstElement = extractedData[data.length - numAfter - this.options.pageSize];
69
- this.lastElement = null;
70
- }
71
- const numBefore = extractedData.filter((s) => this.compare(s, this.firstElement) === -1).length;
72
- const numAfter = Math.max(0, data.length - numBefore - this.options.pageSize);
73
- if (numBefore === data.length) {
74
- this.prevInternal({ numBefore, numAfter, data, extractedData });
75
- return;
76
- }
77
- this.internalStateObserver.next({ numBefore, numAfter, data, extractedData });
78
- }
79
- doNewQuery(startingDoc, reverseOrder) {
80
- this.onFirstPage = false;
81
- if (reverseOrder) {
82
- const newSnapshotEmitter = this.templateSnapshotEmitter
83
- .clone()
84
- .limit(this.options.pageSize * 3)
85
- .flipSortOrder()
86
- .addCompositeCondition(this.templateSnapshotEmitter.getSortOrders().map((sortOrder) => {
87
- return {
88
- fieldName: sortOrder.fieldName,
89
- operator: sortOrder.asc ? '<=' : '>=',
90
- value: (0, object_1.getInPath)(startingDoc, sortOrder.fieldName),
91
- };
92
- }));
93
- this.snapshotSubject.next(newSnapshotEmitter.snapshots(this.options.subscribe).pipe((0, rxjs_1.map)((s) => s.reverse())));
94
- }
95
- else {
96
- const newSnapshotEmitter = this.templateSnapshotEmitter
97
- .clone()
98
- .limit(this.options.pageSize * 3)
99
- .addCompositeCondition(this.templateSnapshotEmitter.getSortOrders().map((sortOrder) => {
100
- return {
101
- fieldName: sortOrder.fieldName,
102
- operator: sortOrder.asc ? '>=' : '<=',
103
- value: (0, object_1.getInPath)(startingDoc, sortOrder.fieldName),
104
- };
105
- }));
106
- this.snapshotSubject.next(newSnapshotEmitter.snapshots(this.options.subscribe));
107
- }
108
- }
109
- async waitForInternalState() {
110
- const internalState = this.internalStateObserver.value;
111
- if (internalState !== null) {
112
- return internalState;
113
- }
114
- return await (0, rxjs_1.firstValueFrom)((0, rxjs_1.race)(this.isDestroyed.pipe((0, rxjs_1.filter)(Boolean), (0, rxjs_1.map)((_) => ({
115
- data: [],
116
- extractedData: [],
117
- numBefore: 0,
118
- numAfter: 0,
119
- }))), this.internalStateObserver.pipe((0, rxjs_1.filter)((state) => state !== null), (0, rxjs_1.take)(1))));
120
- }
121
- internalStateToState(internalState) {
122
- const { data, numBefore, numAfter, extractedData } = internalState;
123
- return {
124
- data: data
125
- .filter((_, i) => this.compare(extractedData[i], this.firstElement) !== -1)
126
- .slice(0, this.options.pageSize),
127
- hasNext: numAfter > 0,
128
- hasPrev: numBefore > 0,
129
- };
130
- }
131
- unsubscribe() {
132
- this.isDestroyed.next(true);
133
- this.isDestroyed.complete();
134
- this.internalStateObserver.complete();
135
- this.snapshotSubject.complete();
136
- }
137
- prevInternal(internalState) {
138
- const { numBefore, numAfter, data, extractedData } = internalState;
139
- this.firstElement = null;
140
- this.lastElement = extractedData[numBefore - 1];
141
- this.internalStateObserver.next(null);
142
- this.doNewQuery(extractedData[extractedData.length - numAfter - 1], true);
143
- }
144
- async prev() {
145
- this.prevInternal(await this.waitForInternalState());
146
- return await this.waitForData();
147
- }
148
- async next() {
149
- const { numBefore, extractedData } = await this.waitForInternalState();
150
- this.firstElement = extractedData[numBefore + this.options.pageSize];
151
- this.internalStateObserver.next(null);
152
- this.doNewQuery(extractedData[numBefore], false);
153
- return await this.waitForData();
154
- }
155
- async waitForData() {
156
- return this.internalStateToState(await this.waitForInternalState());
157
- }
158
- observeState() {
159
- return this.internalStateObserver.pipe((0, rxjs_1.filter)((state) => state !== null), (0, rxjs_1.map)((state) => {
160
- return this.internalStateToState(state);
161
- }));
162
- }
163
- }
164
- 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
+ class Pagination {
7
+ constructor(snapshotEmitter, options = {}) {
8
+ this.internalStateObserver = new rxjs_1.BehaviorSubject(null);
9
+ this.firstElement = null;
10
+ this.lastElement = null;
11
+ this.isDestroyed = new rxjs_1.BehaviorSubject(false);
12
+ this.snapshotSubject = new rxjs_1.Subject();
13
+ this.onFirstPage = true;
14
+ this.snapshotSubject.pipe((0, rxjs_1.switchAll)()).subscribe((data) => this.dataReceived(data));
15
+ this.templateSnapshotEmitter = snapshotEmitter.clone();
16
+ this.options = Object.assign({ pageSize: 100, subscribe: true }, options);
17
+ this.goToFirstPage();
18
+ }
19
+ goToFirstPage() {
20
+ this.onFirstPage = true;
21
+ const firstPageSnapshot = this.templateSnapshotEmitter
22
+ .clone()
23
+ .limit(this.options.pageSize * 3)
24
+ .snapshots(this.options.subscribe);
25
+ this.snapshotSubject.next(firstPageSnapshot);
26
+ }
27
+ static compareValues(a, b) {
28
+ if (a > b) {
29
+ return 1;
30
+ }
31
+ else if (a < b) {
32
+ return -1;
33
+ }
34
+ else {
35
+ return 0;
36
+ }
37
+ }
38
+ compare(doc1, doc2) {
39
+ if (doc2 === null) {
40
+ return 1;
41
+ }
42
+ for (const so of this.templateSnapshotEmitter.getSortOrders()) {
43
+ const currentComparison = Pagination.compareValues((0, object_1.getInPath)(doc1, so.fieldName), (0, object_1.getInPath)(doc2, so.fieldName));
44
+ if (currentComparison !== 0) {
45
+ if (so.asc) {
46
+ return currentComparison;
47
+ }
48
+ else {
49
+ return -currentComparison;
50
+ }
51
+ }
52
+ }
53
+ return 0;
54
+ }
55
+ async dataReceived(data) {
56
+ const extractedData = data.map((s) => this.templateSnapshotEmitter.extractData(s));
57
+ if (data.length === 0) {
58
+ if (this.onFirstPage) {
59
+ this.internalStateObserver.next({ numBefore: 0, numAfter: 0, data, extractedData });
60
+ }
61
+ else {
62
+ this.goToFirstPage();
63
+ }
64
+ return;
65
+ }
66
+ if (this.firstElement === null && this.lastElement !== null) {
67
+ const numAfter = extractedData.filter((s) => this.compare(s, this.lastElement) === 1).length;
68
+ this.firstElement = extractedData[data.length - numAfter - this.options.pageSize];
69
+ this.lastElement = null;
70
+ }
71
+ const numBefore = extractedData.filter((s) => this.compare(s, this.firstElement) === -1).length;
72
+ const numAfter = Math.max(0, data.length - numBefore - this.options.pageSize);
73
+ if (numBefore === data.length) {
74
+ this.prevInternal({ numBefore, numAfter, data, extractedData });
75
+ return;
76
+ }
77
+ this.internalStateObserver.next({ numBefore, numAfter, data, extractedData });
78
+ }
79
+ doNewQuery(startingDoc, reverseOrder) {
80
+ this.onFirstPage = false;
81
+ if (reverseOrder) {
82
+ const newSnapshotEmitter = this.templateSnapshotEmitter
83
+ .clone()
84
+ .limit(this.options.pageSize * 3)
85
+ .flipSortOrder()
86
+ .addCompositeCondition(this.templateSnapshotEmitter.getSortOrders().map((sortOrder) => {
87
+ return {
88
+ fieldName: sortOrder.fieldName,
89
+ operator: sortOrder.asc ? '<=' : '>=',
90
+ value: (0, object_1.getInPath)(startingDoc, sortOrder.fieldName),
91
+ };
92
+ }));
93
+ this.snapshotSubject.next(newSnapshotEmitter.snapshots(this.options.subscribe).pipe((0, rxjs_1.map)((s) => s.reverse())));
94
+ }
95
+ else {
96
+ const newSnapshotEmitter = this.templateSnapshotEmitter
97
+ .clone()
98
+ .limit(this.options.pageSize * 3)
99
+ .addCompositeCondition(this.templateSnapshotEmitter.getSortOrders().map((sortOrder) => {
100
+ return {
101
+ fieldName: sortOrder.fieldName,
102
+ operator: sortOrder.asc ? '>=' : '<=',
103
+ value: (0, object_1.getInPath)(startingDoc, sortOrder.fieldName),
104
+ };
105
+ }));
106
+ this.snapshotSubject.next(newSnapshotEmitter.snapshots(this.options.subscribe));
107
+ }
108
+ }
109
+ async waitForInternalState() {
110
+ const internalState = this.internalStateObserver.value;
111
+ if (internalState !== null) {
112
+ return internalState;
113
+ }
114
+ return await (0, rxjs_1.firstValueFrom)((0, rxjs_1.race)(this.isDestroyed.pipe((0, rxjs_1.filter)(Boolean), (0, rxjs_1.map)((_) => ({
115
+ data: [],
116
+ extractedData: [],
117
+ numBefore: 0,
118
+ numAfter: 0,
119
+ }))), this.internalStateObserver.pipe((0, rxjs_1.filter)((state) => state !== null), (0, rxjs_1.take)(1))));
120
+ }
121
+ internalStateToState(internalState) {
122
+ const { data, numBefore, numAfter, extractedData } = internalState;
123
+ return {
124
+ data: data
125
+ .filter((_, i) => this.compare(extractedData[i], this.firstElement) !== -1)
126
+ .slice(0, this.options.pageSize),
127
+ hasNext: numAfter > 0,
128
+ hasPrev: numBefore > 0,
129
+ };
130
+ }
131
+ unsubscribe() {
132
+ this.isDestroyed.next(true);
133
+ this.isDestroyed.complete();
134
+ this.internalStateObserver.complete();
135
+ this.snapshotSubject.complete();
136
+ }
137
+ prevInternal(internalState) {
138
+ const { numBefore, numAfter, data, extractedData } = internalState;
139
+ this.firstElement = null;
140
+ this.lastElement = extractedData[numBefore - 1];
141
+ this.internalStateObserver.next(null);
142
+ this.doNewQuery(extractedData[extractedData.length - numAfter - 1], true);
143
+ }
144
+ async prev() {
145
+ this.prevInternal(await this.waitForInternalState());
146
+ return await this.waitForData();
147
+ }
148
+ async next() {
149
+ const { numBefore, extractedData } = await this.waitForInternalState();
150
+ this.firstElement = extractedData[numBefore + this.options.pageSize];
151
+ this.internalStateObserver.next(null);
152
+ this.doNewQuery(extractedData[numBefore], false);
153
+ return await this.waitForData();
154
+ }
155
+ async waitForData() {
156
+ return this.internalStateToState(await this.waitForInternalState());
157
+ }
158
+ observeState() {
159
+ return this.internalStateObserver.pipe((0, rxjs_1.filter)((state) => state !== null), (0, rxjs_1.map)((state) => {
160
+ return this.internalStateToState(state);
161
+ }));
162
+ }
163
+ }
164
+ exports.Pagination = Pagination;
165
165
  //# 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
- 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
+ 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 {};