const { parentPort, workerData } = require('worker_threads'); const util = require('./util'); const allowedTypes = ['value', 'property'] let type = workerData.type const array = workerData.array const target = workerData.target const property = workerData.property if (type === undefined) { type = allowedTypes[0] } if (!allowedTypes.includes(type)) { throw new Error(`The allowed types are ${allowedTypes.join(', ')}, you tried ${type}`) } if (type === 'property' && (typeof property !== 'string' || property.length < 1)) { throw new Error(`You tried by searching by binarySearchByProperty, but you forgot the property options, which has to be a string and at least one character`) } let foundValue if (type === 'value') { foundValue = util.binarySearchByValue(array, target) } else { foundValue = util.binarySearchByProperty(array, target, property) } parentPort.postMessage(foundValue)