UNPKG

1.77 kBJavaScriptView Raw
1'use strict';
2
3
4var Transform = require('readable-stream').Transform;
5var streamParser = require('stream-parser');
6var inherits = require('util').inherits;
7
8
9function ParserStream() {
10 Transform.call(this, { readableObjectMode: true });
11}
12
13inherits(ParserStream, Transform);
14streamParser(ParserStream.prototype);
15
16
17exports.ParserStream = ParserStream;
18
19exports.once = function (fn) {
20 var called = false;
21
22 return function () {
23 if (!called) {
24 called = true;
25 fn.apply(this, arguments);
26 }
27 };
28};
29
30exports.sliceEq = function (src, start, dest) {
31 for (var i = start, j = 0; j < dest.length;) {
32 if (src[i++] !== dest[j++]) return false;
33 }
34 return true;
35};
36
37exports.str2arr = function (str, format) {
38 var arr = [], i = 0;
39
40 if (format && format === 'hex') {
41 while (i < str.length) {
42 arr.push(parseInt(str.slice(i, i + 2), 16));
43 i += 2;
44 }
45 } else {
46 for (; i < str.length; i++) {
47 /* eslint-disable no-bitwise */
48 arr.push(str.charCodeAt(i) & 0xFF);
49 }
50 }
51
52 return arr;
53};
54
55exports.readUInt16LE = function (data, offset) {
56 return data[offset] | (data[offset + 1] << 8);
57};
58
59exports.readUInt16BE = function (data, offset) {
60 return data[offset + 1] | (data[offset] << 8);
61};
62
63exports.readUInt32LE = function (data, offset) {
64 return data[offset] |
65 (data[offset + 1] << 8) |
66 (data[offset + 2] << 16) |
67 (data[offset + 3] * 0x1000000);
68};
69
70exports.readUInt32BE = function (data, offset) {
71 return data[offset + 3] |
72 (data[offset + 2] << 8) |
73 (data[offset + 1] << 16) |
74 (data[offset] * 0x1000000);
75};
76
77exports.error = function (message, code, status) {
78 var err = new Error(message);
79
80 if (code) err.code = code;
81 if (status) err.status = status;
82
83 return err;
84};