Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
line-counter
Advanced tools
A simple class that allows to count lines while iterating over a string
A simple class that allows to count lines while iterating over a string
This module helps you when you want to output the line-number of certain locations in a string while iterating over the string otherwise. For example, if you want to
Suppose, we want to extract all occurences of 'sed' and 'ipsum' from the following text:
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor
invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et
accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing
elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed
diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd
gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
We can easily match all the occurences with a regex, but we only get the char-index of each match.
Using the line-counter
module, we can print line-numbers as well:
var regex = /sed|ipsum/g;
var text = require("fs").readFileSync("example.txt");
var LineCounter = require("line-counter");
var counter = new LineCounter(text);
var match;
while ((match = regex.exec(text)) !== null) {
// Example for .countUpTo()
console.log(
"Found '" + match[0] + "'",
"at index", match.index,
"which is in line ", counter.countUpTo(match.index)
);
// Example for .locate()
console.log(
"Found '" + match[0] + "'",
"at index", match.index,
"which is at location", counter.locate(match.index)
);
}
Create a new LineCounter instance counting lines in a given string. The class provides a method countUpTo
that pushes an internal counter to the line of a specified char-index in the string.
Example:
Params
contents
{string}: the string that is parsed (i.e. file contents)Example
var LineCounter = require('line-counter');
var lc = new LineCounter('abc\ncde\nefg');
lc.countUpTo(0); // == 1
lc.countUpTo(8); // == 3
Returns the line-number of a given char-index within the string.
Params
upTo
{number}: a char-index within the contents
-string. This char-index must be greater or equal to the line-start of the last char-index passed to the previous call to countUpTo
returns
{number}: the line-number of this char-index.Returns the location (line-nr and column-nr) of a char index within the string.
returns
{{column: number, line: number}: line- and column-index (based off 1
)Install dev dependencies:
$ npm i -d && npm test
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue
Nils Knappmeier
Released under the MIT license.
This project adheres to Semantic Versioning.
.locate(charIndex)
to return line- and column-index of the char-index location.upTo(content.length)
for contents that end with a new-line.FAQs
A simple class that allows to count lines while iterating over a string
The npm package line-counter receives a total of 10,304 weekly downloads. As such, line-counter popularity was classified as popular.
We found that line-counter demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.