fx/npm
2023-04-18 14:10:17 +02:00
..
index.js Add own JSON parser 2023-04-18 14:10:17 +02:00
package.json Release npm 26 2023-04-12 11:02:05 +02:00
README.md Add own JSON parser 2023-04-18 14:10:17 +02:00
test.js Add own JSON parser 2023-04-18 14:10:17 +02:00

fx

A non-interactive, JavaScript version of the fx. Short for Function eXecution or f(x).

npm i -g fx

Or use npx:

cat file.json | npx fx .field

Or use node:

cat file.json | node <(curl -s https://fx.wtf) .field

Or use deno:

cat file.json | deno run https://fx.wtf .field

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, this.map(x => x.commit.message) can be rewritten 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'

Fx works with promises.

echo '"https://medv.io/*"' | fx 'fetch' '.text()'

When using the -r or --raw flag, the input will be treated as a raw string instead of JSON. This can be useful when working with non-JSON input data, such as plain text or CSV data.

ls | fx -r '.trim().split("\n")'

License

MIT