prostgles-server 4.0.57 → 4.0.59

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 (221) hide show
  1. package/dist/DboBuilder/getColumns.d.ts.map +1 -1
  2. package/dist/DboBuilder/getColumns.js +1 -13
  3. package/dist/DboBuilder/getColumns.js.map +1 -1
  4. package/dist/DboBuilder/runSQL.js +2 -2
  5. package/dist/DboBuilder/runSQL.js.map +1 -1
  6. package/dist/Prostgles.d.ts.map +1 -1
  7. package/dist/PubSubManager/PubSubManager.d.ts +1 -1
  8. package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
  9. package/dist/PubSubManager/PubSubManager.js +14 -1
  10. package/dist/PubSubManager/PubSubManager.js.map +1 -1
  11. package/lib/DboBuilder/getColumns.ts +1 -18
  12. package/lib/DboBuilder/runSQL.ts +2 -2
  13. package/lib/Prostgles.ts +3 -3
  14. package/lib/PubSubManager/PubSubManager.ts +14 -1
  15. package/package.json +2 -2
  16. package/tests/client/PID.txt +1 -1
  17. package/tests/client/package.json +2 -2
  18. package/tests/client/tsconfig.json +2 -1
  19. package/tests/isomorphic_queries.ts +11 -9
  20. package/tests/server/DBoGenerated.d.ts +1 -1
  21. package/tests/server/dboTypeCheck.ts +3 -3
  22. package/tests/server/index.ts +7 -6
  23. package/tests/server/package-lock.json +1 -1
  24. package/tests/server/package.json +3 -3
  25. package/tests/server/publishTypeCheck.ts +1 -1
  26. package/tests/server/tsconfig.json +3 -2
  27. package/tests/test.sh +2 -0
  28. package/dist/FileManager.d.ts +0 -143
  29. package/dist/FileManager.d.ts.map +0 -1
  30. package/dist/FileManager.js +0 -646
  31. package/dist/FileManager.js.map +0 -1
  32. package/dist/TableConfig.d.ts +0 -267
  33. package/dist/TableConfig.d.ts.map +0 -1
  34. package/dist/TableConfig.js +0 -463
  35. package/dist/TableConfig.js.map +0 -1
  36. package/dist/validation.d.ts +0 -126
  37. package/dist/validation.d.ts.map +0 -1
  38. package/dist/validation.js +0 -405
  39. package/dist/validation.js.map +0 -1
  40. package/lib/AuthHandler.d.ts +0 -187
  41. package/lib/AuthHandler.d.ts.map +0 -1
  42. package/lib/AuthHandler.js +0 -478
  43. package/lib/DBEventsManager.d.ts +0 -38
  44. package/lib/DBEventsManager.d.ts.map +0 -1
  45. package/lib/DBEventsManager.js +0 -140
  46. package/lib/DBSchemaBuilder.d.ts +0 -13
  47. package/lib/DBSchemaBuilder.d.ts.map +0 -1
  48. package/lib/DBSchemaBuilder.js +0 -145
  49. package/lib/DboBuilder/QueryBuilder/Functions.d.ts +0 -64
  50. package/lib/DboBuilder/QueryBuilder/Functions.d.ts.map +0 -1
  51. package/lib/DboBuilder/QueryBuilder/Functions.js +0 -984
  52. package/lib/DboBuilder/QueryBuilder/QueryBuilder.d.ts +0 -73
  53. package/lib/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +0 -1
  54. package/lib/DboBuilder/QueryBuilder/QueryBuilder.js +0 -335
  55. package/lib/DboBuilder/QueryBuilder/makeSelectQuery.d.ts +0 -8
  56. package/lib/DboBuilder/QueryBuilder/makeSelectQuery.d.ts.map +0 -1
  57. package/lib/DboBuilder/QueryBuilder/makeSelectQuery.js +0 -227
  58. package/lib/DboBuilder/TableHandler.d.ts +0 -37
  59. package/lib/DboBuilder/TableHandler.d.ts.map +0 -1
  60. package/lib/DboBuilder/TableHandler.js +0 -213
  61. package/lib/DboBuilder/ViewHandler.d.ts +0 -119
  62. package/lib/DboBuilder/ViewHandler.d.ts.map +0 -1
  63. package/lib/DboBuilder/ViewHandler.js +0 -1023
  64. package/lib/DboBuilder/delete.d.ts +0 -6
  65. package/lib/DboBuilder/delete.d.ts.map +0 -1
  66. package/lib/DboBuilder/delete.js +0 -128
  67. package/lib/DboBuilder/find.d.ts +0 -8
  68. package/lib/DboBuilder/find.d.ts.map +0 -1
  69. package/lib/DboBuilder/find.js +0 -91
  70. package/lib/DboBuilder/getColumns.d.ts +0 -12
  71. package/lib/DboBuilder/getColumns.d.ts.map +0 -1
  72. package/lib/DboBuilder/getColumns.js +0 -92
  73. package/lib/DboBuilder/getCondition.d.ts +0 -22
  74. package/lib/DboBuilder/getCondition.d.ts.map +0 -1
  75. package/lib/DboBuilder/getCondition.js +0 -236
  76. package/lib/DboBuilder/getSubscribeRelatedTables.d.ts +0 -20
  77. package/lib/DboBuilder/getSubscribeRelatedTables.d.ts.map +0 -1
  78. package/lib/DboBuilder/getSubscribeRelatedTables.js +0 -152
  79. package/lib/DboBuilder/getTablesForSchemaPostgresSQL.d.ts +0 -3
  80. package/lib/DboBuilder/getTablesForSchemaPostgresSQL.d.ts.map +0 -1
  81. package/lib/DboBuilder/getTablesForSchemaPostgresSQL.js +0 -207
  82. package/lib/DboBuilder/insert.d.ts +0 -6
  83. package/lib/DboBuilder/insert.d.ts.map +0 -1
  84. package/lib/DboBuilder/insert.js +0 -180
  85. package/lib/DboBuilder/insertDataParse.d.ts +0 -12
  86. package/lib/DboBuilder/insertDataParse.d.ts.map +0 -1
  87. package/lib/DboBuilder/insertDataParse.js +0 -253
  88. package/lib/DboBuilder/parseUpdateRules.d.ts +0 -18
  89. package/lib/DboBuilder/parseUpdateRules.d.ts.map +0 -1
  90. package/lib/DboBuilder/parseUpdateRules.js +0 -123
  91. package/lib/DboBuilder/runSQL.d.ts +0 -7
  92. package/lib/DboBuilder/runSQL.d.ts.map +0 -1
  93. package/lib/DboBuilder/runSQL.js +0 -135
  94. package/lib/DboBuilder/subscribe.d.ts +0 -20
  95. package/lib/DboBuilder/subscribe.d.ts.map +0 -1
  96. package/lib/DboBuilder/subscribe.js +0 -90
  97. package/lib/DboBuilder/update.d.ts +0 -6
  98. package/lib/DboBuilder/update.d.ts.map +0 -1
  99. package/lib/DboBuilder/update.js +0 -151
  100. package/lib/DboBuilder/uploadFile.d.ts +0 -7
  101. package/lib/DboBuilder/uploadFile.d.ts.map +0 -1
  102. package/lib/DboBuilder/uploadFile.js +0 -53
  103. package/lib/DboBuilder.d.ts +0 -306
  104. package/lib/DboBuilder.d.ts.map +0 -1
  105. package/lib/DboBuilder.js +0 -745
  106. package/lib/Event_Trigger_Tags.d.ts +0 -4
  107. package/lib/Event_Trigger_Tags.d.ts.map +0 -1
  108. package/lib/Event_Trigger_Tags.js +0 -116
  109. package/lib/FileManager/FileManager.d.ts +0 -135
  110. package/lib/FileManager/FileManager.d.ts.map +0 -1
  111. package/lib/FileManager/FileManager.js +0 -303
  112. package/lib/FileManager/initFileManager.d.ts +0 -4
  113. package/lib/FileManager/initFileManager.d.ts.map +0 -1
  114. package/lib/FileManager/initFileManager.js +0 -231
  115. package/lib/FileManager/parseFile.d.ts +0 -15
  116. package/lib/FileManager/parseFile.d.ts.map +0 -1
  117. package/lib/FileManager/parseFile.js +0 -58
  118. package/lib/FileManager/upload.d.ts +0 -6
  119. package/lib/FileManager/upload.d.ts.map +0 -1
  120. package/lib/FileManager/upload.js +0 -98
  121. package/lib/FileManager/uploadStream.d.ts +0 -5
  122. package/lib/FileManager/uploadStream.d.ts.map +0 -1
  123. package/lib/FileManager/uploadStream.js +0 -92
  124. package/lib/Filtering.d.ts +0 -15
  125. package/lib/Filtering.d.ts.map +0 -1
  126. package/lib/Filtering.js +0 -336
  127. package/lib/JSONBValidation/validate_jsonb_schema_sql.d.ts +0 -4
  128. package/lib/JSONBValidation/validate_jsonb_schema_sql.d.ts.map +0 -1
  129. package/lib/JSONBValidation/validate_jsonb_schema_sql.js +0 -500
  130. package/lib/JSONBValidation/validation.d.ts +0 -9
  131. package/lib/JSONBValidation/validation.d.ts.map +0 -1
  132. package/lib/JSONBValidation/validation.js +0 -131
  133. package/lib/PostgresNotifListenManager.d.ts +0 -28
  134. package/lib/PostgresNotifListenManager.d.ts.map +0 -1
  135. package/lib/PostgresNotifListenManager.js +0 -134
  136. package/lib/Prostgles.d.ts +0 -289
  137. package/lib/Prostgles.d.ts.map +0 -1
  138. package/lib/Prostgles.js +0 -685
  139. package/lib/PubSubManager/PubSubManager.d.ts +0 -175
  140. package/lib/PubSubManager/PubSubManager.d.ts.map +0 -1
  141. package/lib/PubSubManager/PubSubManager.js +0 -452
  142. package/lib/PubSubManager/addSub.d.ts +0 -8
  143. package/lib/PubSubManager/addSub.d.ts.map +0 -1
  144. package/lib/PubSubManager/addSub.js +0 -166
  145. package/lib/PubSubManager/addSync.d.ts +0 -8
  146. package/lib/PubSubManager/addSync.d.ts.map +0 -1
  147. package/lib/PubSubManager/addSync.js +0 -109
  148. package/lib/PubSubManager/getInitQuery.d.ts +0 -9
  149. package/lib/PubSubManager/getInitQuery.d.ts.map +0 -1
  150. package/lib/PubSubManager/getInitQuery.js +0 -552
  151. package/lib/PubSubManager/initPubSubManager.d.ts +0 -3
  152. package/lib/PubSubManager/initPubSubManager.d.ts.map +0 -1
  153. package/lib/PubSubManager/initPubSubManager.js +0 -116
  154. package/lib/PubSubManager/notifListener.d.ts +0 -5
  155. package/lib/PubSubManager/notifListener.d.ts.map +0 -1
  156. package/lib/PubSubManager/notifListener.js +0 -100
  157. package/lib/PubSubManager/pushSubData.d.ts +0 -3
  158. package/lib/PubSubManager/pushSubData.d.ts.map +0 -1
  159. package/lib/PubSubManager/pushSubData.js +0 -51
  160. package/lib/PublishParser.d.ts +0 -284
  161. package/lib/PublishParser.d.ts.map +0 -1
  162. package/lib/PublishParser.js +0 -421
  163. package/lib/SchemaWatch.d.ts +0 -13
  164. package/lib/SchemaWatch.d.ts.map +0 -1
  165. package/lib/SchemaWatch.js +0 -35
  166. package/lib/SyncReplication.d.ts +0 -34
  167. package/lib/SyncReplication.d.ts.map +0 -1
  168. package/lib/SyncReplication.js +0 -412
  169. package/lib/TableConfig/TableConfig.d.ts +0 -284
  170. package/lib/TableConfig/TableConfig.d.ts.map +0 -1
  171. package/lib/TableConfig/TableConfig.js +0 -437
  172. package/lib/TableConfig/getColumnDefinitionQuery.d.ts +0 -27
  173. package/lib/TableConfig/getColumnDefinitionQuery.d.ts.map +0 -1
  174. package/lib/TableConfig/getColumnDefinitionQuery.js +0 -87
  175. package/lib/TableConfig/getConstraintDefinitionQueries.d.ts +0 -34
  176. package/lib/TableConfig/getConstraintDefinitionQueries.d.ts.map +0 -1
  177. package/lib/TableConfig/getConstraintDefinitionQueries.js +0 -65
  178. package/lib/TableConfig/getFutureTableSchema.d.ts +0 -15
  179. package/lib/TableConfig/getFutureTableSchema.d.ts.map +0 -1
  180. package/lib/TableConfig/getFutureTableSchema.js +0 -43
  181. package/lib/TableConfig/getTableColumnQueries.d.ts +0 -16
  182. package/lib/TableConfig/getTableColumnQueries.d.ts.map +0 -1
  183. package/lib/TableConfig/getTableColumnQueries.js +0 -107
  184. package/lib/index.d.ts +0 -5
  185. package/lib/index.d.ts.map +0 -1
  186. package/lib/index.js +0 -7
  187. package/lib/shortestPath.d.ts +0 -10
  188. package/lib/shortestPath.d.ts.map +0 -1
  189. package/lib/shortestPath.js +0 -111
  190. package/lib/utils.d.ts +0 -3
  191. package/lib/utils.d.ts.map +0 -1
  192. package/lib/utils.js +0 -12
  193. package/tests/client/index.d.ts +0 -2
  194. package/tests/client/index.d.ts.map +0 -1
  195. package/tests/client/index.js +0 -80
  196. package/tests/client/index.js.map +0 -1
  197. package/tests/client_only_queries.d.ts +0 -4
  198. package/tests/client_only_queries.d.ts.map +0 -1
  199. package/tests/client_only_queries.js +0 -282
  200. package/tests/config_test/DBoGenerated.d.ts +0 -388
  201. package/tests/config_test/index.js +0 -174
  202. package/tests/config_test/index.js.map +0 -1
  203. package/tests/isomorphic_queries.d.ts +0 -9
  204. package/tests/isomorphic_queries.d.ts.map +0 -1
  205. package/tests/isomorphic_queries.js +0 -773
  206. package/tests/manual_test/DBoGenerated.d.ts +0 -398
  207. package/tests/manual_test/index.d.ts +0 -2
  208. package/tests/manual_test/index.d.ts.map +0 -1
  209. package/tests/manual_test/index.js +0 -65
  210. package/tests/server/dboTypeCheck.d.ts +0 -2
  211. package/tests/server/dboTypeCheck.d.ts.map +0 -1
  212. package/tests/server/dboTypeCheck.js +0 -27
  213. package/tests/server/index.d.ts +0 -2
  214. package/tests/server/index.d.ts.map +0 -1
  215. package/tests/server/index.js +0 -507
  216. package/tests/server/publishTypeCheck.d.ts +0 -2
  217. package/tests/server/publishTypeCheck.d.ts.map +0 -1
  218. package/tests/server/publishTypeCheck.js +0 -130
  219. package/tests/server_only_queries.d.ts +0 -2
  220. package/tests/server_only_queries.d.ts.map +0 -1
  221. package/tests/server_only_queries.js +0 -19
@@ -1,405 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getJSONBSchemaAsJSONSchema = exports.getJSONBSchemaTSTypes = exports.getSchemaTSTypes = exports.getPGCheckConstraint = exports.validateSchema = exports.validate = void 0;
4
- const prostgles_types_1 = require("prostgles-types");
5
- const PubSubManager_1 = require("./PubSubManager/PubSubManager");
6
- const PrimitiveTypes = ["boolean", "number", "integer", "string", "any"];
7
- const DATA_TYPES = [
8
- ...PrimitiveTypes,
9
- ...PrimitiveTypes.map(v => `${v}[]`)
10
- ];
11
- /** tests */
12
- const s = {
13
- a: { type: "boolean" },
14
- c: { type: { c1: { type: "string" } } },
15
- arr: { arrayOf: { d: "string" } },
16
- o: {
17
- oneOf: [
18
- { z: { type: "integer" } },
19
- { z1: { type: "integer" } }
20
- ]
21
- }
22
- };
23
- const ss = {
24
- a: true,
25
- arr: [{ d: "" }],
26
- c: {
27
- c1: ""
28
- },
29
- o: { z1: 23 }
30
- };
31
- const getFieldTypeObj = (rawFieldType) => {
32
- if (typeof rawFieldType === "string")
33
- return { type: rawFieldType };
34
- return rawFieldType;
35
- };
36
- function validate(obj, key, rawFieldType) {
37
- let err = `The provided value for ${JSON.stringify(key)} is of invalid type. Expecting `;
38
- const val = obj[key];
39
- const fieldType = getFieldTypeObj(rawFieldType);
40
- if ("type" in fieldType && fieldType.type) {
41
- if (typeof fieldType.type !== "string") {
42
- (0, prostgles_types_1.getKeys)(fieldType.type).forEach(subKey => {
43
- validate(val, subKey, fieldType.type[subKey]);
44
- });
45
- }
46
- err += fieldType.type;
47
- if (fieldType.type === "boolean" && typeof val !== fieldType.type)
48
- throw new Error(err);
49
- if (fieldType.type === "string" && typeof val !== fieldType.type)
50
- throw new Error(err);
51
- if (fieldType.type === "number" && !Number.isFinite(val))
52
- throw new Error(err);
53
- if (fieldType.type === "integer" && !Number.isInteger(val))
54
- throw new Error(err);
55
- }
56
- else if (fieldType.enum) {
57
- err += `on of: ${fieldType.enum}`;
58
- if (!fieldType.enum.includes(val))
59
- throw new Error(err);
60
- }
61
- return true;
62
- }
63
- exports.validate = validate;
64
- function validateSchema(schema, obj, objName, optional = false) {
65
- if ((!schema || (0, prostgles_types_1.isEmpty)(schema)) && !optional)
66
- throw new Error(`Expecting ${objName} to be defined`);
67
- (0, prostgles_types_1.getKeys)(schema).forEach(k => validate(obj, k, schema[k]));
68
- }
69
- exports.validateSchema = validateSchema;
70
- function getPGTypeCheck(path, fieldType) {
71
- if (!path.length)
72
- throw "path must not be empty";
73
- const { type, oneOf, arrayOf, nullable, optional, allowedValues } = getFieldTypeObj(fieldType);
74
- let jsPathCondition = "";
75
- let conditions = [];
76
- let orConditions = [];
77
- const escapedPath = path.slice(1).join(".");
78
- const key = path.length > 1 ? path.at(-1) : undefined;
79
- if (!key) {
80
- /** Is column root */
81
- if (nullable) {
82
- orConditions.push(`${escapedPath} IS NULL`);
83
- }
84
- }
85
- const escapedKeyFull = !key ? "@" : ("@." + JSON.stringify(key));
86
- const escapedKey = !key ? undefined : JSON.stringify(key);
87
- if (optional) {
88
- if (!escapedKey) {
89
- throw "Column root objects cannot be optional. Only nullable";
90
- }
91
- }
92
- else {
93
- if (escapedKey) {
94
- conditions.push(`strict $${escapedPath}.${escapedKey}`);
95
- }
96
- }
97
- if (nullable) {
98
- orConditions.push(`strict $${escapedPath} ? (${escapedKeyFull} == null)`);
99
- }
100
- const isPrimitive = typeof type === "string";
101
- const isPrimitiveArray = isPrimitive && type.endsWith("[]");
102
- if (isPrimitiveArray) {
103
- jsPathCondition = ` (@.type() == "array")`;
104
- }
105
- else if (isPrimitive) {
106
- if (type !== "any") {
107
- const isInteger = type === "integer";
108
- const validJSONType = isInteger ? "number" : type;
109
- jsPathCondition = !allowedValues?.length ?
110
- `${escapedKeyFull}.type() == ${JSON.stringify(validJSONType)} ${isInteger ? ` && ${escapedKeyFull}.ceiling() == ${escapedKeyFull}.floor() ` : ""}` :
111
- `${allowedValues.map(v => `${escapedKeyFull} == ${typeof v === "string" ? JSON.stringify(v) : v}`).join(" || ")} `;
112
- jsPathCondition += nullable ? ` || ${escapedKeyFull}.type() == "null" ` : "";
113
- }
114
- else {
115
- jsPathCondition += "@.type() != null";
116
- }
117
- }
118
- else if (type) {
119
- return Object.entries(type).map(([key, value]) => {
120
- return getPGTypeCheck([...path, JSON.stringify(key)], value);
121
- }).join(" AND ");
122
- }
123
- else if (oneOf) {
124
- }
125
- else if (arrayOf) {
126
- }
127
- const andCondition = [
128
- ...conditions,
129
- `strict $${escapedPath} ? (${jsPathCondition})`
130
- ].map(cond => `jsonb_path_exists(${(0, prostgles_types_1.asName)(path[0])}, ${(0, PubSubManager_1.asValue)(cond)})`).join(" AND \n");
131
- return [...orConditions.map(cond => `jsonb_path_exists(${(0, prostgles_types_1.asName)(path[0])}, ${(0, PubSubManager_1.asValue)(cond)})`), andCondition].join(" OR \n");
132
- }
133
- console.log(getPGTypeCheck(["col"], {
134
- type: {
135
- arr: { arrayOf: {
136
- z: "boolean",
137
- a: { optional: true, arrayOf: {
138
- c: { type: "string[]", allowedValues: ["a", "ad"] }
139
- }
140
- }
141
- }
142
- }
143
- }
144
- }));
145
- const jsc = {
146
- userGroupNames: { type: "string[]", description: "List of user types that this rule applies to" },
147
- dbsPermissions: { description: "Permission types and rules for the state database", optional: true, type: {
148
- createWorkspaces: { type: "boolean", optional: true },
149
- viewPublishedWorkspaces: { type: {
150
- workspaceIds: { type: "string[]" }
151
- }, optional: true },
152
- } },
153
- dbPermissions: { description: "Permission types and rules for this (connection_id) database", oneOf: [
154
- {
155
- type: { enum: ["Run SQL"], description: "Allows complete access to the database" },
156
- allowSQL: { type: "boolean", optional: true },
157
- },
158
- {
159
- type: { enum: ["All views/tables"], description: "Custom access (View/Edit/Remove) to all tables" },
160
- allowAllTables: { type: "string[]", allowedValues: ["select", "insert", "update", "delete"] }
161
- // allowAllTables: { type: "string[]" }
162
- },
163
- {
164
- type: { enum: ["Custom"], description: "Fine grained access to specific tables" },
165
- customTables: { type: "any[]" },
166
- }
167
- ] },
168
- methods: {
169
- description: "Custom server-side functions",
170
- optional: true,
171
- type: "any[]",
172
- }
173
- };
174
- const d = {
175
- v: null
176
- };
177
- function getPGCheckConstraint(args, depth) {
178
- const { schema: s, escapedFieldName, nullable, optional, isRootQuery } = args;
179
- const jsToPGtypes = {
180
- "integer": "::INTEGER",
181
- "number": "::NUMERIC",
182
- "boolean": "::BOOLEAN",
183
- "string": "::TEXT",
184
- "any": "::JSONB"
185
- };
186
- const kChecks = (k, s) => {
187
- const fieldType = getFieldTypeObj(s[k]);
188
- const checks = [];
189
- const valAsJson = `${escapedFieldName}->${(0, PubSubManager_1.asValue)(k)}`;
190
- const valAsText = `${escapedFieldName}->>${(0, PubSubManager_1.asValue)(k)}`;
191
- if (fieldType.nullable)
192
- checks.push(`${valAsJson} IS NULL`);
193
- if (fieldType.optional)
194
- checks.push(`${escapedFieldName} ? ${(0, PubSubManager_1.asValue)(k)} = FALSE`);
195
- if (fieldType?.arrayOf) {
196
- // checks.push
197
- }
198
- else if (fieldType?.oneOf) {
199
- checks.push(`(${fieldType.oneOf.map(subType => getPGCheckConstraint({ escapedFieldName: valAsJson, schema: subType, nullable, optional: fieldType.optional }, depth + 1)).join(" OR ")})`);
200
- }
201
- else if ("enum" in fieldType) {
202
- if (!fieldType.enum?.length || fieldType.enum.some(v => v === undefined || !["number", "boolean", "string", null].includes(typeof v))) {
203
- throw new Error(`Invalid ValidationSchema for property: ${k} of field ${escapedFieldName}: enum cannot be empty AND can only contain: numbers, text, boolean, null`);
204
- }
205
- checks.push(`array_position(${(0, PubSubManager_1.asValue)(fieldType.enum)}::text[], ${valAsText}::text) IS NOT NULL`);
206
- }
207
- else if ("type" in fieldType) {
208
- if (typeof fieldType.type === "string") {
209
- if (fieldType.type.endsWith("[]")) {
210
- const correctType = fieldType.type.slice(0, -2);
211
- let elemCheck = correctType === "any" ? "" : `AND ('{' || right(left(${valAsText},-1),-1) || '}')${jsToPGtypes[correctType]}[] IS NOT NULL`;
212
- checks.push(`jsonb_typeof(${valAsJson}) = 'array' ${elemCheck}`);
213
- if (fieldType.allowedValues) {
214
- const types = Array.from(new Set(fieldType.allowedValues.map(v => typeof v)));
215
- const allowedTypes = ["boolean", "number", "string"];
216
- if (types.length !== 1 || !allowedTypes.includes(types[0])) {
217
- throw new Error(`Invalid allowedValues (${fieldType.allowedValues}). Must be a non empty array with elements of same type. Allowed types: ${allowedTypes}`);
218
- }
219
- const type = types[0];
220
- checks.push(`(${valAsText})${jsToPGtypes[type]}[] <@ ${(0, PubSubManager_1.asValue)(fieldType.allowedValues)}`);
221
- }
222
- }
223
- else {
224
- const correctType = fieldType.type.replace("integer", "number");
225
- if (correctType !== "any") {
226
- checks.push(`jsonb_typeof(${valAsJson}) = ${(0, PubSubManager_1.asValue)(correctType)} `);
227
- }
228
- }
229
- }
230
- else {
231
- const check = getPGCheckConstraint({ escapedFieldName: valAsJson, schema: fieldType.type, nullable: !!fieldType.nullable, optional: !!fieldType.optional }, depth + 1).trim();
232
- if (check)
233
- checks.push(`(${check})`);
234
- }
235
- }
236
- const result = checks.join(" OR ");
237
- if (!depth)
238
- return `COALESCE(${result}, false)`;
239
- return result;
240
- };
241
- const getSchemaChecks = (s) => (0, prostgles_types_1.getKeys)(s).map(k => "(" + kChecks(k, s) + ")").join(" AND ");
242
- const checks = [];
243
- let typeChecks = "";
244
- if (isOneOfTypes(s)) {
245
- typeChecks = s.oneOf.map(t => `(${getSchemaChecks(t)})`).join(" OR ");
246
- }
247
- else {
248
- typeChecks = getSchemaChecks(s);
249
- }
250
- if (nullable)
251
- checks.push(` ${escapedFieldName} IS NULL `);
252
- checks.push(`jsonb_typeof(${escapedFieldName}) = 'object' ${typeChecks ? ` AND (${typeChecks})` : ""}`);
253
- return checks.join(" OR ");
254
- }
255
- exports.getPGCheckConstraint = getPGCheckConstraint;
256
- const isOneOfTypes = (s) => {
257
- if ("oneOf" in s) {
258
- if (!Array.isArray(s.oneOf)) {
259
- throw "Expecting oneOf to be an array of types";
260
- }
261
- return true;
262
- }
263
- return false;
264
- };
265
- function getSchemaTSTypes(schema, leading = "", isOneOf = false) {
266
- const getFieldType = (rawFieldType) => {
267
- const fieldType = getFieldTypeObj(rawFieldType);
268
- const nullType = (fieldType.nullable ? `null | ` : "");
269
- if (fieldType?.type) {
270
- if (typeof fieldType.type === "string") {
271
- const correctType = fieldType.type.replace("integer", "number");
272
- if (fieldType.allowedValues && fieldType.type.endsWith("[]")) {
273
- return nullType + ` (${fieldType.allowedValues.map(v => JSON.stringify(v)).join(" | ")})[]`;
274
- }
275
- return nullType + correctType;
276
- }
277
- else {
278
- return nullType + getSchemaTSTypes(fieldType.type, "", true);
279
- }
280
- }
281
- else if (fieldType?.enum) {
282
- return nullType + fieldType.enum.map(v => (0, PubSubManager_1.asValue)(v)).join(" | ");
283
- }
284
- else if (fieldType?.oneOf) {
285
- return (fieldType.nullable ? `\n${leading} | null` : "") + fieldType.oneOf.map(v => `\n${leading} | ` + getSchemaTSTypes(v, "", true)).join("");
286
- }
287
- else
288
- throw "Unexpected getSchemaTSTypes";
289
- };
290
- const spacing = isOneOf ? " " : " ";
291
- const res = `${leading}{ \n` + (0, prostgles_types_1.getKeys)(schema).map(k => {
292
- const fieldType = getFieldTypeObj(schema[k]);
293
- return `${leading}${spacing}${k}${fieldType.optional ? "?" : ""}: ` + getFieldType(fieldType) + ";";
294
- }).join("\n") + ` \n${leading}}${isOneOf ? "" : ";"}`;
295
- /** Keep single line */
296
- if (isOneOf)
297
- return res.split("\n").join("");
298
- return res;
299
- }
300
- exports.getSchemaTSTypes = getSchemaTSTypes;
301
- function getJSONBSchemaTSTypes(schema, colOpts, leading = "", isOneOf = false) {
302
- if (isOneOfTypes(schema)) {
303
- return (colOpts.nullable ? `\n${leading} | null` : "") + schema.oneOf.map(s => `\n${leading} | ` + getSchemaTSTypes(s, "", true)).join("");
304
- }
305
- else {
306
- return (colOpts.nullable ? `null | ` : "") + getSchemaTSTypes(schema, leading, isOneOf);
307
- }
308
- }
309
- exports.getJSONBSchemaTSTypes = getJSONBSchemaTSTypes;
310
- const getJSONSchemaObject = (objDef) => {
311
- const resultType = {
312
- type: "object",
313
- properties: (0, prostgles_types_1.getKeys)(objDef).reduce((a, k) => {
314
- const itemSchema = getFieldTypeObj(objDef[k]);
315
- const { nullable, optional, description, title } = itemSchema;
316
- let item = {};
317
- if (itemSchema.type) {
318
- const { type } = itemSchema;
319
- /**
320
- * Is primitive or any
321
- */
322
- if (typeof type === "string") {
323
- const arrayType = type.endsWith("[]") ? type.slice(0, -2) : undefined;
324
- if (arrayType) {
325
- item = {
326
- type: "array",
327
- items: itemSchema.allowedValues ? {
328
- enum: itemSchema.allowedValues
329
- } : {
330
- type: arrayType === "any" ? {} : arrayType
331
- }
332
- };
333
- }
334
- else {
335
- item = {
336
- type: type === "any" ? {} : type
337
- };
338
- }
339
- /**
340
- * Is object
341
- */
342
- }
343
- else {
344
- item = getJSONSchemaObject(type);
345
- }
346
- }
347
- else if (itemSchema?.enum) {
348
- item = {
349
- type: typeof itemSchema.enum[0],
350
- "enum": itemSchema.enum //.concat(nullable? [null] : [])
351
- };
352
- }
353
- else if (itemSchema?.oneOf) {
354
- item = {
355
- type: "object",
356
- oneOf: itemSchema.oneOf.map(t => getJSONSchemaObject(t))
357
- };
358
- }
359
- else {
360
- throw new Error("Unexpected jsonbSchema itemSchema" + JSON.stringify({ itemSchema, objDef }, null, 2));
361
- }
362
- if (nullable) {
363
- const nullDef = { type: "null" };
364
- if (item.oneOf) {
365
- item.oneOf.push(nullDef);
366
- }
367
- else if (item.enum) {
368
- item.enum.push(null);
369
- }
370
- else
371
- item = {
372
- type: 'object',
373
- oneOf: [item, nullDef]
374
- };
375
- }
376
- return {
377
- ...a,
378
- [k]: {
379
- ...item,
380
- required: !optional,
381
- ...(!!description && { description }),
382
- ...(!!title && { title }),
383
- }
384
- };
385
- }, {})
386
- };
387
- return resultType;
388
- };
389
- function getJSONBSchemaAsJSONSchema(tableName, colName, columnConfig) {
390
- const schema = columnConfig.jsonbSchema;
391
- let jSchema = getJSONSchemaObject({
392
- field1: isOneOfTypes(schema) ? schema :
393
- { type: schema }
394
- }).properties.field1;
395
- return {
396
- "$id": `${tableName}.${colName}`,
397
- "$schema": "https://json-schema.org/draft/2020-12/schema",
398
- ...jSchema,
399
- "title": columnConfig.label ?? colName,
400
- ...(!!columnConfig.info?.hint && { description: columnConfig.info?.hint }),
401
- required: !columnConfig.nullable
402
- };
403
- }
404
- exports.getJSONBSchemaAsJSONSchema = getJSONBSchemaAsJSONSchema;
405
- //# sourceMappingURL=validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../lib/validation.ts"],"names":[],"mappings":"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"}
@@ -1,187 +0,0 @@
1
- import { Express, NextFunction, Request, Response } from "express";
2
- import { AnyObject, FieldFilter } from "prostgles-types";
3
- import { LocalParams, PRGLIOSocket } from "./DboBuilder";
4
- import { DBOFullyTyped } from "./DBSchemaBuilder";
5
- import { DB, DBHandlerServer, Prostgles } from "./Prostgles";
6
- type Awaitable<T> = T | Promise<T>;
7
- type AuthSocketSchema = {
8
- user?: AnyObject;
9
- register?: boolean;
10
- login?: boolean;
11
- logout?: boolean;
12
- pathGuard?: boolean;
13
- };
14
- type ExpressReq = Request;
15
- type ExpressRes = Response;
16
- type LoginClientInfo = {
17
- ip_address: string;
18
- user_agent?: string | undefined;
19
- };
20
- export type BasicSession = {
21
- /** Must be hard to bruteforce */
22
- sid: string;
23
- /** UNIX millisecond timestamp */
24
- expires: number;
25
- /** On expired */
26
- onExpiration: "redirect" | "show_error";
27
- };
28
- export type AuthClientRequest = {
29
- socket: any;
30
- } | {
31
- httpReq: ExpressReq;
32
- };
33
- export type UserLike = {
34
- id: string;
35
- type: string;
36
- [key: string]: any;
37
- };
38
- export type SessionUser<ServerUser extends UserLike = UserLike, ClientUser extends AnyObject = AnyObject> = {
39
- /**
40
- * This user will be available in all serverside prostgles options
41
- * id and type values will be available in the prostgles.user session variable in postgres
42
- * */
43
- user: ServerUser;
44
- /**
45
- * Controls which fields from user are available in postgres session variable
46
- */
47
- sessionFields?: FieldFilter<ServerUser>;
48
- /**
49
- * User data sent to the authenticated client
50
- */
51
- clientUser: ClientUser;
52
- };
53
- export type AuthResult<SU = SessionUser> = SU & {
54
- sid: string;
55
- } | {
56
- user?: undefined;
57
- clientUser?: undefined;
58
- sid?: string;
59
- } | undefined;
60
- export type AuthRequestParams<S, SUser extends SessionUser> = {
61
- db: DB;
62
- dbo: DBOFullyTyped<S>;
63
- getUser: () => Promise<AuthResult<SUser>>;
64
- };
65
- export type Auth<S = void, SUser extends SessionUser = SessionUser> = {
66
- /**
67
- * Name of the cookie or socket hadnshake query param that represents the session id.
68
- * Defaults to "session_id"
69
- */
70
- sidKeyName?: string;
71
- /**
72
- * Response time rounding in milliseconds to prevent timing attacks on login. Login response time should always be a multiple of this value. Defaults to 500 milliseconds
73
- */
74
- responseThrottle?: number;
75
- expressConfig?: {
76
- /**
77
- * Express app instance. If provided Prostgles will attempt to set sidKeyName to user cookie
78
- */
79
- app: Express;
80
- /**
81
- * Used in allowing logging in through express. Defaults to /login
82
- */
83
- loginRoute?: string;
84
- /**
85
- * Used in allowing logging out through express. Defaults to /logout
86
- */
87
- logoutGetPath?: string;
88
- /**
89
- * Options used in setting the cookie after a successful login
90
- */
91
- cookieOptions?: AnyObject;
92
- /**
93
- * False by default. If false and userRoutes are provided then the socket will request window.location.reload if the current url is on a user route.
94
- */
95
- disableSocketAuthGuard?: boolean;
96
- /**
97
- * If provided, any client requests to NOT these routes (or their subroutes) will be redirected to loginRoute (if logged in) and then redirected back to the initial route after logging in
98
- * If logged in the user is allowed to access these routes
99
- */
100
- publicRoutes?: string[];
101
- /**
102
- * Will attach a app.use listener and will expose getUser
103
- * Used for blocking access
104
- */
105
- use?: (args: {
106
- req: ExpressReq;
107
- res: ExpressRes;
108
- next: NextFunction;
109
- } & AuthRequestParams<S, SUser>) => void | Promise<void>;
110
- /**
111
- * Will be called after a GET request is authorised
112
- * This means that
113
- */
114
- onGetRequestOK?: (req: ExpressReq, res: ExpressRes, params: AuthRequestParams<S, SUser>) => any;
115
- /**
116
- * Name of get url parameter used in redirecting user after successful login.
117
- * Defaults to "returnURL"
118
- */
119
- returnURL?: string;
120
- magicLinks?: {
121
- /**
122
- * Will default to /magic-link
123
- */
124
- route?: string;
125
- /**
126
- * Used in creating a session/logging in using a magic link
127
- */
128
- check: (magicId: string, dbo: DBOFullyTyped<S>, db: DB, client: LoginClientInfo) => Awaitable<BasicSession | undefined>;
129
- };
130
- };
131
- /**
132
- * undefined sid is allowed to enable public users
133
- */
134
- getUser: (sid: string | undefined, dbo: DBOFullyTyped<S>, db: DB, client: AuthClientRequest) => Awaitable<AuthResult<SUser>>;
135
- register?: (params: AnyObject, dbo: DBOFullyTyped<S>, db: DB) => Awaitable<BasicSession> | BasicSession;
136
- login?: (params: AnyObject, dbo: DBOFullyTyped<S>, db: DB, client: LoginClientInfo) => Awaitable<BasicSession> | BasicSession;
137
- logout?: (sid: string | undefined, dbo: DBOFullyTyped<S>, db: DB) => Awaitable<any>;
138
- /**
139
- * If provided then session info will be saved on socket.__prglCache and reused from there
140
- */
141
- cacheSession?: {
142
- getSession: (sid: string | undefined, dbo: DBOFullyTyped<S>, db: DB) => Awaitable<BasicSession>;
143
- };
144
- };
145
- export default class AuthHandler {
146
- protected opts?: Auth;
147
- dbo: DBHandlerServer;
148
- db: DB;
149
- sidKeyName?: string;
150
- routes: {
151
- login?: string;
152
- returnURL?: string;
153
- logoutGetPath?: string;
154
- magicLinks?: {
155
- route: string;
156
- expressRoute: string;
157
- };
158
- readonly catchAll: '*';
159
- };
160
- constructor(prostgles: Prostgles);
161
- validateSid: (sid: string | undefined) => string;
162
- matchesRoute: (route: string | undefined, clientFullRoute: string) => boolean;
163
- isUserRoute: (pathname: string) => boolean;
164
- private setCookieAndGoToReturnURLIFSet;
165
- getUser: (clientReq: {
166
- httpReq: ExpressReq;
167
- }) => Promise<AuthResult>;
168
- init(): Promise<void>;
169
- destroy: () => void;
170
- throttledFunc: <T>(func: () => Promise<T>, throttle?: number) => Promise<T>;
171
- loginThrottled: (params: AnyObject, client: LoginClientInfo) => Promise<BasicSession>;
172
- /**
173
- * Will return first sid value found in : http cookie or query params
174
- * Based on sid names in auth
175
- * @param localParams
176
- * @returns string
177
- */
178
- getSID(localParams: LocalParams): string | undefined;
179
- getClientInfo(localParams: Pick<LocalParams, "socket" | "httpReq">): Promise<AuthResult>;
180
- isValidSocketSession: (socket: PRGLIOSocket, session: BasicSession) => boolean;
181
- makeSocketAuth: (socket: PRGLIOSocket) => Promise<Record<string, never> | {
182
- auth: AuthSocketSchema;
183
- userData: AuthResult;
184
- }>;
185
- }
186
- export {};
187
- //# sourceMappingURL=AuthHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthHandler.d.ts","sourceRoot":"","sources":["AuthHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,SAAS,EAAoE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3H,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7D,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,KAAK,gBAAgB,GAAG;IACtB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,KAAK,UAAU,GAAG,OAAO,CAAC;AAC1B,KAAK,UAAU,GAAG,QAAQ,CAAC;AAE3B,KAAK,eAAe,GAAG;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IAEzB,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;IAEZ,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAEhB,iBAAiB;IACjB,YAAY,EAAE,UAAU,GAAG,YAAY,CAAC;CACzC,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC;AAC1E,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAA;AACD,MAAM,MAAM,WAAW,CAAC,UAAU,SAAS,QAAQ,GAAG,QAAQ,EAAE,UAAU,SAAS,SAAS,GAAG,SAAS,IAAI;IAC1G;;;SAGK;IACL,IAAI,EAAE,UAAU,CAAC;IACjB;;OAEG;IACH,aAAa,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IACxC;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;CACxB,CAAA;AAED,MAAM,MAAM,UAAU,CAAC,EAAE,GAAG,WAAW,IAAI,EAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;CAAE,GAAG;IACjE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,SAAS,CAAA;AAGb,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,KAAK,SAAS,WAAW,IAAI;IAAE,EAAE,EAAE,EAAE,CAAC;IAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;CAAE,CAAA;AAE1I,MAAM,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,SAAS,WAAW,GAAG,WAAW,IAAI;IACpE;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,aAAa,CAAC,EAAE;QACd;;WAEG;QACH,GAAG,EAAE,OAAO,CAAC;QAEb;;WAEG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;QAEpB;;WAEG;QACH,aAAa,CAAC,EAAE,MAAM,CAAC;QAEvB;;WAEG;QACH,aAAa,CAAC,EAAE,SAAS,CAAC;QAE1B;;WAEG;QACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;QAEjC;;;WAGG;QACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QAExB;;;WAGG;QACH,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;YAAE,GAAG,EAAE,UAAU,CAAC;YAAC,GAAG,EAAE,UAAU,CAAC;YAAC,IAAI,EAAE,YAAY,CAAA;SAAE,GAAG,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAE7H;;;WAGG;QACH,cAAc,CAAC,EAAE,CACf,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,KAChC,GAAG,CAAC;QAET;;;WAGG;QACH,SAAS,CAAC,EAAE,MAAM,CAAC;QAEnB,UAAU,CAAC,EAAE;YAEX;;eAEG;YACH,KAAK,CAAC,EAAE,MAAM,CAAC;YAEf;;eAEG;YACH,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,KAAK,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;SACzH,CAAA;KAEF,CAAA;IAED;;OAEG;IACH,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,iBAAiB,KAAK,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAE7H,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,SAAS,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;IACxG,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,KAAK,SAAS,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;IAC9H,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC;IAEpF;;OAEG;IACH,YAAY,CAAC,EAAE;QACb,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,SAAS,CAAC,YAAY,CAAC,CAAA;KAChG,CAAA;CACF,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACtB,GAAG,EAAE,eAAe,CAAC;IACrB,EAAE,EAAE,EAAE,CAAC;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,MAAM,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE;YACX,KAAK,EAAE,MAAM,CAAC;YACd,YAAY,EAAE,MAAM,CAAC;SACtB,CAAA;QACD,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC;KACxB,CAEA;gBAEW,SAAS,EAAE,SAAS;IAsBhC,WAAW,QAAS,MAAM,GAAG,SAAS,YAIrC;IAED,YAAY,UAAW,MAAM,GAAG,SAAS,mBAAmB,MAAM,aAKjE;IAED,WAAW,aAAc,MAAM,aAW9B;IAED,OAAO,CAAC,8BAA8B,CAmCrC;IAED,OAAO,cAAqB;QAAE,OAAO,EAAE,UAAU,CAAC;KAAE,KAAG,QAAQ,UAAU,CAAC,CAczE;IAEK,IAAI;IA4JV,OAAO,aAIN;IAED,aAAa,+DA8BZ;IAED,cAAc,WAAkB,SAAS,UAAU,eAAe,KAAG,QAAQ,YAAY,CAAC,CAqBzF;IAGD;;;;;OAKG;IACH,MAAM,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS;IAsC9C,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAwD9F,oBAAoB,WAAY,YAAY,WAAW,YAAY,KAAG,OAAO,CAc5E;IAED,cAAc,WAAkB,YAAY;cAAmB,gBAAgB;kBAAY,UAAU;OAiFpG;CACF"}