@squidcloud/client 1.0.364 → 1.0.365

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 (42) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/esm/index.js +1 -1
  3. package/dist/internal-common/src/public-types/ai-agent.public-types.d.ts +14 -0
  4. package/dist/typescript-client/src/ai-client.d.ts +15 -1
  5. package/dist/typescript-client/src/collection-reference.d.ts +1 -1
  6. package/dist/typescript-client/src/document-reference.d.ts +1 -1
  7. package/dist/typescript-client/src/extraction-client.d.ts +2 -0
  8. package/dist/typescript-client/src/query/join-query-builder.factory.d.ts +1 -1
  9. package/dist/typescript-client/src/squid.d.ts +6 -7
  10. package/dist/typescript-client/src/version.d.ts +1 -1
  11. package/package.json +1 -1
  12. package/dist/internal-common/src/metric-name.d.ts +0 -9
  13. package/dist/internal-common/src/public-types-backend/api-call.public-context.d.ts +0 -30
  14. package/dist/internal-common/src/public-types-backend/mutation.public-context.d.ts +0 -148
  15. package/dist/internal-common/src/public-types-backend/native-query.public-context.d.ts +0 -60
  16. package/dist/internal-common/src/public-types-backend/query.public-context.d.ts +0 -166
  17. package/dist/internal-common/src/types/ai-agent.types.d.ts +0 -135
  18. package/dist/internal-common/src/types/ai-assistant.types.d.ts +0 -1
  19. package/dist/internal-common/src/types/ai-matchmaking.types.d.ts +0 -59
  20. package/dist/internal-common/src/types/backend-function.types.d.ts +0 -1
  21. package/dist/internal-common/src/types/communication.types.d.ts +0 -1
  22. package/dist/internal-common/src/types/document.types.d.ts +0 -1
  23. package/dist/internal-common/src/types/file.types.d.ts +0 -6
  24. package/dist/internal-common/src/types/mutation.types.d.ts +0 -1
  25. package/dist/internal-common/src/types/observability.types.d.ts +0 -71
  26. package/dist/internal-common/src/types/query.types.d.ts +0 -13
  27. package/dist/internal-common/src/types/secret.types.d.ts +0 -2
  28. package/dist/internal-common/src/types/socket.types.d.ts +0 -1
  29. package/dist/internal-common/src/types/time-units.d.ts +0 -1
  30. package/dist/internal-common/src/types/url-shortener.types.d.ts +0 -41
  31. package/dist/internal-common/src/utils/array.d.ts +0 -1
  32. package/dist/internal-common/src/utils/e2e-test-utils.d.ts +0 -2
  33. package/dist/internal-common/src/utils/global.utils.d.ts +0 -1
  34. package/dist/internal-common/src/utils/http.d.ts +0 -2
  35. package/dist/internal-common/src/utils/lock.manager.d.ts +0 -14
  36. package/dist/internal-common/src/utils/metric-utils.d.ts +0 -4
  37. package/dist/internal-common/src/utils/metrics.types.d.ts +0 -7
  38. package/dist/internal-common/src/utils/object.d.ts +0 -49
  39. package/dist/internal-common/src/utils/serialization.d.ts +0 -10
  40. package/dist/internal-common/src/utils/squid.constants.d.ts +0 -1
  41. package/dist/internal-common/src/utils/validation.d.ts +0 -19
  42. package/dist/internal-common/src/websocket.impl.d.ts +0 -26
@@ -1,6 +1,15 @@
1
1
  import { AiAgentId, AiContextId, IntegrationId } from './communication.public-types';
2
2
  import { IntegrationType } from './integration.public-types';
3
3
  import { AiFunctionId, AiFunctionIdWithContext } from './backend.public-types';
4
+ import { SecretKey } from './secret.public-types';
5
+ /** List of available AI provider types. See AiProviderType. */
6
+ export declare const AI_PROVIDER_TYPES: readonly ["anthropic", "flux", "gemini", "openai", "squid", "stability", "voyage"];
7
+ /**
8
+ * Type of the AI provider.
9
+ * References a single AI service, regardless of the model or other AI function it provides (like
10
+ * chat/search/transcribe etc...).
11
+ */
12
+ export type AiProviderType = (typeof AI_PROVIDER_TYPES)[number];
4
13
  /**
5
14
  * The supported OpenAI models.
6
15
  * @category AI
@@ -787,4 +796,9 @@ export interface AiTranscribeAndAskResponse {
787
796
  /** The transcribed text from the audio input. */
788
797
  transcribedPrompt: string;
789
798
  }
799
+ /** Per application AI settings. */
800
+ export interface ApplicationAiSettings {
801
+ /** Maps AI provider name to API key secret name that must be used for any request made by the application. */
802
+ apiKeys: Partial<Record<AiProviderType, SecretKey>>;
803
+ }
790
804
  export {};
@@ -1,5 +1,5 @@
1
1
  import { AiAssistantClient } from './ai-assistant-client';
2
- import { AiAgent, AiAgentId, IntegrationId } from './public-types';
2
+ import { AiAgent, AiAgentId, AiProviderType, ApplicationAiSettings, IntegrationId, SecretKey } from './public-types';
3
3
  import { AiImageClient } from './ai-image-client';
4
4
  import { AiAudioClient } from './ai-audio-client';
5
5
  import { AiMatchMakingClient } from './ai-matchmaking-client';
@@ -83,4 +83,18 @@ export declare class AiClient {
83
83
  * Allows specifying allowed endpoints and whether to provide an explanation.
84
84
  */
85
85
  executeAiApiCall(integrationId: IntegrationId, prompt: string, allowedEndpoints?: string[], provideExplanation?: boolean): Promise<ExecuteAiApiResponse>;
86
+ /**
87
+ * Returns name of the secret that stores API key for the given AI provider type.
88
+ * This API key is used for all requests to the AI provider done from the application.
89
+ */
90
+ getApplicationAiSettings(): Promise<ApplicationAiSettings>;
91
+ /** Sets new application AI settings. Overwrites the existing value. */
92
+ setApplicationAiSettings(settings: ApplicationAiSettings): Promise<void>;
93
+ /**
94
+ * Sets the name of the secret that stores API key for the given AI provider type.
95
+ * This API key is used for all requests to the AI provider done from the application.
96
+ * To delete the existing secret key use 'undefined' for the name of the secret.
97
+ * Returns the updated state of the AI application settings.
98
+ */
99
+ setAiProviderApiKeySecret(providerType: AiProviderType, secretKey: SecretKey | undefined): Promise<ApplicationAiSettings>;
86
100
  }
@@ -23,7 +23,7 @@ export interface DocIdAndData<T extends DocumentData> {
23
23
  * collection in a NoSQL database.
24
24
  *
25
25
  * Read more about collection references in the
26
- * {@link https://docs.getsquid.ai/docs/client-sdk/database/collection-reference documentation}.
26
+ * {@link https://docs.getsquid.ai/docs/sdk/client-sdk/database/collection-reference documentation}.
27
27
  * @typeParam T The type of the document data.
28
28
  * @category Database
29
29
  */
@@ -9,7 +9,7 @@ import { DeepRecord, Paths } from '../../internal-common/src/public-types/typesc
9
9
  * use to create a new document.
10
10
  *
11
11
  * Read more about document references in the
12
- * {@link https://docs.getsquid.ai/docs/client-sdk/database/document-reference documentation}.
12
+ * {@link https://docs.getsquid.ai/docs/sdk/client-sdk/database/document-reference documentation}.
13
13
  * @typeParam T The type of the document data.
14
14
  * @category Database
15
15
  */
@@ -25,6 +25,8 @@ export declare class ExtractionClient {
25
25
  /**
26
26
  * Creates a PDF document from the provided request parameters.
27
27
  * @param request - The request containing details for PDF creation, such as content or url.
28
+ * @return A promise that resolves with the response containing the URL of the created PDF. The url will expire after
29
+ * 1 hour.
28
30
  */
29
31
  createPdf(request: CreatePdfRequest): Promise<CreatePdfResponse>;
30
32
  }
@@ -71,7 +71,7 @@ export interface HasGrouped {
71
71
  /**
72
72
  * A query builder that can participate in a join.
73
73
  * To learn more about join queries, see the
74
- * {@link https://docs.getsquid.ai/docs/client-sdk/database/queries#joining-data-across-collections-and-integrations
74
+ * {@link https://docs.getsquid.ai/docs/sdk/client-sdk/database/queries#joining-data-across-collections-and-connectors
75
75
  * documentation}.
76
76
  * @category Database
77
77
  */
@@ -89,7 +89,6 @@ export interface SquidAuthProvider {
89
89
  export declare class Squid {
90
90
  readonly options: SquidOptions;
91
91
  private readonly socketManager;
92
- private readonly rpcManager;
93
92
  private readonly dataManager;
94
93
  private readonly documentReferenceFactory;
95
94
  private readonly documentStore;
@@ -153,7 +152,7 @@ export declare class Squid {
153
152
  * If the integrationId is not provided, the `built_in_db` integration id will be used.
154
153
  *
155
154
  * For more information on the CollectionReference object, please refer to the
156
- * {@link https://docs.getsquid.ai/docs/client-sdk/database/collection-reference documentation}.
155
+ * {@link https://docs.getsquid.ai/docs/sdk/client-sdk/database/collection-reference documentation}.
157
156
  *
158
157
  * @param collectionName The name of the collection.
159
158
  * @param integrationId The id of the integration, default to `built_in_db`.
@@ -166,7 +165,7 @@ export declare class Squid {
166
165
  * will be atomic. Note that mutations for different integrations will not be atomic.
167
166
  *
168
167
  * For more information about transactions in Squid, please refer to the
169
- * {@link https://docs.getsquid.ai/docs/client-sdk/database/transactions documentation}.
168
+ * {@link https://docs.getsquid.ai/docs/sdk/client-sdk/database/transactions documentation}.
170
169
  *
171
170
  * @param fn The callback to run as an atomic change. The function receives a transactionId that should be used for
172
171
  * all the mutations that should be atomic. The function should return a promise.
@@ -179,7 +178,7 @@ export declare class Squid {
179
178
  * the result.
180
179
  *
181
180
  * For detailed information on backend functions in Squid, see the
182
- * {@link https://docs.getsquid.ai/docs/backend/executables/ documentation}.
181
+ * {@link https://docs.getsquid.ai/docs/sdk/backend-sdk/executables documentation}.
183
182
  *
184
183
  * Files support:
185
184
  * - To send a file to the backend, simply include it as one of the parameters; it will be received as a `SquidFile`
@@ -195,7 +194,7 @@ export declare class Squid {
195
194
  executeFunction<T = any>(functionNameOrOptions: string | ExecuteFunctionOptions<T>, ...params: Array<any | File>): Promise<T>;
196
195
  /**
197
196
  * Executes a native relational query with the given parameters and returns a promise with the result.
198
- * See https://docs.getsquid.ai/docs/client-sdk/database/native-queries.
197
+ * See https://docs.getsquid.ai/docs/sdk/client-sdk/database/native-queries.
199
198
  *
200
199
  * @param integrationId The id of the integration that the query is associated with.
201
200
  * @param query The raw SQL or other database-specific query to execute.
@@ -205,7 +204,7 @@ export declare class Squid {
205
204
  executeNativeRelationalQuery<T = any>(integrationId: IntegrationId, query: string, params?: Record<string, any>): Promise<Array<T>>;
206
205
  /**
207
206
  * Executes a native Mongo/built-in-db query with the given pipeline and returns a promise with the result.
208
- * See https://docs.getsquid.ai/docs/client-sdk/database/native-queries#native-mongodb-queries.
207
+ * See https://docs.getsquid.ai/docs/sdk/client-sdk/database/native-queries#native-mongodb-queries.
209
208
  *
210
209
  * @param integrationId The id of the integration that the query is associated with.
211
210
  * @param collectionName The collection to query.
@@ -215,7 +214,7 @@ export declare class Squid {
215
214
  executeNativeMongoQuery<T = any>(integrationId: IntegrationId, collectionName: string, aggregationPipeline: Array<any | undefined>): Promise<Array<T>>;
216
215
  /**
217
216
  * Executes a native Elasticsearch query against the given index and endpoint.
218
- * See https://docs.getsquid.ai/docs/client-sdk/database/native-queries#native-elasticsearch-queries.
217
+ * See https://docs.getsquid.ai/docs/sdk/client-sdk/database/native-queries.
219
218
  *
220
219
  * @param integrationId The id of the integration that the query is associated with.
221
220
  * @param index The Elasticsearch index to query.
@@ -2,4 +2,4 @@
2
2
  * The current version of the SquidCloud client package.
3
3
  * @category Platform
4
4
  */
5
- export declare const SQUIDCLOUD_CLIENT_PACKAGE_VERSION = "1.0.364";
5
+ export declare const SQUIDCLOUD_CLIENT_PACKAGE_VERSION = "1.0.365";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@squidcloud/client",
3
- "version": "1.0.364",
3
+ "version": "1.0.365",
4
4
  "description": "A typescript implementation of the Squid client",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -1,9 +0,0 @@
1
- /**
2
- * Names of the Squid metrics.
3
- * Should be in sync with MetricName.kt.
4
- * See MetricName.kt for documentation on each value.
5
- */
6
- export declare const ALL_SQUID_METRIC_NAMES: readonly ["squid_functionExecution_count", "squid_functionExecution_time", "squid_aiChatbotContext_size", "squid_aiChatbotChatInputTokens_count", "squid_aiChatbotChatOutputTokens_count", "squid_aiChatbotChatOutcome_count", "squid_aiImageGeneration_count", "squid_aiImageGeneration_time", "squid_aiRemoveBackground_count", "squid_aiRemoveBackground_time", "squid_aiAudioTranscribe_count", "squid_aiAudioTranscribe_time", "squid_aiAudioCreateSpeech_count", "squid_aiAudioCreateSpeech_time", "squid_aiIntegrationData_count", "squid_aiIntegrationData_time", "squid_aiIntegrationApi_count", "squid_aiIntegrationApi_time", "squid_apiControllerCall_count", "squid_apiControllerCall_time", "squid_aiContextUpsert_count", "squid_aiContextDelete_count", "squid_built_in_db_size", "squid_codeInitialization_count", "squid_codeInitialization_time", "squid_deleteApiKey_count", "squid_deleteApiKey_time", "squid_deleteSecret_count", "squid_deleteSecret_time", "squid_discoverGraphQLConnectionSchema_count", "squid_discoverGraphQLConnectionSchema_time", "squid_discoverOpenApiSchema_count", "squid_discoverOpenApiSchema_time", "squid_discoverOpenApiSchemaFromFile_count", "squid_discoverOpenApiSchemaFromFile_time", "squid_executeBackendFunction_count", "squid_executeBackendFunction_time", "squid_getAiChatbotProfiles_count", "squid_getAiChatbotProfiles_time", "squid_getAllApiKeys_count", "squid_getAllApiKeys_time", "squid_getAllSecrets_count", "squid_getAllSecrets_time", "squid_getAppApiKey_count", "squid_getAppApiKey_time", "squid_getSecret_count", "squid_getSecret_time", "squid_graphql_count", "squid_graphql_time", "squid_graphqlQuery_count", "squid_graphqlQuery_time", "squid_integrationCount_value", "squid_acquireLock_count", "squid_releaseLock_count", "squid_mutate_count", "squid_mutate_time", "squid_metricQuery_count", "squid_metricQuery_time", "squid_metricReport_count", "squid_metricReport_time", "squid_nativeQuery_count", "squid_nativeQuery_time", "squid_openapi_count", "squid_openapi_time", "squid_produceTopicMessage_count", "squid_produceTopicMessage_time", "squid_query_count", "squid_query_time", "squid_registerQuery_count", "squid_registerQuery_time", "squid_rerankChunks_count", "squid_rerankChunks_time", "squid_schedulerJob_count", "squid_schedulerJob_time", "squid_schema_size", "squid_secrets_entries", "squid_storageDeleteFiles_count", "squid_storageDeleteFiles_time", "squid_storageGetDownloadUrl_count", "squid_storageGetDownloadUrl_time", "squid_storageGetFileMetadata_count", "squid_storageGetFileMetadata_time", "squid_storageListDirectoryContents_count", "squid_storageListDirectoryContents_time", "squid_storageUploadFile_count", "squid_storageUploadFile_time", "squid_subscribeToTopic_count", "squid_subscribeToTopic_time", "squid_testGraphQLConnection_count", "squid_testGraphQLConnection_time", "squid_trigger_count", "squid_trigger_time", "squid_upsertApiKey_count", "squid_upsertApiKey_time", "squid_upsertSecret_count", "squid_upsertSecret_time", "squid_vectorChunks_count", "squid_vectorChunks_time", "squid_webhook_count", "squid_webhook_time"];
7
- export type MetricName = (typeof ALL_SQUID_METRIC_NAMES)[number];
8
- /** Common prefix for all Squid metrics. */
9
- export declare const SQUID_METRIC_NAME_PREFIX = "squid_";
@@ -1,30 +0,0 @@
1
- import { ApiEndpointId, HttpMethod } from '../public-types/api.public-types';
2
- import { IntegrationId } from '../public-types/communication.public-types';
3
- import { ApiOptions } from '../public-types/api-client.public-types';
4
- /** The headers of an API call. */
5
- export type ApiHeaders = Record<string, string | number | boolean>;
6
- /** The context of an API call. */
7
- export declare class ApiCallContext {
8
- readonly integrationId: IntegrationId;
9
- readonly endpointId: ApiEndpointId;
10
- readonly url: string;
11
- readonly method: HttpMethod;
12
- readonly body: unknown;
13
- readonly options: ApiOptions;
14
- }
15
- /**
16
- * Represents a request to call an API through a specified integration and endpoint.
17
- * Includes optional method override and additional request options.
18
- */
19
- export interface CallApiRequest<BodyType = any> {
20
- /** The identifier of the integration through which the API is called. */
21
- integrationId: IntegrationId;
22
- /** Target API endpoint to invoke. */
23
- endpointId: ApiEndpointId;
24
- /** Optional request payload. */
25
- body?: BodyType;
26
- /** Optional HTTP method override. Default is POST. */
27
- overrideMethod?: HttpMethod;
28
- /** Additional request options. */
29
- options: ApiOptions;
30
- }
@@ -1,148 +0,0 @@
1
- import { Paths } from '../public-types/typescript.public-types';
2
- import { SquidDocIdObj, SquidDocument } from '../public-types/document.public-types';
3
- /**
4
- * The mutation type.
5
- * @category Database
6
- */
7
- export declare const MUTATION_TYPES: readonly ["insert", "update", "delete"];
8
- /**
9
- * @category Database
10
- */
11
- export type MutationType = (typeof MUTATION_TYPES)[number];
12
- interface BaseMutation {
13
- type: MutationType;
14
- squidDocIdObj: SquidDocIdObj;
15
- }
16
- /**
17
- * A mutation on a document.
18
- * @category Database
19
- */
20
- export type Mutation<T = any> = UpdateMutation<T> | InsertMutation<T> | DeleteMutation;
21
- /**
22
- * Represents a delete mutation on a document.
23
- * @category Database
24
- */
25
- export interface DeleteMutation extends BaseMutation {
26
- /** Specifies that the mutation is a deletion. */
27
- type: 'delete';
28
- }
29
- /**
30
- * Represents an update mutation on a document.
31
- * @category Database
32
- */
33
- export interface UpdateMutation<T = any> extends BaseMutation {
34
- /** Specifies that the mutation is an update. */
35
- type: 'update';
36
- /** The updated properties */
37
- properties: {
38
- [key in keyof T & string]?: Array<PropertyMutation<T[key]>>;
39
- };
40
- }
41
- /**
42
- * Represents an insert mutation on a document.
43
- * @category Database
44
- */
45
- export interface InsertMutation<T = any> extends BaseMutation {
46
- /** Specifies that the mutation is an insertion. */
47
- type: 'insert';
48
- /** The inserted document */
49
- properties: T;
50
- }
51
- /**
52
- * A representation of a single property update.
53
- * @category Database
54
- */
55
- export type PropertyMutation<Value = any> = ApplyNumericFnPropertyMutation | ApplyStringFnPropertyMutation | ValueUpdatePropertyMutation<Value> | RemovePropertyMutation;
56
- /**
57
- * A value update property mutation.
58
- * @category Database
59
- */
60
- export interface ValueUpdatePropertyMutation<Value = any> {
61
- /** Specifies that the mutation updates a value. */
62
- type: 'update';
63
- /** New value to be set. */
64
- value: Value;
65
- }
66
- /**
67
- * Applying a numeric function to a property.
68
- * @category Database
69
- */
70
- export interface ApplyNumericFnPropertyMutation {
71
- /** Specifies that the mutation applies a numeric function. */
72
- type: 'applyNumericFn';
73
- /** Numeric function to apply. */
74
- fn: 'increment';
75
- /** Value to use in the numeric function. */
76
- value: number;
77
- }
78
- /**
79
- * A property update that removes a property from a document.
80
- * @category Database
81
- */
82
- export interface RemovePropertyMutation {
83
- /** Specifies that the mutation removes a property. */
84
- type: 'removeProperty';
85
- }
86
- interface ApplyExtendString {
87
- /** Specifies that the mutation applies a string function. */
88
- type: 'applyStringFn';
89
- /** String function to extend the existing string. */
90
- fn: 'extendString';
91
- /** String value to append. */
92
- value: string;
93
- }
94
- interface ApplyTrimString {
95
- /** Specifies that the mutation applies a string function. */
96
- type: 'applyStringFn';
97
- /** String function to trim the existing string. */
98
- fn: 'trim';
99
- }
100
- /**
101
- * A property mutation that modifies a string.
102
- * @category Database
103
- */
104
- export type ApplyStringFnPropertyMutation = ApplyExtendString | ApplyTrimString;
105
- /**
106
- * The before and after documents of a document change.
107
- * @category Database
108
- */
109
- export interface BeforeAndAfterDocs<T = SquidDocument> {
110
- /** Document state before the mutation. */
111
- before: T | undefined;
112
- /** Document state after the mutation. */
113
- after: T | undefined;
114
- }
115
- /**
116
- * The mutation context that will be provided to the security function.
117
- * @category Database
118
- */
119
- export declare class MutationContext<T = any> {
120
- readonly mutation: Mutation<T>;
121
- readonly beforeAndAfterDocs: BeforeAndAfterDocs<T>;
122
- readonly serverTimeStamp: Date;
123
- /**
124
- * Returns the type of the mutation (insert, update, or delete).
125
- */
126
- getMutationType(): MutationType;
127
- /**
128
- * Returns the state of the document before the mutation was applied.
129
- */
130
- get before(): T | undefined;
131
- /**
132
- * Returns the state of the document after the mutation was applied.
133
- */
134
- get after(): T | undefined;
135
- /** Returns true if the mutation affects the provided path. */
136
- affectsPath(path: Paths<T>): boolean;
137
- /**
138
- * Find all affected paths starting from a root path.
139
- *
140
- * @example
141
- * doc before - { a: { b: 1, c: 2 }, d: 3 }
142
- * doc after - { a: { b: 1, c: 3 }, d: 4 }
143
- * doc.affectedPaths('a') // ['a.c']
144
- */
145
- affectedPaths(startingRoot?: Paths<T> | string): Array<Paths<T>>;
146
- private checkPath;
147
- }
148
- export {};
@@ -1,60 +0,0 @@
1
- import { IntegrationId } from '../public-types/communication.public-types';
2
- /**
3
- * Represents the type of native query request, either relational or MongoDB.
4
- * @category Database
5
- */
6
- export type NativeQueryRequestType = 'relational' | 'mongo';
7
- interface BaseNativeQueryContext {
8
- /** Type of the native query request. */
9
- type: NativeQueryRequestType;
10
- /** Identifier for the integration. */
11
- integrationId: IntegrationId;
12
- }
13
- /**
14
- * Context for executing a relational database query.
15
- * @category Database
16
- */
17
- export interface RelationalNativeQueryContext extends BaseNativeQueryContext {
18
- /** Specifies that the query is for a relational database. */
19
- type: 'relational';
20
- /** SQL query string to be executed. */
21
- query: string;
22
- /** Parameters to be used in the query. */
23
- params: Record<string, any>;
24
- }
25
- /**
26
- * Context for executing a MongoDB query.
27
- * @category Database
28
- */
29
- export interface MongoNativeQueryContext extends BaseNativeQueryContext {
30
- /** Specifies that the query is for a Mongo database. */
31
- type: 'mongo';
32
- /** Name of the MongoDB collection to query. */
33
- collectionName: string;
34
- /** Array of aggregation pipeline stages. */
35
- aggregationPipeline: Array<any | undefined>;
36
- }
37
- /**
38
- * Context for executing an Elasticsearch query.
39
- * @category Database
40
- */
41
- export interface ElasticsearchNativeQueryContext {
42
- /** Specifies that the query is for an Elasticsearch database. */
43
- type: 'elasticsearch';
44
- /** Elasticsearch index to query. */
45
- index: string;
46
- /** Elasticsearch query string. */
47
- endpoint?: string;
48
- /** HTTP method to use for the request. */
49
- method?: 'GET' | 'POST';
50
- /** Body of the request. */
51
- body: Record<string, any>;
52
- /** Headers to include in the request. */
53
- integrationId: IntegrationId;
54
- }
55
- /**
56
- * Union type representing either a relational or MongoDB native query context.
57
- * @category Database
58
- */
59
- export type NativeQueryContext = RelationalNativeQueryContext | MongoNativeQueryContext | ElasticsearchNativeQueryContext;
60
- export {};
@@ -1,166 +0,0 @@
1
- import { FieldSort, Operator, Query, SimpleCondition } from '../public-types/query.public-types';
2
- import { DeepRecord, FieldOf, PartialBy, Paths } from '../public-types/typescript.public-types';
3
- import { CollectionName, DocumentData } from '../public-types/document.public-types';
4
- import { IntegrationId } from '../public-types/communication.public-types';
5
- /**
6
- * Represents the Squid query context.
7
- * Passed to methods that require query details, such as those annotated with the `@secureCollection` annotation.
8
- * @category Database
9
- */
10
- export declare class QueryContext<T extends DocumentData = any> {
11
- readonly query: Query<T>;
12
- /**
13
- * The ID of the integration being queried.
14
- */
15
- get integrationId(): IntegrationId;
16
- /**
17
- * The name of the collection being queried.
18
- */
19
- get collectionName(): CollectionName;
20
- /**
21
- * The query limit if one exists, -1 otherwise.
22
- */
23
- get limit(): number;
24
- /**
25
- * Verifies that the query's sort order aligns with the provided field sorts. The fields specified in the `sorts`
26
- * parameter must appear in the exact order at the beginning of the query's sort sequence. The query can include
27
- * additional fields in its sort order, but only after the specified sorts.
28
- *
29
- * @param sorts An array of field sorts.
30
- * @returns Whether the query's sorts matches the provided field sorts.
31
- */
32
- sortedBy(sorts: Array<PartialBy<FieldSort<T>, 'asc'>>): boolean;
33
- /**
34
- * Verifies that the query's sort order exactly matches the provided field sorts. The fields specified in the
35
- * `sorts` parameter must appear in the exact order in the query's sort sequence. No additional sorts may be present
36
- * in the query.
37
- *
38
- * @param sorts An array of field sorts.
39
- * @returns Whether the query's sorts exactly match the provided field sorts.
40
- */
41
- sortedByExact(sorts: Array<PartialBy<FieldSort<T>, 'asc'>>): boolean;
42
- /**
43
- * Verifies that the query is a subquery of the specified condition. A subquery is defined as a query that evaluates
44
- * to a subset of the results that would be obtained by applying the parent condition. The subquery may also include
45
- * additional conditions, as these only narrow the result set.
46
- *
47
- * @param fieldName The name of the field for the condition.
48
- * @param operator The operator of the condition.
49
- * @param value The value of the condition.
50
- * @returns Whether the query is a subquery of the parent condition.
51
- */
52
- isSubqueryOf<F extends Paths<T>, O extends AllOperators>(fieldName: F, operator: O, value: GenericValue<T, F, O> | null): boolean;
53
- /**
54
- * Verifies that the query is a subquery of the specified condition. A subquery is defined as a query that evaluates
55
- * to a subset of the results that would be obtained by applying the parent condition. The subquery may also include
56
- * additional conditions, as these only narrow the result set.
57
- *
58
- * @param condition The condition to validate.
59
- * @returns Whether the query is a subquery of the parent condition.
60
- */
61
- isSubqueryOfCondition(condition: GeneralCondition<T>): boolean;
62
- /**
63
- * Verifies that the query is a subquery of the specified conditions. A subquery is defined as a query that evaluates
64
- * to a subset of the results that would be obtained by applying the parent conditions. The subquery may also include
65
- * additional conditions, as these only narrow the result set.
66
- *
67
- * @param conditions The conditions to validate.
68
- * @returns Whether the query includes subquery of the parent conditions.
69
- */
70
- isSubqueryOfConditions(conditions: GeneralConditions<T>): boolean;
71
- /**
72
- * Verifies that the query is a subquery of the specified query. A subquery is defined as a query that evaluates
73
- * to a subset of the results that obtained for the parent query, including sorts and limits.
74
- *
75
- * @param query The query to validate.
76
- * @returns Whether the query is a subquery of the parent query.
77
- */
78
- isSubqueryOfQuery(query: Query<T>): boolean;
79
- /**
80
- * Returns all conditions that apply to any of the specified field names. This method
81
- * provides a convenient way to retrieve all conditions that involve a specific set of fields.
82
- *
83
- * @param fieldNames The field names for which to retrieve conditions.
84
- * @returns An array of conditions that involve any of the specified field names.
85
- */
86
- getConditionsFor<K extends Paths<T>>(...fieldNames: Array<K>): ContextConditions<T, K>;
87
- /**
88
- * Returns all conditions that apply to the specified field name. This method provides
89
- * a convenient way to retrieve all conditions that involve a specific field.
90
- *
91
- * @param fieldName The field name for which to retrieve conditions.
92
- * @returns An array of conditions that involve the specified field name.
93
- */
94
- getConditionsForField<K extends Paths<T>>(fieldName: K): ContextConditions<T>;
95
- /**
96
- * Returns true if the given document can be a result of the query.
97
- * The method does not account for limit and sort order.
98
- */
99
- documentMatchesQuery(doc: DocumentData): boolean;
100
- }
101
- /**
102
- * A list of context conditions.
103
- * @category Database
104
- */
105
- export type ContextConditions<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> = Array<ContextCondition<Doc, F>>;
106
- /**
107
- * A Context condition - a condition that replaces multiple '==' or '!=' conditions with 'in' and 'not in'.
108
- * @category Database
109
- */
110
- export type ContextCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> = InContextCondition<Doc, F> | NotInContextCondition<Doc, F> | OtherContextCondition<Doc, F>;
111
- /**
112
- * A condition using the 'in' operator to match values within a set.
113
- * @category Database
114
- */
115
- export interface InContextCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> extends SimpleCondition<Doc, F, 'in'> {
116
- /** Specifies the 'in' operator to check if a value exists within an array. */
117
- operator: 'in';
118
- /** An array of values to match against the field. */
119
- value: Array<FieldOf<DeepRecord<Doc>, Paths<Doc>> | any>;
120
- }
121
- /**
122
- * A condition using the 'not in' operator to exclude values within a set.
123
- * @category Database
124
- */
125
- export interface NotInContextCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> extends SimpleCondition<Doc, F, 'not in'> {
126
- /** Specifies the 'not in' operator to check if a value does not exist within an array. */
127
- operator: 'not in';
128
- /** An array of values to exclude from the field. */
129
- value: Array<FieldOf<DeepRecord<Doc>, Paths<Doc>> | any>;
130
- }
131
- /**
132
- * A condition using operators other than 'in' or 'not in' for field comparisons.
133
- * @category Database
134
- */
135
- export interface OtherContextCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> extends SimpleCondition<Doc, F, Exclude<ContextOperator, 'in' | 'not in'>> {
136
- /** The operator to use for the comparison, excluding 'in' and 'not in'. */
137
- operator: Exclude<ContextOperator, 'in' | 'not in'>;
138
- /** The value to compare against the field. */
139
- value: FieldOf<DeepRecord<Doc>, Paths<Doc>> | any;
140
- }
141
- /**
142
- * A condition that includes all operators, including 'in' and 'not in', for general use.
143
- * @category Database
144
- */
145
- export interface GeneralCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> extends SimpleCondition<Doc, F, AllOperators> {
146
- /** The operator to apply to the condition, including all possible operators. */
147
- operator: AllOperators;
148
- /** The value to use in the condition comparison. */
149
- value: any;
150
- }
151
- /**
152
- * A list of general conditions.
153
- * @category Database
154
- */
155
- export type GeneralConditions<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> = Array<GeneralCondition<Doc, F>>;
156
- /**
157
- * @category Database
158
- */
159
- export type ContextOperator = Exclude<Operator, '==' | '!='> | 'in' | 'not in';
160
- type AllOperators = Operator | 'in' | 'not in';
161
- /**
162
- * A generic value that can exist in a query.
163
- * @category Database
164
- */
165
- export 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;
166
- export {};