prostgles-server 4.2.559 → 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 (70) hide show
  1. package/dist/DboBuilder/DboBuilder.d.ts +3 -3
  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/ViewHandler/ViewHandler.d.ts +17 -4
  6. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
  7. package/dist/DboBuilder/ViewHandler/ViewHandler.js +16 -2
  8. package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
  9. package/dist/DboBuilder/ViewHandler/count.d.ts +2 -1
  10. package/dist/DboBuilder/ViewHandler/count.d.ts.map +1 -1
  11. package/dist/DboBuilder/ViewHandler/count.js +5 -2
  12. package/dist/DboBuilder/ViewHandler/count.js.map +1 -1
  13. package/dist/DboBuilder/ViewHandler/find.d.ts +4 -1
  14. package/dist/DboBuilder/ViewHandler/find.d.ts.map +1 -1
  15. package/dist/DboBuilder/ViewHandler/find.js +9 -5
  16. package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
  17. package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.d.ts +9 -0
  18. package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.d.ts.map +1 -0
  19. package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.js +73 -0
  20. package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.js.map +1 -0
  21. package/dist/DboBuilder/ViewHandler/size.d.ts +2 -1
  22. package/dist/DboBuilder/ViewHandler/size.d.ts.map +1 -1
  23. package/dist/DboBuilder/ViewHandler/size.js +7 -5
  24. package/dist/DboBuilder/ViewHandler/size.js.map +1 -1
  25. package/dist/DboBuilder/dboBuilderUtils.d.ts +1 -0
  26. package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
  27. package/dist/DboBuilder/dboBuilderUtils.js +4 -2
  28. package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
  29. package/dist/DboBuilder/{QueryStreamer.d.ts → runSql/QueryStreamer.d.ts} +4 -6
  30. package/dist/DboBuilder/runSql/QueryStreamer.d.ts.map +1 -0
  31. package/dist/DboBuilder/{QueryStreamer.js → runSql/QueryStreamer.js} +5 -22
  32. package/dist/DboBuilder/runSql/QueryStreamer.js.map +1 -0
  33. package/dist/DboBuilder/runSql/getAdminClient.d.ts +26 -0
  34. package/dist/DboBuilder/runSql/getAdminClient.d.ts.map +1 -0
  35. package/dist/DboBuilder/runSql/getAdminClient.js +32 -0
  36. package/dist/DboBuilder/runSql/getAdminClient.js.map +1 -0
  37. package/dist/Prostgles.d.ts +2 -0
  38. package/dist/Prostgles.d.ts.map +1 -1
  39. package/dist/Prostgles.js +3 -1
  40. package/dist/Prostgles.js.map +1 -1
  41. package/dist/PublishParser/PublishParser.d.ts.map +1 -1
  42. package/dist/PublishParser/PublishParser.js +2 -1
  43. package/dist/PublishParser/PublishParser.js.map +1 -1
  44. package/dist/WebsocketAPI/onSocketConnected.d.ts.map +1 -1
  45. package/dist/WebsocketAPI/onSocketConnected.js +14 -6
  46. package/dist/WebsocketAPI/onSocketConnected.js.map +1 -1
  47. package/dist/initProstgles.d.ts.map +1 -1
  48. package/dist/initProstgles.js +2 -0
  49. package/dist/initProstgles.js.map +1 -1
  50. package/dist/runClientRequest.d.ts +1 -1
  51. package/dist/runClientRequest.d.ts.map +1 -1
  52. package/dist/runClientRequest.js +28 -6
  53. package/dist/runClientRequest.js.map +1 -1
  54. package/lib/DboBuilder/DboBuilder.ts +20 -31
  55. package/lib/DboBuilder/ViewHandler/ViewHandler.ts +27 -3
  56. package/lib/DboBuilder/ViewHandler/count.ts +6 -2
  57. package/lib/DboBuilder/ViewHandler/find.ts +16 -7
  58. package/lib/DboBuilder/ViewHandler/getDbHandlerWithAbort.ts +98 -0
  59. package/lib/DboBuilder/ViewHandler/size.ts +8 -5
  60. package/lib/DboBuilder/dboBuilderUtils.ts +4 -1
  61. package/lib/DboBuilder/{QueryStreamer.ts → runSql/QueryStreamer.ts} +10 -32
  62. package/lib/DboBuilder/runSql/getAdminClient.ts +31 -0
  63. package/lib/Prostgles.ts +4 -1
  64. package/lib/PublishParser/PublishParser.ts +3 -1
  65. package/lib/WebsocketAPI/onSocketConnected.ts +15 -7
  66. package/lib/initProstgles.ts +3 -0
  67. package/lib/runClientRequest.ts +49 -10
  68. package/package.json +2 -2
  69. package/dist/DboBuilder/QueryStreamer.d.ts.map +0 -1
  70. package/dist/DboBuilder/QueryStreamer.js.map +0 -1
@@ -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.559",
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.267"
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":"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"}