├── .gitignore ├── 01. 이터러블 프로그래밍 혹은 리스트 프로세싱 └── 1.html ├── 02. 명령형 습관 지우기 └── 1.html ├── 03. 안전한 합성에 대해 └── 1.html ├── 04. 객체를 이터러블 프로그래밍으로 다루기 └── 1.html ├── 05. 사용자 정의 객체를 이터러블 프로그래밍으로 다루기 └── 1.html ├── 06. 시간을 이터러블로 다루기 └── 1.html ├── 07. 프론트엔드에서 함수형 이터러블 동시성 프로그래밍 └── 1.html ├── README.md └── fx.js /.gitignore: -------------------------------------------------------------------------------- 1 | *.xml 2 | *.iml -------------------------------------------------------------------------------- /01. 이터러블 프로그래밍 혹은 리스트 프로세싱/1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 01/1 6 | 7 | 8 | 9 | 10 | # 함수형 프로그래밍과 JavaScript ES6+ 응용편 11 | 12 | ## 이터러블 프로그래밍 혹은 리스트 프로세싱 (Lisp) 13 | 14 | 1. 홀수 n개 더하기 15 | 16 | 30 | 31 | 2. if를 filter로 32 | 3. 값 변화 후 변수 할당을 map으로 33 | 4. break를 take로 34 | 5. 축약 및 합산을 reduce로 35 | 36 | 50 | 51 | 6. while을 range로 52 | 7. 효과를 each로 구분 53 | 54 | 73 | 74 | 8. 추억의 별 그리기, 구구단 75 | 76 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /02. 명령형 습관 지우기/1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 02/1 6 | 7 | 8 | 9 | 10 | ## 명령형 습관 지우기 - 만능 reduce? No! 11 | 12 | 1. reduce + 복잡한 함수 + acc 보다 map + 간단한 함수 + reduce 13 | 14 | 34 | 35 | 2. reduce 하나 보다 map + filter + reduce 36 | 37 | 55 | 56 | 3. query 57 | 58 | 115 | 116 | 4. queryToObject 117 | 118 | 129 | 130 | 131 | 132 | -------------------------------------------------------------------------------- /03. 안전한 합성에 대해/1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 03/1 6 | 7 | 8 | 9 | 10 | ## 안전한 합성에 대해 11 | 12 | 1. map으로 합성하기 13 | 14 | 36 | 37 | 2. find 대신 L.filter 써보기 38 | 39 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /04. 객체를 이터러블 프로그래밍으로 다루기/1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 04/1 6 | 7 | 8 | 9 | 10 | ## 객체를 이터러블 프로그래밍으로 다루기 11 | 12 | 20 | 21 | 1. values 22 | 23 | 42 | 43 | 2. entries 44 | 45 | 62 | 63 | 3. keys 64 | 65 | 79 | 80 | 4. 어떠한 값이든 이터러블 프로그래밍으로 다루기 81 | - 이터러블로 이터러블 프로그래밍 82 | - 객체를 제너레이터를 이용해서 이터레이터로 만들어서 이터러블 프로그래밍 83 | - 어떤 제너레이터든 이터레이터로 만들어서 이터러블 프로그래밍 84 | 85 | 106 | 107 | 5. object 108 | 109 | 131 | 132 | 6. mapObject 133 | 134 | 148 | 149 | 7. pick 150 | 151 | 164 | 165 | 8. indexBy 166 | 167 | 184 | 185 | 9. indexBy 된 값을 filter 하기 186 | 187 | 198 | 199 | 200 | -------------------------------------------------------------------------------- /05. 사용자 정의 객체를 이터러블 프로그래밍으로 다루기/1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 05/1 6 | 7 | 8 | 9 | 10 | ## 사용자 정의 객체를 이터러블 프로그래밍으로 다루기 11 | 12 | 1. Map, Set 13 | 14 | 37 | 38 | 2. Model, Collection 39 | 40 | 87 | 88 | 3. Product, Products 89 | 90 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /06. 시간을 이터러블로 다루기/1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 06/1 6 | 7 | 8 | 9 | 10 | ## 시간을 이터러블로 다루기 11 | 12 | 1. range와 take의 재해석 13 | 14 | 30 | 31 | 2. takeWhile, takeUntil 32 | 33 | 51 | 52 | 3. 할 일들을 이터러블(리스트)로 바라보기 53 | 54 | 76 | 77 | 4. 아임포트 결제 누락 스케쥴러 만들기 78 | 79 | 153 | 154 | 155 | -------------------------------------------------------------------------------- /07. 프론트엔드에서 함수형 이터러블 동시성 프로그래밍/1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 07/1 6 | 7 | 110 | 111 | 112 | 113 |
114 | ## 프론트엔드에서 함수형/이터러블/동시성 프로그래밍 115 | 116 | 1. ES6 템플릿 리터럴 활용 117 | 118 | 2. 이미지 목록 그리기 119 | 120 | 3. 경고창 만들기 121 | - confirm 122 | - Promise 활용 123 | - alert 124 | - 중복 제거 125 | 126 | 5. 이미지 동시성 다루기 127 | 128 | 6. 페이지 띄우기 129 |
130 | 131 | 136 | 137 | 163 | 164 | 214 | 215 | 270 | 271 | 272 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 함수형 프로그래밍과 Javascript ES6+ 응용편 2 | 3 | ## 강의 링크 4 | - [영상 강의 보러 가기](https://www.inflearn.com/course/함수형_ES6_응용편) 5 | 6 | ## 강의 목록 7 | 8 | 1. 이터러블 프로그래밍 혹은 리스트 프로세싱 (Lisp) 9 | 1. 들어가며 10 | 2. 홀수 n개 더하기 11 | 3. if를 filter로 12 | 4. 값 변화 후 변수 할당을 map으로 13 | 5. break를 take로 14 | 6. 축약 및 합산을 reduce로 15 | 7. while을 range로 16 | 8. 효과를 each로 구분 17 | 9. 추억의 별 그리기 18 | 10. 추억의 구구단 19 | 2. 명령형 습관 지우기 - 만능 reduce? No! 20 | 1. reduce + 복잡한 함수 + acc 보다 map + 간단한 함수 + reduce 21 | 2. reduce 하나 보다 map + filter + reduce 22 | 3. query, queryToObject 23 | 3. 안전한 합성에 대해 24 | 1. map으로 합성하기 25 | 2. find 대신 L.filter 써보기 26 | 4. 객체를 이터러블 프로그래밍으로 다루기 27 | 1. values 28 | 2. entries 29 | 3. keys 30 | 4. 어떠한 값이든 이터러블 프로그래밍으로 다루기 31 | 5. object 32 | 6. mapObject 33 | 7. pick 34 | 8. indexBy 35 | 9. indexBy 된 값을 filter 하기 36 | 5. 객체지향과 함께 사용하기 - 사용자 정의 객체를 이터러블 프로그래밍으로 37 | 1. Map, Set, NodeList 38 | 2. Model, Collection 클래스 만들어서 이터러블 프로토콜 지원하기 39 | 3. Product, Products - 메서드를 함수형으로 구현하기 40 | 6. 시간을 이터러블로 다루기 41 | 1. range와 take의 재해석 42 | 2. takeWhile, takeUntil 43 | 3. 자동차 경주 - 할 일들을 이터러블(리스트)로 바라보기 44 | 4. 아임포트 결제 누락 처리 스케쥴러 - API 설명 45 | 5. 아임포트 결제 누락 처리 스케쥴러 - 결제된 내역 가져오기 46 | 6. 아임포트 결제 누락 처리 스케쥴러 - 가맹점 DB의 주문서 가져오기 47 | 7. 아임포트 결제 누락 처리 스케쥴러 - 비교 후 결제 취소 API 실행하기 48 | 8. 아임포트 결제 누락 처리 스케쥴러 - 반복 실행하기 49 | 7. 프론트엔드에서 함수형/이터러블/동시성 프로그래밍 50 | 1. ES6 템플릿 리터럴 활용 51 | 2. 이미지 목록 그리기 52 | 3. 아이템 지우기 53 | 4. 커스텀 confirm 창과 Promise 54 | 5. 클래스를 대신 함수로 하는 추상화 55 | 6. 이미지 동시성 다루기 56 | 7. 동시성 부하 조절 57 | 8. 고차 함수로 더 작게 나누어 재사용성 높이기 - 데이터형 없애기 58 | 9. 상위 스코프 변수를 사용하는 함수와 아닌 함수들 쪼개기 59 | 10. DOM을 다루는 고차 함수 -------------------------------------------------------------------------------- /fx.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | /******/ 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | /******/ 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) { 10 | /******/ return installedModules[moduleId].exports; 11 | /******/ } 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ i: moduleId, 15 | /******/ l: false, 16 | /******/ exports: {} 17 | /******/ }; 18 | /******/ 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | /******/ 22 | /******/ // Flag the module as loaded 23 | /******/ module.l = true; 24 | /******/ 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | /******/ 29 | /******/ 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | /******/ 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | /******/ 36 | /******/ // define getter function for harmony exports 37 | /******/ __webpack_require__.d = function(exports, name, getter) { 38 | /******/ if(!__webpack_require__.o(exports, name)) { 39 | /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 40 | /******/ } 41 | /******/ }; 42 | /******/ 43 | /******/ // define __esModule on exports 44 | /******/ __webpack_require__.r = function(exports) { 45 | /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 46 | /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 47 | /******/ } 48 | /******/ Object.defineProperty(exports, '__esModule', { value: true }); 49 | /******/ }; 50 | /******/ 51 | /******/ // create a fake namespace object 52 | /******/ // mode & 1: value is a module id, require it 53 | /******/ // mode & 2: merge all properties of value into the ns 54 | /******/ // mode & 4: return value when already ns object 55 | /******/ // mode & 8|1: behave like require 56 | /******/ __webpack_require__.t = function(value, mode) { 57 | /******/ if(mode & 1) value = __webpack_require__(value); 58 | /******/ if(mode & 8) return value; 59 | /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 60 | /******/ var ns = Object.create(null); 61 | /******/ __webpack_require__.r(ns); 62 | /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 63 | /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 64 | /******/ return ns; 65 | /******/ }; 66 | /******/ 67 | /******/ // getDefaultExport function for compatibility with non-harmony modules 68 | /******/ __webpack_require__.n = function(module) { 69 | /******/ var getter = module && module.__esModule ? 70 | /******/ function getDefault() { return module['default']; } : 71 | /******/ function getModuleExports() { return module; }; 72 | /******/ __webpack_require__.d(getter, 'a', getter); 73 | /******/ return getter; 74 | /******/ }; 75 | /******/ 76 | /******/ // Object.prototype.hasOwnProperty.call 77 | /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 78 | /******/ 79 | /******/ // __webpack_public_path__ 80 | /******/ __webpack_require__.p = ""; 81 | /******/ 82 | /******/ 83 | /******/ // Load entry module and return exports 84 | /******/ return __webpack_require__(__webpack_require__.s = 0); 85 | /******/ }) 86 | /************************************************************************/ 87 | /******/ ([ 88 | /* 0 */ 89 | /***/ (function(module, __webpack_exports__, __webpack_require__) { 90 | 91 | "use strict"; 92 | __webpack_require__.r(__webpack_exports__); 93 | var L_namespaceObject = {}; 94 | __webpack_require__.r(L_namespaceObject); 95 | __webpack_require__.d(L_namespaceObject, "L", function() { return L; }); 96 | __webpack_require__.d(L_namespaceObject, "deepFlatLazy", function() { return deepFlatLazy; }); 97 | __webpack_require__.d(L_namespaceObject, "entriesLazy", function() { return entriesLazy; }); 98 | __webpack_require__.d(L_namespaceObject, "mapEntriesLazy", function() { return Lazy_mapEntriesLazy; }); 99 | __webpack_require__.d(L_namespaceObject, "filterLazy", function() { return Lazy_filterLazy; }); 100 | __webpack_require__.d(L_namespaceObject, "flatLazy", function() { return flatLazy; }); 101 | __webpack_require__.d(L_namespaceObject, "flatMapLazy", function() { return Lazy_flatMapLazy; }); 102 | __webpack_require__.d(L_namespaceObject, "headTailLazy", function() { return headTailLazy; }); 103 | __webpack_require__.d(L_namespaceObject, "indexValuesLazy", function() { return indexValuesLazy; }); 104 | __webpack_require__.d(L_namespaceObject, "keysLazy", function() { return keysLazy; }); 105 | __webpack_require__.d(L_namespaceObject, "mapLazy", function() { return Lazy_mapLazy; }); 106 | __webpack_require__.d(L_namespaceObject, "rangeLazy", function() { return rangeLazy; }); 107 | __webpack_require__.d(L_namespaceObject, "rejectLazy", function() { return Lazy_rejectLazy; }); 108 | __webpack_require__.d(L_namespaceObject, "reverseLazy", function() { return reverseLazy; }); 109 | __webpack_require__.d(L_namespaceObject, "valuesLazy", function() { return valuesLazy; }); 110 | __webpack_require__.d(L_namespaceObject, "takeLazy", function() { return Lazy_takeLazy; }); 111 | __webpack_require__.d(L_namespaceObject, "takeWhileLazy", function() { return Lazy_takeWhileLazy; }); 112 | __webpack_require__.d(L_namespaceObject, "takeUntilLazy", function() { return Lazy_takeUntilLazy; }); 113 | __webpack_require__.d(L_namespaceObject, "intervalLazy", function() { return intervalLazy; }); 114 | __webpack_require__.d(L_namespaceObject, "dropLazy", function() { return Lazy_dropLazy; }); 115 | var C_namespaceObject = {}; 116 | __webpack_require__.r(C_namespaceObject); 117 | __webpack_require__.d(C_namespaceObject, "C", function() { return C; }); 118 | __webpack_require__.d(C_namespaceObject, "tailC", function() { return tailC; }); 119 | __webpack_require__.d(C_namespaceObject, "reduceC", function() { return Concurrency_reduceC; }); 120 | __webpack_require__.d(C_namespaceObject, "takeC", function() { return Concurrency_takeC; }); 121 | __webpack_require__.d(C_namespaceObject, "mapEntriesC", function() { return Concurrency_mapEntriesC; }); 122 | __webpack_require__.d(C_namespaceObject, "findC", function() { return Concurrency_findC; }); 123 | __webpack_require__.d(C_namespaceObject, "mapC", function() { return Concurrency_mapC; }); 124 | __webpack_require__.d(C_namespaceObject, "everyC", function() { return Concurrency_everyC; }); 125 | __webpack_require__.d(C_namespaceObject, "filterC", function() { return Concurrency_filterC; }); 126 | __webpack_require__.d(C_namespaceObject, "takeAllC", function() { return takeAllC; }); 127 | __webpack_require__.d(C_namespaceObject, "headC", function() { return headC; }); 128 | __webpack_require__.d(C_namespaceObject, "take1C", function() { return take1C; }); 129 | __webpack_require__.d(C_namespaceObject, "callsC", function() { return callsC; }); 130 | __webpack_require__.d(C_namespaceObject, "someC", function() { return Concurrency_someC; }); 131 | __webpack_require__.d(C_namespaceObject, "dropC", function() { return Concurrency_dropC; }); 132 | 133 | // CONCATENATED MODULE: ./curry.js 134 | function curry(f) { 135 | return (a, ..._) => _.length < 1 ? (..._) => f(a, ..._) : f(a, ..._); 136 | } 137 | // CONCATENATED MODULE: ./empty.js 138 | /* harmony default export */ var empty = (function *() {} ()); 139 | 140 | // CONCATENATED MODULE: ./toIter.js 141 | 142 | 143 | function toIter(iterable) { 144 | return iterable && iterable[Symbol.iterator] ? iterable[Symbol.iterator]() : empty; 145 | } 146 | // CONCATENATED MODULE: ./nop.js 147 | const nop = Symbol.for('nop'); 148 | 149 | /* harmony default export */ var nop_0 = (nop); 150 | // CONCATENATED MODULE: ./go1.js 151 | function go1(a, f) { 152 | return a instanceof Promise ? a.then(f) : f(a); 153 | } 154 | // CONCATENATED MODULE: ./take.js 155 | 156 | 157 | 158 | 159 | /* harmony default export */ var take_0 = (curry(function take(l, iter) { 160 | if (l < 1) return []; 161 | let res = []; 162 | iter = toIter(iter); 163 | return function recur() { 164 | let cur; 165 | while (!(cur = iter.next()).done) { 166 | const a = cur.value; 167 | if (a instanceof Promise) { 168 | return a 169 | .then(a => (res.push(a), res).length == l ? res : recur()) 170 | .catch(e => e == nop_0 ? recur() : Promise.reject(e)); 171 | } 172 | res.push(a); 173 | if (res.length == l) return res; 174 | } 175 | return res; 176 | } (); 177 | })); 178 | // CONCATENATED MODULE: ./head.js 179 | 180 | 181 | 182 | function head(iter) { 183 | return go1(take_0(1, iter), ([h]) => h); 184 | } 185 | // CONCATENATED MODULE: ./reduce.js 186 | 187 | 188 | 189 | 190 | 191 | const call2 = (acc, a, f) => 192 | a instanceof Promise ? 193 | a.then(a => f(acc, a), e => e == nop_0 ? acc : Promise.reject(e)) : 194 | f(acc, a); 195 | 196 | function reduce(f, acc, iter) { 197 | if (arguments.length == 1) return (..._) => reduce(f, ..._); 198 | if (arguments.length == 2) return reduce(f, head(iter = toIter(acc)), iter); 199 | 200 | iter = toIter(iter); 201 | return go1(acc, function recur(acc) { 202 | let cur; 203 | while (!(cur = iter.next()).done) { 204 | acc = call2(acc, cur.value, f); 205 | if (acc instanceof Promise) return acc.then(recur); 206 | } 207 | return acc; 208 | }); 209 | } 210 | // CONCATENATED MODULE: ./minBy.js 211 | 212 | 213 | 214 | /* harmony default export */ var minBy_0 = (curry(function minBy(f, iter) { 215 | return reduce((a, b) => f(a) <= f(b) ? a : b, iter); 216 | })); 217 | // CONCATENATED MODULE: ./call.js 218 | function call(a, f) { 219 | return f(a); 220 | } 221 | // CONCATENATED MODULE: ./pipe.js 222 | 223 | 224 | 225 | function pipe(f, ...fs) { 226 | return (...as) => reduce(call, f(...as), fs); 227 | } 228 | // CONCATENATED MODULE: ./isArray.js 229 | const { isArray } = Array; 230 | 231 | /* harmony default export */ var isArray_0 = (isArray); 232 | // CONCATENATED MODULE: ./baseSortBy.js 233 | 234 | 235 | 236 | const arrComparator = (arr) => (a, b) => { 237 | let i = -1; 238 | while (++i < arr.length) { 239 | const ai = a[arr[i]], bi = b[arr[i]]; 240 | if (ai === bi) continue; 241 | return ai < bi ? -1 : 1; 242 | } 243 | return 0; 244 | }; 245 | 246 | function baseSortBy(left, right, f, arr) { 247 | return isArray_0(f) ? baseSortBy(left, right, arrComparator(f), arr) : 248 | typeof f == 'string' ? baseSortBy(left, right, a => a[f], arr) : 249 | f.length == 2 ? [...arr].sort(right == -1 ? pipe(f, n => n * -1) : f) : 250 | [...arr].sort((a, b, fa = f(a), fb = f(b)) => fa == fb ? 0 : fa < fb ? left : right) 251 | } 252 | // CONCATENATED MODULE: ./sortByDesc.js 253 | 254 | 255 | 256 | /* harmony default export */ var sortByDesc_0 = (curry(function sortByDesc(f, arr) { 257 | return baseSortBy(1, -1, f, arr); 258 | })); 259 | // CONCATENATED MODULE: ./sortDesc.js 260 | 261 | 262 | function sort(arr) { 263 | return sortByDesc_0(a => a, arr); 264 | } 265 | // CONCATENATED MODULE: ./go.js 266 | 267 | 268 | 269 | function go(..._) { 270 | return reduce(call, _); 271 | } 272 | // CONCATENATED MODULE: ./isStop.js 273 | const SymbolStop = Symbol.for('stop'); 274 | 275 | function isStop(a) { 276 | return !!(a && a[SymbolStop]); 277 | } 278 | // CONCATENATED MODULE: ./reduceS.js 279 | 280 | 281 | 282 | 283 | 284 | 285 | const reduceS_call2 = (acc, a, f) => 286 | a instanceof Promise ? 287 | a.then(a => f(acc, a), e => e == nop_0 ? acc : Promise.reject(e)) : 288 | f(acc, a); 289 | 290 | function reduceS(f, acc, iter) { 291 | if (arguments.length == 1) return (..._) => reduceS(f, ..._); 292 | if (arguments.length == 2) return reduceS(f, head(iter = toIter(acc)), iter); 293 | 294 | iter = toIter(iter); 295 | return go1(acc, function recur(acc) { 296 | let cur; 297 | while (!isStop(acc) && !(cur = iter.next()).done) { 298 | acc = reduceS_call2(acc, cur.value, f); 299 | if (acc instanceof Promise) return acc.then(recur); 300 | } 301 | return isStop(acc) ? acc.value : acc; 302 | }); 303 | } 304 | // CONCATENATED MODULE: ./goS.js 305 | 306 | 307 | 308 | function goS(..._) { 309 | return reduceS(call, _); 310 | } 311 | // CONCATENATED MODULE: ./identity.js 312 | /* harmony default export */ var identity = (a => a); 313 | // CONCATENATED MODULE: ./stop.js 314 | const stop_SymbolStop = Symbol.for('stop'); 315 | 316 | function stop(value) { 317 | return { [stop_SymbolStop]: true, value }; 318 | } 319 | // CONCATENATED MODULE: ./Lazy/valuesLazy.js 320 | function *valuesLazy(obj) { 321 | for (const k in obj) yield obj[k]; 322 | } 323 | // CONCATENATED MODULE: ./takeAll.js 324 | 325 | 326 | function takeAll(iter) { 327 | return take_0(Infinity, iter); 328 | } 329 | // CONCATENATED MODULE: ./values.js 330 | 331 | 332 | 333 | function values(a) { 334 | return takeAll(valuesLazy(a)); 335 | } 336 | // CONCATENATED MODULE: ./safety.js 337 | 338 | 339 | function safety(a) { 340 | return a != null && !!a[Symbol.iterator] ? a : empty; 341 | } 342 | // CONCATENATED MODULE: ./Lazy/filterLazy.js 343 | 344 | 345 | 346 | 347 | 348 | /* harmony default export */ var Lazy_filterLazy = (curry(function *filterLazy(f, iter) { 349 | for (const a of safety(iter)) { 350 | const b = go1(a, f); 351 | if (b instanceof Promise) yield b.then(b => b ? a : Promise.reject(nop_0)); 352 | else if (b) yield a; 353 | } 354 | })); 355 | // CONCATENATED MODULE: ./find.js 356 | 357 | 358 | 359 | 360 | /* harmony default export */ var find_0 = (curry(function find(f, iter) { 361 | return head(Lazy_filterLazy(f, iter)); 362 | })); 363 | // CONCATENATED MODULE: ./not.js 364 | function not(a) { 365 | return !a; 366 | } 367 | // CONCATENATED MODULE: ./Lazy/rejectLazy.js 368 | 369 | 370 | 371 | 372 | 373 | /* harmony default export */ var Lazy_rejectLazy = (curry(function rejectLazy(f, iter) { 374 | return Lazy_filterLazy(a => go1(f(a), not), iter); 375 | })); 376 | // CONCATENATED MODULE: ./take1.js 377 | 378 | 379 | const take1 = take_0(1); 380 | 381 | /* harmony default export */ var take1_0 = (take1); 382 | // CONCATENATED MODULE: ./every.js 383 | 384 | 385 | 386 | 387 | 388 | /* harmony default export */ var every_0 = (curry(function every(f, iter) { 389 | return go1(take1_0(Lazy_rejectLazy(f, iter)), ({length}) => length == 0); 390 | })); 391 | // CONCATENATED MODULE: ./Lazy/entriesLazy.js 392 | function *entriesLazy(obj) { 393 | for (const k in obj) yield [k, obj[k]]; 394 | } 395 | // CONCATENATED MODULE: ./isMatch.js 396 | 397 | 398 | 399 | 400 | 401 | /* harmony default export */ var isMatch_0 = (curry(function isMatch(a, b) { 402 | return ( 403 | typeof a == 'function' ? !!a(b) 404 | : 405 | isArray_0(a) && isArray_0(b) ? every_0(v => b.includes(v), a) 406 | : 407 | typeof b == 'object' ? every_0(([k, v]) => b[k] == v, entriesLazy(a)) 408 | : 409 | a instanceof RegExp ? b.match(a) 410 | : 411 | a == b 412 | ); 413 | })); 414 | // CONCATENATED MODULE: ./match.js 415 | 416 | 417 | 418 | 419 | 420 | 421 | function baseMatch(targets) { 422 | var cbs = []; 423 | 424 | function evl() { 425 | return go( 426 | targets, 427 | values, 428 | targets => 429 | go(cbs, 430 | find_0(pb => { return pb._case(...targets); }), 431 | pb => pb._body(...targets))); 432 | } 433 | 434 | function _case(f) { 435 | cbs.push({ _case: typeof f == 'function' ? pipe(...arguments) : isMatch_0(f) }); 436 | return _body; 437 | } 438 | _case.case = _case; 439 | 440 | function _body() { 441 | cbs[cbs.length-1]._body = pipe(...arguments); 442 | return _case; 443 | } 444 | 445 | _case.else = function() { 446 | _case(_=> true) (...arguments); 447 | return targets ? evl() : (...targets2) => ((targets = targets2), evl()); 448 | }; 449 | 450 | return _case; 451 | } 452 | 453 | function match(..._) { 454 | return baseMatch(_); 455 | } 456 | 457 | match.case = (..._) => baseMatch(null).case(..._); 458 | 459 | /* harmony default export */ var match_0 = (match); 460 | // CONCATENATED MODULE: ./stopIf.js 461 | 462 | 463 | 464 | function stopIf(f, stopVal) { 465 | return match_0.case(f)(arguments.length == 2 ? _ => stop(stopVal) : stop).else(a => a); 466 | } 467 | // CONCATENATED MODULE: ./object.js 468 | 469 | 470 | function object_object(iter) { 471 | return reduce((obj, [k, v]) => (obj[k] = v, obj), {}, iter); 472 | } 473 | // CONCATENATED MODULE: ./basePick.js 474 | 475 | 476 | 477 | 478 | function basePick(filter, ks, obj) { 479 | return go( 480 | obj, 481 | entriesLazy, 482 | filter(([k]) => ks.includes(k)), 483 | object_object); 484 | } 485 | 486 | /* harmony default export */ var basePick_0 = (basePick); 487 | // CONCATENATED MODULE: ./omit.js 488 | 489 | 490 | 491 | 492 | /* harmony default export */ var omit_0 = (curry(function omit(ks, obj) { 493 | return basePick_0(Lazy_rejectLazy, ks, obj); 494 | })); 495 | // CONCATENATED MODULE: ./groupBy.js 496 | 497 | 498 | 499 | function pushSel(parent, k, v) { 500 | (parent[k] || (parent[k] = [])).push(v); 501 | return parent; 502 | } 503 | 504 | /* harmony default export */ var groupBy_0 = (curry(function groupBy(f, iter) { 505 | return reduce((group, a) => pushSel(group, f(a), a), {}, iter); 506 | })); 507 | // CONCATENATED MODULE: ./tap.js 508 | 509 | 510 | 511 | 512 | function tap(f, ...fs) { 513 | return (a, ...as) => go1(reduce(call, f(a, ...as), fs), _ => a); 514 | } 515 | // CONCATENATED MODULE: ./pipeS.js 516 | 517 | 518 | 519 | function pipeS(f, ...fs) { 520 | return (...as) => reduceS(call, f(...as), fs); 521 | } 522 | // CONCATENATED MODULE: ./isString.js 523 | function isString(a) { 524 | return typeof a == 'string'; 525 | } 526 | // CONCATENATED MODULE: ./maxBy.js 527 | 528 | 529 | 530 | /* harmony default export */ var maxBy_0 = (curry(function maxBy(f, iter) { 531 | return reduce((a, b) => f(a) >= f(b) ? a : b, iter); 532 | })); 533 | // CONCATENATED MODULE: ./max.js 534 | 535 | 536 | function max(iter) { 537 | return maxBy_0(a => a, iter); 538 | } 539 | // CONCATENATED MODULE: ./Lazy/mapLazy.js 540 | 541 | 542 | 543 | 544 | /* harmony default export */ var Lazy_mapLazy = (curry(function *mapLazy(f, iter) { 545 | for (const a of safety(iter)) yield go1(a, f); 546 | })); 547 | // CONCATENATED MODULE: ./map.js 548 | 549 | 550 | 551 | 552 | /* harmony default export */ var map_0 = (curry(function map(f, iter) { 553 | return takeAll(Lazy_mapLazy(f, iter)); 554 | })); 555 | // CONCATENATED MODULE: ./pluck.js 556 | 557 | 558 | 559 | /* harmony default export */ var pluck_0 = (curry(function pluck(k, iter) { 560 | return map_0(a => a[k], iter); 561 | })); 562 | // CONCATENATED MODULE: ./countBy.js 563 | 564 | 565 | 566 | function incSel(parent, k) { 567 | parent[k] ? parent[k]++ : parent[k] = 1; 568 | return parent; 569 | } 570 | 571 | /* harmony default export */ var countBy_0 = (curry(function countBy(f, iter) { 572 | return reduce((counts, a) => incSel(counts, f(a)), {}, iter); 573 | })); 574 | // CONCATENATED MODULE: ./Lazy/keysLazy.js 575 | function *keysLazy(obj) { 576 | for (const k in obj) yield k; 577 | }; 578 | // CONCATENATED MODULE: ./keys.js 579 | 580 | 581 | 582 | function keys(a) { 583 | return takeAll(keysLazy(a)); 584 | } 585 | // CONCATENATED MODULE: ./isUndefined.js 586 | /* harmony default export */ var isUndefined = (a => a === undefined); 587 | // CONCATENATED MODULE: ./constant.js 588 | function constant(a) { 589 | return _ => a; 590 | } 591 | // CONCATENATED MODULE: ./isIterable.js 592 | function isIterable(a) { 593 | return a != null && !!a[Symbol.iterator]; 594 | } 595 | // CONCATENATED MODULE: ./last.js 596 | function last(arr) { 597 | return arr[arr.length - 1]; 598 | } 599 | // CONCATENATED MODULE: ./uniqueBy.js 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | const uniqueBy_uniqueBy = curry(function uniqueBy(f, iter) { 612 | const s = new Set(); 613 | const isObj = !isIterable(iter); 614 | return go( 615 | iter, 616 | isObj ? entriesLazy : identity, 617 | Lazy_filterLazy(pipe( 618 | isObj ? last : identity, 619 | f, 620 | b => s.has(b) ? false : s.add(b))), 621 | isObj ? object_object : takeAll); 622 | }); 623 | 624 | /* harmony default export */ var uniqueBy_0 = (uniqueBy_uniqueBy); 625 | // CONCATENATED MODULE: ./unique.js 626 | 627 | 628 | function unique(iter) { 629 | return uniqueBy_0(a => a, iter); 630 | } 631 | // CONCATENATED MODULE: ./indexBy.js 632 | 633 | 634 | 635 | /* harmony default export */ var indexBy_0 = (curry(function indexBy(f, iter) { 636 | return reduce((obj, a) => (obj[f(a)] = a, obj), {}, iter); 637 | })); 638 | // CONCATENATED MODULE: ./min.js 639 | 640 | 641 | function min(iter) { 642 | return minBy_0(a => a, iter); 643 | } 644 | // CONCATENATED MODULE: ./noop.js 645 | function noop() {}; 646 | // CONCATENATED MODULE: ./log.js 647 | const { log } = console; 648 | 649 | /* harmony default export */ var log_0 = (log); 650 | // CONCATENATED MODULE: ./hi.js 651 | 652 | 653 | 654 | const hi_f = tap(log_0); 655 | 656 | function hi(..._) { return hi_f(..._); } 657 | // CONCATENATED MODULE: ./baseExtend.js 658 | 659 | 660 | 661 | 662 | function baseExtend(set, obj, objs) { 663 | const type = typeof obj; 664 | obj && 665 | (type == 'object' || type == 'function') && 666 | reduce(reduce(set), obj, Lazy_mapLazy(entriesLazy, objs)); 667 | return obj; 668 | } 669 | // CONCATENATED MODULE: ./extend.js 670 | 671 | 672 | const setter = (obj, [k, v]) => (obj[k] = v, obj); 673 | 674 | function extend(obj, ...objs) { 675 | return baseExtend(setter, obj, objs); 676 | } 677 | // CONCATENATED MODULE: ./takeWhile.js 678 | 679 | 680 | 681 | 682 | 683 | /* harmony default export */ var takeWhile_0 = (curry(function takeWhile(f, iter) { 684 | let res = []; 685 | iter = toIter(iter); 686 | return function recur() { 687 | let cur; 688 | while (!(cur = iter.next()).done) { 689 | const a = cur.value; 690 | const b = go1(a, a => f(a, res)); 691 | if (!b) return res; 692 | if (b instanceof Promise) { 693 | return b 694 | .then(async b => b ? (res.push(await a), recur()) : res) 695 | .catch(e => e == nop_0 ? recur() : Promise.reject(e)); 696 | } 697 | res.push(a); 698 | } 699 | return res; 700 | } (); 701 | })); 702 | // CONCATENATED MODULE: ./Lazy/mapEntriesLazy.js 703 | 704 | 705 | 706 | 707 | /* harmony default export */ var Lazy_mapEntriesLazy = (curry(function *mapEntriesLazy(f, iter) { 708 | for (const [k, a] of safety(iter)) yield go1(go1(a, f), b => [k, b]); 709 | })); 710 | // CONCATENATED MODULE: ./mapEntries.js 711 | 712 | 713 | 714 | 715 | /* harmony default export */ var mapEntries_0 = (curry(function mapEntries(f, iter) { 716 | return takeAll(Lazy_mapEntriesLazy(f, iter)); 717 | })); 718 | // CONCATENATED MODULE: ./negate.js 719 | 720 | 721 | 722 | function negate(f) { 723 | return (..._) => go1(f(..._), not); 724 | } 725 | // CONCATENATED MODULE: ./some.js 726 | 727 | 728 | 729 | 730 | 731 | /* harmony default export */ var some_0 = (curry(function some(f, iter) { 732 | return go1(take1_0(Lazy_filterLazy(f, iter)), ({length}) => length == 1); 733 | })); 734 | // CONCATENATED MODULE: ./Lazy/flatLazy.js 735 | 736 | 737 | 738 | 739 | 740 | function flatLazy(iter, depth = 1) { 741 | const iterStack = [toIter(iter)]; 742 | return { 743 | next: function recur() { 744 | const iter = last(iterStack); 745 | if (!iter) return { done: true }; 746 | const cur = iter.next(); 747 | if (cur.done) { 748 | iterStack.pop(); 749 | return recur(); 750 | } else if (iterStack.length <= depth && isIterable(cur.value) && typeof cur.value != 'string') { 751 | iterStack.push(cur.value[Symbol.iterator]()); 752 | return recur(); 753 | } else if (cur.value instanceof Promise) { 754 | return { 755 | value: cur.value.then(value => { 756 | if (iterStack.length > depth || !isIterable(value) || typeof value == 'string') return value; 757 | const iter = value[Symbol.iterator](), cur = iter.next(); 758 | return cur.done ? Promise.reject(nop_0) : (iterStack.push(iter), cur.value); 759 | }), 760 | done: false 761 | }; 762 | } else { 763 | return cur; 764 | } 765 | }, 766 | [Symbol.iterator]() { return this; } 767 | }; 768 | } 769 | // CONCATENATED MODULE: ./Lazy/deepFlatLazy.js 770 | 771 | 772 | function deepFlatLazy(iter) { 773 | return flatLazy(iter, Infinity); 774 | } 775 | // CONCATENATED MODULE: ./deepFlat.js 776 | 777 | 778 | 779 | function deepFlat(iter) { 780 | return takeAll(deepFlatLazy(iter)); 781 | } 782 | // CONCATENATED MODULE: ./flat.js 783 | 784 | 785 | 786 | function flat(iter) { 787 | return takeAll(flatLazy(iter)); 788 | } 789 | // CONCATENATED MODULE: ./findWhere.js 790 | 791 | 792 | 793 | 794 | /* harmony default export */ var findWhere_0 = (curry(function findWhere(w, iter) { 795 | return find_0(isMatch_0(w), iter); 796 | })); 797 | // CONCATENATED MODULE: ./baseSel.js 798 | 799 | 800 | 801 | 802 | 803 | /* harmony default export */ var baseSel = (sep => curry(function sel(selector, acc) { 804 | return ( 805 | !selector ? 806 | acc 807 | : 808 | isArray_0(selector) ? 809 | reduce((acc, selector) => sel(selector, acc), acc, selector) 810 | : 811 | typeof selector == 'object' || typeof selector == 'function' ? 812 | findWhere_0(selector, acc) 813 | : 814 | reduce( 815 | (acc, key, s = key[0]) => 816 | !acc ? acc : 817 | s == '#' ? findWhere_0({ id: key.substr(1) }, acc) : 818 | s == '[' || s == '{' ? findWhere_0(JSON.parse(key), acc) : 819 | acc[key], 820 | acc, 821 | selector.split(sep)) 822 | ); 823 | })); 824 | // CONCATENATED MODULE: ./sortBy.js 825 | 826 | 827 | 828 | /* harmony default export */ var sortBy_0 = (curry(function sortBy(f, arr) { 829 | return baseSortBy(-1, 1, f, arr); 830 | })); 831 | // CONCATENATED MODULE: ./each.js 832 | 833 | 834 | 835 | 836 | /* harmony default export */ var each_0 = (curry(function each(f, iter) { 837 | return go1(reduce((_, a) => f(a), null, iter), _ => iter); 838 | })); 839 | // CONCATENATED MODULE: ./entries.js 840 | 841 | 842 | 843 | function entries_entries(a) { 844 | return takeAll(entriesLazy(a)); 845 | } 846 | // CONCATENATED MODULE: ./filter.js 847 | 848 | 849 | 850 | 851 | /* harmony default export */ var filter_0 = (curry(function filter(f, iter) { 852 | return takeAll(Lazy_filterLazy(f, iter)); 853 | })); 854 | // CONCATENATED MODULE: ./sort.js 855 | 856 | 857 | function sort_sort(arr) { 858 | return sortBy_0(a => a, arr); 859 | } 860 | // CONCATENATED MODULE: ./isFunction.js 861 | function isFunction(a) { 862 | return typeof a == 'function'; 863 | } 864 | // CONCATENATED MODULE: ./sel.js 865 | 866 | 867 | /* harmony default export */ var sel_0 = (baseSel('.')); 868 | // CONCATENATED MODULE: ./has.js 869 | 870 | 871 | /* harmony default export */ var has = (curry(function has(k, obj) { 872 | return !!(obj && obj.hasOwnProperty(k)); 873 | })); 874 | // CONCATENATED MODULE: ./flatMap.js 875 | 876 | 877 | 878 | 879 | /* harmony default export */ var flatMap_0 = (curry(function flatMap(f, iter) { 880 | return flat(map_0(f, iter)); 881 | })); 882 | // CONCATENATED MODULE: ./string.js 883 | 884 | 885 | 886 | const sadd = (a, b) => `${a}${b}`; 887 | 888 | function string(iter) { 889 | return reduce(sadd, iter); 890 | } 891 | // CONCATENATED MODULE: ./strMap.js 892 | 893 | 894 | 895 | 896 | /* harmony default export */ var strMap_0 = (curry(function strMap(f, iter) { 897 | return string(Lazy_mapLazy(f, iter)); 898 | })); 899 | // CONCATENATED MODULE: ./reject.js 900 | 901 | 902 | 903 | 904 | 905 | /* harmony default export */ var reject_0 = (curry(function reject(f, iter) { 906 | return filter_0(a => go1(f(a), not), iter); 907 | })); 908 | // CONCATENATED MODULE: ./pick.js 909 | 910 | 911 | 912 | 913 | /* harmony default export */ var pick_0 = (curry(function pick(ks, obj) { 914 | return basePick_0(Lazy_filterLazy, ks, obj); 915 | })); 916 | // CONCATENATED MODULE: ./Lazy/dropLazy.js 917 | 918 | 919 | 920 | 921 | /* harmony default export */ var Lazy_dropLazy = (curry(function *dropLazy(l, iter) { 922 | if (l < 1) return yield *safety(iter); 923 | for (const a of safety(iter)) { 924 | if (a instanceof Promise) yield a.then(a => l ? (l--, Promise.reject(nop_0)) : a); 925 | else if (l) { l--; continue; } 926 | else yield a; 927 | } 928 | })); 929 | // CONCATENATED MODULE: ./drop.js 930 | 931 | 932 | 933 | 934 | /* harmony default export */ var drop_0 = (curry(function drop(l, iter) { 935 | return takeAll(Lazy_dropLazy(l, iter)); 936 | })); 937 | // CONCATENATED MODULE: ./tail.js 938 | 939 | 940 | function tail(iter) { 941 | return drop_0(1, iter); 942 | } 943 | // CONCATENATED MODULE: ./takeUntil.js 944 | 945 | 946 | 947 | 948 | 949 | const takeUntil_takeUntil = curry(function takeUntil(f, iter) { 950 | let res = []; 951 | iter = toIter(iter); 952 | return function recur() { 953 | let cur; 954 | while (!(cur = iter.next()).done) { 955 | const a = cur.value; 956 | const b = go1(a, a => (res.push(a), f(a, res))); 957 | if (b instanceof Promise) 958 | return b.then(b => b ? res : recur()).catch(e => e == nop_0 ? recur() : Promise.reject(e)); 959 | if (b) break; 960 | } 961 | return res; 962 | } (); 963 | }); 964 | 965 | /* harmony default export */ var takeUntil_0 = (takeUntil_takeUntil); 966 | // CONCATENATED MODULE: ./defaults.js 967 | 968 | 969 | 970 | const defaults_setter = (obj, [k, v]) => { 971 | return (has(k, obj) || (obj[k] = v, obj), obj); 972 | }; 973 | 974 | function defaults(obj, ...objs) { 975 | return baseExtend(defaults_setter, obj, objs); 976 | } 977 | 978 | /* harmony default export */ var defaults_0 = (defaults); 979 | // CONCATENATED MODULE: ./baseCalls.js 980 | 981 | 982 | 983 | 984 | const baseCalls = (map, object) => function calls(fs, ...args) { 985 | return isIterable(fs) ? 986 | map(f => f(...args), fs) : 987 | object(Lazy_mapEntriesLazy(f => f(...args), entriesLazy(fs))); 988 | }; 989 | 990 | /* harmony default export */ var baseCalls_0 = (baseCalls); 991 | // CONCATENATED MODULE: ./calls.js 992 | 993 | 994 | 995 | 996 | /* harmony default export */ var calls_0 = (baseCalls_0(map_0, object_object)); 997 | // CONCATENATED MODULE: ./delay.js 998 | 999 | 1000 | /* harmony default export */ var delay = (curry(function delay(time, a) { 1001 | return new Promise(resolve => setTimeout(() => resolve(a), time)); 1002 | })); 1003 | // CONCATENATED MODULE: ./mapObject.js 1004 | 1005 | 1006 | 1007 | 1008 | 1009 | /* harmony default export */ var mapObject_0 = (curry(function mapObject(f, obj) { 1010 | return object_object(Lazy_mapEntriesLazy(f, entriesLazy(obj))); 1011 | })); 1012 | // CONCATENATED MODULE: ./promiseAllObject.js 1013 | 1014 | 1015 | 1016 | function promiseAllObject(obj) { 1017 | return mapObject_0(identity, obj); 1018 | } 1019 | // CONCATENATED MODULE: ./promiseAllEntries.js 1020 | 1021 | 1022 | 1023 | function promiseAllEntries(entries) { 1024 | return mapEntries_0(identity, entries); 1025 | } 1026 | // CONCATENATED MODULE: ./Lazy/rangeLazy.js 1027 | function *rangeLazy(start = 0, stop = start, step = 1) { 1028 | if (arguments.length == 1) start = 0; 1029 | while (start < stop) { 1030 | yield start; 1031 | start += step; 1032 | } 1033 | } 1034 | // CONCATENATED MODULE: ./range.js 1035 | 1036 | 1037 | 1038 | function range(..._) { 1039 | return takeAll(rangeLazy(..._)); 1040 | } 1041 | // CONCATENATED MODULE: ./dropRight.js 1042 | 1043 | 1044 | 1045 | 1046 | 1047 | /* harmony default export */ var dropRight = (curry(function drop(l, iter) { 1048 | return go1(takeAll(iter), arr => take_0(arr.length - l, arr)); 1049 | })); 1050 | // CONCATENATED MODULE: ./Lazy/flatMapLazy.js 1051 | 1052 | 1053 | 1054 | 1055 | /* harmony default export */ var Lazy_flatMapLazy = (curry(function flatMapLazy(f, iter) { 1056 | return flatLazy(Lazy_mapLazy(f, iter)); 1057 | })); 1058 | // CONCATENATED MODULE: ./Lazy/headTailLazy.js 1059 | 1060 | 1061 | 1062 | 1063 | function headTailLazy(iter) { 1064 | return go1(take_0(1, iter = toIter(iter)), ([head]) => [head, iter]); 1065 | } 1066 | // CONCATENATED MODULE: ./Lazy/indexValuesLazy.js 1067 | 1068 | 1069 | function *indexValuesLazy(iter) { 1070 | let i = -1; 1071 | for (const a of safety(iter)) yield [++i, a]; 1072 | }; 1073 | // CONCATENATED MODULE: ./Lazy/reverseLazy.js 1074 | function *reverseLazy(arr) { 1075 | var l = arr.length; 1076 | while (l--) yield arr[l]; 1077 | } 1078 | // CONCATENATED MODULE: ./Lazy/takeLazy.js 1079 | 1080 | 1081 | 1082 | /* harmony default export */ var Lazy_takeLazy = (curry(function *takeLazy(l, iter) { 1083 | if (l < 1) return; 1084 | for (const a of safety(iter)) { 1085 | if (a instanceof Promise) yield a.then(a => (--l, a)); 1086 | else yield (--l, a); 1087 | if (!l) break; 1088 | } 1089 | })); 1090 | // CONCATENATED MODULE: ./Lazy/takeWhileLazy.js 1091 | 1092 | 1093 | 1094 | 1095 | 1096 | /* harmony default export */ var Lazy_takeWhileLazy = (curry(function *takeWhileLazy(f, iter) { 1097 | let ok = false; 1098 | for (const a of safety(iter)) { 1099 | ok = go1(a, f); 1100 | if (ok instanceof Promise) yield ok.then(_ok => (ok = _ok) ? a : Promise.reject(nop_0)); 1101 | else if (ok) yield a; 1102 | if (!ok) break; 1103 | } 1104 | })); 1105 | // CONCATENATED MODULE: ./Lazy/takeUntilLazy.js 1106 | 1107 | 1108 | 1109 | 1110 | /* harmony default export */ var Lazy_takeUntilLazy = (curry(function *takeUntilLazy(f, iter) { 1111 | let ok = false; 1112 | for (const a of safety(iter)) { 1113 | ok = go1(a, f); 1114 | if (ok instanceof Promise) yield ok.then(_ok => ((ok = _ok), a)); 1115 | else yield a; 1116 | if (ok) break; 1117 | } 1118 | })); 1119 | // CONCATENATED MODULE: ./Lazy/intervalLazy.js 1120 | 1121 | 1122 | 1123 | 1124 | function intervalLazy(time) { 1125 | return Lazy_mapLazy(delay(time), rangeLazy(Infinity)); 1126 | } 1127 | // CONCATENATED MODULE: ./L.js 1128 | 1129 | 1130 | 1131 | 1132 | 1133 | 1134 | 1135 | 1136 | 1137 | 1138 | 1139 | 1140 | 1141 | 1142 | 1143 | 1144 | 1145 | 1146 | 1147 | 1148 | const L = { 1149 | deepFlat: deepFlatLazy, 1150 | deep_flat: deepFlatLazy, 1151 | deepFlatten: deepFlatLazy, 1152 | deep_flatten: deepFlatLazy, 1153 | entries: entriesLazy, 1154 | entriesMap: Lazy_mapEntriesLazy, 1155 | entries_map: Lazy_mapEntriesLazy, 1156 | mapEntries: Lazy_mapEntriesLazy, 1157 | map_entries: Lazy_mapEntriesLazy, 1158 | filter: Lazy_filterLazy, 1159 | flat: flatLazy, 1160 | flatMap: Lazy_flatMapLazy, 1161 | flat_map: Lazy_flatMapLazy, 1162 | headTail: headTailLazy, 1163 | indexValues: indexValuesLazy, 1164 | index_values: indexValuesLazy, 1165 | keys: keysLazy, 1166 | map: Lazy_mapLazy, 1167 | range: rangeLazy, 1168 | reject: Lazy_rejectLazy, 1169 | reverse: reverseLazy, 1170 | values: valuesLazy, 1171 | take: Lazy_takeLazy, 1172 | takeWhile: Lazy_takeWhileLazy, 1173 | take_while: Lazy_takeWhileLazy, 1174 | takeUntil: Lazy_takeUntilLazy, 1175 | take_until: Lazy_takeUntilLazy, 1176 | interval: intervalLazy, 1177 | drop: Lazy_dropLazy 1178 | }; 1179 | 1180 | 1181 | // CONCATENATED MODULE: ./Concurrency/catchNoop.js 1182 | function catchNoop(arr) { 1183 | arr.forEach(a => a instanceof Promise ? a.catch(function() {}) : a); 1184 | return arr; 1185 | } 1186 | 1187 | /* harmony default export */ var Concurrency_catchNoop = (catchNoop); 1188 | // CONCATENATED MODULE: ./Concurrency/dropC.js 1189 | 1190 | 1191 | 1192 | 1193 | /* harmony default export */ var Concurrency_dropC = (curry(function dropC(l, iter) { 1194 | return drop_0(l, Concurrency_catchNoop([...iter])); 1195 | })); 1196 | // CONCATENATED MODULE: ./Concurrency/tailC.js 1197 | 1198 | 1199 | function tailC(iter) { 1200 | return Concurrency_dropC(1, iter); 1201 | } 1202 | // CONCATENATED MODULE: ./Concurrency/reduceC.js 1203 | 1204 | 1205 | 1206 | 1207 | /* harmony default export */ var Concurrency_reduceC = (curry(function reduceC(f, acc, iter) { 1208 | return arguments.length == 2 ? 1209 | reduce(f, Concurrency_catchNoop([...acc])) : 1210 | reduce(f, acc, Concurrency_catchNoop([...iter])); 1211 | })); 1212 | // CONCATENATED MODULE: ./Concurrency/takeC.js 1213 | 1214 | 1215 | 1216 | 1217 | /* harmony default export */ var Concurrency_takeC = (curry(function takeC(l, iter) { 1218 | return take_0(l, Concurrency_catchNoop([...iter])); 1219 | })); 1220 | // CONCATENATED MODULE: ./Concurrency/takeAllC.js 1221 | 1222 | 1223 | /* harmony default export */ var takeAllC = (Concurrency_takeC(Infinity)); 1224 | // CONCATENATED MODULE: ./Concurrency/mapEntriesC.js 1225 | 1226 | 1227 | 1228 | 1229 | /* harmony default export */ var Concurrency_mapEntriesC = (curry(async function mapEntriesC(f, iter) { 1230 | return takeAllC(Lazy_mapEntriesLazy(f, iter)); 1231 | })); 1232 | // CONCATENATED MODULE: ./Concurrency/headC.js 1233 | 1234 | 1235 | 1236 | function headC(iter) { 1237 | return go1(Concurrency_takeC(1, iter), ([h]) => h); 1238 | } 1239 | // CONCATENATED MODULE: ./Concurrency/findC.js 1240 | 1241 | 1242 | 1243 | 1244 | /* harmony default export */ var Concurrency_findC = (curry(function findC(f, iter) { 1245 | return headC(Lazy_filterLazy(f, iter)); 1246 | })); 1247 | // CONCATENATED MODULE: ./Concurrency/mapC.js 1248 | 1249 | 1250 | 1251 | 1252 | /* harmony default export */ var Concurrency_mapC = (curry(function mapC(f, iter) { 1253 | return takeAllC(Lazy_mapLazy(f, iter)); 1254 | })); 1255 | // CONCATENATED MODULE: ./Concurrency/take1C.js 1256 | 1257 | 1258 | /* harmony default export */ var take1C = (Concurrency_takeC(1)); 1259 | // CONCATENATED MODULE: ./Concurrency/everyC.js 1260 | 1261 | 1262 | 1263 | 1264 | 1265 | /* harmony default export */ var Concurrency_everyC = (curry(function everyC(f, iter) { 1266 | return go1(take1C(Lazy_rejectLazy(f, iter)), ({length}) => length == 0); 1267 | }));; 1268 | // CONCATENATED MODULE: ./Concurrency/filterC.js 1269 | 1270 | 1271 | 1272 | 1273 | /* harmony default export */ var Concurrency_filterC = (curry(function filterC(f, iter) { 1274 | return takeAllC(Lazy_filterLazy(f, iter)); 1275 | })); 1276 | // CONCATENATED MODULE: ./Concurrency/objectC.js 1277 | 1278 | 1279 | function objectC(iter) { 1280 | return Concurrency_reduceC((obj, [k, v]) => (obj[k] = v, obj), {}, iter); 1281 | } 1282 | // CONCATENATED MODULE: ./Concurrency/callsC.js 1283 | 1284 | 1285 | 1286 | 1287 | /* harmony default export */ var callsC = (baseCalls_0(Concurrency_mapC, objectC)); 1288 | // CONCATENATED MODULE: ./Concurrency/someC.js 1289 | 1290 | 1291 | 1292 | 1293 | 1294 | /* harmony default export */ var Concurrency_someC = (curry(function someC(f, iter) { 1295 | return go1(take1C(Lazy_filterLazy(f, iter)), ({length}) => length == 1); 1296 | })); 1297 | // CONCATENATED MODULE: ./C.js 1298 | 1299 | 1300 | 1301 | 1302 | 1303 | 1304 | 1305 | 1306 | 1307 | 1308 | 1309 | 1310 | 1311 | 1312 | 1313 | const C = { 1314 | tail: tailC, 1315 | reduce: Concurrency_reduceC, 1316 | take: Concurrency_takeC, 1317 | mapEntries: Concurrency_mapEntriesC, 1318 | map_entries: Concurrency_mapEntriesC, 1319 | entriesMap: Concurrency_mapEntriesC, 1320 | entries_map: Concurrency_mapEntriesC, 1321 | find: Concurrency_findC, 1322 | map: Concurrency_mapC, 1323 | every: Concurrency_everyC, 1324 | filter: Concurrency_filterC, 1325 | takeAll: takeAllC, 1326 | take_all: takeAllC, 1327 | head: headC, 1328 | take1: take1C, 1329 | calls: callsC, 1330 | some: Concurrency_someC, 1331 | drop: Concurrency_dropC 1332 | }; 1333 | 1334 | 1335 | // CONCATENATED MODULE: ./fx-browser.js 1336 | 1337 | 1338 | 1339 | 1340 | 1341 | 1342 | 1343 | 1344 | 1345 | 1346 | 1347 | 1348 | 1349 | 1350 | 1351 | 1352 | 1353 | 1354 | 1355 | 1356 | 1357 | 1358 | 1359 | 1360 | 1361 | 1362 | 1363 | 1364 | 1365 | 1366 | 1367 | 1368 | 1369 | 1370 | 1371 | 1372 | 1373 | 1374 | 1375 | 1376 | 1377 | 1378 | 1379 | 1380 | 1381 | 1382 | 1383 | 1384 | 1385 | 1386 | 1387 | 1388 | 1389 | 1390 | 1391 | 1392 | 1393 | 1394 | 1395 | 1396 | 1397 | 1398 | 1399 | 1400 | 1401 | 1402 | 1403 | 1404 | 1405 | 1406 | 1407 | 1408 | 1409 | 1410 | 1411 | 1412 | 1413 | 1414 | 1415 | 1416 | 1417 | 1418 | 1419 | 1420 | 1421 | 1422 | 1423 | 1424 | 1425 | window.fx = window._ = {}; 1426 | window.fx.L = window.L = L_namespaceObject.L; 1427 | window.fx.C = window.C = C_namespaceObject.C; 1428 | 1429 | _.minBy = _.min_by = minBy_0; 1430 | _.sortDesc = _.sort_desc = sort; 1431 | _.go = go; 1432 | _.goS = goS; 1433 | _.identity = identity; 1434 | _.reduce = reduce; 1435 | _.reduceS = reduceS; 1436 | _.stop = stop; 1437 | _.stopIf = _.stop_if = stopIf; 1438 | _.take = take_0; 1439 | _.omit = omit_0; 1440 | _.values = values; 1441 | _.groupBy = _.group_by = groupBy_0; 1442 | _.tap = tap; 1443 | _.pipe = pipe; 1444 | _.pipeS = pipeS; 1445 | _.isString = _.is_string = isString; 1446 | _.max = max; 1447 | _.pluck = pluck_0; 1448 | _.takeAll = _.take_all = takeAll; 1449 | _.countBy = _.count_by = countBy_0; 1450 | _.keys = keys; 1451 | _.isUndefined = _.is_undefined = isUndefined; 1452 | _.constant = constant; 1453 | _.unique = _.uniq = unique; 1454 | _.indexBy = _.index_by = indexBy_0; 1455 | _.min = min; 1456 | _.sortByDesc = _.sort_by_desc = sortByDesc_0; 1457 | _.noop = noop; 1458 | _.hi = hi; 1459 | _.extend = extend; 1460 | _.empty = empty; 1461 | _.takeWhile = _.take_while = takeWhile_0; 1462 | _.isMatch = _.is_match = isMatch_0; 1463 | _.mapEntries = _.map_entries = _.entriesMap = _.entries_map = mapEntries_0; 1464 | _.object = object_object; 1465 | _.negate = negate; 1466 | _.nop = nop_0; 1467 | _.call = call; 1468 | _.some = some_0; 1469 | _.deepFlat = _.deepFlatten = _.deep_flat = _.deep_flatten = deepFlat; 1470 | _.toIter = _.to_iter = toIter; 1471 | _.maxBy = _.max_by = maxBy_0; 1472 | _.flat = _.flatten = flat; 1473 | _.baseSel = _.base_sel = baseSel; 1474 | _.sortBy = _.sort_by = sortBy_0; 1475 | _.not = not; 1476 | _.go1 = go1; 1477 | _.find = find_0; 1478 | _.isArray = _.is_array = isArray_0; 1479 | _.each = each_0; 1480 | _.entries = entries_entries; 1481 | _.filter = filter_0; 1482 | _.sort = sort_sort; 1483 | _.curry = curry; 1484 | _.isFunction = _.is_function = isFunction; 1485 | _.sel = sel_0; 1486 | _.match = match_0; 1487 | _.map = map_0; 1488 | _.head = head; 1489 | _.every = every_0; 1490 | _.has = has; 1491 | _.isIterable = _.is_iterable = isIterable; 1492 | _.uniqueBy = _.unique_by = uniqueBy_0; 1493 | _.flatMap = _.flat_map = flatMap_0; 1494 | _.string = string; 1495 | _.strMap = _.str_map = _.scat = strMap_0; 1496 | _.findWhere = _.find_where = findWhere_0; 1497 | _.reject = reject_0; 1498 | _.pick = pick_0; 1499 | _.last = last; 1500 | _.take1 = take1_0; 1501 | _.tail = tail; 1502 | _.log = log_0; 1503 | _.takeUntil = _.take_until = takeUntil_0; 1504 | _.defaults = defaults_0; 1505 | _.calls = calls_0; 1506 | _.delay = delay; 1507 | _.safety = safety; 1508 | _.mapObject = _.map_object = mapObject_0; 1509 | _.promiseAllObject = _.promise_all_object = promiseAllObject; 1510 | _.promiseAllEntries = _.promise_all_entries = promiseAllEntries; 1511 | _.isStop = _.is_stop = isStop; 1512 | _.range = range; 1513 | _.drop = drop_0; 1514 | _.dropRight = _.drop_right = dropRight; 1515 | 1516 | /***/ }) 1517 | /******/ ]); 1518 | //# sourceMappingURL=fx.js.map --------------------------------------------------------------------------------