{"id":25066827,"url":"https://github.com/marpple/fxjs","last_synced_at":"2025-05-15T18:04:00.055Z","repository":{"id":32918566,"uuid":"146189720","full_name":"marpple/FxJS","owner":"marpple","description":"Functional Extensions Library for JavaScript","archived":false,"fork":false,"pushed_at":"2022-06-13T05:16:26.000Z","size":1951,"stargazers_count":432,"open_issues_count":2,"forks_count":61,"subscribers_count":28,"default_branch":"master","last_synced_at":"2025-05-15T18:03:56.315Z","etag":null,"topics":["functional","javascript","utilities"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marpple.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-08-26T14:51:43.000Z","updated_at":"2025-05-15T14:50:14.000Z","dependencies_parsed_at":"2022-08-07T18:16:19.306Z","dependency_job_id":null,"html_url":"https://github.com/marpple/FxJS","commit_stats":null,"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marpple%2FFxJS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marpple%2FFxJS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marpple%2FFxJS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marpple%2FFxJS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marpple","download_url":"https://codeload.github.com/marpple/FxJS/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254394720,"owners_count":22063984,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["functional","javascript","utilities"],"created_at":"2025-02-06T20:28:15.709Z","updated_at":"2025-05-15T18:04:00.028Z","avatar_url":"https://github.com/marpple.png","language":"JavaScript","readme":"[EN](https://github.com/marpple/FxJS) | [KR](https://github.com/marpple/FxJS/blob/master/README_kr.md)\n\n# FxJS - Functional Extensions for Javascript\n\n![npm](https://img.shields.io/npm/v/fxjs)\n![npm bundle size](https://img.shields.io/bundlephobia/minzip/fxjs)\n![npm](https://img.shields.io/npm/dt/fxjs)\n![NPM](https://img.shields.io/npm/l/fxjs)\n\nFxJS is a functional Javascript library based on Iterable / Iterator, Generator, and Promise in ECMAScript 6.\n\n- [Getting Started](#getting-started)\n  - [Installation](#Installation)\n  - [Iteration protocols](#Iteration-protocols)\n  - [Iterable programming](#Iterable-programming)\n  - [Lazy evaluation](#Lazy-evaluation)\n  - [FRP style](#FRP-style)\n  - [Promise/async/await](#promiseasyncawait)\n  - [Concurrency](#Concurrency)\n  - [Error handling](#Error-handling)\n- [API](https://github.com/marpple/FxJS/blob/master/API.md#API)\n  - [Function](https://github.com/marpple/FxJS/blob/master/API.md#Function)\n  - [Strict](https://github.com/marpple/FxJS/blob/master/API.md#strict)\n  - [Predicates](https://github.com/marpple/FxJS/blob/master/API.md#Predicates)\n  - [Lazy](https://github.com/marpple/FxJS/blob/master/API.md#lazy)\n  - [Concurrency](https://github.com/marpple/FxJS/blob/master/API.md#concurrency)\n  - [Stoppable](https://github.com/marpple/FxJS/blob/master/API.md#stoppable)\n  - [String](https://github.com/marpple/FxJS/blob/master/API.md#String)\n- [Extension Libraries](#Extension-Libraries)\n  - [FxSQL](https://github.com/marpple/FxSQL)\n  - [FxDOM](https://github.com/marpple/FxDOM)\n\n## Getting Started\n\n### Installation\n#### In the browser environment\n- Modern Browser (\u003e= 2% and last 2 versions)\n  ```html\n  \u003cscript src=\"https://unpkg.com/fxjs/dist/fx.js\"\u003e\u003c/script\u003e\n  ```\n- Legacy Browser (IE11)\n  ```html\n  \u003cscript src=\"https://unpkg.com/fxjs/dist/fx.es5.js\"\u003e\u003c/script\u003e\n  ```\n- Usage\n  ```html\n  \u003cscript\u003e\n  const { L, C } = window._;\n  _.go(\n    [1, 2, 3],\n    L.map(a =\u003e a * a),\n    L.map(_.delay(300)),\n    C.takeAll,\n    _.reduce(_.add),\n    console.log\n  );\n  // '14' output after about 300 ms\n  \u003c/script\u003e\n  ```\n  **Note: When the browser loads the `fx.js` script file, `_` is used as a global variable.**\n\n#### In the node.js environment\n\nFxJS is a [Dual Module Package](https://nodejs.org/dist/latest-v14.x/docs/api/packages.html#packages_dual_commonjs_es_module_packages) that supports both CommonJS and ES6 Module.\nAmong the two module types of the fxjs package, commonjs support `node.js v6` or higher, and ESM is available from `node.js v12` or higher.\n\n```\nnpm install fxjs\n```\n- CommonJS (\u003e= node v6)\n  ```javascript\n  const FxJS = require(\"fxjs\");\n  const _ = require(\"fxjs/Strict\");\n  const L = require(\"fxjs/Lazy\");\n  const C = require(\"fxjs/Concurrency\");\n  \n  // The module object that exported as default has all the functions in fxjs, including Lazy and Concurrency.\n  const { reduce, mapL, takeAllC } = FxJS;\n  \n  // You can also import the functions individually.\n  const rangeL = require(\"fxjs/Lazy/rangeL\");\n  _.go(\n    rangeL(1, 4),\n    L.map(a =\u003e a * a),\n    L.map(_.delay(300)),\n    C.takeAll,\n    _.reduce(_.add),\n    console.log\n  );\n  ```\n- ES6 Module (\u003e= node v12)\n  ```javascript\n  import { add, delay, go, reduce, rangeL } from \"fxjs\";\n  import * as L from \"fxjs/Lazy\";\n  import * as C from \"fxjs/Concurrency\";\n  \n  go(\n    rangeL(1, 4),\n    L.map(a =\u003e a * a),\n    L.map(delay(300)),\n    C.takeAll,\n    reduce(add),\n    console.log\n  );\n  ```\n  \n  \n#### Dual Package Hazard\nFxJS adopted the [Isolate state](https://nodejs.org/dist/latest-v14.x/docs/api/packages.html#packages_approach_2_isolate_state) approach in two ways to support the Dual Module Package, which was introduced in the official Node.js document.\nTherefore, when using both CommonJS and ES modules, care must be taken to compare the equivalence of modules or function objects as shown below. For more information, see [Node.js Document](https://nodejs.org/dist/latest-v14.x/docs/api/packages.html#packages_dual_commonjs_es_module_packages).\n\n```javascript\nimport { createRequire } from \"module\";\nimport * as fxjs_mjs from \"fxjs\";\nimport go_mjs from \"fxjs/Strict/go.js\";\n\nconst require = createRequire(import.meta.url);\nconst fxjs_cjs = require('fxjs');\nconst go_cjs = require('fxjs/Strict/go');\n\nconsole.log(fxjs_mjs === fxjs_cjs); // false\nconsole.log(go_mjs === go_cjs); // false\nconsole.log(fxjs_cjs.go === go_cjs); // true\nconsole.log(fxjs_mjs.go === go_mjs); // true\n```\n\n### Iteration protocols\n\nYou can evaluate the iterator as a function of FxJS.\n\n```javascript\nfunction* fibonacci() {\n  let a = 0,\n    b = 1;\n  while (true) {\n    yield a;\n    [a, b] = [b, a + b];\n  }\n}\n\nconst f = pipe(\n  fibonacci,\n  L.filter((n) =\u003e n % 2 == 0),\n  L.takeWhile((n) =\u003e n \u003c 10)\n);\n\nconst iterator = f();\nconsole.log(iterator.next()); // { value: 0, done: false }\nconsole.log(iterator.next()); // { value: 2, done: false }\nconsole.log(iterator.next()); // { value: 8, done: false }\nconsole.log(iterator.next()); // { value: undefined, done: true }\n\nreduce((a, b) =\u003e a + b, f());\n// 10\n```\n\n### Iterable programming\n\nAny value can be used with FxJS if it has a `[Symbol.iterator]()` method.\n\n```javascript\nconst res = go(\n  [1, 2, 3, 4, 5],\n  filter((a) =\u003e a % 2),\n  reduce(add)\n);\n\nlog(res); // 9\n```\n\n### Lazy evaluation\n\nYou can do 'lazy evaluation' as a function of the `L` namespace.\n\n```javascript\nconst res = go(\n  L.range(Infinity),\n  L.filter((a) =\u003e a % 2),\n  L.take(3),\n  reduce(add)\n);\n\nlog(res); // 9\n```\n\n### FRP style\n\nFunctional reactive programming style.\n\n```javascript\ngo(\n  L.range(Infinity),\n  L.map(delay(1000)),\n  L.map((a) =\u003e a + 10),\n  L.take(3),\n  each(log)\n);\n// After 1 second 10\n// After 2 seconds 11\n// After 3 seconds 12\n```\n\n### Promise/async/await\n\nAsynchronous control is easy.\n\n```javascript\n// L.interval = time =\u003e L.map(delay(time), L.range(Infinity));\n\nawait go(\n  L.interval(1000),\n  L.map((a) =\u003e a + 30),\n  L.takeUntil((a) =\u003e a == 33),\n  each(log)\n);\n// After 1 second 30\n// After 2 seconds 31\n// After 3 seconds 32\n// After 4 seconds 33\n\nconst res = await go(\n  L.interval(1000),\n  L.map((a) =\u003e a + 20),\n  L.takeWhile((a) =\u003e a \u003c 23),\n  L.map(tap(log)),\n  reduce(add)\n);\n// After 5 seconds 20\n// After 6 seconds 21\n// After 7 seconds 22\n\nlog(res);\n// 63\n```\n\n### Concurrency\n\n`C` functions can be evaluated concurrency.\n\n```javascript\nawait map(getPage, range(1, 5));\n// After 4 seconds\n// [page1, page2, page3, page4]\n\nconst pages = await C.map(getPage, range(1, 5));\n// After 1 second\n// [page1, page2, page3, page4]\n```\n\nLike [Clojure Reducers](https://clojure.org/reference/reducers), you can handle concurrency.\n\n```javascript\ngo(\n  range(1, 5),\n  map(getPage),\n  filter((page) =\u003e page.line \u003e 50),\n  map(getWords),\n  flat,\n  countBy(identity),\n  log\n);\n// After 4 seconds\n// { html: 78, css: 36, is: 192 ... }\n\ngo(\n  L.range(1, 5),\n  L.map(getPage),\n  L.filter((page) =\u003e page.line \u003e 50),\n  L.map(getWords),\n  C.takeAll, // All requests same time.\n  flat,\n  countBy(identity),\n  log\n);\n// After 1 second\n// { html: 78, css: 36, is: 192 ... }\n\ngo(\n  L.range(1, 5),\n  L.map(getPage),\n  L.filter((page) =\u003e page.line \u003e 50),\n  L.map(getWords),\n  C.takeAll(2), // 2 requests same time.\n  flat,\n  countBy(identity),\n  log\n);\n// After 2 second\n// { html: 78, css: 36, is: 192 ... }\n```\n\n### Error handling\n\nYou can use JavaScript standard error handling.\n\n```javascript\nconst b = go(\n  0,\n  (a) =\u003e a + 1,\n  (a) =\u003e a + 10,\n  (a) =\u003e a + 100\n);\n\nconsole.log(b);\n// 111\n\ntry {\n  const b = go(\n    0,\n    (a) =\u003e {\n      throw { hi: \"ho\" };\n    },\n    (a) =\u003e a + 10,\n    (a) =\u003e a + 100\n  );\n\n  console.log(b);\n} catch (c) {\n  console.log(c);\n}\n// { hi: 'ho' }\n```\n\nYou can use async/await and try/catch to handle asynchronous error handling.\n\n```javascript\nconst b = await go(\n  0,\n  (a) =\u003e Promise.resolve(a + 1),\n  (a) =\u003e a + 10,\n  (a) =\u003e a + 100\n);\n\nconsole.log(b);\n// 111\n\ntry {\n  const b = await go(\n    0,\n    (a) =\u003e Promise.resolve(a + 1),\n    (a) =\u003e Promise.reject({ hi: \"ho\" }),\n    (a) =\u003e a + 100\n  );\n\n  console.log(b);\n} catch (c) {\n  console.log(c);\n}\n// { hi: 'ho' }\n```\n\n## API\n\n- [Function](https://github.com/marpple/FxJS/blob/master/API.md#Function)\n  - [apply](https://github.com/marpple/FxJS/blob/master/API.md#apply)\n  - [applyEach](https://github.com/marpple/FxJS/blob/master/API.md#applyEach)\n  - [applyMethod](https://github.com/marpple/FxJS/blob/master/API.md#applyMethod)\n  - [bindMethod](https://github.com/marpple/FxJS/blob/master/API.md#bindMethod)\n  - [call](https://github.com/marpple/FxJS/blob/master/API.md#call)\n  - [callEach](https://github.com/marpple/FxJS/blob/master/API.md#callEach)\n  - [callMethod](https://github.com/marpple/FxJS/blob/master/API.md#callMethod)\n  - [calls](https://github.com/marpple/FxJS/blob/master/API.md#calls)\n  - [constant](https://github.com/marpple/FxJS/blob/master/API.md#constant)\n  - [curry](https://github.com/marpple/FxJS/blob/master/API.md#curry)\n  - [curryN](https://github.com/marpple/FxJS/blob/master/API.md#currN)\n  - [debounce](https://github.com/marpple/FxJS/blob/master/API.md#debounce)\n  - [go](https://github.com/marpple/FxJS/blob/master/API.md#go)\n  - [juxt](https://github.com/marpple/FxJS/blob/master/API.md#juxt)\n  - [negate](https://github.com/marpple/FxJS/blob/master/API.md#negate)\n  - [once](https://github.com/marpple/FxJS/blob/master/API.md#once)\n  - [pipe](https://github.com/marpple/FxJS/blob/master/API.md#pipe)\n  - [tap](https://github.com/marpple/FxJS/blob/master/API.md#tap)\n  - [throttle](https://github.com/marpple/FxJS/blob/master/API.md#throttle)\n- [Strict](https://github.com/marpple/FxJS/blob/master/API.md#strict)\n  - [add](https://github.com/marpple/FxJS/blob/master/API.md#add)\n  - [append](https://github.com/marpple/FxJS/blob/master/API.md#append)\n  - [baseSel](https://github.com/marpple/FxJS/blob/master/API.md#baseSel)\n  - [chunk](https://github.com/marpple/FxJS/blob/master/API.md#chunk)\n  - [compact](https://github.com/marpple/FxJS/blob/master/API.md#compact)\n  - [countBy](https://github.com/marpple/FxJS/blob/master/API.md#countBy)\n  - [deepFlat](https://github.com/marpple/FxJS/blob/master/API.md#deepFlat)\n  - [defaults](https://github.com/marpple/FxJS/blob/master/API.md#defaults)\n  - [defaultTo](https://github.com/marpple/FxJS/blob/master/API.md#defaultTo)\n  - [delay](https://github.com/marpple/FxJS/blob/master/API.md#delay)\n  - [difference](https://github.com/marpple/FxJS/blob/master/API.md#difference)\n  - [differenceBy](https://github.com/marpple/FxJS/blob/master/API.md#differenceBy)\n  - [differenceWith](https://github.com/marpple/FxJS/blob/master/API.md#differenceWith)\n  - [divide](https://github.com/marpple/FxJS/blob/master/API.md#divide)\n  - [drop](https://github.com/marpple/FxJS/blob/master/API.md#drop)\n  - [dropRight](https://github.com/marpple/FxJS/blob/master/API.md#dropRight)\n  - [dropUntil](https://github.com/marpple/FxJS/blob/master/API.md#dropUntil)\n  - [dropWhile](https://github.com/marpple/FxJS/blob/master/API.md#dropWhile)\n  - [each](https://github.com/marpple/FxJS/blob/master/API.md#each)\n  - [entries](https://github.com/marpple/FxJS/blob/master/API.md#entries)\n  - [extend](https://github.com/marpple/FxJS/blob/master/API.md#extend)\n  - [filter](https://github.com/marpple/FxJS/blob/master/API.md#filter)\n  - [find](https://github.com/marpple/FxJS/blob/master/API.md#find)\n  - [findWhere](https://github.com/marpple/FxJS/blob/master/API.md#findWhere)\n  - [flat](https://github.com/marpple/FxJS/blob/master/API.md#flat)\n  - [flatMap](https://github.com/marpple/FxJS/blob/master/API.md#flatMap)\n  - [groupBy](https://github.com/marpple/FxJS/blob/master/API.md#groupBy)\n  - [head](https://github.com/marpple/FxJS/blob/master/API.md#head)\n  - [identity](https://github.com/marpple/FxJS/blob/master/API.md#identity)\n  - [indexBy](https://github.com/marpple/FxJS/blob/master/API.md#indexBy)\n  - [initial](https://github.com/marpple/FxJS/blob/master/API.md#initial)\n  - [insert](https://github.com/marpple/FxJS/blob/master/API.md#insert)\n  - [intersection](https://github.com/marpple/FxJS/blob/master/API.md#intersection)\n  - [intersectionBy](https://github.com/marpple/FxJS/blob/master/API.md#intersectionBy)\n  - [intersectionWith](https://github.com/marpple/FxJS/blob/master/API.md#intersectionWith)\n  - [join](https://github.com/marpple/FxJS/blob/master/API.md#join)\n  - [keys](https://github.com/marpple/FxJS/blob/master/API.md#keys)\n  - [last](https://github.com/marpple/FxJS/blob/master/API.md#last)\n  - [map](https://github.com/marpple/FxJS/blob/master/API.md#map)\n  - [mapEntries](https://github.com/marpple/FxJS/blob/master/API.md#mapEntries)\n  - [mapObject](https://github.com/marpple/FxJS/blob/master/API.md#mapObject)\n  - [max](https://github.com/marpple/FxJS/blob/master/API.md#max)\n  - [maxBy](https://github.com/marpple/FxJS/blob/master/API.md#maxBy)\n  - [mean](https://github.com/marpple/FxJS/blob/master/API.md#mean)\n  - [meanBy](https://github.com/marpple/FxJS/blob/master/API.md#meanBy)\n  - [min](https://github.com/marpple/FxJS/blob/master/API.md#min)\n  - [minBy](https://github.com/marpple/FxJS/blob/master/API.md#minBy)\n  - [multiply](https://github.com/marpple/FxJS/blob/master/API.md#multiply)\n  - [noop](https://github.com/marpple/FxJS/blob/master/API.md#noop)\n  - [object](https://github.com/marpple/FxJS/blob/master/API.md#object)\n  - [omit](https://github.com/marpple/FxJS/blob/master/API.md#omit)\n  - [omitBy](https://github.com/marpple/FxJS/blob/master/API.md#omitBy)\n  - [partition](https://github.com/marpple/FxJS/blob/master/API.md#partition)\n  - [pick](https://github.com/marpple/FxJS/blob/master/API.md#pick)\n  - [pickBy](https://github.com/marpple/FxJS/blob/master/API.md#pickBy)\n  - [pluck](https://github.com/marpple/FxJS/blob/master/API.md#pluck)\n  - [prepend](https://github.com/marpple/FxJS/blob/master/API.md#prepend)\n  - [promiseAllEntries](https://github.com/marpple/FxJS/blob/master/API.md#promiseAllEntries)\n  - [promiseAllObject](https://github.com/marpple/FxJS/blob/master/API.md#promiseAllObject)\n  - [range](https://github.com/marpple/FxJS/blob/master/API.md#range)\n  - [reduce](https://github.com/marpple/FxJS/blob/master/API.md#reduce)\n  - [reject](https://github.com/marpple/FxJS/blob/master/API.md#reject)\n  - [remove](https://github.com/marpple/FxJS/blob/master/API.md#remove)\n  - [repeat](https://github.com/marpple/FxJS/blob/master/API.md#repeat)\n  - [replace](https://github.com/marpple/FxJS/blob/master/API.md#replace)\n  - [sel](https://github.com/marpple/FxJS/blob/master/API.md#sel)\n  - [slice](https://github.com/marpple/FxJS/blob/master/API.md#slice)\n  - [sort](https://github.com/marpple/FxJS/blob/master/API.md#sort)\n  - [sortBy](https://github.com/marpple/FxJS/blob/master/API.md#sortBy)\n  - [sortByDesc](https://github.com/marpple/FxJS/blob/master/API.md#sortByDesc)\n  - [sortDesc](https://github.com/marpple/FxJS/blob/master/API.md#sortDesc)\n  - [split](https://github.com/marpple/FxJS/blob/master/API.md#split)\n  - [splitEvery](https://github.com/marpple/FxJS/blob/master/API.md#splitEvery)\n  - [subtract](https://github.com/marpple/FxJS/blob/master/API.md#subtract)\n  - [sum](https://github.com/marpple/FxJS/blob/master/API.md#sum)\n  - [sumBy](https://github.com/marpple/FxJS/blob/master/API.md#sumBy)\n  - [tail](https://github.com/marpple/FxJS/blob/master/API.md#tail-rest)\n  - [take](https://github.com/marpple/FxJS/blob/master/API.md#take)\n  - [take1](https://github.com/marpple/FxJS/blob/master/API.md#take1)\n  - [takeAll](https://github.com/marpple/FxJS/blob/master/API.md#takeAll)\n  - [takeUntil](https://github.com/marpple/FxJS/blob/master/API.md#takeUntil)\n  - [takeWhile](https://github.com/marpple/FxJS/blob/master/API.md#takeWhile)\n  - [times](https://github.com/marpple/FxJS/blob/master/API.md#times)\n  - [toIter](https://github.com/marpple/FxJS/blob/master/API.md#toIter)\n  - [union](https://github.com/marpple/FxJS/blob/master/API.md#union)\n  - [unionBy](https://github.com/marpple/FxJS/blob/master/API.md#unionBy)\n  - [unionWith](https://github.com/marpple/FxJS/blob/master/API.md#unionWith)\n  - [unique](https://github.com/marpple/FxJS/blob/master/API.md#unique)\n  - [uniqueBy](https://github.com/marpple/FxJS/blob/master/API.md#uniqueBy)\n  - [uniqueWith](https://github.com/marpple/FxJS/blob/master/API.md#uniqueWith)\n  - [unzip](https://github.com/marpple/FxJS/blob/master/API.md#unzip)\n  - [update](https://github.com/marpple/FxJS/blob/master/API.md#update)\n  - [updateBy](https://github.com/marpple/FxJS/blob/master/API.md#updateBy)\n  - [values](https://github.com/marpple/FxJS/blob/master/API.md#values)\n  - [zip](https://github.com/marpple/FxJS/blob/master/API.md#zip)\n  - [zipObj](https://github.com/marpple/FxJS/blob/master/API.md#zipObj)\n  - [zipWith](https://github.com/marpple/FxJS/blob/master/API.md#zipWith)\n- [Predicates](https://github.com/marpple/FxJS/blob/master/API.md#Predicates)\n  - [all](https://github.com/marpple/FxJS/blob/master/API.md#all)\n  - [and](https://github.com/marpple/FxJS/blob/master/API.md#and)\n  - [any](https://github.com/marpple/FxJS/blob/master/API.md#any)\n  - [both](https://github.com/marpple/FxJS/blob/master/API.md#both)\n  - [cond](https://github.com/marpple/FxJS/blob/master/API.md#cond)\n  - [either](https://github.com/marpple/FxJS/blob/master/API.md#either)\n  - [equals](https://github.com/marpple/FxJS/blob/master/API.md#equals)\n  - [equals2](https://github.com/marpple/FxJS/blob/master/API.md#equals2)\n  - [equalsBy](https://github.com/marpple/FxJS/blob/master/API.md#equalsBy)\n  - [equalsBy2](https://github.com/marpple/FxJS/blob/master/API.md#equalsBy2)\n  - [every](https://github.com/marpple/FxJS/blob/master/API.md#every)\n  - [gt](https://github.com/marpple/FxJS/blob/master/API.md#gt)\n  - [gte](https://github.com/marpple/FxJS/blob/master/API.md#gte)\n  - [has](https://github.com/marpple/FxJS/blob/master/API.md#has)\n  - [ifElse](https://github.com/marpple/FxJS/blob/master/API.md#ifElse)\n  - [isArray](https://github.com/marpple/FxJS/blob/master/API.md#isArray)\n  - [isFunction](https://github.com/marpple/FxJS/blob/master/API.md#isFunction)\n  - [isIterable](https://github.com/marpple/FxJS/blob/master/API.md#isIterable)\n  - [isMatch](https://github.com/marpple/FxJS/blob/master/API.md#isMatch)\n  - [isNil](https://github.com/marpple/FxJS/blob/master/API.md#isNil)\n  - [isNull](https://github.com/marpple/FxJS/blob/master/API.md#isNull)\n  - [isObject](https://github.com/marpple/FxJS/blob/master/API.md#isObject)\n  - [isString](https://github.com/marpple/FxJS/blob/master/API.md#isString)\n  - [isUndefined](https://github.com/marpple/FxJS/blob/master/API.md#isUndefined)\n  - [lt](https://github.com/marpple/FxJS/blob/master/API.md#lt)\n  - [lte](https://github.com/marpple/FxJS/blob/master/API.md#lte)\n  - [match](https://github.com/marpple/FxJS/blob/master/API.md#match)\n  - [not](https://github.com/marpple/FxJS/blob/master/API.md#not)\n  - [or](https://github.com/marpple/FxJS/blob/master/API.md#or)\n  - [satisfiesEvery](https://github.com/marpple/FxJS/blob/master/API.md#satisfiesEvery)\n  - [satisfiesSome](https://github.com/marpple/FxJS/blob/master/API.md#satisfiesSome)\n  - [selEquals](https://github.com/marpple/FxJS/blob/master/API.md#selEquals)\n  - [selSatisfies](https://github.com/marpple/FxJS/blob/master/API.md#selSatisfies)\n  - [some](https://github.com/marpple/FxJS/blob/master/API.md#some)\n  - [unless](https://github.com/marpple/FxJS/blob/master/API.md#unless)\n  - [when](https://github.com/marpple/FxJS/blob/master/API.md#when)\n- [Lazy](https://github.com/marpple/FxJS/blob/master/API.md#lazy)\n  - [L.append](https://github.com/marpple/FxJS/blob/master/API.md#Lappend)\n  - [L.chunk](https://github.com/marpple/FxJS/blob/master/API.md#Lchunk)\n  - [L.compact](https://github.com/marpple/FxJS/blob/master/API.md#Lcompact)\n  - [L.concat](https://github.com/marpple/FxJS/blob/master/API.md#Lconcat)\n  - [L.constant](https://github.com/marpple/FxJS/blob/master/API.md#Lconstant)\n  - [L.deepFlat](https://github.com/marpple/FxJS/blob/master/API.md#LdeepFlat)\n  - [L.difference](https://github.com/marpple/FxJS/blob/master/API.md#Ldifference)\n  - [L.differenceBy](https://github.com/marpple/FxJS/blob/master/API.md#LdifferenceBy)\n  - [L.differenceWith](https://github.com/marpple/FxJS/blob/master/API.md#LdifferenceWith)\n  - [L.drop](https://github.com/marpple/FxJS/blob/master/API.md#Ldrop)\n  - [L.dropUntil](https://github.com/marpple/FxJS/blob/master/API.md#LdropUntil)\n  - [L.dropWhile](https://github.com/marpple/FxJS/blob/master/API.md#LdropWhile)\n  - [L.empty](https://github.com/marpple/FxJS/blob/master/API.md#Lempty)\n  - [L.entries](https://github.com/marpple/FxJS/blob/master/API.md#Lentries)\n  - [L.filter](https://github.com/marpple/FxJS/blob/master/API.md#Lfilter)\n  - [L.flat](https://github.com/marpple/FxJS/blob/master/API.md#Lflat)\n  - [L.flatMap](https://github.com/marpple/FxJS/blob/master/API.md#LflatMap)\n  - [L.insert](https://github.com/marpple/FxJS/blob/master/API.md#Linsert)\n  - [L.intersection](https://github.com/marpple/FxJS/blob/master/API.md#Lintersection)\n  - [L.intersectionBy](https://github.com/marpple/FxJS/blob/master/API.md#LintersectionBy)\n  - [L.intersectionWith](https://github.com/marpple/FxJS/blob/master/API.md#LintersectionWith)\n  - [L.interval](https://github.com/marpple/FxJS/blob/master/API.md#Linterval)\n  - [L.keys](https://github.com/marpple/FxJS/blob/master/API.md#Lkeys)\n  - [L.limitLoad](https://github.com/marpple/FxJS/blob/master/API.md#LlimitLoad)\n  - [L.map](https://github.com/marpple/FxJS/blob/master/API.md#Lmap)\n  - [L.mapEntries](https://github.com/marpple/FxJS/blob/master/API.md#LmapEntries)\n  - [L.prepend](https://github.com/marpple/FxJS/blob/master/API.md#Lprepend)\n  - [L.range](https://github.com/marpple/FxJS/blob/master/API.md#Lrange)\n  - [L.reject](https://github.com/marpple/FxJS/blob/master/API.md#Lreject)\n  - [L.remove](https://github.com/marpple/FxJS/blob/master/API.md#Lremove)\n  - [L.repeat](https://github.com/marpple/FxJS/blob/master/API.md#Lrepeat)\n  - [L.reverse](https://github.com/marpple/FxJS/blob/master/API.md#Lreverse)\n  - [L.slice](https://github.com/marpple/FxJS/blob/master/API.md#Lslice)\n  - [L.splitEvery](https://github.com/marpple/FxJS/blob/master/API.md#LsplitEvery)\n  - [L.take](https://github.com/marpple/FxJS/blob/master/API.md#Ltake)\n  - [L.takeUntil](https://github.com/marpple/FxJS/blob/master/API.md#LtakeUntil)\n  - [L.takeWhile](https://github.com/marpple/FxJS/blob/master/API.md#LtakeWhile)\n  - [L.times](https://github.com/marpple/FxJS/blob/master/API.md#Ltimes)\n  - [L.union](https://github.com/marpple/FxJS/blob/master/API.md#Lunion)\n  - [L.unionBy](https://github.com/marpple/FxJS/blob/master/API.md#LunionBy)\n  - [L.unionWith](https://github.com/marpple/FxJS/blob/master/API.md#LunionWith)\n  - [L.unique](https://github.com/marpple/FxJS/blob/master/API.md#Lunique)\n  - [L.uniqueBy](https://github.com/marpple/FxJS/blob/master/API.md#LuniqueBy)\n  - [L.uniqueWith](https://github.com/marpple/FxJS/blob/master/API.md#LuniqueWith)\n  - [L.update](https://github.com/marpple/FxJS/blob/master/API.md#Lupdate)\n  - [L.updateBy](https://github.com/marpple/FxJS/blob/master/API.md#LupdateBy)\n  - [L.values](https://github.com/marpple/FxJS/blob/master/API.md#Lvalues)\n  - [L.zip](https://github.com/marpple/FxJS/blob/master/API.md#Lzip)\n  - [L.zipWithIndex](https://github.com/marpple/FxJS/blob/master/API.md#LzipWithIndex)\n- [Concurrency](https://github.com/marpple/FxJS/blob/master/API.md#concurrency)\n  - [C.calls](https://github.com/marpple/FxJS/blob/master/API.md#Ccalls)\n  - [C.compact](https://github.com/marpple/FxJS/blob/master/API.md#Ccompact)\n  - [C.drop](https://github.com/marpple/FxJS/blob/master/API.md#Cdrop)\n  - [C.every](https://github.com/marpple/FxJS/blob/master/API.md#Cevery)\n  - [C.filter](https://github.com/marpple/FxJS/blob/master/API.md#Cfilter)\n  - [C.find](https://github.com/marpple/FxJS/blob/master/API.md#Cfind)\n  - [C.head](https://github.com/marpple/FxJS/blob/master/API.md#Chead)\n  - [C.map](https://github.com/marpple/FxJS/blob/master/API.md#Cmap)\n  - [C.mapEntries](https://github.com/marpple/FxJS/blob/master/API.md#CmapEntries)\n  - [C.object](https://github.com/marpple/FxJS/blob/master/API.md#Cobject)\n  - [C.race](https://github.com/marpple/FxJS/blob/master/API.md#Crace)\n  - [C.reduce](https://github.com/marpple/FxJS/blob/master/API.md#Creduce)\n  - [C.some](https://github.com/marpple/FxJS/blob/master/API.md#Csome)\n  - [C.tail](https://github.com/marpple/FxJS/blob/master/API.md#Ctail)\n  - [C.take](https://github.com/marpple/FxJS/blob/master/API.md#Ctake)\n  - [C.take1](https://github.com/marpple/FxJS/blob/master/API.md#Ctake1)\n  - [C.takeAll](https://github.com/marpple/FxJS/blob/master/API.md#CtakeAll)\n  - [C.takeRace](https://github.com/marpple/FxJS/blob/master/API.md#CtakeRace)\n- [Stoppable](https://github.com/marpple/FxJS/blob/master/API.md#stoppable)\n  - [reduceS, stop](https://github.com/marpple/FxJS/blob/master/API.md#reduces-stop)\n  - [goS, pipeS, stop, stopIf](https://github.com/marpple/FxJS/blob/master/API.md#gos-pipes-stop-stopif)\n- [String](https://github.com/marpple/FxJS/blob/master/API.md#String)\n  - [html](https://github.com/marpple/FxJS/blob/master/API.md#html)\n  - [join](https://github.com/marpple/FxJS/blob/master/API.md#join)\n  - [strMap](https://github.com/marpple/FxJS/blob/master/API.md#strMap)\n  - [string](https://github.com/marpple/FxJS/blob/master/API.md#string)\n\n## Extension Libraries\n\n- [FxSQL](https://github.com/marpple/FxSQL)\n- [FxDOM](https://github.com/marpple/FxDOM)\n\nThe above libraries are based on FxJS.\nFxSQL and FxDOM are libraries that can handle SQL and DOM through functional APIs,respectively.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarpple%2Ffxjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarpple%2Ffxjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarpple%2Ffxjs/lists"}