@squidcloud/local-backend 1.0.25 → 1.0.26
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/common/src/ai-assistant.context.d.ts +13 -0
- package/dist/common/src/ai-assistant.context.js +20 -0
- package/dist/common/src/ai-assistant.context.js.map +1 -0
- package/dist/common/src/ai-assistant.schemas.d.ts +210 -0
- package/dist/common/src/ai-assistant.schemas.js +200 -0
- package/dist/common/src/ai-assistant.schemas.js.map +1 -0
- package/dist/common/src/ai-assistant.types.d.ts +81 -0
- package/dist/common/src/ai-assistant.types.js +12 -0
- package/dist/common/src/ai-assistant.types.js.map +1 -0
- package/dist/common/src/api-call.context.d.ts +13 -0
- package/dist/common/src/api-call.context.js +17 -0
- package/dist/common/src/api-call.context.js.map +1 -0
- package/dist/common/src/api.types.d.ts +24 -0
- package/dist/common/src/api.types.js +3 -0
- package/dist/common/src/api.types.js.map +1 -0
- package/dist/common/src/application.schemas.d.ts +1060 -0
- package/dist/common/src/application.schemas.js +711 -0
- package/dist/common/src/application.schemas.js.map +1 -0
- package/dist/common/src/application.types.d.ts +228 -0
- package/dist/common/src/application.types.js +90 -0
- package/dist/common/src/application.types.js.map +1 -0
- package/dist/common/src/auth.types.d.ts +4 -0
- package/dist/common/src/auth.types.js +3 -0
- package/dist/common/src/auth.types.js.map +1 -0
- package/dist/common/src/backend-function.schemas.d.ts +3 -0
- package/dist/common/src/backend-function.schemas.js +14 -0
- package/dist/common/src/backend-function.schemas.js.map +1 -0
- package/dist/common/src/backend-function.types.d.ts +7 -0
- package/dist/common/src/backend-function.types.js +3 -0
- package/dist/common/src/backend-function.types.js.map +1 -0
- package/dist/common/src/backend-run.types.d.ts +54 -0
- package/dist/common/src/backend-run.types.js +74 -0
- package/dist/common/src/backend-run.types.js.map +1 -0
- package/dist/common/src/bundle-api.types.d.ts +71 -0
- package/dist/common/src/bundle-api.types.js +3 -0
- package/dist/common/src/bundle-api.types.js.map +1 -0
- package/dist/common/src/bundle-data.types.d.ts +59 -0
- package/dist/common/src/bundle-data.types.js +3 -0
- package/dist/common/src/bundle-data.types.js.map +1 -0
- package/dist/common/src/communication.types.d.ts +17 -0
- package/dist/common/src/communication.types.js +37 -0
- package/dist/common/src/communication.types.js.map +1 -0
- package/dist/common/src/context.types.d.ts +22 -0
- package/dist/common/src/context.types.js +3 -0
- package/dist/common/src/context.types.js.map +1 -0
- package/dist/common/src/distributed-lock.context.d.ts +5 -0
- package/dist/common/src/distributed-lock.context.js +11 -0
- package/dist/common/src/distributed-lock.context.js.map +1 -0
- package/dist/common/src/document.types.d.ts +31 -0
- package/dist/common/src/document.types.js +50 -0
- package/dist/common/src/document.types.js.map +1 -0
- package/dist/common/src/graphql.context.d.ts +14 -0
- package/dist/common/src/graphql.context.js +13 -0
- package/dist/common/src/graphql.context.js.map +1 -0
- package/dist/common/src/graphql.types.d.ts +11 -0
- package/dist/common/src/graphql.types.js +35 -0
- package/dist/common/src/graphql.types.js.map +1 -0
- package/dist/common/src/http-status.enum.d.ts +50 -0
- package/dist/common/src/http-status.enum.js +55 -0
- package/dist/common/src/http-status.enum.js.map +1 -0
- package/dist/common/src/index.d.ts +54 -0
- package/dist/common/src/index.js +71 -0
- package/dist/common/src/index.js.map +1 -0
- package/dist/common/src/integrations/ai_assistant.types.d.ts +30 -0
- package/dist/common/src/integrations/ai_assistant.types.js +3 -0
- package/dist/common/src/integrations/ai_assistant.types.js.map +1 -0
- package/dist/common/src/integrations/api.types.d.ts +80 -0
- package/dist/common/src/integrations/api.types.js +3 -0
- package/dist/common/src/integrations/api.types.js.map +1 -0
- package/dist/common/src/integrations/auth.types.d.ts +22 -0
- package/dist/common/src/integrations/auth.types.js +3 -0
- package/dist/common/src/integrations/auth.types.js.map +1 -0
- package/dist/common/src/integrations/database.types.d.ts +236 -0
- package/dist/common/src/integrations/database.types.js +3 -0
- package/dist/common/src/integrations/database.types.js.map +1 -0
- package/dist/common/src/integrations/index.d.ts +97 -0
- package/dist/common/src/integrations/index.js +98 -0
- package/dist/common/src/integrations/index.js.map +1 -0
- package/dist/common/src/integrations/observability.types.d.ts +22 -0
- package/dist/common/src/integrations/observability.types.js +15 -0
- package/dist/common/src/integrations/observability.types.js.map +1 -0
- package/dist/common/src/logger.types.d.ts +21 -0
- package/dist/common/src/logger.types.js +12 -0
- package/dist/common/src/logger.types.js.map +1 -0
- package/dist/common/src/metrics.types.d.ts +58 -0
- package/dist/common/src/metrics.types.js +12 -0
- package/dist/common/src/metrics.types.js.map +1 -0
- package/dist/common/src/mutation.context.d.ts +11 -0
- package/dist/common/src/mutation.context.js +21 -0
- package/dist/common/src/mutation.context.js.map +1 -0
- package/dist/common/src/mutation.schemas.d.ts +5 -0
- package/dist/common/src/mutation.schemas.js +116 -0
- package/dist/common/src/mutation.schemas.js.map +1 -0
- package/dist/common/src/mutation.types.d.ts +64 -0
- package/dist/common/src/mutation.types.js +143 -0
- package/dist/common/src/mutation.types.js.map +1 -0
- package/dist/common/src/named-query.context.d.ts +4 -0
- package/dist/common/src/named-query.context.js +10 -0
- package/dist/common/src/named-query.context.js.map +1 -0
- package/dist/common/src/named-query.schemas.d.ts +3 -0
- package/dist/common/src/named-query.schemas.js +15 -0
- package/dist/common/src/named-query.schemas.js.map +1 -0
- package/dist/common/src/named-query.types.d.ts +9 -0
- package/dist/common/src/named-query.types.js +3 -0
- package/dist/common/src/named-query.types.js.map +1 -0
- package/dist/common/src/query/index.d.ts +2 -0
- package/dist/common/src/query/index.js +19 -0
- package/dist/common/src/query/index.js.map +1 -0
- package/dist/common/src/query/query-context.d.ts +28 -0
- package/dist/common/src/query/query-context.js +161 -0
- package/dist/common/src/query/query-context.js.map +1 -0
- package/dist/common/src/query/simple-query-builder.d.ts +39 -0
- package/dist/common/src/query/simple-query-builder.js +111 -0
- package/dist/common/src/query/simple-query-builder.js.map +1 -0
- package/dist/common/src/query.schemas.d.ts +5 -0
- package/dist/common/src/query.schemas.js +90 -0
- package/dist/common/src/query.schemas.js.map +1 -0
- package/dist/common/src/query.types.d.ts +89 -0
- package/dist/common/src/query.types.js +135 -0
- package/dist/common/src/query.types.js.map +1 -0
- package/dist/common/src/regions.d.ts +21 -0
- package/dist/common/src/regions.js +44 -0
- package/dist/common/src/regions.js.map +1 -0
- package/dist/common/src/schema/schema.types.d.ts +30 -0
- package/dist/common/src/schema/schema.types.js +173 -0
- package/dist/common/src/schema/schema.types.js.map +1 -0
- package/dist/common/src/secret.schemas.d.ts +6 -0
- package/dist/common/src/secret.schemas.js +33 -0
- package/dist/common/src/secret.schemas.js.map +1 -0
- package/dist/common/src/secret.types.d.ts +49 -0
- package/dist/common/src/secret.types.js +6 -0
- package/dist/common/src/secret.types.js.map +1 -0
- package/dist/common/src/security.types.d.ts +3 -0
- package/dist/common/src/security.types.js +3 -0
- package/dist/common/src/security.types.js.map +1 -0
- package/dist/common/src/socket.schemas.d.ts +3 -0
- package/dist/common/src/socket.schemas.js +59 -0
- package/dist/common/src/socket.schemas.js.map +1 -0
- package/dist/common/src/socket.types.d.ts +108 -0
- package/dist/common/src/socket.types.js +3 -0
- package/dist/common/src/socket.types.js.map +1 -0
- package/dist/common/src/time-units.d.ts +5 -0
- package/dist/common/src/time-units.js +9 -0
- package/dist/common/src/time-units.js.map +1 -0
- package/dist/common/src/trigger.types.d.ts +15 -0
- package/dist/common/src/trigger.types.js +3 -0
- package/dist/common/src/trigger.types.js.map +1 -0
- package/dist/common/src/types.d.ts +15 -0
- package/dist/common/src/types.js +3 -0
- package/dist/common/src/types.js.map +1 -0
- package/dist/common/src/utils/array.d.ts +8 -0
- package/dist/common/src/utils/array.js +52 -0
- package/dist/common/src/utils/array.js.map +1 -0
- package/dist/common/src/utils/assert.d.ts +8 -0
- package/dist/common/src/utils/assert.js +50 -0
- package/dist/common/src/utils/assert.js.map +1 -0
- package/dist/common/src/utils/error.d.ts +4 -0
- package/dist/common/src/utils/error.js +11 -0
- package/dist/common/src/utils/error.js.map +1 -0
- package/dist/common/src/utils/http.d.ts +2 -0
- package/dist/common/src/utils/http.js +39 -0
- package/dist/common/src/utils/http.js.map +1 -0
- package/dist/common/src/utils/id.d.ts +2 -0
- package/dist/common/src/utils/id.js +22 -0
- package/dist/common/src/utils/id.js.map +1 -0
- package/dist/common/src/utils/lock.manager.d.ts +9 -0
- package/dist/common/src/utils/lock.manager.js +40 -0
- package/dist/common/src/utils/lock.manager.js.map +1 -0
- package/dist/common/src/utils/nullish.d.ts +1 -0
- package/dist/common/src/utils/nullish.js +8 -0
- package/dist/common/src/utils/nullish.js.map +1 -0
- package/dist/common/src/utils/object.d.ts +6 -0
- package/dist/common/src/utils/object.js +90 -0
- package/dist/common/src/utils/object.js.map +1 -0
- package/dist/common/src/utils/serialization.d.ts +6 -0
- package/dist/common/src/utils/serialization.js +51 -0
- package/dist/common/src/utils/serialization.js.map +1 -0
- package/dist/common/src/utils/transforms.d.ts +18 -0
- package/dist/common/src/utils/transforms.js +93 -0
- package/dist/common/src/utils/transforms.js.map +1 -0
- package/dist/common/src/utils/url.d.ts +1 -0
- package/dist/common/src/utils/url.js +16 -0
- package/dist/common/src/utils/url.js.map +1 -0
- package/dist/common/src/utils/validation.d.ts +17 -0
- package/dist/common/src/utils/validation.js +210 -0
- package/dist/common/src/utils/validation.js.map +1 -0
- package/dist/common/src/webhook-response.d.ts +7 -0
- package/dist/common/src/webhook-response.js +8 -0
- package/dist/common/src/webhook-response.js.map +1 -0
- package/dist/internal-common/src/code-executor.types.d.ts +13 -0
- package/dist/internal-common/src/code-executor.types.js +3 -0
- package/dist/internal-common/src/code-executor.types.js.map +1 -0
- package/dist/internal-common/src/environment/environment.types.d.ts +71 -0
- package/dist/internal-common/src/environment/environment.types.js +3 -0
- package/dist/internal-common/src/environment/environment.types.js.map +1 -0
- package/dist/internal-common/src/environment/index.d.ts +6 -0
- package/dist/internal-common/src/environment/index.js +26 -0
- package/dist/internal-common/src/environment/index.js.map +1 -0
- package/dist/internal-common/src/environment/local.environment.d.ts +2 -0
- package/dist/internal-common/src/environment/local.environment.js +60 -0
- package/dist/internal-common/src/environment/local.environment.js.map +1 -0
- package/dist/internal-common/src/index.d.ts +10 -0
- package/dist/internal-common/src/index.js +27 -0
- package/dist/internal-common/src/index.js.map +1 -0
- package/dist/internal-common/src/kafka/kafka.manager.d.ts +17 -0
- package/dist/internal-common/src/kafka/kafka.manager.interface.d.ts +10 -0
- package/dist/internal-common/src/kafka/kafka.manager.interface.js +7 -0
- package/dist/internal-common/src/kafka/kafka.manager.interface.js.map +1 -0
- package/dist/internal-common/src/kafka/kafka.manager.js +104 -0
- package/dist/internal-common/src/kafka/kafka.manager.js.map +1 -0
- package/dist/internal-common/src/kafka/kafka.types.d.ts +17 -0
- package/dist/internal-common/src/kafka/kafka.types.js +3 -0
- package/dist/internal-common/src/kafka/kafka.types.js.map +1 -0
- package/dist/internal-common/src/local-dev.types.d.ts +31 -0
- package/dist/internal-common/src/local-dev.types.js +3 -0
- package/dist/internal-common/src/local-dev.types.js.map +1 -0
- package/dist/internal-common/src/observability-publisher.d.ts +14 -0
- package/dist/internal-common/src/observability-publisher.js +71 -0
- package/dist/internal-common/src/observability-publisher.js.map +1 -0
- package/dist/internal-common/src/observability.types.d.ts +17 -0
- package/dist/internal-common/src/observability.types.js +3 -0
- package/dist/internal-common/src/observability.types.js.map +1 -0
- package/dist/internal-common/src/shutdown.manager.d.ts +20 -0
- package/dist/internal-common/src/shutdown.manager.js +77 -0
- package/dist/internal-common/src/shutdown.manager.js.map +1 -0
- package/dist/internal-common/src/utils.d.ts +5 -0
- package/dist/internal-common/src/utils.js +30 -0
- package/dist/internal-common/src/utils.js.map +1 -0
- package/dist/{index.d.ts → local-backend/src/index.d.ts} +4 -4
- package/dist/{index.js → local-backend/src/index.js} +20 -20
- package/dist/local-backend/src/index.js.map +1 -0
- package/dist/local-backend/src/local-backend-socket.service.d.ts +18 -0
- package/dist/local-backend/src/local-backend-socket.service.js +110 -0
- package/dist/local-backend/src/local-backend-socket.service.js.map +1 -0
- package/dist/{local-backend.app.d.ts → local-backend/src/local-backend.app.d.ts} +2 -2
- package/dist/{local-backend.app.js → local-backend/src/local-backend.app.js} +25 -15
- package/dist/local-backend/src/local-backend.app.js.map +1 -0
- package/dist/{local-backend.controller.d.ts → local-backend/src/local-backend.controller.d.ts} +8 -8
- package/dist/{local-backend.controller.js → local-backend/src/local-backend.controller.js} +49 -49
- package/dist/local-backend/src/local-backend.controller.js.map +1 -0
- package/dist/{local-backend.module.d.ts → local-backend/src/local-backend.module.d.ts} +8 -8
- package/dist/{local-backend.module.js → local-backend/src/local-backend.module.js} +53 -51
- package/dist/local-backend/src/local-backend.module.js.map +1 -0
- package/dist/local-backend/src/local-backend.service.d.ts +15 -0
- package/dist/{local-backend.service.js → local-backend/src/local-backend.service.js} +165 -143
- package/dist/local-backend/src/local-backend.service.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +6 -4
- package/dist/index.js.map +0 -1
- package/dist/local-backend.app.js.map +0 -1
- package/dist/local-backend.controller.js.map +0 -1
- package/dist/local-backend.module.js.map +0 -1
- package/dist/local-backend.service.d.ts +0 -7
- package/dist/local-backend.service.js.map +0 -1
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QueryContext = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
const CompareTable = {
|
|
6
|
+
'in:in': (a, b) => a.every((c) => b.includes(c)),
|
|
7
|
+
'in:not in': (a, b) => a.every((c) => !b.includes(c)),
|
|
8
|
+
'not in:not in': (a, b) => b.every((c) => a.includes(c)),
|
|
9
|
+
'>:not in': (a, b) => b.every((c) => a >= c),
|
|
10
|
+
'>=:not in': (a, b) => b.every((c) => a > c),
|
|
11
|
+
'<:not in': (a, b) => b.every((c) => a <= c),
|
|
12
|
+
'<=:not in': (a, b) => b.every((c) => a < c),
|
|
13
|
+
'>:>': (a, b) => a >= b,
|
|
14
|
+
'>=:>': (a, b) => a > b,
|
|
15
|
+
'in:>': (a, b) => a.every((c) => c > b),
|
|
16
|
+
'>:>=': (a, b) => a >= b,
|
|
17
|
+
'>=:>=': (a, b) => a >= b,
|
|
18
|
+
'in:>=': (a, b) => a.every((c) => c >= b),
|
|
19
|
+
'<:<': (a, b) => a <= b,
|
|
20
|
+
'<=:<': (a, b) => a < b,
|
|
21
|
+
'in:<': (a, b) => a.every((c) => c < b),
|
|
22
|
+
'<:<=': (a, b) => a <= b,
|
|
23
|
+
'<=:<=': (a, b) => a <= b,
|
|
24
|
+
'in:<=': (a, b) => a.every((c) => c <= b),
|
|
25
|
+
};
|
|
26
|
+
class QueryContext {
|
|
27
|
+
constructor(query) {
|
|
28
|
+
this.query = query;
|
|
29
|
+
this.query = query;
|
|
30
|
+
this.parsedConditions = this.parseConditions(this.query.conditions);
|
|
31
|
+
}
|
|
32
|
+
get integrationId() {
|
|
33
|
+
return this.query.integrationId;
|
|
34
|
+
}
|
|
35
|
+
get collectionName() {
|
|
36
|
+
return this.query.collectionName;
|
|
37
|
+
}
|
|
38
|
+
get limit() {
|
|
39
|
+
return this.query.limit;
|
|
40
|
+
}
|
|
41
|
+
sortedBy(sorts) {
|
|
42
|
+
const mismatch = sorts.find((fieldSort, index) => {
|
|
43
|
+
var _a;
|
|
44
|
+
return !(0, lodash_1.isEqual)(this.query.sortOrder[index], Object.assign(Object.assign({}, fieldSort), { asc: (_a = fieldSort.asc) !== null && _a !== void 0 ? _a : true }));
|
|
45
|
+
});
|
|
46
|
+
return !mismatch;
|
|
47
|
+
}
|
|
48
|
+
sortedByExact(sorts) {
|
|
49
|
+
if (sorts.length !== this.query.sortOrder.length)
|
|
50
|
+
return false;
|
|
51
|
+
return this.sortedBy(sorts);
|
|
52
|
+
}
|
|
53
|
+
includes(fieldName, operator, value) {
|
|
54
|
+
return this.includesCondition({ fieldName, operator, value });
|
|
55
|
+
}
|
|
56
|
+
includesCondition(condition) {
|
|
57
|
+
const conditions = this.parsedConditions.filter((c) => c.fieldName === condition.fieldName);
|
|
58
|
+
if (!conditions.length)
|
|
59
|
+
return false;
|
|
60
|
+
return !!conditions.find((c) => this.evaluateIncludes(c, condition));
|
|
61
|
+
}
|
|
62
|
+
includesConditions(conditions) {
|
|
63
|
+
const parsedConditions = this.parseConditions(conditions);
|
|
64
|
+
return parsedConditions.every((c) => this.includesCondition(c));
|
|
65
|
+
}
|
|
66
|
+
matchesConditions(conditions) {
|
|
67
|
+
const parsedConditions = this.parseConditions(conditions);
|
|
68
|
+
if (this.parsedConditions.length !== parsedConditions.length)
|
|
69
|
+
return false;
|
|
70
|
+
return parsedConditions.every((c) => this.includesCondition(c));
|
|
71
|
+
}
|
|
72
|
+
matchesQuery(query) {
|
|
73
|
+
if (query.collectionName !== this.collectionName || query.integrationId !== this.integrationId)
|
|
74
|
+
return false;
|
|
75
|
+
const matchesConditions = this.matchesConditions(query.conditions);
|
|
76
|
+
const matchesOrder = this.sortedByExact(query.sortOrder);
|
|
77
|
+
const matchesLimit = this.limit === query.limit;
|
|
78
|
+
return matchesConditions && matchesOrder && matchesLimit;
|
|
79
|
+
}
|
|
80
|
+
isSubsetOf(fieldName, operator, value) {
|
|
81
|
+
return this.isSubsetOfCondition({
|
|
82
|
+
fieldName,
|
|
83
|
+
operator,
|
|
84
|
+
value,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
isSubsetOfCondition(condition) {
|
|
88
|
+
const conditions = this.parsedConditions.filter((c) => c.fieldName === condition.fieldName);
|
|
89
|
+
return !!conditions.find((c) => this.evaluateSubset(c, condition));
|
|
90
|
+
}
|
|
91
|
+
isSubsetOfConditions(conditions) {
|
|
92
|
+
const parsedConditions = this.parseConditions(conditions);
|
|
93
|
+
return parsedConditions.every((c) => this.isSubsetOfCondition(c));
|
|
94
|
+
}
|
|
95
|
+
isSubsetOfQuery(query) {
|
|
96
|
+
if (query.collectionName !== this.collectionName || query.integrationId !== this.integrationId)
|
|
97
|
+
return false;
|
|
98
|
+
const subsetOfConditions = this.isSubsetOfConditions(query.conditions);
|
|
99
|
+
const subsetOfOrder = this.sortedBy(query.sortOrder);
|
|
100
|
+
const withinLimit = query.limit === -1 || (this.limit > -1 && this.limit < query.limit);
|
|
101
|
+
return subsetOfConditions && subsetOfOrder && withinLimit;
|
|
102
|
+
}
|
|
103
|
+
getConditionsFor(...fieldNames) {
|
|
104
|
+
return this.parsedConditions.filter((cond) => fieldNames.includes(cond.fieldName));
|
|
105
|
+
}
|
|
106
|
+
getConditionsForField(fieldName) {
|
|
107
|
+
return this.parsedConditions.filter((cond) => cond.fieldName === fieldName);
|
|
108
|
+
}
|
|
109
|
+
evaluateSubset(queryCondition, testCondition) {
|
|
110
|
+
const { operator: queryOperator, value: queryValue } = queryCondition;
|
|
111
|
+
const { operator, value } = this.parseConditions([testCondition])[0];
|
|
112
|
+
const compareFunction = CompareTable[`${queryOperator}:${operator}`];
|
|
113
|
+
if (!compareFunction)
|
|
114
|
+
return false;
|
|
115
|
+
return compareFunction(queryValue, value);
|
|
116
|
+
}
|
|
117
|
+
evaluateIncludes(queryCondition, testCondition) {
|
|
118
|
+
const { operator: queryOperator, value: queryValue } = queryCondition;
|
|
119
|
+
const { operator, value } = this.parseConditions([testCondition])[0];
|
|
120
|
+
const sortedQueryValue = Array.isArray(queryValue) ? queryValue.sort() : queryValue;
|
|
121
|
+
const sortedValue = Array.isArray(value) ? value.sort() : value;
|
|
122
|
+
return operator === queryOperator && (0, lodash_1.isEqual)(sortedValue, sortedQueryValue);
|
|
123
|
+
}
|
|
124
|
+
parseConditions(conditions) {
|
|
125
|
+
const parsedConditions = [];
|
|
126
|
+
const inMap = new Map();
|
|
127
|
+
const notInMap = new Map();
|
|
128
|
+
conditions.forEach((c) => {
|
|
129
|
+
switch (c.operator) {
|
|
130
|
+
case '==':
|
|
131
|
+
case 'in':
|
|
132
|
+
inMap.set(c.fieldName, (inMap.get(c.fieldName) || []).concat(c.value));
|
|
133
|
+
break;
|
|
134
|
+
case '!=':
|
|
135
|
+
case 'not in':
|
|
136
|
+
notInMap.set(c.fieldName, (notInMap.get(c.fieldName) || []).concat(c.value));
|
|
137
|
+
break;
|
|
138
|
+
default:
|
|
139
|
+
parsedConditions.push(c);
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
inMap.forEach((value, fieldName) => {
|
|
144
|
+
parsedConditions.push({
|
|
145
|
+
fieldName,
|
|
146
|
+
operator: 'in',
|
|
147
|
+
value: value,
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
notInMap.forEach((value, fieldName) => {
|
|
151
|
+
parsedConditions.push({
|
|
152
|
+
fieldName,
|
|
153
|
+
operator: 'not in',
|
|
154
|
+
value: value,
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
return parsedConditions;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
exports.QueryContext = QueryContext;
|
|
161
|
+
//# sourceMappingURL=query-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-context.js","sourceRoot":"","sources":["../../../../../common/src/query/query-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { IntegrationId } from '../communication.types';
|
|
2
|
+
import { CollectionName, DocumentData, FieldName, PrimitiveFieldType } from '../document.types';
|
|
3
|
+
import { Operator, Query } from '../query.types';
|
|
4
|
+
export interface BaseQueryBuilderInterface<MyDocType extends DocumentData> {
|
|
5
|
+
where(fieldName: (keyof MyDocType & FieldName) | string, operator: Operator | 'in' | 'not in', value: PrimitiveFieldType | Array<PrimitiveFieldType>): this;
|
|
6
|
+
eq(fieldName: (keyof MyDocType & FieldName) | string, value: PrimitiveFieldType): this;
|
|
7
|
+
neq(fieldName: (keyof MyDocType & FieldName) | string, value: PrimitiveFieldType): this;
|
|
8
|
+
in(fieldName: (keyof MyDocType & FieldName) | string, value: Array<PrimitiveFieldType>): this;
|
|
9
|
+
nin(fieldName: (keyof MyDocType & FieldName) | string, value: Array<PrimitiveFieldType>): this;
|
|
10
|
+
gt(fieldName: (keyof MyDocType & FieldName) | string, value: PrimitiveFieldType): this;
|
|
11
|
+
gte(fieldName: (keyof MyDocType & FieldName) | string, value: PrimitiveFieldType): this;
|
|
12
|
+
lt(fieldName: (keyof MyDocType & FieldName) | string, value: PrimitiveFieldType): this;
|
|
13
|
+
lte(fieldName: (keyof MyDocType & FieldName) | string, value: PrimitiveFieldType): this;
|
|
14
|
+
like(fieldName: (keyof MyDocType & FieldName) | string, pattern: string, caseSensitive?: boolean): this;
|
|
15
|
+
notLike(fieldName: (keyof MyDocType & FieldName) | string, pattern: string, caseSensitive?: boolean): this;
|
|
16
|
+
limit(limit: number): this;
|
|
17
|
+
sortBy(fieldName: keyof MyDocType & FieldName, asc?: boolean): this;
|
|
18
|
+
}
|
|
19
|
+
export declare class SimpleQueryBuilder<MyDocType extends DocumentData> implements BaseQueryBuilderInterface<MyDocType> {
|
|
20
|
+
protected readonly collectionName: CollectionName;
|
|
21
|
+
protected readonly integrationId: IntegrationId;
|
|
22
|
+
protected readonly query: Query<MyDocType>;
|
|
23
|
+
constructor(collectionName: CollectionName, integrationId: IntegrationId);
|
|
24
|
+
where(fieldName: (keyof MyDocType & FieldName) | string, operator: Operator | 'in' | 'not in', value: PrimitiveFieldType | Array<PrimitiveFieldType>): this;
|
|
25
|
+
eq(fieldName: (keyof MyDocType & FieldName) | string, value: PrimitiveFieldType): this;
|
|
26
|
+
neq(fieldName: (keyof MyDocType & FieldName) | string, value: PrimitiveFieldType): this;
|
|
27
|
+
in(fieldName: (keyof MyDocType & FieldName) | string, value: Array<PrimitiveFieldType>): this;
|
|
28
|
+
nin(fieldName: (keyof MyDocType & FieldName) | string, value: Array<PrimitiveFieldType>): this;
|
|
29
|
+
gt(fieldName: (keyof MyDocType & FieldName) | string, value: PrimitiveFieldType): this;
|
|
30
|
+
gte(fieldName: (keyof MyDocType & FieldName) | string, value: PrimitiveFieldType): this;
|
|
31
|
+
lt(fieldName: (keyof MyDocType & FieldName) | string, value: PrimitiveFieldType): this;
|
|
32
|
+
lte(fieldName: (keyof MyDocType & FieldName) | string, value: PrimitiveFieldType): this;
|
|
33
|
+
like(fieldName: (keyof MyDocType & FieldName) | string, pattern: string, caseSensitive?: boolean): this;
|
|
34
|
+
notLike(fieldName: (keyof MyDocType & FieldName) | string, pattern: string, caseSensitive?: boolean): this;
|
|
35
|
+
limit(limit: number): this;
|
|
36
|
+
sortBy(fieldName: keyof MyDocType & FieldName, asc?: boolean): this;
|
|
37
|
+
build(): Query;
|
|
38
|
+
private mergeConditions;
|
|
39
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SimpleQueryBuilder = void 0;
|
|
4
|
+
const _ = require("lodash");
|
|
5
|
+
const assert_1 = require("../utils/assert");
|
|
6
|
+
const validation_1 = require("../utils/validation");
|
|
7
|
+
class SimpleQueryBuilder {
|
|
8
|
+
constructor(collectionName, integrationId) {
|
|
9
|
+
this.collectionName = collectionName;
|
|
10
|
+
this.integrationId = integrationId;
|
|
11
|
+
this.query = {
|
|
12
|
+
integrationId,
|
|
13
|
+
collectionName,
|
|
14
|
+
conditions: [],
|
|
15
|
+
limit: -1,
|
|
16
|
+
sortOrder: [],
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
where(fieldName, operator, value) {
|
|
20
|
+
if (operator === 'in' || operator === 'not in') {
|
|
21
|
+
const values = value instanceof Array ? [...value] : [value];
|
|
22
|
+
for (const value of values) {
|
|
23
|
+
this.query.conditions.push({
|
|
24
|
+
fieldName,
|
|
25
|
+
operator: operator === 'in' ? '==' : '!=',
|
|
26
|
+
value: value,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
this.query.conditions.push({
|
|
32
|
+
fieldName,
|
|
33
|
+
operator,
|
|
34
|
+
value: value,
|
|
35
|
+
});
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
eq(fieldName, value) {
|
|
39
|
+
return this.where(fieldName, '==', value);
|
|
40
|
+
}
|
|
41
|
+
neq(fieldName, value) {
|
|
42
|
+
return this.where(fieldName, '!=', value);
|
|
43
|
+
}
|
|
44
|
+
in(fieldName, value) {
|
|
45
|
+
return this.where(fieldName, 'in', value);
|
|
46
|
+
}
|
|
47
|
+
nin(fieldName, value) {
|
|
48
|
+
return this.where(fieldName, 'not in', value);
|
|
49
|
+
}
|
|
50
|
+
gt(fieldName, value) {
|
|
51
|
+
return this.where(fieldName, '>', value);
|
|
52
|
+
}
|
|
53
|
+
gte(fieldName, value) {
|
|
54
|
+
return this.where(fieldName, '>=', value);
|
|
55
|
+
}
|
|
56
|
+
lt(fieldName, value) {
|
|
57
|
+
return this.where(fieldName, '<', value);
|
|
58
|
+
}
|
|
59
|
+
lte(fieldName, value) {
|
|
60
|
+
return this.where(fieldName, '<=', value);
|
|
61
|
+
}
|
|
62
|
+
like(fieldName, pattern, caseSensitive = true) {
|
|
63
|
+
return this.where(fieldName, caseSensitive ? 'like_cs' : 'like', pattern);
|
|
64
|
+
}
|
|
65
|
+
notLike(fieldName, pattern, caseSensitive = true) {
|
|
66
|
+
return this.where(fieldName, caseSensitive ? 'not like_cs' : 'not like', pattern);
|
|
67
|
+
}
|
|
68
|
+
limit(limit) {
|
|
69
|
+
(0, validation_1.validateQueryLimit)(limit);
|
|
70
|
+
(0, assert_1.assertTruthy)(this.query.limit === -1, 'The limit was already set.');
|
|
71
|
+
this.query.limit = limit;
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
sortBy(fieldName, asc = true) {
|
|
75
|
+
const fieldSort = { asc, fieldName };
|
|
76
|
+
(0, validation_1.validateFieldSort)(fieldSort);
|
|
77
|
+
(0, assert_1.assertTruthy)(!this.query.sortOrder.some((so) => so.fieldName === fieldName), `${fieldName} already in the sort list.`);
|
|
78
|
+
this.query.sortOrder.push(fieldSort);
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
build() {
|
|
82
|
+
const mergedConditions = this.mergeConditions();
|
|
83
|
+
return Object.assign(Object.assign({}, this.query), { conditions: mergedConditions });
|
|
84
|
+
}
|
|
85
|
+
mergeConditions() {
|
|
86
|
+
const result = [];
|
|
87
|
+
const groupByFieldName = _.groupBy(this.query.conditions || [], (condition) => condition.fieldName);
|
|
88
|
+
for (const fieldNameGroup of Object.values(groupByFieldName)) {
|
|
89
|
+
const groupByOperator = _.groupBy(fieldNameGroup, (operator) => operator.operator);
|
|
90
|
+
for (const [operator, operatorGroup] of Object.entries(groupByOperator)) {
|
|
91
|
+
if (operator === '==' || operator === '!=') {
|
|
92
|
+
result.push(...operatorGroup);
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const sorted = _.sortBy(operatorGroup, (o) => o.value);
|
|
96
|
+
if (operator === '>' || operator === '>=') {
|
|
97
|
+
result.push(sorted[sorted.length - 1]);
|
|
98
|
+
}
|
|
99
|
+
else if (operator === '<' || operator === '<=') {
|
|
100
|
+
result.push(sorted[0]);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
result.push(sorted[0]);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return result;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.SimpleQueryBuilder = SimpleQueryBuilder;
|
|
111
|
+
//# sourceMappingURL=simple-query-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-query-builder.js","sourceRoot":"","sources":["../../../../../common/src/query/simple-query-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { JSONSchemaType } from 'ajv';
|
|
2
|
+
import { Query, QueryRequest, QueryUnsubscribeRequest } from './query.types';
|
|
3
|
+
export declare const QuerySchema: JSONSchemaType<Query>;
|
|
4
|
+
export declare const QueryRequestSchema: JSONSchemaType<QueryRequest>;
|
|
5
|
+
export declare const QueryUnsubscribeRequestSchema: JSONSchemaType<QueryUnsubscribeRequest>;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QueryUnsubscribeRequestSchema = exports.QueryRequestSchema = exports.QuerySchema = void 0;
|
|
4
|
+
exports.QuerySchema = {
|
|
5
|
+
$id: 'querySchema',
|
|
6
|
+
type: 'object',
|
|
7
|
+
required: ['collectionName', 'integrationId'],
|
|
8
|
+
properties: {
|
|
9
|
+
collectionName: { type: 'string', nullable: false },
|
|
10
|
+
integrationId: { type: 'string', nullable: false },
|
|
11
|
+
conditions: {
|
|
12
|
+
type: 'array',
|
|
13
|
+
nullable: false,
|
|
14
|
+
items: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
nullable: false,
|
|
17
|
+
required: ['fieldName', 'operator', 'value'],
|
|
18
|
+
properties: {
|
|
19
|
+
fieldName: { type: 'string', nullable: false },
|
|
20
|
+
operator: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
nullable: false,
|
|
23
|
+
enum: ['==', '>=', '<=', '>', '<', '!=', 'like', 'not like', 'like_cs', 'not like_cs'],
|
|
24
|
+
},
|
|
25
|
+
value: {
|
|
26
|
+
$ref: 'querySchema#/definitions/conditionValueSchema',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
sortOrder: {
|
|
32
|
+
type: 'array',
|
|
33
|
+
nullable: false,
|
|
34
|
+
items: {
|
|
35
|
+
type: 'object',
|
|
36
|
+
required: ['fieldName', 'asc'],
|
|
37
|
+
properties: {
|
|
38
|
+
fieldName: { type: 'string' },
|
|
39
|
+
asc: { type: 'boolean' },
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
limit: { type: 'number', nullable: false },
|
|
44
|
+
},
|
|
45
|
+
definitions: {
|
|
46
|
+
conditionValueSchema: {
|
|
47
|
+
oneOf: [
|
|
48
|
+
{ type: 'null', nullable: true },
|
|
49
|
+
{ type: 'string', nullable: false },
|
|
50
|
+
{ type: 'number', nullable: false },
|
|
51
|
+
{ type: 'boolean', nullable: false },
|
|
52
|
+
{
|
|
53
|
+
type: 'array',
|
|
54
|
+
nullable: false,
|
|
55
|
+
items: {
|
|
56
|
+
$ref: 'querySchema#/definitions/conditionValueSchema',
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
type: 'object',
|
|
61
|
+
nullable: false,
|
|
62
|
+
patternProperties: {
|
|
63
|
+
'[0-9a-zA-Z\\$_\\-\\.]{1,64}': {
|
|
64
|
+
$ref: 'querySchema#/definitions/conditionValueSchema',
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
exports.QueryRequestSchema = {
|
|
73
|
+
type: 'object',
|
|
74
|
+
required: ['clientId', 'clientRequestId', 'query', 'subscribe'],
|
|
75
|
+
properties: {
|
|
76
|
+
clientId: { type: 'string', nullable: false },
|
|
77
|
+
clientRequestId: { type: 'string', nullable: false },
|
|
78
|
+
query: exports.QuerySchema,
|
|
79
|
+
subscribe: { type: 'boolean', nullable: false },
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
exports.QueryUnsubscribeRequestSchema = {
|
|
83
|
+
type: 'object',
|
|
84
|
+
required: ['clientId', 'clientRequestId'],
|
|
85
|
+
properties: {
|
|
86
|
+
clientId: { type: 'string', nullable: false },
|
|
87
|
+
clientRequestId: { type: 'string', nullable: false },
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=query.schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.schemas.js","sourceRoot":"","sources":["../../../../common/src/query.schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { TriggerId } from './application.types';
|
|
2
|
+
import { AppId, ClientId, ClientRequestId, IntegrationId } from './communication.types';
|
|
3
|
+
import { CollectionName, FieldName, PrimitiveFieldType, SquidDocument } from './document.types';
|
|
4
|
+
export type Conditions<Doc = any, F extends FieldName<Doc> = any> = Array<Condition<Doc, F>>;
|
|
5
|
+
export interface Condition<Doc = any, F extends FieldName<Doc> = any> {
|
|
6
|
+
fieldName: F;
|
|
7
|
+
operator: Operator;
|
|
8
|
+
value: Doc[F] | null;
|
|
9
|
+
}
|
|
10
|
+
export type Operator = '==' | '>=' | '<=' | '>' | '<' | '!=' | 'like' | 'not like' | 'like_cs' | 'not like_cs';
|
|
11
|
+
export type ContextConditions<Doc = any, F extends FieldName<Doc> = any> = Array<ContextCondition<Doc, F>>;
|
|
12
|
+
export type GenericValue<Doc = any, F extends FieldName<Doc> = any, O extends AllOperators = any> = O extends 'in' ? Array<Doc[F]> | null : O extends 'not in' ? Array<Doc[F]> | null : Doc[F] | null;
|
|
13
|
+
export type ContextCondition<Doc = any, F extends FieldName<Doc> = any> = InContextCondition<Doc, F> | NotInContextCondition<Doc, F> | OtherContextCondition<Doc, F>;
|
|
14
|
+
interface InContextCondition<Doc = any, F extends FieldName<Doc> = any> extends Omit<Condition<Doc, F>, 'operator' | 'value'> {
|
|
15
|
+
operator: 'in';
|
|
16
|
+
value: Array<Doc[F]>;
|
|
17
|
+
}
|
|
18
|
+
interface NotInContextCondition<Doc = any, F extends FieldName<Doc> = any> extends Omit<Condition<Doc, F>, 'operator' | 'value'> {
|
|
19
|
+
operator: 'not in';
|
|
20
|
+
value: Array<Doc[F]>;
|
|
21
|
+
}
|
|
22
|
+
interface OtherContextCondition<Doc = any, F extends FieldName<Doc> = any> extends Omit<Condition<Doc, F>, 'operator'> {
|
|
23
|
+
operator: Exclude<ContextOperator, 'in' | 'not in'>;
|
|
24
|
+
}
|
|
25
|
+
export interface GeneralCondition<Doc = any, F extends FieldName<Doc> = any> extends Omit<Condition<Doc, F>, 'operator' | 'value'> {
|
|
26
|
+
operator: AllOperators;
|
|
27
|
+
value: any;
|
|
28
|
+
}
|
|
29
|
+
export type GeneralConditions<Doc = any, F extends FieldName<Doc> = any> = Array<GeneralCondition<Doc, F>>;
|
|
30
|
+
export type ContextOperator = Exclude<Operator, '==' | '!='> | 'in' | 'not in';
|
|
31
|
+
export type AllOperators = Operator | 'in' | 'not in';
|
|
32
|
+
export interface FieldSort<Doc> {
|
|
33
|
+
fieldName: FieldName<Doc>;
|
|
34
|
+
asc: boolean;
|
|
35
|
+
}
|
|
36
|
+
interface RegularQueryKey {
|
|
37
|
+
queryType: 'query';
|
|
38
|
+
clientId: string;
|
|
39
|
+
clientRequestId: string;
|
|
40
|
+
}
|
|
41
|
+
interface TriggerKey {
|
|
42
|
+
queryType: 'trigger';
|
|
43
|
+
triggerId: TriggerId;
|
|
44
|
+
}
|
|
45
|
+
export type QueryKey = RegularQueryKey | TriggerKey;
|
|
46
|
+
export interface Query<Doc = any> {
|
|
47
|
+
collectionName: CollectionName;
|
|
48
|
+
integrationId: string;
|
|
49
|
+
conditions: Conditions<Doc>;
|
|
50
|
+
sortOrder: Array<FieldSort<Doc>>;
|
|
51
|
+
limit: number;
|
|
52
|
+
}
|
|
53
|
+
export type QuerySubscriptionId = `${ClientId}_${ClientRequestId}`;
|
|
54
|
+
export interface QueryRequest {
|
|
55
|
+
clientId: ClientId;
|
|
56
|
+
clientRequestId: ClientRequestId;
|
|
57
|
+
query: Query;
|
|
58
|
+
subscribe: boolean;
|
|
59
|
+
}
|
|
60
|
+
export interface QueryUnsubscribeRequest {
|
|
61
|
+
clientId: ClientId;
|
|
62
|
+
clientRequestId: ClientRequestId;
|
|
63
|
+
}
|
|
64
|
+
interface QueryMetadata {
|
|
65
|
+
condCount: number;
|
|
66
|
+
}
|
|
67
|
+
export type QueryMapping<T extends string> = {
|
|
68
|
+
unconditional: Array<T>;
|
|
69
|
+
conditional: Record<FieldName, Record<Operator, Record<PrimitiveFieldType & string, Array<T>>>>;
|
|
70
|
+
queriesMetadata: Record<T, QueryMetadata>;
|
|
71
|
+
};
|
|
72
|
+
export declare abstract class QueryMappingManager<T> {
|
|
73
|
+
abstract addQuery(appId: AppId, query: Query, key: T): Promise<void>;
|
|
74
|
+
abstract removeQuery(appId: AppId, key: T): Promise<Query | undefined>;
|
|
75
|
+
abstract findQueriesForDocument(appId: AppId, doc: SquidDocument, collectionName: CollectionName, integrationId: IntegrationId): Promise<Array<T> | undefined>;
|
|
76
|
+
abstract removeLocalDevAppData(appId: AppId): Promise<void>;
|
|
77
|
+
}
|
|
78
|
+
export declare abstract class SimpleQueryMappingManager<T extends string> extends QueryMappingManager<T> {
|
|
79
|
+
abstract getMapping(appId: AppId, collectionName: CollectionName, integrationId: IntegrationId): Promise<QueryMapping<T> | undefined> | (QueryMapping<T> | undefined);
|
|
80
|
+
findQueriesForDocument(appId: AppId, doc: SquidDocument, collectionName: CollectionName, integrationId: IntegrationId): Promise<Array<T>>;
|
|
81
|
+
}
|
|
82
|
+
export declare function findQueriesForDocumentSync<T extends string>(mapping: QueryMapping<T>, doc: SquidDocument): Array<T>;
|
|
83
|
+
export declare function compareOperator(conditionValue: PrimitiveFieldType, valueInDocument: PrimitiveFieldType, operator: Operator): boolean;
|
|
84
|
+
export declare function getQuerySubscriptionId(clientId: string, clientRequestId: string): QuerySubscriptionId;
|
|
85
|
+
export declare function parseQuerySubscriptionId(querySubscriptionId: QuerySubscriptionId): {
|
|
86
|
+
clientId: string;
|
|
87
|
+
clientRequestId: string;
|
|
88
|
+
};
|
|
89
|
+
export {};
|