@rspack/core 1.3.2 → 1.3.3

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.
@@ -0,0 +1,188 @@
1
+ import { TransferListItem as TransferListItem$1, MessagePort } from 'node:worker_threads';
2
+ import { EventEmitterAsyncResource } from 'node:events';
3
+
4
+ /** Channel for communicating between main thread and workers */
5
+ interface TinypoolChannel {
6
+ /** Workers subscribing to messages */
7
+ onMessage(callback: (message: any) => void): void;
8
+ /** Called with worker's messages */
9
+ postMessage(message: any): void;
10
+ }
11
+ interface TinypoolWorker {
12
+ runtime: string;
13
+ initialize(options: {
14
+ env?: Record<string, string>;
15
+ argv?: string[];
16
+ execArgv?: string[];
17
+ resourceLimits?: any;
18
+ workerData: TinypoolData;
19
+ trackUnmanagedFds?: boolean;
20
+ }): void;
21
+ terminate(): Promise<any>;
22
+ postMessage(message: any, transferListItem?: TransferListItem$1[]): void;
23
+ setChannel?: (channel: TinypoolChannel) => void;
24
+ on(event: string, listener: (...args: any[]) => void): void;
25
+ once(event: string, listener: (...args: any[]) => void): void;
26
+ emit(event: string, ...data: any[]): void;
27
+ ref?: () => void;
28
+ unref?: () => void;
29
+ threadId: number;
30
+ }
31
+ /**
32
+ * Tinypool's internal messaging between main thread and workers.
33
+ * - Utilizers can use `__tinypool_worker_message__` property to identify
34
+ * these messages and ignore them.
35
+ */
36
+ interface TinypoolWorkerMessage<T extends 'port' | 'pool' = 'port' | 'pool'> {
37
+ __tinypool_worker_message__: true;
38
+ source: T;
39
+ }
40
+ interface StartupMessage {
41
+ filename: string | null;
42
+ name: string;
43
+ port: MessagePort;
44
+ sharedBuffer: Int32Array;
45
+ useAtomics: boolean;
46
+ }
47
+ interface RequestMessage {
48
+ taskId: number;
49
+ task: any;
50
+ filename: string;
51
+ name: string;
52
+ }
53
+ interface ReadyMessage {
54
+ ready: true;
55
+ }
56
+ interface ResponseMessage {
57
+ taskId: number;
58
+ result: any;
59
+ error: unknown | null;
60
+ usedMemory: number;
61
+ }
62
+ interface TinypoolPrivateData {
63
+ workerId: number;
64
+ }
65
+ type TinypoolData = [TinypoolPrivateData, any];
66
+ declare const kTransferable: unique symbol;
67
+ declare const kValue: unique symbol;
68
+ declare const kQueueOptions: unique symbol;
69
+ declare function isTransferable(value: any): boolean;
70
+ declare function isMovable(value: any): boolean;
71
+ declare function markMovable(value: object): void;
72
+ interface Transferable {
73
+ readonly [kTransferable]: object;
74
+ readonly [kValue]: object;
75
+ }
76
+ interface Task {
77
+ readonly [kQueueOptions]: object | null;
78
+ cancel(): void;
79
+ }
80
+ interface TaskQueue {
81
+ readonly size: number;
82
+ shift(): Task | null;
83
+ remove(task: Task): void;
84
+ push(task: Task): void;
85
+ cancel(): void;
86
+ }
87
+ declare function isTaskQueue(value: any): boolean;
88
+ declare const kRequestCountField = 0;
89
+ declare const kResponseCountField = 1;
90
+ declare const kFieldCount = 2;
91
+
92
+ declare global {
93
+ namespace NodeJS {
94
+ interface Process {
95
+ __tinypool_state__: {
96
+ isTinypoolWorker: boolean;
97
+ isWorkerThread?: boolean;
98
+ isChildProcess?: boolean;
99
+ workerData: any;
100
+ workerId: number;
101
+ };
102
+ }
103
+ }
104
+ }
105
+ interface AbortSignalEventTargetAddOptions {
106
+ once: boolean;
107
+ }
108
+ interface AbortSignalEventTarget {
109
+ addEventListener: (name: 'abort', listener: () => void, options?: AbortSignalEventTargetAddOptions) => void;
110
+ removeEventListener: (name: 'abort', listener: () => void) => void;
111
+ aborted?: boolean;
112
+ }
113
+ interface AbortSignalEventEmitter {
114
+ off: (name: 'abort', listener: () => void) => void;
115
+ once: (name: 'abort', listener: () => void) => void;
116
+ }
117
+ type AbortSignalAny = AbortSignalEventTarget | AbortSignalEventEmitter;
118
+ type ResourceLimits = Worker extends {
119
+ resourceLimits?: infer T;
120
+ } ? T : object;
121
+ interface Options {
122
+ filename?: string | null;
123
+ runtime?: 'worker_threads' | 'child_process';
124
+ name?: string;
125
+ minThreads?: number;
126
+ maxThreads?: number;
127
+ idleTimeout?: number;
128
+ terminateTimeout?: number;
129
+ maxQueue?: number | 'auto';
130
+ concurrentTasksPerWorker?: number;
131
+ useAtomics?: boolean;
132
+ resourceLimits?: ResourceLimits;
133
+ maxMemoryLimitBeforeRecycle?: number;
134
+ argv?: string[];
135
+ execArgv?: string[];
136
+ env?: Record<string, string>;
137
+ workerData?: any;
138
+ taskQueue?: TaskQueue;
139
+ trackUnmanagedFds?: boolean;
140
+ isolateWorkers?: boolean;
141
+ }
142
+ interface FilledOptions extends Options {
143
+ filename: string | null;
144
+ name: string;
145
+ runtime: NonNullable<Options['runtime']>;
146
+ minThreads: number;
147
+ maxThreads: number;
148
+ idleTimeout: number;
149
+ maxQueue: number;
150
+ concurrentTasksPerWorker: number;
151
+ useAtomics: boolean;
152
+ taskQueue: TaskQueue;
153
+ }
154
+ interface RunOptions {
155
+ transferList?: TransferList;
156
+ channel?: TinypoolChannel;
157
+ filename?: string | null;
158
+ signal?: AbortSignalAny | null;
159
+ name?: string | null;
160
+ runtime?: Options['runtime'];
161
+ }
162
+ type TransferList = MessagePort extends {
163
+ postMessage(value: any, transferList: infer T): any;
164
+ } ? T : never;
165
+ type TransferListItem = TransferList extends (infer T)[] ? T : never;
166
+ declare class Tinypool extends EventEmitterAsyncResource {
167
+ #private;
168
+ constructor(options?: Options);
169
+ run(task: any, options?: RunOptions): Promise<any>;
170
+ destroy(): Promise<void>;
171
+ get options(): FilledOptions;
172
+ get threads(): TinypoolWorker[];
173
+ get queueSize(): number;
174
+ cancelPendingTasks(): void;
175
+ recycleWorkers(options?: Pick<Options, 'runtime'>): Promise<void>;
176
+ get completed(): number;
177
+ get duration(): number;
178
+ static get isWorkerThread(): boolean;
179
+ static get workerData(): any;
180
+ static get version(): string;
181
+ static move(val: Transferable | TransferListItem | ArrayBufferView | ArrayBuffer | MessagePort): MessagePort | ArrayBuffer | Transferable | ArrayBufferView;
182
+ static get transferableSymbol(): symbol;
183
+ static get valueSymbol(): symbol;
184
+ static get queueOptionsSymbol(): symbol;
185
+ }
186
+ declare const _workerId: number;
187
+
188
+ export { type Options, type ReadyMessage, type RequestMessage, type ResponseMessage, type StartupMessage, type Task, type TaskQueue, Tinypool, type TinypoolChannel, type TinypoolData, type TinypoolPrivateData, type TinypoolWorker, type TinypoolWorkerMessage, type Transferable, Tinypool as default, isMovable, isTaskQueue, isTransferable, kFieldCount, kQueueOptions, kRequestCountField, kResponseCountField, kTransferable, kValue, markMovable, _workerId as workerId };