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,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.notifListener = void 0;
4
- const PubSubManager_1 = require("./PubSubManager");
5
- /* Relay relevant data to relevant subscriptions */
6
- async function notifListener(data) {
7
- const str = data.payload;
8
- if (!str) {
9
- console.error("Unexpected Empty notif");
10
- return;
11
- }
12
- const dataArr = str.split(PubSubManager_1.PubSubManager.DELIMITER);
13
- const notifType = dataArr[0];
14
- (0, PubSubManager_1.log)(str);
15
- if (notifType === this.NOTIF_TYPE.schema) {
16
- if (this.onSchemaChange) {
17
- const [_, command, _event_type, query] = dataArr;
18
- if (query && command) {
19
- this.onSchemaChange({ command, query });
20
- }
21
- }
22
- return;
23
- }
24
- if (notifType !== this.NOTIF_TYPE.data) {
25
- console.error("Unexpected notif type: ", notifType);
26
- return;
27
- }
28
- if (dataArr.length < 3) {
29
- throw "notifListener: dataArr length < 3";
30
- }
31
- const [_, table_name, _op_name, condition_ids_str] = dataArr;
32
- if (!table_name) {
33
- throw "table_name undef";
34
- }
35
- // const triggers = await this.db.any("SELECT * FROM prostgles.triggers WHERE table_name = $1 AND id IN ($2:csv)", [table_name, condition_ids_str.split(",").map(v => +v)]);
36
- // const conditions: string[] = triggers.map(t => t.condition);
37
- (0, PubSubManager_1.log)("notifListener", dataArr.join("__"));
38
- /* Trigger error */
39
- if (condition_ids_str?.startsWith("error") &&
40
- this._triggers?.[table_name]?.length) {
41
- const pref = "INTERNAL ERROR";
42
- console.error(`${pref}: condition_ids_str: ${condition_ids_str}`);
43
- this._triggers[table_name].map(c => {
44
- const subs = this.getTriggerSubs(table_name, c);
45
- subs.map(s => {
46
- this.pushSubData(s, pref + ". Check server logs. Schema might have changed");
47
- });
48
- });
49
- /* Trigger ok */
50
- }
51
- else if (condition_ids_str?.split(",").length &&
52
- condition_ids_str?.split(",").every((c) => Number.isInteger(+c)) &&
53
- this._triggers?.[table_name]?.length) {
54
- const idxs = condition_ids_str.split(",").map(v => +v);
55
- const conditions = this._triggers[table_name].filter((c, i) => idxs.includes(i));
56
- // log("notifListener", this._triggers[table_name]);
57
- conditions.map(condition => {
58
- const subs = this.getTriggerSubs(table_name, condition);
59
- const syncs = this.getSyncs(table_name, condition);
60
- (0, PubSubManager_1.log)("notifListener", subs.map(s => s.channel_name), syncs.map(s => s.channel_name));
61
- syncs.map((s) => {
62
- this.syncData(s, undefined, "trigger");
63
- });
64
- /* Throttle the subscriptions */
65
- subs.forEach(sub => {
66
- sub.triggers.forEach(trg => {
67
- if (this.dbo[trg.table_name] &&
68
- sub.is_ready &&
69
- (sub.socket_id && this.sockets[sub.socket_id] || sub.localFuncs)) {
70
- const { throttle = 0, throttleOpts } = sub;
71
- if (!throttleOpts?.skipFirst && sub.last_throttled <= Date.now() - throttle) {
72
- sub.last_throttled = Date.now();
73
- /* It is assumed the policy was checked before this point */
74
- this.pushSubData(sub);
75
- }
76
- else if (!sub.is_throttling) {
77
- (0, PubSubManager_1.log)("throttling sub");
78
- sub.is_throttling = setTimeout(() => {
79
- (0, PubSubManager_1.log)("throttling finished. pushSubData...");
80
- sub.is_throttling = null;
81
- sub.last_throttled = Date.now();
82
- this.pushSubData(sub);
83
- }, throttle); // sub.throttle);
84
- }
85
- }
86
- });
87
- });
88
- });
89
- /* Trigger unknown issue */
90
- }
91
- else {
92
- // if(!this._triggers || !this._triggers[table_name] || !this._triggers[table_name].length){
93
- // console.warn(190, "Trigger sub not found. DROPPING TRIGGER", table_name, condition_ids_str, this._triggers);
94
- // this.dropTrigger(table_name);
95
- // } else {
96
- // }
97
- console.warn(190, "Trigger sub issue: ", table_name, condition_ids_str, this._triggers);
98
- }
99
- }
100
- exports.notifListener = notifListener;
@@ -1,3 +0,0 @@
1
- import { PubSubManager, Subscription } from "./PubSubManager";
2
- export declare function pushSubData(this: PubSubManager, sub: Subscription, err?: any): Promise<unknown>;
3
- //# sourceMappingURL=pushSubData.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pushSubData.d.ts","sourceRoot":"","sources":["pushSubData.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEnE,wBAAsB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,GAAG,oBA+ClF"}
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pushSubData = void 0;
4
- const subscribe_1 = require("../DboBuilder/subscribe");
5
- const PubSubManager_1 = require("./PubSubManager");
6
- async function pushSubData(sub, err) {
7
- if (!sub)
8
- throw "pushSubData: invalid sub";
9
- const { socket_id, channel_name } = sub; //, subOne = false
10
- const localFuncs = (0, subscribe_1.parseLocalFuncs)(sub.localFuncs);
11
- if (err) {
12
- if (socket_id) {
13
- this.sockets[socket_id].emit(channel_name, { err });
14
- }
15
- return true;
16
- }
17
- return new Promise(async (resolve, reject) => {
18
- /* TODO: Retire subOne -> it's redundant */
19
- const { data, err } = await this.getSubData(sub);
20
- if (data) {
21
- if (socket_id && this.sockets[socket_id]) {
22
- (0, PubSubManager_1.log)("Pushed " + data.length + " records to sub");
23
- this.sockets[socket_id].emit(channel_name, { data }, () => {
24
- resolve(data);
25
- });
26
- /* TO DO: confirm receiving data or server will unsubscribe
27
- { data }, (cb)=> { console.log(cb) });
28
- */
29
- }
30
- else if (localFuncs) {
31
- localFuncs.onData(data);
32
- resolve(data);
33
- }
34
- // sub.last_throttled = Date.now();
35
- }
36
- else {
37
- const errObj = { _err_msg: err.toString(), err };
38
- if (socket_id && this.sockets[socket_id]) {
39
- this.sockets[socket_id].emit(channel_name, { err: errObj });
40
- }
41
- else if (localFuncs) {
42
- if (!localFuncs.onError) {
43
- console.error("Uncaught subscription error", err);
44
- }
45
- localFuncs.onError?.(errObj);
46
- }
47
- reject(errObj);
48
- }
49
- });
50
- }
51
- exports.pushSubData = pushSubData;
@@ -1,284 +0,0 @@
1
- import { AnyObject, TableSchemaForClient, DBSchemaTable, FullFilter, Method, DBSchema } from "prostgles-types";
2
- import { AuthResult, SessionUser } from "./AuthHandler";
3
- import { CommonTableRules, LocalParams, PRGLIOSocket, TableOrViewInfo, TableSchemaColumn } from "./DboBuilder";
4
- import { Prostgles, DBHandlerServer, DB } from "./Prostgles";
5
- import type { DBOFullyTyped, PublishFullyTyped } from "./DBSchemaBuilder";
6
- export type PublishMethods<S = void, SUser extends SessionUser = SessionUser> = (params: PublishParams<S, SUser>) => {
7
- [key: string]: Method;
8
- } | Promise<{
9
- [key: string]: Method;
10
- } | null>;
11
- export type Awaitable<T> = T | Promise<T>;
12
- type Request = {
13
- socket?: any;
14
- httpReq?: any;
15
- };
16
- type DboTable = Request & {
17
- tableName: string;
18
- localParams: LocalParams;
19
- };
20
- type DboTableCommand = Request & DboTable & {
21
- command: string;
22
- localParams: LocalParams;
23
- };
24
- import { FieldFilter, SelectParams } from "prostgles-types";
25
- export type InsertRequestData = {
26
- data: object | object[];
27
- returning: FieldFilter;
28
- };
29
- export type SelectRequestData = {
30
- filter: object;
31
- params: SelectParams;
32
- };
33
- export type DeleteRequestData = {
34
- filter: object;
35
- returning: FieldFilter;
36
- };
37
- export type UpdateRequestDataOne<R extends AnyObject, S extends DBSchema | void = void> = {
38
- filter: FullFilter<R, S>;
39
- data: Partial<R>;
40
- returning: FieldFilter<R>;
41
- };
42
- export type UpdateReq<R extends AnyObject, S extends DBSchema | void = void> = {
43
- filter: FullFilter<R, S>;
44
- data: Partial<R>;
45
- };
46
- export type UpdateRequestDataBatch<R extends AnyObject> = {
47
- data: UpdateReq<R>[];
48
- };
49
- export type UpdateRequestData<R extends AnyObject = AnyObject> = UpdateRequestDataOne<R> | UpdateRequestDataBatch<R>;
50
- export type ValidateRow<R extends AnyObject = AnyObject, S = void> = (row: R, dbx: DBOFullyTyped<S>) => R | Promise<R>;
51
- export type ValidateUpdateRow<R extends AnyObject = AnyObject, S extends DBSchema | void = void> = (args: {
52
- update: Partial<R>;
53
- filter: FullFilter<R, S>;
54
- }, dbx: DBOFullyTyped<S>) => R | Promise<R>;
55
- export type SelectRule<Cols extends AnyObject = AnyObject, S extends DBSchema | void = void> = {
56
- /**
57
- * Fields allowed to be selected.
58
- * Tip: Use false to exclude field
59
- */
60
- fields: FieldFilter<Cols>;
61
- /**
62
- * Fields allowed to sorted
63
- * Defaults to the "fields". Use empty array/object to disallow sorting
64
- */
65
- orderByFields?: FieldFilter<Cols>;
66
- /**
67
- * The maximum number of rows a user can get in a select query. null by default. Unless a null or higher limit is specified 100 rows will be returned by the default
68
- */
69
- maxLimit?: number | null;
70
- /**
71
- * Filter added to every query (e.g. user_id) to restrict access
72
- */
73
- forcedFilter?: FullFilter<Cols, S>;
74
- /**
75
- * Fields user can filter by
76
- * */
77
- filterFields?: FieldFilter<Cols>;
78
- /**
79
- * Validation logic to check/update data for each request
80
- */
81
- validate?(args: SelectRequestData): SelectRequestData | Promise<SelectRequestData>;
82
- };
83
- export type InsertRule<Cols extends AnyObject = AnyObject, S = void> = {
84
- /**
85
- * Fields allowed to be inserted. Tip: Use false to exclude field
86
- */
87
- fields: SelectRule<Cols>["fields"];
88
- /**
89
- * Data to include/overwrite on each insert
90
- */
91
- forcedData?: Partial<Cols>;
92
- /**
93
- * Fields user can view after inserting
94
- */
95
- returningFields?: SelectRule<Cols>["fields"];
96
- /**
97
- * Validation logic to check/update data for each request. Happens before publish rule checks (for fields, forcedData/forcedFilter)
98
- */
99
- preValidate?: ValidateRow<Cols, S>;
100
- /**
101
- * Validation logic to check/update data for each request. Happens after publish rule checks (for fields, forcedData/forcedFilter)
102
- */
103
- validate?: ValidateRow<Cols, S>;
104
- /**
105
- * Validation logic to check/update data after the insert.
106
- * Happens in the same transaction so upon throwing an error the record will be deleted (not committed)
107
- */
108
- postValidate?: ValidateRow<Required<Cols>, S>;
109
- };
110
- export type UpdateRule<Cols extends AnyObject = AnyObject, S extends DBSchema | void = void> = {
111
- /**
112
- * Fields allowed to be updated. Tip: Use false/0 to exclude field
113
- */
114
- fields: SelectRule<Cols>["fields"];
115
- /**
116
- * Row level FGAC
117
- * Used when the editable fields change based on the updated row
118
- * If specified then the fields from the first matching filter table.count({ ...filter, ...updateFilter }) > 0 will be used
119
- * If none matching then the "fields" will be used
120
- * Specify in decreasing order of specificity otherwise a more general filter will match first
121
- */
122
- dynamicFields?: {
123
- filter: FullFilter<Cols, S>;
124
- fields: SelectRule<Cols>["fields"];
125
- }[];
126
- /**
127
- * Filter added to every query (e.g. user_id) to restrict access
128
- * This filter cannot be updated
129
- */
130
- forcedFilter?: SelectRule<Cols, S>["forcedFilter"];
131
- /**
132
- * Data to include/overwrite on each updatDBe
133
- */
134
- forcedData?: InsertRule<Cols, S>["forcedData"];
135
- /**
136
- * Fields user can use to find the updates
137
- */
138
- filterFields?: SelectRule<Cols>["fields"];
139
- /**
140
- * Fields user can view after updating
141
- */
142
- returningFields?: SelectRule<Cols>["fields"];
143
- /**
144
- * Validation logic to check/update data for each request
145
- */
146
- validate?: ValidateUpdateRow<Cols, S>;
147
- /**
148
- * Validation logic to check/update data after the insert.
149
- * Happens in the same transaction so upon throwing an error the record will be deleted (not committed)
150
- */
151
- postValidate?: ValidateRow<Required<Cols>, S>;
152
- };
153
- export type DeleteRule<Cols extends AnyObject = AnyObject, S extends DBSchema | void = void> = {
154
- /**
155
- * Filter added to every query (e.g. user_id) to restrict access
156
- */
157
- forcedFilter?: SelectRule<Cols, S>["forcedFilter"];
158
- /**
159
- * Fields user can filter by
160
- */
161
- filterFields: FieldFilter<Cols>;
162
- /**
163
- * Fields user can view after deleting
164
- */
165
- returningFields?: SelectRule<Cols>["filterFields"];
166
- /**
167
- * Validation logic to check/update data for each request
168
- */
169
- validate?(...args: any[]): Awaitable<void>;
170
- };
171
- export type SyncRule<Cols extends AnyObject = AnyObject> = {
172
- /**
173
- * Primary keys used in updating data
174
- */
175
- id_fields: (keyof Cols)[];
176
- /**
177
- * Numerical incrementing fieldname (last updated timestamp) used to sync items
178
- */
179
- synced_field: keyof Cols;
180
- /**
181
- * EXPERIMENTAL. Disabled by default. If true then server will attempt to delete any records missing from client.
182
- */
183
- allow_delete?: boolean;
184
- /**
185
- * Throttle replication transmission in milliseconds. Defaults to 100
186
- */
187
- throttle?: number;
188
- /**
189
- * Number of rows to send per trip. Defaults to 50
190
- */
191
- batch_size?: number;
192
- };
193
- export type SubscribeRule = {
194
- throttle?: number;
195
- };
196
- export type ViewRule<S extends AnyObject = AnyObject> = CommonTableRules & {
197
- /**
198
- * What can be read from the table
199
- */
200
- select?: SelectRule<S>;
201
- };
202
- export type TableRule<RowType extends AnyObject = AnyObject, S extends DBSchema | void = void> = ViewRule<RowType> & {
203
- insert?: InsertRule<RowType, S>;
204
- update?: UpdateRule<RowType, S>;
205
- delete?: DeleteRule<RowType, S>;
206
- sync?: SyncRule<RowType>;
207
- subscribe?: SubscribeRule;
208
- };
209
- export type PublishViewRule<Col extends AnyObject = AnyObject, S extends DBSchema | void = void> = {
210
- select?: SelectRule<Col, S> | PublishAllOrNothing;
211
- getColumns?: PublishAllOrNothing;
212
- getInfo?: PublishAllOrNothing;
213
- };
214
- export type PublishTableRule<Col extends AnyObject = AnyObject, S extends DBSchema | void = void> = PublishViewRule<Col, S> & {
215
- insert?: InsertRule<Col, S> | PublishAllOrNothing;
216
- update?: UpdateRule<Col, S> | PublishAllOrNothing;
217
- delete?: DeleteRule<Col, S> | PublishAllOrNothing;
218
- sync?: SyncRule<Col>;
219
- subscribe?: SubscribeRule | PublishAllOrNothing;
220
- };
221
- export type ParsedPublishTable = {
222
- select?: SelectRule;
223
- getColumns?: true;
224
- getInfo?: true;
225
- insert?: InsertRule;
226
- update?: UpdateRule;
227
- delete?: DeleteRule;
228
- sync?: SyncRule;
229
- subscribe?: SubscribeRule;
230
- subscribeOne?: SubscribeRule;
231
- };
232
- export type PublishParams<S = void, SUser extends SessionUser = SessionUser> = {
233
- sid?: string;
234
- dbo: DBOFullyTyped<S>;
235
- db: DB;
236
- user?: SUser["user"];
237
- socket: PRGLIOSocket;
238
- tables: {
239
- name: string;
240
- info: TableOrViewInfo;
241
- columns: TableSchemaColumn[];
242
- }[];
243
- };
244
- export type RequestParams = {
245
- dbo?: DBHandlerServer;
246
- socket?: any;
247
- };
248
- export type PublishAllOrNothing = true | "*" | false | null;
249
- type PublishObject = {
250
- [table_name: string]: (PublishTableRule | PublishViewRule | PublishAllOrNothing);
251
- };
252
- export type ParsedPublishTables = {
253
- [table_name: string]: ParsedPublishTable;
254
- };
255
- export type PublishedResult<Schema = void> = PublishAllOrNothing | PublishFullyTyped<Schema>;
256
- export type Publish<Schema = void, SUser extends SessionUser = SessionUser> = PublishedResult<Schema> | ((params: PublishParams<Schema, SUser>) => Awaitable<PublishedResult<Schema>>);
257
- export declare class PublishParser {
258
- publish: any;
259
- publishMethods?: PublishMethods<void, SessionUser> | undefined;
260
- publishRawSQL?: any;
261
- dbo: DBHandlerServer;
262
- db: DB;
263
- prostgles: Prostgles;
264
- constructor(publish: any, publishMethods: PublishMethods<void, SessionUser> | undefined, publishRawSQL: any, dbo: DBHandlerServer, db: DB, prostgles: Prostgles);
265
- getPublishParams(localParams: LocalParams, clientInfo?: AuthResult): Promise<PublishParams>;
266
- getAllowedMethods(socket: any, userData?: AuthResult): Promise<{
267
- [key: string]: Method;
268
- }>;
269
- /**
270
- * Parses the first level of publish. (If false then nothing if * then all tables and views)
271
- * @param socket
272
- * @param user
273
- */
274
- getPublish(localParams: LocalParams, clientInfo?: AuthResult): Promise<PublishObject>;
275
- getValidatedRequestRuleWusr({ tableName, command, localParams }: DboTableCommand): Promise<TableRule>;
276
- getValidatedRequestRule({ tableName, command, localParams }: DboTableCommand, clientInfo?: AuthResult): Promise<TableRule>;
277
- getTableRules({ tableName, localParams }: DboTable, clientInfo?: AuthResult): Promise<ParsedPublishTable | undefined>;
278
- getSchemaFromPublish(socket: any, userData?: AuthResult): Promise<{
279
- schema: TableSchemaForClient;
280
- tables: DBSchemaTable[];
281
- }>;
282
- }
283
- export {};
284
- //# sourceMappingURL=PublishParser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PublishParser.d.ts","sourceRoot":"","sources":["PublishParser.ts"],"names":[],"mappings":"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"}