@cubicweb/client 3.0.0-alpha.10 → 3.0.0-alpha.12

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 (102) hide show
  1. package/README.md +11 -20
  2. package/lib/api/Api.d.ts +30 -22
  3. package/lib/api/Api.d.ts.map +1 -1
  4. package/lib/api/Api.js +148 -154
  5. package/lib/api/Api.js.map +1 -1
  6. package/lib/api/Client.d.ts +21 -9
  7. package/lib/api/Client.d.ts.map +1 -1
  8. package/lib/api/Client.js +40 -57
  9. package/lib/api/Client.js.map +1 -1
  10. package/lib/api/ResultSet.d.ts +25 -0
  11. package/lib/api/ResultSet.d.ts.map +1 -0
  12. package/lib/api/ResultSet.js +12 -0
  13. package/lib/api/ResultSet.js.map +1 -0
  14. package/lib/api/binary/RQLBinary.d.ts +6 -0
  15. package/lib/api/binary/RQLBinary.d.ts.map +1 -0
  16. package/lib/api/binary/RQLBinary.js +10 -0
  17. package/lib/api/binary/RQLBinary.js.map +1 -0
  18. package/lib/api/query/RQLQuery.d.ts +40 -0
  19. package/lib/api/query/RQLQuery.d.ts.map +1 -0
  20. package/lib/api/query/RQLQuery.js +48 -0
  21. package/lib/api/query/RQLQuery.js.map +1 -0
  22. package/lib/api/query/references.d.ts +41 -0
  23. package/lib/api/query/references.d.ts.map +1 -0
  24. package/lib/api/query/references.js +50 -0
  25. package/lib/api/query/references.js.map +1 -0
  26. package/lib/api/transaction/Transaction.d.ts +25 -0
  27. package/lib/api/transaction/Transaction.d.ts.map +1 -0
  28. package/lib/api/transaction/Transaction.js +28 -0
  29. package/lib/api/transaction/Transaction.js.map +1 -0
  30. package/lib/api/transaction/TransactionResult.d.ts +32 -0
  31. package/lib/api/transaction/TransactionResult.d.ts.map +1 -0
  32. package/lib/api/transaction/TransactionResult.js +41 -0
  33. package/lib/api/transaction/TransactionResult.js.map +1 -0
  34. package/lib/{Errors.d.ts → errors.d.ts} +7 -4
  35. package/lib/errors.d.ts.map +1 -0
  36. package/lib/errors.js +19 -0
  37. package/lib/errors.js.map +1 -0
  38. package/lib/index.d.ts +18 -13
  39. package/lib/index.d.ts.map +1 -1
  40. package/lib/index.js +17 -34
  41. package/lib/index.js.map +1 -1
  42. package/lib/schema/classes/EntitySchema.d.ts +5 -5
  43. package/lib/schema/classes/EntitySchema.d.ts.map +1 -1
  44. package/lib/schema/classes/EntitySchema.js +3 -5
  45. package/lib/schema/classes/EntitySchema.js.map +1 -1
  46. package/lib/schema/classes/RelationDefinitionSchema.d.ts +6 -6
  47. package/lib/schema/classes/RelationDefinitionSchema.d.ts.map +1 -1
  48. package/lib/schema/classes/RelationDefinitionSchema.js +8 -10
  49. package/lib/schema/classes/RelationDefinitionSchema.js.map +1 -1
  50. package/lib/schema/classes/Schema.d.ts +7 -7
  51. package/lib/schema/classes/Schema.d.ts.map +1 -1
  52. package/lib/schema/classes/Schema.js +8 -11
  53. package/lib/schema/classes/Schema.js.map +1 -1
  54. package/lib/schema/classes/Utils.d.ts +10 -10
  55. package/lib/schema/classes/Utils.d.ts.map +1 -1
  56. package/lib/schema/classes/Utils.js +19 -35
  57. package/lib/schema/classes/Utils.js.map +1 -1
  58. package/lib/schema/raw/Constraints.d.ts +27 -0
  59. package/lib/schema/raw/Constraints.d.ts.map +1 -1
  60. package/lib/schema/raw/Constraints.js +1 -2
  61. package/lib/schema/raw/Entities.js +1 -2
  62. package/lib/schema/raw/RelationDefinitions.d.ts +3 -3
  63. package/lib/schema/raw/RelationDefinitions.d.ts.map +1 -1
  64. package/lib/schema/raw/RelationDefinitions.js +1 -2
  65. package/lib/schema/raw/Schema.d.ts +2 -2
  66. package/lib/schema/raw/Schema.d.ts.map +1 -1
  67. package/lib/schema/raw/Schema.js +1 -2
  68. package/lib/schema/raw/Utils.d.ts +1 -1
  69. package/lib/schema/raw/Utils.d.ts.map +1 -1
  70. package/lib/schema/raw/Utils.js +1 -2
  71. package/lib/utils.d.ts +39 -0
  72. package/lib/utils.d.ts.map +1 -0
  73. package/lib/utils.js +58 -0
  74. package/lib/utils.js.map +1 -0
  75. package/package.json +12 -5
  76. package/src/api/Api.ts +49 -42
  77. package/src/api/Client.ts +24 -15
  78. package/src/api/ResultSet.ts +29 -0
  79. package/src/api/binary/RQLBinary.ts +9 -0
  80. package/src/api/query/RQLQuery.ts +51 -0
  81. package/src/api/query/references.ts +43 -0
  82. package/src/api/transaction/Transaction.ts +31 -0
  83. package/src/api/transaction/TransactionResult.ts +46 -0
  84. package/src/{Errors.ts → errors.ts} +6 -7
  85. package/src/index.ts +21 -17
  86. package/src/schema/classes/EntitySchema.ts +8 -5
  87. package/src/schema/classes/RelationDefinitionSchema.ts +7 -7
  88. package/src/schema/classes/Schema.ts +10 -7
  89. package/src/schema/classes/Utils.ts +4 -4
  90. package/src/schema/raw/Constraints.ts +28 -0
  91. package/src/schema/raw/RelationDefinitions.ts +3 -3
  92. package/src/schema/raw/Schema.ts +2 -2
  93. package/src/schema/raw/Utils.ts +1 -1
  94. package/src/utils.ts +91 -0
  95. package/lib/Errors.d.ts.map +0 -1
  96. package/lib/Errors.js +0 -25
  97. package/lib/Errors.js.map +0 -1
  98. package/lib/api/Transaction.d.ts +0 -46
  99. package/lib/api/Transaction.d.ts.map +0 -1
  100. package/lib/api/Transaction.js +0 -75
  101. package/lib/api/Transaction.js.map +0 -1
  102. package/src/api/Transaction.ts +0 -94
@@ -1,6 +1,8 @@
1
- import { Schema } from "../schema/classes/Schema";
2
- import { RQLParams, ResultSet, CurrentUser } from "./Api";
3
- import { BinariesParam, Transaction, TransactionResult } from "./Transaction";
1
+ import { Schema } from "../schema/classes/Schema.js";
2
+ import { RQLQueryParams, CurrentUser } from "./Api.js";
3
+ import { ResultSet } from "./ResultSet.js";
4
+ import { Transaction } from "./transaction/Transaction.js";
5
+ import { TransactionResult } from "./transaction/TransactionResult.js";
4
6
  /**
5
7
  * Class used to communicate with a CubicWeb instance's API.
6
8
  *
@@ -20,22 +22,25 @@ export default class Client {
20
22
  /**
21
23
  * Executes the given query and waits for the response.
22
24
  *
23
- * @param query The RQL query to send
25
+ * If binaries are given, the request is automatically
26
+ * sent using `multipart/form-data` to allow uploading binaries.
27
+ *
28
+ * @param rql The RQL query to send
24
29
  * @param params The additional parameters for the request
25
30
  * @returns A promise with the request's result set
26
31
  */
27
- execute(query: string, params?: RQLParams, binaries?: BinariesParam): Promise<ResultSet>;
32
+ execute(rql: string, params?: RQLQueryParams): Promise<ResultSet>;
28
33
  /**
29
34
  * Retrieves the CubicWeb instance's JSON schema.
30
35
  *
31
36
  * @returns The CubicWeb instance's JSON schema.
32
37
  */
33
- schema(): Promise<Schema<import("..").EntityRawSchemaArray, import("..").RelationDefinitionRawSchemaArray<import("..").EntityRawSchemaArray>>>;
38
+ schema(): Promise<Schema<import("../index.js").EntityRawSchemaArray, import("../index.js").RelationDefinitionRawSchemaArray<import("../index.js").EntityRawSchemaArray>>>;
34
39
  /**
35
40
  * Tries to log in the user on the configured CubicWeb instance with the given credentials.
36
41
  *
37
42
  * @param login The user login
38
- * @param password THe user password
43
+ * @param password The user password
39
44
  * @returns A promise returning true if the login was successful, false otherwise
40
45
  */
41
46
  login(login: string, password: string): Promise<boolean>;
@@ -52,14 +57,21 @@ export default class Client {
52
57
  */
53
58
  currentUser(): Promise<CurrentUser>;
54
59
  /**
60
+ * Executes the given transaction.
61
+ *
62
+ * If the {@link Transaction} object contains binaries, the request is automatically
63
+ * sent using `multipart/form-data` to allow uploading binaries.
64
+ *
55
65
  * @param transaction Transaction to execute
56
- * @returns A promise fulfilled when the transaction is completed
66
+ * @returns A promise returning the transaction result on success
57
67
  */
58
68
  executeTransaction(transaction: Transaction): Promise<TransactionResult>;
59
69
  /**
60
70
  * Get the binary for the given entity attribute
61
71
  *
62
- * @returns A promise resolving to the binary
72
+ * @param eid Entity eid to fetch the binary from
73
+ * @param attribute Attribute on the entity in which the binary is stored
74
+ * @returns A promise resolving to the binary as a Blob
63
75
  */
64
76
  getBinary(eid: number, attribute: string): Promise<Blob>;
65
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/api/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAY,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE9E;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,GAAG,CAAM;IAEjB;;;;;;OAMG;gBACS,MAAM,EAAE,MAAM;IAI1B,IAAI,MAAM,WAET;IAED;;;;;;OAMG;IACG,OAAO,CACX,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,SAAc,EACtB,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,SAAS,CAAC;IAQrB;;;;OAIG;IACG,MAAM;IAKZ;;;;;;OAMG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAI3C;;;;OAIG;IACG,MAAM;IAIZ;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAIzC;;;OAGG;IACG,kBAAkB,CACtB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,iBAAiB,CAAC;IAI7B;;;;OAIG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAG/C"}
1
+ {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/api/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,GAAG,CAAM;IAEjB;;;;;;OAMG;gBACS,MAAM,EAAE,MAAM;IAI1B,IAAI,MAAM,WAET;IAED;;;;;;;;;OASG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,SAAS,CAAC;IAQ3E;;;;OAIG;IACG,MAAM;IAKZ;;;;;;OAMG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAI3C;;;;OAIG;IACG,MAAM;IAIZ;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAIzC;;;;;;;;OAQG;IACG,kBAAkB,CACtB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,iBAAiB,CAAC;IAI7B;;;;;;OAMG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAG/C"}
package/lib/api/Client.js CHANGED
@@ -1,26 +1,14 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const Schema_1 = require("../schema/classes/Schema");
16
- const Api_1 = __importDefault(require("./Api"));
17
- const Transaction_1 = require("./Transaction");
1
+ import { Schema } from "../schema/classes/Schema.js";
2
+ import Api from "./Api.js";
3
+ import { RQLQuery } from "./query/RQLQuery.js";
4
+ import { Transaction } from "./transaction/Transaction.js";
18
5
  /**
19
6
  * Class used to communicate with a CubicWeb instance's API.
20
7
  *
21
8
  * @category Api
22
9
  */
23
- class Client {
10
+ export default class Client {
11
+ api;
24
12
  /**
25
13
  * Class used to communicate with a CubicWeb instance's API.
26
14
  *
@@ -29,7 +17,7 @@ class Client {
29
17
  * use https://example.com/api as `apiUrl`.
30
18
  */
31
19
  constructor(apiUrl) {
32
- this.api = new Api_1.default(apiUrl);
20
+ this.api = new Api(apiUrl);
33
21
  }
34
22
  get apiUrl() {
35
23
  return this.api.apiUrl;
@@ -37,81 +25,76 @@ class Client {
37
25
  /**
38
26
  * Executes the given query and waits for the response.
39
27
  *
40
- * @param query The RQL query to send
28
+ * If binaries are given, the request is automatically
29
+ * sent using `multipart/form-data` to allow uploading binaries.
30
+ *
31
+ * @param rql The RQL query to send
41
32
  * @param params The additional parameters for the request
42
33
  * @returns A promise with the request's result set
43
34
  */
44
- execute(query, params = {}, binaries) {
45
- return __awaiter(this, void 0, void 0, function* () {
46
- const transaction = new Transaction_1.Transaction();
47
- const transactionQuery = transaction.push(query, params);
48
- transaction.setBinaries(binaries);
49
- const result = yield this.executeTransaction(transaction);
50
- return result.resolveQuery(transactionQuery.ref());
51
- });
35
+ async execute(rql, params = {}) {
36
+ const transaction = new Transaction();
37
+ const query = new RQLQuery(rql, params);
38
+ transaction.push(query);
39
+ const result = await this.executeTransaction(transaction);
40
+ return result.getResultSet(query);
52
41
  }
53
42
  /**
54
43
  * Retrieves the CubicWeb instance's JSON schema.
55
44
  *
56
45
  * @returns The CubicWeb instance's JSON schema.
57
46
  */
58
- schema() {
59
- return __awaiter(this, void 0, void 0, function* () {
60
- const schema = yield this.api.schema();
61
- return new Schema_1.Schema(schema);
62
- });
47
+ async schema() {
48
+ const schema = await this.api.schema();
49
+ return new Schema(schema);
63
50
  }
64
51
  /**
65
52
  * Tries to log in the user on the configured CubicWeb instance with the given credentials.
66
53
  *
67
54
  * @param login The user login
68
- * @param password THe user password
55
+ * @param password The user password
69
56
  * @returns A promise returning true if the login was successful, false otherwise
70
57
  */
71
- login(login, password) {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- return yield this.api.login(login, password);
74
- });
58
+ async login(login, password) {
59
+ return await this.api.login(login, password);
75
60
  }
76
61
  /**
77
62
  * Logs out the current user. Will invalidate any authentication cookie active.
78
63
  *
79
64
  * @returns A promise which will resolve when the user is properly logged out
80
65
  */
81
- logout() {
82
- return __awaiter(this, void 0, void 0, function* () {
83
- return yield this.api.logout();
84
- });
66
+ async logout() {
67
+ return await this.api.logout();
85
68
  }
86
69
  /**
87
70
  * Get the user associated to this client
88
71
  *
89
72
  * @returns A promise resolving to the current user
90
73
  */
91
- currentUser() {
92
- return __awaiter(this, void 0, void 0, function* () {
93
- return yield this.api.currentUser();
94
- });
74
+ async currentUser() {
75
+ return await this.api.currentUser();
95
76
  }
96
77
  /**
78
+ * Executes the given transaction.
79
+ *
80
+ * If the {@link Transaction} object contains binaries, the request is automatically
81
+ * sent using `multipart/form-data` to allow uploading binaries.
82
+ *
97
83
  * @param transaction Transaction to execute
98
- * @returns A promise fulfilled when the transaction is completed
84
+ * @returns A promise returning the transaction result on success
99
85
  */
100
- executeTransaction(transaction) {
101
- return __awaiter(this, void 0, void 0, function* () {
102
- return yield this.api.rql(transaction);
103
- });
86
+ async executeTransaction(transaction) {
87
+ return await this.api.rql(transaction);
104
88
  }
105
89
  /**
106
90
  * Get the binary for the given entity attribute
107
91
  *
108
- * @returns A promise resolving to the binary
92
+ * @param eid Entity eid to fetch the binary from
93
+ * @param attribute Attribute on the entity in which the binary is stored
94
+ * @returns A promise resolving to the binary as a Blob
109
95
  */
110
- getBinary(eid, attribute) {
111
- return __awaiter(this, void 0, void 0, function* () {
112
- return yield this.api.binary(eid, attribute);
113
- });
96
+ async getBinary(eid, attribute) {
97
+ return await this.api.binary(eid, attribute);
114
98
  }
115
99
  }
116
- exports.default = Client;
117
100
  //# sourceMappingURL=Client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/api/Client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,qDAAkD;AAClD,gDAA+D;AAC/D,+CAA8E;AAE9E;;;;GAIG;AACH,MAAqB,MAAM;IAGzB;;;;;;OAMG;IACH,YAAY,MAAc;QACxB,IAAI,CAAC,GAAG,GAAG,IAAI,aAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACG,OAAO,CACX,KAAa,EACb,SAAoB,EAAE,EACtB,QAAwB;;YAExB,MAAM,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAC;YACtC,MAAM,gBAAgB,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACzD,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAC1D,OAAO,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC;QACrD,CAAC;KAAA;IAED;;;;OAIG;IACG,MAAM;;YACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YACvC,OAAO,IAAI,eAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;KAAA;IAED;;;;;;OAMG;IACG,KAAK,CAAC,KAAa,EAAE,QAAgB;;YACzC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC/C,CAAC;KAAA;IAED;;;;OAIG;IACG,MAAM;;YACV,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QACjC,CAAC;KAAA;IAED;;;;OAIG;IACG,WAAW;;YACf,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACtC,CAAC;KAAA;IAED;;;OAGG;IACG,kBAAkB,CACtB,WAAwB;;YAExB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC;KAAA;IAED;;;;OAIG;IACG,SAAS,CAAC,GAAW,EAAE,SAAiB;;YAC5C,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/C,CAAC;KAAA;CACF;AA9FD,yBA8FC"}
1
+ {"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/api/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,GAAoC,MAAM,UAAU,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAG3D;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACjB,GAAG,CAAM;IAEjB;;;;;;OAMG;IACH,YAAY,MAAc;QACxB,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;IACzB,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,SAAyB,EAAE;QACpD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,QAAgB;QACzC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM;QACV,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,kBAAkB,CACtB,WAAwB;QAExB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,SAAiB;QAC5C,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Type representing a final value in a result set.
3
+ *
4
+ * Please not this type may not be accurate if you use entity methods,
5
+ * as those methods may return any data structure.
6
+ *
7
+ * @category Api
8
+ */
9
+ export type ResultSetCell = string | number | boolean | null;
10
+ /**
11
+ * Type representing a row returned in a result set.
12
+ *
13
+ * @category Api
14
+ */
15
+ export type ResultSetRow<T extends ReadonlyArray<ResultSetCell> = ReadonlyArray<ResultSetCell>> = T;
16
+ /**
17
+ * Class representing a RQL request result.
18
+ *
19
+ * @category Api
20
+ */
21
+ export declare class ResultSet<T extends ReadonlyArray<ResultSetCell> = ReadonlyArray<ResultSetCell>> {
22
+ readonly rows: T[];
23
+ constructor(rows: T[]);
24
+ }
25
+ //# sourceMappingURL=ResultSet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultSet.d.ts","sourceRoot":"","sources":["../../src/api/ResultSet.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAE7D;;;;GAIG;AACH,MAAM,MAAM,YAAY,CACtB,CAAC,SAAS,aAAa,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC,IACnE,CAAC,CAAC;AAEN;;;;GAIG;AACH,qBAAa,SAAS,CACpB,CAAC,SAAS,aAAa,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC;aAEzC,IAAI,EAAE,CAAC,EAAE;gBAAT,IAAI,EAAE,CAAC,EAAE;CACtC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Class representing a RQL request result.
3
+ *
4
+ * @category Api
5
+ */
6
+ export class ResultSet {
7
+ rows;
8
+ constructor(rows) {
9
+ this.rows = rows;
10
+ }
11
+ }
12
+ //# sourceMappingURL=ResultSet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultSet.js","sourceRoot":"","sources":["../../src/api/ResultSet.ts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,MAAM,OAAO,SAAS;IAGQ;IAA5B,YAA4B,IAAS;QAAT,SAAI,GAAJ,IAAI,CAAK;IAAG,CAAC;CAC1C"}
@@ -0,0 +1,6 @@
1
+ export declare class RQLBinary {
2
+ readonly blob: Blob;
3
+ readonly uuid: string;
4
+ constructor(blob: Blob);
5
+ }
6
+ //# sourceMappingURL=RQLBinary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RQLBinary.d.ts","sourceRoot":"","sources":["../../../src/api/binary/RQLBinary.ts"],"names":[],"mappings":"AAEA,qBAAa,SAAS;aAGQ,IAAI,EAAE,IAAI;IAFtC,SAAgB,IAAI,EAAE,MAAM,CAAC;gBAED,IAAI,EAAE,IAAI;CAGvC"}
@@ -0,0 +1,10 @@
1
+ import { v4 as uuidv4 } from "uuid";
2
+ export class RQLBinary {
3
+ blob;
4
+ uuid;
5
+ constructor(blob) {
6
+ this.blob = blob;
7
+ this.uuid = uuidv4();
8
+ }
9
+ }
10
+ //# sourceMappingURL=RQLBinary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RQLBinary.js","sourceRoot":"","sources":["../../../src/api/binary/RQLBinary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,MAAM,OAAO,SAAS;IAGQ;IAFZ,IAAI,CAAS;IAE7B,YAA4B,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QACpC,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,40 @@
1
+ import { RQLQueryCellRef, RQLQueryRowRef } from "./references";
2
+ import { RQLQueryParams } from "../Api";
3
+ /**
4
+ * Class representing a RQL query to be sent to the API.
5
+ *
6
+ * Queries are identified by a uuid and are independent from transactions.
7
+ *
8
+ * If a query has been used in a transaction, RQLQuery objects can easily retrieve
9
+ * a reference to the query for later resolving the values in a {@link TransactionResult}.
10
+ *
11
+ * @category Api
12
+ */
13
+ export declare class RQLQuery {
14
+ readonly rql: string;
15
+ readonly params: RQLQueryParams;
16
+ readonly queryUUID: string;
17
+ /**
18
+ * Class representing a RQL query to be sent to the API.
19
+ *
20
+ * Queries are identified by a uuid and are independent from transactions.
21
+ *
22
+ * If a query has been used in a transaction, RQLQuery objects can easily retrieve
23
+ * a reference to the query for later resolving the values in a {@link TransactionResult}.
24
+ *
25
+ * @param rql The rql query
26
+ * @param params The parameters for the rql query
27
+ *
28
+ * @category Api
29
+ */
30
+ constructor(rql: string, params?: RQLQueryParams);
31
+ /**
32
+ * @returns A reference to a {@link ResultSetRow} in the result of this query.
33
+ */
34
+ rowRef(row: number): RQLQueryRowRef;
35
+ /**
36
+ * @returns A reference to a {@link ResultSetCell} in the result of this query.
37
+ */
38
+ cellRef(row: number, column: number): RQLQueryCellRef;
39
+ }
40
+ //# sourceMappingURL=RQLQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RQLQuery.d.ts","sourceRoot":"","sources":["../../../src/api/query/RQLQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC;;;;;;;;;GASG;AACH,qBAAa,QAAQ;aAiBD,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,cAAc;IAjBxC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAElC;;;;;;;;;;;;OAYG;gBAEe,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,cAAmB;IAK7C;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc;IAInC;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;CAGtD"}
@@ -0,0 +1,48 @@
1
+ import { v4 as uuidv4 } from "uuid";
2
+ import { RQLQueryCellRef, RQLQueryRowRef } from "./references";
3
+ /**
4
+ * Class representing a RQL query to be sent to the API.
5
+ *
6
+ * Queries are identified by a uuid and are independent from transactions.
7
+ *
8
+ * If a query has been used in a transaction, RQLQuery objects can easily retrieve
9
+ * a reference to the query for later resolving the values in a {@link TransactionResult}.
10
+ *
11
+ * @category Api
12
+ */
13
+ export class RQLQuery {
14
+ rql;
15
+ params;
16
+ queryUUID;
17
+ /**
18
+ * Class representing a RQL query to be sent to the API.
19
+ *
20
+ * Queries are identified by a uuid and are independent from transactions.
21
+ *
22
+ * If a query has been used in a transaction, RQLQuery objects can easily retrieve
23
+ * a reference to the query for later resolving the values in a {@link TransactionResult}.
24
+ *
25
+ * @param rql The rql query
26
+ * @param params The parameters for the rql query
27
+ *
28
+ * @category Api
29
+ */
30
+ constructor(rql, params = {}) {
31
+ this.rql = rql;
32
+ this.params = params;
33
+ this.queryUUID = uuidv4();
34
+ }
35
+ /**
36
+ * @returns A reference to a {@link ResultSetRow} in the result of this query.
37
+ */
38
+ rowRef(row) {
39
+ return new RQLQueryRowRef(this.queryUUID, row);
40
+ }
41
+ /**
42
+ * @returns A reference to a {@link ResultSetCell} in the result of this query.
43
+ */
44
+ cellRef(row, column) {
45
+ return new RQLQueryCellRef(this.queryUUID, row, column);
46
+ }
47
+ }
48
+ //# sourceMappingURL=RQLQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RQLQuery.js","sourceRoot":"","sources":["../../../src/api/query/RQLQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG/D;;;;;;;;;GASG;AACH,MAAM,OAAO,QAAQ;IAiBD;IACA;IAjBF,SAAS,CAAS;IAElC;;;;;;;;;;;;OAYG;IACH,YACkB,GAAW,EACX,SAAyB,EAAE;QAD3B,QAAG,GAAH,GAAG,CAAQ;QACX,WAAM,GAAN,MAAM,CAAqB;QAE3C,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,GAAW,EAAE,MAAc;QACjC,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;CACF"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Class representing a reference to a {@link ResultSetRow} in the result of a {@link RQLQuery}.
3
+ *
4
+ * Use this to resolve a {@link ResultSetRow} of the referenced {@link RQLQuery}
5
+ * from a {@link TransactionResult}.
6
+ *
7
+ * @category Api
8
+ */
9
+ export declare class RQLQueryRowRef {
10
+ readonly queryUUID: string;
11
+ readonly row: number;
12
+ constructor(queryUUID: string, row: number);
13
+ /**
14
+ * Retrieve a reference to the given column in this row.
15
+ *
16
+ * @param c The column to get a reference for
17
+ * @returns A reference to the given column in the current row
18
+ *
19
+ * @category Api
20
+ */
21
+ column(c: number): RQLQueryCellRef;
22
+ }
23
+ /**
24
+ * Class representing a reference to a {@link ResultSetCell} in the result of a {@link RQLQuery}.
25
+ *
26
+ * Use this to resolve a {@link ResultSetCell} of the referenced {@link RQLQuery}
27
+ * from a {@link TransactionResult}.
28
+ *
29
+ * This reference can also be used in parameters of other {@link RQLQuery}.
30
+ * If both {@link RQLQuery} are used in the same {@link RQLQuery},
31
+ * then the resolved value from the first query will be used in the second.
32
+ *
33
+ * @category Api
34
+ */
35
+ export declare class RQLQueryCellRef {
36
+ readonly queryUUID: string;
37
+ readonly row: number;
38
+ readonly column: number;
39
+ constructor(queryUUID: string, row: number, column: number);
40
+ }
41
+ //# sourceMappingURL=references.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../../src/api/query/references.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,qBAAa,cAAc;aACG,SAAS,EAAE,MAAM;aAAkB,GAAG,EAAE,MAAM;gBAA9C,SAAS,EAAE,MAAM,EAAkB,GAAG,EAAE,MAAM;IAE1E;;;;;;;OAOG;IACH,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,eAAe;CAGnC;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,eAAe;aAER,SAAS,EAAE,MAAM;aACjB,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,MAAM;gBAFd,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM;CAEjC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Class representing a reference to a {@link ResultSetRow} in the result of a {@link RQLQuery}.
3
+ *
4
+ * Use this to resolve a {@link ResultSetRow} of the referenced {@link RQLQuery}
5
+ * from a {@link TransactionResult}.
6
+ *
7
+ * @category Api
8
+ */
9
+ export class RQLQueryRowRef {
10
+ queryUUID;
11
+ row;
12
+ constructor(queryUUID, row) {
13
+ this.queryUUID = queryUUID;
14
+ this.row = row;
15
+ }
16
+ /**
17
+ * Retrieve a reference to the given column in this row.
18
+ *
19
+ * @param c The column to get a reference for
20
+ * @returns A reference to the given column in the current row
21
+ *
22
+ * @category Api
23
+ */
24
+ column(c) {
25
+ return new RQLQueryCellRef(this.queryUUID, this.row, c);
26
+ }
27
+ }
28
+ /**
29
+ * Class representing a reference to a {@link ResultSetCell} in the result of a {@link RQLQuery}.
30
+ *
31
+ * Use this to resolve a {@link ResultSetCell} of the referenced {@link RQLQuery}
32
+ * from a {@link TransactionResult}.
33
+ *
34
+ * This reference can also be used in parameters of other {@link RQLQuery}.
35
+ * If both {@link RQLQuery} are used in the same {@link RQLQuery},
36
+ * then the resolved value from the first query will be used in the second.
37
+ *
38
+ * @category Api
39
+ */
40
+ export class RQLQueryCellRef {
41
+ queryUUID;
42
+ row;
43
+ column;
44
+ constructor(queryUUID, row, column) {
45
+ this.queryUUID = queryUUID;
46
+ this.row = row;
47
+ this.column = column;
48
+ }
49
+ }
50
+ //# sourceMappingURL=references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references.js","sourceRoot":"","sources":["../../../src/api/query/references.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,OAAO,cAAc;IACG;IAAmC;IAA/D,YAA4B,SAAiB,EAAkB,GAAW;QAA9C,cAAS,GAAT,SAAS,CAAQ;QAAkB,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;IAE9E;;;;;;;OAOG;IACH,MAAM,CAAC,CAAS;QACd,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;CACF;AAED;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,eAAe;IAER;IACA;IACA;IAHlB,YACkB,SAAiB,EACjB,GAAW,EACX,MAAc;QAFd,cAAS,GAAT,SAAS,CAAQ;QACjB,QAAG,GAAH,GAAG,CAAQ;QACX,WAAM,GAAN,MAAM,CAAQ;IAC7B,CAAC;CACL"}
@@ -0,0 +1,25 @@
1
+ import { RQLQuery } from "../query/RQLQuery.js";
2
+ /**
3
+ * Class representing a set of {@link RQLQuery} executed one after the other in a single HTTP request.
4
+ *
5
+ * These {@link RQLQuery} can be linked together by using a {@link RQLQueryCellRef}
6
+ * of one {@link RQLQuery} in the parameters of a subsequent {@link RQLQuery}.
7
+ *
8
+ * Binary files are global to the transaction and can be referenced using a {@link RQLQueryBinaryRef}
9
+ * in the parameters of a {@link RQLQuery}.
10
+ */
11
+ export declare class Transaction {
12
+ private _queries;
13
+ /**
14
+ * Adds the given queries to the transaction.
15
+ *
16
+ * Each {@link RQLQuery} will be executed one after the other.
17
+ * These {@link RQLQuery} can be linked together by using a {@link RQLQueryCellRef}
18
+ * of one {@link RQLQuery} in the parameters of a subsequent {@link RQLQuery}.
19
+ *
20
+ * @param queries New queries to add to the transaction
21
+ */
22
+ push(...queries: RQLQuery[]): void;
23
+ get queries(): ReadonlyArray<RQLQuery>;
24
+ }
25
+ //# sourceMappingURL=Transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../../src/api/transaction/Transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAuB;IAEvC;;;;;;;;OAQG;IACH,IAAI,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI;IAIlC,IAAI,OAAO,IAAI,aAAa,CAAC,QAAQ,CAAC,CAErC;CACF"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Class representing a set of {@link RQLQuery} executed one after the other in a single HTTP request.
3
+ *
4
+ * These {@link RQLQuery} can be linked together by using a {@link RQLQueryCellRef}
5
+ * of one {@link RQLQuery} in the parameters of a subsequent {@link RQLQuery}.
6
+ *
7
+ * Binary files are global to the transaction and can be referenced using a {@link RQLQueryBinaryRef}
8
+ * in the parameters of a {@link RQLQuery}.
9
+ */
10
+ export class Transaction {
11
+ _queries = [];
12
+ /**
13
+ * Adds the given queries to the transaction.
14
+ *
15
+ * Each {@link RQLQuery} will be executed one after the other.
16
+ * These {@link RQLQuery} can be linked together by using a {@link RQLQueryCellRef}
17
+ * of one {@link RQLQuery} in the parameters of a subsequent {@link RQLQuery}.
18
+ *
19
+ * @param queries New queries to add to the transaction
20
+ */
21
+ push(...queries) {
22
+ this._queries.push(...queries);
23
+ }
24
+ get queries() {
25
+ return this._queries;
26
+ }
27
+ }
28
+ //# sourceMappingURL=Transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../../src/api/transaction/Transaction.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,OAAO,WAAW;IACd,QAAQ,GAAoB,EAAE,CAAC;IAEvC;;;;;;;;OAQG;IACH,IAAI,CAAC,GAAG,OAAmB;QACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,32 @@
1
+ import { ResultSet, ResultSetCell, ResultSetRow } from "../ResultSet";
2
+ import { RQLQuery } from "../query/RQLQuery";
3
+ import { RQLQueryCellRef, RQLQueryRowRef } from "../query/references";
4
+ import { Transaction } from "./Transaction";
5
+ /**
6
+ * Class representing the result of a transaction.
7
+ *
8
+ * Retrieving the values is done using query references.
9
+ *
10
+ * @example
11
+ *
12
+ * Retrieving the first value in a result set
13
+ *
14
+ * ```tsx
15
+ * const transaction = new Transaction()
16
+ * const query = new RQLQuery("Any X WHERE X name 'test'", {})
17
+ * transaction.push(query)
18
+ * const result = client.executeTransaction(transaction)
19
+ * const eid = result.resolve(query.cellRef(0, 0))
20
+ * ```
21
+ *
22
+ * @category Api
23
+ */
24
+ export declare class TransactionResult {
25
+ private transaction;
26
+ private resultSets;
27
+ constructor(transaction: Transaction, resultSets: ReadonlyArray<ResultSet>);
28
+ getResultSet(query: RQLQuery): ResultSet;
29
+ getRow(ref: RQLQueryRowRef): ResultSetRow;
30
+ getCell(ref: RQLQueryCellRef): ResultSetCell;
31
+ }
32
+ //# sourceMappingURL=TransactionResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionResult.d.ts","sourceRoot":"","sources":["../../../src/api/transaction/TransactionResult.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,UAAU;gBADV,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC;IAG9C,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS;IAKxC,MAAM,CAAC,GAAG,EAAE,cAAc,GAAG,YAAY;IAKzC,OAAO,CAAC,GAAG,EAAE,eAAe,GAAG,aAAa;CAI7C"}