diff --git a/README.md b/README.md index 8f9a425..26683c8 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,20 @@

npm version npm downloads - gzip-size + gzip-size
Build Status Coverage Status NSP Status

+## Documentation + +- [Motivation](#motivation) +- [Caveat Emptor](#caveat-emptor) +- [API](#api) +- [Dependents](#dependents) + ## Motivation Most popular functional libraries, like [Ramda](https://www.npmjs.com/package/ramda), are quite large. To use them in a frontend project, it's common to import only the bits you need (to keep the bundle size down) like this: @@ -124,3 +131,9 @@ If you've lived with FP long enough, you are likely familiar with most of the fu | `values` | `{ k: v } -> [v]` | | `when` | `(a -> Boolean) -> (a -> a) -> a -> a` | | `zipObj` | `[k] -> [v] -> { k: v }` | + +## Dependents + +I use `tinyfunk` everyday to make cool things. Maybe you do, too. If so, let me know with a PR, and we can add your cool things to this list. + +- [`puddles`](https://github.com/flintinatux/puddles) - _Tiny vdom app framework. Pure Redux. No boilerplate._ - Built with ❤️ on `tinyfunk`. diff --git a/package.json b/package.json index 2d48c1b..e727773 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "ramda" ], "main": "src.js", + "unpkg": "tinyfunk.js", "author": "flintinatux", "license": "MIT", "nyc": { @@ -23,7 +24,7 @@ "branches": 100 }, "scripts": { - "build": "./node_modules/uglify-es/bin/uglifyjs src.js -cm --toplevel > tinyfunk.js", + "build": "uglifyjs src.js -cm --toplevel --wrap tinyfunk > tinyfunk.js", "clean": "rm -f tinyfunk.js", "coverage": "nyc report --reporter=text-lcov | coveralls", "lint": "eslint src.js test", @@ -44,6 +45,6 @@ "mocha": "^3.5.3", "nyc": "^11.2.1", "prop-factory": "^1.0.0", - "uglify-es": "^3.1.1" + "uglify-es": "^3.3.9" } } diff --git a/src.js b/src.js index b38a27b..a9f4c65 100644 --- a/src.js +++ b/src.js @@ -342,7 +342,7 @@ const keys = reduceObj(_appendKey, []) // values :: { k: v } -> [v] const values = converge(props, [ keys, identity ]) -module.exports = { +_assign(exports, { add, append, apply, @@ -408,4 +408,4 @@ module.exports = { values, when, zipObj -} +}) diff --git a/tinyfunk.js b/tinyfunk.js index a19d932..d7a471f 100644 --- a/tinyfunk.js +++ b/tinyfunk.js @@ -1 +1 @@ -const e=(e,t)=>{for(let r in t)e[r]=t[r];return e},t=(e,t)=>eh(t,1,e),l=(e,t)=>e.bind(null,...t),n=e=>e.length,o=e=>(...t)=>e(t),p=(e,t)=>e<1?t:o(r=>{const o=e-n(r);return o>0?p(o,l(t,r)):t.apply(null,r)}),s=p(2,p),c=e=>s(n(e),e),i=c((e,t,r)=>{let l=e[r]||k;return"object"==typeof l&&(l=P(l)),l(t)}),a=c((e,t)=>e+t),u=c((e,t)=>y(t,[e])),d=c((e,t)=>e.apply(null,t)),h=c((t,r,l)=>{const n=e({},l);return n[t]=r,n}),f=c(([e,...t],r,l)=>h(e,n(t)?f(t,r,l[e]):r,l)),m=s(2,(e,...t)=>d(e,t)),y=c((e,t)=>e.concat(t)),j=c((e,t)=>ne(d(e),w(t))),g=c((e,t)=>null==t||t!==t?e:t),b=c((t,r)=>{const l=e({},r);return delete l[t],l}),v=c(([e,...t],r)=>e?null==r[e]?r:n(t)?h(e,v(t,r[e]),r):b(e,r):r),P=c((e,t)=>B(i(e),t)),O=c((e,t)=>t.filter(e)),R=c((e,t,r)=>c(e)(r,t)),k=e=>e,x=c((e,t,r,l)=>e(l)?t(l):r(l)),E=c((e,t)=>null!=t&&t.constructor===e||t instanceof e),q=c((e,t)=>t.join(e)),w=c((e,t)=>z(_(t),e)),z=c((e,t)=>t.map(e)),B=c((e,t)=>{const r={};for(let l in t)r[l]=e(t[l],l);return r}),N=c((e,t)=>t.match(e)||[]),T=c((t,r)=>M(e,{},[t,r])),W=c((e,t)=>e*t),A=c((e,t)=>({[e]:t})),C=c((e,t)=>{const l=M(r,{},e),n={};for(let e in t)l[e]||(n[e]=t[e]);return n}),D=c(l),F=s(3,(e,t,...r)=>d(e,y(r,t))),G=c(([e,...t],r)=>n(t)?G(t,r[e]):r[e]),H=c((e,t)=>le(e,L(e,t))),I=c((e,t)=>y([e],t)),J=c((e,t)=>t[e]),K=c((e,t,r)=>r[e]===t),L=c((e,t)=>z(R(J)(t),e)),M=c((e,t,r)=>r.reduce(e,t)),Q=c((e,t,r)=>{for(let l in r)t=e(t,r[l],l);return t}),S=c((e,t,r)=>r.reduceRight(e,t)),U=c((e,t,r)=>r.replace(e,t)),V=c((e,t)=>t.slice(0).sort(e)),X=c((e,r)=>V(ee(t,[e,e]),r)),Y=c((e,t)=>t.split(e)),Z=c((e,t)=>(e(t),t)),$=c((e,t)=>Promise.resolve(t).then(e)),_=c((e,t)=>t(e)),ee=c((e,t)=>o(ne(d(e),z(i(t))))),te=c((e,t,r)=>e(r)?r:t(r)),re=c((e,t,r)=>e(r)?t(r):r),le=c((e,t)=>{const r={};for(let l=n(e);l--;)r[e[l]]=t[l];return r}),ne=o(R(S(_))),oe=o(R(S(R($)))),pe=o(R(M(_))),se=o(R(M(R($)))),ce=c((e,t,r)=>r.slice(e,t)),ie=J(0),ae=ce(0,-1),ue=ne(ie,ce(-1,void 0)),de=ce(1,1/0),he=Q((e,t,r)=>u(r,e),[]),fe=j(L,[he,k]);module.exports={add:a,append:u,apply:d,assoc:h,assocPath:f,call:m,compose:ne,composeP:oe,concat:y,constant:e=>()=>e,converge:j,curry:c,curryN:s,defaultTo:g,dissoc:b,dissocPath:v,evolve:P,filter:O,flip:R,head:ie,identity:k,ifElse:x,init:ae,is:E,join:q,juxt:w,keys:he,last:ue,length:n,map:z,mapObj:B,match:N,merge:T,multiply:W,not:e=>!e,objOf:A,omit:C,partial:D,partialRight:F,path:G,pick:H,pipe:pe,pipeP:se,prepend:I,prop:J,propEq:K,props:L,reduce:M,reduceObj:Q,reduceRight:S,replace:U,slice:ce,sort:V,sortBy:X,split:Y,tail:de,tap:Z,then:$,thrush:_,unapply:o,unless:te,useWith:ee,values:fe,when:re,zipObj:le}; +!function(e){const t=(e,t)=>{for(let n in t)e[n]=t[n];return e},n=(e,t)=>eh(t,1,e),l=(e,t)=>e.bind(null,...t),o=e=>e.length,i=e=>(...t)=>e(t),p=(e,t)=>e<1?t:i(n=>{const r=e-o(n);return r>0?p(r,l(t,n)):t.apply(null,n)}),c=p(2,p),s=e=>c(o(e),e),u=s((e,t,n)=>{let r=e[n]||E;return"object"==typeof r&&(r=P(r)),r(t)}),a=s((e,t)=>e+t),d=s((e,t)=>j(t,[e])),f=s((e,t)=>e.apply(null,t)),h=s((e,n,r)=>{const l=t({},r);return l[e]=n,l}),y=s(([e,...t],n,r)=>h(e,o(t)?y(t,n,r[e]):n,r)),m=c(2,(e,...t)=>f(e,t)),j=s((e,t)=>e.concat(t)),g=s((e,t)=>oe(f(e),z(t))),b=s((e,t)=>null==t||t!=t?e:t),v=s((e,n)=>{const r=t({},n);return delete r[e],r}),k=s(([e,...t],n)=>e?null==n[e]?n:o(t)?h(e,k(t,n[e]),n):v(e,n):n),P=s((e,t)=>N(u(e),t)),O=s((e,t)=>t.filter(e)),R=s((e,t,n)=>s(e)(n,t)),E=e=>e,q=s((e,t,n,r)=>e(r)?t(r):n(r)),w=s((e,t)=>null!=t&&t.constructor===e||t instanceof e),x=s((e,t)=>t.join(e)),z=s((e,t)=>B(ee(t),e)),B=s((e,t)=>t.map(e)),N=s((e,t)=>{const n={};for(let r in t)n[r]=e(t[r],r);return n}),T=s((e,t)=>t.match(e)||[]),W=s((e,n)=>Q(t,{},[e,n])),A=s((e,t)=>e*t),C=s((e,t)=>({[e]:t})),D=s((e,t)=>{const n=Q(r,{},e),l={};for(let e in t)n[e]||(l[e]=t[e]);return l}),F=s(l),G=c(3,(e,t,...n)=>f(e,j(n,t))),H=s(([e,...t],n)=>o(t)?H(t,n[e]):n[e]),I=s((e,t)=>le(e,M(e,t))),J=s((e,t)=>j([e],t)),K=s((e,t)=>t[e]),L=s((e,t,n)=>n[e]===t),M=s((e,t)=>B(R(K)(t),e)),Q=s((e,t,n)=>n.reduce(e,t)),S=s((e,t,n)=>{for(let r in n)t=e(t,n[r],r);return t}),U=s((e,t,n)=>n.reduceRight(e,t)),V=s((e,t,n)=>n.replace(e,t)),X=s((e,t)=>t.slice(0).sort(e)),Y=s((e,t)=>X(te(n,[e,e]),t)),Z=s((e,t)=>t.split(e)),$=s((e,t)=>(e(t),t)),_=s((e,t)=>Promise.resolve(t).then(e)),ee=s((e,t)=>t(e)),te=s((e,t)=>i(oe(f(e),B(u(t))))),ne=s((e,t,n)=>e(n)?n:t(n)),re=s((e,t,n)=>e(n)?t(n):n),le=s((e,t)=>{const n={};for(let r=o(e);r--;)n[e[r]]=t[r];return n}),oe=i(R(U(ee))),ie=i(R(U(R(_)))),pe=i(R(Q(ee))),ce=i(R(Q(R(_)))),se=s((e,t,n)=>n.slice(e,t)),ue=K(0),ae=se(0,-1),de=oe(ue,se(-1,void 0)),fe=se(1,1/0),he=S((e,t,n)=>d(n,e),[]),ye=g(M,[he,E]);t(e,{add:a,append:d,apply:f,assoc:h,assocPath:y,call:m,compose:oe,composeP:ie,concat:j,constant:e=>()=>e,converge:g,curry:s,curryN:c,defaultTo:b,dissoc:v,dissocPath:k,evolve:P,filter:O,flip:R,head:ue,identity:E,ifElse:q,init:ae,is:w,join:x,juxt:z,keys:he,last:de,length:o,map:B,mapObj:N,match:T,merge:W,multiply:A,not:e=>!e,objOf:C,omit:D,partial:F,partialRight:G,path:H,pick:I,pipe:pe,pipeP:ce,prepend:J,prop:K,propEq:L,props:M,reduce:Q,reduceObj:S,reduceRight:U,replace:V,slice:se,sort:X,sortBy:Y,split:Z,tail:fe,tap:$,then:_,thrush:ee,unapply:i,unless:ne,useWith:te,values:ye,when:re,zipObj:le})}("undefined"==typeof tinyfunk?tinyfunk={}:tinyfunk); diff --git a/yarn.lock b/yarn.lock index 5dfdc31..6bb33bd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -409,10 +409,14 @@ commander@2.9.0: dependencies: graceful-readlink ">= 1.0.0" -commander@^2.9.0, commander@~2.11.0: +commander@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -2092,6 +2096,10 @@ source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + spawn-wrap@^1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.3.8.tgz#fa2a79b990cbb0bb0018dca6748d88367b19ec31" @@ -2297,12 +2305,12 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -uglify-es@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.1.1.tgz#27615a1203cd0b351d8b5bda743ac92ed482b826" +uglify-es@^3.3.9: + version "3.3.9" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" dependencies: - commander "~2.11.0" - source-map "~0.5.1" + commander "~2.13.0" + source-map "~0.6.1" uglify-js@^2.6: version "2.8.29"