dreaction-client-core 1.2.0 → 1.2.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.
- package/lib/index.d.ts +16 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +51 -1
- package/package.json +1 -1
- package/src/index.ts +66 -2
package/lib/index.d.ts
CHANGED
|
@@ -63,6 +63,10 @@ export interface DReactionCore {
|
|
|
63
63
|
configure: (options?: ClientOptions<this>) => ClientOptions<this>['plugins'] extends PluginCreator<this>[] ? this & InferFeaturesFromPlugins<this, ClientOptions<this>['plugins']> : this;
|
|
64
64
|
use: <P extends PluginCreator<this>>(pluginCreator: P) => this & InferFeaturesFromPlugin<this, P>;
|
|
65
65
|
connect: () => this;
|
|
66
|
+
/**
|
|
67
|
+
* Wait for connection to be established
|
|
68
|
+
*/
|
|
69
|
+
waitForConnect: () => Promise<void>;
|
|
66
70
|
}
|
|
67
71
|
export type InferFeatures<Client = DReactionCore, PC extends PluginCreator<Client> = PluginCreator<Client>> = PC extends (client: Client) => {
|
|
68
72
|
features: infer U;
|
|
@@ -149,6 +153,12 @@ export declare class DReactionImpl implements Omit<DReactionCore, 'options' | 'p
|
|
|
149
153
|
* The current ID for custom commands
|
|
150
154
|
*/
|
|
151
155
|
customCommandLatestId: number;
|
|
156
|
+
/**
|
|
157
|
+
* Promise resolvers for connection wait
|
|
158
|
+
*/
|
|
159
|
+
private connectPromiseResolve;
|
|
160
|
+
private connectPromiseReject;
|
|
161
|
+
private connectPromise;
|
|
152
162
|
/**
|
|
153
163
|
* Starts a timer and returns a function you can call to stop it and return the elapsed time.
|
|
154
164
|
*/
|
|
@@ -161,7 +171,7 @@ export declare class DReactionImpl implements Omit<DReactionCore, 'options' | 'p
|
|
|
161
171
|
/**
|
|
162
172
|
* Connect to the DReaction server.
|
|
163
173
|
*/
|
|
164
|
-
connect(): this
|
|
174
|
+
connect(): this;
|
|
165
175
|
/**
|
|
166
176
|
* Sends a command to the server
|
|
167
177
|
*/
|
|
@@ -179,6 +189,11 @@ export declare class DReactionImpl implements Omit<DReactionCore, 'options' | 'p
|
|
|
179
189
|
*/
|
|
180
190
|
use(pluginCreator: PluginCreator<this>): this & PluginFeatures<this, typeof pluginCreator>;
|
|
181
191
|
registerCustomCommand(config: CustomCommand, optHandler?: () => void): () => void;
|
|
192
|
+
/**
|
|
193
|
+
* Wait for connection to be established.
|
|
194
|
+
* Returns a promise that resolves when the connection is ready.
|
|
195
|
+
*/
|
|
196
|
+
waitForConnect(): Promise<void>;
|
|
182
197
|
}
|
|
183
198
|
export declare function createClient<Client extends DReactionCore = DReactionCore>(options?: ClientOptions<Client>): Client;
|
|
184
199
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -82,6 +82,12 @@ class DReactionImpl {
|
|
|
82
82
|
* The current ID for custom commands
|
|
83
83
|
*/
|
|
84
84
|
customCommandLatestId = 1;
|
|
85
|
+
/**
|
|
86
|
+
* Promise resolvers for connection wait
|
|
87
|
+
*/
|
|
88
|
+
connectPromiseResolve = null;
|
|
89
|
+
connectPromiseReject = null;
|
|
90
|
+
connectPromise = null;
|
|
85
91
|
/**
|
|
86
92
|
* Starts a timer and returns a function you can call to stop it and return the elapsed time.
|
|
87
93
|
*/
|
|
@@ -116,6 +122,12 @@ class DReactionImpl {
|
|
|
116
122
|
close() {
|
|
117
123
|
this.connected = false;
|
|
118
124
|
this.socket && this.socket.close && this.socket.close();
|
|
125
|
+
// Reject any pending connection promise
|
|
126
|
+
if (this.connectPromiseReject) {
|
|
127
|
+
this.connectPromiseReject(new Error('Connection closed'));
|
|
128
|
+
this.connectPromiseResolve = null;
|
|
129
|
+
this.connectPromiseReject = null;
|
|
130
|
+
}
|
|
119
131
|
return this;
|
|
120
132
|
}
|
|
121
133
|
/**
|
|
@@ -123,11 +135,21 @@ class DReactionImpl {
|
|
|
123
135
|
*/
|
|
124
136
|
connect() {
|
|
125
137
|
this.connected = true;
|
|
138
|
+
// Create a new promise for this connection attempt
|
|
139
|
+
this.connectPromise = new Promise((resolve, reject) => {
|
|
140
|
+
this.connectPromiseResolve = resolve;
|
|
141
|
+
this.connectPromiseReject = reject;
|
|
142
|
+
});
|
|
126
143
|
const { createSocket, secure, host, environment, port, name, client = {}, info = {}, getClientId, } = this.options;
|
|
127
144
|
const { onCommand, onConnect, onDisconnect } = this.options;
|
|
128
145
|
if (!host) {
|
|
129
146
|
console.log('host is not config, skip connect.');
|
|
130
|
-
|
|
147
|
+
if (this.connectPromiseReject) {
|
|
148
|
+
this.connectPromiseReject(new Error('Host is not configured'));
|
|
149
|
+
this.connectPromiseResolve = null;
|
|
150
|
+
this.connectPromiseReject = null;
|
|
151
|
+
}
|
|
152
|
+
return this;
|
|
131
153
|
}
|
|
132
154
|
// establish a connection to the server
|
|
133
155
|
const protocol = secure ? 'wss' : 'ws';
|
|
@@ -138,6 +160,12 @@ class DReactionImpl {
|
|
|
138
160
|
onConnect && onConnect();
|
|
139
161
|
// trigger our plugins onConnect
|
|
140
162
|
this.plugins.forEach((p) => p.onConnect && p.onConnect());
|
|
163
|
+
// Resolve the connection promise
|
|
164
|
+
if (this.connectPromiseResolve) {
|
|
165
|
+
this.connectPromiseResolve();
|
|
166
|
+
this.connectPromiseResolve = null;
|
|
167
|
+
this.connectPromiseReject = null;
|
|
168
|
+
}
|
|
141
169
|
const getClientIdPromise = getClientId || emptyPromise;
|
|
142
170
|
getClientIdPromise(name).then((clientId) => {
|
|
143
171
|
this.isReady = true;
|
|
@@ -161,6 +189,12 @@ class DReactionImpl {
|
|
|
161
189
|
// fires when we disconnect
|
|
162
190
|
const onClose = () => {
|
|
163
191
|
this.isReady = false;
|
|
192
|
+
// Reject connection promise if still pending
|
|
193
|
+
if (this.connectPromiseReject) {
|
|
194
|
+
this.connectPromiseReject(new Error('Connection failed or closed'));
|
|
195
|
+
this.connectPromiseResolve = null;
|
|
196
|
+
this.connectPromiseReject = null;
|
|
197
|
+
}
|
|
164
198
|
// trigger our disconnect handler
|
|
165
199
|
onDisconnect && onDisconnect();
|
|
166
200
|
// as well as the plugin's onDisconnect
|
|
@@ -406,6 +440,22 @@ class DReactionImpl {
|
|
|
406
440
|
});
|
|
407
441
|
};
|
|
408
442
|
}
|
|
443
|
+
/**
|
|
444
|
+
* Wait for connection to be established.
|
|
445
|
+
* Returns a promise that resolves when the connection is ready.
|
|
446
|
+
*/
|
|
447
|
+
waitForConnect() {
|
|
448
|
+
if (this.isReady) {
|
|
449
|
+
// Already connected, resolve immediately
|
|
450
|
+
return Promise.resolve();
|
|
451
|
+
}
|
|
452
|
+
if (this.connectPromise) {
|
|
453
|
+
// Return existing promise
|
|
454
|
+
return this.connectPromise;
|
|
455
|
+
}
|
|
456
|
+
// No connection attempt in progress
|
|
457
|
+
return Promise.reject(new Error('Not connected. Call connect() first.'));
|
|
458
|
+
}
|
|
409
459
|
}
|
|
410
460
|
exports.DReactionImpl = DReactionImpl;
|
|
411
461
|
// convenience factory function
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -127,6 +127,11 @@ export interface DReactionCore {
|
|
|
127
127
|
) => this & InferFeaturesFromPlugin<this, P>;
|
|
128
128
|
|
|
129
129
|
connect: () => this;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Wait for connection to be established
|
|
133
|
+
*/
|
|
134
|
+
waitForConnect: () => Promise<void>;
|
|
130
135
|
}
|
|
131
136
|
|
|
132
137
|
export type InferFeatures<
|
|
@@ -229,6 +234,13 @@ export class DReactionImpl
|
|
|
229
234
|
*/
|
|
230
235
|
customCommandLatestId = 1;
|
|
231
236
|
|
|
237
|
+
/**
|
|
238
|
+
* Promise resolvers for connection wait
|
|
239
|
+
*/
|
|
240
|
+
private connectPromiseResolve: (() => void) | null = null;
|
|
241
|
+
private connectPromiseReject: ((error: Error) => void) | null = null;
|
|
242
|
+
private connectPromise: Promise<void> | null = null;
|
|
243
|
+
|
|
232
244
|
/**
|
|
233
245
|
* Starts a timer and returns a function you can call to stop it and return the elapsed time.
|
|
234
246
|
*/
|
|
@@ -278,6 +290,13 @@ export class DReactionImpl
|
|
|
278
290
|
this.connected = false;
|
|
279
291
|
this.socket && this.socket.close && this.socket.close();
|
|
280
292
|
|
|
293
|
+
// Reject any pending connection promise
|
|
294
|
+
if (this.connectPromiseReject) {
|
|
295
|
+
this.connectPromiseReject(new Error('Connection closed'));
|
|
296
|
+
this.connectPromiseResolve = null;
|
|
297
|
+
this.connectPromiseReject = null;
|
|
298
|
+
}
|
|
299
|
+
|
|
281
300
|
return this;
|
|
282
301
|
}
|
|
283
302
|
|
|
@@ -286,6 +305,13 @@ export class DReactionImpl
|
|
|
286
305
|
*/
|
|
287
306
|
connect() {
|
|
288
307
|
this.connected = true;
|
|
308
|
+
|
|
309
|
+
// Create a new promise for this connection attempt
|
|
310
|
+
this.connectPromise = new Promise<void>((resolve, reject) => {
|
|
311
|
+
this.connectPromiseResolve = resolve;
|
|
312
|
+
this.connectPromiseReject = reject;
|
|
313
|
+
});
|
|
314
|
+
|
|
289
315
|
const {
|
|
290
316
|
createSocket,
|
|
291
317
|
secure,
|
|
@@ -301,7 +327,12 @@ export class DReactionImpl
|
|
|
301
327
|
|
|
302
328
|
if (!host) {
|
|
303
329
|
console.log('host is not config, skip connect.');
|
|
304
|
-
|
|
330
|
+
if (this.connectPromiseReject) {
|
|
331
|
+
this.connectPromiseReject(new Error('Host is not configured'));
|
|
332
|
+
this.connectPromiseResolve = null;
|
|
333
|
+
this.connectPromiseReject = null;
|
|
334
|
+
}
|
|
335
|
+
return this;
|
|
305
336
|
}
|
|
306
337
|
|
|
307
338
|
// establish a connection to the server
|
|
@@ -316,8 +347,14 @@ export class DReactionImpl
|
|
|
316
347
|
// trigger our plugins onConnect
|
|
317
348
|
this.plugins.forEach((p) => p.onConnect && p.onConnect());
|
|
318
349
|
|
|
319
|
-
|
|
350
|
+
// Resolve the connection promise
|
|
351
|
+
if (this.connectPromiseResolve) {
|
|
352
|
+
this.connectPromiseResolve();
|
|
353
|
+
this.connectPromiseResolve = null;
|
|
354
|
+
this.connectPromiseReject = null;
|
|
355
|
+
}
|
|
320
356
|
|
|
357
|
+
const getClientIdPromise = getClientId || emptyPromise;
|
|
321
358
|
getClientIdPromise(name!).then((clientId) => {
|
|
322
359
|
this.isReady = true;
|
|
323
360
|
// introduce ourselves
|
|
@@ -342,6 +379,14 @@ export class DReactionImpl
|
|
|
342
379
|
// fires when we disconnect
|
|
343
380
|
const onClose = () => {
|
|
344
381
|
this.isReady = false;
|
|
382
|
+
|
|
383
|
+
// Reject connection promise if still pending
|
|
384
|
+
if (this.connectPromiseReject) {
|
|
385
|
+
this.connectPromiseReject(new Error('Connection failed or closed'));
|
|
386
|
+
this.connectPromiseResolve = null;
|
|
387
|
+
this.connectPromiseReject = null;
|
|
388
|
+
}
|
|
389
|
+
|
|
345
390
|
// trigger our disconnect handler
|
|
346
391
|
onDisconnect && onDisconnect();
|
|
347
392
|
|
|
@@ -653,6 +698,25 @@ export class DReactionImpl
|
|
|
653
698
|
});
|
|
654
699
|
};
|
|
655
700
|
}
|
|
701
|
+
|
|
702
|
+
/**
|
|
703
|
+
* Wait for connection to be established.
|
|
704
|
+
* Returns a promise that resolves when the connection is ready.
|
|
705
|
+
*/
|
|
706
|
+
waitForConnect(): Promise<void> {
|
|
707
|
+
if (this.isReady) {
|
|
708
|
+
// Already connected, resolve immediately
|
|
709
|
+
return Promise.resolve();
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
if (this.connectPromise) {
|
|
713
|
+
// Return existing promise
|
|
714
|
+
return this.connectPromise;
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
// No connection attempt in progress
|
|
718
|
+
return Promise.reject(new Error('Not connected. Call connect() first.'));
|
|
719
|
+
}
|
|
656
720
|
}
|
|
657
721
|
|
|
658
722
|
// convenience factory function
|