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 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
- routeResult = `${lastRoute}${value ? `/${value}` : ''}`;
51
- return parseCDNURL(routeResult, options);
49
+ return parseCDNURL(`${lastRoute}/${value}`, options);
52
50
  }
53
- return parseCDNURL(routeResult, value);
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 { WorkerMessage, WorkerShardInfo } from '../websocket/discord/worker';
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: WorkerMessage): unknown;
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 WorkerMessage = WorkerRequestConnect | WorkerReceivePayload | WorkerSendResultPayload | WorkerSendCacheRequest | WorkerSendShardInfo | WorkerSendInfo | WorkerReady | WorkerShardsConnected | WorkerSendApiRequest | WorkerSendEvalResponse | WorkerSendToWorkerEval | WorkerStart | WorkerStartResharding | WorkerRequestConnectResharding | WorkerReadyResharding | WorkerDisconnectedAllShardsResharding;
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, WorkerMessage, WorkerShardInfo } from './worker';
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: WorkerMessage): Promise<void>;
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 ManagerMessages = ManagerAllowConnect | ManagerSpawnShards | ManagerSendPayload | ManagerRequestShardInfo | ManagerRequestWorkerInfo | ManagerSendCacheResult | ManagerSendBotReady | ManagerSendApiResponse | ManagerSendEvalResponse | ManagerExecuteEvalToWorker | ManagerWorkerAlreadyExistsResharding | ManagerSpawnShardsResharding | ManagerAllowConnectResharding | DisconnectAllShardsResharding | ConnnectAllShardsResharding | ManagerExecuteEval;
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
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "seyfert",
3
- "version": "2.1.1-dev-11916234323.0",
3
+ "version": "2.1.1-dev-11937208019.0",
4
4
  "description": "The most advanced framework for discord bots",
5
5
  "main": "./lib/index.js",
6
6
  "module": "./lib/index.js",