@supabase/realtime-js 1.7.4 → 1.8.0-next.1

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 (55) hide show
  1. package/dist/main/{RealtimeSubscription.d.ts → RealtimeChannel.d.ts} +37 -6
  2. package/dist/main/RealtimeChannel.d.ts.map +1 -0
  3. package/dist/main/{RealtimeSubscription.js → RealtimeChannel.js} +103 -25
  4. package/dist/main/RealtimeChannel.js.map +1 -0
  5. package/dist/main/RealtimeClient.d.ts +4 -4
  6. package/dist/main/RealtimeClient.d.ts.map +1 -1
  7. package/dist/main/RealtimeClient.js +36 -2
  8. package/dist/main/RealtimeClient.js.map +1 -1
  9. package/dist/main/RealtimePresence.d.ts +97 -0
  10. package/dist/main/RealtimePresence.d.ts.map +1 -0
  11. package/dist/main/RealtimePresence.js +201 -0
  12. package/dist/main/RealtimePresence.js.map +1 -0
  13. package/dist/main/index.d.ts +3 -2
  14. package/dist/main/index.d.ts.map +1 -1
  15. package/dist/main/index.js +5 -3
  16. package/dist/main/index.js.map +1 -1
  17. package/dist/main/lib/push.d.ts +3 -3
  18. package/dist/main/lib/push.d.ts.map +1 -1
  19. package/dist/main/lib/push.js +2 -2
  20. package/dist/main/lib/push.js.map +1 -1
  21. package/dist/main/lib/version.d.ts +1 -1
  22. package/dist/main/lib/version.js +1 -1
  23. package/dist/module/{RealtimeSubscription.d.ts → RealtimeChannel.d.ts} +37 -6
  24. package/dist/module/RealtimeChannel.d.ts.map +1 -0
  25. package/dist/module/{RealtimeSubscription.js → RealtimeChannel.js} +102 -24
  26. package/dist/module/RealtimeChannel.js.map +1 -0
  27. package/dist/module/RealtimeClient.d.ts +4 -4
  28. package/dist/module/RealtimeClient.d.ts.map +1 -1
  29. package/dist/module/RealtimeClient.js +36 -2
  30. package/dist/module/RealtimeClient.js.map +1 -1
  31. package/dist/module/RealtimePresence.d.ts +97 -0
  32. package/dist/module/RealtimePresence.d.ts.map +1 -0
  33. package/dist/module/RealtimePresence.js +198 -0
  34. package/dist/module/RealtimePresence.js.map +1 -0
  35. package/dist/module/index.d.ts +3 -2
  36. package/dist/module/index.d.ts.map +1 -1
  37. package/dist/module/index.js +3 -2
  38. package/dist/module/index.js.map +1 -1
  39. package/dist/module/lib/push.d.ts +3 -3
  40. package/dist/module/lib/push.d.ts.map +1 -1
  41. package/dist/module/lib/push.js +2 -2
  42. package/dist/module/lib/push.js.map +1 -1
  43. package/dist/module/lib/version.d.ts +1 -1
  44. package/dist/module/lib/version.js +1 -1
  45. package/package.json +1 -1
  46. package/src/{RealtimeSubscription.ts → RealtimeChannel.ts} +136 -33
  47. package/src/RealtimeClient.ts +38 -9
  48. package/src/RealtimePresence.ts +326 -0
  49. package/src/index.ts +4 -2
  50. package/src/lib/push.ts +4 -4
  51. package/src/lib/version.ts +1 -1
  52. package/dist/main/RealtimeSubscription.d.ts.map +0 -1
  53. package/dist/main/RealtimeSubscription.js.map +0 -1
  54. package/dist/module/RealtimeSubscription.d.ts.map +0 -1
  55. package/dist/module/RealtimeSubscription.js.map +0 -1
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ /*
3
+ This file draws heavily from https://github.com/phoenixframework/phoenix/blob/d344ec0a732ab4ee204215b31de69cf4be72e3bf/assets/js/phoenix/presence.js
4
+ License: https://github.com/phoenixframework/phoenix/blob/d344ec0a732ab4ee204215b31de69cf4be72e3bf/LICENSE.md
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ class RealtimePresence {
8
+ /**
9
+ * Initializes the Presence.
10
+ *
11
+ * @param channel - The RealtimeChannel
12
+ * @param opts - The options,
13
+ * for example `{events: {state: 'state', diff: 'diff'}}`
14
+ */
15
+ constructor(channel, opts) {
16
+ this.channel = channel;
17
+ this.state = {};
18
+ this.pendingDiffs = [];
19
+ this.joinRef = null;
20
+ this.caller = {
21
+ onJoin: () => { },
22
+ onLeave: () => { },
23
+ onSync: () => { },
24
+ };
25
+ const events = (opts === null || opts === void 0 ? void 0 : opts.events) || {
26
+ state: 'presence_state',
27
+ diff: 'presence_diff',
28
+ };
29
+ this.channel.on(events.state, {}, (newState) => {
30
+ const { onJoin, onLeave, onSync } = this.caller;
31
+ this.joinRef = this.channel.joinRef();
32
+ this.state = RealtimePresence.syncState(this.state, newState, onJoin, onLeave);
33
+ this.pendingDiffs.forEach((diff) => {
34
+ this.state = RealtimePresence.syncDiff(this.state, diff, onJoin, onLeave);
35
+ });
36
+ this.pendingDiffs = [];
37
+ onSync();
38
+ });
39
+ this.channel.on(events.diff, {}, (diff) => {
40
+ const { onJoin, onLeave, onSync } = this.caller;
41
+ if (this.inPendingSyncState()) {
42
+ this.pendingDiffs.push(diff);
43
+ }
44
+ else {
45
+ this.state = RealtimePresence.syncDiff(this.state, diff, onJoin, onLeave);
46
+ onSync();
47
+ }
48
+ });
49
+ }
50
+ /**
51
+ * Used to sync the list of presences on the server with the
52
+ * client's state.
53
+ *
54
+ * An optional `onJoin` and `onLeave` callback can be provided to
55
+ * react to changes in the client's local presences across
56
+ * disconnects and reconnects with the server.
57
+ */
58
+ static syncState(currentState, newState, onJoin, onLeave) {
59
+ const state = this.cloneDeep(currentState);
60
+ const transformedState = this.transformState(newState);
61
+ const joins = {};
62
+ const leaves = {};
63
+ this.map(state, (key, presences) => {
64
+ if (!transformedState[key]) {
65
+ leaves[key] = presences;
66
+ }
67
+ });
68
+ this.map(transformedState, (key, newPresences) => {
69
+ const currentPresences = state[key];
70
+ if (currentPresences) {
71
+ const newPresenceIds = newPresences.map((m) => m.presence_id);
72
+ const curPresenceIds = currentPresences.map((m) => m.presence_id);
73
+ const joinedPresences = newPresences.filter((m) => curPresenceIds.indexOf(m.presence_id) < 0);
74
+ const leftPresences = currentPresences.filter((m) => newPresenceIds.indexOf(m.presence_id) < 0);
75
+ if (joinedPresences.length > 0) {
76
+ joins[key] = joinedPresences;
77
+ }
78
+ if (leftPresences.length > 0) {
79
+ leaves[key] = leftPresences;
80
+ }
81
+ }
82
+ else {
83
+ joins[key] = newPresences;
84
+ }
85
+ });
86
+ return this.syncDiff(state, { joins, leaves }, onJoin, onLeave);
87
+ }
88
+ /**
89
+ * Used to sync a diff of presence join and leave events from the
90
+ * server, as they happen.
91
+ *
92
+ * Like `syncState`, `syncDiff` accepts optional `onJoin` and
93
+ * `onLeave` callbacks to react to a user joining or leaving from a
94
+ * device.
95
+ */
96
+ static syncDiff(state, diff, onJoin, onLeave) {
97
+ const { joins, leaves } = {
98
+ joins: this.transformState(diff.joins),
99
+ leaves: this.transformState(diff.leaves),
100
+ };
101
+ if (!onJoin) {
102
+ onJoin = () => { };
103
+ }
104
+ if (!onLeave) {
105
+ onLeave = () => { };
106
+ }
107
+ this.map(joins, (key, newPresences) => {
108
+ const currentPresences = state[key];
109
+ state[key] = this.cloneDeep(newPresences);
110
+ if (currentPresences) {
111
+ const joinedPresenceIds = state[key].map((m) => m.presence_id);
112
+ const curPresences = currentPresences.filter((m) => joinedPresenceIds.indexOf(m.presence_id) < 0);
113
+ state[key].unshift(...curPresences);
114
+ }
115
+ onJoin(key, currentPresences, newPresences);
116
+ });
117
+ this.map(leaves, (key, leftPresences) => {
118
+ let currentPresences = state[key];
119
+ if (!currentPresences)
120
+ return;
121
+ const presenceIdsToRemove = leftPresences.map((m) => m.presence_id);
122
+ currentPresences = currentPresences.filter((m) => presenceIdsToRemove.indexOf(m.presence_id) < 0);
123
+ state[key] = currentPresences;
124
+ onLeave(key, currentPresences, leftPresences);
125
+ if (currentPresences.length === 0)
126
+ delete state[key];
127
+ });
128
+ return state;
129
+ }
130
+ /**
131
+ * Returns the array of presences, with selected metadata.
132
+ */
133
+ static list(presences, chooser) {
134
+ if (!chooser) {
135
+ chooser = (_key, pres) => pres;
136
+ }
137
+ return this.map(presences, (key, presences) => chooser(key, presences));
138
+ }
139
+ static map(obj, func) {
140
+ return Object.getOwnPropertyNames(obj).map((key) => func(key, obj[key]));
141
+ }
142
+ /**
143
+ * Remove 'metas' key
144
+ * Change 'phx_ref' to 'presence_id'
145
+ * Remove 'phx_ref' and 'phx_ref_prev'
146
+ *
147
+ * @example
148
+ * // returns {
149
+ * abc123: [
150
+ * { presence_id: '2', user_id: 1 },
151
+ * { presence_id: '3', user_id: 2 }
152
+ * ]
153
+ * }
154
+ * RealtimePresence.transformState({
155
+ * abc123: {
156
+ * metas: [
157
+ * { phx_ref: '2', phx_ref_prev: '1' user_id: 1 },
158
+ * { phx_ref: '3', user_id: 2 }
159
+ * ]
160
+ * }
161
+ * })
162
+ */
163
+ static transformState(state) {
164
+ state = this.cloneDeep(state);
165
+ return Object.getOwnPropertyNames(state).reduce((newState, key) => {
166
+ const presences = state[key];
167
+ if ('metas' in presences) {
168
+ newState[key] = presences.metas.map((presence) => {
169
+ presence['presence_id'] = presence['phx_ref'];
170
+ delete presence['phx_ref'];
171
+ delete presence['phx_ref_prev'];
172
+ return presence;
173
+ });
174
+ }
175
+ else {
176
+ newState[key] = presences;
177
+ }
178
+ return newState;
179
+ }, {});
180
+ }
181
+ static cloneDeep(obj) {
182
+ return JSON.parse(JSON.stringify(obj));
183
+ }
184
+ onJoin(callback) {
185
+ this.caller.onJoin = callback;
186
+ }
187
+ onLeave(callback) {
188
+ this.caller.onLeave = callback;
189
+ }
190
+ onSync(callback) {
191
+ this.caller.onSync = callback;
192
+ }
193
+ list(by) {
194
+ return RealtimePresence.list(this.state, by);
195
+ }
196
+ inPendingSyncState() {
197
+ return !this.joinRef || this.joinRef !== this.channel.joinRef();
198
+ }
199
+ }
200
+ exports.default = RealtimePresence;
201
+ //# sourceMappingURL=RealtimePresence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RealtimePresence.js","sourceRoot":"","sources":["../../src/RealtimePresence.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as Transformers from './lib/transformers';
2
2
  import RealtimeClient, { Options as RealtimeClientOptions } from './RealtimeClient';
3
- import RealtimeSubscription from './RealtimeSubscription';
4
- export { RealtimeClient, RealtimeClientOptions, RealtimeSubscription, Transformers, };
3
+ import RealtimeChannel from './RealtimeChannel';
4
+ import RealtimePresence from './RealtimePresence';
5
+ export { RealtimeClient, RealtimeClientOptions, RealtimeChannel, RealtimePresence, Transformers, };
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAClD,OAAO,cAAc,EAAE,EACrB,OAAO,IAAI,qBAAqB,EACjC,MAAM,kBAAkB,CAAA;AACzB,OAAO,oBAAoB,MAAM,wBAAwB,CAAA;AAEzD,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,GACb,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAClD,OAAO,cAAc,EAAE,EACrB,OAAO,IAAI,qBAAqB,EACjC,MAAM,kBAAkB,CAAA;AACzB,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,YAAY,GACb,CAAA"}
@@ -22,11 +22,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
22
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.Transformers = exports.RealtimeSubscription = exports.RealtimeClient = void 0;
25
+ exports.Transformers = exports.RealtimePresence = exports.RealtimeChannel = exports.RealtimeClient = void 0;
26
26
  const Transformers = __importStar(require("./lib/transformers"));
27
27
  exports.Transformers = Transformers;
28
28
  const RealtimeClient_1 = __importDefault(require("./RealtimeClient"));
29
29
  exports.RealtimeClient = RealtimeClient_1.default;
30
- const RealtimeSubscription_1 = __importDefault(require("./RealtimeSubscription"));
31
- exports.RealtimeSubscription = RealtimeSubscription_1.default;
30
+ const RealtimeChannel_1 = __importDefault(require("./RealtimeChannel"));
31
+ exports.RealtimeChannel = RealtimeChannel_1.default;
32
+ const RealtimePresence_1 = __importDefault(require("./RealtimePresence"));
33
+ exports.RealtimePresence = RealtimePresence_1.default;
32
34
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAkD;AAUhD,oCAAY;AATd,sEAEyB;AAIvB,yBANK,wBAAc,CAML;AAHhB,kFAAyD;AAKvD,+BALK,8BAAoB,CAKL"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAkD;AAYhD,oCAAY;AAXd,sEAEyB;AAKvB,yBAPK,wBAAc,CAOL;AAJhB,wEAA+C;AAM7C,0BANK,yBAAe,CAML;AALjB,0EAAiD;AAM/C,2BANK,0BAAgB,CAML"}
@@ -1,6 +1,6 @@
1
- import RealtimeSubscription from '../RealtimeSubscription';
1
+ import RealtimeChannel from '../RealtimeChannel';
2
2
  export default class Push {
3
- channel: RealtimeSubscription;
3
+ channel: RealtimeChannel;
4
4
  event: string;
5
5
  payload: {
6
6
  [key: string]: unknown;
@@ -26,7 +26,7 @@ export default class Push {
26
26
  * @param payload The payload, for example `{user_id: 123}`
27
27
  * @param timeout The push timeout in milliseconds
28
28
  */
29
- constructor(channel: RealtimeSubscription, event: string, payload?: {
29
+ constructor(channel: RealtimeChannel, event: string, payload?: {
30
30
  [key: string]: unknown;
31
31
  }, timeout?: number);
32
32
  resend(timeout: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/lib/push.ts"],"names":[],"mappings":"AACA,OAAO,oBAAoB,MAAM,yBAAyB,CAAA;AAE1D,MAAM,CAAC,OAAO,OAAO,IAAI;IAuBd,OAAO,EAAE,oBAAoB;IAC7B,KAAK,EAAE,MAAM;IACb,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;IACnC,OAAO,EAAE,MAAM;IAzBxB,IAAI,EAAE,OAAO,CAAQ;IACrB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAY;IAC5C,GAAG,EAAE,MAAM,CAAK;IAChB,YAAY,EAAE;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,QAAQ,CAAA;KACnB,GAAG,IAAI,CAAO;IACf,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,QAAQ,CAAA;KACnB,EAAE,CAAK;IACR,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAO;IAE9B;;;;;;;OAOG;gBAEM,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAO,EACxC,OAAO,GAAE,MAAwB;IAG1C,MAAM,CAAC,OAAO,EAAE,MAAM;IAUtB,IAAI;IAcJ,aAAa,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI;IAIxD,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAS1C,YAAY;IAqBZ,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG;IAIrC,OAAO;IAKP,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,YAAY;CAGrB"}
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/lib/push.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,MAAM,oBAAoB,CAAA;AAEhD,MAAM,CAAC,OAAO,OAAO,IAAI;IAuBd,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,MAAM;IACb,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;IACnC,OAAO,EAAE,MAAM;IAzBxB,IAAI,EAAE,OAAO,CAAQ;IACrB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAY;IAC5C,GAAG,EAAE,MAAM,CAAK;IAChB,YAAY,EAAE;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,QAAQ,CAAA;KACnB,GAAG,IAAI,CAAO;IACf,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,QAAQ,CAAA;KACnB,EAAE,CAAK;IACR,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAO;IAE9B;;;;;;;OAOG;gBAEM,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAO,EACxC,OAAO,GAAE,MAAwB;IAG1C,MAAM,CAAC,OAAO,EAAE,MAAM;IAUtB,IAAI;IAcJ,aAAa,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI;IAIxD,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAS1C,YAAY;IAqBZ,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG;IAIrC,OAAO;IAKP,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,YAAY;CAGrB"}
@@ -67,7 +67,7 @@ class Push {
67
67
  this.receivedResp = payload;
68
68
  this._matchReceive(payload);
69
69
  };
70
- this.channel.on(this.refEvent, callback);
70
+ this.channel.on(this.refEvent, {}, callback);
71
71
  this.timeoutTimer = setTimeout(() => {
72
72
  this.trigger('timeout', {});
73
73
  }, this.timeout);
@@ -84,7 +84,7 @@ class Push {
84
84
  if (!this.refEvent) {
85
85
  return;
86
86
  }
87
- this.channel.off(this.refEvent);
87
+ this.channel.off(this.refEvent, {});
88
88
  }
89
89
  _cancelTimeout() {
90
90
  clearTimeout(this.timeoutTimer);
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/lib/push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/lib/push.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const version = "1.7.4";
1
+ export declare const version = "1.8.0-next.1";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- exports.version = '1.7.4';
4
+ exports.version = '1.8.0-next.1';
5
5
  //# sourceMappingURL=version.js.map
@@ -2,7 +2,8 @@ import { CHANNEL_EVENTS, CHANNEL_STATES } from './lib/constants';
2
2
  import Push from './lib/push';
3
3
  import RealtimeClient from './RealtimeClient';
4
4
  import Timer from './lib/timer';
5
- export default class RealtimeSubscription {
5
+ import RealtimePresence from './RealtimePresence';
6
+ export default class RealtimeChannel {
6
7
  topic: string;
7
8
  params: {
8
9
  [key: string]: unknown;
@@ -15,22 +16,45 @@ export default class RealtimeSubscription {
15
16
  joinPush: Push;
16
17
  rejoinTimer: Timer;
17
18
  pushBuffer: Push[];
19
+ presence: RealtimePresence;
18
20
  constructor(topic: string, params: {
19
21
  [key: string]: unknown;
20
22
  }, socket: RealtimeClient);
23
+ list(): any[];
24
+ track(payload: {
25
+ [key: string]: any;
26
+ }, opts?: {
27
+ [key: string]: any;
28
+ }): Promise<unknown>;
29
+ untrack(opts?: {
30
+ [key: string]: any;
31
+ }): Promise<unknown>;
21
32
  rejoinUntilConnected(): void;
22
33
  subscribe(timeout?: number): Push;
34
+ /**
35
+ * Registers a callback that will be executed when the channel closes.
36
+ */
23
37
  onClose(callback: Function): void;
38
+ /**
39
+ * Registers a callback that will be executed when the channel encounteres an error.
40
+ */
24
41
  onError(callback: Function): void;
25
- on(event: string, callback: Function): void;
26
- off(event: string): void;
42
+ on(type: string, filter?: {
43
+ [key: string]: string;
44
+ }, callback?: Function): void;
45
+ off(type: string, filter: {
46
+ [key: string]: any;
47
+ }): void;
48
+ /**
49
+ * Returns `true` if the socket is connected and the channel has been joined.
50
+ */
27
51
  canPush(): boolean;
28
52
  push(event: CHANNEL_EVENTS, payload: any, timeout?: number): Push;
29
53
  updateJoinPayload(payload: {
30
54
  [key: string]: unknown;
31
55
  }): void;
32
56
  /**
33
- * Leaves the channel
57
+ * Leaves the channel.
34
58
  *
35
59
  * Unsubscribes from server events, and instructs channel to terminate on server.
36
60
  * Triggers onClose() hooks.
@@ -49,12 +73,19 @@ export default class RealtimeSubscription {
49
73
  isMember(topic: string): boolean;
50
74
  joinRef(): string;
51
75
  rejoin(timeout?: number): void;
52
- trigger(event: string, payload?: any, ref?: string): void;
76
+ trigger(type: string, payload?: any, ref?: string): void;
77
+ send(payload: {
78
+ type: string;
79
+ [key: string]: any;
80
+ }, opts?: {
81
+ [key: string]: any;
82
+ }): Promise<unknown>;
53
83
  replyEventName(ref: string): string;
54
84
  isClosed(): boolean;
55
85
  isErrored(): boolean;
56
86
  isJoined(): boolean;
57
87
  isJoining(): boolean;
58
88
  isLeaving(): boolean;
89
+ private static isEqual;
59
90
  }
60
- //# sourceMappingURL=RealtimeSubscription.d.ts.map
91
+ //# sourceMappingURL=RealtimeChannel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RealtimeChannel.d.ts","sourceRoot":"","sources":["../../src/RealtimeChannel.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,17 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
1
10
  import { CHANNEL_EVENTS, CHANNEL_STATES } from './lib/constants';
2
11
  import Push from './lib/push';
3
12
  import Timer from './lib/timer';
4
- export default class RealtimeSubscription {
13
+ import RealtimePresence from './RealtimePresence';
14
+ export default class RealtimeChannel {
5
15
  constructor(topic, params = {}, socket) {
6
16
  this.topic = topic;
7
17
  this.params = params;
@@ -41,9 +51,30 @@ export default class RealtimeSubscription {
41
51
  this.state = CHANNEL_STATES.errored;
42
52
  this.rejoinTimer.scheduleTimeout();
43
53
  });
44
- this.on(CHANNEL_EVENTS.reply, (payload, ref) => {
54
+ this.on(CHANNEL_EVENTS.reply, {}, (payload, ref) => {
45
55
  this.trigger(this.replyEventName(ref), payload);
46
56
  });
57
+ this.presence = new RealtimePresence(this);
58
+ }
59
+ list() {
60
+ return this.presence.list();
61
+ }
62
+ track(payload, opts = {}) {
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ return yield this.send({
65
+ type: 'presence',
66
+ event: 'track',
67
+ payload,
68
+ }, opts);
69
+ });
70
+ }
71
+ untrack(opts = {}) {
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ return yield this.send({
74
+ type: 'presence',
75
+ event: 'untrack',
76
+ }, opts);
77
+ });
47
78
  }
48
79
  rejoinUntilConnected() {
49
80
  this.rejoinTimer.scheduleTimeout();
@@ -56,23 +87,54 @@ export default class RealtimeSubscription {
56
87
  throw `tried to subscribe multiple times. 'subscribe' can only be called a single time per channel instance`;
57
88
  }
58
89
  else {
90
+ const configs = this.bindings.reduce((acc, binding) => {
91
+ const { type } = binding;
92
+ if (![
93
+ 'phx_close',
94
+ 'phx_error',
95
+ 'phx_reply',
96
+ 'presence_diff',
97
+ 'presence_state',
98
+ ].includes(type)) {
99
+ acc[type] = binding;
100
+ }
101
+ return acc;
102
+ }, {});
103
+ if (Object.keys(configs).length) {
104
+ this.updateJoinPayload({ configs });
105
+ }
59
106
  this.joinedOnce = true;
60
107
  this.rejoin(timeout);
61
108
  return this.joinPush;
62
109
  }
63
110
  }
111
+ /**
112
+ * Registers a callback that will be executed when the channel closes.
113
+ */
64
114
  onClose(callback) {
65
- this.on(CHANNEL_EVENTS.close, callback);
115
+ this.on(CHANNEL_EVENTS.close, {}, callback);
66
116
  }
117
+ /**
118
+ * Registers a callback that will be executed when the channel encounteres an error.
119
+ */
67
120
  onError(callback) {
68
- this.on(CHANNEL_EVENTS.error, (reason) => callback(reason));
121
+ this.on(CHANNEL_EVENTS.error, {}, (reason) => callback(reason));
69
122
  }
70
- on(event, callback) {
71
- this.bindings.push({ event, callback });
123
+ on(type, filter, callback) {
124
+ this.bindings.push({
125
+ type,
126
+ filter: filter !== null && filter !== void 0 ? filter : {},
127
+ callback: callback !== null && callback !== void 0 ? callback : (() => { }),
128
+ });
72
129
  }
73
- off(event) {
74
- this.bindings = this.bindings.filter((bind) => bind.event !== event);
130
+ off(type, filter) {
131
+ this.bindings = this.bindings.filter((bind) => {
132
+ return !(bind.type === type && RealtimeChannel.isEqual(bind.filter, filter));
133
+ });
75
134
  }
135
+ /**
136
+ * Returns `true` if the socket is connected and the channel has been joined.
137
+ */
76
138
  canPush() {
77
139
  return this.socket.isConnected() && this.isJoined();
78
140
  }
@@ -94,7 +156,7 @@ export default class RealtimeSubscription {
94
156
  this.joinPush.updatePayload(payload);
95
157
  }
96
158
  /**
97
- * Leaves the channel
159
+ * Leaves the channel.
98
160
  *
99
161
  * Unsubscribes from server events, and instructs channel to terminate on server.
100
162
  * Triggers onClose() hooks.
@@ -104,13 +166,13 @@ export default class RealtimeSubscription {
104
166
  */
105
167
  unsubscribe(timeout = this.timeout) {
106
168
  this.state = CHANNEL_STATES.leaving;
107
- let onClose = () => {
169
+ const onClose = () => {
108
170
  this.socket.log('channel', `leave ${this.topic}`);
109
171
  this.trigger(CHANNEL_EVENTS.close, 'leave', this.joinRef());
110
172
  };
111
173
  // Destroy joinPush to avoid connection timeouts during unscription phase
112
174
  this.joinPush.destroy();
113
- let leavePush = new Push(this, CHANNEL_EVENTS.leave, {}, timeout);
175
+ const leavePush = new Push(this, CHANNEL_EVENTS.leave, {}, timeout);
114
176
  leavePush.receive('ok', () => onClose()).receive('timeout', () => onClose());
115
177
  leavePush.send();
116
178
  if (!this.canPush()) {
@@ -141,28 +203,33 @@ export default class RealtimeSubscription {
141
203
  this.state = CHANNEL_STATES.joining;
142
204
  this.joinPush.resend(timeout);
143
205
  }
144
- trigger(event, payload, ref) {
145
- let { close, error, leave, join } = CHANNEL_EVENTS;
146
- let events = [close, error, leave, join];
147
- if (ref && events.indexOf(event) >= 0 && ref !== this.joinRef()) {
206
+ trigger(type, payload, ref) {
207
+ const { close, error, leave, join } = CHANNEL_EVENTS;
208
+ const events = [close, error, leave, join];
209
+ if (ref && events.indexOf(type) >= 0 && ref !== this.joinRef()) {
148
210
  return;
149
211
  }
150
- let handledPayload = this.onMessage(event, payload, ref);
212
+ const handledPayload = this.onMessage(type, payload, ref);
151
213
  if (payload && !handledPayload) {
152
214
  throw 'channel onMessage callbacks must return the payload, modified or unmodified';
153
215
  }
154
216
  this.bindings
155
217
  .filter((bind) => {
156
- // Bind all events if the user specifies a wildcard.
157
- if (bind.event === '*') {
158
- return event === (payload === null || payload === void 0 ? void 0 : payload.type);
159
- }
160
- else {
161
- return bind.event === event;
162
- }
218
+ var _a, _b;
219
+ return ((bind === null || bind === void 0 ? void 0 : bind.type) === type &&
220
+ (((_a = bind === null || bind === void 0 ? void 0 : bind.filter) === null || _a === void 0 ? void 0 : _a.event) === '*' ||
221
+ ((_b = bind === null || bind === void 0 ? void 0 : bind.filter) === null || _b === void 0 ? void 0 : _b.event) === (payload === null || payload === void 0 ? void 0 : payload.event)));
163
222
  })
164
223
  .map((bind) => bind.callback(handledPayload, ref));
165
224
  }
225
+ send(payload, opts = {}) {
226
+ var _a;
227
+ const push = this.push(payload.type, payload, (_a = opts.timeout) !== null && _a !== void 0 ? _a : this.timeout);
228
+ return new Promise((resolve) => {
229
+ push.receive('ok', () => resolve('ok'));
230
+ push.receive('timeout', () => resolve('timeout'));
231
+ });
232
+ }
166
233
  replyEventName(ref) {
167
234
  return `chan_reply_${ref}`;
168
235
  }
@@ -181,5 +248,16 @@ export default class RealtimeSubscription {
181
248
  isLeaving() {
182
249
  return this.state === CHANNEL_STATES.leaving;
183
250
  }
251
+ static isEqual(obj1, obj2) {
252
+ if (Object.keys(obj1).length !== Object.keys(obj2).length) {
253
+ return false;
254
+ }
255
+ for (const k in obj1) {
256
+ if (obj1[k] !== obj2[k]) {
257
+ return false;
258
+ }
259
+ }
260
+ return true;
261
+ }
184
262
  }
185
- //# sourceMappingURL=RealtimeSubscription.js.map
263
+ //# sourceMappingURL=RealtimeChannel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RealtimeChannel.js","sourceRoot":"","sources":["../../src/RealtimeChannel.ts"],"names":[],"mappings":"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"}