@onchaindb/sdk 0.0.6
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/README.md +475 -0
- package/dist/batch.d.ts +42 -0
- package/dist/batch.d.ts.map +1 -0
- package/dist/batch.js +124 -0
- package/dist/batch.js.map +1 -0
- package/dist/client.d.ts +93 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +679 -0
- package/dist/client.js.map +1 -0
- package/dist/database.d.ts +194 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +211 -0
- package/dist/database.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/query-sdk/ConditionBuilder.d.ts +23 -0
- package/dist/query-sdk/ConditionBuilder.d.ts.map +1 -0
- package/dist/query-sdk/ConditionBuilder.js +76 -0
- package/dist/query-sdk/ConditionBuilder.js.map +1 -0
- package/dist/query-sdk/FieldConditionBuilder.d.ts +2 -0
- package/dist/query-sdk/FieldConditionBuilder.d.ts.map +1 -0
- package/dist/query-sdk/FieldConditionBuilder.js +6 -0
- package/dist/query-sdk/FieldConditionBuilder.js.map +1 -0
- package/dist/query-sdk/NestedBuilders.d.ts +44 -0
- package/dist/query-sdk/NestedBuilders.d.ts.map +1 -0
- package/dist/query-sdk/NestedBuilders.js +131 -0
- package/dist/query-sdk/NestedBuilders.js.map +1 -0
- package/dist/query-sdk/OnChainDB.d.ts +27 -0
- package/dist/query-sdk/OnChainDB.d.ts.map +1 -0
- package/dist/query-sdk/OnChainDB.js +191 -0
- package/dist/query-sdk/OnChainDB.js.map +1 -0
- package/dist/query-sdk/PrismaLikeClient.d.ts +41 -0
- package/dist/query-sdk/PrismaLikeClient.d.ts.map +1 -0
- package/dist/query-sdk/PrismaLikeClient.js +202 -0
- package/dist/query-sdk/PrismaLikeClient.js.map +1 -0
- package/dist/query-sdk/QueryBuilder.d.ts +155 -0
- package/dist/query-sdk/QueryBuilder.d.ts.map +1 -0
- package/dist/query-sdk/QueryBuilder.js +757 -0
- package/dist/query-sdk/QueryBuilder.js.map +1 -0
- package/dist/query-sdk/QueryResult.d.ts +53 -0
- package/dist/query-sdk/QueryResult.d.ts.map +1 -0
- package/dist/query-sdk/QueryResult.js +267 -0
- package/dist/query-sdk/QueryResult.js.map +1 -0
- package/dist/query-sdk/SelectionBuilder.d.ts +21 -0
- package/dist/query-sdk/SelectionBuilder.d.ts.map +1 -0
- package/dist/query-sdk/SelectionBuilder.js +67 -0
- package/dist/query-sdk/SelectionBuilder.js.map +1 -0
- package/dist/query-sdk/adapters/HttpClientAdapter.d.ts +28 -0
- package/dist/query-sdk/adapters/HttpClientAdapter.d.ts.map +1 -0
- package/dist/query-sdk/adapters/HttpClientAdapter.js +206 -0
- package/dist/query-sdk/adapters/HttpClientAdapter.js.map +1 -0
- package/dist/query-sdk/index.d.ts +38 -0
- package/dist/query-sdk/index.d.ts.map +1 -0
- package/dist/query-sdk/index.js +28 -0
- package/dist/query-sdk/index.js.map +1 -0
- package/dist/query-sdk/operators.d.ts +57 -0
- package/dist/query-sdk/operators.d.ts.map +1 -0
- package/dist/query-sdk/operators.js +275 -0
- package/dist/query-sdk/operators.js.map +1 -0
- package/dist/types.d.ts +263 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +46 -0
- package/dist/types.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConditionBuilder = void 0;
|
|
4
|
+
const operators_1 = require("./operators");
|
|
5
|
+
const NestedBuilders_1 = require("./NestedBuilders");
|
|
6
|
+
class ConditionBuilder {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.conditions = [];
|
|
9
|
+
}
|
|
10
|
+
static new() {
|
|
11
|
+
return new ConditionBuilder();
|
|
12
|
+
}
|
|
13
|
+
field(fieldName) {
|
|
14
|
+
return new operators_1.FieldConditionBuilder(fieldName);
|
|
15
|
+
}
|
|
16
|
+
nested(fieldName, builderFn) {
|
|
17
|
+
const nestedBuilder = new NestedBuilders_1.NestedConditionBuilder(fieldName);
|
|
18
|
+
return builderFn(nestedBuilder);
|
|
19
|
+
}
|
|
20
|
+
and() {
|
|
21
|
+
this.currentOperator = 'and';
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
or() {
|
|
25
|
+
this.currentOperator = 'or';
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
not() {
|
|
29
|
+
this.currentOperator = 'not';
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
andGroup(builderFn) {
|
|
33
|
+
const nestedBuilder = new ConditionBuilder();
|
|
34
|
+
const conditions = builderFn(nestedBuilder);
|
|
35
|
+
return operators_1.LogicalOperator.And(conditions);
|
|
36
|
+
}
|
|
37
|
+
orGroup(builderFn) {
|
|
38
|
+
const nestedBuilder = new ConditionBuilder();
|
|
39
|
+
const conditions = builderFn(nestedBuilder);
|
|
40
|
+
return operators_1.LogicalOperator.Or(conditions);
|
|
41
|
+
}
|
|
42
|
+
notGroup(builderFn) {
|
|
43
|
+
const nestedBuilder = new ConditionBuilder();
|
|
44
|
+
const conditions = builderFn(nestedBuilder);
|
|
45
|
+
return operators_1.LogicalOperator.Not(conditions);
|
|
46
|
+
}
|
|
47
|
+
addCondition(condition) {
|
|
48
|
+
this.conditions.push(condition);
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
51
|
+
build() {
|
|
52
|
+
return [...this.conditions];
|
|
53
|
+
}
|
|
54
|
+
buildSingle() {
|
|
55
|
+
if (this.conditions.length === 0) {
|
|
56
|
+
throw new Error('No conditions to build');
|
|
57
|
+
}
|
|
58
|
+
if (this.conditions.length === 1) {
|
|
59
|
+
return this.conditions[0];
|
|
60
|
+
}
|
|
61
|
+
return operators_1.LogicalOperator.And(this.conditions);
|
|
62
|
+
}
|
|
63
|
+
clear() {
|
|
64
|
+
this.conditions = [];
|
|
65
|
+
this.currentOperator = undefined;
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
isEmpty() {
|
|
69
|
+
return this.conditions.length === 0;
|
|
70
|
+
}
|
|
71
|
+
getConditionCount() {
|
|
72
|
+
return this.conditions.length;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.ConditionBuilder = ConditionBuilder;
|
|
76
|
+
//# sourceMappingURL=ConditionBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConditionBuilder.js","sourceRoot":"","sources":["../../src/query-sdk/ConditionBuilder.ts"],"names":[],"mappings":";;;AAAA,2CAAqE;AACrE,qDAA0D;AAG1D,MAAa,gBAAgB;IAI3B;QAHQ,eAAU,GAAsB,EAAE,CAAC;IAG5B,CAAC;IAEhB,MAAM,CAAC,GAAG;QACR,OAAO,IAAI,gBAAgB,EAAE,CAAC;IAChC,CAAC;IAGD,KAAK,CAAC,SAAiB;QACrB,OAAO,IAAI,iCAAqB,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAGD,MAAM,CAAC,SAAiB,EAAE,SAA+D;QACvF,MAAM,aAAa,GAAG,IAAI,uCAAsB,CAAC,SAAS,CAAC,CAAC;QAC5D,OAAO,SAAS,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC;IAGD,GAAG;QACD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,EAAE;QACA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,GAAG;QACD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,QAAQ,CAAC,SAA2D;QAClE,MAAM,aAAa,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;QAC5C,OAAO,2BAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAGD,OAAO,CAAC,SAA2D;QACjE,MAAM,aAAa,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;QAC5C,OAAO,2BAAe,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAGD,QAAQ,CAAC,SAA2D;QAClE,MAAM,aAAa,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;QAC5C,OAAO,2BAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAGD,YAAY,CAAC,SAA0B;QACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,KAAK;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAGD,WAAW;QACT,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,2BAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAGD,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,OAAO;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;IACtC,CAAC;IAGD,iBAAiB;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;CACF;AAlGD,4CAkGC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FieldConditionBuilder.d.ts","sourceRoot":"","sources":["../../src/query-sdk/FieldConditionBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FieldConditionBuilder = void 0;
|
|
4
|
+
var operators_1 = require("./operators");
|
|
5
|
+
Object.defineProperty(exports, "FieldConditionBuilder", { enumerable: true, get: function () { return operators_1.FieldConditionBuilder; } });
|
|
6
|
+
//# sourceMappingURL=FieldConditionBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FieldConditionBuilder.js","sourceRoot":"","sources":["../../src/query-sdk/FieldConditionBuilder.ts"],"names":[],"mappings":";;;AACA,yCAAoD;AAA3C,kHAAA,qBAAqB,OAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { LogicalOperator, Condition } from './operators';
|
|
2
|
+
export declare class NestedConditionBuilder {
|
|
3
|
+
private path;
|
|
4
|
+
constructor(rootField: string);
|
|
5
|
+
field(fieldName: string): NestedFieldConditionBuilder;
|
|
6
|
+
nested(fieldName: string, builderFn: (builder: NestedConditionBuilder) => LogicalOperator): LogicalOperator;
|
|
7
|
+
andGroup(builderFn: (builder: NestedConditionBuilder) => LogicalOperator[]): LogicalOperator;
|
|
8
|
+
orGroup(builderFn: (builder: NestedConditionBuilder) => LogicalOperator[]): LogicalOperator;
|
|
9
|
+
notGroup(builderFn: (builder: NestedConditionBuilder) => LogicalOperator[]): LogicalOperator;
|
|
10
|
+
}
|
|
11
|
+
export declare class NestedFieldConditionBuilder {
|
|
12
|
+
private fieldPath;
|
|
13
|
+
constructor(fieldPath: string[]);
|
|
14
|
+
private createCondition;
|
|
15
|
+
equals(value: any): Condition;
|
|
16
|
+
notEquals(value: any): Condition;
|
|
17
|
+
in(values: any[]): Condition;
|
|
18
|
+
notIn(values: any[]): Condition;
|
|
19
|
+
isNull(): Condition;
|
|
20
|
+
isNotNull(): Condition;
|
|
21
|
+
exists(): Condition;
|
|
22
|
+
notExists(): Condition;
|
|
23
|
+
startsWith(value: string): Condition;
|
|
24
|
+
endsWith(value: string): Condition;
|
|
25
|
+
contains(value: string): Condition;
|
|
26
|
+
regExpMatches(pattern: string): Condition;
|
|
27
|
+
includesCaseInsensitive(value: string): Condition;
|
|
28
|
+
startsWithCaseInsensitive(value: string): Condition;
|
|
29
|
+
endsWithCaseInsensitive(value: string): Condition;
|
|
30
|
+
greaterThan(value: any): Condition;
|
|
31
|
+
lessThan(value: any): Condition;
|
|
32
|
+
greaterThanOrEqual(value: any): Condition;
|
|
33
|
+
lessThanOrEqual(value: any): Condition;
|
|
34
|
+
isLocalIp(): Condition;
|
|
35
|
+
isExternalIp(): Condition;
|
|
36
|
+
b64(value: string): Condition;
|
|
37
|
+
inDataset(dataset: string): Condition;
|
|
38
|
+
inCountry(countryCode: string): Condition;
|
|
39
|
+
cidr(cidr: string): Condition;
|
|
40
|
+
between(min: any, max: any): Condition;
|
|
41
|
+
isTrue(): Condition;
|
|
42
|
+
isFalse(): Condition;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=NestedBuilders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NestedBuilders.d.ts","sourceRoot":"","sources":["../../src/query-sdk/NestedBuilders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAyB,SAAS,EAAE,MAAM,aAAa,CAAC;AAGhF,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,IAAI,CAAW;gBAEX,SAAS,EAAE,MAAM;IAK7B,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,2BAA2B;IAMrD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,eAAe,GAAG,eAAe;IAQ3G,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,eAAe,EAAE,GAAG,eAAe;IAK5F,OAAO,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,eAAe,EAAE,GAAG,eAAe;IAK3F,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,eAAe,EAAE,GAAG,eAAe;CAI/F;AAID,qBAAa,2BAA2B;IACpC,OAAO,CAAC,SAAS,CAAW;gBAEhB,SAAS,EAAE,MAAM,EAAE;IAI/B,OAAO,CAAC,eAAe;IAWvB,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,SAAS;IAI7B,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,SAAS;IAIhC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS;IAI5B,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS;IAI/B,MAAM,IAAI,SAAS;IAInB,SAAS,IAAI,SAAS;IAItB,MAAM,IAAI,SAAS;IAInB,SAAS,IAAI,SAAS;IAMtB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAIpC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAIlC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAIlC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAIzC,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAIjD,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAInD,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAMjD,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,SAAS;IAIlC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,SAAS;IAI/B,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,SAAS;IAIzC,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,SAAS;IAMtC,SAAS,IAAI,SAAS;IAItB,YAAY,IAAI,SAAS;IAMzB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAI7B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAIrC,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;IAIzC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAM7B,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,SAAS;IAOtC,MAAM,IAAI,SAAS;IAInB,OAAO,IAAI,SAAS;CAGvB"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NestedFieldConditionBuilder = exports.NestedConditionBuilder = void 0;
|
|
4
|
+
const operators_1 = require("./operators");
|
|
5
|
+
class NestedConditionBuilder {
|
|
6
|
+
constructor(rootField) {
|
|
7
|
+
this.path = [rootField];
|
|
8
|
+
}
|
|
9
|
+
field(fieldName) {
|
|
10
|
+
const newPath = [...this.path, fieldName];
|
|
11
|
+
return new NestedFieldConditionBuilder(newPath);
|
|
12
|
+
}
|
|
13
|
+
nested(fieldName, builderFn) {
|
|
14
|
+
const nestedPath = [...this.path, fieldName];
|
|
15
|
+
const nestedBuilder = new NestedConditionBuilder('');
|
|
16
|
+
nestedBuilder.path = nestedPath;
|
|
17
|
+
return builderFn(nestedBuilder);
|
|
18
|
+
}
|
|
19
|
+
andGroup(builderFn) {
|
|
20
|
+
const conditions = builderFn(this);
|
|
21
|
+
return operators_1.LogicalOperator.And(conditions);
|
|
22
|
+
}
|
|
23
|
+
orGroup(builderFn) {
|
|
24
|
+
const conditions = builderFn(this);
|
|
25
|
+
return operators_1.LogicalOperator.Or(conditions);
|
|
26
|
+
}
|
|
27
|
+
notGroup(builderFn) {
|
|
28
|
+
const conditions = builderFn(this);
|
|
29
|
+
return operators_1.LogicalOperator.Not(conditions);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.NestedConditionBuilder = NestedConditionBuilder;
|
|
33
|
+
class NestedFieldConditionBuilder {
|
|
34
|
+
constructor(fieldPath) {
|
|
35
|
+
this.fieldPath = fieldPath;
|
|
36
|
+
}
|
|
37
|
+
createCondition(operator, value) {
|
|
38
|
+
const path = this.fieldPath.join('.');
|
|
39
|
+
return {
|
|
40
|
+
field: path,
|
|
41
|
+
operator,
|
|
42
|
+
value
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
equals(value) {
|
|
46
|
+
return this.createCondition('is', value);
|
|
47
|
+
}
|
|
48
|
+
notEquals(value) {
|
|
49
|
+
return this.createCondition('isNot', value);
|
|
50
|
+
}
|
|
51
|
+
in(values) {
|
|
52
|
+
return this.createCondition('in', values);
|
|
53
|
+
}
|
|
54
|
+
notIn(values) {
|
|
55
|
+
return this.createCondition('notIn', values);
|
|
56
|
+
}
|
|
57
|
+
isNull() {
|
|
58
|
+
return this.createCondition('isNull', true);
|
|
59
|
+
}
|
|
60
|
+
isNotNull() {
|
|
61
|
+
return this.createCondition('isNull', false);
|
|
62
|
+
}
|
|
63
|
+
exists() {
|
|
64
|
+
return this.createCondition('exists', true);
|
|
65
|
+
}
|
|
66
|
+
notExists() {
|
|
67
|
+
return this.createCondition('exists', false);
|
|
68
|
+
}
|
|
69
|
+
startsWith(value) {
|
|
70
|
+
return this.createCondition('startsWith', value);
|
|
71
|
+
}
|
|
72
|
+
endsWith(value) {
|
|
73
|
+
return this.createCondition('endsWith', value);
|
|
74
|
+
}
|
|
75
|
+
contains(value) {
|
|
76
|
+
return this.createCondition('includes', value);
|
|
77
|
+
}
|
|
78
|
+
regExpMatches(pattern) {
|
|
79
|
+
return this.createCondition('regExpMatches', pattern);
|
|
80
|
+
}
|
|
81
|
+
includesCaseInsensitive(value) {
|
|
82
|
+
return this.createCondition('includesCaseInsensitive', value);
|
|
83
|
+
}
|
|
84
|
+
startsWithCaseInsensitive(value) {
|
|
85
|
+
return this.createCondition('startsWithCaseInsensitive', value);
|
|
86
|
+
}
|
|
87
|
+
endsWithCaseInsensitive(value) {
|
|
88
|
+
return this.createCondition('endsWithCaseInsensitive', value);
|
|
89
|
+
}
|
|
90
|
+
greaterThan(value) {
|
|
91
|
+
return this.createCondition('greaterThan', value);
|
|
92
|
+
}
|
|
93
|
+
lessThan(value) {
|
|
94
|
+
return this.createCondition('lessThan', value);
|
|
95
|
+
}
|
|
96
|
+
greaterThanOrEqual(value) {
|
|
97
|
+
return this.createCondition('greaterThanOrEqual', value);
|
|
98
|
+
}
|
|
99
|
+
lessThanOrEqual(value) {
|
|
100
|
+
return this.createCondition('lessThanOrEqual', value);
|
|
101
|
+
}
|
|
102
|
+
isLocalIp() {
|
|
103
|
+
return this.createCondition('isLocalIp', true);
|
|
104
|
+
}
|
|
105
|
+
isExternalIp() {
|
|
106
|
+
return this.createCondition('isExternalIp', true);
|
|
107
|
+
}
|
|
108
|
+
b64(value) {
|
|
109
|
+
return this.createCondition('b64', value);
|
|
110
|
+
}
|
|
111
|
+
inDataset(dataset) {
|
|
112
|
+
return this.createCondition('inDataset', dataset);
|
|
113
|
+
}
|
|
114
|
+
inCountry(countryCode) {
|
|
115
|
+
return this.createCondition('inCountry', countryCode);
|
|
116
|
+
}
|
|
117
|
+
cidr(cidr) {
|
|
118
|
+
return this.createCondition('CIDR', cidr);
|
|
119
|
+
}
|
|
120
|
+
between(min, max) {
|
|
121
|
+
return this.createCondition('betweenOp', { from: min, to: max });
|
|
122
|
+
}
|
|
123
|
+
isTrue() {
|
|
124
|
+
return this.equals(true);
|
|
125
|
+
}
|
|
126
|
+
isFalse() {
|
|
127
|
+
return this.equals(false);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
exports.NestedFieldConditionBuilder = NestedFieldConditionBuilder;
|
|
131
|
+
//# sourceMappingURL=NestedBuilders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NestedBuilders.js","sourceRoot":"","sources":["../../src/query-sdk/NestedBuilders.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { QueryBuilder } from './QueryBuilder';
|
|
2
|
+
import { SelectionBuilder } from './SelectionBuilder';
|
|
3
|
+
import { FieldMap, HttpClient, QueryResponse } from "./index";
|
|
4
|
+
export declare class OnChainDB {
|
|
5
|
+
private static httpClient?;
|
|
6
|
+
private static serverUrl?;
|
|
7
|
+
private static apiKey?;
|
|
8
|
+
static configure(httpClient: HttpClient, serverUrl: string, apiKey?: string): void;
|
|
9
|
+
static getHttpClient(): HttpClient | undefined;
|
|
10
|
+
static getServerUrl(): string | undefined;
|
|
11
|
+
static query(): QueryBuilder;
|
|
12
|
+
static queryWith(httpClient: HttpClient, serverUrl: string): QueryBuilder;
|
|
13
|
+
static select(builderFn: (builder: SelectionBuilder) => SelectionBuilder): QueryBuilder;
|
|
14
|
+
static rawQuery(queryJson: string, httpClient?: HttpClient, serverUrl?: string, fieldMap?: FieldMap): Promise<QueryResponse>;
|
|
15
|
+
static queryFromJson(queryObject: any, httpClient?: HttpClient, serverUrl?: string): Promise<QueryResponse>;
|
|
16
|
+
static healthCheck(httpClient?: HttpClient, serverUrl?: string): Promise<boolean>;
|
|
17
|
+
static serverInfo(httpClient?: HttpClient, serverUrl?: string): Promise<any>;
|
|
18
|
+
static reset(): void;
|
|
19
|
+
static isConfigured(): boolean;
|
|
20
|
+
static createIndex(appId: string, collection: string, fieldName: string, options?: {
|
|
21
|
+
storeValues?: boolean;
|
|
22
|
+
}): Promise<any>;
|
|
23
|
+
static createUniqueIndex(appId: string, collection: string, fieldName: string, options?: {
|
|
24
|
+
storeValues?: boolean;
|
|
25
|
+
}): Promise<any>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=OnChainDB.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OnChainDB.d.ts","sourceRoot":"","sources":["../../src/query-sdk/OnChainDB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAgB,aAAa,EAAa,MAAM,SAAS,CAAC;AAGtF,qBAAa,SAAS;IAClB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAa;IACvC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAS;IAClC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAS;IAG/B,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAOlF,MAAM,CAAC,aAAa,IAAI,UAAU,GAAG,SAAS;IAK9C,MAAM,CAAC,YAAY,IAAI,MAAM,GAAG,SAAS;IAKzC,MAAM,CAAC,KAAK,IAAI,YAAY;IAK5B,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY;IAKzE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,gBAAgB,GAAG,YAAY;WAO1E,QAAQ,CACjB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,UAAU,EACvB,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,QAAQ,GACpB,OAAO,CAAC,aAAa,CAAC;WAmCZ,aAAa,CACtB,WAAW,EAAE,GAAG,EAChB,UAAU,CAAC,EAAE,UAAU,EACvB,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,CAAC;WA2BZ,WAAW,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;WAiB1E,UAAU,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAwBlF,MAAM,CAAC,KAAK,IAAI,IAAI;IAMpB,MAAM,CAAC,YAAY,IAAI,OAAO;WAajB,WAAW,CACpB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QACN,WAAW,CAAC,EAAE,OAAO,CAAC;KACzB,GACF,OAAO,CAAC,GAAG,CAAC;WAwDF,iBAAiB,CAC1B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QACN,WAAW,CAAC,EAAE,OAAO,CAAC;KACzB,GACF,OAAO,CAAC,GAAG,CAAC;CA+ClB"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnChainDB = void 0;
|
|
4
|
+
const QueryBuilder_1 = require("./QueryBuilder");
|
|
5
|
+
class OnChainDB {
|
|
6
|
+
static configure(httpClient, serverUrl, apiKey) {
|
|
7
|
+
this.httpClient = httpClient;
|
|
8
|
+
this.serverUrl = serverUrl;
|
|
9
|
+
this.apiKey = apiKey;
|
|
10
|
+
}
|
|
11
|
+
static getHttpClient() {
|
|
12
|
+
return this.httpClient;
|
|
13
|
+
}
|
|
14
|
+
static getServerUrl() {
|
|
15
|
+
return this.serverUrl;
|
|
16
|
+
}
|
|
17
|
+
static query() {
|
|
18
|
+
return new QueryBuilder_1.QueryBuilder(this.httpClient, this.serverUrl);
|
|
19
|
+
}
|
|
20
|
+
static queryWith(httpClient, serverUrl) {
|
|
21
|
+
return new QueryBuilder_1.QueryBuilder(httpClient, serverUrl);
|
|
22
|
+
}
|
|
23
|
+
static select(builderFn) {
|
|
24
|
+
const query = new QueryBuilder_1.QueryBuilder(this.httpClient, this.serverUrl);
|
|
25
|
+
query.select(builderFn);
|
|
26
|
+
return query;
|
|
27
|
+
}
|
|
28
|
+
static async rawQuery(queryJson, httpClient, serverUrl, fieldMap) {
|
|
29
|
+
const client = httpClient || this.httpClient;
|
|
30
|
+
const url = serverUrl || this.serverUrl;
|
|
31
|
+
if (!client) {
|
|
32
|
+
throw new Error('HTTP client is required for raw query execution');
|
|
33
|
+
}
|
|
34
|
+
if (!url) {
|
|
35
|
+
throw new Error('Server URL is required for raw query execution');
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
const queryValue = JSON.parse(queryJson);
|
|
39
|
+
const request = {
|
|
40
|
+
...queryValue,
|
|
41
|
+
...(fieldMap && { fieldMap })
|
|
42
|
+
};
|
|
43
|
+
const response = await client.post(`${url}/list`, request, { 'Content-Type': 'application/json' });
|
|
44
|
+
return response;
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (error instanceof SyntaxError) {
|
|
48
|
+
throw new Error(`Invalid query JSON: ${error.message}`);
|
|
49
|
+
}
|
|
50
|
+
throw new Error(`Raw query execution failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
static async queryFromJson(queryObject, httpClient, serverUrl) {
|
|
54
|
+
const client = httpClient || this.httpClient;
|
|
55
|
+
const url = serverUrl || this.serverUrl;
|
|
56
|
+
if (!client) {
|
|
57
|
+
throw new Error('HTTP client is required for JSON query execution');
|
|
58
|
+
}
|
|
59
|
+
if (!url) {
|
|
60
|
+
throw new Error('Server URL is required for JSON query execution');
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
const request = queryObject;
|
|
64
|
+
const response = await client.post(`${url}/list`, request, { 'Content-Type': 'application/json' });
|
|
65
|
+
return response;
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
throw new Error(`JSON query execution failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
static async healthCheck(httpClient, serverUrl) {
|
|
72
|
+
const client = httpClient || this.httpClient;
|
|
73
|
+
const url = serverUrl || this.serverUrl;
|
|
74
|
+
if (!client || !url) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
await client.post(`${url}/health`, {}, { 'Content-Type': 'application/json' });
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
static async serverInfo(httpClient, serverUrl) {
|
|
86
|
+
const client = httpClient || this.httpClient;
|
|
87
|
+
const url = serverUrl || this.serverUrl;
|
|
88
|
+
if (!client) {
|
|
89
|
+
throw new Error('HTTP client is required for server info');
|
|
90
|
+
}
|
|
91
|
+
if (!url) {
|
|
92
|
+
throw new Error('Server URL is required for server info');
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
const response = await client.post(`${url}/info`, {}, { 'Content-Type': 'application/json' });
|
|
96
|
+
return response;
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
throw new Error(`Failed to get server info: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
static reset() {
|
|
103
|
+
this.httpClient = undefined;
|
|
104
|
+
this.serverUrl = undefined;
|
|
105
|
+
}
|
|
106
|
+
static isConfigured() {
|
|
107
|
+
return this.httpClient !== undefined && this.serverUrl !== undefined;
|
|
108
|
+
}
|
|
109
|
+
static async createIndex(appId, collection, fieldName, options) {
|
|
110
|
+
const client = this.httpClient;
|
|
111
|
+
const url = this.serverUrl;
|
|
112
|
+
if (!client) {
|
|
113
|
+
throw new Error('HTTP client is required for index creation');
|
|
114
|
+
}
|
|
115
|
+
if (!url) {
|
|
116
|
+
throw new Error('Server URL is required for index creation');
|
|
117
|
+
}
|
|
118
|
+
const request = {
|
|
119
|
+
app_id: appId,
|
|
120
|
+
collection_name: collection,
|
|
121
|
+
field_name: fieldName,
|
|
122
|
+
index_config: {
|
|
123
|
+
index_type: "Secondary",
|
|
124
|
+
store_values: options?.storeValues !== undefined ? options?.storeValues : true,
|
|
125
|
+
compression: "None",
|
|
126
|
+
cache_priority: "Medium",
|
|
127
|
+
relationship_hints: [],
|
|
128
|
+
performance_tuning: {
|
|
129
|
+
memory_limit_mb: null,
|
|
130
|
+
cache_size_entries: null,
|
|
131
|
+
prefetch_depth: null,
|
|
132
|
+
update_batch_size: null,
|
|
133
|
+
background_optimization: true
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
138
|
+
if (this.apiKey) {
|
|
139
|
+
headers['X-API-Key'] = this.apiKey;
|
|
140
|
+
}
|
|
141
|
+
try {
|
|
142
|
+
const response = await client.post(`${url}/api/apps/${appId}/collections/${collection}/indexes`, request, headers);
|
|
143
|
+
return response;
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
throw new Error(`Index creation failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
static async createUniqueIndex(appId, collection, fieldName, options) {
|
|
150
|
+
const client = this.httpClient;
|
|
151
|
+
const url = this.serverUrl;
|
|
152
|
+
if (!client) {
|
|
153
|
+
throw new Error('HTTP client is required for index creation');
|
|
154
|
+
}
|
|
155
|
+
if (!url) {
|
|
156
|
+
throw new Error('Server URL is required for index creation');
|
|
157
|
+
}
|
|
158
|
+
const request = {
|
|
159
|
+
app_id: appId,
|
|
160
|
+
collection_name: collection,
|
|
161
|
+
field_name: fieldName,
|
|
162
|
+
index_config: {
|
|
163
|
+
index_type: "Primary",
|
|
164
|
+
store_values: options?.storeValues !== undefined ? options?.storeValues : true,
|
|
165
|
+
compression: "None",
|
|
166
|
+
cache_priority: "Medium",
|
|
167
|
+
relationship_hints: [],
|
|
168
|
+
performance_tuning: {
|
|
169
|
+
memory_limit_mb: null,
|
|
170
|
+
cache_size_entries: null,
|
|
171
|
+
prefetch_depth: null,
|
|
172
|
+
update_batch_size: null,
|
|
173
|
+
background_optimization: true
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
178
|
+
if (this.apiKey) {
|
|
179
|
+
headers['X-API-Key'] = this.apiKey;
|
|
180
|
+
}
|
|
181
|
+
try {
|
|
182
|
+
const response = await client.post(`${url}/api/apps/${appId}/collections/${collection}/indexes`, request, headers);
|
|
183
|
+
return response;
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
throw new Error(`Index creation failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
exports.OnChainDB = OnChainDB;
|
|
191
|
+
//# sourceMappingURL=OnChainDB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OnChainDB.js","sourceRoot":"","sources":["../../src/query-sdk/OnChainDB.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { HttpClient } from './index';
|
|
2
|
+
export interface PaymentProof {
|
|
3
|
+
payment_tx_hash: string;
|
|
4
|
+
user_address: string;
|
|
5
|
+
broker_address: string;
|
|
6
|
+
amount_utia: number;
|
|
7
|
+
}
|
|
8
|
+
export interface QueryOptions {
|
|
9
|
+
limit?: number;
|
|
10
|
+
offset?: number;
|
|
11
|
+
sort?: {
|
|
12
|
+
field: string;
|
|
13
|
+
order: 'asc' | 'desc';
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export interface PrismaLikeClientConfig {
|
|
17
|
+
httpClient: HttpClient;
|
|
18
|
+
serverUrl: string;
|
|
19
|
+
apiKey?: string;
|
|
20
|
+
appId: string;
|
|
21
|
+
}
|
|
22
|
+
export declare class PrismaLikeClient {
|
|
23
|
+
private httpClient;
|
|
24
|
+
private serverUrl;
|
|
25
|
+
private apiKey?;
|
|
26
|
+
private appId;
|
|
27
|
+
constructor(config: PrismaLikeClientConfig);
|
|
28
|
+
findUnique<T>(collection: string, where: Record<string, any>): Promise<T | null>;
|
|
29
|
+
findMany<T>(collection: string, where?: Record<string, any>, options?: QueryOptions): Promise<T[]>;
|
|
30
|
+
create<T extends Record<string, any>>(collection: string, data: Omit<T, 'id' | 'createdAt' | 'updatedAt'>, paymentProof: PaymentProof, idGenerator?: () => string): Promise<T>;
|
|
31
|
+
update<T extends Record<string, any>>(collection: string, where: Record<string, any>, data: Partial<T>, paymentProof: PaymentProof): Promise<T | null>;
|
|
32
|
+
upsert<T extends Record<string, any>>(collection: string, where: Record<string, any>, create: Omit<T, 'id' | 'createdAt' | 'updatedAt'>, update: Partial<T>, paymentProof: PaymentProof, idGenerator?: () => string): Promise<T>;
|
|
33
|
+
delete<T extends Record<string, any>>(collection: string, where: Record<string, any>, paymentProof: PaymentProof): Promise<boolean>;
|
|
34
|
+
count(collection: string, where?: Record<string, any>): Promise<number>;
|
|
35
|
+
getWriteQuote(collection: string, data: any[]): Promise<any>;
|
|
36
|
+
generateId(): string;
|
|
37
|
+
now(): string;
|
|
38
|
+
getConfig(): PrismaLikeClientConfig;
|
|
39
|
+
}
|
|
40
|
+
export declare function createPrismaLikeClient(config: PrismaLikeClientConfig): PrismaLikeClient;
|
|
41
|
+
//# sourceMappingURL=PrismaLikeClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrismaLikeClient.d.ts","sourceRoot":"","sources":["../../src/query-sdk/PrismaLikeClient.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKrC,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAKD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;KACvB,CAAC;CACH;AAKD,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAiBD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,EAAE,sBAAsB;IAUpC,UAAU,CAAC,CAAC,EAChB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACzB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IA4Bd,QAAQ,CAAC,CAAC,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAC/B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,EAAE,CAAC;IA+CT,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,EAC/C,YAAY,EAAE,YAAY,EAC1B,WAAW,CAAC,EAAE,MAAM,MAAM,GACzB,OAAO,CAAC,CAAC,CAAC;IAwCP,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IA+Cd,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,EACjD,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,YAAY,EAAE,YAAY,EAC1B,WAAW,CAAC,EAAE,MAAM,MAAM,GACzB,OAAO,CAAC,CAAC,CAAC;IAaP,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,OAAO,CAAC;IA8Cb,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ3E,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAiClE,UAAU,IAAI,MAAM;IAapB,GAAG,IAAI,MAAM;IAOb,SAAS,IAAI,sBAAsB;CAQpC;AAKD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,CAEvF"}
|