prostgles-server 3.0.153 → 3.0.155

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 (42) hide show
  1. package/dist/PubSubManager/PubSubManager.d.ts +21 -26
  2. package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
  3. package/dist/PubSubManager/PubSubManager.js +43 -393
  4. package/dist/PubSubManager/PubSubManager.js.map +1 -1
  5. package/dist/PubSubManager/addSub.d.ts +7 -0
  6. package/dist/PubSubManager/addSub.d.ts.map +1 -0
  7. package/dist/PubSubManager/addSub.js +153 -0
  8. package/dist/PubSubManager/addSub.js.map +1 -0
  9. package/dist/PubSubManager/addSync.d.ts +8 -0
  10. package/dist/PubSubManager/addSync.d.ts.map +1 -0
  11. package/dist/PubSubManager/addSync.js +110 -0
  12. package/dist/PubSubManager/addSync.js.map +1 -0
  13. package/dist/PubSubManager/notifListener.d.ts +5 -0
  14. package/dist/PubSubManager/notifListener.d.ts.map +1 -0
  15. package/dist/PubSubManager/notifListener.js +97 -0
  16. package/dist/PubSubManager/notifListener.js.map +1 -0
  17. package/lib/DboBuilder/TableHandler.d.ts +1 -5
  18. package/lib/DboBuilder/TableHandler.d.ts.map +1 -1
  19. package/lib/PubSubManager/PubSubManager.d.ts +20 -29
  20. package/lib/PubSubManager/PubSubManager.d.ts.map +1 -1
  21. package/lib/PubSubManager/PubSubManager.js +44 -397
  22. package/lib/PubSubManager/PubSubManager.ts +82 -508
  23. package/lib/PubSubManager/addSub.d.ts +7 -0
  24. package/lib/PubSubManager/addSub.d.ts.map +1 -0
  25. package/lib/PubSubManager/addSub.js +152 -0
  26. package/lib/PubSubManager/addSub.ts +178 -0
  27. package/lib/PubSubManager/addSync.d.ts +8 -0
  28. package/lib/PubSubManager/addSync.d.ts.map +1 -0
  29. package/lib/PubSubManager/addSync.js +109 -0
  30. package/lib/PubSubManager/addSync.ts +127 -0
  31. package/lib/PubSubManager/notifListener.d.ts +5 -0
  32. package/lib/PubSubManager/notifListener.d.ts.map +1 -0
  33. package/lib/PubSubManager/notifListener.js +96 -0
  34. package/lib/PubSubManager/notifListener.ts +122 -0
  35. package/package.json +2 -2
  36. package/tests/client/PID.txt +1 -1
  37. package/tests/client/tsconfig.json +2 -1
  38. package/tests/client_only_queries.js +1 -1
  39. package/tests/client_only_queries.ts +1 -1
  40. package/tests/isomorphic_queries.ts +1 -1
  41. package/tests/server/package-lock.json +1 -1
  42. package/tests/server/tsconfig.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PubSubManager.d.ts","sourceRoot":"","sources":["PubSubManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PubSubManager.d.ts","sourceRoot":"","sources":["PubSubManager.ts"],"names":[],"mappings":"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"}
@@ -27,8 +27,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
27
27
  return result;
28
28
  };
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.omitKeys = exports.pickKeys = exports.PubSubManager = exports.log = exports.DEFAULT_SYNC_BATCH_SIZE = exports.asValue = void 0;
31
- const utils_1 = require("../utils");
30
+ exports.omitKeys = exports.pickKeys = exports.parseCondition = exports.PubSubManager = exports.log = exports.DEFAULT_SYNC_BATCH_SIZE = exports.asValue = void 0;
31
+ const addSync_1 = require("./addSync");
32
32
  const DboBuilder_1 = require("../DboBuilder");
33
33
  const Prostgles_1 = require("../Prostgles");
34
34
  const initPubSubManager_1 = require("./initPubSubManager");
@@ -38,6 +38,8 @@ const prostgles_types_1 = require("prostgles-types");
38
38
  const SyncReplication_1 = require("../SyncReplication");
39
39
  const util_1 = require("prostgles-types/dist/util");
40
40
  const getInitQuery_1 = require("./getInitQuery");
41
+ const addSub_1 = require("./addSub");
42
+ const notifListener_1 = require("./notifListener");
41
43
  const pgp = pgPromise({
42
44
  promiseLib: Bluebird
43
45
  });
@@ -60,9 +62,10 @@ class PubSubManager {
60
62
  return this.dboBuilder.dbo;
61
63
  }
62
64
  _triggers;
63
- sockets;
64
- subs;
65
- syncs;
65
+ sockets = {};
66
+ // subs: { [ke: string]: { [ke: string]: { subs: SubscriptionParams[] } } };
67
+ subs = [];
68
+ syncs = [];
66
69
  socketChannelPreffix;
67
70
  onSchemaChange = undefined;
68
71
  postgresNotifListenManager;
@@ -73,9 +76,6 @@ class PubSubManager {
73
76
  }
74
77
  this.onSchemaChange = onSchemaChange;
75
78
  this.dboBuilder = dboBuilder;
76
- this.sockets = {};
77
- this.subs = {};
78
- this.syncs = [];
79
79
  this.socketChannelPreffix = wsChannelNamePrefix || "_psqlWS_";
80
80
  (0, exports.log)("Created PubSubManager");
81
81
  }
@@ -126,7 +126,8 @@ class PubSubManager {
126
126
  if (this.appCheck) {
127
127
  clearInterval(this.appCheck);
128
128
  }
129
- this.onSocketDisconnected();
129
+ this.subs = [];
130
+ this.syncs = [];
130
131
  if (!this.postgresNotifListenManager) {
131
132
  throw "this.postgresNotifListenManager missing";
132
133
  }
@@ -267,135 +268,32 @@ class PubSubManager {
267
268
  throw "this.postgresNotifListenManager missing";
268
269
  return this.postgresNotifListenManager.isListening();
269
270
  }
270
- getSubs(table_name, condition) {
271
- const subs = this.subs?.[table_name]?.[condition]?.subs ?? [];
272
- // if(!subs){
273
- // log("Subs not found:", { table_name, condition }, this.subs)
274
- // }
275
- return subs.flatMap(s => {
276
- /* Return parentSubs to ensure throttling works */
277
- if (s.parentSubParams) {
278
- const parentSubs = [];
279
- const parentChannel = s.parentSubParams.channel_name;
280
- for (const tableName in (0, util_1.getKeys)(this.subs)) {
281
- for (const condition in (0, util_1.getKeys)(this.subs[tableName])) {
282
- this.subs[tableName][condition].subs.forEach(parentSub => {
283
- if (!parentSub.parentSubParams && parentSub.channel_name === parentChannel) {
284
- parentSubs.push(parentSub);
285
- }
286
- });
287
- }
288
- }
289
- return parentSubs ?? s;
290
- }
291
- return s;
292
- });
271
+ getSubs(table_name, condition, client) {
272
+ const subs = this.subs.filter(s => (0, util_1.find)(s.triggers, { table_name, condition }));
273
+ if (client) {
274
+ return subs.filter(s => client.func && s.func === client.func || client.socket_id && s.socket_id === client.socket_id);
275
+ }
276
+ return subs;
277
+ }
278
+ removeLocalSub(tableName, conditionRaw, func) {
279
+ const condition = (0, exports.parseCondition)(conditionRaw);
280
+ if (this.getSubs(tableName, condition, { func }).length) {
281
+ this.subs = this.subs.filter(s => s.func !== func && !(0, util_1.find)(s.triggers, { tableName, condition }));
282
+ }
283
+ else {
284
+ console.error("Could not unsubscribe. Subscription might not have initialised yet", { tableName, condition });
285
+ }
293
286
  }
294
287
  getSyncs(table_name, condition) {
295
288
  return (this.syncs || [])
296
289
  .filter((s) => s.table_name === table_name && s.condition === condition);
297
290
  }
298
- /* Relay relevant data to relevant subscriptions */
299
- notifListener = async (data) => {
300
- const str = data.payload;
301
- if (!str) {
302
- console.error("Empty notif?");
303
- return;
304
- }
305
- const dataArr = str.split(PubSubManager.DELIMITER), notifType = dataArr[0];
306
- (0, exports.log)(str);
307
- if (notifType === this.NOTIF_TYPE.schema) {
308
- if (this.onSchemaChange) {
309
- const command = dataArr[1], event_type = dataArr[2], query = dataArr[3];
310
- if (query) {
311
- this.onSchemaChange({ command, query });
312
- }
313
- }
314
- return;
315
- }
316
- if (notifType !== this.NOTIF_TYPE.data) {
317
- console.error("Unexpected notif type: ", notifType);
318
- return;
319
- }
320
- if (dataArr.length < 3) {
321
- throw "dataArr length < 3";
322
- }
323
- const table_name = dataArr[1], op_name = dataArr[2], condition_ids_str = dataArr[3];
324
- // 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)]);
325
- // const conditions: string[] = triggers.map(t => t.condition);
326
- /**
327
- * Trigger error
328
- */
329
- (0, exports.log)("PG Trigger ->", dataArr.join("__"));
330
- if (condition_ids_str && condition_ids_str.startsWith("error") &&
331
- this._triggers &&
332
- this._triggers[table_name]?.length) {
333
- const pref = "INTERNAL ERROR";
334
- console.error(`${pref}: condition_ids_str: ${condition_ids_str}`);
335
- this._triggers[table_name].map(c => {
336
- const subs = this.getSubs(table_name, c);
337
- subs.map(s => {
338
- this.pushSubData(s, pref + ". Check server logs. Schema might have changed");
339
- });
340
- });
341
- /**
342
- * Trigger ok
343
- */
344
- }
345
- else if (condition_ids_str?.split(",").length &&
346
- condition_ids_str?.split(",").every((c) => Number.isInteger(+c)) &&
347
- this._triggers?.[table_name]?.length) {
348
- const idxs = condition_ids_str.split(",").map(v => +v);
349
- const conditions = this._triggers[table_name].filter((c, i) => idxs.includes(i));
350
- (0, exports.log)("PG Trigger -> ", { table_name, op_name, condition_ids_str, conditions }, this._triggers[table_name]);
351
- conditions.map(condition => {
352
- const subs = this.getSubs(table_name, condition);
353
- const syncs = this.getSyncs(table_name, condition);
354
- syncs.map((s) => {
355
- this.syncData(s, undefined, "trigger");
356
- });
357
- if (!subs) {
358
- // console.error(`sub missing for ${table_name} ${condition}`, this.triggers);
359
- // console.log(this.subs)
360
- return;
361
- }
362
- /* Throttle the subscriptions */
363
- for (let i = 0; i < subs.length; i++) {
364
- const sub = subs[i];
365
- if (this.dbo[sub.table_name] &&
366
- sub.is_ready &&
367
- (sub.socket_id && this.sockets[sub.socket_id]) || sub.func) {
368
- const throttle = sub.throttle || 0;
369
- if (sub.last_throttled <= Date.now() - throttle) {
370
- /* It is assumed the policy was checked before this point */
371
- this.pushSubData(sub);
372
- // sub.last_throttled = Date.now();
373
- }
374
- else if (!sub.is_throttling) {
375
- (0, exports.log)("throttling sub");
376
- sub.is_throttling = setTimeout(() => {
377
- (0, exports.log)("throttling finished. pushSubData...");
378
- sub.is_throttling = null;
379
- this.pushSubData(sub);
380
- }, throttle); // sub.throttle);
381
- }
382
- }
383
- }
384
- });
385
- }
386
- else {
387
- // if(!this._triggers || !this._triggers[table_name] || !this._triggers[table_name].length){
388
- // console.warn(190, "Trigger sub not found. DROPPING TRIGGER", table_name, condition_ids_str, this._triggers);
389
- // this.dropTrigger(table_name);
390
- // } else {
391
- // }
392
- console.warn(190, "Trigger sub issue: ", table_name, condition_ids_str, this._triggers);
393
- }
394
- };
291
+ notifListener = notifListener_1.notifListener.bind(this);
395
292
  pushSubData(sub, err) {
396
293
  if (!sub)
397
294
  throw "pushSubData: invalid sub";
398
- const { table_name, filter, params, table_rules, socket_id, channel_name, func } = sub; //, subOne = false
295
+ const { table_info, filter, params, table_rules, socket_id, channel_name, func } = sub; //, subOne = false
296
+ const { name: table_name } = table_info;
399
297
  sub.last_throttled = Date.now();
400
298
  if (err) {
401
299
  if (socket_id) {
@@ -440,226 +338,24 @@ class PubSubManager {
440
338
  upsertSocket(socket) {
441
339
  if (socket && !this.sockets[socket.id]) {
442
340
  this.sockets[socket.id] = socket;
443
- socket.on("disconnect", () => this.onSocketDisconnected(socket));
341
+ socket.on("disconnect", () => {
342
+ this.subs = this.subs.filter(s => {
343
+ return !(s.socket && s.socket.id === socket.id);
344
+ });
345
+ this.syncs = this.syncs.filter(s => {
346
+ return !(s.socket_id && s.socket_id === socket.id);
347
+ });
348
+ delete this.sockets[socket.id];
349
+ return "ok";
350
+ });
444
351
  }
445
352
  }
446
353
  syncTimeout;
447
354
  async syncData(sync, clientData, source) {
448
355
  return await (0, SyncReplication_1.syncData)(this, sync, clientData, source);
449
356
  }
450
- /**
451
- * Returns a sync channel
452
- * A sync channel is unique per socket for each filter
453
- */
454
- async addSync(syncParams) {
455
- const { socket = null, table_info = null, table_rules, synced_field = null, allow_delete = false, id_fields = [], filter = {}, params, condition = "", throttle = 0 } = syncParams || {};
456
- const conditionParsed = parseCondition(condition);
457
- if (!socket || !table_info)
458
- throw "socket or table_info missing";
459
- const { name: table_name } = table_info, channel_name = `${this.socketChannelPreffix}.${table_name}.${JSON.stringify(filter)}.sync`;
460
- if (!synced_field)
461
- throw "synced_field missing from table_rules";
462
- this.upsertSocket(socket);
463
- const upsertSync = () => {
464
- const newSync = {
465
- channel_name,
466
- table_name,
467
- filter,
468
- condition: conditionParsed,
469
- synced_field,
470
- id_fields,
471
- allow_delete,
472
- table_rules,
473
- throttle: Math.max(throttle || 0, table_rules?.sync?.throttle || 0),
474
- batch_size: (0, utils_1.get)(table_rules, "sync.batch_size") || exports.DEFAULT_SYNC_BATCH_SIZE,
475
- last_throttled: 0,
476
- socket_id: socket.id,
477
- is_sync: true,
478
- last_synced: 0,
479
- lr: undefined,
480
- table_info,
481
- is_syncing: false,
482
- wal: undefined,
483
- socket,
484
- params
485
- };
486
- /* Only a sync per socket per table per condition allowed */
487
- this.syncs = this.syncs || [];
488
- const existing = (0, util_1.find)(this.syncs, { socket_id: socket.id, channel_name });
489
- if (!existing) {
490
- this.syncs.push(newSync);
491
- // console.log("Added SYNC");
492
- socket.removeAllListeners(channel_name + "unsync");
493
- socket.once(channel_name + "unsync", (_data, cb) => {
494
- this.onSocketDisconnected(socket, channel_name);
495
- cb(null, { res: "ok" });
496
- });
497
- socket.removeAllListeners(channel_name);
498
- socket.on(channel_name, (data, cb) => {
499
- if (!data) {
500
- cb({ err: "Unexpected request. Need data or onSyncRequest" });
501
- return;
502
- }
503
- /*
504
- */
505
- /* Server will:
506
- 1. Ask for last_synced emit(onSyncRequest)
507
- 2. Ask for data >= server_synced emit(onPullRequest)
508
- -> Upsert that data
509
- 2. Push data >= last_synced emit(data.data)
510
-
511
- Client will:
512
- 1. Send last_synced on(onSyncRequest)
513
- 2. Send data >= server_synced on(onPullRequest)
514
- 3. Send data on CRUD emit(data.data | data.deleted)
515
- 4. Upsert data.data | deleted on(data.data | data.deleted)
516
- */
517
- // if(data.data){
518
- // console.error("THIS SHOUKD NEVER FIRE !! NEW DATA FROM SYNC");
519
- // this.upsertClientData(newSync, data.data);
520
- // } else
521
- if (data.onSyncRequest) {
522
- // console.log("syncData from socket")
523
- this.syncData(newSync, data.onSyncRequest, "client");
524
- // console.log("onSyncRequest ", socket._user)
525
- }
526
- else {
527
- console.error("Unexpected sync request data from client: ", data);
528
- }
529
- });
530
- // socket.emit(channel_name, { onSyncRequest: true }, (response) => {
531
- // console.log(response)
532
- // });
533
- }
534
- else {
535
- console.warn("UNCLOSED DUPLICATE SYNC FOUND", existing.channel_name);
536
- }
537
- return newSync;
538
- };
539
- // const { min_id, max_id, count, max_synced } = params;
540
- const _sync = upsertSync();
541
- await this.addTrigger({ table_name, condition: conditionParsed });
542
- return channel_name;
543
- }
544
- /* Must return a channel for socket */
545
- /* The distinct list of channel names must have a corresponding trigger in the database */
546
- async addSub(subscriptionParams) {
547
- const { socket, func = null, table_info = null, table_rules, filter = {}, params = {}, condition = "", throttle = 0, //subOne = false,
548
- viewOptions } = subscriptionParams || {};
549
- let validated_throttle = subscriptionParams.throttle || 10;
550
- if ((!socket && !func) || !table_info)
551
- throw "socket/func or table_info missing";
552
- const pubThrottle = (0, utils_1.get)(table_rules, ["subscribe", "throttle"]) || 0;
553
- if (pubThrottle && Number.isInteger(pubThrottle) && pubThrottle > 0) {
554
- validated_throttle = pubThrottle;
555
- }
556
- if (throttle && Number.isInteger(throttle) && throttle >= pubThrottle) {
557
- validated_throttle = throttle;
558
- }
559
- const channel_name = `${this.socketChannelPreffix}.${table_info.name}.${JSON.stringify(filter)}.${JSON.stringify(params)}.${"m"}.sub`;
560
- this.upsertSocket(socket);
561
- const upsertSub = (newSubData, isReadyOverride) => {
562
- const { table_name, condition: _cond, is_ready = false, parentSubParams } = newSubData, condition = parseCondition(_cond), newSub = {
563
- socket,
564
- table_name: table_info.name,
565
- table_info,
566
- filter,
567
- params,
568
- table_rules,
569
- channel_name,
570
- parentSubParams,
571
- func: func ?? undefined,
572
- socket_id: socket?.id,
573
- throttle: validated_throttle,
574
- is_throttling: null,
575
- last_throttled: 0,
576
- is_ready,
577
- };
578
- this.subs[table_name] = this.subs[table_name] ?? {};
579
- this.subs[table_name][condition] = this.subs[table_name][condition] ?? { subs: [] };
580
- this.subs[table_name][condition].subs = this.subs[table_name][condition].subs ?? [];
581
- // console.log("1034 upsertSub", this.subs)
582
- const sub_idx = this.subs[table_name][condition].subs.findIndex(s => s.channel_name === channel_name &&
583
- (socket && s.socket_id === socket.id ||
584
- func && s.func === func));
585
- if (sub_idx < 0) {
586
- this.subs[table_name][condition].subs.push(newSub);
587
- if (socket) {
588
- const chnUnsub = channel_name + "unsubscribe";
589
- socket.removeAllListeners(chnUnsub);
590
- socket.once(chnUnsub, (_data, cb) => {
591
- const res = this.onSocketDisconnected(socket, channel_name);
592
- cb(null, { res });
593
- });
594
- }
595
- }
596
- else {
597
- this.subs[table_name][condition].subs[sub_idx] = newSub;
598
- }
599
- if (isReadyOverride ?? is_ready) {
600
- this.pushSubData(newSub);
601
- }
602
- };
603
- viewOptions?.relatedTables.map(async (relatedTable, relatedTableIdx) => {
604
- const params = {
605
- table_name: relatedTable.tableName,
606
- condition: relatedTable.condition,
607
- parentSubParams: {
608
- ...subscriptionParams,
609
- channel_name
610
- },
611
- };
612
- upsertSub({
613
- ...params,
614
- is_ready: false,
615
- }, false);
616
- await this.addTrigger(params, viewOptions);
617
- /** Trigger pushSubData only on last related table (if it's a view) to prevent duplicate firings */
618
- const isLast = relatedTableIdx === viewOptions.relatedTables.length - 1;
619
- upsertSub({
620
- ...params,
621
- is_ready: true
622
- }, isLast && !table_info.is_view);
623
- });
624
- if (table_info.is_view) {
625
- if (!viewOptions?.relatedTables.length) {
626
- throw "PubSubManager: view parent_tables missing";
627
- }
628
- return channel_name;
629
- }
630
- /* Just a table, add table + condition trigger */
631
- // console.log(table_info, 202);
632
- upsertSub({
633
- table_name: table_info.name,
634
- condition: parseCondition(condition),
635
- parentSubParams: undefined,
636
- is_ready: false
637
- }, undefined);
638
- await this.addTrigger({
639
- table_name: table_info.name,
640
- condition: parseCondition(condition),
641
- });
642
- upsertSub({
643
- table_name: table_info.name,
644
- condition: parseCondition(condition),
645
- parentSubParams: undefined,
646
- is_ready: true
647
- }, undefined);
648
- return channel_name;
649
- }
650
- removeLocalSub(table_name, condition, func) {
651
- const cond = parseCondition(condition);
652
- if ((0, utils_1.get)(this.subs, [table_name, cond, "subs"])) {
653
- this.subs[table_name][cond].subs.map((sub, i) => {
654
- if (sub.func && sub.func === func) {
655
- this.subs[table_name][cond].subs.splice(i, 1);
656
- }
657
- });
658
- }
659
- else {
660
- console.error("Could not unsubscribe. Subscription might not have initialised yet");
661
- }
662
- }
357
+ addSync = addSync_1.addSync.bind(this);
358
+ addSub = addSub_1.addSub.bind(this);
663
359
  getActiveListeners = () => {
664
360
  const result = [];
665
361
  const upsert = (t, c) => {
@@ -670,63 +366,13 @@ class PubSubManager {
670
366
  (this.syncs || []).map(s => {
671
367
  upsert(s.table_name, s.condition);
672
368
  });
673
- Object.keys(this.subs || {}).map(table_name => {
674
- Object.keys(this.subs[table_name] || {}).map(condition => {
675
- if (this.subs[table_name][condition].subs.length) {
676
- upsert(table_name, condition);
677
- }
369
+ this.subs.forEach(s => {
370
+ s.triggers.forEach(trg => {
371
+ upsert(trg.table_name, trg.condition);
678
372
  });
679
373
  });
680
374
  return result;
681
375
  };
682
- onSocketDisconnected(socket, channel_name) {
683
- // process.on('warning', e => {
684
- // console.warn(e.stack)
685
- // });
686
- // console.log("onSocketDisconnected", channel_name, this.syncs)
687
- if (this.subs) {
688
- Object.keys(this.subs).map(table_name => {
689
- Object.keys(this.subs[table_name]).map(condition => {
690
- this.subs[table_name][condition].subs.map((sub, i) => {
691
- /**
692
- * If a channel name is specified then delete triggers
693
- */
694
- if ((socket && sub.socket_id === socket.id) &&
695
- (!channel_name || sub.channel_name === channel_name)) {
696
- this.subs[table_name][condition].subs.splice(i, 1);
697
- if (!this.subs[table_name][condition].subs.length) {
698
- delete this.subs[table_name][condition];
699
- if ((0, prostgles_types_1.isEmpty)(this.subs[table_name])) {
700
- delete this.subs[table_name];
701
- }
702
- }
703
- }
704
- });
705
- });
706
- });
707
- }
708
- if (this.syncs) {
709
- this.syncs = this.syncs.filter(s => {
710
- const matchesSocket = Boolean(socket && s.socket_id !== socket.id);
711
- if (channel_name) {
712
- return matchesSocket || s.channel_name !== channel_name;
713
- }
714
- return matchesSocket;
715
- });
716
- }
717
- if (!socket) {
718
- // Do nothing
719
- }
720
- else if (!channel_name) {
721
- delete this.sockets[socket.id];
722
- }
723
- else {
724
- socket.removeAllListeners(channel_name);
725
- socket.removeAllListeners(channel_name + "unsync");
726
- socket.removeAllListeners(channel_name + "unsubscribe");
727
- }
728
- return "ok";
729
- }
730
376
  checkIfTimescaleBug = async (table_name) => {
731
377
  const schema = "_timescaledb_catalog", res = await this.db.oneOrNone("SELECT EXISTS( \
732
378
  SELECT * \
@@ -810,6 +456,7 @@ class PubSubManager {
810
456
  }
811
457
  exports.PubSubManager = PubSubManager;
812
458
  const parseCondition = (condition) => condition && condition.trim().length ? condition : "TRUE";
459
+ exports.parseCondition = parseCondition;
813
460
  var prostgles_types_2 = require("prostgles-types");
814
461
  Object.defineProperty(exports, "pickKeys", { enumerable: true, get: function () { return prostgles_types_2.pickKeys; } });
815
462
  Object.defineProperty(exports, "omitKeys", { enumerable: true, get: function () { return prostgles_types_2.omitKeys; } });