@drift-labs/sdk-browser 2.130.0-beta.2 → 2.130.0-beta.4
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/VERSION +1 -1
- package/lib/browser/accounts/webSocketAccountSubscriber.js +28 -7
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.js +28 -7
- package/package.json +1 -1
- package/src/accounts/webSocketAccountSubscriber.ts +43 -3
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.130.0-beta.
|
|
1
|
+
2.130.0-beta.4
|
|
@@ -20,8 +20,11 @@ class WebSocketAccountSubscriber {
|
|
|
20
20
|
commitment !== null && commitment !== void 0 ? commitment : this.program.provider.opts.commitment;
|
|
21
21
|
}
|
|
22
22
|
async subscribe(onChange) {
|
|
23
|
-
var _a;
|
|
23
|
+
var _a, _b;
|
|
24
24
|
if (this.listenerId != null || this.isUnsubscribing) {
|
|
25
|
+
if ((_a = this.resubOpts) === null || _a === void 0 ? void 0 : _a.logResubMessages) {
|
|
26
|
+
console.log(`[${this.logAccountName}] Subscribe returning early - listenerId=${this.listenerId}, isUnsubscribing=${this.isUnsubscribing}`);
|
|
27
|
+
}
|
|
25
28
|
return;
|
|
26
29
|
}
|
|
27
30
|
this.onChange = onChange;
|
|
@@ -40,7 +43,7 @@ class WebSocketAccountSubscriber {
|
|
|
40
43
|
this.handleRpcResponse(context, accountInfo);
|
|
41
44
|
}
|
|
42
45
|
}, this.commitment);
|
|
43
|
-
if ((
|
|
46
|
+
if ((_b = this.resubOpts) === null || _b === void 0 ? void 0 : _b.resubTimeoutMs) {
|
|
44
47
|
this.receivingData = true;
|
|
45
48
|
this.setTimeout();
|
|
46
49
|
}
|
|
@@ -61,18 +64,29 @@ class WebSocketAccountSubscriber {
|
|
|
61
64
|
throw new Error('onChange callback function must be set');
|
|
62
65
|
}
|
|
63
66
|
this.timeoutId = setTimeout(async () => {
|
|
64
|
-
var _a;
|
|
67
|
+
var _a, _b, _c, _d;
|
|
65
68
|
if (this.isUnsubscribing) {
|
|
66
69
|
// If we are in the process of unsubscribing, do not attempt to resubscribe
|
|
70
|
+
if ((_a = this.resubOpts) === null || _a === void 0 ? void 0 : _a.logResubMessages) {
|
|
71
|
+
console.log(`[${this.logAccountName}] Timeout fired but isUnsubscribing=true, skipping resubscribe`);
|
|
72
|
+
}
|
|
67
73
|
return;
|
|
68
74
|
}
|
|
69
75
|
if (this.receivingData) {
|
|
70
|
-
if ((
|
|
71
|
-
console.log(`No ws data from ${this.logAccountName} in ${this.resubOpts.resubTimeoutMs}ms, resubscribing`);
|
|
76
|
+
if ((_b = this.resubOpts) === null || _b === void 0 ? void 0 : _b.logResubMessages) {
|
|
77
|
+
console.log(`No ws data from ${this.logAccountName} in ${this.resubOpts.resubTimeoutMs}ms, resubscribing - listenerId=${this.listenerId}, isUnsubscribing=${this.isUnsubscribing}`);
|
|
72
78
|
}
|
|
73
79
|
await this.unsubscribe(true);
|
|
74
80
|
this.receivingData = false;
|
|
75
81
|
await this.subscribe(this.onChange);
|
|
82
|
+
if ((_c = this.resubOpts) === null || _c === void 0 ? void 0 : _c.logResubMessages) {
|
|
83
|
+
console.log(`[${this.logAccountName}] Resubscribe completed - receivingData=${this.receivingData}, listenerId=${this.listenerId}, isUnsubscribing=${this.isUnsubscribing}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
if ((_d = this.resubOpts) === null || _d === void 0 ? void 0 : _d.logResubMessages) {
|
|
88
|
+
console.log(`[${this.logAccountName}] Timeout fired but receivingData=false, skipping resubscribe`);
|
|
89
|
+
}
|
|
76
90
|
}
|
|
77
91
|
}, (_a = this.resubOpts) === null || _a === void 0 ? void 0 : _a.resubTimeoutMs);
|
|
78
92
|
}
|
|
@@ -134,11 +148,18 @@ class WebSocketAccountSubscriber {
|
|
|
134
148
|
clearTimeout(this.timeoutId);
|
|
135
149
|
this.timeoutId = undefined;
|
|
136
150
|
if (this.listenerId != null) {
|
|
137
|
-
const promise =
|
|
138
|
-
.removeAccountChangeListener(this.listenerId)
|
|
151
|
+
const promise = Promise.race([
|
|
152
|
+
this.program.provider.connection.removeAccountChangeListener(this.listenerId),
|
|
153
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error(`Unsubscribe timeout for account ${this.logAccountName}`)), 10000)),
|
|
154
|
+
])
|
|
139
155
|
.then(() => {
|
|
140
156
|
this.listenerId = undefined;
|
|
141
157
|
this.isUnsubscribing = false;
|
|
158
|
+
})
|
|
159
|
+
.catch(() => {
|
|
160
|
+
// Force cleanup even if RPC call fails
|
|
161
|
+
this.listenerId = undefined;
|
|
162
|
+
this.isUnsubscribing = false;
|
|
142
163
|
});
|
|
143
164
|
return promise;
|
|
144
165
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webSocketAccountSubscriber.d.ts","sourceRoot":"","sources":["../../../src/accounts/webSocketAccountSubscriber.ts"],"names":[],"mappings":";;AAAA,OAAO,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAkB,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI9E,qBAAa,0BAA0B,CAAC,CAAC,CAAE,YAAW,iBAAiB,CAAC,CAAC,CAAC;IACzE,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,SAAS,CAAC;IAC5B,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC;IACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,eAAe,UAAS;IAExB,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAE1C,aAAa,EAAE,OAAO,CAAC;gBAGtB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,SAAS,EAC3B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,EACpC,SAAS,CAAC,EAAE,SAAS,EACrB,UAAU,CAAC,EAAE,UAAU;IAkBlB,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"webSocketAccountSubscriber.d.ts","sourceRoot":"","sources":["../../../src/accounts/webSocketAccountSubscriber.ts"],"names":[],"mappings":";;AAAA,OAAO,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAkB,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI9E,qBAAa,0BAA0B,CAAC,CAAC,CAAE,YAAW,iBAAiB,CAAC,CAAC,CAAC;IACzE,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,SAAS,CAAC;IAC5B,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC;IACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,eAAe,UAAS;IAExB,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAE1C,aAAa,EAAE,OAAO,CAAC;gBAGtB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,SAAS,EAC3B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,EACpC,SAAS,CAAC,EAAE,SAAS,EACrB,UAAU,CAAC,EAAE,UAAU;IAkBlB,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC3D,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAYrC,SAAS,CAAC,UAAU,IAAI,IAAI;IA0CtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI;IA0C5E,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC;IAW/B,WAAW,CAAC,OAAO,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAuC3C"}
|
|
@@ -20,8 +20,11 @@ class WebSocketAccountSubscriber {
|
|
|
20
20
|
commitment !== null && commitment !== void 0 ? commitment : this.program.provider.opts.commitment;
|
|
21
21
|
}
|
|
22
22
|
async subscribe(onChange) {
|
|
23
|
-
var _a;
|
|
23
|
+
var _a, _b;
|
|
24
24
|
if (this.listenerId != null || this.isUnsubscribing) {
|
|
25
|
+
if ((_a = this.resubOpts) === null || _a === void 0 ? void 0 : _a.logResubMessages) {
|
|
26
|
+
console.log(`[${this.logAccountName}] Subscribe returning early - listenerId=${this.listenerId}, isUnsubscribing=${this.isUnsubscribing}`);
|
|
27
|
+
}
|
|
25
28
|
return;
|
|
26
29
|
}
|
|
27
30
|
this.onChange = onChange;
|
|
@@ -40,7 +43,7 @@ class WebSocketAccountSubscriber {
|
|
|
40
43
|
this.handleRpcResponse(context, accountInfo);
|
|
41
44
|
}
|
|
42
45
|
}, this.commitment);
|
|
43
|
-
if ((
|
|
46
|
+
if ((_b = this.resubOpts) === null || _b === void 0 ? void 0 : _b.resubTimeoutMs) {
|
|
44
47
|
this.receivingData = true;
|
|
45
48
|
this.setTimeout();
|
|
46
49
|
}
|
|
@@ -61,18 +64,29 @@ class WebSocketAccountSubscriber {
|
|
|
61
64
|
throw new Error('onChange callback function must be set');
|
|
62
65
|
}
|
|
63
66
|
this.timeoutId = setTimeout(async () => {
|
|
64
|
-
var _a;
|
|
67
|
+
var _a, _b, _c, _d;
|
|
65
68
|
if (this.isUnsubscribing) {
|
|
66
69
|
// If we are in the process of unsubscribing, do not attempt to resubscribe
|
|
70
|
+
if ((_a = this.resubOpts) === null || _a === void 0 ? void 0 : _a.logResubMessages) {
|
|
71
|
+
console.log(`[${this.logAccountName}] Timeout fired but isUnsubscribing=true, skipping resubscribe`);
|
|
72
|
+
}
|
|
67
73
|
return;
|
|
68
74
|
}
|
|
69
75
|
if (this.receivingData) {
|
|
70
|
-
if ((
|
|
71
|
-
console.log(`No ws data from ${this.logAccountName} in ${this.resubOpts.resubTimeoutMs}ms, resubscribing`);
|
|
76
|
+
if ((_b = this.resubOpts) === null || _b === void 0 ? void 0 : _b.logResubMessages) {
|
|
77
|
+
console.log(`No ws data from ${this.logAccountName} in ${this.resubOpts.resubTimeoutMs}ms, resubscribing - listenerId=${this.listenerId}, isUnsubscribing=${this.isUnsubscribing}`);
|
|
72
78
|
}
|
|
73
79
|
await this.unsubscribe(true);
|
|
74
80
|
this.receivingData = false;
|
|
75
81
|
await this.subscribe(this.onChange);
|
|
82
|
+
if ((_c = this.resubOpts) === null || _c === void 0 ? void 0 : _c.logResubMessages) {
|
|
83
|
+
console.log(`[${this.logAccountName}] Resubscribe completed - receivingData=${this.receivingData}, listenerId=${this.listenerId}, isUnsubscribing=${this.isUnsubscribing}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
if ((_d = this.resubOpts) === null || _d === void 0 ? void 0 : _d.logResubMessages) {
|
|
88
|
+
console.log(`[${this.logAccountName}] Timeout fired but receivingData=false, skipping resubscribe`);
|
|
89
|
+
}
|
|
76
90
|
}
|
|
77
91
|
}, (_a = this.resubOpts) === null || _a === void 0 ? void 0 : _a.resubTimeoutMs);
|
|
78
92
|
}
|
|
@@ -134,11 +148,18 @@ class WebSocketAccountSubscriber {
|
|
|
134
148
|
clearTimeout(this.timeoutId);
|
|
135
149
|
this.timeoutId = undefined;
|
|
136
150
|
if (this.listenerId != null) {
|
|
137
|
-
const promise =
|
|
138
|
-
.removeAccountChangeListener(this.listenerId)
|
|
151
|
+
const promise = Promise.race([
|
|
152
|
+
this.program.provider.connection.removeAccountChangeListener(this.listenerId),
|
|
153
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error(`Unsubscribe timeout for account ${this.logAccountName}`)), 10000)),
|
|
154
|
+
])
|
|
139
155
|
.then(() => {
|
|
140
156
|
this.listenerId = undefined;
|
|
141
157
|
this.isUnsubscribing = false;
|
|
158
|
+
})
|
|
159
|
+
.catch(() => {
|
|
160
|
+
// Force cleanup even if RPC call fails
|
|
161
|
+
this.listenerId = undefined;
|
|
162
|
+
this.isUnsubscribing = false;
|
|
142
163
|
});
|
|
143
164
|
return promise;
|
|
144
165
|
}
|
package/package.json
CHANGED
|
@@ -55,6 +55,11 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
|
|
|
55
55
|
|
|
56
56
|
async subscribe(onChange: (data: T) => void): Promise<void> {
|
|
57
57
|
if (this.listenerId != null || this.isUnsubscribing) {
|
|
58
|
+
if (this.resubOpts?.logResubMessages) {
|
|
59
|
+
console.log(
|
|
60
|
+
`[${this.logAccountName}] Subscribe returning early - listenerId=${this.listenerId}, isUnsubscribing=${this.isUnsubscribing}`
|
|
61
|
+
);
|
|
62
|
+
}
|
|
58
63
|
return;
|
|
59
64
|
}
|
|
60
65
|
|
|
@@ -104,18 +109,34 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
|
|
|
104
109
|
async () => {
|
|
105
110
|
if (this.isUnsubscribing) {
|
|
106
111
|
// If we are in the process of unsubscribing, do not attempt to resubscribe
|
|
112
|
+
if (this.resubOpts?.logResubMessages) {
|
|
113
|
+
console.log(
|
|
114
|
+
`[${this.logAccountName}] Timeout fired but isUnsubscribing=true, skipping resubscribe`
|
|
115
|
+
);
|
|
116
|
+
}
|
|
107
117
|
return;
|
|
108
118
|
}
|
|
109
119
|
|
|
110
120
|
if (this.receivingData) {
|
|
111
121
|
if (this.resubOpts?.logResubMessages) {
|
|
112
122
|
console.log(
|
|
113
|
-
`No ws data from ${this.logAccountName} in ${this.resubOpts.resubTimeoutMs}ms, resubscribing`
|
|
123
|
+
`No ws data from ${this.logAccountName} in ${this.resubOpts.resubTimeoutMs}ms, resubscribing - listenerId=${this.listenerId}, isUnsubscribing=${this.isUnsubscribing}`
|
|
114
124
|
);
|
|
115
125
|
}
|
|
116
126
|
await this.unsubscribe(true);
|
|
117
127
|
this.receivingData = false;
|
|
118
128
|
await this.subscribe(this.onChange);
|
|
129
|
+
if (this.resubOpts?.logResubMessages) {
|
|
130
|
+
console.log(
|
|
131
|
+
`[${this.logAccountName}] Resubscribe completed - receivingData=${this.receivingData}, listenerId=${this.listenerId}, isUnsubscribing=${this.isUnsubscribing}`
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
} else {
|
|
135
|
+
if (this.resubOpts?.logResubMessages) {
|
|
136
|
+
console.log(
|
|
137
|
+
`[${this.logAccountName}] Timeout fired but receivingData=false, skipping resubscribe`
|
|
138
|
+
);
|
|
139
|
+
}
|
|
119
140
|
}
|
|
120
141
|
},
|
|
121
142
|
this.resubOpts?.resubTimeoutMs
|
|
@@ -193,11 +214,30 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
|
|
|
193
214
|
this.timeoutId = undefined;
|
|
194
215
|
|
|
195
216
|
if (this.listenerId != null) {
|
|
196
|
-
const promise =
|
|
197
|
-
.removeAccountChangeListener(
|
|
217
|
+
const promise = Promise.race([
|
|
218
|
+
this.program.provider.connection.removeAccountChangeListener(
|
|
219
|
+
this.listenerId
|
|
220
|
+
),
|
|
221
|
+
new Promise((_, reject) =>
|
|
222
|
+
setTimeout(
|
|
223
|
+
() =>
|
|
224
|
+
reject(
|
|
225
|
+
new Error(
|
|
226
|
+
`Unsubscribe timeout for account ${this.logAccountName}`
|
|
227
|
+
)
|
|
228
|
+
),
|
|
229
|
+
10000
|
|
230
|
+
)
|
|
231
|
+
),
|
|
232
|
+
])
|
|
198
233
|
.then(() => {
|
|
199
234
|
this.listenerId = undefined;
|
|
200
235
|
this.isUnsubscribing = false;
|
|
236
|
+
})
|
|
237
|
+
.catch(() => {
|
|
238
|
+
// Force cleanup even if RPC call fails
|
|
239
|
+
this.listenerId = undefined;
|
|
240
|
+
this.isUnsubscribing = false;
|
|
201
241
|
});
|
|
202
242
|
return promise;
|
|
203
243
|
} else {
|