@squidcloud/client 1.0.148 → 1.0.150
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/dist/cjs/index.js +8793 -8818
- package/dist/common/src/ai-assistant.types.d.ts +25 -25
- package/dist/common/src/ai-chatbot.context.d.ts +12 -12
- package/dist/common/src/ai-chatbot.schemas.d.ts +1 -1
- package/dist/common/src/ai-chatbot.types.d.ts +27 -27
- package/dist/common/src/api-call.context.d.ts +13 -13
- package/dist/common/src/api.types.d.ts +4 -4
- package/dist/common/src/application.schemas.d.ts +66 -66
- package/dist/common/src/application.types.d.ts +141 -143
- package/dist/common/src/backend-function.schemas.d.ts +1 -1
- package/dist/common/src/backend-function.types.d.ts +1 -1
- package/dist/common/src/backend-run.types.d.ts +2 -2
- package/dist/common/src/bundle-api.types.d.ts +41 -43
- package/dist/common/src/bundle-data.types.d.ts +5 -5
- package/dist/common/src/communication.types.d.ts +10 -8
- package/dist/common/src/context.types.d.ts +40 -40
- package/dist/common/src/distributed-lock.context.d.ts +4 -4
- package/dist/common/src/document.types.d.ts +22 -22
- package/dist/common/src/graphql.context.d.ts +7 -7
- package/dist/common/src/graphql.types.d.ts +9 -9
- package/dist/common/src/heartbeat.types.d.ts +1 -1
- package/dist/common/src/http-status.enum.d.ts +50 -50
- package/dist/common/src/index.d.ts +54 -57
- package/dist/common/src/integrations/ai_chatbot.types.d.ts +31 -31
- package/dist/common/src/integrations/api.types.d.ts +80 -80
- package/dist/common/src/integrations/auth.types.d.ts +47 -47
- package/dist/common/src/integrations/database.types.d.ts +274 -274
- package/dist/common/src/integrations/index.d.ts +134 -134
- package/dist/common/src/integrations/observability.types.d.ts +23 -23
- package/dist/common/src/logger.types.d.ts +21 -21
- package/dist/common/src/metrics.types.d.ts +1 -1
- package/dist/common/src/mutation.context.d.ts +14 -14
- package/dist/common/src/mutation.schemas.d.ts +1 -1
- package/dist/common/src/mutation.types.d.ts +53 -53
- package/dist/common/src/native-query.context.d.ts +7 -7
- package/dist/common/src/native-query.types.d.ts +16 -16
- package/dist/common/src/query/base-query-builder.d.ts +147 -147
- package/dist/common/src/query/index.d.ts +4 -4
- package/dist/common/src/query/pagination.d.ts +62 -62
- package/dist/common/src/query/query-context.d.ts +137 -137
- package/dist/common/src/query/serialized-query.types.d.ts +24 -24
- package/dist/common/src/query.types.d.ts +64 -64
- package/dist/common/src/regions.d.ts +1 -1
- package/dist/common/src/schema/schema.types.d.ts +54 -54
- package/dist/common/src/secret.schemas.d.ts +1 -1
- package/dist/common/src/secret.types.d.ts +22 -22
- package/dist/common/src/security.types.d.ts +1 -1
- package/dist/common/src/socket.schemas.d.ts +1 -1
- package/dist/common/src/socket.types.d.ts +5 -5
- package/dist/common/src/time-units.d.ts +1 -1
- package/dist/common/src/trigger.types.d.ts +1 -1
- package/dist/common/src/types.d.ts +14 -14
- package/dist/common/src/utils/array.d.ts +1 -1
- package/dist/common/src/utils/assert.d.ts +1 -1
- package/dist/common/src/utils/error.d.ts +4 -4
- package/dist/common/src/utils/global.utils.d.ts +1 -1
- package/dist/common/src/utils/http.d.ts +2 -2
- package/dist/common/src/utils/id.d.ts +2 -2
- package/dist/common/src/utils/lock.manager.d.ts +14 -14
- package/dist/common/src/utils/object.d.ts +5 -5
- package/dist/common/src/utils/serialization.d.ts +5 -5
- package/dist/common/src/utils/transforms.d.ts +18 -18
- package/dist/common/src/utils/url.d.ts +1 -1
- package/dist/common/src/utils/validation.d.ts +25 -25
- package/dist/common/src/webhook-response.d.ts +1 -1
- package/dist/common/src/websocket.impl.d.ts +21 -21
- package/dist/node_modules/json-schema-typed/draft-2020-12.d.ts +1239 -1239
- package/dist/typescript-client/src/ai-assistant-client.d.ts +73 -73
- package/dist/typescript-client/src/ai-chatbot-client.d.ts +174 -174
- package/dist/typescript-client/src/ai-chatbot-client.factory.d.ts +8 -8
- package/dist/typescript-client/src/ai.types.d.ts +61 -61
- package/dist/typescript-client/src/api.manager.d.ts +11 -11
- package/dist/typescript-client/src/auth.manager.d.ts +26 -26
- package/dist/typescript-client/src/backend-function.manager.d.ts +9 -9
- package/dist/typescript-client/src/client-id.service.d.ts +27 -27
- package/dist/typescript-client/src/collection-reference.d.ts +80 -80
- package/dist/typescript-client/src/collection-reference.factory.d.ts +13 -13
- package/dist/typescript-client/src/connection-details.d.ts +23 -23
- package/dist/typescript-client/src/data.manager.d.ts +174 -174
- package/dist/typescript-client/src/destruct.manager.d.ts +12 -12
- package/dist/typescript-client/src/distributed-lock.manager.d.ts +16 -16
- package/dist/typescript-client/src/document-identity.service.d.ts +12 -12
- package/dist/typescript-client/src/document-reference.d.ts +140 -140
- package/dist/typescript-client/src/document-reference.factory.d.ts +13 -13
- package/dist/typescript-client/src/document-store.d.ts +14 -14
- package/dist/typescript-client/src/graphql-client.d.ts +14 -14
- package/dist/typescript-client/src/graphql-client.factory.d.ts +11 -11
- package/dist/typescript-client/src/index.d.ts +9 -9
- package/dist/typescript-client/src/mutation/mutation-sender.d.ts +10 -10
- package/dist/typescript-client/src/native-query-manager.d.ts +7 -7
- package/dist/typescript-client/src/query/deserializer.d.ts +3 -3
- package/dist/typescript-client/src/query/join-query-builder.factory.d.ts +161 -161
- package/dist/typescript-client/src/query/local-query-manager.d.ts +9 -9
- package/dist/typescript-client/src/query/query-builder.factory.d.ts +77 -77
- package/dist/typescript-client/src/query/query-sender.d.ts +33 -33
- package/dist/typescript-client/src/query/query-subscription.manager.d.ts +131 -131
- package/dist/typescript-client/src/query/query.types.d.ts +49 -49
- package/dist/typescript-client/src/rate-limiter.d.ts +32 -32
- package/dist/typescript-client/src/rpc.manager.d.ts +30 -30
- package/dist/typescript-client/src/secret.client.d.ts +22 -22
- package/dist/typescript-client/src/socket.manager.d.ts +43 -43
- package/dist/typescript-client/src/squid.d.ts +238 -269
- package/dist/typescript-client/src/state/state.service.spec.d.ts +1 -1
- package/dist/typescript-client/src/testing/setup-tests.d.ts +1 -1
- package/dist/typescript-client/src/types.d.ts +2 -2
- package/package.json +2 -2
- package/dist/common/src/named-query.context.d.ts +0 -4
- package/dist/common/src/named-query.schemas.d.ts +0 -1
- package/dist/common/src/named-query.types.d.ts +0 -1
- package/dist/typescript-client/src/named-query.manager.d.ts +0 -11
|
@@ -1,161 +1,161 @@
|
|
|
1
|
-
import { Alias, BaseQueryBuilder, DocumentData, FieldName, FieldSort, HasDereference, Operator, Pagination, PaginationOptions, PrimitiveFieldType, SerializedJoinQuery, SimpleCondition, SnapshotEmitter } from '@squidcloud/common';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { DocumentReference } from '../document-reference';
|
|
4
|
-
import { QueryBuilder } from './query-builder.factory';
|
|
5
|
-
type WithDocumentReferences<T extends Record<any, DocumentData>> = {
|
|
6
|
-
[k in keyof T]: DocumentReference<Required<T>[k]>;
|
|
7
|
-
};
|
|
8
|
-
type Grouped<Aliases extends Record<Alias, Alias[]>, ReturnType extends Record<Alias, any>, RootAlias extends Alias> = Aliases[RootAlias] extends [] ? Required<ReturnType>[RootAlias] : Record<RootAlias, Required<ReturnType>[RootAlias]> & OtherGroups<Aliases, ReturnType, Aliases[RootAlias]>;
|
|
9
|
-
type OtherGroups<Aliases extends Record<Alias, Alias[]>, ReturnType extends Record<Alias, any>, ManyRootAliases extends Alias[]> = ManyRootAliases extends [infer First extends Alias, ...infer Rest extends Alias[]] ? Record<First, Array<Grouped<Aliases, ReturnType, First>>> & OtherGroups<Aliases, ReturnType, Rest> : Record<Alias, never>;
|
|
10
|
-
interface HasGrouped {
|
|
11
|
-
/**
|
|
12
|
-
* Transforms this join query result to a nested data structure. For example, a join between teachers and students
|
|
13
|
-
* normally returns a result of the form:
|
|
14
|
-
* [
|
|
15
|
-
* { teacher: {name: 'Mr. Smith'}, student: {name: 'John Doe'} },
|
|
16
|
-
* { teacher: {name: 'Mr. Smith'}, student: {name: 'Jane Smith'} },
|
|
17
|
-
* { teacher: {name: 'Mr. EmptyClass'}, student: undefined },
|
|
18
|
-
* ]
|
|
19
|
-
* into a result of the form:
|
|
20
|
-
* [
|
|
21
|
-
* { teacher: {name: 'Mr. Smith'}, students: [
|
|
22
|
-
* { name: 'John Doe' },
|
|
23
|
-
* { name: 'Jane Smith' },
|
|
24
|
-
* ]},
|
|
25
|
-
* { teacher: {name: 'Mr. EmptyClass'}, students: [] },
|
|
26
|
-
* ]
|
|
27
|
-
*/
|
|
28
|
-
grouped(): any;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* A query builder that can participate in a join.
|
|
32
|
-
* To learn more about join queries, see the
|
|
33
|
-
* {@link https://docs.squid.cloud/docs/development-tools/client-sdk/queries#joining-data-across-collections-and-integrations documentation}.
|
|
34
|
-
*/
|
|
35
|
-
export declare class JoinQueryBuilder<Aliases extends Record<Alias, Alias[]>, ReturnType extends Record<Alias, DocumentData>, LatestAlias extends Alias, RootAlias extends Alias> extends BaseQueryBuilder<ReturnType> implements SnapshotEmitter<WithDocumentReferences<ReturnType>>, HasGrouped, HasDereference {
|
|
36
|
-
private readonly collectionName;
|
|
37
|
-
private readonly integrationId;
|
|
38
|
-
private readonly querySubscriptionManager;
|
|
39
|
-
private readonly documentReferenceFactory;
|
|
40
|
-
private readonly queryBuilderFactory;
|
|
41
|
-
private readonly latestAlias;
|
|
42
|
-
private readonly joins;
|
|
43
|
-
private readonly joinConditions;
|
|
44
|
-
private readonly queryBuilder;
|
|
45
|
-
/**
|
|
46
|
-
* Adds a condition to the query.
|
|
47
|
-
*
|
|
48
|
-
* @param fieldName The name of the field to query
|
|
49
|
-
* @param operator The operator to use
|
|
50
|
-
* @param value The value to compare against
|
|
51
|
-
* @returns The query builder
|
|
52
|
-
*/
|
|
53
|
-
where(fieldName: (keyof ReturnType[LatestAlias] & FieldName) | string, operator: Operator | 'in' | 'not in', value: PrimitiveFieldType | Array<PrimitiveFieldType>): this;
|
|
54
|
-
/**
|
|
55
|
-
* Sets a limit to the number of results returned by the query. The maximum limit is 20,000 and the default is 1,000
|
|
56
|
-
* if none is provided.
|
|
57
|
-
*
|
|
58
|
-
* @param limit The maximum number of results to return
|
|
59
|
-
* @returns The query builder
|
|
60
|
-
*/
|
|
61
|
-
limit(limit: number): this;
|
|
62
|
-
getLimit(): number;
|
|
63
|
-
/**
|
|
64
|
-
* Adds a sort order to the query. You can add multiple sort orders to the query. The order in which you add them
|
|
65
|
-
* determines the order in which they are applied.
|
|
66
|
-
* @param fieldName The name of the field to sort by
|
|
67
|
-
* @param asc Whether to sort in ascending order. Defaults to true.
|
|
68
|
-
* @returns The query builder
|
|
69
|
-
*/
|
|
70
|
-
sortBy(fieldName: keyof ReturnType[RootAlias] & FieldName, asc?: boolean): this;
|
|
71
|
-
/**
|
|
72
|
-
* Joins this query with another join query and return a new query builder that can be used to query the joined
|
|
73
|
-
* documents.
|
|
74
|
-
* @param queryBuilder The query builder to join with
|
|
75
|
-
* @param alias TODO
|
|
76
|
-
* @param joinFields TODO
|
|
77
|
-
* @param options TODO
|
|
78
|
-
* @returns A new query builder that can be used to query the joined documents
|
|
79
|
-
*/
|
|
80
|
-
join<NewAlias extends string, NewReturnType extends DocumentData, LeftAlias extends Extract<keyof ReturnType, Alias>, IsInner extends boolean = false>(queryBuilder: QueryBuilder<NewReturnType>, alias: Exclude<NewAlias, keyof ReturnType>, joinFields: {
|
|
81
|
-
left: keyof Required<ReturnType>[LeftAlias] & FieldName;
|
|
82
|
-
right: keyof NewReturnType & FieldName;
|
|
83
|
-
}, options: {
|
|
84
|
-
leftAlias: LeftAlias;
|
|
85
|
-
isInner?: IsInner;
|
|
86
|
-
}): JoinQueryBuilder<Omit<Aliases, LeftAlias> & Record<LeftAlias, [...Aliases[LeftAlias], NewAlias]> & Record<NewAlias, []>, ReturnType & (IsInner extends true ? Record<NewAlias, NewReturnType> : Partial<Record<NewAlias, NewReturnType>>), NewAlias, RootAlias>;
|
|
87
|
-
join<NewAlias extends string, NewReturnType extends DocumentData, IsInner extends boolean = false>(queryBuilder: QueryBuilder<NewReturnType>, alias: Exclude<NewAlias, keyof ReturnType>, joinFields: {
|
|
88
|
-
left: keyof Required<ReturnType>[LatestAlias] & FieldName;
|
|
89
|
-
right: keyof NewReturnType & FieldName;
|
|
90
|
-
}, options?: {
|
|
91
|
-
isInner?: IsInner;
|
|
92
|
-
}): JoinQueryBuilder<Omit<Aliases, LatestAlias> & Record<LatestAlias, [...Aliases[LatestAlias], NewAlias]> & Record<NewAlias, []>, ReturnType & (IsInner extends true ? Record<NewAlias, NewReturnType> : Partial<Record<NewAlias, NewReturnType>>), NewAlias, RootAlias>;
|
|
93
|
-
/** @inheritDoc */
|
|
94
|
-
snapshot(): Promise<Array<WithDocumentReferences<ReturnType>>>;
|
|
95
|
-
/** @inheritDoc */
|
|
96
|
-
snapshots(subscribe?: boolean): Observable<Array<WithDocumentReferences<ReturnType>>>;
|
|
97
|
-
/**
|
|
98
|
-
* @inheritDoc
|
|
99
|
-
*/
|
|
100
|
-
peek(): Array<WithDocumentReferences<ReturnType>>;
|
|
101
|
-
/** @inheritDoc */
|
|
102
|
-
grouped(): GroupedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
103
|
-
/** @inheritDoc */
|
|
104
|
-
dereference(): DereferencedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
105
|
-
getSortOrders(): Array<FieldSort<any>>;
|
|
106
|
-
clone(): JoinQueryBuilder<Aliases, ReturnType, LatestAlias, RootAlias>;
|
|
107
|
-
addCompositeCondition(conditions: Array<SimpleCondition>): JoinQueryBuilder<Aliases, ReturnType, LatestAlias, RootAlias>;
|
|
108
|
-
flipSortOrder(): JoinQueryBuilder<Aliases, ReturnType, LatestAlias, RootAlias>;
|
|
109
|
-
extractData(data: WithDocumentReferences<ReturnType>): any;
|
|
110
|
-
serialize(): SerializedJoinQuery;
|
|
111
|
-
paginate(options?: Partial<PaginationOptions>): Pagination<WithDocumentReferences<ReturnType>>;
|
|
112
|
-
}
|
|
113
|
-
declare class DereferencedJoin<Aliases extends Record<Alias, Alias[]>, ReturnType extends Record<Alias, DocumentData>, RootAlias extends Alias, LatestAlias extends Alias> implements SnapshotEmitter<ReturnType>, HasGrouped {
|
|
114
|
-
private readonly joinQueryBuilder;
|
|
115
|
-
constructor(joinQueryBuilder: JoinQueryBuilder<Aliases, ReturnType, LatestAlias, RootAlias>);
|
|
116
|
-
/** @inheritDoc */
|
|
117
|
-
grouped(): SnapshotEmitter<Grouped<Aliases, ReturnType, RootAlias>>;
|
|
118
|
-
/** @inheritDoc */
|
|
119
|
-
snapshot(): Promise<Array<ReturnType>>;
|
|
120
|
-
/** @inheritDoc */
|
|
121
|
-
snapshots(subscribe?: boolean): Observable<Array<ReturnType>>;
|
|
122
|
-
/**
|
|
123
|
-
* @inheritDoc
|
|
124
|
-
*/
|
|
125
|
-
peek(): Array<ReturnType>;
|
|
126
|
-
getSortOrders(): Array<FieldSort<any>>;
|
|
127
|
-
clone(): DereferencedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
128
|
-
addCompositeCondition(conditions: Array<SimpleCondition>): DereferencedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
129
|
-
flipSortOrder(): DereferencedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
130
|
-
limit(limit: number): DereferencedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
131
|
-
extractData(data: ReturnType): any;
|
|
132
|
-
paginate(options?: Partial<PaginationOptions>): Pagination<ReturnType>;
|
|
133
|
-
serialize(): SerializedJoinQuery;
|
|
134
|
-
getLimit(): number;
|
|
135
|
-
}
|
|
136
|
-
declare class GroupedJoin<Aliases extends Record<Alias, Alias[]>, ReturnType extends Record<Alias, DocumentData>, RootAlias extends Alias, LatestAlias extends Alias> implements SnapshotEmitter<Grouped<Aliases, WithDocumentReferences<ReturnType>, RootAlias>>, HasDereference {
|
|
137
|
-
readonly joinQueryBuilder: JoinQueryBuilder<Aliases, ReturnType, LatestAlias, RootAlias>;
|
|
138
|
-
/** internal */
|
|
139
|
-
constructor(joinQueryBuilder: JoinQueryBuilder<Aliases, ReturnType, LatestAlias, RootAlias>);
|
|
140
|
-
/** @inheritDoc */
|
|
141
|
-
snapshot(): Promise<Array<Grouped<Aliases, WithDocumentReferences<ReturnType>, RootAlias>>>;
|
|
142
|
-
/** @inheritDoc */
|
|
143
|
-
snapshots(subscribe?: boolean): Observable<Array<Grouped<Aliases, WithDocumentReferences<ReturnType>, RootAlias>>>;
|
|
144
|
-
/**
|
|
145
|
-
* @inheritDoc
|
|
146
|
-
*/
|
|
147
|
-
peek(): Array<Grouped<Aliases, WithDocumentReferences<ReturnType>, RootAlias>>;
|
|
148
|
-
/** @inheritDoc */
|
|
149
|
-
dereference(): SnapshotEmitter<Grouped<Aliases, ReturnType, RootAlias>>;
|
|
150
|
-
private groupData;
|
|
151
|
-
getSortOrders(): Array<FieldSort<any>>;
|
|
152
|
-
clone(): GroupedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
153
|
-
addCompositeCondition(conditions: Array<SimpleCondition>): GroupedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
154
|
-
flipSortOrder(): GroupedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
155
|
-
limit(limit: number): GroupedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
156
|
-
getLimit(): number;
|
|
157
|
-
extractData(data: Grouped<Aliases, WithDocumentReferences<ReturnType>, RootAlias>): any;
|
|
158
|
-
serialize(): SerializedJoinQuery;
|
|
159
|
-
paginate(options?: Partial<PaginationOptions>): Pagination<Grouped<Aliases, WithDocumentReferences<ReturnType>, RootAlias>>;
|
|
160
|
-
}
|
|
161
|
-
export {};
|
|
1
|
+
import { Alias, BaseQueryBuilder, DocumentData, FieldName, FieldSort, HasDereference, Operator, Pagination, PaginationOptions, PrimitiveFieldType, SerializedJoinQuery, SimpleCondition, SnapshotEmitter } from '@squidcloud/common';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { DocumentReference } from '../document-reference';
|
|
4
|
+
import { QueryBuilder } from './query-builder.factory';
|
|
5
|
+
type WithDocumentReferences<T extends Record<any, DocumentData>> = {
|
|
6
|
+
[k in keyof T]: DocumentReference<Required<T>[k]>;
|
|
7
|
+
};
|
|
8
|
+
type Grouped<Aliases extends Record<Alias, Alias[]>, ReturnType extends Record<Alias, any>, RootAlias extends Alias> = Aliases[RootAlias] extends [] ? Required<ReturnType>[RootAlias] : Record<RootAlias, Required<ReturnType>[RootAlias]> & OtherGroups<Aliases, ReturnType, Aliases[RootAlias]>;
|
|
9
|
+
type OtherGroups<Aliases extends Record<Alias, Alias[]>, ReturnType extends Record<Alias, any>, ManyRootAliases extends Alias[]> = ManyRootAliases extends [infer First extends Alias, ...infer Rest extends Alias[]] ? Record<First, Array<Grouped<Aliases, ReturnType, First>>> & OtherGroups<Aliases, ReturnType, Rest> : Record<Alias, never>;
|
|
10
|
+
interface HasGrouped {
|
|
11
|
+
/**
|
|
12
|
+
* Transforms this join query result to a nested data structure. For example, a join between teachers and students
|
|
13
|
+
* normally returns a result of the form:
|
|
14
|
+
* [
|
|
15
|
+
* { teacher: {name: 'Mr. Smith'}, student: {name: 'John Doe'} },
|
|
16
|
+
* { teacher: {name: 'Mr. Smith'}, student: {name: 'Jane Smith'} },
|
|
17
|
+
* { teacher: {name: 'Mr. EmptyClass'}, student: undefined },
|
|
18
|
+
* ]
|
|
19
|
+
* into a result of the form:
|
|
20
|
+
* [
|
|
21
|
+
* { teacher: {name: 'Mr. Smith'}, students: [
|
|
22
|
+
* { name: 'John Doe' },
|
|
23
|
+
* { name: 'Jane Smith' },
|
|
24
|
+
* ]},
|
|
25
|
+
* { teacher: {name: 'Mr. EmptyClass'}, students: [] },
|
|
26
|
+
* ]
|
|
27
|
+
*/
|
|
28
|
+
grouped(): any;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A query builder that can participate in a join.
|
|
32
|
+
* To learn more about join queries, see the
|
|
33
|
+
* {@link https://docs.squid.cloud/docs/development-tools/client-sdk/queries#joining-data-across-collections-and-integrations documentation}.
|
|
34
|
+
*/
|
|
35
|
+
export declare class JoinQueryBuilder<Aliases extends Record<Alias, Alias[]>, ReturnType extends Record<Alias, DocumentData>, LatestAlias extends Alias, RootAlias extends Alias> extends BaseQueryBuilder<ReturnType> implements SnapshotEmitter<WithDocumentReferences<ReturnType>>, HasGrouped, HasDereference {
|
|
36
|
+
private readonly collectionName;
|
|
37
|
+
private readonly integrationId;
|
|
38
|
+
private readonly querySubscriptionManager;
|
|
39
|
+
private readonly documentReferenceFactory;
|
|
40
|
+
private readonly queryBuilderFactory;
|
|
41
|
+
private readonly latestAlias;
|
|
42
|
+
private readonly joins;
|
|
43
|
+
private readonly joinConditions;
|
|
44
|
+
private readonly queryBuilder;
|
|
45
|
+
/**
|
|
46
|
+
* Adds a condition to the query.
|
|
47
|
+
*
|
|
48
|
+
* @param fieldName The name of the field to query
|
|
49
|
+
* @param operator The operator to use
|
|
50
|
+
* @param value The value to compare against
|
|
51
|
+
* @returns The query builder
|
|
52
|
+
*/
|
|
53
|
+
where(fieldName: (keyof ReturnType[LatestAlias] & FieldName) | string, operator: Operator | 'in' | 'not in', value: PrimitiveFieldType | Array<PrimitiveFieldType>): this;
|
|
54
|
+
/**
|
|
55
|
+
* Sets a limit to the number of results returned by the query. The maximum limit is 20,000 and the default is 1,000
|
|
56
|
+
* if none is provided.
|
|
57
|
+
*
|
|
58
|
+
* @param limit The maximum number of results to return
|
|
59
|
+
* @returns The query builder
|
|
60
|
+
*/
|
|
61
|
+
limit(limit: number): this;
|
|
62
|
+
getLimit(): number;
|
|
63
|
+
/**
|
|
64
|
+
* Adds a sort order to the query. You can add multiple sort orders to the query. The order in which you add them
|
|
65
|
+
* determines the order in which they are applied.
|
|
66
|
+
* @param fieldName The name of the field to sort by
|
|
67
|
+
* @param asc Whether to sort in ascending order. Defaults to true.
|
|
68
|
+
* @returns The query builder
|
|
69
|
+
*/
|
|
70
|
+
sortBy(fieldName: keyof ReturnType[RootAlias] & FieldName, asc?: boolean): this;
|
|
71
|
+
/**
|
|
72
|
+
* Joins this query with another join query and return a new query builder that can be used to query the joined
|
|
73
|
+
* documents.
|
|
74
|
+
* @param queryBuilder The query builder to join with
|
|
75
|
+
* @param alias TODO
|
|
76
|
+
* @param joinFields TODO
|
|
77
|
+
* @param options TODO
|
|
78
|
+
* @returns A new query builder that can be used to query the joined documents
|
|
79
|
+
*/
|
|
80
|
+
join<NewAlias extends string, NewReturnType extends DocumentData, LeftAlias extends Extract<keyof ReturnType, Alias>, IsInner extends boolean = false>(queryBuilder: QueryBuilder<NewReturnType>, alias: Exclude<NewAlias, keyof ReturnType>, joinFields: {
|
|
81
|
+
left: keyof Required<ReturnType>[LeftAlias] & FieldName;
|
|
82
|
+
right: keyof NewReturnType & FieldName;
|
|
83
|
+
}, options: {
|
|
84
|
+
leftAlias: LeftAlias;
|
|
85
|
+
isInner?: IsInner;
|
|
86
|
+
}): JoinQueryBuilder<Omit<Aliases, LeftAlias> & Record<LeftAlias, [...Aliases[LeftAlias], NewAlias]> & Record<NewAlias, []>, ReturnType & (IsInner extends true ? Record<NewAlias, NewReturnType> : Partial<Record<NewAlias, NewReturnType>>), NewAlias, RootAlias>;
|
|
87
|
+
join<NewAlias extends string, NewReturnType extends DocumentData, IsInner extends boolean = false>(queryBuilder: QueryBuilder<NewReturnType>, alias: Exclude<NewAlias, keyof ReturnType>, joinFields: {
|
|
88
|
+
left: keyof Required<ReturnType>[LatestAlias] & FieldName;
|
|
89
|
+
right: keyof NewReturnType & FieldName;
|
|
90
|
+
}, options?: {
|
|
91
|
+
isInner?: IsInner;
|
|
92
|
+
}): JoinQueryBuilder<Omit<Aliases, LatestAlias> & Record<LatestAlias, [...Aliases[LatestAlias], NewAlias]> & Record<NewAlias, []>, ReturnType & (IsInner extends true ? Record<NewAlias, NewReturnType> : Partial<Record<NewAlias, NewReturnType>>), NewAlias, RootAlias>;
|
|
93
|
+
/** @inheritDoc */
|
|
94
|
+
snapshot(): Promise<Array<WithDocumentReferences<ReturnType>>>;
|
|
95
|
+
/** @inheritDoc */
|
|
96
|
+
snapshots(subscribe?: boolean): Observable<Array<WithDocumentReferences<ReturnType>>>;
|
|
97
|
+
/**
|
|
98
|
+
* @inheritDoc
|
|
99
|
+
*/
|
|
100
|
+
peek(): Array<WithDocumentReferences<ReturnType>>;
|
|
101
|
+
/** @inheritDoc */
|
|
102
|
+
grouped(): GroupedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
103
|
+
/** @inheritDoc */
|
|
104
|
+
dereference(): DereferencedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
105
|
+
getSortOrders(): Array<FieldSort<any>>;
|
|
106
|
+
clone(): JoinQueryBuilder<Aliases, ReturnType, LatestAlias, RootAlias>;
|
|
107
|
+
addCompositeCondition(conditions: Array<SimpleCondition>): JoinQueryBuilder<Aliases, ReturnType, LatestAlias, RootAlias>;
|
|
108
|
+
flipSortOrder(): JoinQueryBuilder<Aliases, ReturnType, LatestAlias, RootAlias>;
|
|
109
|
+
extractData(data: WithDocumentReferences<ReturnType>): any;
|
|
110
|
+
serialize(): SerializedJoinQuery;
|
|
111
|
+
paginate(options?: Partial<PaginationOptions>): Pagination<WithDocumentReferences<ReturnType>>;
|
|
112
|
+
}
|
|
113
|
+
declare class DereferencedJoin<Aliases extends Record<Alias, Alias[]>, ReturnType extends Record<Alias, DocumentData>, RootAlias extends Alias, LatestAlias extends Alias> implements SnapshotEmitter<ReturnType>, HasGrouped {
|
|
114
|
+
private readonly joinQueryBuilder;
|
|
115
|
+
constructor(joinQueryBuilder: JoinQueryBuilder<Aliases, ReturnType, LatestAlias, RootAlias>);
|
|
116
|
+
/** @inheritDoc */
|
|
117
|
+
grouped(): SnapshotEmitter<Grouped<Aliases, ReturnType, RootAlias>>;
|
|
118
|
+
/** @inheritDoc */
|
|
119
|
+
snapshot(): Promise<Array<ReturnType>>;
|
|
120
|
+
/** @inheritDoc */
|
|
121
|
+
snapshots(subscribe?: boolean): Observable<Array<ReturnType>>;
|
|
122
|
+
/**
|
|
123
|
+
* @inheritDoc
|
|
124
|
+
*/
|
|
125
|
+
peek(): Array<ReturnType>;
|
|
126
|
+
getSortOrders(): Array<FieldSort<any>>;
|
|
127
|
+
clone(): DereferencedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
128
|
+
addCompositeCondition(conditions: Array<SimpleCondition>): DereferencedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
129
|
+
flipSortOrder(): DereferencedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
130
|
+
limit(limit: number): DereferencedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
131
|
+
extractData(data: ReturnType): any;
|
|
132
|
+
paginate(options?: Partial<PaginationOptions>): Pagination<ReturnType>;
|
|
133
|
+
serialize(): SerializedJoinQuery;
|
|
134
|
+
getLimit(): number;
|
|
135
|
+
}
|
|
136
|
+
declare class GroupedJoin<Aliases extends Record<Alias, Alias[]>, ReturnType extends Record<Alias, DocumentData>, RootAlias extends Alias, LatestAlias extends Alias> implements SnapshotEmitter<Grouped<Aliases, WithDocumentReferences<ReturnType>, RootAlias>>, HasDereference {
|
|
137
|
+
readonly joinQueryBuilder: JoinQueryBuilder<Aliases, ReturnType, LatestAlias, RootAlias>;
|
|
138
|
+
/** internal */
|
|
139
|
+
constructor(joinQueryBuilder: JoinQueryBuilder<Aliases, ReturnType, LatestAlias, RootAlias>);
|
|
140
|
+
/** @inheritDoc */
|
|
141
|
+
snapshot(): Promise<Array<Grouped<Aliases, WithDocumentReferences<ReturnType>, RootAlias>>>;
|
|
142
|
+
/** @inheritDoc */
|
|
143
|
+
snapshots(subscribe?: boolean): Observable<Array<Grouped<Aliases, WithDocumentReferences<ReturnType>, RootAlias>>>;
|
|
144
|
+
/**
|
|
145
|
+
* @inheritDoc
|
|
146
|
+
*/
|
|
147
|
+
peek(): Array<Grouped<Aliases, WithDocumentReferences<ReturnType>, RootAlias>>;
|
|
148
|
+
/** @inheritDoc */
|
|
149
|
+
dereference(): SnapshotEmitter<Grouped<Aliases, ReturnType, RootAlias>>;
|
|
150
|
+
private groupData;
|
|
151
|
+
getSortOrders(): Array<FieldSort<any>>;
|
|
152
|
+
clone(): GroupedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
153
|
+
addCompositeCondition(conditions: Array<SimpleCondition>): GroupedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
154
|
+
flipSortOrder(): GroupedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
155
|
+
limit(limit: number): GroupedJoin<Aliases, ReturnType, RootAlias, LatestAlias>;
|
|
156
|
+
getLimit(): number;
|
|
157
|
+
extractData(data: Grouped<Aliases, WithDocumentReferences<ReturnType>, RootAlias>): any;
|
|
158
|
+
serialize(): SerializedJoinQuery;
|
|
159
|
+
paginate(options?: Partial<PaginationOptions>): Pagination<Grouped<Aliases, WithDocumentReferences<ReturnType>, RootAlias>>;
|
|
160
|
+
}
|
|
161
|
+
export {};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { DocumentReferenceFactory } from '../document-reference.factory';
|
|
2
|
-
import { DocumentStore } from '../document-store';
|
|
3
|
-
import { QuerySubscriptionManager } from './query-subscription.manager';
|
|
4
|
-
export declare class LocalQueryManager {
|
|
5
|
-
private readonly documentStore;
|
|
6
|
-
private readonly documentReferenceFactory;
|
|
7
|
-
private readonly querySubscriptionManager;
|
|
8
|
-
constructor(documentStore: DocumentStore, documentReferenceFactory: DocumentReferenceFactory, querySubscriptionManager: QuerySubscriptionManager);
|
|
9
|
-
}
|
|
1
|
+
import { DocumentReferenceFactory } from '../document-reference.factory';
|
|
2
|
+
import { DocumentStore } from '../document-store';
|
|
3
|
+
import { QuerySubscriptionManager } from './query-subscription.manager';
|
|
4
|
+
export declare class LocalQueryManager {
|
|
5
|
+
private readonly documentStore;
|
|
6
|
+
private readonly documentReferenceFactory;
|
|
7
|
+
private readonly querySubscriptionManager;
|
|
8
|
+
constructor(documentStore: DocumentStore, documentReferenceFactory: DocumentReferenceFactory, querySubscriptionManager: QuerySubscriptionManager);
|
|
9
|
+
}
|
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
import { BaseQueryBuilder, DocumentData, FieldName, FieldSort, HasDereference, Operator, Pagination, PaginationOptions, PrimitiveFieldType, SerializedSimpleQuery, SimpleCondition, SnapshotEmitter } from '@squidcloud/common';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { DocumentReference } from '../document-reference';
|
|
4
|
-
/** A query builder that can be used to build a query that returns a list of documents. */
|
|
5
|
-
export declare class QueryBuilder<DocumentType extends DocumentData> extends BaseQueryBuilder<DocumentType> implements SnapshotEmitter<DocumentReference<DocumentType>>, HasDereference {
|
|
6
|
-
private readonly collectionName;
|
|
7
|
-
private readonly integrationId;
|
|
8
|
-
private readonly querySubscriptionManager;
|
|
9
|
-
private readonly localQueryManager;
|
|
10
|
-
private readonly documentReferenceFactory;
|
|
11
|
-
private readonly queryBuilderFactory;
|
|
12
|
-
private readonly documentIdentityService;
|
|
13
|
-
private forceFetchFromServer;
|
|
14
|
-
/** @inheritDoc */
|
|
15
|
-
where(fieldName: (keyof DocumentType & FieldName) | string, operator: Operator | 'in' | 'not in', value: PrimitiveFieldType | Array<PrimitiveFieldType>): this;
|
|
16
|
-
/** @inheritDoc */
|
|
17
|
-
limit(limit: number): this;
|
|
18
|
-
getLimit(): number;
|
|
19
|
-
limitBy(limit: number, ...fields: FieldName[]): this;
|
|
20
|
-
/** @inheritDoc */
|
|
21
|
-
sortBy(fieldName: keyof DocumentType & FieldName, asc?: boolean): this;
|
|
22
|
-
private mergeConditions;
|
|
23
|
-
getSortOrder(): FieldSort<DocumentType>[];
|
|
24
|
-
/**
|
|
25
|
-
* @inheritDoc
|
|
26
|
-
*/
|
|
27
|
-
snapshot(): Promise<Array<DocumentReference<DocumentType>>>;
|
|
28
|
-
/**
|
|
29
|
-
* Forces the query to return data from the server even if there is a query that already returned the requested
|
|
30
|
-
* result.
|
|
31
|
-
*/
|
|
32
|
-
setForceFetchFromServer(): this;
|
|
33
|
-
/**
|
|
34
|
-
* @inheritDoc
|
|
35
|
-
*/
|
|
36
|
-
peek(): Array<DocumentReference<DocumentType>>;
|
|
37
|
-
/**
|
|
38
|
-
* @inheritDoc
|
|
39
|
-
*/
|
|
40
|
-
snapshots(subscribe?: boolean): Observable<Array<DocumentReference<DocumentType>>>;
|
|
41
|
-
/**
|
|
42
|
-
* @inheritDoc
|
|
43
|
-
*/
|
|
44
|
-
changes(): Observable<Changes<DocumentType>>;
|
|
45
|
-
/**
|
|
46
|
-
* A unique hash for the query. Identical queries should return the same hash
|
|
47
|
-
* value.
|
|
48
|
-
*
|
|
49
|
-
* @returns The query's hash string.
|
|
50
|
-
*/
|
|
51
|
-
get hash(): string;
|
|
52
|
-
/** @inheritDoc */
|
|
53
|
-
dereference(): SnapshotEmitter<DocumentType>;
|
|
54
|
-
getSortOrders(): Array<FieldSort<any>>;
|
|
55
|
-
clone(): QueryBuilder<DocumentType>;
|
|
56
|
-
addCompositeCondition(conditions: Array<SimpleCondition>): QueryBuilder<DocumentType>;
|
|
57
|
-
flipSortOrder(): QueryBuilder<DocumentType>;
|
|
58
|
-
serialize(): SerializedSimpleQuery;
|
|
59
|
-
extractData(data: DocumentReference<DocumentType>): DocumentType;
|
|
60
|
-
paginate(options?: Partial<PaginationOptions>): Pagination<DocumentReference<DocumentType>>;
|
|
61
|
-
}
|
|
62
|
-
/** Describes the changes to a query result. */
|
|
63
|
-
export declare class Changes<DocumentType extends DocumentData> {
|
|
64
|
-
/** The newly inserted documents to the query result */
|
|
65
|
-
readonly inserts: Array<DocumentReference<DocumentType>>;
|
|
66
|
-
/** The documents that were updated in the query result */
|
|
67
|
-
readonly updates: Array<DocumentReference<DocumentType>>;
|
|
68
|
-
/** The actual document data that was deleted from the query result */
|
|
69
|
-
readonly deletes: Array<DocumentType>;
|
|
70
|
-
constructor(
|
|
71
|
-
/** The newly inserted documents to the query result */
|
|
72
|
-
inserts: Array<DocumentReference<DocumentType>>,
|
|
73
|
-
/** The documents that were updated in the query result */
|
|
74
|
-
updates: Array<DocumentReference<DocumentType>>,
|
|
75
|
-
/** The actual document data that was deleted from the query result */
|
|
76
|
-
deletes: Array<DocumentType>);
|
|
77
|
-
}
|
|
1
|
+
import { BaseQueryBuilder, DocumentData, FieldName, FieldSort, HasDereference, Operator, Pagination, PaginationOptions, PrimitiveFieldType, SerializedSimpleQuery, SimpleCondition, SnapshotEmitter } from '@squidcloud/common';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { DocumentReference } from '../document-reference';
|
|
4
|
+
/** A query builder that can be used to build a query that returns a list of documents. */
|
|
5
|
+
export declare class QueryBuilder<DocumentType extends DocumentData> extends BaseQueryBuilder<DocumentType> implements SnapshotEmitter<DocumentReference<DocumentType>>, HasDereference {
|
|
6
|
+
private readonly collectionName;
|
|
7
|
+
private readonly integrationId;
|
|
8
|
+
private readonly querySubscriptionManager;
|
|
9
|
+
private readonly localQueryManager;
|
|
10
|
+
private readonly documentReferenceFactory;
|
|
11
|
+
private readonly queryBuilderFactory;
|
|
12
|
+
private readonly documentIdentityService;
|
|
13
|
+
private forceFetchFromServer;
|
|
14
|
+
/** @inheritDoc */
|
|
15
|
+
where(fieldName: (keyof DocumentType & FieldName) | string, operator: Operator | 'in' | 'not in', value: PrimitiveFieldType | Array<PrimitiveFieldType>): this;
|
|
16
|
+
/** @inheritDoc */
|
|
17
|
+
limit(limit: number): this;
|
|
18
|
+
getLimit(): number;
|
|
19
|
+
limitBy(limit: number, ...fields: FieldName[]): this;
|
|
20
|
+
/** @inheritDoc */
|
|
21
|
+
sortBy(fieldName: keyof DocumentType & FieldName, asc?: boolean): this;
|
|
22
|
+
private mergeConditions;
|
|
23
|
+
getSortOrder(): FieldSort<DocumentType>[];
|
|
24
|
+
/**
|
|
25
|
+
* @inheritDoc
|
|
26
|
+
*/
|
|
27
|
+
snapshot(): Promise<Array<DocumentReference<DocumentType>>>;
|
|
28
|
+
/**
|
|
29
|
+
* Forces the query to return data from the server even if there is a query that already returned the requested
|
|
30
|
+
* result.
|
|
31
|
+
*/
|
|
32
|
+
setForceFetchFromServer(): this;
|
|
33
|
+
/**
|
|
34
|
+
* @inheritDoc
|
|
35
|
+
*/
|
|
36
|
+
peek(): Array<DocumentReference<DocumentType>>;
|
|
37
|
+
/**
|
|
38
|
+
* @inheritDoc
|
|
39
|
+
*/
|
|
40
|
+
snapshots(subscribe?: boolean): Observable<Array<DocumentReference<DocumentType>>>;
|
|
41
|
+
/**
|
|
42
|
+
* @inheritDoc
|
|
43
|
+
*/
|
|
44
|
+
changes(): Observable<Changes<DocumentType>>;
|
|
45
|
+
/**
|
|
46
|
+
* A unique hash for the query. Identical queries should return the same hash
|
|
47
|
+
* value.
|
|
48
|
+
*
|
|
49
|
+
* @returns The query's hash string.
|
|
50
|
+
*/
|
|
51
|
+
get hash(): string;
|
|
52
|
+
/** @inheritDoc */
|
|
53
|
+
dereference(): SnapshotEmitter<DocumentType>;
|
|
54
|
+
getSortOrders(): Array<FieldSort<any>>;
|
|
55
|
+
clone(): QueryBuilder<DocumentType>;
|
|
56
|
+
addCompositeCondition(conditions: Array<SimpleCondition>): QueryBuilder<DocumentType>;
|
|
57
|
+
flipSortOrder(): QueryBuilder<DocumentType>;
|
|
58
|
+
serialize(): SerializedSimpleQuery;
|
|
59
|
+
extractData(data: DocumentReference<DocumentType>): DocumentType;
|
|
60
|
+
paginate(options?: Partial<PaginationOptions>): Pagination<DocumentReference<DocumentType>>;
|
|
61
|
+
}
|
|
62
|
+
/** Describes the changes to a query result. */
|
|
63
|
+
export declare class Changes<DocumentType extends DocumentData> {
|
|
64
|
+
/** The newly inserted documents to the query result */
|
|
65
|
+
readonly inserts: Array<DocumentReference<DocumentType>>;
|
|
66
|
+
/** The documents that were updated in the query result */
|
|
67
|
+
readonly updates: Array<DocumentReference<DocumentType>>;
|
|
68
|
+
/** The actual document data that was deleted from the query result */
|
|
69
|
+
readonly deletes: Array<DocumentType>;
|
|
70
|
+
constructor(
|
|
71
|
+
/** The newly inserted documents to the query result */
|
|
72
|
+
inserts: Array<DocumentReference<DocumentType>>,
|
|
73
|
+
/** The documents that were updated in the query result */
|
|
74
|
+
updates: Array<DocumentReference<DocumentType>>,
|
|
75
|
+
/** The actual document data that was deleted from the query result */
|
|
76
|
+
deletes: Array<DocumentType>);
|
|
77
|
+
}
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import { RpcManager } from '../rpc.manager';
|
|
2
|
-
import { QueryRequest, QueryResultData } from '@squidcloud/common';
|
|
3
|
-
import { BehaviorSubject } from 'rxjs';
|
|
4
|
-
import { DestructManager } from '../destruct.manager';
|
|
5
|
-
export declare class QuerySender {
|
|
6
|
-
private readonly rpcManager;
|
|
7
|
-
private readonly destructManager;
|
|
8
|
-
/**
|
|
9
|
-
* A collection of query requests awaiting batch dispatch.
|
|
10
|
-
*/
|
|
11
|
-
private readonly pendingQueryRequests;
|
|
12
|
-
/**
|
|
13
|
-
* A timeout identifier used to ensure that only the last query in rapid succession triggers the batch send process.
|
|
14
|
-
*/
|
|
15
|
-
private pendingQueryBatchTimeout?;
|
|
16
|
-
/**
|
|
17
|
-
* As long as there are mutations in flight we do not want to send queries because it causes race conditions,
|
|
18
|
-
* preventing parallel queries and mutations simplifies the mental model.
|
|
19
|
-
*/
|
|
20
|
-
readonly safeToSendQueriesToServer: BehaviorSubject<boolean>;
|
|
21
|
-
/**
|
|
22
|
-
* The number of queries that are currently in-flight (about to be sent to the server or sent but did not get a
|
|
23
|
-
* response yet). This is used by the data manager to prevent it from sending mutations while there are in-flight
|
|
24
|
-
* queries.
|
|
25
|
-
*/
|
|
26
|
-
private readonly inflightQueriesCount;
|
|
27
|
-
constructor(rpcManager: RpcManager, destructManager: DestructManager);
|
|
28
|
-
sendQuery(queryRequest: QueryRequest): Promise<QueryResultData>;
|
|
29
|
-
private processQueryBatch;
|
|
30
|
-
/** Will resolve once all the in-flight queries are done. */
|
|
31
|
-
waitForAllQueriesToFinish(): Promise<void>;
|
|
32
|
-
private preDestruct;
|
|
33
|
-
}
|
|
1
|
+
import { RpcManager } from '../rpc.manager';
|
|
2
|
+
import { QueryRequest, QueryResultData } from '@squidcloud/common';
|
|
3
|
+
import { BehaviorSubject } from 'rxjs';
|
|
4
|
+
import { DestructManager } from '../destruct.manager';
|
|
5
|
+
export declare class QuerySender {
|
|
6
|
+
private readonly rpcManager;
|
|
7
|
+
private readonly destructManager;
|
|
8
|
+
/**
|
|
9
|
+
* A collection of query requests awaiting batch dispatch.
|
|
10
|
+
*/
|
|
11
|
+
private readonly pendingQueryRequests;
|
|
12
|
+
/**
|
|
13
|
+
* A timeout identifier used to ensure that only the last query in rapid succession triggers the batch send process.
|
|
14
|
+
*/
|
|
15
|
+
private pendingQueryBatchTimeout?;
|
|
16
|
+
/**
|
|
17
|
+
* As long as there are mutations in flight we do not want to send queries because it causes race conditions,
|
|
18
|
+
* preventing parallel queries and mutations simplifies the mental model.
|
|
19
|
+
*/
|
|
20
|
+
readonly safeToSendQueriesToServer: BehaviorSubject<boolean>;
|
|
21
|
+
/**
|
|
22
|
+
* The number of queries that are currently in-flight (about to be sent to the server or sent but did not get a
|
|
23
|
+
* response yet). This is used by the data manager to prevent it from sending mutations while there are in-flight
|
|
24
|
+
* queries.
|
|
25
|
+
*/
|
|
26
|
+
private readonly inflightQueriesCount;
|
|
27
|
+
constructor(rpcManager: RpcManager, destructManager: DestructManager);
|
|
28
|
+
sendQuery(queryRequest: QueryRequest): Promise<QueryResultData>;
|
|
29
|
+
private processQueryBatch;
|
|
30
|
+
/** Will resolve once all the in-flight queries are done. */
|
|
31
|
+
waitForAllQueriesToFinish(): Promise<void>;
|
|
32
|
+
private preDestruct;
|
|
33
|
+
}
|