@depup/supabase__realtime-js 2.99.3-depup.0
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/README.md +32 -0
- package/changes.json +14 -0
- package/dist/main/RealtimeChannel.d.ts +370 -0
- package/dist/main/RealtimeChannel.d.ts.map +1 -0
- package/dist/main/RealtimeChannel.js +644 -0
- package/dist/main/RealtimeChannel.js.map +1 -0
- package/dist/main/RealtimeClient.d.ts +238 -0
- package/dist/main/RealtimeClient.d.ts.map +1 -0
- package/dist/main/RealtimeClient.js +870 -0
- package/dist/main/RealtimeClient.js.map +1 -0
- package/dist/main/RealtimePresence.d.ts +76 -0
- package/dist/main/RealtimePresence.d.ts.map +1 -0
- package/dist/main/RealtimePresence.js +237 -0
- package/dist/main/RealtimePresence.js.map +1 -0
- package/dist/main/index.d.ts +6 -0
- package/dist/main/index.d.ts.map +1 -0
- package/dist/main/index.js +18 -0
- package/dist/main/index.js.map +1 -0
- package/dist/main/lib/constants.d.ts +39 -0
- package/dist/main/lib/constants.d.ts.map +1 -0
- package/dist/main/lib/constants.js +48 -0
- package/dist/main/lib/constants.js.map +1 -0
- package/dist/main/lib/push.d.ts +48 -0
- package/dist/main/lib/push.d.ts.map +1 -0
- package/dist/main/lib/push.js +102 -0
- package/dist/main/lib/push.js.map +1 -0
- package/dist/main/lib/serializer.d.ts +33 -0
- package/dist/main/lib/serializer.d.ts.map +1 -0
- package/dist/main/lib/serializer.js +155 -0
- package/dist/main/lib/serializer.js.map +1 -0
- package/dist/main/lib/timer.d.ts +22 -0
- package/dist/main/lib/timer.d.ts.map +1 -0
- package/dist/main/lib/timer.js +39 -0
- package/dist/main/lib/timer.js.map +1 -0
- package/dist/main/lib/transformers.d.ts +109 -0
- package/dist/main/lib/transformers.d.ts.map +1 -0
- package/dist/main/lib/transformers.js +241 -0
- package/dist/main/lib/transformers.js.map +1 -0
- package/dist/main/lib/version.d.ts +2 -0
- package/dist/main/lib/version.d.ts.map +1 -0
- package/dist/main/lib/version.js +11 -0
- package/dist/main/lib/version.js.map +1 -0
- package/dist/main/lib/websocket-factory.d.ts +81 -0
- package/dist/main/lib/websocket-factory.d.ts.map +1 -0
- package/dist/main/lib/websocket-factory.js +131 -0
- package/dist/main/lib/websocket-factory.js.map +1 -0
- package/dist/module/RealtimeChannel.d.ts +370 -0
- package/dist/module/RealtimeChannel.d.ts.map +1 -0
- package/dist/module/RealtimeChannel.js +639 -0
- package/dist/module/RealtimeChannel.js.map +1 -0
- package/dist/module/RealtimeClient.d.ts +238 -0
- package/dist/module/RealtimeClient.d.ts.map +1 -0
- package/dist/module/RealtimeClient.js +866 -0
- package/dist/module/RealtimeClient.js.map +1 -0
- package/dist/module/RealtimePresence.d.ts +76 -0
- package/dist/module/RealtimePresence.d.ts.map +1 -0
- package/dist/module/RealtimePresence.js +233 -0
- package/dist/module/RealtimePresence.js.map +1 -0
- package/dist/module/index.d.ts +6 -0
- package/dist/module/index.d.ts.map +1 -0
- package/dist/module/index.js +6 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/lib/constants.d.ts +39 -0
- package/dist/module/lib/constants.d.ts.map +1 -0
- package/dist/module/lib/constants.js +45 -0
- package/dist/module/lib/constants.js.map +1 -0
- package/dist/module/lib/push.d.ts +48 -0
- package/dist/module/lib/push.d.ts.map +1 -0
- package/dist/module/lib/push.js +99 -0
- package/dist/module/lib/push.js.map +1 -0
- package/dist/module/lib/serializer.d.ts +33 -0
- package/dist/module/lib/serializer.d.ts.map +1 -0
- package/dist/module/lib/serializer.js +152 -0
- package/dist/module/lib/serializer.js.map +1 -0
- package/dist/module/lib/timer.d.ts +22 -0
- package/dist/module/lib/timer.d.ts.map +1 -0
- package/dist/module/lib/timer.js +36 -0
- package/dist/module/lib/timer.js.map +1 -0
- package/dist/module/lib/transformers.d.ts +109 -0
- package/dist/module/lib/transformers.d.ts.map +1 -0
- package/dist/module/lib/transformers.js +229 -0
- package/dist/module/lib/transformers.js.map +1 -0
- package/dist/module/lib/version.d.ts +2 -0
- package/dist/module/lib/version.d.ts.map +1 -0
- package/dist/module/lib/version.js +8 -0
- package/dist/module/lib/version.js.map +1 -0
- package/dist/module/lib/websocket-factory.d.ts +81 -0
- package/dist/module/lib/websocket-factory.d.ts.map +1 -0
- package/dist/module/lib/websocket-factory.js +127 -0
- package/dist/module/lib/websocket-factory.js.map +1 -0
- package/dist/tsconfig.module.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +85 -0
- package/src/RealtimeChannel.ts +1039 -0
- package/src/RealtimeClient.ts +1023 -0
- package/src/RealtimePresence.ts +346 -0
- package/src/index.ts +53 -0
- package/src/lib/constants.ts +49 -0
- package/src/lib/push.ts +121 -0
- package/src/lib/serializer.ts +203 -0
- package/src/lib/timer.ts +43 -0
- package/src/lib/transformers.ts +270 -0
- package/src/lib/version.ts +7 -0
- package/src/lib/websocket-factory.ts +192 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const constants_1 = require("../lib/constants");
|
|
4
|
+
class Push {
|
|
5
|
+
/**
|
|
6
|
+
* Initializes the Push
|
|
7
|
+
*
|
|
8
|
+
* @param channel The Channel
|
|
9
|
+
* @param event The event, for example `"phx_join"`
|
|
10
|
+
* @param payload The payload, for example `{user_id: 123}`
|
|
11
|
+
* @param timeout The push timeout in milliseconds
|
|
12
|
+
*/
|
|
13
|
+
constructor(channel, event, payload = {}, timeout = constants_1.DEFAULT_TIMEOUT) {
|
|
14
|
+
this.channel = channel;
|
|
15
|
+
this.event = event;
|
|
16
|
+
this.payload = payload;
|
|
17
|
+
this.timeout = timeout;
|
|
18
|
+
this.sent = false;
|
|
19
|
+
this.timeoutTimer = undefined;
|
|
20
|
+
this.ref = '';
|
|
21
|
+
this.receivedResp = null;
|
|
22
|
+
this.recHooks = [];
|
|
23
|
+
this.refEvent = null;
|
|
24
|
+
}
|
|
25
|
+
resend(timeout) {
|
|
26
|
+
this.timeout = timeout;
|
|
27
|
+
this._cancelRefEvent();
|
|
28
|
+
this.ref = '';
|
|
29
|
+
this.refEvent = null;
|
|
30
|
+
this.receivedResp = null;
|
|
31
|
+
this.sent = false;
|
|
32
|
+
this.send();
|
|
33
|
+
}
|
|
34
|
+
send() {
|
|
35
|
+
if (this._hasReceived('timeout')) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
this.startTimeout();
|
|
39
|
+
this.sent = true;
|
|
40
|
+
this.channel.socket.push({
|
|
41
|
+
topic: this.channel.topic,
|
|
42
|
+
event: this.event,
|
|
43
|
+
payload: this.payload,
|
|
44
|
+
ref: this.ref,
|
|
45
|
+
join_ref: this.channel._joinRef(),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
updatePayload(payload) {
|
|
49
|
+
this.payload = Object.assign(Object.assign({}, this.payload), payload);
|
|
50
|
+
}
|
|
51
|
+
receive(status, callback) {
|
|
52
|
+
var _a;
|
|
53
|
+
if (this._hasReceived(status)) {
|
|
54
|
+
callback((_a = this.receivedResp) === null || _a === void 0 ? void 0 : _a.response);
|
|
55
|
+
}
|
|
56
|
+
this.recHooks.push({ status, callback });
|
|
57
|
+
return this;
|
|
58
|
+
}
|
|
59
|
+
startTimeout() {
|
|
60
|
+
if (this.timeoutTimer) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
this.ref = this.channel.socket._makeRef();
|
|
64
|
+
this.refEvent = this.channel._replyEventName(this.ref);
|
|
65
|
+
const callback = (payload) => {
|
|
66
|
+
this._cancelRefEvent();
|
|
67
|
+
this._cancelTimeout();
|
|
68
|
+
this.receivedResp = payload;
|
|
69
|
+
this._matchReceive(payload);
|
|
70
|
+
};
|
|
71
|
+
this.channel._on(this.refEvent, {}, callback);
|
|
72
|
+
this.timeoutTimer = setTimeout(() => {
|
|
73
|
+
this.trigger('timeout', {});
|
|
74
|
+
}, this.timeout);
|
|
75
|
+
}
|
|
76
|
+
trigger(status, response) {
|
|
77
|
+
if (this.refEvent)
|
|
78
|
+
this.channel._trigger(this.refEvent, { status, response });
|
|
79
|
+
}
|
|
80
|
+
destroy() {
|
|
81
|
+
this._cancelRefEvent();
|
|
82
|
+
this._cancelTimeout();
|
|
83
|
+
}
|
|
84
|
+
_cancelRefEvent() {
|
|
85
|
+
if (!this.refEvent) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
this.channel._off(this.refEvent, {});
|
|
89
|
+
}
|
|
90
|
+
_cancelTimeout() {
|
|
91
|
+
clearTimeout(this.timeoutTimer);
|
|
92
|
+
this.timeoutTimer = undefined;
|
|
93
|
+
}
|
|
94
|
+
_matchReceive({ status, response }) {
|
|
95
|
+
this.recHooks.filter((h) => h.status === status).forEach((h) => h.callback(response));
|
|
96
|
+
}
|
|
97
|
+
_hasReceived(status) {
|
|
98
|
+
return this.receivedResp && this.receivedResp.status === status;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.default = Push;
|
|
102
|
+
//# sourceMappingURL=push.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/lib/push.ts"],"names":[],"mappings":";;AAAA,gDAAkD;AAGlD,MAAqB,IAAI;IAcvB;;;;;;;OAOG;IACH,YACS,OAAwB,EACxB,KAAa,EACb,UAAkC,EAAE,EACpC,UAAkB,2BAAe;QAHjC,YAAO,GAAP,OAAO,CAAiB;QACxB,UAAK,GAAL,KAAK,CAAQ;QACb,YAAO,GAAP,OAAO,CAA6B;QACpC,YAAO,GAAP,OAAO,CAA0B;QAzB1C,SAAI,GAAY,KAAK,CAAA;QACrB,iBAAY,GAAuB,SAAS,CAAA;QAC5C,QAAG,GAAW,EAAE,CAAA;QAChB,iBAAY,GAGD,IAAI,CAAA;QACf,aAAQ,GAGF,EAAE,CAAA;QACR,aAAQ,GAAkB,IAAI,CAAA;IAe3B,CAAC;IAEJ,MAAM,CAAC,OAAe;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;QACjB,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,OAAM;QACR,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YACvB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;SAClC,CAAC,CAAA;IACJ,CAAC;IAED,aAAa,CAAC,OAA+B;QAC3C,IAAI,CAAC,OAAO,mCAAQ,IAAI,CAAC,OAAO,GAAK,OAAO,CAAE,CAAA;IAChD,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,QAAkB;;QACxC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,QAAQ,CAAC,MAAA,IAAI,CAAC,YAAY,0CAAE,QAAQ,CAAC,CAAA;QACvC,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;QACxC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAEtD,MAAM,QAAQ,GAAG,CAAC,OAAY,EAAE,EAAE;YAChC,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,cAAc,EAAE,CAAA;YACrB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAA;YAC3B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAC7B,CAAC,CAAA;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;QAE7C,IAAI,CAAC,YAAY,GAAQ,UAAU,CAAC,GAAG,EAAE;YACvC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAC7B,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAClB,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,QAAa;QACnC,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC/E,CAAC;IAED,OAAO;QACL,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,IAAI,CAAC,cAAc,EAAE,CAAA;IACvB,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IACtC,CAAC;IAEO,cAAc;QACpB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC/B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAA;IAC/B,CAAC;IAEO,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,EAA0C;QAChF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;IACvF,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,MAAM,CAAA;IACjE,CAAC;CACF;AArHD,uBAqHC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type Msg<T> = {
|
|
2
|
+
join_ref?: string | null;
|
|
3
|
+
ref?: string | null;
|
|
4
|
+
topic: string;
|
|
5
|
+
event: string;
|
|
6
|
+
payload: T;
|
|
7
|
+
};
|
|
8
|
+
export default class Serializer {
|
|
9
|
+
HEADER_LENGTH: number;
|
|
10
|
+
USER_BROADCAST_PUSH_META_LENGTH: number;
|
|
11
|
+
KINDS: {
|
|
12
|
+
userBroadcastPush: number;
|
|
13
|
+
userBroadcast: number;
|
|
14
|
+
};
|
|
15
|
+
BINARY_ENCODING: number;
|
|
16
|
+
JSON_ENCODING: number;
|
|
17
|
+
BROADCAST_EVENT: string;
|
|
18
|
+
allowedMetadataKeys: string[];
|
|
19
|
+
constructor(allowedMetadataKeys?: string[] | null);
|
|
20
|
+
encode(msg: Msg<{
|
|
21
|
+
[key: string]: any;
|
|
22
|
+
}>, callback: (result: ArrayBuffer | string) => any): any;
|
|
23
|
+
private _binaryEncodeUserBroadcastPush;
|
|
24
|
+
private _encodeBinaryUserBroadcastPush;
|
|
25
|
+
private _encodeJsonUserBroadcastPush;
|
|
26
|
+
private _encodeUserBroadcastPush;
|
|
27
|
+
decode(rawPayload: ArrayBuffer | string, callback: Function): any;
|
|
28
|
+
private _binaryDecode;
|
|
29
|
+
private _decodeUserBroadcast;
|
|
30
|
+
private _isArrayBuffer;
|
|
31
|
+
private _pick;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=serializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../../src/lib/serializer.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,CAAC,CAAA;CACX,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,aAAa,SAAI;IACjB,+BAA+B,SAAI;IACnC,KAAK;;;MAA6C;IAClD,eAAe,SAAI;IACnB,aAAa,SAAI;IACjB,eAAe,SAAc;IAE7B,mBAAmB,EAAE,MAAM,EAAE,CAAK;gBAEtB,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,KAAK,GAAG;IAexF,OAAO,CAAC,8BAA8B;IAQtC,OAAO,CAAC,8BAA8B;IAKtC,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,wBAAwB;IAkEhC,MAAM,CAAC,UAAU,EAAE,WAAW,GAAG,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAe3D,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,oBAAoB;IA0C5B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,KAAK;CAMd"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class Serializer {
|
|
4
|
+
constructor(allowedMetadataKeys) {
|
|
5
|
+
this.HEADER_LENGTH = 1;
|
|
6
|
+
this.USER_BROADCAST_PUSH_META_LENGTH = 6;
|
|
7
|
+
this.KINDS = { userBroadcastPush: 3, userBroadcast: 4 };
|
|
8
|
+
this.BINARY_ENCODING = 0;
|
|
9
|
+
this.JSON_ENCODING = 1;
|
|
10
|
+
this.BROADCAST_EVENT = 'broadcast';
|
|
11
|
+
this.allowedMetadataKeys = [];
|
|
12
|
+
this.allowedMetadataKeys = allowedMetadataKeys !== null && allowedMetadataKeys !== void 0 ? allowedMetadataKeys : [];
|
|
13
|
+
}
|
|
14
|
+
encode(msg, callback) {
|
|
15
|
+
if (msg.event === this.BROADCAST_EVENT &&
|
|
16
|
+
!(msg.payload instanceof ArrayBuffer) &&
|
|
17
|
+
typeof msg.payload.event === 'string') {
|
|
18
|
+
return callback(this._binaryEncodeUserBroadcastPush(msg));
|
|
19
|
+
}
|
|
20
|
+
let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload];
|
|
21
|
+
return callback(JSON.stringify(payload));
|
|
22
|
+
}
|
|
23
|
+
_binaryEncodeUserBroadcastPush(message) {
|
|
24
|
+
var _a;
|
|
25
|
+
if (this._isArrayBuffer((_a = message.payload) === null || _a === void 0 ? void 0 : _a.payload)) {
|
|
26
|
+
return this._encodeBinaryUserBroadcastPush(message);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return this._encodeJsonUserBroadcastPush(message);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
_encodeBinaryUserBroadcastPush(message) {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
const userPayload = (_b = (_a = message.payload) === null || _a === void 0 ? void 0 : _a.payload) !== null && _b !== void 0 ? _b : new ArrayBuffer(0);
|
|
35
|
+
return this._encodeUserBroadcastPush(message, this.BINARY_ENCODING, userPayload);
|
|
36
|
+
}
|
|
37
|
+
_encodeJsonUserBroadcastPush(message) {
|
|
38
|
+
var _a, _b;
|
|
39
|
+
const userPayload = (_b = (_a = message.payload) === null || _a === void 0 ? void 0 : _a.payload) !== null && _b !== void 0 ? _b : {};
|
|
40
|
+
const encoder = new TextEncoder();
|
|
41
|
+
const encodedUserPayload = encoder.encode(JSON.stringify(userPayload)).buffer;
|
|
42
|
+
return this._encodeUserBroadcastPush(message, this.JSON_ENCODING, encodedUserPayload);
|
|
43
|
+
}
|
|
44
|
+
_encodeUserBroadcastPush(message, encodingType, encodedPayload) {
|
|
45
|
+
var _a, _b;
|
|
46
|
+
const topic = message.topic;
|
|
47
|
+
const ref = (_a = message.ref) !== null && _a !== void 0 ? _a : '';
|
|
48
|
+
const joinRef = (_b = message.join_ref) !== null && _b !== void 0 ? _b : '';
|
|
49
|
+
const userEvent = message.payload.event;
|
|
50
|
+
// Filter metadata based on allowed keys
|
|
51
|
+
const rest = this.allowedMetadataKeys
|
|
52
|
+
? this._pick(message.payload, this.allowedMetadataKeys)
|
|
53
|
+
: {};
|
|
54
|
+
const metadata = Object.keys(rest).length === 0 ? '' : JSON.stringify(rest);
|
|
55
|
+
// Validate lengths don't exceed uint8 max value (255)
|
|
56
|
+
if (joinRef.length > 255) {
|
|
57
|
+
throw new Error(`joinRef length ${joinRef.length} exceeds maximum of 255`);
|
|
58
|
+
}
|
|
59
|
+
if (ref.length > 255) {
|
|
60
|
+
throw new Error(`ref length ${ref.length} exceeds maximum of 255`);
|
|
61
|
+
}
|
|
62
|
+
if (topic.length > 255) {
|
|
63
|
+
throw new Error(`topic length ${topic.length} exceeds maximum of 255`);
|
|
64
|
+
}
|
|
65
|
+
if (userEvent.length > 255) {
|
|
66
|
+
throw new Error(`userEvent length ${userEvent.length} exceeds maximum of 255`);
|
|
67
|
+
}
|
|
68
|
+
if (metadata.length > 255) {
|
|
69
|
+
throw new Error(`metadata length ${metadata.length} exceeds maximum of 255`);
|
|
70
|
+
}
|
|
71
|
+
const metaLength = this.USER_BROADCAST_PUSH_META_LENGTH +
|
|
72
|
+
joinRef.length +
|
|
73
|
+
ref.length +
|
|
74
|
+
topic.length +
|
|
75
|
+
userEvent.length +
|
|
76
|
+
metadata.length;
|
|
77
|
+
const header = new ArrayBuffer(this.HEADER_LENGTH + metaLength);
|
|
78
|
+
let view = new DataView(header);
|
|
79
|
+
let offset = 0;
|
|
80
|
+
view.setUint8(offset++, this.KINDS.userBroadcastPush); // kind
|
|
81
|
+
view.setUint8(offset++, joinRef.length);
|
|
82
|
+
view.setUint8(offset++, ref.length);
|
|
83
|
+
view.setUint8(offset++, topic.length);
|
|
84
|
+
view.setUint8(offset++, userEvent.length);
|
|
85
|
+
view.setUint8(offset++, metadata.length);
|
|
86
|
+
view.setUint8(offset++, encodingType);
|
|
87
|
+
Array.from(joinRef, (char) => view.setUint8(offset++, char.charCodeAt(0)));
|
|
88
|
+
Array.from(ref, (char) => view.setUint8(offset++, char.charCodeAt(0)));
|
|
89
|
+
Array.from(topic, (char) => view.setUint8(offset++, char.charCodeAt(0)));
|
|
90
|
+
Array.from(userEvent, (char) => view.setUint8(offset++, char.charCodeAt(0)));
|
|
91
|
+
Array.from(metadata, (char) => view.setUint8(offset++, char.charCodeAt(0)));
|
|
92
|
+
var combined = new Uint8Array(header.byteLength + encodedPayload.byteLength);
|
|
93
|
+
combined.set(new Uint8Array(header), 0);
|
|
94
|
+
combined.set(new Uint8Array(encodedPayload), header.byteLength);
|
|
95
|
+
return combined.buffer;
|
|
96
|
+
}
|
|
97
|
+
decode(rawPayload, callback) {
|
|
98
|
+
if (this._isArrayBuffer(rawPayload)) {
|
|
99
|
+
let result = this._binaryDecode(rawPayload);
|
|
100
|
+
return callback(result);
|
|
101
|
+
}
|
|
102
|
+
if (typeof rawPayload === 'string') {
|
|
103
|
+
const jsonPayload = JSON.parse(rawPayload);
|
|
104
|
+
const [join_ref, ref, topic, event, payload] = jsonPayload;
|
|
105
|
+
return callback({ join_ref, ref, topic, event, payload });
|
|
106
|
+
}
|
|
107
|
+
return callback({});
|
|
108
|
+
}
|
|
109
|
+
_binaryDecode(buffer) {
|
|
110
|
+
const view = new DataView(buffer);
|
|
111
|
+
const kind = view.getUint8(0);
|
|
112
|
+
const decoder = new TextDecoder();
|
|
113
|
+
switch (kind) {
|
|
114
|
+
case this.KINDS.userBroadcast:
|
|
115
|
+
return this._decodeUserBroadcast(buffer, view, decoder);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
_decodeUserBroadcast(buffer, view, decoder) {
|
|
119
|
+
const topicSize = view.getUint8(1);
|
|
120
|
+
const userEventSize = view.getUint8(2);
|
|
121
|
+
const metadataSize = view.getUint8(3);
|
|
122
|
+
const payloadEncoding = view.getUint8(4);
|
|
123
|
+
let offset = this.HEADER_LENGTH + 4;
|
|
124
|
+
const topic = decoder.decode(buffer.slice(offset, offset + topicSize));
|
|
125
|
+
offset = offset + topicSize;
|
|
126
|
+
const userEvent = decoder.decode(buffer.slice(offset, offset + userEventSize));
|
|
127
|
+
offset = offset + userEventSize;
|
|
128
|
+
const metadata = decoder.decode(buffer.slice(offset, offset + metadataSize));
|
|
129
|
+
offset = offset + metadataSize;
|
|
130
|
+
const payload = buffer.slice(offset, buffer.byteLength);
|
|
131
|
+
const parsedPayload = payloadEncoding === this.JSON_ENCODING ? JSON.parse(decoder.decode(payload)) : payload;
|
|
132
|
+
const data = {
|
|
133
|
+
type: this.BROADCAST_EVENT,
|
|
134
|
+
event: userEvent,
|
|
135
|
+
payload: parsedPayload,
|
|
136
|
+
};
|
|
137
|
+
// Metadata is optional and always JSON encoded
|
|
138
|
+
if (metadataSize > 0) {
|
|
139
|
+
data['meta'] = JSON.parse(metadata);
|
|
140
|
+
}
|
|
141
|
+
return { join_ref: null, ref: null, topic: topic, event: this.BROADCAST_EVENT, payload: data };
|
|
142
|
+
}
|
|
143
|
+
_isArrayBuffer(buffer) {
|
|
144
|
+
var _a;
|
|
145
|
+
return buffer instanceof ArrayBuffer || ((_a = buffer === null || buffer === void 0 ? void 0 : buffer.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'ArrayBuffer';
|
|
146
|
+
}
|
|
147
|
+
_pick(obj, keys) {
|
|
148
|
+
if (!obj || typeof obj !== 'object') {
|
|
149
|
+
return {};
|
|
150
|
+
}
|
|
151
|
+
return Object.fromEntries(Object.entries(obj).filter(([key]) => keys.includes(key)));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
exports.default = Serializer;
|
|
155
|
+
//# sourceMappingURL=serializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../../src/lib/serializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a timer that accepts a `timerCalc` function to perform calculated timeout retries, such as exponential backoff.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* let reconnectTimer = new Timer(() => this.connect(), function(tries){
|
|
6
|
+
* return [1000, 5000, 10000][tries - 1] || 10000
|
|
7
|
+
* })
|
|
8
|
+
* reconnectTimer.scheduleTimeout() // fires after 1000
|
|
9
|
+
* reconnectTimer.scheduleTimeout() // fires after 5000
|
|
10
|
+
* reconnectTimer.reset()
|
|
11
|
+
* reconnectTimer.scheduleTimeout() // fires after 1000
|
|
12
|
+
*/
|
|
13
|
+
export default class Timer {
|
|
14
|
+
callback: Function;
|
|
15
|
+
timerCalc: Function;
|
|
16
|
+
timer: number | undefined;
|
|
17
|
+
tries: number;
|
|
18
|
+
constructor(callback: Function, timerCalc: Function);
|
|
19
|
+
reset(): void;
|
|
20
|
+
scheduleTimeout(): void;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=timer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timer.d.ts","sourceRoot":"","sources":["../../../src/lib/timer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,OAAO,KAAK;IAKf,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,QAAQ;IAL5B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAY;IACrC,KAAK,EAAE,MAAM,CAAI;gBAGR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,QAAQ;IAM5B,KAAK;IAOL,eAAe;CAWhB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Creates a timer that accepts a `timerCalc` function to perform calculated timeout retries, such as exponential backoff.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* let reconnectTimer = new Timer(() => this.connect(), function(tries){
|
|
8
|
+
* return [1000, 5000, 10000][tries - 1] || 10000
|
|
9
|
+
* })
|
|
10
|
+
* reconnectTimer.scheduleTimeout() // fires after 1000
|
|
11
|
+
* reconnectTimer.scheduleTimeout() // fires after 5000
|
|
12
|
+
* reconnectTimer.reset()
|
|
13
|
+
* reconnectTimer.scheduleTimeout() // fires after 1000
|
|
14
|
+
*/
|
|
15
|
+
class Timer {
|
|
16
|
+
constructor(callback, timerCalc) {
|
|
17
|
+
this.callback = callback;
|
|
18
|
+
this.timerCalc = timerCalc;
|
|
19
|
+
this.timer = undefined;
|
|
20
|
+
this.tries = 0;
|
|
21
|
+
this.callback = callback;
|
|
22
|
+
this.timerCalc = timerCalc;
|
|
23
|
+
}
|
|
24
|
+
reset() {
|
|
25
|
+
this.tries = 0;
|
|
26
|
+
clearTimeout(this.timer);
|
|
27
|
+
this.timer = undefined;
|
|
28
|
+
}
|
|
29
|
+
// Cancels any previous scheduleTimeout and schedules callback
|
|
30
|
+
scheduleTimeout() {
|
|
31
|
+
clearTimeout(this.timer);
|
|
32
|
+
this.timer = setTimeout(() => {
|
|
33
|
+
this.tries = this.tries + 1;
|
|
34
|
+
this.callback();
|
|
35
|
+
}, this.timerCalc(this.tries + 1));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.default = Timer;
|
|
39
|
+
//# sourceMappingURL=timer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timer.js","sourceRoot":"","sources":["../../../src/lib/timer.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;GAWG;AACH,MAAqB,KAAK;IAIxB,YACS,QAAkB,EAClB,SAAmB;QADnB,aAAQ,GAAR,QAAQ,CAAU;QAClB,cAAS,GAAT,SAAS,CAAU;QAL5B,UAAK,GAAuB,SAAS,CAAA;QACrC,UAAK,GAAW,CAAC,CAAA;QAMf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;QACd,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;IACxB,CAAC;IAED,8DAA8D;IAC9D,eAAe;QACb,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAExB,IAAI,CAAC,KAAK,GAAQ,UAAU,CAC1B,GAAG,EAAE;YACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;YAC3B,IAAI,CAAC,QAAQ,EAAE,CAAA;QACjB,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAC/B,CAAA;IACH,CAAC;CACF;AA9BD,wBA8BC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers to convert the change Payload into native JS types.
|
|
3
|
+
*/
|
|
4
|
+
export declare enum PostgresTypes {
|
|
5
|
+
abstime = "abstime",
|
|
6
|
+
bool = "bool",
|
|
7
|
+
date = "date",
|
|
8
|
+
daterange = "daterange",
|
|
9
|
+
float4 = "float4",
|
|
10
|
+
float8 = "float8",
|
|
11
|
+
int2 = "int2",
|
|
12
|
+
int4 = "int4",
|
|
13
|
+
int4range = "int4range",
|
|
14
|
+
int8 = "int8",
|
|
15
|
+
int8range = "int8range",
|
|
16
|
+
json = "json",
|
|
17
|
+
jsonb = "jsonb",
|
|
18
|
+
money = "money",
|
|
19
|
+
numeric = "numeric",
|
|
20
|
+
oid = "oid",
|
|
21
|
+
reltime = "reltime",
|
|
22
|
+
text = "text",
|
|
23
|
+
time = "time",
|
|
24
|
+
timestamp = "timestamp",
|
|
25
|
+
timestamptz = "timestamptz",
|
|
26
|
+
timetz = "timetz",
|
|
27
|
+
tsrange = "tsrange",
|
|
28
|
+
tstzrange = "tstzrange"
|
|
29
|
+
}
|
|
30
|
+
type Columns = {
|
|
31
|
+
name: string;
|
|
32
|
+
type: string;
|
|
33
|
+
flags?: string[];
|
|
34
|
+
type_modifier?: number;
|
|
35
|
+
}[];
|
|
36
|
+
type BaseValue = null | string | number | boolean;
|
|
37
|
+
type RecordValue = BaseValue | BaseValue[];
|
|
38
|
+
type Record = {
|
|
39
|
+
[key: string]: RecordValue;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Takes an array of columns and an object of string values then converts each string value
|
|
43
|
+
* to its mapped type.
|
|
44
|
+
*
|
|
45
|
+
* @param {{name: String, type: String}[]} columns
|
|
46
|
+
* @param {Object} record
|
|
47
|
+
* @param {Object} options The map of various options that can be applied to the mapper
|
|
48
|
+
* @param {Array} options.skipTypes The array of types that should not be converted
|
|
49
|
+
*
|
|
50
|
+
* @example convertChangeData([{name: 'first_name', type: 'text'}, {name: 'age', type: 'int4'}], {first_name: 'Paul', age:'33'}, {})
|
|
51
|
+
* //=>{ first_name: 'Paul', age: 33 }
|
|
52
|
+
*/
|
|
53
|
+
export declare const convertChangeData: (columns: Columns, record: Record | null, options?: {
|
|
54
|
+
skipTypes?: string[];
|
|
55
|
+
}) => Record;
|
|
56
|
+
/**
|
|
57
|
+
* Converts the value of an individual column.
|
|
58
|
+
*
|
|
59
|
+
* @param {String} columnName The column that you want to convert
|
|
60
|
+
* @param {{name: String, type: String}[]} columns All of the columns
|
|
61
|
+
* @param {Object} record The map of string values
|
|
62
|
+
* @param {Array} skipTypes An array of types that should not be converted
|
|
63
|
+
* @return {object} Useless information
|
|
64
|
+
*
|
|
65
|
+
* @example convertColumn('age', [{name: 'first_name', type: 'text'}, {name: 'age', type: 'int4'}], {first_name: 'Paul', age: '33'}, [])
|
|
66
|
+
* //=> 33
|
|
67
|
+
* @example convertColumn('age', [{name: 'first_name', type: 'text'}, {name: 'age', type: 'int4'}], {first_name: 'Paul', age: '33'}, ['int4'])
|
|
68
|
+
* //=> "33"
|
|
69
|
+
*/
|
|
70
|
+
export declare const convertColumn: (columnName: string, columns: Columns, record: Record, skipTypes: string[]) => RecordValue;
|
|
71
|
+
/**
|
|
72
|
+
* If the value of the cell is `null`, returns null.
|
|
73
|
+
* Otherwise converts the string value to the correct type.
|
|
74
|
+
* @param {String} type A postgres column type
|
|
75
|
+
* @param {String} value The cell value
|
|
76
|
+
*
|
|
77
|
+
* @example convertCell('bool', 't')
|
|
78
|
+
* //=> true
|
|
79
|
+
* @example convertCell('int8', '10')
|
|
80
|
+
* //=> 10
|
|
81
|
+
* @example convertCell('_int4', '{1,2,3,4}')
|
|
82
|
+
* //=> [1,2,3,4]
|
|
83
|
+
*/
|
|
84
|
+
export declare const convertCell: (type: string, value: RecordValue) => RecordValue;
|
|
85
|
+
export declare const toBoolean: (value: RecordValue) => RecordValue;
|
|
86
|
+
export declare const toNumber: (value: RecordValue) => RecordValue;
|
|
87
|
+
export declare const toJson: (value: RecordValue) => RecordValue;
|
|
88
|
+
/**
|
|
89
|
+
* Converts a Postgres Array into a native JS array
|
|
90
|
+
*
|
|
91
|
+
* @example toArray('{}', 'int4')
|
|
92
|
+
* //=> []
|
|
93
|
+
* @example toArray('{"[2021-01-01,2021-12-31)","(2021-01-01,2021-12-32]"}', 'daterange')
|
|
94
|
+
* //=> ['[2021-01-01,2021-12-31)', '(2021-01-01,2021-12-32]']
|
|
95
|
+
* @example toArray([1,2,3,4], 'int4')
|
|
96
|
+
* //=> [1,2,3,4]
|
|
97
|
+
*/
|
|
98
|
+
export declare const toArray: (value: RecordValue, type: string) => RecordValue;
|
|
99
|
+
/**
|
|
100
|
+
* Fixes timestamp to be ISO-8601. Swaps the space between the date and time for a 'T'
|
|
101
|
+
* See https://github.com/supabase/supabase/issues/18
|
|
102
|
+
*
|
|
103
|
+
* @example toTimestampString('2019-09-10 00:00:00')
|
|
104
|
+
* //=> '2019-09-10T00:00:00'
|
|
105
|
+
*/
|
|
106
|
+
export declare const toTimestampString: (value: RecordValue) => RecordValue;
|
|
107
|
+
export declare const httpEndpointURL: (socketUrl: string) => string;
|
|
108
|
+
export {};
|
|
109
|
+
//# sourceMappingURL=transformers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../../../src/lib/transformers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,SAAS,cAAc;CACxB;AAED,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,EAAE,CAAA;AAEH,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AACjD,KAAK,WAAW,GAAG,SAAS,GAAG,SAAS,EAAE,CAAA;AAE1C,KAAK,MAAM,GAAG;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;CAC3B,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,OAAO,EAChB,QAAQ,MAAM,GAAG,IAAI,EACrB,UAAS;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,KACrC,MAWF,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa,GACxB,YAAY,MAAM,EAClB,SAAS,OAAO,EAChB,QAAQ,MAAM,EACd,WAAW,MAAM,EAAE,KAClB,WAUF,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,OAAO,WAAW,KAAG,WA0C9D,CAAA;AAKD,eAAO,MAAM,SAAS,GAAI,OAAO,WAAW,KAAG,WAS9C,CAAA;AACD,eAAO,MAAM,QAAQ,GAAI,OAAO,WAAW,KAAG,WAQ7C,CAAA;AACD,eAAO,MAAM,MAAM,GAAI,OAAO,WAAW,KAAG,WAS3C,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,WAAW,EAAE,MAAM,MAAM,KAAG,WA0B1D,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,WAAW,KAAG,WAMtD,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,WAAW,MAAM,KAAG,MAkBnD,CAAA"}
|