mirror of https://github.com/antonmedv/fx
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
956d1ab624 | 2 years ago | |
---|---|---|
.. | ||
README.md | 2 years ago | |
index.js | 2 years ago | |
package.json | 2 years ago | |
test.js | 2 years ago |
README.md
fx
The JavaScript version of the fx. Short for Function eXecution or f(x).
npm i -g fx
Or use npx:
cat file.json | npx fx .param
Or use node:
cat file.json | node <(curl -s https://fx.wtf) .param
Or use deno:
cat file.json | deno run https://fx.wtf .param
Usage
Fx treats arguments as JavaScript functions. Fx passes the input data to the first function and then passes the result of the first function to the second function and so on.
echo '{"name": "world"}' | fx 'x => x.name' 'x => `Hello, ${x}!`'
Use this
to access the input data. Use .
at the start of the expression to
access the input data without a x => x
part.
echo '{"name": "world"}' | fx '.name' '`Hello, ${this}!`'
Use other JS functions to process the data.
echo `{"name": "world"}` | fx 'Object.keys'
Advanced Usage
Fx has a shortcut for the map function. Fox example .map(x => x.commit.message)
can be written without leading dot and without x => x
parts.
curl https://api.github.com/repos/antonmedv/fx/commits | fx 'map(.commit.message)'
echo '[{"name": "world"}]' | fx 'map(`Hello, ${x.name}!`)'
Fx has a special syntax for the flatMap function. Fox example,
.flatMap(x => x.labels.flatMap(x => x.name))
can be rewritten in the next way.
curl https://api.github.com/repos/kubernetes/kubernetes/issues | fx '.[].labels[].name'