HEX
Server: nginx/1.24.0
System: Linux nowruzgan 6.8.0-57-generic #59-Ubuntu SMP PREEMPT_DYNAMIC Sat Mar 15 17:40:59 UTC 2025 x86_64
User: babak (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/dev/nowruzgan/vazhgar/node_modules/piscina/src/common.ts
import type { MessagePort } from 'worker_threads';

export const READY = '_WORKER_READY';

export interface StartupMessage {
  filename : string | null;
  name : string;
  port : MessagePort;
  sharedBuffer : Int32Array;
  useAtomics : boolean;
  niceIncrement : number;
}

export interface RequestMessage {
  taskId : number;
  task : any;
  filename: string;
  name : string;
}

export interface ReadyMessage {
  [READY]: true
};

export interface ResponseMessage {
  taskId : number;
  result : any;
  error: Error | null;
}
export const commonState = {
  isWorkerThread: false,
  workerData: undefined
};

// Internal symbol used to mark Transferable objects returned
// by the Piscina.move() function
const kMovable = Symbol('Piscina.kMovable');
export const kTransferable = Symbol.for('Piscina.transferable');
export const kValue = Symbol.for('Piscina.valueOf');
export const kQueueOptions = Symbol.for('Piscina.queueOptions');

// True if the object implements the Transferable interface
export function isTransferable (value : any) : boolean {
  return value != null &&
         typeof value === 'object' &&
         kTransferable in value &&
         kValue in value;
}

// True if object implements Transferable and has been returned
// by the Piscina.move() function
export function isMovable (value : any) : boolean {
  return isTransferable(value) && value[kMovable] === true;
}

export function markMovable (value : object) : void {
  Object.defineProperty(value, kMovable, {
    enumerable: false,
    configurable: true,
    writable: true,
    value: true
  });
}

export interface Transferable {
  readonly [kTransferable] : object;
  readonly [kValue] : object;
}

export interface Task {
  readonly [kQueueOptions] : object | null;
}

export interface TaskQueue {
  readonly size : number;
  shift () : Task | null;
  remove (task : Task) : void;
  push (task : Task) : void;
}

export function isTaskQueue (value : any) : boolean {
  return typeof value === 'object' &&
         value !== null &&
         'size' in value &&
         typeof value.shift === 'function' &&
         typeof value.remove === 'function' &&
         typeof value.push === 'function';
}

export const kRequestCountField = 0;
export const kResponseCountField = 1;
export const kFieldCount = 2;