Compare commits
No commits in common. "d11aac559974d6ad61be9efe578f60b0c17da57b" and "20ed3d0928f8522ee551d1bc3aaca9fb1c3b49c9" have entirely different histories.
d11aac5599
...
20ed3d0928
197
package-lock.json
generated
197
package-lock.json
generated
@ -9,123 +9,13 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@influxdata/influxdb-client": "^1.20.0",
|
"@influxdata/influxdb-client": "^1.20.0"
|
||||||
"log4js": "^6.3.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@influxdata/influxdb-client": {
|
"node_modules/@influxdata/influxdb-client": {
|
||||||
"version": "1.20.0",
|
"version": "1.20.0",
|
||||||
"resolved": "https://registry.npmjs.org/@influxdata/influxdb-client/-/influxdb-client-1.20.0.tgz",
|
"resolved": "https://registry.npmjs.org/@influxdata/influxdb-client/-/influxdb-client-1.20.0.tgz",
|
||||||
"integrity": "sha512-jaKSI63hmQ5VSkJrFJkYIXaKlhoF+mGd4HmOf7v/X7pmEi69ReHp922Wyx6/OeCrpndRMbsadk+XmGNdd43cFw=="
|
"integrity": "sha512-jaKSI63hmQ5VSkJrFJkYIXaKlhoF+mGd4HmOf7v/X7pmEi69ReHp922Wyx6/OeCrpndRMbsadk+XmGNdd43cFw=="
|
||||||
},
|
|
||||||
"node_modules/date-format": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=4.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/debug": {
|
|
||||||
"version": "4.3.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
|
|
||||||
"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
|
|
||||||
"dependencies": {
|
|
||||||
"ms": "2.1.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.0"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"supports-color": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/flatted": {
|
|
||||||
"version": "2.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
|
|
||||||
"integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA=="
|
|
||||||
},
|
|
||||||
"node_modules/fs-extra": {
|
|
||||||
"version": "8.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
|
|
||||||
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
|
|
||||||
"dependencies": {
|
|
||||||
"graceful-fs": "^4.2.0",
|
|
||||||
"jsonfile": "^4.0.0",
|
|
||||||
"universalify": "^0.1.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6 <7 || >=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/graceful-fs": {
|
|
||||||
"version": "4.2.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
|
|
||||||
"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
|
|
||||||
},
|
|
||||||
"node_modules/jsonfile": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
|
|
||||||
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
|
|
||||||
"optionalDependencies": {
|
|
||||||
"graceful-fs": "^4.1.6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/log4js": {
|
|
||||||
"version": "6.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz",
|
|
||||||
"integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==",
|
|
||||||
"dependencies": {
|
|
||||||
"date-format": "^3.0.0",
|
|
||||||
"debug": "^4.1.1",
|
|
||||||
"flatted": "^2.0.1",
|
|
||||||
"rfdc": "^1.1.4",
|
|
||||||
"streamroller": "^2.2.4"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/ms": {
|
|
||||||
"version": "2.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
|
||||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
|
||||||
},
|
|
||||||
"node_modules/rfdc": {
|
|
||||||
"version": "1.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
|
|
||||||
"integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
|
|
||||||
},
|
|
||||||
"node_modules/streamroller": {
|
|
||||||
"version": "2.2.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz",
|
|
||||||
"integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"date-format": "^2.1.0",
|
|
||||||
"debug": "^4.1.1",
|
|
||||||
"fs-extra": "^8.1.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/streamroller/node_modules/date-format": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz",
|
|
||||||
"integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=4.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/universalify": {
|
|
||||||
"version": "0.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
|
||||||
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 4.0.0"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -133,91 +23,6 @@
|
|||||||
"version": "1.20.0",
|
"version": "1.20.0",
|
||||||
"resolved": "https://registry.npmjs.org/@influxdata/influxdb-client/-/influxdb-client-1.20.0.tgz",
|
"resolved": "https://registry.npmjs.org/@influxdata/influxdb-client/-/influxdb-client-1.20.0.tgz",
|
||||||
"integrity": "sha512-jaKSI63hmQ5VSkJrFJkYIXaKlhoF+mGd4HmOf7v/X7pmEi69ReHp922Wyx6/OeCrpndRMbsadk+XmGNdd43cFw=="
|
"integrity": "sha512-jaKSI63hmQ5VSkJrFJkYIXaKlhoF+mGd4HmOf7v/X7pmEi69ReHp922Wyx6/OeCrpndRMbsadk+XmGNdd43cFw=="
|
||||||
},
|
|
||||||
"date-format": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w=="
|
|
||||||
},
|
|
||||||
"debug": {
|
|
||||||
"version": "4.3.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
|
|
||||||
"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
|
|
||||||
"requires": {
|
|
||||||
"ms": "2.1.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flatted": {
|
|
||||||
"version": "2.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
|
|
||||||
"integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA=="
|
|
||||||
},
|
|
||||||
"fs-extra": {
|
|
||||||
"version": "8.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
|
|
||||||
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
|
|
||||||
"requires": {
|
|
||||||
"graceful-fs": "^4.2.0",
|
|
||||||
"jsonfile": "^4.0.0",
|
|
||||||
"universalify": "^0.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"graceful-fs": {
|
|
||||||
"version": "4.2.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
|
|
||||||
"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
|
|
||||||
},
|
|
||||||
"jsonfile": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
|
|
||||||
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
|
|
||||||
"requires": {
|
|
||||||
"graceful-fs": "^4.1.6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"log4js": {
|
|
||||||
"version": "6.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz",
|
|
||||||
"integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==",
|
|
||||||
"requires": {
|
|
||||||
"date-format": "^3.0.0",
|
|
||||||
"debug": "^4.1.1",
|
|
||||||
"flatted": "^2.0.1",
|
|
||||||
"rfdc": "^1.1.4",
|
|
||||||
"streamroller": "^2.2.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ms": {
|
|
||||||
"version": "2.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
|
||||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
|
||||||
},
|
|
||||||
"rfdc": {
|
|
||||||
"version": "1.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
|
|
||||||
"integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
|
|
||||||
},
|
|
||||||
"streamroller": {
|
|
||||||
"version": "2.2.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz",
|
|
||||||
"integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==",
|
|
||||||
"requires": {
|
|
||||||
"date-format": "^2.1.0",
|
|
||||||
"debug": "^4.1.1",
|
|
||||||
"fs-extra": "^8.1.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"date-format": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz",
|
|
||||||
"integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA=="
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"universalify": {
|
|
||||||
"version": "0.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
|
||||||
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
"author": "Ruakij",
|
"author": "Ruakij",
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@influxdata/influxdb-client": "^1.20.0",
|
"@influxdata/influxdb-client": "^1.20.0"
|
||||||
"log4js": "^6.3.0"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,46 +0,0 @@
|
|||||||
const PacketType = {
|
|
||||||
Beacon: 'Beacon',
|
|
||||||
ProbeRequest: 'ProbeRequest',
|
|
||||||
ProbeResponse: 'ProbeResponse',
|
|
||||||
Data: 'Data',
|
|
||||||
RequestToSend: 'RequestToSend',
|
|
||||||
ClearToSend: 'ClearToSend',
|
|
||||||
Acknowledgment: 'Acknowledgment',
|
|
||||||
BlockAcknowledgment: 'BlockAcknowledgment',
|
|
||||||
NoData: 'NoData',
|
|
||||||
Unknown: 'Unknown'
|
|
||||||
}
|
|
||||||
|
|
||||||
class Packet{
|
|
||||||
timestampMicros;
|
|
||||||
|
|
||||||
srcMac;
|
|
||||||
dstMac;
|
|
||||||
bssid;
|
|
||||||
|
|
||||||
signal;
|
|
||||||
frequency;
|
|
||||||
dataRate;
|
|
||||||
|
|
||||||
packetType;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Extensions of Packet
|
|
||||||
class PacketWithSSID extends Packet{
|
|
||||||
ssid;
|
|
||||||
}
|
|
||||||
|
|
||||||
class BeaconPacket extends PacketWithSSID{}
|
|
||||||
class ProbeRequestPacket extends PacketWithSSID{}
|
|
||||||
class ProbeResponsePacket extends PacketWithSSID{}
|
|
||||||
|
|
||||||
|
|
||||||
// Specify exports
|
|
||||||
module.exports = {
|
|
||||||
PacketType,
|
|
||||||
Packet,
|
|
||||||
PacketWithSSID,
|
|
||||||
BeaconPacket,
|
|
||||||
ProbeRequestPacket,
|
|
||||||
ProbeResponsePacket
|
|
||||||
};
|
|
@ -1,13 +0,0 @@
|
|||||||
function requireEnvVars(requiredEnv){
|
|
||||||
// Ensure required ENV vars are set
|
|
||||||
let unsetEnv = requiredEnv.filter((env) => !(typeof process.env[env] !== 'undefined'));
|
|
||||||
|
|
||||||
if (unsetEnv.length > 0) {
|
|
||||||
return "Required ENV variables are not set: [" + unsetEnv.join(', ') + "]";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Specify exports
|
|
||||||
module.exports = {
|
|
||||||
requireEnvVars
|
|
||||||
};
|
|
@ -1,23 +0,0 @@
|
|||||||
const logger = require("./logger.js")("exec");
|
|
||||||
|
|
||||||
const { spawn } = require("child_process");
|
|
||||||
|
|
||||||
|
|
||||||
function exec(cmd, stdout, stderr, exit_handler){
|
|
||||||
const [bin, ...args] = cmd.split(' ')
|
|
||||||
|
|
||||||
logger.addContext("binary", "bin");
|
|
||||||
logger.debug(`Spawn process '${cmd}'`);
|
|
||||||
let proc = spawn(bin, args);
|
|
||||||
|
|
||||||
return {
|
|
||||||
"process": proc,
|
|
||||||
"stdout": proc.stdout,
|
|
||||||
"stderr": proc.stderr
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Specify exports
|
|
||||||
module.exports = {
|
|
||||||
exec
|
|
||||||
};
|
|
@ -1,11 +0,0 @@
|
|||||||
const log4js = require("log4js");
|
|
||||||
|
|
||||||
|
|
||||||
function setup(category = "unknown"){
|
|
||||||
const logger = log4js.getLogger(category);
|
|
||||||
logger.level = process.env.LOGLEVEL ?? "INFO";
|
|
||||||
return logger;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Specify exports
|
|
||||||
module.exports = setup;
|
|
24
src/main.js
24
src/main.js
@ -1,24 +0,0 @@
|
|||||||
const logger = require("./helper/logger.js")("main");
|
|
||||||
|
|
||||||
const { requireEnvVars } = require("./helper/env.js");
|
|
||||||
const { exit } = require("process");
|
|
||||||
|
|
||||||
/// Setup ENVs
|
|
||||||
const env = process.env;
|
|
||||||
// Defaults
|
|
||||||
{
|
|
||||||
env.LOGLEVEL ??= "INFO";
|
|
||||||
env.WIFI_INTERFACE ??= "wlan0";
|
|
||||||
env.WIFI_CHANNEL ??= [1,6,11];
|
|
||||||
env.WIFI_CHANNEL_TIME ??= 1;
|
|
||||||
}
|
|
||||||
// Required vars
|
|
||||||
let errorMsg = requireEnvVars([
|
|
||||||
"INFLUX_URL", "INFLUX_TOKEN",
|
|
||||||
"INFLUX_ORG", "INFLUX_BUCKET"
|
|
||||||
]);
|
|
||||||
if(errorMsg){
|
|
||||||
logger.fatal(errorMsg);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
|||||||
const { Transform } = require('stream')
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Matches whole blocks as regex and passes them on
|
|
||||||
*/
|
|
||||||
class RegexBlockStream extends Transform{
|
|
||||||
matcher;
|
|
||||||
withholdLastBlock;
|
|
||||||
matchAllOnFlush;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {RegExp} matcher Block-match - WARNING: It should match a clean-block (including e.g. newline)! Otherwise buffer will get dirty and use more and more ressources.
|
|
||||||
* @param {boolean} withholdLastBlock When true, the last matches block will not be submitted to prevent submitting incomplete blocks.
|
|
||||||
* @param {boolean} matchAllOnFlush (Only in combination with withholdLastBlock) When enabled, the buffer will be matched on last time on _flush (stream deconstruction) and write any, also incomplete, blocks
|
|
||||||
*/
|
|
||||||
constructor(matcher, withholdLastBlock = true, matchAllOnFlush = false){
|
|
||||||
super({
|
|
||||||
readableObjectMode: true,
|
|
||||||
writableObjectMode: true
|
|
||||||
});
|
|
||||||
|
|
||||||
this.matcher = matcher;
|
|
||||||
this.withholdLastBlock = withholdLastBlock;
|
|
||||||
this.matchAllOnFlush = matchAllOnFlush;
|
|
||||||
|
|
||||||
this._buffer = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
_transform(chunk, encoding, next){
|
|
||||||
chunk = this._buffer + chunk; // Add previous buffer to current chunk
|
|
||||||
|
|
||||||
let matches = chunk.match(this.matcher); // Match
|
|
||||||
if(matches){
|
|
||||||
if(this.withholdLastBlock) matches.pop(); // Remove last if we want to withhold it
|
|
||||||
chunk = this._writeMatches(chunk, matches);
|
|
||||||
}
|
|
||||||
|
|
||||||
this._buffer = chunk; // Store remaining data in buffer
|
|
||||||
next(); // Get next chunk
|
|
||||||
}
|
|
||||||
|
|
||||||
_writeMatches(matches, chunk = null){
|
|
||||||
if(matches){
|
|
||||||
matches.forEach((match) => {
|
|
||||||
this.push(match); // Write match to stream
|
|
||||||
if(chunk) chunk = chunk.replace(match, ''); // Remove match from chunks
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if(chunk) return chunk;
|
|
||||||
}
|
|
||||||
|
|
||||||
_flush(next){
|
|
||||||
if(matchAllOnFlush){ // When requested, we'll match one last time over the remaining buffer
|
|
||||||
let matches = this._buffer.match(this.matcher); // Match remaining buffer
|
|
||||||
_writeMatches(this._buffer); // Write matches including last element
|
|
||||||
}
|
|
||||||
|
|
||||||
next(); // Tell system we are done
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Specify exports
|
|
||||||
module.exports = {
|
|
||||||
RegexBlockStream
|
|
||||||
};
|
|
Loading…
x
Reference in New Issue
Block a user