@e-mc/core 0.11.8 → 0.12.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.
Files changed (4) hide show
  1. package/README.md +101 -13
  2. package/index.d.ts +3 -1
  3. package/index.js +715 -190
  4. package/package.json +3 -3
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # @e-mc/core
2
2
 
3
- * NodeJS 16 LTS
4
- * ES2021
3
+ * NodeJS 18
4
+ * ES2022
5
5
 
6
6
  ## General Usage
7
7
 
@@ -9,19 +9,22 @@
9
9
 
10
10
  ## Interface
11
11
 
12
- * [View Source](https://www.unpkg.com/@e-mc/types@0.11.8/lib/index.d.ts)
12
+ * [View Source](https://www.unpkg.com/@e-mc/types@0.12.1/lib/index.d.ts)
13
13
 
14
14
  ```typescript
15
- import type { DataSource, LogStatus } from "./squared";
15
+ import type { DataSource, LogStatus, WorkerAction } from "./squared";
16
16
 
17
17
  import type { IHost, IModule, ModuleConstructor } from "./index";
18
- import type { CacheOptions, HostInitConfig, JoinQueueOptions, PermissionReadWrite, ResumeThreadOptions, StoreResultOptions, ThreadCountStat } from "./core";
18
+ import type { AddEventListenerOptions, CacheOptions, HostInitConfig, JoinQueueOptions, PermissionReadWrite, ResumeThreadOptions, StoreResultOptions, ThreadCountStat, WorkerChannelError, WorkerChannelResponse } from "./core";
19
19
  import type { QueryResult, TimeoutAction } from "./db";
20
- import type { AddEventListenerOptions } from "./dom";
21
20
  import type { LogState, StatusType } from "./logger";
22
21
  import type { Settings } from "./node";
23
22
  import type { ClientDbSettings, ClientModule, ClientSettings, DbCacheValue, DbCoerceSettings, DbCoerceValue, DbSourceOptions } from "./settings";
24
23
 
24
+ import type { TransferListItem, Worker, WorkerOptions } from "node:worker_threads";
25
+
26
+ import type * as EventEmitter from "node:events";
27
+
25
28
  interface IHost extends IModule {
26
29
  restartable: boolean;
27
30
  readonly modules: Set<IModule>;
@@ -64,6 +67,8 @@ interface HostConstructor extends ModuleConstructor {
64
67
  loadSettings(settings: Settings, permission?: PermissionReadWrite, password?: string): boolean;
65
68
  isPermission(value: unknown): value is IPermission;
66
69
  createPermission(all?: boolean, freeze?: boolean): IPermission;
70
+ kill(username: string, all: true): number;
71
+ kill(username: string, pid: number | number[]): number;
67
72
  kill(username: string, iv: BinaryLike, all: true): number;
68
73
  kill(username: string, iv: BinaryLike, pid: number | number[]): number;
69
74
  getThreadCount(full: true): ThreadCountStat;
@@ -139,6 +144,80 @@ interface ClientDbConstructor extends ClientConstructor<IHost, ClientModule> {
139
144
  new(module?: ClientModule, database?: DataSource[]): IClientDb;
140
145
  }
141
146
 
147
+ interface IWorkerGroup {
148
+ [Symbol.iterator](): IteratorObject<IWorkerChannel, BuiltinIteratorReturn>;
149
+ add(name: string, item: IWorkerChannel, priority?: number): this;
150
+ get(name: string, force?: boolean | number): IWorkerChannel | undefined;
151
+ delete(name: string | IWorkerChannel): boolean;
152
+ free(count?: number): number;
153
+ print(format: "stats" | "errors"): void;
154
+ clear(): void;
155
+ set max(value);
156
+ get max(): number;
157
+ get workers(): IWorkerChannel[];
158
+ get pending(): number;
159
+ get available(): number;
160
+ get errors(): WorkerChannelError[];
161
+ get size(): number;
162
+ get sizeOf(): number;
163
+ }
164
+
165
+ interface WorkerGroupConstructor {
166
+ checkTimeout(value: number, active?: boolean): number;
167
+ readonly prototype: IWorkerGroup;
168
+ new(max?: number, locked?: boolean): IWorkerGroup;
169
+ }
170
+
171
+ interface IWorkerChannel extends EventEmitter {
172
+ [Symbol.iterator](): IteratorObject<Worker, BuiltinIteratorReturn>;
173
+ sendObject(data: unknown, transferList?: TransferListItem[], callback?: WorkerChannelResponse<unknown>, ...returnArgs: unknown[]): Worker;
174
+ sendBuffer(data: Buffer, shared?: boolean, callback?: WorkerChannelResponse<unknown>, ...returnArgs: unknown[]): Worker | null;
175
+ send(data: unknown, transferList?: TransferListItem[]): Promise<unknown>;
176
+ drop(count?: number): Promise<number>;
177
+ join(group: IWorkerGroup, label?: string): void;
178
+ quit(): void;
179
+ kill(count?: number): Promise<number>;
180
+ lock(): void;
181
+ isEmpty(): boolean;
182
+ set min(value);
183
+ get min(): number;
184
+ set max(value);
185
+ get max(): number;
186
+ set timeoutMs(value);
187
+ get timeoutMs(): number;
188
+ get filename(): string;
189
+ get workers(): Worker[];
190
+ get detached(): boolean;
191
+ get lastAccessed(): Date;
192
+ get timesAccessed(): number;
193
+ get frequencyAccessed(): number;
194
+ get pending(): number;
195
+ get available(): number;
196
+ get size(): number;
197
+
198
+ /* EventEmitter */
199
+ on(event: "error" | "messageerror" | "abort", listener: (err: Error) => void): this;
200
+ on(event: "exit", listener: (exitCode: number) => void): this;
201
+ on(event: "online", listener: () => void): this;
202
+ on(event: "message", listener: (value: any) => void): this;
203
+ on(event: "data", listener: (data: unknown) => void): this;
204
+ on(event: "pass", listener: (data: unknown, transferList: TransferListItem[] | undefined) => void): this;
205
+ once(event: "error" | "messageerror" | "abort", listener: (err: Error) => void): this;
206
+ once(event: "exit", listener: (exitCode: number) => void): this;
207
+ once(event: "online", listener: () => void): this;
208
+ once(event: "message", listener: (value: any) => void): this;
209
+ once(event: "data", listener: (data: unknown) => void): this;
210
+ once(event: "pass", listener: (data: unknown, transferList: TransferListItem[] | undefined) => void): this;
211
+ }
212
+
213
+ interface WorkerChannelConstructor {
214
+ create(filename: string, name: string): IWorkerChannel;
215
+ create(filename: string, options?: WorkerOptions, name?: string): IWorkerChannel;
216
+ hasPermission(options?: WorkerAction): boolean;
217
+ readonly prototype: IWorkerChannel;
218
+ new(filename: string, max?: number, timeoutMs?: number): IWorkerChannel;
219
+ }
220
+
142
221
  interface IAbortComponent extends AbortController {
143
222
  reset(): void;
144
223
  get aborted(): boolean;
@@ -152,9 +231,13 @@ interface AbortComponentConstructor {
152
231
  }
153
232
 
154
233
  interface IPermission {
234
+ setDiskRead(enabled: boolean): void;
155
235
  setDiskRead(pathname?: string | string[], enabled?: boolean): void;
236
+ setDiskWrite(enabled: boolean): void;
156
237
  setDiskWrite(pathname?: string | string[], enabled?: boolean): void;
238
+ setUNCRead(enabled: boolean): void;
157
239
  setUNCRead(pathname?: string | string[], enabled?: boolean): void;
240
+ setUNCWrite(enabled: boolean): void;
158
241
  setUNCWrite(pathname?: string | string[], enabled?: boolean): void;
159
242
  getDiskRead(): string | string[];
160
243
  getDiskWrite(): string | string[];
@@ -194,6 +277,9 @@ interface ProcessModule {
194
277
  max?: number;
195
278
  };
196
279
  };
280
+ workers?: {
281
+ channel?: { min?: number; max?: number; expires?: number | string };
282
+ };
197
283
  limit?: number;
198
284
  expires?: number | string;
199
285
  };
@@ -232,13 +318,15 @@ NOTE: **@e-mc/core** is mostly a collection of abstract base classes which canno
232
318
 
233
319
  ## References
234
320
 
235
- - https://www.unpkg.com/@e-mc/types@0.11.8/lib/squared.d.ts
236
- - https://www.unpkg.com/@e-mc/types@0.11.8/lib/core.d.ts
237
- - https://www.unpkg.com/@e-mc/types@0.11.8/lib/db.d.ts
238
- - https://www.unpkg.com/@e-mc/types@0.11.8/lib/dom.d.ts
239
- - https://www.unpkg.com/@e-mc/types@0.11.8/lib/logger.d.ts
240
- - https://www.unpkg.com/@e-mc/types@0.11.8/lib/node.d.ts
241
- - https://www.unpkg.com/@e-mc/types@0.11.8/lib/settings.d.ts
321
+ - https://www.unpkg.com/@e-mc/types@0.12.1/lib/squared.d.ts
322
+ - https://www.unpkg.com/@e-mc/types@0.12.1/lib/core.d.ts
323
+ - https://www.unpkg.com/@e-mc/types@0.12.1/lib/db.d.ts
324
+ - https://www.unpkg.com/@e-mc/types@0.12.1/lib/dom.d.ts
325
+ - https://www.unpkg.com/@e-mc/types@0.12.1/lib/logger.d.ts
326
+ - https://www.unpkg.com/@e-mc/types@0.12.1/lib/node.d.ts
327
+ - https://www.unpkg.com/@e-mc/types@0.12.1/lib/settings.d.ts
328
+
329
+ * https://www.npmjs.com/package/@types/node
242
330
 
243
331
  ## LICENSE
244
332
 
package/index.d.ts CHANGED
@@ -1,11 +1,13 @@
1
1
  import type { HostConstructor, ModuleConstructor } from '@e-mc/types/lib';
2
- import type { AbortComponentConstructor, ClientConstructor, ClientDbConstructor, PermissionConstructor } from '@e-mc/types/lib/core';
2
+ import type { AbortComponentConstructor, ClientConstructor, ClientDbConstructor, PermissionConstructor, WorkerChannelConstructor, WorkerGroupConstructor } from '@e-mc/types/lib/core';
3
3
 
4
4
  declare namespace core {
5
5
  const Module: ModuleConstructor;
6
6
  const Host: HostConstructor;
7
7
  const Client: ClientConstructor;
8
8
  const ClientDb: ClientDbConstructor;
9
+ const WorkerGroup: WorkerGroupConstructor;
10
+ const WorkerChannel: WorkerChannelConstructor;
9
11
  const AbortComponent: AbortComponentConstructor;
10
12
  const Permission: PermissionConstructor;
11
13
  }