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.
fx/npm
Anton Medvedev be7ac90e7a
Release npm 26
1 year ago
..
README.md Update README.md 1 year ago
index.js Add --raw flag 1 year ago
package.json Release npm 26 1 year ago
test.js Add raw test 1 year 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 .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