
Research
Malicious npm Packages Impersonate Flashbots SDKs, Targeting Ethereum Wallet Credentials
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
@ezs/basics
Advanced tools
Ce plugin propose une série d'instructions transformer plusieurs formats text (xml, json, cvs, etc.) en flux d'objets Javascript
npm install @ezs/basics
Take a String and split it at bibtext entry.
Input:
["@article{my_article,\ntitle = {Hello world},\n", "journal = \"Some Journal\"\n"]
Output:
["a", "b", "c", "d"]
Returns Object
Take Mixed and produce Buffer.
For example, it's useful to send string to browser.
none undefined Returns Buffer
Take an Array of arrays and transform rows into objects.
Each row (Array) is tranformed into an object where keys are the values of the first row.
See CSVParse.
Input:
[
["a", "b", "c"],
[1, 2, 3],
[4, 5, 6]
]
Output:
[{
"a": 1,
"b": 2,
"c": 3
}, {
"a": 4,
"b": 5,
"c": 6
}]
Tip: this is useful after a CSVParse, to convert raw rows into n array of Javascript objects
When several values of the first row are the same, produced keys are suffixed with a number.
Input:
[
["a", "a", "b", "b", "b"],
[1, 2, 3, 4, 5]
]
Output:
[{
"a1": 1,
"a2": 2,
"b1": 3,
"b2": 4,
"b3": 5
}]
none undefined Returns (Object | Array<Object>)
Take String and parse it as CSV to generate arrays.
See:
Input:
"a,b,c\nd,e,d\n"
Output:
[
["a", "b", "c"],
["d", "e", "d"]
]
Tip: see CSVObject, to convert arrays of values to array of objects.
separator String to indicate the CSV separator (optional, default auto)quote String to indicate the CSV quote. (optional, default auto)Take an array of objects and transform row into a string where each field is separated with a character.
The resulting string is CSV-compliant.
See CSVObject
Input:
[{
"a": 1,
"b": 2,
"c": 3
}, {
"a": 4,
"b": 5,
"c": 6
}]
Output:
a;b;c
1;2;3
4;5;6
format String if set to "strict" the fields will be
wrapped with double quote (optional, default standard)separator String to indicate the CSV separator (optional, default ";")header Boolean first line contains key name (optional, default true)Returns String
Take Object containing filename et throw content by chunk
[ fi1e1.csv, file2.csv ]
Script:
[use]
plugin = analytics
plugin = basics
[FILELoad]
location = /tmp
[CSVParse]
Output:
[
(...)
]
location String Directory location (optional, default TMPDIR)compress Boolean Enable gzip compression (optional, default false)Returns Object
Take Object or Buffer and throw only one document
[ fi1e1.csv, file2.csv ]
Script:
[use]
plugin = basics
[FILELoad]
[FILEMerge]
[replace]
path = contentOfFile1AndFile2
value = self()
Output:
[
(...)
]
Returns Object
Take data, convert it to buffer and append it to file
Input:
[
{"a": "a"},
{"a": "b"},
{"a": "c" }
]
Script:
[FILESave]
location = /tmp
identifier = toto
Output:
[{ filename: "/tmp/toto", size: XXX, ... }]
location String Directory location (optional, default TMPDIR)identifier String? File namecontent String? Content to save instead of using input objectjsonl Boolean Save as json line (optional, default false)compress Boolean Enable gzip compression (optional, default false)append Boolean Enable append mode (add content to an existing file) (optional, default false)Returns Object
Take Object and generate INI
Take an array of ezs's statements in JSON, and yield an ezs script in a string.
Input:
[
{ "param": 1, "section": { "arg1": "a", "arg2": "b" } },
{ "param": 1, "section": { "arg1": "a", "arg2": "b" } },
{ "section": { "arg1": "a", "arg2": true } },
{ "sec1": { "arg1": "a", "arg2": [3, 4, 5] }, "sec2": { "arg1": "a", "arg2": { "x": 1, "y": 2 } } },
{ "secvide1": {}, "secvide2": {} },
]
Output:
param = 1
[section]
arg1 = a
arg2 = b
param = 1
[section]
arg1 = a
arg2 = b
[section]
arg1 = a
arg2 = true
[sec1]
arg1 = a
arg2 = [3,4,5]
[sec2]
arg1 = a
arg2 = {"x":1,"y":2}
[secvide1]
[secvide2]
Returns String
Parse a String to JSON and generate objects.
See https://github.com/dominictarr/JSONStream
Input:
["{ \"a\": 1, \"b\": 3 }", "{ \"a\": 2, \"b\": 4 }"]
Script:
[JSONParse]
separator = b
Output:
[3, 4]
Input:
["{ \"a\": 1 }", "{ \"a\": 2 }"]
Output:
[1, 2]
separator String to split at every JSONPath found (optional, default "*")Returns Object
Take an Object and generate a JSON string.
Input:
[{ "a": 1 }, { "b": 2 }]
Output:
"[{\"a\":1},{\"b\":2}]"
wrap String every document is wrapped into an array (optional, default true)indent String indent JSON (optional, default false)Returns String
Count how many objects are received, and yield the total.
Input:
["a", "b", "c", "d"]
Output:
[4]
none undefined Returns Number
Flatten an Object with a path delimiting character.
See https://www.npmjs.com/package/flat
Input:
[
{ "a": { "b": 1, "c": 2}},
{ "a": { "b": 3, "c": 4}}
]
Output:
[
{ "a/b": 1, "a/c": 2 },
{ "a/b": 3, "a/c": 4 }
]
separator String choose a character to flatten keys (optional, default "/")reverse Boolean unflatten instead of flatten keys (optional, default false)safe Boolean preserve arrays and their contents, (optional, default false)Returns Object
Take Object and throw the same object, all keys parsed to replace namespaces with their prefixes
Note: You can also parse values for specific keys (keys containing references to other keys)
[
{
"http://purl.org/dc/terms/title": "Life is good",
"http://purl.org/ontology/places#Countryl": "France",
},
{
"http://purl.org/dc/terms/title": "The rising sun",
"http://purl.org/ontology/places#Country": "Japan",
},
{
"http://purl.org/dc/terms/title": "Dolce Vista",
"http://purl.org/ontology/places#Country": "Italy",
}
]
Script:
[use]
plugin = basics
[OBJNamespaces]
prefix = dc:
namespace = http://purl.org/dc/terms/
prefix = place:
namespace = http://purl.org/ontology/places#
Output:
[
{
"dc:title": "Life is good",
"place:Country": "France",
},
{
"dc:title": "The rising sun",
"place:Country": "Japan",
},
{
"dc:title": "Dolce Vista",
"place:Country": "Italy",
}
]
prefix String? the alias for a namespacenamespace String? the namespace to substitute by a prefixreference String a regex to find key that contains a namespace to substitute (optional, default null)Returns Object
Standardize Objects so that each object have the same keys.
Input:
[{ "a": 1, "b": 2},
{ "b": 2, "c": 3},
{ "a": 1, "c": 3}]
Output:
[{ "a": 1, "b": 2, "c": ""},
{ "b": 2, "b": "", "c": 3},
{ "a": 1, "b": "", "c": 3}]
none undefined Returns Object
Take all recevied objects and build a tar file
{
}
manifest String? Location path to store files in the tarballlocation String Location path to store files in the tarball (optional, default data)json String Convert to JSON the content of each chunk (optional, default true)extension String Choose extension fo each file (optional, default json)additionalFile String? Path to an additional file that will be add to tarballcompress Boolean Enable gzip compression (optional, default false)Take the content of a tar file, extract some files. The JSON object is sent to the output stream for each file. It returns to the output stream
{
"id": "file name",
"value": "file contents"
}
path String Regex to select the files to extract (optional, default "**\/*.json")json String Parse as JSON the content of each file (optional, default true)text Boolean The content of each file is converted to a string (otherwise it remains a buffer) (optional, default true)compress Boolean Enable gzip compression (optional, default false)Returns Array<{id: String, value: String}>
Concatenate all String items into one string
Input:
["a", "b"]
Output:
["ab"]
none undefined Returns String
Take an array of values and generate an array containing objects with the
given key and matching value from the input array.
Input:
[1, "b"]
Output:
[{ "value": 1 }, { "value": "b" }]
key String choose a the key name (optional, default "value")Returns Object
Take a String and split it at each separator found.
Input:
["a\nb\n", "c\nd\n"]
Output:
["a", "b", "c", "d"]
separator String choose character which trigger the split (optional, default "\n")Returns String
Take a String and zip it.
Uses gzip algorithm to compress strings.
unzip Boolean to Unzip input (optional, default false)Returns Buffer
Take an Object and send it to an URL.
The output will be the returned content of URL.
Useful to send JSON data to an API and get results.
url String? URL to fetchstreaming String Direct connection to the Object Stream server (disables the retries setting) (optional, default false)json String Parse as JSON the content of URL (optional, default false)timeout Number Timeout in milliseconds (optional, default 1000)noerror Boolean Ignore all errors (optional, default false)retries Number The maximum amount of times to retry the connection (optional, default 5)encoder String The statement to encode each chunk to a string (optional, default dump)Returns Object
Add a new field to an Object, with the returned content of URL.
Or if no target is specified, the output will be the returned content of URL.
url String? URL to fetchpath String? if present select value to send (by POST)target String? choose the key to setjson String parse as JSON the content of URL (optional, default false)timeout Number timeout in milliseconds (optional, default 1000)mimetype String mimetype for value of path (if presents) (optional, default "application/json")noerror Boolean ignore all errors, the target field will remain undefined (optional, default false)retries Number The maximum amount of times to retry the connection (optional, default 5)Returns Object
Take Object and multiple it to make it one object per page
Input:
[{"q": "a"}]
Script:
[URLRequest]
url = https://api.search.net
[URLPagination]
total = get('total')
Output:
[
{
"q": "a",
"total": 22
"offset": 0,
"pageNumber": 1,
"totalPages", 3,
"maxPages": 1000,
"limit": 10
},
{
"q": "a",
"total": 22
"offset": 10,
"pageNumber": 2,
"totalPages", 3,
"maxPages": 1000,
"limit": 10
},
{
"q": "a",
"total": 22
"offset": 20,
"pageNumber": 3,
"totalPages", 3,
"maxPages": 1000,
"limit": 10
}
]
total Number total to use for the pagination (optional, default 0)limit Number limit to use to pagination (optional, default 10)maxPages Number maxPages to use to pagination (optional, default 1000)Returns Object
Take an URL String, parse it and return Object.
Fields of the returned object:
URLString statement convert such an object to a string.
See:
Returns Object
Take Object as parameters of URL, throw each chunk from the result
Input:
[{"q": "a"}]
Script:
[URLRequest]
url = https://api.search.net
Output:
[
{
"result": "a"
}
]
url String? URL to fetchjson Boolean parse result as json (optional, default true)target String? choose the key to settimeout Number Timeout in milliseconds (optional, default 1000)noerror Boolean Ignore all errors, the target field will remain undefined (optional, default false)retries Number The maximum amount of times to retry the connection (optional, default 5)insert String? a header response value in the resultReturns Object
Take String as URL, throw each chunk from the result or
Take Object as parameters of URL, throw each chunk from the result
Next examples use an API https://httpbin.org/get?a=n returning
{ args: { "a": "n" }}
Input:
[{"a": "a"}, {"a": "b"}, {"a": "c" }]
Script:
[URLStream]
url = https://httpbin.org/get
path = .args
Output:
[{"a": "a"}, {"a": "b"}, {"a": "c" }]
Input:
[
"https://httpbin.org/get?a=a",
"https://httpbin.org/get?a=b",
"https://httpbin.org/get?a=c"
]
Script:
[URLStream]
path = .args
Output:
[{"a": "a"}, {"a": "b"}, {"a": "c" }]
url String? URL to fetch (by default input string is taken)path String choose the path to split JSON result (optional, default "*")timeout Number Timeout in milliseconds (optional, default 1000)noerror Boolean Ignore all errors, the target field will remain undefined (optional, default false)retries Number The maximum amount of times to retry the connection (optional, default 5)Returns Object
Take an Object representing an URL and stringify it.
See URLParse
Returns String
Convert each chunk as XML String to JSON Object
Input:
[
"<xml>A</xml>",
"<xml>B</xml>"
]
Output:
[
{ "xml": { "$t": "A" } },
{ "xml": { "$t": "B" } }
]
Input:
[
{ "x": { "a": 1 } },
{ "x": { "a": 2 } }
]
Output:
[
"<x a=\"1\"/>",
"<x a=\"2\"/>",
]
Input:
[
{ "x": { "a": 1 } },
{ "x": { "a": 2 } }
]
Output:
[
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<x a=\"1\"/>",
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<x a=\"2\"/>",
]
See https://www.npmjs.com/package/xml-mapping
invert String change conversion (JSON to XML) (optional, default false)prologue String add XML prologue (optional, default false)Returns Object
Take String as XML input, parse it and split it in multi document at each path found
Input:
<* ["<a><b>x</b><b>y</b></a>"]
Script:
[XMLParse]
separator: /a/b
Output:
["x", "y"]
See https://www.npmjs.com/package/xml-splitter
separator String choose a character for flatten keys (optional, default "/")Returns Object
Transform an Object into an XML string.
Input:
[{ "$t": "a" }]
Output:
[
"<items><item>a</item></items>"
]
See XMLParse
rootElement String Root element name for the tag which starts and close the feed (optional, default "items")contentElement String Content element name for the tag which starts and closes each item (optional, default "item")rootNamespace String? Namespace for the root tag (xmlns=)prologue Boolean Add XML prologue <?xml (optional, default false)Returns String
Take the content of a zip file, extract some files. The JSON object is sent to the output stream for each file. It returns to the output stream
{
"id": "file name",
"value": "file contents"
}
path String Regex to select the files to extract (optional, default "**\/*.json")FAQs
Basics statements for EZS
The npm package @ezs/basics receives a total of 563 weekly downloads. As such, @ezs/basics popularity was classified as not popular.
We found that @ezs/basics demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers 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.

Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.

Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.

Security News
Following last week’s supply chain attack, Nx published findings on the GitHub Actions exploit and moved npm publishing to Trusted Publishers.