Socket
Socket
Sign inDemoInstall

use-scan-detection

Package Overview
Dependencies
6
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.2.1 to 0.2.2

12

dist/index.d.ts
interface config {
/** Maximum time between characters in milliseconds. Used to determine if input is from keyboard or a scanner. Defaults to 50ms.*/
waitTime?: number;
/** Time to wait from last character to then trigger an evaluation of the buffer. */
timeToEvaluate?: number;
/** Average time between characters in milliseconds. Used to determine if input is from keyboard or a scanner. Defaults to 50ms.*/
averageWaitTime?: number;
/** Character that barcode scanner prefixes input with.*/
startCharacter?: number;
startCharacter?: Array<number>;
/** Character that barcode scanner suffixes input with. Defaults to line return.*/
endCharacter?: number;
endCharacter?: Array<number>;
/** Callback to use on complete scan input.*/

@@ -27,3 +29,3 @@ onComplete: (code: String) => void;

*/
declare const useScanDetection: ({ waitTime, startCharacter, endCharacter, onComplete, onError, minLength, ignoreIfFocusOn, stopPropagation, preventDefault, container }: config) => void;
declare const useScanDetection: ({ timeToEvaluate, averageWaitTime, startCharacter, endCharacter, onComplete, onError, minLength, ignoreIfFocusOn, stopPropagation, preventDefault, container }: config) => void;
export default useScanDetection;

@@ -9,3 +9,3 @@ "use strict";

var useScanDetection = function (_a) {
var _b = _a.waitTime, waitTime = _b === void 0 ? 50 : _b, startCharacter = _a.startCharacter, _c = _a.endCharacter, endCharacter = _c === void 0 ? 13 : _c, onComplete = _a.onComplete, onError = _a.onError, _d = _a.minLength, minLength = _d === void 0 ? 1 : _d, ignoreIfFocusOn = _a.ignoreIfFocusOn, _e = _a.stopPropagation, stopPropagation = _e === void 0 ? false : _e, _f = _a.preventDefault, preventDefault = _f === void 0 ? false : _f, _g = _a.container, container = _g === void 0 ? document : _g;
var _b = _a.timeToEvaluate, timeToEvaluate = _b === void 0 ? 100 : _b, _c = _a.averageWaitTime, averageWaitTime = _c === void 0 ? 50 : _c, _d = _a.startCharacter, startCharacter = _d === void 0 ? [] : _d, _e = _a.endCharacter, endCharacter = _e === void 0 ? [13, 27] : _e, onComplete = _a.onComplete, onError = _a.onError, _f = _a.minLength, minLength = _f === void 0 ? 1 : _f, ignoreIfFocusOn = _a.ignoreIfFocusOn, _g = _a.stopPropagation, stopPropagation = _g === void 0 ? false : _g, _h = _a.preventDefault, preventDefault = _h === void 0 ? false : _h, _j = _a.container, container = _j === void 0 ? document : _j;
var buffer = react_1.useRef([]);

@@ -16,18 +16,37 @@ var timeout = react_1.useRef(false);

};
var evaluateBuffer = function () {
clearTimeout(timeout.current);
var sum = buffer.current
.map(function (_a, k, arr) {
var time = _a.time;
return k > 0 ? time - arr[k - 1].time : 0;
})
.slice(1)
.reduce(function (total, delta) { return total + delta; }, 0);
var avg = sum / (buffer.current.length - 1);
var code = buffer.current
.slice(startCharacter.length > 0 ? 1 : 0)
.map(function (_a) {
var char = _a.char;
return char;
})
.join("");
if (avg <= averageWaitTime
&& buffer.current.slice(startCharacter.length > 0 ? 1 : 0).length >= minLength) {
onComplete(code);
}
else {
avg <= averageWaitTime && !!onError && onError(code);
}
clearBuffer();
};
var onKeyDown = react_1.useCallback(function (event) {
if (event.currentTarget !== ignoreIfFocusOn) {
if (event.keyCode === endCharacter) {
clearTimeout(timeout.current);
if (buffer.current.length >= minLength) {
onComplete(buffer.current.slice(!!startCharacter ? 1 : 0).join(""));
}
else if (!!onError) {
onError("incomplete scan detected");
}
clearBuffer();
if (endCharacter.includes(event.keyCode)) {
evaluateBuffer();
}
if (buffer.current.length > 0 || event.keyCode === startCharacter || !startCharacter) {
if (buffer.current.length > 0 || startCharacter.includes(event.keyCode) || startCharacter.length === 0) {
clearTimeout(timeout.current);
timeout.current = setTimeout(clearBuffer, waitTime);
buffer.current.push(event.key);
timeout.current = setTimeout(evaluateBuffer, timeToEvaluate);
buffer.current.push({ time: performance.now(), char: event.key });
}

@@ -44,3 +63,3 @@ }

endCharacter,
waitTime,
timeToEvaluate,
onComplete,

@@ -47,0 +66,0 @@ onError,

{
"name": "use-scan-detection",
"version": "0.2.1",
"version": "0.2.2",
"description": "A react hook for detecting barcode scanner input.",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc