prostgles-server 3.0.155 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AuthHandler.d.ts.map +1 -1
- package/dist/AuthHandler.js +6 -3
- package/dist/AuthHandler.js.map +1 -1
- package/dist/DBEventsManager.d.ts.map +1 -1
- package/dist/DBEventsManager.js +5 -4
- package/dist/DBEventsManager.js.map +1 -1
- package/dist/DBSchemaBuilder.js +14 -14
- package/dist/DBSchemaBuilder.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/Functions.js +1 -1
- package/dist/DboBuilder/QueryBuilder/Functions.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/makeSelectQuery.js.map +1 -1
- package/dist/DboBuilder/TableHandler.js +1 -2
- package/dist/DboBuilder/TableHandler.js.map +1 -1
- package/dist/DboBuilder/ViewHandler.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler.js +10 -8
- package/dist/DboBuilder/ViewHandler.js.map +1 -1
- package/dist/DboBuilder/getCondition.js +1 -1
- package/dist/DboBuilder/getCondition.js.map +1 -1
- package/dist/DboBuilder/insert.js +1 -1
- package/dist/DboBuilder/insert.js.map +1 -1
- package/dist/DboBuilder/insertDataParse.js +4 -3
- package/dist/DboBuilder/insertDataParse.js.map +1 -1
- package/dist/DboBuilder/subscribe.d.ts +2 -2
- package/dist/DboBuilder/subscribe.d.ts.map +1 -1
- package/dist/DboBuilder/subscribe.js +3 -4
- package/dist/DboBuilder/subscribe.js.map +1 -1
- package/dist/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder.js +5 -4
- package/dist/DboBuilder.js.map +1 -1
- package/dist/FileManager.js +1 -1
- package/dist/FileManager.js.map +1 -1
- package/dist/Filtering.js.map +1 -1
- package/dist/JSONBValidation/validation.js.map +1 -1
- package/dist/Prostgles.js +1 -1
- package/dist/Prostgles.js.map +1 -1
- package/dist/PubSubManager/PubSubManager.d.ts +9 -2
- package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/PubSubManager.js +16 -46
- package/dist/PubSubManager/PubSubManager.js.map +1 -1
- package/dist/PubSubManager/addSub.d.ts +2 -1
- package/dist/PubSubManager/addSub.d.ts.map +1 -1
- package/dist/PubSubManager/addSub.js +26 -16
- package/dist/PubSubManager/addSub.js.map +1 -1
- package/dist/PubSubManager/notifListener.d.ts.map +1 -1
- package/dist/PubSubManager/notifListener.js +5 -3
- package/dist/PubSubManager/notifListener.js.map +1 -1
- package/dist/PubSubManager/pushSubData.d.ts +3 -0
- package/dist/PubSubManager/pushSubData.d.ts.map +1 -0
- package/dist/PubSubManager/pushSubData.js +48 -0
- package/dist/PubSubManager/pushSubData.js.map +1 -0
- package/dist/PublishParser.d.ts.map +1 -1
- package/dist/PublishParser.js +4 -3
- package/dist/PublishParser.js.map +1 -1
- package/dist/TableConfig/TableConfig.js.map +1 -1
- package/dist/TableConfig/getConstraintDefinitionQueries.js.map +1 -1
- package/dist/TableConfig/getTableColumnQueries.js.map +1 -1
- package/lib/AuthHandler.d.ts.map +1 -1
- package/lib/AuthHandler.js +6 -3
- package/lib/AuthHandler.ts +12 -7
- package/lib/DBEventsManager.d.ts.map +1 -1
- package/lib/DBEventsManager.js +5 -4
- package/lib/DBEventsManager.ts +10 -9
- package/lib/DBSchemaBuilder.js +14 -14
- package/lib/DBSchemaBuilder.ts +14 -14
- package/lib/DboBuilder/QueryBuilder/Functions.js +1 -1
- package/lib/DboBuilder/QueryBuilder/Functions.ts +2 -2
- package/lib/DboBuilder/QueryBuilder/makeSelectQuery.ts +1 -1
- package/lib/DboBuilder/TableHandler.js +1 -2
- package/lib/DboBuilder/TableHandler.ts +3 -3
- package/lib/DboBuilder/ViewHandler.d.ts.map +1 -1
- package/lib/DboBuilder/ViewHandler.js +10 -8
- package/lib/DboBuilder/ViewHandler.ts +22 -20
- package/lib/DboBuilder/getCondition.js +1 -1
- package/lib/DboBuilder/getCondition.ts +2 -2
- package/lib/DboBuilder/insert.js +1 -1
- package/lib/DboBuilder/insert.ts +1 -1
- package/lib/DboBuilder/insertDataParse.js +4 -3
- package/lib/DboBuilder/insertDataParse.ts +15 -13
- package/lib/DboBuilder/subscribe.d.ts +2 -2
- package/lib/DboBuilder/subscribe.d.ts.map +1 -1
- package/lib/DboBuilder/subscribe.js +3 -4
- package/lib/DboBuilder/subscribe.ts +8 -9
- package/lib/DboBuilder.d.ts.map +1 -1
- package/lib/DboBuilder.js +5 -4
- package/lib/DboBuilder.ts +15 -21
- package/lib/FileManager.js +1 -1
- package/lib/FileManager.ts +5 -5
- package/lib/Filtering.ts +1 -1
- package/lib/JSONBValidation/validation.ts +3 -3
- package/lib/Prostgles.js +1 -1
- package/lib/Prostgles.ts +3 -3
- package/lib/PubSubManager/PubSubManager.d.ts +8 -1
- package/lib/PubSubManager/PubSubManager.d.ts.map +1 -1
- package/lib/PubSubManager/PubSubManager.js +14 -44
- package/lib/PubSubManager/PubSubManager.ts +17 -44
- package/lib/PubSubManager/addSub.d.ts +2 -1
- package/lib/PubSubManager/addSub.d.ts.map +1 -1
- package/lib/PubSubManager/addSub.js +26 -16
- package/lib/PubSubManager/addSub.ts +28 -20
- package/lib/PubSubManager/notifListener.d.ts.map +1 -1
- package/lib/PubSubManager/notifListener.js +5 -3
- package/lib/PubSubManager/notifListener.ts +5 -3
- package/lib/PubSubManager/pushSubData.d.ts +3 -0
- package/lib/PubSubManager/pushSubData.d.ts.map +1 -0
- package/lib/PubSubManager/pushSubData.js +47 -0
- package/lib/PubSubManager/pushSubData.ts +47 -0
- package/lib/PublishParser.d.ts.map +1 -1
- package/lib/PublishParser.js +4 -3
- package/lib/PublishParser.ts +4 -3
- package/lib/TableConfig/TableConfig.ts +7 -7
- package/lib/TableConfig/getConstraintDefinitionQueries.ts +1 -1
- package/lib/TableConfig/getTableColumnQueries.ts +2 -2
- package/package.json +2 -2
- package/tests/client/PID.txt +1 -1
- package/tests/client/package-lock.json +15 -15
- package/tests/client/package.json +1 -1
- package/tests/server/DBoGenerated.d.ts +2 -2
- package/tests/server/package-lock.json +3 -3
- package/tsconfig.json +1 -1
|
@@ -35,7 +35,7 @@ export async function getCondition(
|
|
|
35
35
|
const ERR = "Invalid exists filter. \nExpecting somethibng like: \n | { $exists: { tableName.tableName2: Filter } } \n | { $exists: { \"**.tableName3\": Filter } }\n | { path: string[]; filter: AnyObject }"
|
|
36
36
|
const SP_WILDCARD = "**";
|
|
37
37
|
const exists: ExistsFilterConfig[] = getKeys(filter)
|
|
38
|
-
.filter(k => EXISTS_KEYS.includes(k as EXISTS_KEY) && Object.keys(filter[k] ?? {}).length)
|
|
38
|
+
.filter((k ): k is typeof EXISTS_KEYS[number] => EXISTS_KEYS.includes(k as EXISTS_KEY) && !!Object.keys(filter[k] ?? {}).length)
|
|
39
39
|
.map(key => {
|
|
40
40
|
|
|
41
41
|
const isJoined = key.toLowerCase().includes("join");
|
|
@@ -49,7 +49,7 @@ export async function getCondition(
|
|
|
49
49
|
const dataKeys = Object.keys(filterValue);
|
|
50
50
|
const isDetailed = dataKeys.length === 2 && dataKeys.every(key => ["path", "filter"].includes(key));
|
|
51
51
|
|
|
52
|
-
const firstKey = dataKeys[0]
|
|
52
|
+
const firstKey = dataKeys[0]!;
|
|
53
53
|
|
|
54
54
|
/**
|
|
55
55
|
* Prevent some errors with table names that contain "."
|
package/lib/DboBuilder/insert.js
CHANGED
|
@@ -37,7 +37,7 @@ async function insert(rowOrRows, param2, param3_unused, tableRules, localParams)
|
|
|
37
37
|
const keys = Object.keys(forcedData);
|
|
38
38
|
if (keys.length) {
|
|
39
39
|
const dataCols = keys.filter(k => this.column_names.includes(k));
|
|
40
|
-
const nestedInsertCols = keys.filter(k => !this.column_names.includes(k) && this.dboBuilder.dbo[k]
|
|
40
|
+
const nestedInsertCols = keys.filter(k => !this.column_names.includes(k) && this.dboBuilder.dbo[k]?.insert);
|
|
41
41
|
if (nestedInsertCols.length) {
|
|
42
42
|
throw `Nested insert not supported for forcedData rule: ${nestedInsertCols}`;
|
|
43
43
|
}
|
package/lib/DboBuilder/insert.ts
CHANGED
|
@@ -45,7 +45,7 @@ export async function insert(this: TableHandler, rowOrRows: (AnyObject | AnyObje
|
|
|
45
45
|
const keys = Object.keys(forcedData);
|
|
46
46
|
if (keys.length) {
|
|
47
47
|
const dataCols = keys.filter(k => this.column_names.includes(k));
|
|
48
|
-
const nestedInsertCols = keys.filter(k => !this.column_names.includes(k) && this.dboBuilder.dbo[k]
|
|
48
|
+
const nestedInsertCols = keys.filter(k => !this.column_names.includes(k) && this.dboBuilder.dbo[k]?.insert);
|
|
49
49
|
if(nestedInsertCols.length){
|
|
50
50
|
throw `Nested insert not supported for forcedData rule: ${nestedInsertCols}`;
|
|
51
51
|
}
|
|
@@ -164,8 +164,8 @@ async function insertDataParse(data, param2, param3_unused, tableRules, _localPa
|
|
|
164
164
|
throw "Only media allowed to have nested inserts more than 2 tables apart";
|
|
165
165
|
}
|
|
166
166
|
/* We expect tbl2 to have only 2 columns (media_id and foreign_id) */
|
|
167
|
-
if (!cols2 || !(cols2.filter(c => c.references?.[0]
|
|
168
|
-
cols2.filter(c => c.references?.[0]
|
|
167
|
+
if (!cols2 || !(cols2.filter(c => c.references?.[0]?.ftable === fileTable).length === 1 &&
|
|
168
|
+
cols2.filter(c => c.references?.[0]?.ftable === _this.name).length === 1)) {
|
|
169
169
|
console.log({ tbl1, tbl2, tbl3, name: _this.name, tthisName: this.name });
|
|
170
170
|
throw "Second joining table (" + tbl2 + ") not of expected format. Must contain exactly one reference column for each table (file table and target table) ";
|
|
171
171
|
}
|
|
@@ -235,8 +235,9 @@ const getJoinPath = async (tableHandler, targetTable) => {
|
|
|
235
235
|
const referencedInsert = async (tableHandler, dbTX, localParams, targetTable, targetData) => {
|
|
236
236
|
const thisInfo = await tableHandler.getInfo();
|
|
237
237
|
await getJoinPath(tableHandler, targetTable);
|
|
238
|
-
if (!targetData || !dbTX?.[targetTable] || !("insert" in dbTX[targetTable]))
|
|
238
|
+
if (!targetData || !dbTX?.[targetTable] || !("insert" in dbTX[targetTable])) {
|
|
239
239
|
throw new Error("childInsertErr: Table handler missing for referenced table: " + targetTable);
|
|
240
|
+
}
|
|
240
241
|
const childRules = await canInsert(tableHandler, targetTable, localParams);
|
|
241
242
|
if (thisInfo.has_media === "one" && thisInfo.media_table_name === targetTable && Array.isArray(targetData) && targetData.length > 1) {
|
|
242
243
|
throw "Constraint check fail: Cannot insert more than one record into " + JSON.stringify(targetTable);
|
|
@@ -65,9 +65,9 @@ export async function insertDataParse(
|
|
|
65
65
|
}
|
|
66
66
|
if (insertedCol) {
|
|
67
67
|
return {
|
|
68
|
-
tableName: insertedCol.references![0]
|
|
68
|
+
tableName: insertedCol.references![0]!.ftable!,
|
|
69
69
|
col: insertedCol.name,
|
|
70
|
-
fcol: insertedCol.references![0]
|
|
70
|
+
fcol: insertedCol.references![0]!.fcols[0]!
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
return undefined;
|
|
@@ -145,11 +145,11 @@ export async function insertDataParse(
|
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
147
|
const colRows = await referencedInsert(_this, dbTX, newLocalParams, colInsert.tableName, row[colInsert.col]);
|
|
148
|
-
if (!Array.isArray(colRows) || colRows.length !== 1 || [null, undefined].includes(colRows[0][colInsert.fcol])) {
|
|
148
|
+
if (!Array.isArray(colRows) || colRows.length !== 1 || [null, undefined].includes(colRows[0]![colInsert.fcol])) {
|
|
149
149
|
throw new Error("Could not do nested column insert: Unexpected return " + JSON.stringify(colRows))
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
const foreignKey = colRows[0][colInsert.fcol];
|
|
152
|
+
const foreignKey = colRows[0]![colInsert.fcol];
|
|
153
153
|
rootData[colInsert.col] = foreignKey;
|
|
154
154
|
}
|
|
155
155
|
}
|
|
@@ -179,8 +179,8 @@ export async function insertDataParse(
|
|
|
179
179
|
const [tbl1, tbl2, tbl3] = path;
|
|
180
180
|
targetTableRules = await canInsert(this, targetTable, localParams); // tbl3
|
|
181
181
|
|
|
182
|
-
const cols2 = this.dboBuilder.dbo[tbl2]
|
|
183
|
-
if (!this.dboBuilder.dbo[tbl2]) throw "Invalid/disallowed table: " + tbl2;
|
|
182
|
+
const cols2 = this.dboBuilder.dbo[tbl2!]!.columns || [];
|
|
183
|
+
if (!this.dboBuilder.dbo[tbl2!]) throw "Invalid/disallowed table: " + tbl2;
|
|
184
184
|
const colsRefT1 = cols2?.filter(c => c.references?.some(rc => rc.cols.length === 1 && rc.ftable === tbl1));
|
|
185
185
|
|
|
186
186
|
|
|
@@ -196,7 +196,7 @@ export async function insertDataParse(
|
|
|
196
196
|
childDataItems.map((d: AnyObject) => {
|
|
197
197
|
const result = { ...d };
|
|
198
198
|
colsRefT1.map(col => {
|
|
199
|
-
result[col.references![0]
|
|
199
|
+
result[col.references![0]!.cols[0]!] = fullRootResult[col.references![0]!.fcols[0]!]
|
|
200
200
|
})
|
|
201
201
|
return result;
|
|
202
202
|
}),
|
|
@@ -216,8 +216,8 @@ export async function insertDataParse(
|
|
|
216
216
|
|
|
217
217
|
/* We expect tbl2 to have only 2 columns (media_id and foreign_id) */
|
|
218
218
|
if (!cols2 || !(
|
|
219
|
-
cols2.filter(c => c.references?.[0]
|
|
220
|
-
cols2.filter(c => c.references?.[0]
|
|
219
|
+
cols2.filter(c => c.references?.[0]?.ftable === fileTable).length === 1 &&
|
|
220
|
+
cols2.filter(c => c.references?.[0]?.ftable === _this.name).length === 1
|
|
221
221
|
)) {
|
|
222
222
|
console.log({ tbl1, tbl2, tbl3, name: _this.name, tthisName: this.name })
|
|
223
223
|
throw "Second joining table (" + tbl2 + ") not of expected format. Must contain exactly one reference column for each table (file table and target table) ";
|
|
@@ -230,14 +230,14 @@ export async function insertDataParse(
|
|
|
230
230
|
const tbl2Row: AnyObject = {};
|
|
231
231
|
|
|
232
232
|
colsRefT3.map(col => {
|
|
233
|
-
tbl2Row[col.name] = t3Child[col.references![0]
|
|
233
|
+
tbl2Row[col.name] = t3Child[col.references![0]!.fcols[0]!];
|
|
234
234
|
})
|
|
235
235
|
colsRefT1.map(col => {
|
|
236
|
-
tbl2Row[col.name] = fullRootResult[col.references![0]
|
|
236
|
+
tbl2Row[col.name] = fullRootResult[col.references![0]!.fcols[0]!];
|
|
237
237
|
})
|
|
238
238
|
// console.log({ rootResult, tbl2Row, t3Child, colsRefT3, colsRefT1, t: this.t?.ctx?.start });
|
|
239
239
|
|
|
240
|
-
await childInsert(tbl2Row, tbl2);//.then(() => {});
|
|
240
|
+
await childInsert(tbl2Row, tbl2!);//.then(() => {});
|
|
241
241
|
}));
|
|
242
242
|
|
|
243
243
|
} else {
|
|
@@ -307,7 +307,9 @@ const referencedInsert = async (tableHandler: TableHandler, dbTX: TableHandlers
|
|
|
307
307
|
const thisInfo = await tableHandler.getInfo();
|
|
308
308
|
await getJoinPath(tableHandler, targetTable);
|
|
309
309
|
|
|
310
|
-
if (!targetData || !dbTX?.[targetTable] || !("insert" in dbTX[targetTable]))
|
|
310
|
+
if (!targetData || !dbTX?.[targetTable] || !("insert" in dbTX[targetTable]!)) {
|
|
311
|
+
throw new Error("childInsertErr: Table handler missing for referenced table: " + targetTable);
|
|
312
|
+
}
|
|
311
313
|
|
|
312
314
|
const childRules = await canInsert(tableHandler, targetTable, localParams);
|
|
313
315
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnyObject, SubscribeParams } from "prostgles-types";
|
|
1
|
+
import { AnyObject, SubscribeParams, SubscriptionChannels } from "prostgles-types";
|
|
2
2
|
import { Filter, LocalParams } from "../DboBuilder";
|
|
3
3
|
import { TableRule } from "../PublishParser";
|
|
4
4
|
import { ViewHandler } from "./ViewHandler";
|
|
@@ -6,6 +6,6 @@ export type LocalFunc = (items: AnyObject[]) => any;
|
|
|
6
6
|
declare function subscribe(this: ViewHandler, filter: Filter, params: SubscribeParams, localFunc: LocalFunc): Promise<{
|
|
7
7
|
unsubscribe: () => any;
|
|
8
8
|
}>;
|
|
9
|
-
declare function subscribe(this: ViewHandler, filter: Filter, params: SubscribeParams, localFunc: undefined, table_rules: TableRule | undefined, localParams: LocalParams): Promise<
|
|
9
|
+
declare function subscribe(this: ViewHandler, filter: Filter, params: SubscribeParams, localFunc: undefined, table_rules: TableRule | undefined, localParams: LocalParams): Promise<SubscriptionChannels>;
|
|
10
10
|
export { subscribe };
|
|
11
11
|
//# sourceMappingURL=subscribe.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["subscribe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["subscribe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAc,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC;AAEpD,iBAAe,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,GAAG,CAAA;CAAE,CAAC,CAAA;AAC/I,iBAAe,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,GAAG,SAAS,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;AAqFvM,OAAO,EAAE,SAAS,EAAE,CAAA"}
|
|
@@ -42,24 +42,23 @@ async function subscribe(filter, params, localFunc, table_rules, localParams) {
|
|
|
42
42
|
throttle,
|
|
43
43
|
last_throttled: 0,
|
|
44
44
|
};
|
|
45
|
+
const pubSubManager = await this.dboBuilder.getPubSubManager();
|
|
45
46
|
if (!localFunc) {
|
|
46
47
|
const { socket } = localParams ?? {};
|
|
47
|
-
const pubSubManager = await this.dboBuilder.getPubSubManager();
|
|
48
48
|
return pubSubManager.addSub({
|
|
49
49
|
...commonSubOpts,
|
|
50
50
|
socket,
|
|
51
51
|
func: undefined,
|
|
52
52
|
socket_id: socket?.id,
|
|
53
|
-
})
|
|
53
|
+
});
|
|
54
54
|
}
|
|
55
55
|
else {
|
|
56
|
-
const pubSubManager = await this.dboBuilder.getPubSubManager();
|
|
57
56
|
pubSubManager.addSub({
|
|
58
57
|
...commonSubOpts,
|
|
59
58
|
socket: undefined,
|
|
60
59
|
func: localFunc,
|
|
61
60
|
socket_id: undefined,
|
|
62
|
-
})
|
|
61
|
+
});
|
|
63
62
|
const unsubscribe = async () => {
|
|
64
63
|
const pubSubManager = await this.dboBuilder.getPubSubManager();
|
|
65
64
|
pubSubManager.removeLocalSub(this.name, condition, localFunc);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnyObject, SubscribeParams } from "prostgles-types";
|
|
1
|
+
import { AnyObject, SubscribeParams, SubscriptionChannels } from "prostgles-types";
|
|
2
2
|
import { Filter, LocalParams, parseError } from "../DboBuilder";
|
|
3
3
|
import { TableRule } from "../PublishParser";
|
|
4
4
|
import { omitKeys } from "../PubSubManager/PubSubManager";
|
|
@@ -8,8 +8,8 @@ import { getSubscribeRelatedTables } from "./getSubscribeRelatedTables";
|
|
|
8
8
|
export type LocalFunc = (items: AnyObject[]) => any;
|
|
9
9
|
|
|
10
10
|
async function subscribe(this: ViewHandler, filter: Filter, params: SubscribeParams, localFunc: LocalFunc): Promise<{ unsubscribe: () => any }>
|
|
11
|
-
async function subscribe(this: ViewHandler, filter: Filter, params: SubscribeParams, localFunc: undefined, table_rules: TableRule | undefined, localParams: LocalParams): Promise<
|
|
12
|
-
async function subscribe(this: ViewHandler, filter: Filter, params: SubscribeParams, localFunc?: LocalFunc, table_rules?: TableRule, localParams?: LocalParams): Promise<{ unsubscribe: () => any } |
|
|
11
|
+
async function subscribe(this: ViewHandler, filter: Filter, params: SubscribeParams, localFunc: undefined, table_rules: TableRule | undefined, localParams: LocalParams): Promise<SubscriptionChannels>
|
|
12
|
+
async function subscribe(this: ViewHandler, filter: Filter, params: SubscribeParams, localFunc?: LocalFunc, table_rules?: TableRule, localParams?: LocalParams): Promise<{ unsubscribe: () => any } | SubscriptionChannels>
|
|
13
13
|
{
|
|
14
14
|
|
|
15
15
|
try {
|
|
@@ -60,27 +60,26 @@ async function subscribe(this: ViewHandler, filter: Filter, params: SubscribePar
|
|
|
60
60
|
last_throttled: 0,
|
|
61
61
|
} as const;
|
|
62
62
|
|
|
63
|
+
const pubSubManager = await this.dboBuilder.getPubSubManager();
|
|
63
64
|
if (!localFunc) {
|
|
64
65
|
|
|
65
66
|
const { socket } = localParams ?? {};
|
|
66
|
-
const pubSubManager = await this.dboBuilder.getPubSubManager();
|
|
67
67
|
return pubSubManager.addSub({
|
|
68
68
|
...commonSubOpts,
|
|
69
69
|
socket,
|
|
70
70
|
func: undefined,
|
|
71
71
|
socket_id: socket?.id,
|
|
72
|
-
})
|
|
73
|
-
|
|
72
|
+
});
|
|
73
|
+
|
|
74
74
|
} else {
|
|
75
75
|
|
|
76
|
-
const pubSubManager = await this.dboBuilder.getPubSubManager();
|
|
77
76
|
pubSubManager.addSub({
|
|
78
77
|
...commonSubOpts,
|
|
79
78
|
socket: undefined,
|
|
80
79
|
func: localFunc,
|
|
81
80
|
socket_id: undefined,
|
|
82
|
-
})
|
|
83
|
-
|
|
81
|
+
});
|
|
82
|
+
|
|
84
83
|
const unsubscribe = async () => {
|
|
85
84
|
const pubSubManager = await this.dboBuilder.getPubSubManager();
|
|
86
85
|
pubSubManager.removeLocalSub(this.name, condition, localFunc)
|
package/lib/DboBuilder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DboBuilder.d.ts","sourceRoot":"","sources":["DboBuilder.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,GAAG,QAAQ,iCAAiC,CAAC,CAAC;AACvD,OAAO,EACL,UAAU,EAAE,UAAU,EACtB,WAAW,EACX,uBAAuB,EACvB,WAAW,EACX,SAAS,IAAI,KAAK,EAClB,UAAU,EACV,SAAS,
|
|
1
|
+
{"version":3,"file":"DboBuilder.d.ts","sourceRoot":"","sources":["DboBuilder.ts"],"names":[],"mappings":"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"}
|
package/lib/DboBuilder.js
CHANGED
|
@@ -73,12 +73,12 @@ function canBeUsedAsIsInTypescript(str) {
|
|
|
73
73
|
if (!str)
|
|
74
74
|
return false;
|
|
75
75
|
const isAlphaNumericOrUnderline = str.match(/^[a-z0-9_]+$/i);
|
|
76
|
-
const startsWithCharOrUnderscore = str[0]
|
|
76
|
+
const startsWithCharOrUnderscore = str[0]?.match(/^[a-z_]+$/i);
|
|
77
77
|
return Boolean(isAlphaNumericOrUnderline && startsWithCharOrUnderscore);
|
|
78
78
|
}
|
|
79
79
|
function escapeTSNames(str, capitalize = false) {
|
|
80
80
|
let res = str;
|
|
81
|
-
res = (capitalize ? str[0]
|
|
81
|
+
res = (capitalize ? str[0]?.toUpperCase() : str[0]) + str.slice(1);
|
|
82
82
|
if (canBeUsedAsIsInTypescript(res))
|
|
83
83
|
return res;
|
|
84
84
|
return JSON.stringify(res);
|
|
@@ -103,8 +103,9 @@ function makeErrorFromPGError(err, localParams, view, allowedKeys) {
|
|
|
103
103
|
if (constraint) {
|
|
104
104
|
const cols = view.columns.filter(c => (!allowedKeys || allowedKeys.includes(c.name)) &&
|
|
105
105
|
constraint.conkey.includes(c.ordinal_position));
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
const [firstCol] = cols;
|
|
107
|
+
if (firstCol) {
|
|
108
|
+
errObject.column = firstCol.name;
|
|
108
109
|
errObject.columns = cols.map(c => c.name);
|
|
109
110
|
}
|
|
110
111
|
}
|
package/lib/DboBuilder.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import * as Bluebird from "bluebird";
|
|
8
8
|
|
|
9
9
|
import * as pgPromise from 'pg-promise';
|
|
10
|
-
import {
|
|
10
|
+
import { runSQL } from "./DboBuilder/runSQL";
|
|
11
11
|
import pg = require('pg-promise/typescript/pg-subset');
|
|
12
12
|
import {
|
|
13
13
|
ColumnInfo, SQLOptions,
|
|
@@ -17,10 +17,9 @@ import {
|
|
|
17
17
|
TableInfo as TInfo,
|
|
18
18
|
SQLHandler,
|
|
19
19
|
AnyObject,
|
|
20
|
-
SQLResult,
|
|
21
|
-
Select,
|
|
20
|
+
SQLResult,
|
|
22
21
|
JoinMaker,
|
|
23
|
-
isObject,
|
|
22
|
+
isObject, getKeys, ProstglesError, _PG_geometric, EXISTS_KEY
|
|
24
23
|
} from "prostgles-types";
|
|
25
24
|
|
|
26
25
|
export type SortItem = {
|
|
@@ -207,13 +206,13 @@ function snakify(str: string, capitalize = false): string {
|
|
|
207
206
|
function canBeUsedAsIsInTypescript(str: string): boolean {
|
|
208
207
|
if (!str) return false;
|
|
209
208
|
const isAlphaNumericOrUnderline = str.match(/^[a-z0-9_]+$/i);
|
|
210
|
-
const startsWithCharOrUnderscore = str[0]
|
|
209
|
+
const startsWithCharOrUnderscore = str[0]?.match(/^[a-z_]+$/i);
|
|
211
210
|
return Boolean(isAlphaNumericOrUnderline && startsWithCharOrUnderscore);
|
|
212
211
|
}
|
|
213
212
|
|
|
214
213
|
export function escapeTSNames(str: string, capitalize = false): string {
|
|
215
214
|
let res = str;
|
|
216
|
-
res = (capitalize ? str[0]
|
|
215
|
+
res = (capitalize ? str[0]?.toUpperCase() : str[0]) + str.slice(1);
|
|
217
216
|
if (canBeUsedAsIsInTypescript(res)) return res;
|
|
218
217
|
return JSON.stringify(res);
|
|
219
218
|
}
|
|
@@ -227,11 +226,6 @@ export type Aggregation = {
|
|
|
227
226
|
|
|
228
227
|
export type Filter = AnyObject | { $and: Filter[] } | { $or: Filter[] };
|
|
229
228
|
|
|
230
|
-
type SelectFunc = {
|
|
231
|
-
alias: string;
|
|
232
|
-
getQuery: (alias: string, tableAlias?: string) => string;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
229
|
export type JoinInfo = {
|
|
236
230
|
expectOne?: boolean,
|
|
237
231
|
paths: {
|
|
@@ -355,8 +349,9 @@ export function makeErrorFromPGError(err: any, localParams?: LocalParams, view?:
|
|
|
355
349
|
(!allowedKeys || allowedKeys.includes(c.name)) &&
|
|
356
350
|
constraint.conkey.includes(c.ordinal_position)
|
|
357
351
|
);
|
|
358
|
-
|
|
359
|
-
|
|
352
|
+
const [firstCol] = cols;
|
|
353
|
+
if (firstCol) {
|
|
354
|
+
errObject.column = firstCol.name;
|
|
360
355
|
errObject.columns = cols.map(c => c.name);
|
|
361
356
|
}
|
|
362
357
|
}
|
|
@@ -590,16 +585,16 @@ export class DboBuilder {
|
|
|
590
585
|
this.joinGraph = {};
|
|
591
586
|
this.joins.forEach(({ tables }) => {
|
|
592
587
|
const _t = tables.slice().sort(),
|
|
593
|
-
t1 = _t[0]
|
|
594
|
-
t2 = _t[1]
|
|
588
|
+
t1 = _t[0]!,
|
|
589
|
+
t2 = _t[1]!;
|
|
595
590
|
|
|
596
591
|
if (t1 === t2) return;
|
|
597
592
|
|
|
598
593
|
this.joinGraph![t1] ??= {};
|
|
599
|
-
this.joinGraph![t1][t2] = 1;
|
|
594
|
+
this.joinGraph![t1]![t2] = 1;
|
|
600
595
|
|
|
601
596
|
this.joinGraph![t2] ??= {};
|
|
602
|
-
this.joinGraph![t2][t1] = 1;
|
|
597
|
+
this.joinGraph![t2]![t1] = 1;
|
|
603
598
|
});
|
|
604
599
|
const tables = Array.from(new Set(this.joins.flatMap(t => t.tables)));
|
|
605
600
|
this.joinPaths = [];
|
|
@@ -734,9 +729,8 @@ export class DboBuilder {
|
|
|
734
729
|
dbTX.sql = this.runSQL;
|
|
735
730
|
}
|
|
736
731
|
getKeys(dbTX).map(k => {
|
|
737
|
-
dbTX[k]
|
|
738
|
-
});
|
|
739
|
-
|
|
732
|
+
dbTX[k]!.dbTX = dbTX;
|
|
733
|
+
});
|
|
740
734
|
dbTX.sql = (q, args, opts, localP) => this.runSQL(q, args, opts, { tx: { dbTX, t }, ...(localP ?? {}) })
|
|
741
735
|
|
|
742
736
|
return cb(dbTX, t);
|
|
@@ -1315,7 +1309,7 @@ async function getInferredJoins2(schema: TableSchema[]): Promise<Join[]> {
|
|
|
1315
1309
|
tov.columns.map(col => {
|
|
1316
1310
|
if (col.references) {
|
|
1317
1311
|
col.references.forEach(r => {
|
|
1318
|
-
const joinCols = r.cols.map((c, i) => ({ col1: c, col2: r.fcols[i] }));
|
|
1312
|
+
const joinCols = r.cols.map((c, i) => ({ col1: c, col2: r.fcols[i]! }));
|
|
1319
1313
|
let type: Join["type"] = "one-many";
|
|
1320
1314
|
const ftablePkeys = schema.find(_tov => _tov.name === r.ftable)?.columns.filter(fcol => fcol.is_pkey);
|
|
1321
1315
|
if (ftablePkeys?.length && ftablePkeys.every(fkey => r.fcols.includes(fkey.name))) {
|
package/lib/FileManager.js
CHANGED
|
@@ -613,7 +613,7 @@ const getFileTypeFromFilename = (fileName) => {
|
|
|
613
613
|
const nameParts = fileName.split(".");
|
|
614
614
|
if (nameParts.length < 2)
|
|
615
615
|
return undefined;
|
|
616
|
-
const nameExt = nameParts
|
|
616
|
+
const nameExt = nameParts.at(-1).toLowerCase(), mime = (0, prostgles_types_1.getKeys)(prostgles_types_1.CONTENT_TYPE_TO_EXT).find(k => prostgles_types_1.CONTENT_TYPE_TO_EXT[k].includes(nameExt));
|
|
617
617
|
if (!mime)
|
|
618
618
|
return undefined;
|
|
619
619
|
return {
|
package/lib/FileManager.ts
CHANGED
|
@@ -202,7 +202,7 @@ export default class FileManager {
|
|
|
202
202
|
const tableConfig = config.referencedTables?.[tableName];
|
|
203
203
|
|
|
204
204
|
if(tableConfig && isObject(tableConfig) && tableConfig.referenceColumns[colName]){
|
|
205
|
-
const colConfig = tableConfig.referenceColumns[colName]
|
|
205
|
+
const colConfig = tableConfig.referenceColumns[colName]!;
|
|
206
206
|
if(colConfig.maxFileSizeMB){
|
|
207
207
|
const actualBufferSize = Buffer.byteLength(buffer);
|
|
208
208
|
if((actualBufferSize/1e6) > colConfig.maxFileSizeMB){
|
|
@@ -551,7 +551,7 @@ export default class FileManager {
|
|
|
551
551
|
if(!this.dbo[refTable]) throw `Referenced table (${refTable}) from fileTable.referencedTables prostgles init config does not exist`;
|
|
552
552
|
const cols = await (this.dbo[refTable] as TableHandler).getColumns();
|
|
553
553
|
|
|
554
|
-
const tableConfig = referencedTables[refTable]
|
|
554
|
+
const tableConfig = referencedTables[refTable]!;
|
|
555
555
|
if(typeof tableConfig !== "string"){
|
|
556
556
|
|
|
557
557
|
for await (const colName of getKeys(tableConfig.referenceColumns)){
|
|
@@ -595,7 +595,7 @@ export default class FileManager {
|
|
|
595
595
|
console.error(`Could not make link table for ${refTable}. ${pKeyFields} must have exactly one primary key column. Current pkeys: ${pKeyFields.map(f => f.name)}`);
|
|
596
596
|
}
|
|
597
597
|
|
|
598
|
-
const pkField = pKeyFields[0]
|
|
598
|
+
const pkField = pKeyFields[0]!;
|
|
599
599
|
const refType = referencedTables[refTable];
|
|
600
600
|
|
|
601
601
|
if(!this.dbo[lookupTableName]){
|
|
@@ -612,7 +612,7 @@ export default class FileManager {
|
|
|
612
612
|
console.log(`Created ${action}`);
|
|
613
613
|
|
|
614
614
|
} else {
|
|
615
|
-
const cols = await this.dbo[lookupTableName]
|
|
615
|
+
const cols = await this.dbo[lookupTableName]!.getColumns!();
|
|
616
616
|
const badCols = cols.filter(c => !c.references);
|
|
617
617
|
await Promise.all(badCols.map(async badCol => {
|
|
618
618
|
console.error(
|
|
@@ -741,7 +741,7 @@ export const getFileTypeFromFilename = (fileName: string): { mime: ALLOWED_CONTE
|
|
|
741
741
|
|
|
742
742
|
if(nameParts.length < 2) return undefined;
|
|
743
743
|
|
|
744
|
-
const nameExt = nameParts
|
|
744
|
+
const nameExt = nameParts.at(-1)!.toLowerCase(),
|
|
745
745
|
mime = getKeys(CONTENT_TYPE_TO_EXT).find(k => (CONTENT_TYPE_TO_EXT[k] as readonly string[]).includes(nameExt));
|
|
746
746
|
|
|
747
747
|
if(!mime) return undefined;
|
package/lib/Filtering.ts
CHANGED
|
@@ -17,7 +17,7 @@ export function validate<T>(obj: T, key: keyof T, rawFieldType: JSONB.FieldType)
|
|
|
17
17
|
if ("type" in fieldType && fieldType.type) {
|
|
18
18
|
if (typeof fieldType.type !== "string") {
|
|
19
19
|
getKeys(fieldType.type).forEach(subKey => {
|
|
20
|
-
validate(val, subKey as any, (fieldType.type as JSONB.ObjectType["type"])[subKey])
|
|
20
|
+
validate(val, subKey as any, (fieldType.type as JSONB.ObjectType["type"])[subKey]!)
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
23
|
err += fieldType.type;
|
|
@@ -35,7 +35,7 @@ export function validate<T>(obj: T, key: keyof T, rawFieldType: JSONB.FieldType)
|
|
|
35
35
|
|
|
36
36
|
export function validateSchema<S extends JSONB.ObjectType["type"]>(schema: S, obj: JSONB.GetObjectType<S>, objName?: string, optional = false) {
|
|
37
37
|
if ((!schema || isEmpty(schema)) && !optional) throw new Error(`Expecting ${objName} to be defined`);
|
|
38
|
-
getKeys(schema).forEach(k => validate(obj as any, k, schema[k]));
|
|
38
|
+
getKeys(schema).forEach(k => validate(obj as any, k, schema[k]!));
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
|
|
@@ -67,7 +67,7 @@ export function getJSONBSchemaTSTypes(schema: JSONB.JSONBSchema, colOpts: ColOpt
|
|
|
67
67
|
const { type } = fieldType;
|
|
68
68
|
const spacing = isOneOf ? " " : " ";
|
|
69
69
|
let objDef = ` {${spacing}` + getKeys(type).map(k => {
|
|
70
|
-
const fieldType = getFieldTypeObj(type[k]);
|
|
70
|
+
const fieldType = getFieldTypeObj(type[k]!);
|
|
71
71
|
return `${spacing}${k}${fieldType.optional ? "?" : ""}: ` + addSemicolonIfMissing(getFieldType(fieldType, true, undefined, depth + 1));
|
|
72
72
|
}).join(" ") + `${spacing}}`;
|
|
73
73
|
if(!isOneOf){
|
package/lib/Prostgles.js
CHANGED
|
@@ -616,7 +616,7 @@ class Prostgles {
|
|
|
616
616
|
const joinTables2 = [];
|
|
617
617
|
if (this.opts.joins) {
|
|
618
618
|
const _joinTables2 = this.dboBuilder.getJoinPaths()
|
|
619
|
-
.filter(jp => ![jp.t1, jp.t2].find(t => !schema[t] || !schema[t]
|
|
619
|
+
.filter(jp => ![jp.t1, jp.t2].find(t => !schema[t] || !schema[t]?.findOne)).map(jp => [jp.t1, jp.t2].sort());
|
|
620
620
|
_joinTables2.map(jt => {
|
|
621
621
|
if (!joinTables2.find(_jt => _jt.join() === jt.join())) {
|
|
622
622
|
joinTables2.push(jt);
|
package/lib/Prostgles.ts
CHANGED
|
@@ -804,7 +804,7 @@ export class Prostgles {
|
|
|
804
804
|
const clientInfo = await this.authHandler.getClientInfo({ socket });
|
|
805
805
|
const valid_table_command_rules = await this.publishParser.getValidatedRequestRule({ tableName, command, localParams: { socket } }, clientInfo);
|
|
806
806
|
if (valid_table_command_rules) {
|
|
807
|
-
const res = await this.dbo[tableName][command]!(param1, param2, param3, valid_table_command_rules, { socket, isRemoteRequest: true });
|
|
807
|
+
const res = await this.dbo[tableName]![command]!(param1, param2, param3, valid_table_command_rules, { socket, isRemoteRequest: true });
|
|
808
808
|
cb(null, res);
|
|
809
809
|
} else throw `Invalid OR disallowed request: ${tableName}.${command} `;
|
|
810
810
|
|
|
@@ -837,7 +837,7 @@ export class Prostgles {
|
|
|
837
837
|
cb("Disallowed/missing method " + JSON.stringify(method));
|
|
838
838
|
} else {
|
|
839
839
|
try {
|
|
840
|
-
const methodDef = methods[method]
|
|
840
|
+
const methodDef = methods[method]!;
|
|
841
841
|
const onRun = (typeof methodDef === "function" || typeof (methodDef as any).then === "function")? (methodDef as Function) : methodDef.run;
|
|
842
842
|
const res = await onRun(...params);
|
|
843
843
|
cb(null, res);
|
|
@@ -919,7 +919,7 @@ export class Prostgles {
|
|
|
919
919
|
if (this.opts.joins) {
|
|
920
920
|
const _joinTables2 = this.dboBuilder.getJoinPaths()
|
|
921
921
|
.filter(jp =>
|
|
922
|
-
![jp.t1, jp.t2].find(t => !schema[t] || !schema[t]
|
|
922
|
+
![jp.t1, jp.t2].find(t => !schema[t] || !schema[t]?.findOne)
|
|
923
923
|
).map(jp => [jp.t1, jp.t2].sort());
|
|
924
924
|
_joinTables2.map(jt => {
|
|
925
925
|
if (!joinTables2.find(_jt => _jt.join() === jt.join())) {
|
|
@@ -142,7 +142,14 @@ export declare class PubSubManager {
|
|
|
142
142
|
removeLocalSub(tableName: string, conditionRaw: string, func: (items: object[]) => any): void;
|
|
143
143
|
getSyncs(table_name: string, condition: string): SyncParams[];
|
|
144
144
|
notifListener: any;
|
|
145
|
-
|
|
145
|
+
getSubData: (sub: Subscription) => Promise<{
|
|
146
|
+
data: any[];
|
|
147
|
+
err?: undefined;
|
|
148
|
+
} | {
|
|
149
|
+
data?: undefined;
|
|
150
|
+
err: any;
|
|
151
|
+
}>;
|
|
152
|
+
pushSubData: any;
|
|
146
153
|
upsertSocket(socket: any): void;
|
|
147
154
|
syncTimeout?: ReturnType<typeof setTimeout>;
|
|
148
155
|
syncData(sync: SyncParams, clientData: ClientExpressData | undefined, source: "trigger" | "client"): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PubSubManager.d.ts","sourceRoot":"","sources":["PubSubManager.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAc,MAAM,eAAe,CAAC;AAClH,OAAO,EAAE,EAAE,EAAe,MAAM,cAAc,CAAC;AAO/C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAU,GAAG,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEpF,OAAO,EAAE,iBAAiB,EAAY,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"PubSubManager.d.ts","sourceRoot":"","sources":["PubSubManager.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAc,MAAM,eAAe,CAAC;AAClH,OAAO,EAAE,EAAE,EAAe,MAAM,cAAc,CAAC;AAO/C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAU,GAAG,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEpF,OAAO,EAAE,iBAAiB,EAAY,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAW7C,eAAO,MAAM,OAAO,MAAO,GAAG,WAA6B,CAAC;AAC5D,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,eAAO,MAAM,GAAG,YAAa,GAAG,EAAE,SAIjC,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;AAE1D,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACN,MAAM,EAAE,WAAW,CAAA;KACpB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,GAAG,CAAC;IACZ,UAAU,EAAE,SAAS,CAAC;IACtB,WAAW,EAAE,SAAS,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACN,MAAM,EAAE,WAAW,CAAA;KACpB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG;IACF,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB,CAAC,GAAG;IACH,aAAa,EAAE;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;KACnB,EAAE,CAAC;CACL,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IAGrB;;SAEK;IACL,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,eAAe,EAAE,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,GAAG,SAAS,CAAC;IAEzE,UAAU,EAAE,eAAe,CAAC;IAG5B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IAErB,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;IACvC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;IAEjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACtE,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAC9C,UAAU,GACV,eAAe,GACf,gBAAgB,GAChB,cAAc,GACd,UAAU,GACV,MAAM,GACN,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,QAAQ,GACR,QAAQ,GACR,aAAa,CAChB,GAAG;IACF,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,OAAO,CAAC;KACrB,EAAE,CAAC;CACL,CAAA;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,SAAS,SAAiB;IAEjC,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,IAAI,EAAE,CAEX;IACD,IAAI,GAAG,IAAI,eAAe,CAEzB;IAED,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrC,OAAO,EAAE,SAAS,CAAM;IAExB,IAAI,EAAE,YAAY,EAAE,CAAM;IAC1B,KAAK,EAAE,UAAU,EAAE,CAAM;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,CAAa;IAEnF,0BAA0B,CAAC,EAAE,0BAA0B,CAAC;IAExD,OAAO;IAcP,UAAU;;;MAGT;IACD,aAAa;;0BAEO,MAAM;MAKzB;IAED;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,mBAAmB,SAAa;IAChC,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;IAmB1C,OAAc,SAAS;;;;OAKtB;IAED,OAAc,MAAM,YAAmB,oBAAoB,kBAG1D;IAED,SAAS,UAAS;IAClB,OAAO,aAWN;IAED,WAAW,gBAMV;IAED,WAAW,UAAS;IACpB,IAAI,MAAgC;IAGpC,MAAM,CAAC,uBAAuB,WAA6H;IAE3J,MAAM,CAAC,kCAAkC,SAAwE;IACjH,eAAe,yBAwHd;IAED,OAAO;IAKP,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,YAAY,EAAE;IAQjH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG;IAStF,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAK9C,aAAa,MAA4B;IAEzC,UAAU,QAAe,YAAY,KAAG,QACtC;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,GAAG,CAAC,EAAE,SAAS,CAAC;KAAE,GACjC;QAAE,IAAI,CAAC,EAAE,SAAS,CAAC;QAAC,GAAG,EAAE,GAAG,CAAC;KAAE,CAChC,CAcA;IAED,WAAW,MAA0B;IAErC,YAAY,CAAC,MAAM,EAAE,GAAG;IAoBxB,WAAW,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,GAAG,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ;IAIxG,OAAO,MAAsB;IAE7B,MAAM,MAAqB;IAG3B,kBAAkB,QAAO;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAkBnE;IAGD,mBAAmB,eAAsB,MAAM,sBAgB9C;IAQD,iBAAiB,wBAQhB;IAGD,aAAa,EAAE,GAAG,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAa;IAChD,UAAU,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;KAAE,EAAE,WAAW,CAAC,EAAE,uBAAuB;CA8D3G;AAGD,eAAO,MAAM,cAAc,cAAe,MAAM,KAAG,MAAmE,CAAA;AAEtH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA"}
|