seyfert 2.1.1-dev-11916234323.0 → 2.1.1-dev-11937208019.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/lib/api/Router.js +2 -4
- package/lib/client/workerclient.d.ts +3 -2
- package/lib/client/workerclient.js +7 -0
- package/lib/commands/applications/shared.d.ts +4 -0
- package/lib/websocket/discord/shared.d.ts +2 -0
- package/lib/websocket/discord/worker.d.ts +14 -2
- package/lib/websocket/discord/workermanager.d.ts +17 -7
- package/lib/websocket/discord/workermanager.js +8 -1
- package/package.json +1 -1
package/lib/api/Router.js
CHANGED
|
@@ -45,12 +45,10 @@ exports.CDNRouter = {
|
|
|
45
45
|
if (key === 'get') {
|
|
46
46
|
return (value, options) => {
|
|
47
47
|
const lastRoute = `${common_1.CDN_URL}/${route.join('/')}`;
|
|
48
|
-
let routeResult = lastRoute;
|
|
49
48
|
if (typeof value === 'string' || typeof value === 'number') {
|
|
50
|
-
|
|
51
|
-
return parseCDNURL(routeResult, options);
|
|
49
|
+
return parseCDNURL(`${lastRoute}/${value}`, options);
|
|
52
50
|
}
|
|
53
|
-
return parseCDNURL(
|
|
51
|
+
return parseCDNURL(lastRoute, value);
|
|
54
52
|
};
|
|
55
53
|
}
|
|
56
54
|
return this.createProxy([...route, key]);
|
|
@@ -2,7 +2,7 @@ import { type DeepPartial, type MakeRequired, type When } from '../common';
|
|
|
2
2
|
import { EventHandler } from '../events';
|
|
3
3
|
import type { GatewayDispatchPayload } from '../types';
|
|
4
4
|
import { Shard, type ShardManagerOptions, type WorkerData } from '../websocket';
|
|
5
|
-
import type {
|
|
5
|
+
import type { WorkerMessages, WorkerShardInfo } from '../websocket/discord/worker';
|
|
6
6
|
import type { ManagerMessages, ManagerSpawnShards } from '../websocket/discord/workermanager';
|
|
7
7
|
import type { BaseClientOptions, ServicesOptions, StartOptions } from './base';
|
|
8
8
|
import { BaseClient } from './base';
|
|
@@ -36,7 +36,7 @@ export declare class WorkerClient<Ready extends boolean = boolean> extends BaseC
|
|
|
36
36
|
get workerData(): WorkerData;
|
|
37
37
|
start(options?: Omit<DeepPartial<StartOptions>, 'httpConnection' | 'token' | 'connection'>): Promise<void>;
|
|
38
38
|
loadEvents(dir?: string): Promise<void>;
|
|
39
|
-
postMessage(body:
|
|
39
|
+
postMessage(body: WorkerMessages): unknown;
|
|
40
40
|
handleManagerMessages(data: ManagerMessages): Promise<any>;
|
|
41
41
|
private generateNonce;
|
|
42
42
|
private generateSendPromise;
|
|
@@ -54,5 +54,6 @@ interface WorkerClientOptions extends BaseClientOptions {
|
|
|
54
54
|
postMessage?: (body: unknown) => unknown;
|
|
55
55
|
/** can have perfomance issues in big bots if the client sends every event, specially in startup (false by default) */
|
|
56
56
|
sendPayloadToParent?: boolean;
|
|
57
|
+
handleManagerMessages?(message: ManagerMessages): any;
|
|
57
58
|
}
|
|
58
59
|
export {};
|
|
@@ -52,6 +52,13 @@ class WorkerClient extends base_1.BaseClient {
|
|
|
52
52
|
if (options?.postMessage) {
|
|
53
53
|
this.postMessage = options.postMessage;
|
|
54
54
|
}
|
|
55
|
+
if (this.options.handleManagerMessages) {
|
|
56
|
+
const oldFn = this.handleManagerMessages.bind(this);
|
|
57
|
+
this.handleManagerMessages = async (message) => {
|
|
58
|
+
await this.options.handleManagerMessages(message);
|
|
59
|
+
return oldFn(message);
|
|
60
|
+
};
|
|
61
|
+
}
|
|
55
62
|
}
|
|
56
63
|
get workerId() {
|
|
57
64
|
return workerData.workerId;
|
|
@@ -20,6 +20,10 @@ export interface ExtraProps {
|
|
|
20
20
|
}
|
|
21
21
|
export interface UsingClient extends BaseClient {
|
|
22
22
|
}
|
|
23
|
+
export interface CustomWorkerClientEvents {
|
|
24
|
+
}
|
|
25
|
+
export interface CustomWorkerManagerEvents {
|
|
26
|
+
}
|
|
23
27
|
export interface ExtendedRC {
|
|
24
28
|
}
|
|
25
29
|
export interface ExtendedRCLocations {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Awaitable, DeepPartial, Logger } from '../../common';
|
|
2
2
|
import type { APIGatewayBotInfo, GatewayDispatchPayload, GatewayIntentBits, GatewayPresenceUpdateData } from '../../types';
|
|
3
3
|
import type { IdentifyProperties } from '../constants';
|
|
4
|
+
import type { WorkerMessages } from './worker';
|
|
4
5
|
export interface ShardManagerOptions extends ShardDetails {
|
|
5
6
|
/** Important data which is used by the manager to connect shards to the gateway. */
|
|
6
7
|
info: APIGatewayBotInfo;
|
|
@@ -53,6 +54,7 @@ export interface WorkerManagerOptions extends Omit<ShardManagerOptions, 'handleP
|
|
|
53
54
|
workerProxy?: boolean;
|
|
54
55
|
path: string;
|
|
55
56
|
handlePayload?(shardId: number, workerId: number, packet: GatewayDispatchPayload): any;
|
|
57
|
+
handleWorkerMessage?(message: WorkerMessages): any;
|
|
56
58
|
properties?: DeepPartial<NonNullable<ShardManagerOptions['properties']>>;
|
|
57
59
|
}
|
|
58
60
|
export interface ShardData {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { ApiRequestOptions, HttpMethods } from '../..';
|
|
1
|
+
import type { ApiRequestOptions, CustomWorkerClientEvents, HttpMethods } from '../..';
|
|
2
|
+
import type { Identify } from '../../common';
|
|
2
3
|
import type { GatewayDispatchPayload } from '../../types';
|
|
3
4
|
export interface WorkerShardInfo {
|
|
4
5
|
open: boolean;
|
|
@@ -60,5 +61,16 @@ export type WorkerSendToWorkerEval = CreateWorkerMessage<'EVAL_TO_WORKER', {
|
|
|
60
61
|
vars: string;
|
|
61
62
|
toWorkerId: number;
|
|
62
63
|
}>;
|
|
63
|
-
export type
|
|
64
|
+
export type BaseWorkerMessage = WorkerRequestConnect | WorkerReceivePayload | WorkerSendResultPayload | WorkerSendCacheRequest | WorkerSendShardInfo | WorkerSendInfo | WorkerReady | WorkerShardsConnected | WorkerSendApiRequest | WorkerSendEvalResponse | WorkerSendToWorkerEval | WorkerStart | WorkerStartResharding | WorkerRequestConnectResharding | WorkerReadyResharding | WorkerDisconnectedAllShardsResharding;
|
|
65
|
+
export type CustomWorkerClientMessages = {
|
|
66
|
+
[K in keyof CustomWorkerClientEvents]: Identify<{
|
|
67
|
+
type: K;
|
|
68
|
+
workerId: number;
|
|
69
|
+
} & Identify<CustomWorkerClientEvents[K] extends never ? {} : CustomWorkerClientEvents[K]>>;
|
|
70
|
+
};
|
|
71
|
+
export type WorkerMessages = {
|
|
72
|
+
[K in BaseWorkerMessage['type']]: Identify<Extract<BaseWorkerMessage, {
|
|
73
|
+
type: K;
|
|
74
|
+
}>>;
|
|
75
|
+
}[BaseWorkerMessage['type']] | CustomWorkerClientMessages[keyof CustomWorkerClientMessages];
|
|
64
76
|
export {};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { type Worker as ClusterWorker } from 'node:cluster';
|
|
2
2
|
import type { Worker as WorkerThreadsWorker } from 'node:worker_threads';
|
|
3
|
-
import { ApiHandler, Logger, type UsingClient, type WorkerClient } from '../..';
|
|
3
|
+
import { ApiHandler, type CustomWorkerManagerEvents, Logger, type UsingClient, type WorkerClient } from '../..';
|
|
4
4
|
import { type Adapter } from '../../cache';
|
|
5
|
-
import { type MakePartial } from '../../common';
|
|
5
|
+
import { type Identify, type MakePartial } from '../../common';
|
|
6
6
|
import type { GatewayPresenceUpdateData, GatewaySendPayload } from '../../types';
|
|
7
7
|
import { ConnectQueue } from '../structures/timeout';
|
|
8
8
|
import type { ShardOptions, WorkerData, WorkerManagerOptions } from './shared';
|
|
9
|
-
import type { WorkerInfo,
|
|
9
|
+
import type { WorkerInfo, WorkerMessages, WorkerShardInfo } from './worker';
|
|
10
10
|
export declare class WorkerManager extends Map<number, (ClusterWorker | WorkerThreadsWorker | {
|
|
11
11
|
ready?: boolean;
|
|
12
12
|
}) & {
|
|
@@ -19,7 +19,7 @@ export declare class WorkerManager extends Map<number, (ClusterWorker | WorkerTh
|
|
|
19
19
|
shardEnd: number;
|
|
20
20
|
shardsPerWorker: number;
|
|
21
21
|
}, logger?: Logger): number[][];
|
|
22
|
-
options: MakePartial<Required<WorkerManagerOptions>, 'adapter'>;
|
|
22
|
+
options: MakePartial<Required<WorkerManagerOptions>, 'adapter' | 'handleWorkerMessage' | 'handlePayload'>;
|
|
23
23
|
debugger?: Logger;
|
|
24
24
|
connectQueue: ConnectQueue;
|
|
25
25
|
workerQueue: (() => void)[];
|
|
@@ -31,7 +31,7 @@ export declare class WorkerManager extends Map<number, (ClusterWorker | WorkerTh
|
|
|
31
31
|
rest: ApiHandler;
|
|
32
32
|
reshardingWorkerQueue: (() => void)[];
|
|
33
33
|
private _info?;
|
|
34
|
-
constructor(options: Omit<MakePartial<WorkerManagerOptions, 'token' | 'intents' | 'info' | 'handlePayload'>, 'resharding'> & {
|
|
34
|
+
constructor(options: Omit<MakePartial<WorkerManagerOptions, 'token' | 'intents' | 'info' | 'handlePayload' | 'handleWorkerMessage'>, 'resharding'> & {
|
|
35
35
|
resharding?: MakePartial<NonNullable<WorkerManagerOptions['resharding']>, 'getInfo'>;
|
|
36
36
|
});
|
|
37
37
|
setCache(adapter: Adapter): void;
|
|
@@ -62,7 +62,7 @@ export declare class WorkerManager extends Map<number, (ClusterWorker | WorkerTh
|
|
|
62
62
|
resharded?: boolean;
|
|
63
63
|
});
|
|
64
64
|
spawn(workerId: number, shardId: number, resharding?: boolean): void;
|
|
65
|
-
handleWorkerMessage(message:
|
|
65
|
+
handleWorkerMessage(message: WorkerMessages): Promise<void>;
|
|
66
66
|
private generateNonce;
|
|
67
67
|
private generateSendPromise;
|
|
68
68
|
send(data: GatewaySendPayload, shardId: number): Promise<true>;
|
|
@@ -125,5 +125,15 @@ export type ManagerSendEvalResponse = CreateManagerMessage<'EVAL_RESPONSE', {
|
|
|
125
125
|
response: any;
|
|
126
126
|
nonce: string;
|
|
127
127
|
}>;
|
|
128
|
-
export type
|
|
128
|
+
export type BaseManagerMessages = ManagerAllowConnect | ManagerSpawnShards | ManagerSendPayload | ManagerRequestShardInfo | ManagerRequestWorkerInfo | ManagerSendCacheResult | ManagerSendBotReady | ManagerSendApiResponse | ManagerSendEvalResponse | ManagerExecuteEvalToWorker | ManagerWorkerAlreadyExistsResharding | ManagerSpawnShardsResharding | ManagerAllowConnectResharding | DisconnectAllShardsResharding | ConnnectAllShardsResharding | ManagerExecuteEval;
|
|
129
|
+
export type CustomManagerMessages = {
|
|
130
|
+
[K in keyof CustomWorkerManagerEvents]: Identify<{
|
|
131
|
+
type: K;
|
|
132
|
+
} & Identify<CustomWorkerManagerEvents[K] extends never ? {} : CustomWorkerManagerEvents[K]>>;
|
|
133
|
+
};
|
|
134
|
+
export type ManagerMessages = {
|
|
135
|
+
[K in BaseManagerMessages['type']]: Identify<Extract<BaseManagerMessages, {
|
|
136
|
+
type: K;
|
|
137
|
+
}>>;
|
|
138
|
+
}[BaseManagerMessages['type']] | CustomManagerMessages[keyof CustomManagerMessages];
|
|
129
139
|
export {};
|
|
@@ -39,6 +39,13 @@ class WorkerManager extends Map {
|
|
|
39
39
|
super();
|
|
40
40
|
this.options = options;
|
|
41
41
|
this.cacheAdapter = new cache_1.MemoryAdapter();
|
|
42
|
+
if (this.options.handleWorkerMessage) {
|
|
43
|
+
const oldFn = this.handleWorkerMessage.bind(this);
|
|
44
|
+
this.handleWorkerMessage = async (message) => {
|
|
45
|
+
await this.options.handleWorkerMessage(message);
|
|
46
|
+
return oldFn(message);
|
|
47
|
+
};
|
|
48
|
+
}
|
|
42
49
|
}
|
|
43
50
|
setCache(adapter) {
|
|
44
51
|
this.cacheAdapter = adapter;
|
|
@@ -295,7 +302,7 @@ class WorkerManager extends Map {
|
|
|
295
302
|
}
|
|
296
303
|
break;
|
|
297
304
|
case 'RECEIVE_PAYLOAD':
|
|
298
|
-
await this.options.handlePayload(message.shardId, message.workerId, message.payload);
|
|
305
|
+
await this.options.handlePayload?.(message.shardId, message.workerId, message.payload);
|
|
299
306
|
break;
|
|
300
307
|
case 'RESULT_PAYLOAD':
|
|
301
308
|
{
|