prostgles-server 4.0.1 → 4.0.3
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/DboBuilder/ViewHandler.d.ts +3 -3
- package/dist/DboBuilder/ViewHandler.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler.js +2 -2
- package/dist/DboBuilder/ViewHandler.js.map +1 -1
- package/dist/DboBuilder/subscribe.d.ts +12 -3
- package/dist/DboBuilder/subscribe.d.ts.map +1 -1
- package/dist/DboBuilder/subscribe.js +23 -9
- package/dist/DboBuilder/subscribe.js.map +1 -1
- package/dist/PubSubManager/PubSubManager.d.ts +5 -4
- package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/PubSubManager.js +7 -4
- package/dist/PubSubManager/PubSubManager.js.map +1 -1
- package/dist/PubSubManager/addSub.d.ts.map +1 -1
- package/dist/PubSubManager/addSub.js +22 -16
- package/dist/PubSubManager/addSub.js.map +1 -1
- package/dist/PubSubManager/notifListener.js +1 -1
- package/dist/PubSubManager/notifListener.js.map +1 -1
- package/dist/PubSubManager/pushSubData.d.ts.map +1 -1
- package/dist/PubSubManager/pushSubData.js +10 -5
- package/dist/PubSubManager/pushSubData.js.map +1 -1
- package/lib/DboBuilder/ViewHandler.d.ts +3 -3
- package/lib/DboBuilder/ViewHandler.d.ts.map +1 -1
- package/lib/DboBuilder/ViewHandler.js +2 -2
- package/lib/DboBuilder/ViewHandler.ts +5 -5
- package/lib/DboBuilder/subscribe.d.ts +12 -3
- package/lib/DboBuilder/subscribe.d.ts.map +1 -1
- package/lib/DboBuilder/subscribe.js +23 -9
- package/lib/DboBuilder/subscribe.ts +28 -12
- package/lib/PubSubManager/PubSubManager.d.ts +5 -4
- package/lib/PubSubManager/PubSubManager.d.ts.map +1 -1
- package/lib/PubSubManager/PubSubManager.js +7 -4
- package/lib/PubSubManager/PubSubManager.ts +10 -7
- package/lib/PubSubManager/addSub.d.ts.map +1 -1
- package/lib/PubSubManager/addSub.js +22 -16
- package/lib/PubSubManager/addSub.ts +27 -19
- package/lib/PubSubManager/notifListener.js +1 -1
- package/lib/PubSubManager/notifListener.ts +1 -1
- package/lib/PubSubManager/pushSubData.d.ts.map +1 -1
- package/lib/PubSubManager/pushSubData.js +10 -5
- package/lib/PubSubManager/pushSubData.ts +10 -5
- package/package.json +1 -1
- package/tests/client/PID.txt +1 -1
- package/tests/server/package-lock.json +1 -1
|
@@ -5,13 +5,13 @@ const PubSubManager_1 = require("./PubSubManager");
|
|
|
5
5
|
/* Must return a channel for socket */
|
|
6
6
|
/* The distinct list of {table_name, condition} must have a corresponding trigger in the database */
|
|
7
7
|
async function addSub(subscriptionParams) {
|
|
8
|
-
const { socket,
|
|
8
|
+
const { socket, localFuncs, table_rules, filter = {}, params = {}, condition = "", throttle = 0, //subOne = false,
|
|
9
9
|
viewOptions, table_info, } = subscriptionParams || {};
|
|
10
10
|
const table_name = table_info.name;
|
|
11
|
-
if (!socket && !
|
|
11
|
+
if (!socket && !localFuncs) {
|
|
12
12
|
throw "socket AND func missing";
|
|
13
13
|
}
|
|
14
|
-
if (socket &&
|
|
14
|
+
if (socket && localFuncs) {
|
|
15
15
|
throw "addSub: cannot have socket AND func";
|
|
16
16
|
}
|
|
17
17
|
let validated_throttle = subscriptionParams.throttle || 10;
|
|
@@ -23,17 +23,15 @@ async function addSub(subscriptionParams) {
|
|
|
23
23
|
validated_throttle = throttle;
|
|
24
24
|
}
|
|
25
25
|
const channel_name = `${this.socketChannelPreffix}.${table_name}.${JSON.stringify(filter)}.${JSON.stringify(params)}.${"m"}.sub`;
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
const mainTrigger = {
|
|
27
|
+
table_name: table_name,
|
|
28
|
+
condition: (0, PubSubManager_1.parseCondition)(condition),
|
|
29
|
+
is_related: false,
|
|
30
30
|
};
|
|
31
|
-
this.upsertSocket(socket);
|
|
32
|
-
// const upsertSub = _upsertSub.bind(this);
|
|
33
31
|
const newSub = {
|
|
34
32
|
channel_name,
|
|
35
33
|
filter,
|
|
36
|
-
|
|
34
|
+
localFuncs,
|
|
37
35
|
params,
|
|
38
36
|
last_throttled: 0,
|
|
39
37
|
socket,
|
|
@@ -44,13 +42,21 @@ async function addSub(subscriptionParams) {
|
|
|
44
42
|
table_rules,
|
|
45
43
|
throttle: validated_throttle,
|
|
46
44
|
triggers: [
|
|
47
|
-
|
|
48
|
-
table_name: table_name,
|
|
49
|
-
condition: (0, PubSubManager_1.parseCondition)(condition),
|
|
50
|
-
is_related: false,
|
|
51
|
-
}
|
|
45
|
+
mainTrigger
|
|
52
46
|
]
|
|
53
47
|
};
|
|
48
|
+
const result = {
|
|
49
|
+
channelName: channel_name,
|
|
50
|
+
channelNameReady: channel_name + ".ready",
|
|
51
|
+
channelNameUnsubscribe: channel_name + ".unsubscribe"
|
|
52
|
+
};
|
|
53
|
+
const [matchingSub] = this.getSubs(mainTrigger.table_name, mainTrigger.condition, newSub);
|
|
54
|
+
if (matchingSub) {
|
|
55
|
+
console.error("Trying to add a duplicate sub for: ", channel_name);
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
this.upsertSocket(socket);
|
|
59
|
+
// const upsertSub = _upsertSub.bind(this);
|
|
54
60
|
if (viewOptions) {
|
|
55
61
|
for await (const relatedTable of viewOptions.relatedTables) {
|
|
56
62
|
const relatedSub = {
|
|
@@ -62,7 +68,7 @@ async function addSub(subscriptionParams) {
|
|
|
62
68
|
await this.addTrigger(relatedSub, viewOptions);
|
|
63
69
|
}
|
|
64
70
|
}
|
|
65
|
-
if (
|
|
71
|
+
if (localFuncs) {
|
|
66
72
|
this.pushSubData(newSub);
|
|
67
73
|
}
|
|
68
74
|
else if (socket) {
|
|
@@ -9,16 +9,16 @@ type AddSubscriptionParams = SubscriptionParams & {
|
|
|
9
9
|
/* The distinct list of {table_name, condition} must have a corresponding trigger in the database */
|
|
10
10
|
export async function addSub(this: PubSubManager, subscriptionParams: Omit<AddSubscriptionParams, "channel_name" | "parentSubParams">): Promise<SubscriptionChannels> {
|
|
11
11
|
const {
|
|
12
|
-
socket,
|
|
12
|
+
socket, localFuncs, table_rules, filter = {},
|
|
13
13
|
params = {}, condition = "", throttle = 0, //subOne = false,
|
|
14
14
|
viewOptions, table_info,
|
|
15
15
|
} = subscriptionParams || {};
|
|
16
16
|
const table_name = table_info.name;
|
|
17
17
|
|
|
18
|
-
if (!socket && !
|
|
18
|
+
if (!socket && !localFuncs) {
|
|
19
19
|
throw "socket AND func missing";
|
|
20
20
|
}
|
|
21
|
-
if (socket &&
|
|
21
|
+
if (socket && localFuncs) {
|
|
22
22
|
throw "addSub: cannot have socket AND func";
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -32,20 +32,16 @@ export async function addSub(this: PubSubManager, subscriptionParams: Omit<AddSu
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
const channel_name = `${this.socketChannelPreffix}.${table_name}.${JSON.stringify(filter)}.${JSON.stringify(params)}.${"m"}.sub`;
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
this.upsertSocket(socket);
|
|
42
|
-
|
|
43
|
-
// const upsertSub = _upsertSub.bind(this);
|
|
35
|
+
const mainTrigger = {
|
|
36
|
+
table_name: table_name,
|
|
37
|
+
condition: parseCondition(condition),
|
|
38
|
+
is_related: false,
|
|
39
|
+
} as const;
|
|
44
40
|
|
|
45
41
|
const newSub: Subscription = {
|
|
46
42
|
channel_name,
|
|
47
43
|
filter,
|
|
48
|
-
|
|
44
|
+
localFuncs,
|
|
49
45
|
params,
|
|
50
46
|
last_throttled: 0,
|
|
51
47
|
socket,
|
|
@@ -56,14 +52,26 @@ export async function addSub(this: PubSubManager, subscriptionParams: Omit<AddSu
|
|
|
56
52
|
table_rules,
|
|
57
53
|
throttle: validated_throttle,
|
|
58
54
|
triggers: [
|
|
59
|
-
|
|
60
|
-
table_name: table_name,
|
|
61
|
-
condition: parseCondition(condition),
|
|
62
|
-
is_related: false,
|
|
63
|
-
}
|
|
55
|
+
mainTrigger
|
|
64
56
|
]
|
|
65
57
|
}
|
|
66
58
|
|
|
59
|
+
const result: SubscriptionChannels = {
|
|
60
|
+
channelName: channel_name,
|
|
61
|
+
channelNameReady: channel_name + ".ready",
|
|
62
|
+
channelNameUnsubscribe: channel_name + ".unsubscribe"
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const [matchingSub] = this.getSubs(mainTrigger.table_name, mainTrigger.condition, newSub);
|
|
66
|
+
if(matchingSub){
|
|
67
|
+
console.error("Trying to add a duplicate sub for: ", channel_name);
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
this.upsertSocket(socket);
|
|
72
|
+
|
|
73
|
+
// const upsertSub = _upsertSub.bind(this);
|
|
74
|
+
|
|
67
75
|
if(viewOptions){
|
|
68
76
|
for await(const relatedTable of viewOptions.relatedTables){
|
|
69
77
|
const relatedSub = {
|
|
@@ -79,7 +87,7 @@ export async function addSub(this: PubSubManager, subscriptionParams: Omit<AddSu
|
|
|
79
87
|
|
|
80
88
|
}
|
|
81
89
|
|
|
82
|
-
if(
|
|
90
|
+
if(localFuncs){
|
|
83
91
|
this.pushSubData(newSub);
|
|
84
92
|
|
|
85
93
|
} else if (socket) {
|
|
@@ -65,7 +65,7 @@ async function notifListener(data) {
|
|
|
65
65
|
sub.triggers.forEach(trg => {
|
|
66
66
|
if (this.dbo[trg.table_name] &&
|
|
67
67
|
sub.is_ready &&
|
|
68
|
-
(sub.socket_id && this.sockets[sub.socket_id]) || sub.
|
|
68
|
+
(sub.socket_id && this.sockets[sub.socket_id]) || sub.localFuncs) {
|
|
69
69
|
const throttle = sub.throttle || 0;
|
|
70
70
|
if (sub.last_throttled <= Date.now() - throttle) {
|
|
71
71
|
/* It is assumed the policy was checked before this point */
|
|
@@ -87,7 +87,7 @@ export async function notifListener(this: PubSubManager, data: { payload: string
|
|
|
87
87
|
if (
|
|
88
88
|
this.dbo[trg.table_name] &&
|
|
89
89
|
sub.is_ready &&
|
|
90
|
-
(sub.socket_id && this.sockets[sub.socket_id]) || sub.
|
|
90
|
+
(sub.socket_id && this.sockets[sub.socket_id]) || sub.localFuncs
|
|
91
91
|
) {
|
|
92
92
|
const throttle = sub.throttle || 0;
|
|
93
93
|
if (sub.last_throttled <= Date.now() - throttle) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pushSubData.d.ts","sourceRoot":"","sources":["pushSubData.ts"],"names":[],"mappings":"
|
|
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,oBAgDlF"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.pushSubData = void 0;
|
|
4
|
+
const subscribe_1 = require("../DboBuilder/subscribe");
|
|
4
5
|
const PubSubManager_1 = require("./PubSubManager");
|
|
5
6
|
async function pushSubData(sub, err) {
|
|
6
7
|
if (!sub)
|
|
7
8
|
throw "pushSubData: invalid sub";
|
|
8
|
-
const { socket_id, channel_name
|
|
9
|
+
const { socket_id, channel_name } = sub; //, subOne = false
|
|
10
|
+
const localFuncs = (0, subscribe_1.parseLocalFuncs)(sub.localFuncs);
|
|
9
11
|
sub.last_throttled = Date.now();
|
|
10
12
|
if (err) {
|
|
11
13
|
if (socket_id) {
|
|
@@ -26,8 +28,8 @@ async function pushSubData(sub, err) {
|
|
|
26
28
|
{ data }, (cb)=> { console.log(cb) });
|
|
27
29
|
*/
|
|
28
30
|
}
|
|
29
|
-
else if (
|
|
30
|
-
|
|
31
|
+
else if (localFuncs) {
|
|
32
|
+
localFuncs.onData(data);
|
|
31
33
|
resolve(data);
|
|
32
34
|
}
|
|
33
35
|
sub.last_throttled = Date.now();
|
|
@@ -37,8 +39,11 @@ async function pushSubData(sub, err) {
|
|
|
37
39
|
if (socket_id && this.sockets[socket_id]) {
|
|
38
40
|
this.sockets[socket_id].emit(channel_name, { err: errObj });
|
|
39
41
|
}
|
|
40
|
-
else if (
|
|
41
|
-
|
|
42
|
+
else if (localFuncs) {
|
|
43
|
+
if (!localFuncs.onError) {
|
|
44
|
+
console.error("Uncaught subscription error", err);
|
|
45
|
+
}
|
|
46
|
+
localFuncs.onError?.(errObj);
|
|
42
47
|
}
|
|
43
48
|
reject(errObj);
|
|
44
49
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { parseLocalFuncs } from "../DboBuilder/subscribe";
|
|
1
2
|
import { log, PubSubManager, Subscription } from "./PubSubManager";
|
|
2
3
|
|
|
3
4
|
export async function pushSubData(this: PubSubManager, sub: Subscription, err?: any) {
|
|
4
5
|
if (!sub) throw "pushSubData: invalid sub";
|
|
5
6
|
|
|
6
|
-
const { socket_id, channel_name
|
|
7
|
+
const { socket_id, channel_name } = sub; //, subOne = false
|
|
8
|
+
const localFuncs = parseLocalFuncs(sub.localFuncs);
|
|
7
9
|
sub.last_throttled = Date.now();
|
|
8
10
|
|
|
9
11
|
if (err) {
|
|
@@ -28,8 +30,8 @@ export async function pushSubData(this: PubSubManager, sub: Subscription, err?:
|
|
|
28
30
|
/* TO DO: confirm receiving data or server will unsubscribe
|
|
29
31
|
{ data }, (cb)=> { console.log(cb) });
|
|
30
32
|
*/
|
|
31
|
-
} else if (
|
|
32
|
-
|
|
33
|
+
} else if (localFuncs) {
|
|
34
|
+
localFuncs.onData(data);
|
|
33
35
|
resolve(data);
|
|
34
36
|
}
|
|
35
37
|
sub.last_throttled = Date.now();
|
|
@@ -38,8 +40,11 @@ export async function pushSubData(this: PubSubManager, sub: Subscription, err?:
|
|
|
38
40
|
const errObj = { _err_msg: err.toString(), err };
|
|
39
41
|
if (socket_id && this.sockets[socket_id]) {
|
|
40
42
|
this.sockets[socket_id].emit(channel_name, { err: errObj });
|
|
41
|
-
} else if (
|
|
42
|
-
|
|
43
|
+
} else if (localFuncs) {
|
|
44
|
+
if(!localFuncs.onError){
|
|
45
|
+
console.error("Uncaught subscription error", err);
|
|
46
|
+
}
|
|
47
|
+
localFuncs.onError?.(errObj);
|
|
43
48
|
}
|
|
44
49
|
reject(errObj);
|
|
45
50
|
}
|
package/package.json
CHANGED
package/tests/client/PID.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
56545
|