prostgles-server 4.2.558 → 4.2.560

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 (74) hide show
  1. package/dist/DboBuilder/DboBuilder.d.ts +4 -4
  2. package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
  3. package/dist/DboBuilder/DboBuilder.js +18 -29
  4. package/dist/DboBuilder/DboBuilder.js.map +1 -1
  5. package/dist/DboBuilder/TableHandler/DataValidator.js +18 -12
  6. package/dist/DboBuilder/TableHandler/DataValidator.js.map +1 -1
  7. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +17 -4
  8. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
  9. package/dist/DboBuilder/ViewHandler/ViewHandler.js +16 -2
  10. package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
  11. package/dist/DboBuilder/ViewHandler/count.d.ts +2 -1
  12. package/dist/DboBuilder/ViewHandler/count.d.ts.map +1 -1
  13. package/dist/DboBuilder/ViewHandler/count.js +5 -2
  14. package/dist/DboBuilder/ViewHandler/count.js.map +1 -1
  15. package/dist/DboBuilder/ViewHandler/find.d.ts +4 -1
  16. package/dist/DboBuilder/ViewHandler/find.d.ts.map +1 -1
  17. package/dist/DboBuilder/ViewHandler/find.js +9 -5
  18. package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
  19. package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.d.ts +9 -0
  20. package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.d.ts.map +1 -0
  21. package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.js +73 -0
  22. package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.js.map +1 -0
  23. package/dist/DboBuilder/ViewHandler/size.d.ts +2 -1
  24. package/dist/DboBuilder/ViewHandler/size.d.ts.map +1 -1
  25. package/dist/DboBuilder/ViewHandler/size.js +7 -5
  26. package/dist/DboBuilder/ViewHandler/size.js.map +1 -1
  27. package/dist/DboBuilder/dboBuilderUtils.d.ts +1 -0
  28. package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
  29. package/dist/DboBuilder/dboBuilderUtils.js +4 -2
  30. package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
  31. package/dist/DboBuilder/{QueryStreamer.d.ts → runSql/QueryStreamer.d.ts} +4 -6
  32. package/dist/DboBuilder/runSql/QueryStreamer.d.ts.map +1 -0
  33. package/dist/DboBuilder/{QueryStreamer.js → runSql/QueryStreamer.js} +5 -22
  34. package/dist/DboBuilder/runSql/QueryStreamer.js.map +1 -0
  35. package/dist/DboBuilder/runSql/getAdminClient.d.ts +26 -0
  36. package/dist/DboBuilder/runSql/getAdminClient.d.ts.map +1 -0
  37. package/dist/DboBuilder/runSql/getAdminClient.js +32 -0
  38. package/dist/DboBuilder/runSql/getAdminClient.js.map +1 -0
  39. package/dist/DboBuilder/runSql/runSqlUtils.d.ts +1 -1
  40. package/dist/Prostgles.d.ts +2 -0
  41. package/dist/Prostgles.d.ts.map +1 -1
  42. package/dist/Prostgles.js +3 -1
  43. package/dist/Prostgles.js.map +1 -1
  44. package/dist/PublishParser/PublishParser.d.ts.map +1 -1
  45. package/dist/PublishParser/PublishParser.js +2 -1
  46. package/dist/PublishParser/PublishParser.js.map +1 -1
  47. package/dist/WebsocketAPI/onSocketConnected.d.ts.map +1 -1
  48. package/dist/WebsocketAPI/onSocketConnected.js +14 -6
  49. package/dist/WebsocketAPI/onSocketConnected.js.map +1 -1
  50. package/dist/initProstgles.d.ts.map +1 -1
  51. package/dist/initProstgles.js +2 -0
  52. package/dist/initProstgles.js.map +1 -1
  53. package/dist/runClientRequest.d.ts +1 -1
  54. package/dist/runClientRequest.d.ts.map +1 -1
  55. package/dist/runClientRequest.js +28 -6
  56. package/dist/runClientRequest.js.map +1 -1
  57. package/lib/DboBuilder/DboBuilder.ts +20 -31
  58. package/lib/DboBuilder/TableHandler/DataValidator.ts +19 -14
  59. package/lib/DboBuilder/ViewHandler/ViewHandler.ts +27 -3
  60. package/lib/DboBuilder/ViewHandler/count.ts +6 -2
  61. package/lib/DboBuilder/ViewHandler/find.ts +16 -7
  62. package/lib/DboBuilder/ViewHandler/getDbHandlerWithAbort.ts +98 -0
  63. package/lib/DboBuilder/ViewHandler/size.ts +8 -5
  64. package/lib/DboBuilder/dboBuilderUtils.ts +4 -1
  65. package/lib/DboBuilder/{QueryStreamer.ts → runSql/QueryStreamer.ts} +10 -32
  66. package/lib/DboBuilder/runSql/getAdminClient.ts +31 -0
  67. package/lib/Prostgles.ts +4 -1
  68. package/lib/PublishParser/PublishParser.ts +3 -1
  69. package/lib/WebsocketAPI/onSocketConnected.ts +15 -7
  70. package/lib/initProstgles.ts +3 -0
  71. package/lib/runClientRequest.ts +49 -10
  72. package/package.json +2 -2
  73. package/dist/DboBuilder/QueryStreamer.d.ts.map +0 -1
  74. package/dist/DboBuilder/QueryStreamer.js.map +0 -1
@@ -8,11 +8,12 @@ import {
8
8
  } from "../dboBuilderUtils";
9
9
  import type { ViewHandler } from "./ViewHandler";
10
10
  import { getReturnTypeQuery } from "./getReturnTypeQuery";
11
+ import type { Param3 } from "./find";
11
12
  export async function size(
12
13
  this: ViewHandler,
13
14
  _filter?: Filter,
14
15
  selectParams?: SelectParams,
15
- param3_unused?: undefined,
16
+ param3?: Param3,
16
17
  table_rules?: ParsedTableRule,
17
18
  localParams?: LocalParams,
18
19
  ): Promise<string> {
@@ -22,7 +23,7 @@ export async function size(
22
23
  const result = await this.find(
23
24
  filter,
24
25
  { ...selectParams, limit: 2 },
25
- undefined,
26
+ param3,
26
27
  table_rules,
27
28
  localParams,
28
29
  ).then(async (_allowed) => {
@@ -57,9 +58,11 @@ export async function size(
57
58
  return queryToReturn as unknown[];
58
59
  }
59
60
 
60
- return (this.tx?.t || this.db)
61
- .one<{ size: string | null }>(queryWithRLS)
62
- .then(({ size }) => size || "0");
61
+ const handler = this.getDbHandlerWithAbort(localParams, {
62
+ abortSignal: selectParams?.abortSignal,
63
+ abortSignalId: param3?.abortSignalId,
64
+ });
65
+ return handler.one<{ size: string | null }>(queryWithRLS).then(({ size }) => size || "0");
63
66
  });
64
67
  await this._log({
65
68
  command: "size",
@@ -176,6 +176,8 @@ export const getCanExecute = async (db: DB) => {
176
176
  return false;
177
177
  };
178
178
 
179
+ export const QUERY_ID_PREFIX = "-- prostgles query id: ";
180
+
179
181
  export const withUserRLS = (localParams: LocalParams | undefined, query: string) => {
180
182
  const user = localParams?.isRemoteRequest?.user;
181
183
  const queryPrefix = `SET SESSION "prostgles.user" \nTO`;
@@ -184,5 +186,6 @@ export const withUserRLS = (localParams: LocalParams | undefined, query: string)
184
186
  firstQuery = pgp.as.format(`${queryPrefix} \${user};`, { user });
185
187
  }
186
188
 
187
- return [firstQuery, query].join("\n");
189
+ const queryId = crypto.randomUUID();
190
+ return [QUERY_ID_PREFIX + queryId, firstQuery, query].filter(Boolean).join("\n");
188
191
  };
@@ -2,13 +2,14 @@ import * as pg from "pg";
2
2
  import type CursorType from "pg-cursor";
3
3
  import type { SQLOptions, SocketSQLStreamPacket, SocketSQLStreamServer } from "prostgles-types";
4
4
  import { CHANNELS, omitKeys, pickKeys } from "prostgles-types";
5
- import type { BasicCallback } from "../PubSubManager/PubSubManager";
6
- import type { VoidFunction } from "../SchemaWatch/SchemaWatch";
7
- import type { DB } from "../initProstgles";
8
- import type { DboBuilder } from "./DboBuilder";
9
- import type { PRGLIOSocket } from "./DboBuilderTypes";
10
- import { getErrorAsObject, getSerializedClientErrorFromPGError } from "./dboBuilderUtils";
11
- import { getDetailedFieldInfo } from "./runSql/runSqlUtils";
5
+ import type { BasicCallback } from "../../PubSubManager/PubSubManager";
6
+ import type { VoidFunction } from "../../SchemaWatch/SchemaWatch";
7
+ import type { DB } from "../../initProstgles";
8
+ import type { DboBuilder } from "../DboBuilder";
9
+ import type { PRGLIOSocket } from "../DboBuilderTypes";
10
+ import { getErrorAsObject, getSerializedClientErrorFromPGError } from "../dboBuilderUtils";
11
+ import { getDetailedFieldInfo } from "./runSqlUtils";
12
+ import { getConnectionDetails } from "./getAdminClient";
12
13
  const Cursor = require("pg-cursor") as typeof CursorType;
13
14
 
14
15
  type ClientStreamedRequest = {
@@ -44,36 +45,13 @@ export class QueryStreamer {
44
45
  db: DB;
45
46
  dboBuilder: DboBuilder;
46
47
  socketQueries: Map<string, Map<number, StreamedQuery>> = new Map();
47
- adminClient: pg.Client;
48
48
  constructor(dboBuilder: DboBuilder) {
49
49
  this.dboBuilder = dboBuilder;
50
50
  this.db = dboBuilder.db;
51
- const setAdminClient = () => {
52
- this.adminClient = this.getConnection(undefined, { keepAlive: true });
53
- return this.adminClient.connect();
54
- };
55
- this.adminClient = this.getConnection(
56
- (error) => {
57
- if (error.message?.includes("database") && error.message?.includes("does not exist"))
58
- return;
59
- console.log("Admin client error. Reconnecting...", error);
60
- void setAdminClient();
61
- },
62
- { keepAlive: true },
63
- );
64
- void this.adminClient.connect();
65
- }
66
-
67
- destroy() {
68
- return this.adminClient.end().catch((err) => {
69
- console.error("Error ending admin client connection", err);
70
- });
71
51
  }
72
52
 
73
53
  getConnection = (onError: ((err: any) => void) | undefined, extraOptions?: pg.ClientConfig) => {
74
- const connectionInfo =
75
- typeof this.db.$cn === "string" ? { connectionString: this.db.$cn } : (this.db.$cn as any);
76
- const client = new pg.Client({ ...connectionInfo, ...extraOptions });
54
+ const client = new pg.Client({ ...getConnectionDetails(this.db), ...extraOptions });
77
55
  client.on("error", (err) => {
78
56
  onError?.(err);
79
57
  });
@@ -272,7 +250,7 @@ export class QueryStreamer {
272
250
  }
273
251
  try {
274
252
  const stopFunction = opts?.terminate ? "pg_terminate_backend" : "pg_cancel_backend";
275
- const rows = await this.adminClient.query(
253
+ const rows = await this.dboBuilder.prostgles.adminClient!.query(
276
254
  `SELECT ${stopFunction}(pid), pid, state, query FROM pg_stat_activity WHERE pid = $1`,
277
255
  [processID],
278
256
  );
@@ -0,0 +1,31 @@
1
+ import * as pg from "pg";
2
+ import type { DB } from "../../initProstgles";
3
+
4
+ export const getAdminClient = async (db: DB, onDbDropped?: () => void): Promise<pg.Client> => {
5
+ const adminClient = new pg.Client({
6
+ ...getConnectionDetails(db),
7
+ application_name: "prostgles-admin-client",
8
+ keepAlive: true,
9
+ });
10
+ if (onDbDropped) {
11
+ adminClient.on("error", (err) => {
12
+ if (
13
+ err.message.includes("terminating connection due to administrator command") ||
14
+ (err.message.includes("database") && err.message.includes("does not exist"))
15
+ ) {
16
+ onDbDropped();
17
+ }
18
+ });
19
+ }
20
+ await adminClient.connect();
21
+ return adminClient;
22
+ };
23
+
24
+ export const getConnectionDetails = (db: DB) => {
25
+ const opts = db.$pool.options as pg.ClientConfig;
26
+ return {
27
+ ...opts,
28
+ password: opts.password,
29
+ keepAlive: true,
30
+ } satisfies pg.ClientConfig;
31
+ };
package/lib/Prostgles.ts CHANGED
@@ -60,6 +60,7 @@ const DEFAULT_KEYWORDS = {
60
60
  import { randomUUID } from "crypto";
61
61
  import * as fs from "fs";
62
62
  import type { TableHandler } from "./DboBuilder/TableHandler/TableHandler";
63
+ import type { getAdminClient } from "./DboBuilder/runSql/getAdminClient";
63
64
 
64
65
  export class Prostgles {
65
66
  /**
@@ -81,6 +82,7 @@ export class Prostgles {
81
82
  };
82
83
 
83
84
  db?: DB;
85
+ adminClient?: Awaited<ReturnType<typeof getAdminClient>>;
84
86
  pgp?: PGP;
85
87
  dbo?: DBHandlerServer;
86
88
  _dboBuilder?: DboBuilder;
@@ -173,8 +175,9 @@ export class Prostgles {
173
175
  !this.db ||
174
176
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
175
177
  !this.db.connect
176
- )
178
+ ) {
177
179
  throw "something went wrong getting a db connection";
180
+ }
178
181
  }
179
182
 
180
183
  getTSFileName() {
@@ -160,7 +160,9 @@ export class PublishParser {
160
160
  tableRule: ParsedTableRule,
161
161
  scope: PermissionScope | undefined,
162
162
  ) {
163
- if (!command || !tableName) throw "command OR tableName are missing";
163
+ if (!command || !tableName) {
164
+ throw "command OR tableName are missing";
165
+ }
164
166
 
165
167
  const [rule] =
166
168
  getObjectEntries(SQL_COMMAND_TABLE_METHODS).find(([_, methods]) =>
@@ -32,20 +32,28 @@ export async function onSocketConnected(this: Prostgles, socket: PRGLIOSocket) {
32
32
  };
33
33
 
34
34
  socket.on("disconnect", () => {
35
- this.dbEventsManager?.removeNotice(socket);
36
- this.dbEventsManager?.removeNotify(undefined, socket);
37
- this.connectedSockets = this.connectedSockets.filter((s) => s.id !== socket.id);
38
- this.dboBuilder.queryStreamer.onDisconnect(socket.id);
39
35
  void this.opts.onLog?.({
40
36
  type: "disconnect",
41
37
  sid: this.authHandler.getValidatedSid({ socket }),
42
38
  socketId: socket.id,
43
39
  connectedSocketIds: this.connectedSockets.map((s) => s.id),
44
40
  });
45
-
46
- if (this.opts.onSocketDisconnect) {
47
- void this.opts.onSocketDisconnect({ socket, dbo: dbo as DBOFullyTyped, db, getUser });
41
+ this.dbEventsManager?.removeNotice(socket);
42
+ this.dbEventsManager?.removeNotify(undefined, socket);
43
+ this.connectedSockets = this.connectedSockets.filter((s) => s.id !== socket.id);
44
+ this.dboBuilder.queryStreamer.onDisconnect(socket.id);
45
+ const sid = this.authHandler.getSIDNoError({ socket });
46
+ if (sid) {
47
+ this.dboBuilder.dboMap.forEach((tableHandler) => {
48
+ tableHandler.activeQueries.forEach((activeQuery) => {
49
+ if (activeQuery.sid === sid) {
50
+ activeQuery.abort();
51
+ }
52
+ });
53
+ });
48
54
  }
55
+
56
+ void this.opts.onSocketDisconnect?.({ socket, dbo: dbo as DBOFullyTyped, db, getUser });
49
57
  });
50
58
 
51
59
  await this.opts.onLog?.({
@@ -16,6 +16,7 @@ import { runSQLFile } from "./TableConfig/runSQLFile";
16
16
  import { updateConfiguration, type clientOnlyUpdateKeys } from "./updateConfiguration";
17
17
  import { sleep } from "./utils/utils";
18
18
  import { getClientHandlers } from "./WebsocketAPI/getClientHandlers";
19
+ import { getAdminClient } from "./DboBuilder/runSql/getAdminClient";
19
20
 
20
21
  /**
21
22
  * Database connection details
@@ -159,6 +160,8 @@ export const initProstgles = async function (
159
160
  },
160
161
  });
161
162
 
163
+ this.adminClient = await getAdminClient(db);
164
+
162
165
  /** Drop stale triggers */
163
166
  await db
164
167
  .any(
@@ -1,5 +1,6 @@
1
1
  import type { SQLRequest, TableHandler, UserLike } from "prostgles-types";
2
2
  import {
3
+ ABORTABLE_METHODS,
3
4
  getJSONBObjectSchemaValidationError,
4
5
  getJSONBSchemaValidationError,
5
6
  getKeys,
@@ -31,13 +32,16 @@ const TABLE_METHODS = {
31
32
  getInfo: 1,
32
33
  sync: 1,
33
34
  insertMany: 1,
34
- } as const satisfies Record<keyof (TableHandler & Pick<TableHandlerServer, "sync">), 1>;
35
+ abort: 1,
36
+ } as const satisfies Record<keyof (TableHandler & Pick<TableHandlerServer, "sync">), 1> &
37
+ Record<"abort", 1>;
35
38
 
36
39
  const TABLE_METHODS_KEYS = getKeys(TABLE_METHODS);
37
40
  const SOCKET_ONLY_COMMANDS = [
38
41
  "subscribe",
39
42
  "subscribeOne",
40
43
  "sync",
44
+ "abort",
41
45
  ] as const satisfies typeof TABLE_METHODS_KEYS;
42
46
 
43
47
  type Args = {
@@ -73,7 +77,15 @@ export const runClientRequest = async function (
73
77
  command: { enum: TABLE_METHODS_KEYS },
74
78
  param1: { type: "any", optional: true },
75
79
  param2: { type: "any", optional: true },
76
- param3: { type: "any", optional: true },
80
+ param3: {
81
+ type: {
82
+ abortSignalId: { type: "string", optional: true },
83
+ returning: { type: "any", optional: true },
84
+ returnQuery: { type: "boolean", optional: true },
85
+ returnType: { type: "string", optional: true },
86
+ },
87
+ optional: true,
88
+ },
77
89
  },
78
90
  nonValidatedArgs,
79
91
  "tableName",
@@ -105,12 +117,6 @@ export const runClientRequest = async function (
105
117
  clientInfo,
106
118
  scope,
107
119
  );
108
- this.publishParser.validateRequestRule({ tableName, command, clientReq }, parsedTableRule, scope);
109
-
110
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
111
- if (!parsedTableRule) {
112
- throw `Invalid OR disallowed request: ${tableName}.${command} `;
113
- }
114
120
 
115
121
  const sessionUser: UserLike | undefined =
116
122
  !clientInfo.user ? undefined : (
@@ -129,6 +135,40 @@ export const runClientRequest = async function (
129
135
  isRemoteRequest: { user: sessionUser },
130
136
  scope,
131
137
  };
138
+
139
+ if (command === "abort") {
140
+ const validation = getJSONBObjectSchemaValidationError(
141
+ {
142
+ tableName: { type: "string" },
143
+ command: { enum: ["abort"] },
144
+ param1: {
145
+ type: { command: { enum: ABORTABLE_METHODS }, abortSignalId: "string" },
146
+ },
147
+ },
148
+ nonValidatedArgs,
149
+ "tableName",
150
+ undefined,
151
+ { allowExtraProperties: true },
152
+ );
153
+ if (validation.error !== undefined) {
154
+ throw validation.error;
155
+ }
156
+
157
+ this.publishParser.validateRequestRule(
158
+ { tableName, command: validation.data.param1.command, clientReq },
159
+ parsedTableRule,
160
+ scope,
161
+ );
162
+
163
+ return tableHandler.abortRemoteQuery(validation.data.param1.abortSignalId, localParams);
164
+ } else {
165
+ this.publishParser.validateRequestRule(
166
+ { tableName, command, clientReq },
167
+ parsedTableRule,
168
+ scope,
169
+ );
170
+ }
171
+
132
172
  if (param3 && (param3 as LocalParams).returnQuery) {
133
173
  const isAllowed = await canRunSQL(this, clientReq);
134
174
  if (isAllowed) {
@@ -142,8 +182,7 @@ export const runClientRequest = async function (
142
182
  * satisfies check is used to ensure rules arguments are correctly passed to each method
143
183
  */
144
184
  tableHandler[command].bind(tableHandler) satisfies
145
- | undefined
146
- | TableMethodFunctionWithRulesAndLocalParams;
185
+ undefined | TableMethodFunctionWithRulesAndLocalParams;
147
186
 
148
187
  return (tableHandler[command] as TableMethodFunctionWithRulesAndLocalParams)(
149
188
  param1,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prostgles-server",
3
- "version": "4.2.558",
3
+ "version": "4.2.560",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -57,7 +57,7 @@
57
57
  "pg": "^8.21.0",
58
58
  "pg-cursor": "^2.21.0",
59
59
  "pg-promise": "^12.7.0",
60
- "prostgles-types": "^4.0.265"
60
+ "prostgles-types": "^4.0.269"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@eslint/js": "^9.22.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryStreamer.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/QueryStreamer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,UAAU,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAyB,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGhG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AACF,KAAK,aAAa,GAAG,qBAAqB,GAAG;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAC/B,CAAC;AAiBF,qBAAa,aAAa;IACxB,EAAE,EAAE,EAAE,CAAC;IACP,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAa;IACnE,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC;gBACX,UAAU,EAAE,UAAU;IAmBlC,OAAO;IAMP,aAAa,GAAI,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,eAAe,EAAE,CAAC,YAAY,eAQxF;IACF,YAAY,GAAI,UAAU,MAAM,UAS9B;IAEF,MAAM,GAAI,OAAO,qBAAqB,KAAG,qBAAqB,CAiP5D;CACH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryStreamer.js","sourceRoot":"","sources":["../../lib/DboBuilder/QueryStreamer.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AAGzB,qDAA+D;AAM/D,uDAA0F;AAC1F,sDAA4D;AAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAsB,CAAC;AAsBzD,MAAM,qBAAqB,GAAwB,IAAI,GAAG,EAAE,CAAC;AAC7D,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,EAAE;IAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;IACzB,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAa,aAAa;IACxB,EAAE,CAAK;IACP,UAAU,CAAa;IACvB,aAAa,GAA4C,IAAI,GAAG,EAAE,CAAC;IACnE,WAAW,CAAY;IACvB,YAAY,UAAsB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACxB,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACpC,CAAC,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CACnC,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;gBAClF,OAAO;YACT,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC1D,KAAK,cAAc,EAAE,CAAC;QACxB,CAAC,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAC;QACF,KAAK,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1C,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa,GAAG,CAAC,OAAyC,EAAE,YAA8B,EAAE,EAAE;QAC5F,MAAM,cAAc,GAClB,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC,EAAE,CAAC,GAAW,CAAC;QAC7F,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;QACrE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,YAAY,GAAG,CAAC,QAAgB,EAAE,EAAE;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;YAC9D,IAAI,EAAE,EAAE,CAAC;YACT,uCAAuC;YACvC,KAAK,MAAM,EAAE,GAAG,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,MAAM,GAAG,CAAC,KAA4B,EAAyB,EAAE;QAC/D,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,GAAG,0BAAQ,CAAC,UAAU,KAAK,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC5D,MAAM,YAAY,GAAG,GAAG,OAAO,cAAc,CAAC;QAC9C,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACpE,MAAM,4BAA4B,EAAE,QAAQ,CAAC;QAC/C,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,WAAW,GAAkB;YACjC,GAAG,KAAK;YACR,EAAE;YACF,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,CAAC,QAAa,EAAE,EAAE;gBACzB,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBAEf,MAAM,iBAAiB,GAAG,IAAA,qDAAmC,EAAC,QAAQ,EAAE;oBACtE,IAAI,EAAE,KAAK;oBACX,WAAW,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE;oBACtC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS;iBACrC,CAAC,CAAC;gBACH,gFAAgF;gBAChF,MAAM,KAAK,GAAG,EAAE,GAAG,iBAAiB,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC3D,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;oBACnB,IAAI,EAAE,OAAO;oBACb,KAAK;iBAC0B,CAAC,CAAC;YACrC,CAAC;SACF,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAyB,CAAC;QAC3F,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;QACrE,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;QACnB,IAAI,WAAwD,CAAC;QAE7D,MAAM,WAAW,GAAG,KAAK,EAAE,MAA6B,EAAE,KAA4B,EAAE,EAAE;YACxF,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;YACrC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,wBAAwB,CAAC;YACjC,CAAC;YAED,wCAAwC;YACxC,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,MAAM,IAAI,GAAG,CAAC,EACZ,UAAU,EACV,IAAI,EACJ,IAAI,GAG6D,EAAE,EAAE;gBACrE,IAAI,CAAE,IAAY,CAAC,MAAM;oBAAE,MAAM,WAAW,CAAC;gBAC7C,MAAM,MAAM,GAAG,IAAA,kCAAoB,EAAC,IAAI,CAAC,UAAU,CAAC,YAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChF,MAAM,MAAM,GAA0B;oBACpC,IAAI,EAAE,MAAM;oBACZ,IAAI;oBACJ,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;oBAC3C,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;oBACnC,KAAK,EAAE,UAAU;oBACjB,SAAS,EAAE,SAAS;iBACrB,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC7B,IAAI,UAAU,EAAE,CAAC;oBACf,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,EAAE,sBAAsB,EAAE,CAAC;wBAC9D,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,KAAK,EAAE,KAAK,CAAC,KAAK;qBACnB,CAAC,CAAC;gBACL,CAAC;gBACD,cAAc,GAAG,IAAI,CAAC;YACxB,CAAC,CAAC;YACF,MAAM,aAAa,GACjB,MAAM;gBACN,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,EAAE;oBACzB,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACzB,KAAK,aAAa,CAAC,GAAG,EAAE,CAAC;gBAC3B,CAAC,CAAC,CAAC;YACL,WAAW,CAAC,MAAM,GAAG,aAAa,CAAC;YACnC,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,aAAa,CAAC,OAAO,EAAE,CAAC;gBAChC,CAAC;gBACD,SAAS,GAAI,aAAqB,CAAC,SAAS,CAAC;gBAE7C,IACE,KAAK,CAAC,OAAO,EAAE,WAAW;oBAC1B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,EAC/E,CAAC;oBACD,MAAM,wCAAwC,CAAC;gBACjD,CAAC;gBACD,MAAM,SAAS,GACb,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC9E,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAChC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CACzD,CAAC;gBACF,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;gBAC5B,IAAI,kBAAkB,GAAG,KAAK,CAAC;gBAC/B,IAAI,UAAU,GAAG,KAAK,CAAC;gBACvB,KAAK,CAAC,KAAK,IAAI,EAAE;oBACf,IAAI,CAAC;wBACH,IAAI,QAAQ,GAAU,EAAE,CAAC;wBACzB,IAAI,QAAQ,GAAG,CAAC,CAAC;wBACjB,GAAG,CAAC;4BACF,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;4BACxC,MAAM,IAAI,GAAG,IAAA,0BAAQ,EAAE,MAAc,CAAC,OAAO,EAAE;gCAC7C,QAAQ;gCACR,UAAU;gCACV,SAAS;gCACT,UAAU;6BACX,CAAS,CAAC;4BACX,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC;4BAC5B,kBAAkB,GAAG,OAAO,CAC1B,KAAK,CAAC,OAAO,EAAE,WAAW,IAAI,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CACpE,CAAC;4BACF,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;4BACzC,IAAI,CAAC;gCACH,IAAI;gCACJ,IAAI,EAAE,QAAQ;gCACd,UAAU,EAAE,UAAU,IAAI,kBAAkB;6BAC7C,CAAC,CAAC;wBACL,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,kBAAkB,EAAE;wBAE7C,WAAW,GAAG,OAAO,CAAC;wBAEtB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,EAAE,CAAC;4BAC5C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;4BAC7C,KAAK,aAAa,CAAC,GAAG,EAAE,CAAC;wBAC3B,CAAC;wBACD,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;oBACtB,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBACpB,WAAW,GAAG,SAAS,CAAC;wBACxB,IAAI,KAAK,CAAC,OAAO,KAAK,2DAA2D,EAAE,CAAC;4BAClF,IAAI,CAAC,UAAU;iCACZ,MAAM,CACL,KAAK,CAAC,KAAK,EACX,EAAE,EACF,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,EAC7C;gCACE,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;6BACpC,CACF;iCACA,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gCACZ,IAAI,CAAC;oCACH,IAAI,EAAE,IAAA,0BAAQ,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;oCAC7B,UAAU,EAAE,IAAI;oCAChB,IAAI,EAAE,GAAG,CAAC,IAAI;iCACf,CAAC,CAAC;4BACL,CAAC,CAAC;iCACD,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE;gCAClB,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;4BAChC,CAAC,CAAC,CAAC;wBACP,CAAC;6BAAM,CAAC;4BACN,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBAC7B,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACzB,MAAM,aAAa,CAAC,GAAG,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YACxC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,KAAK,EAAE,IAAyC,EAAE,EAAiB,EAAE,EAAE;YAClF,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAChF,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,EAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;gBACzC,OAAO;YACT,CAAC;YACD,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC;gBACpB,UAAU,CAAC,GAAG,EAAE;oBACd,KAAK,WAAW,CAAC,GAAG,EAAE,CAAC;gBACzB,CAAC,EAAE,GAAG,CAAC,CAAC;YACV,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,mBAAmB,CAAC;gBACpF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CACvC,UAAU,YAAY,+DAA+D,EACrF,CAAC,SAAS,CAAC,CACZ,CAAC;gBACF,OAAO,EAAE,CAAC;gBACV,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC;QACF,WAAW,CAAC,IAAI,GAAG,GAAG,EAAE,CACtB,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE;YAC7B,WAAW;QACb,CAAC,CAAC,CAAC;QAEL,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAEhC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,EAAE,CACP,OAAO,EACP,KAAK,EAAE,KAAiD,EAAE,EAAiB,EAAE,EAAE;YAC7E,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,OAAO,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAC1C,CAAC;YACD,WAAW,GAAG,SAAS,CAAC;YACxB,IAAI,CAAC;gBACH,gCAAgC;gBAChC,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBAClE,IAAI,CAAC,eAAe;wBAAE,MAAM,kCAAkC,CAAC;oBAE/D,MAAM,WAAW,CAAC,eAAe,CAAC,MAAM,EAAE;wBACxC,GAAG,KAAK;wBACR,KAAK,EAAE,KAAM,CAAC,KAAK;qBACpB,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBACtC,CAAC;gBACD,EAAE,CAAC,SAAS,CAAC,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,EAAE,CAAC,SAAS,EAAE,IAAA,kCAAgB,EAAC,GAAG,CAAC,CAAC,CAAC;YACvC,CAAC;YACD,QAAQ,EAAE,CAAC;QACb,CAAC,CACF,CAAC;QAEF,uEAAuE;QACvE,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,WAAW;gBAAE,OAAO;YACxB,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,OAAO;YACL,OAAO;YACP,YAAY;SACb,CAAC;IACJ,CAAC,CAAC;CACH;AApSD,sCAoSC"}