first draft
This commit is contained in:
parent
bc50f97b4f
commit
2f919030a0
107
docs/README.md
Normal file
107
docs/README.md
Normal file
@ -0,0 +1,107 @@
|
||||
# updeep-remeda
|
||||
|
||||
> Easily update nested frozen objects and arrays in a declarative and immutable
|
||||
> manner.
|
||||
|
||||
## About
|
||||
|
||||
:::info
|
||||
|
||||
This is a fork of the main updeep package. For ease of reading — not to
|
||||
mention ease of shamelessly lifting large pieces of the original
|
||||
documentation — in this documentation all mentions of `updeep` refers to this
|
||||
fork.
|
||||
|
||||
:::
|
||||
|
||||
updeep makes updating deeply nested objects/arrays painless by allowing you to
|
||||
declare the updates you would like to make and it will take care of the rest. It
|
||||
will recursively return the same instance if no changes have been made, making
|
||||
it ideal for using reference equality checks to detect changes.
|
||||
|
||||
Because of this, everything returned by updeep is frozen. Not only that, but
|
||||
updeep assumes that every object passed in to update is immutable, so it may
|
||||
freeze objects passed in as well. Note that the freezing only happens in
|
||||
development.
|
||||
|
||||
This fork of updeep requires Remeda, but works very well with any other utility function ([lodash], [Ramda], etc).
|
||||
|
||||
## Differences with the original Updeep
|
||||
|
||||
- Under the hood, the use of lodash has
|
||||
been replaced by Remeda (for better type support and tree-shaking abilities).
|
||||
|
||||
- The codebase has been ported to TypeScript (mostly for the lulz).
|
||||
|
||||
- The order of parameters in the non-curryied invocation of functions has been modified. In the original updeep the input object is the last parameter, whereas here it's the first.
|
||||
|
||||
```js
|
||||
// original updeep
|
||||
const dataIn = { a: 1, b: 2 };
|
||||
|
||||
let dataOut = u({ c: 3 }, dataIn); // simple call
|
||||
dataOut = u({ c: 3 })(dataIn); // curried
|
||||
|
||||
// updeep-remeda
|
||||
dataOut = u(dataIn, { c: 3 }); // simple call
|
||||
dataOut = u({ c: 3 })(dataIn); // curried
|
||||
```
|
||||
|
||||
- `withDefault` has been removed as the behavior can be implemented using
|
||||
Remeda's `pipe`, or a simple `??`.
|
||||
|
||||
- `u.omitted` has been renamed `u.skip`.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
$ npm install @yanick/updeep-remeda
|
||||
# or
|
||||
$ pnpm install @yanick/updeep-remeda
|
||||
```
|
||||
|
||||
## Full example
|
||||
|
||||
```js
|
||||
import u from "@yanick/updeep-remeda";
|
||||
|
||||
const person = {
|
||||
name: { first: "Bill", last: "Sagat" },
|
||||
children: [
|
||||
{ name: "Mary-Kate", age: 7 },
|
||||
{ name: "Ashley", age: 7 },
|
||||
],
|
||||
todo: ["Be funny", "Manage household"],
|
||||
email: "bill@example.com",
|
||||
version: 1,
|
||||
};
|
||||
|
||||
const inc = (i) => i + 1;
|
||||
|
||||
const eq = (x) => (y) => x === y;
|
||||
|
||||
const newPerson = u(person, {
|
||||
// Change first name
|
||||
name: { first: "Bob" },
|
||||
// Increment all children's ages
|
||||
children: u.map({ age: inc }),
|
||||
// Update email
|
||||
email: "bob@example.com",
|
||||
// Remove todo
|
||||
todo: u.reject(eq("Be funny")),
|
||||
// Increment version
|
||||
version: inc,
|
||||
});
|
||||
// => {
|
||||
// name: { first: 'Bob', last: 'Sagat' },
|
||||
// children: [
|
||||
// { name: 'Mary-Kate', age: 8 },
|
||||
// { name: 'Ashley', age: 8 }
|
||||
// ],
|
||||
// todo: [
|
||||
// 'Manage household'
|
||||
// ],
|
||||
// email: 'bob@example.com',
|
||||
// version: 2
|
||||
//}
|
||||
```
|
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
||||
div.svelte-ns3bhs{background:lightgreen;margin:0 2em;padding:.25em 1em;font-weight:400;border-radius:1em;color:#000}h4.svelte-ns3bhs{margin:0}
|
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
import{_ as r}from"./_layout-32f74dae.js";import{default as t}from"../components/pages/_layout.svelte-ac40f340.js";export{t as component,r as universal};
|
@ -1 +0,0 @@
|
||||
import{default as t}from"../components/error.svelte-884b4aac.js";export{t as component};
|
@ -1 +0,0 @@
|
||||
import{_ as e}from"./_page-a27df1e4.js";export{e as universal};
|
@ -1 +0,0 @@
|
||||
import{_ as e}from"./_page-115bdbbb.js";export{e as universal};
|
@ -1 +0,0 @@
|
||||
import{default as t}from"../components/pages/latest/api/_page.md-bd91dac8.js";export{t as component};
|
@ -1 +0,0 @@
|
||||
import{default as t}from"../components/pages/latest/get-started/_page.md-5c5fe5e6.js";export{t as component};
|
@ -1,9 +0,0 @@
|
||||
import{S as R,i as j,s as q,R as A,$ as ve,a0 as pe,m as k,h as d,a1 as K,b as E,_ as re,a2 as U,T as Z,k as w,a as D,l as C,c as S,n as b,p as z,W as v,f as L,g as ce,t as N,d as fe,ac as be,q as H,r as V,u as P,w as ye,x as ke,y as we,O as Ce,z as Ee,ao as Ie,e as x,U as ue,V as $,X as he,Y as de,Z as _e,Q as ee}from"./singletons-79165f10.js";import{c as T,g as Le}from"./contexts-c54c563b.js";function He(o){let e,t='<path fill="currentColor" d="M7 6V3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1h-3v3c0 .552-.45 1-1.007 1H4.007A1.001 1.001 0 0 1 3 21l.003-14c0-.552.45-1 1.007-1H7zM5.003 8L5 20h10V8H5.003zM9 6h8v10h2V4H9v2z"/>',l=[{viewBox:"0 0 24 24"},{width:"1.2em"},{height:"1.2em"},o[0]],i={};for(let a=0;a<l.length;a+=1)i=A(i,l[a]);return{c(){e=ve("svg"),this.h()},l(a){e=pe(a,"svg",{viewBox:!0,width:!0,height:!0});var s=k(e);s.forEach(d),this.h()},h(){K(e,i)},m(a,s){E(a,e,s),e.innerHTML=t},p(a,[s]){K(e,i=re(l,[{viewBox:"0 0 24 24"},{width:"1.2em"},{height:"1.2em"},s&1&&a[0]]))},i:U,o:U,d(a){a&&d(e)}}}function Ve(o,e,t){return o.$$set=l=>{t(0,e=A(A({},e),Z(l)))},e=Z(e),[e]}class Te extends R{constructor(e){super(),j(this,e,Ve,He,q,{})}}function te(o,e,t){const l=o.slice();return l[24]=e[t],l}function le(o){let e,t,l,i,a,s=o[7]&&ie(o),n=o[4]&&ne(o);return{c(){e=w("div"),s&&s.c(),t=D(),l=w("div"),i=D(),n&&n.c(),this.h()},l(r){e=C(r,"DIV",{class:!0,style:!0});var c=k(e);s&&s.l(c),t=S(c),l=C(c,"DIV",{class:!0}),k(l).forEach(d),i=S(c),n&&n.l(c),c.forEach(d),this.h()},h(){b(l,"class","flex-1"),b(e,"class","sticky top-0 left-0 z-10 flex items-center rounded-md pt-2 backdrop-blur supports-backdrop-blur:bg-white/60"),z(e,"background-color","var(--kd-code-fence-top-bar-bg)")},m(r,c){E(r,e,c),s&&s.m(e,null),v(e,t),v(e,l),v(e,i),n&&n.m(e,null),a=!0},p(r,c){r[7]?s?s.p(r,c):(s=ie(r),s.c(),s.m(e,t)):s&&(s.d(1),s=null),r[4]?n?(n.p(r,c),c&16&&L(n,1)):(n=ne(r),n.c(),L(n,1),n.m(e,null)):n&&(ce(),N(n,1,1,()=>{n=null}),fe())},i(r){a||(L(n),a=!0)},o(r){N(n),a=!1},d(r){r&&d(e),s&&s.d(),n&&n.d()}}}function ie(o){let e,t;return{c(){e=w("span"),t=H(o[6]),this.h()},l(l){e=C(l,"SPAN",{class:!0});var i=k(e);t=V(i,o[6]),i.forEach(d),this.h()},h(){b(e,"class","ml-3.5 font-mono text-sm text-gray-300")},m(l,i){E(l,e,i),v(e,t)},p(l,i){i&64&&P(t,l[6])},d(l){l&&d(e)}}}function ne(o){let e,t,l=o[11].code.copied+"",i,a,s,n,r,c,h=o[11].code.copy+"",m,_,u,p;return n=new Te({props:{width:"24",height:"24",class:T(o[5]?"opacity-0":"opacity-100 transition-opacity duration-600 ease-in")}}),{c(){e=w("button"),t=w("div"),i=H(l),s=D(),ye(n.$$.fragment),r=D(),c=w("span"),m=H(h),this.h()},l(g){e=C(g,"BUTTON",{type:!0,class:!0});var y=k(e);t=C(y,"DIV",{class:!0,"aria-hidden":!0,style:!0});var I=k(t);i=V(I,l),I.forEach(d),s=S(y),ke(n.$$.fragment,y),r=S(y),c=C(y,"SPAN",{class:!0});var O=k(c);m=V(O,h),O.forEach(d),y.forEach(d),this.h()},h(){b(t,"class",a=T("text-white absolute top-2.5 right-4 transition-opacity z-10 duration-300 px-2 py-1 rounded-md ease-out text-sm font-mono",o[5]?"opacity-100":"hidden opacity-0")),b(t,"aria-hidden","true"),z(t,"background-color","var(--kd-code-copied-bg-color)"),b(c,"class","sr-only"),b(e,"type","button"),b(e,"class","mr-2 px-2 py-1 hover:text-white")},m(g,y){E(g,e,y),v(e,t),v(t,i),v(e,s),we(n,e,null),v(e,r),v(e,c),v(c,m),_=!0,u||(p=Ce(e,"click",o[14]),u=!0)},p(g,y){(!_||y&2048)&&l!==(l=g[11].code.copied+"")&&P(i,l),(!_||y&32&&a!==(a=T("text-white absolute top-2.5 right-4 transition-opacity z-10 duration-300 px-2 py-1 rounded-md ease-out text-sm font-mono",g[5]?"opacity-100":"hidden opacity-0")))&&b(t,"class",a);const I={};y&32&&(I.class=T(g[5]?"opacity-0":"opacity-100 transition-opacity duration-600 ease-in")),n.$set(I),(!_||y&2048)&&h!==(h=g[11].code.copy+"")&&P(m,h)},i(g){_||(L(n.$$.fragment,g),_=!0)},o(g){N(n.$$.fragment,g),_=!1},d(g){g&&d(e),Ee(n),u=!1,p()}}}function se(o){let e,t,l,i=o[9].join(`
|
||||
`)+"",a,s;return{c(){e=w("pre"),t=H(" "),l=w("div"),a=H(i),s=H(`
|
||||
`),this.h()},l(n){e=C(n,"PRE",{class:!0,style:!0});var r=k(e);t=V(r," "),l=C(r,"DIV",{class:!0,"aria-hidden":!0});var c=k(l);a=V(c,i),c.forEach(d),s=V(r,`
|
||||
`),r.forEach(d),this.h()},h(){b(l,"class","hidden flex-none select-none text-right text-slate-600 992:block"),b(l,"aria-hidden","true"),b(e,"class","absolute top-3.5 left-0 m-0 flex flex-col text-sm leading-[27px]"),z(e,"background-color","transparent"),z(e,"border-radius","0"),z(e,"padding-top","0")},m(n,r){E(n,e,r),v(e,t),v(e,l),v(l,a),v(e,s)},p(n,r){r&512&&i!==(i=n[9].join(`
|
||||
`)+"")&&P(a,i)},d(n){n&&d(e)}}}function oe(o){let e,t=o[9],l=[];for(let i=0;i<t.length;i+=1)l[i]=ae(te(o,t,i));return{c(){e=w("div");for(let i=0;i<l.length;i+=1)l[i].c();this.h()},l(i){e=C(i,"DIV",{class:!0,"aria-hidden":!0});var a=k(e);for(let s=0;s<l.length;s+=1)l[s].l(a);a.forEach(d),this.h()},h(){b(e,"class","pointer-events-none absolute inset-0 mt-[0.7em] h-full w-full leading-[27px]"),b(e,"aria-hidden","true")},m(i,a){E(i,e,a);for(let s=0;s<l.length;s+=1)l[s].m(e,null)},p(i,a){if(a&9728){t=i[9];let s;for(s=0;s<t.length;s+=1){const n=te(i,t,s);l[s]?l[s].p(n,a):(l[s]=ae(n),l[s].c(),l[s].m(e,null))}for(;s<l.length;s+=1)l[s].d(1);l.length=t.length}},d(i){i&&d(e),Ie(l,i)}}}function De(o){let e;return{c(){e=w("br")},l(t){e=C(t,"BR",{})},m(t,l){E(t,e,l)},d(t){t&&d(e)}}}function Se(o){let e,t;return{c(){e=w("div"),t=H(`
|
||||
`),this.h()},l(l){e=C(l,"DIV",{class:!0,style:!0});var i=k(e);t=V(i,`
|
||||
`),i.forEach(d),this.h()},h(){b(e,"class","w-full border-l-[5px] font-mono text-transparent"),z(e,"border-color","var(--kd-code-highlight-border)"),z(e,"background-color","var(--kd-code-highlight-color)")},m(l,i){E(l,e,i),v(e,t)},d(l){l&&d(e)}}}function ae(o){let e,t;function l(s,n){return n&1536&&(e=null),e==null&&(e=!!s[13](s[24],s[10])),e?Se:De}let i=l(o,-1),a=i(o);return{c(){a.c(),t=x()},l(s){a.l(s),t=x()},m(s,n){a.m(s,n),E(s,t,n)},p(s,n){i!==(i=l(s,n))&&(a.d(1),a=i(s),a&&(a.c(),a.m(t.parentNode,t)))},d(s){a.d(s),s&&d(t)}}}function ze(o){let e,t,l,i,a,s,n,r,c,h=o[8]&&le(o),m=o[3]&&se(o),_=o[10].length>0&&oe(o);return{c(){e=w("div"),h&&h.c(),t=D(),l=w("div"),i=w("div"),s=D(),m&&m.c(),n=D(),_&&_.c(),this.h()},l(u){e=C(u,"DIV",{class:!0,style:!0});var p=k(e);h&&h.l(p),t=S(p),l=C(p,"DIV",{class:!0});var g=k(l);i=C(g,"DIV",{class:!0});var y=k(i);y.forEach(d),s=S(g),m&&m.l(g),n=S(g),_&&_.l(g),g.forEach(d),p.forEach(d),this.h()},h(){b(i,"class",a=T(o[3]&&"pl-10")),b(l,"class","code relative z-0 overflow-hidden"),b(e,"class",r=T("code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto","border border-gray-divider",o[0]&&`lang-${o[0]}`,o[1]&&`ext-${o[1]}`)),z(e,"background-color","var(--kd-code-fence-bg)")},m(u,p){E(u,e,p),h&&h.m(e,null),v(e,t),v(e,l),v(l,i),i.innerHTML=o[2],v(l,s),m&&m.m(l,null),v(l,n),_&&_.m(l,null),c=!0},p(u,[p]){u[8]?h?(h.p(u,p),p&256&&L(h,1)):(h=le(u),h.c(),L(h,1),h.m(e,t)):h&&(ce(),N(h,1,1,()=>{h=null}),fe()),(!c||p&4)&&(i.innerHTML=u[2]),(!c||p&8&&a!==(a=T(u[3]&&"pl-10")))&&b(i,"class",a),u[3]?m?m.p(u,p):(m=se(u),m.c(),m.m(l,n)):m&&(m.d(1),m=null),u[10].length>0?_?_.p(u,p):(_=oe(u),_.c(),_.m(l,null)):_&&(_.d(1),_=null),(!c||p&3&&r!==(r=T("code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto","border border-gray-divider",u[0]&&`lang-${u[0]}`,u[1]&&`ext-${u[1]}`)))&&b(e,"class",r)},i(u){c||(L(h),c=!0)},o(u){N(h),c=!1},d(u){u&&d(e),h&&h.d(),m&&m.d(),_&&_.d()}}}function Ne(o,e,t){let l,i,a,s,n,r,c,{lang:h=null}=e,{ext:m=null}=e,{code:_=null}=e,{rawCode:u=null}=e,{title:p=null}=e,{linesCount:g=((_==null?void 0:_.match(/"line"/g))||[]).length}=e,{showLineNumbers:y=!1}=e,{highlightLines:I=[]}=e,{showCopyCode:O=!1}=e,{copyHighlightOnly:Q=!1}=e,{copySteps:B=!1}=e;const G=Le();be(o,G,f=>t(11,c=f));let M=1,W=[];const J=(f,X)=>l.some(([Y,ge])=>f>=Y&&f<=ge);let F=!1;async function me(){try{const f=l.length>0&&(Q||B)?a.split(`
|
||||
`).filter((X,Y)=>J(Y+1)).join(`
|
||||
`):a;await navigator.clipboard.writeText(f)}catch{}if(t(5,F=!0),B){const f=M+1,X=I.length>0?I.length:i.length;t(21,M=f>X?1:f)}}return o.$$set=f=>{"lang"in f&&t(0,h=f.lang),"ext"in f&&t(1,m=f.ext),"code"in f&&t(2,_=f.code),"rawCode"in f&&t(15,u=f.rawCode),"title"in f&&t(16,p=f.title),"linesCount"in f&&t(17,g=f.linesCount),"showLineNumbers"in f&&t(3,y=f.showLineNumbers),"highlightLines"in f&&t(18,I=f.highlightLines),"showCopyCode"in f&&t(4,O=f.showCopyCode),"copyHighlightOnly"in f&&t(19,Q=f.copyHighlightOnly),"copySteps"in f&&t(20,B=f.copySteps)},o.$$.update=()=>{o.$$.dirty&3407872&&B&&t(22,W=[I[M-1]??[M,M]]),o.$$.dirty&5505024&&t(10,l=B?W:I),o.$$.dirty&131072&&t(9,i=[...Array(g-1).keys()].map(f=>f+1)),o.$$.dirty&32768&&(a=u==null?void 0:u.replace(/​/g,"")),o.$$.dirty&32&&F&&setTimeout(()=>{t(5,F=!1)},400),o.$$.dirty&65552&&t(8,s=p||O),o.$$.dirty&65538&&t(7,n=p||m),o.$$.dirty&65538&&t(6,r=p??(m==="sh"?"terminal":m))},[h,m,_,y,O,F,r,n,s,i,l,c,G,J,me,u,p,g,I,Q,B,M,W]}class Fe extends R{constructor(e){super(),j(this,e,Ne,ze,q,{lang:0,ext:1,code:2,rawCode:15,title:16,linesCount:17,showLineNumbers:3,highlightLines:18,showCopyCode:4,copyHighlightOnly:19,copySteps:20})}}function Oe(o){let e,t;return{c(){e=w("code"),t=H(o[0])},l(l){e=C(l,"CODE",{});var i=k(e);t=V(i,o[0]),i.forEach(d)},m(l,i){E(l,e,i),v(e,t)},p(l,[i]){i&1&&P(t,l[0])},i:U,o:U,d(l){l&&d(e)}}}function Be(o,e,t){let{code:l}=e;return o.$$set=i=>{"code"in i&&t(0,l=i.code)},[l]}class Ue extends R{constructor(e){super(),j(this,e,Be,Oe,q,{code:0})}}function Me(o){let e,t;const l=o[2].default,i=ue(l,o,o[1],null);let a=[o[0]],s={};for(let n=0;n<a.length;n+=1)s=A(s,a[n]);return{c(){e=w("a"),i&&i.c(),this.h()},l(n){e=C(n,"A",{});var r=k(e);i&&i.l(r),r.forEach(d),this.h()},h(){$(e,s)},m(n,r){E(n,e,r),i&&i.m(e,null),t=!0},p(n,[r]){i&&i.p&&(!t||r&2)&&he(i,l,n,n[1],t?_e(l,n[1],r,null):de(n[1]),null),$(e,s=re(a,[r&1&&n[0]]))},i(n){t||(L(i,n),t=!0)},o(n){N(i,n),t=!1},d(n){n&&d(e),i&&i.d(n)}}}function Ae(o,e,t){const l=[];let i=ee(e,l),{$$slots:a={},$$scope:s}=e;return o.$$set=n=>{e=A(A({},e),Z(n)),t(0,i=ee(e,l)),"$$scope"in n&&t(1,s=n.$$scope)},[i,s,a]}class Qe extends R{constructor(e){super(),j(this,e,Ae,Me,q,{})}}function Pe(o){let e,t,l,i,a;const s=o[1].default,n=ue(s,o,o[0],null);return{c(){e=w("div"),t=w("h4"),l=H("💡 Info"),i=D(),n&&n.c(),this.h()},l(r){e=C(r,"DIV",{class:!0});var c=k(e);t=C(c,"H4",{class:!0});var h=k(t);l=V(h,"💡 Info"),h.forEach(d),i=S(c),n&&n.l(c),c.forEach(d),this.h()},h(){b(t,"class","svelte-ns3bhs"),b(e,"class","svelte-ns3bhs")},m(r,c){E(r,e,c),v(e,t),v(t,l),v(e,i),n&&n.m(e,null),a=!0},p(r,[c]){n&&n.p&&(!a||c&1)&&he(n,s,r,r[0],a?_e(s,r[0],c,null):de(r[0]),null)},i(r){a||(L(n,r),a=!0)},o(r){N(n,r),a=!1},d(r){r&&d(e),n&&n.d(r)}}}function Re(o,e,t){let{$$slots:l={},$$scope:i}=e;return o.$$set=a=>{"$$scope"in a&&t(0,i=a.$$scope)},[i,l]}class We extends R{constructor(e){super(),j(this,e,Re,Pe,q,{})}}export{Ue as C,We as I,Qe as L,Fe as a};
|
@ -1 +0,0 @@
|
||||
function o(t){return typeof t=="string"}function s(t){return u(t).replace(/\//g,"_")}function u(t){return t.replace(/^\//,"").replace(/\/$/,"")}async function l(t){const r=t.url.pathname;try{const e=`/kit-docs/${r==="/"?"index":s(r.replace(/\.html$/,""))}`;return await(await t.fetch(e+".meta")).json()}catch{return null}}async function i(t,r){const e=d(r.url,t);if(!e)return null;try{return(await r.fetch(`/kit-docs/${s(e)}.sidebar`)).json()}catch{return null}}function d(t,r){if(o(r))return r;const e=t.pathname,n=Object.keys(r).sort((a,c)=>c.length-a.length);for(const a of n)if(e.startsWith(a))return r[a];return null}function f(t={}){return async r=>{const e=await l(r);return{...t.sidebar?{meta:e,sidebar:await i(t.sidebar,r)}:{meta:e}}}}const h=!0,b=f({sidebar:{"/":null,"/docs":"/docs"}}),m=Object.freeze(Object.defineProperty({__proto__:null,load:b,prerender:h},Symbol.toStringTag,{value:"Module"}));export{m as _,b as l,h as p};
|
@ -1 +0,0 @@
|
||||
import{r as e}from"./index-35a671a5.js";const t=!0;async function r(){throw e(307,"/latest/get-started")}const a=Object.freeze(Object.defineProperty({__proto__:null,load:r,prerender:t},Symbol.toStringTag,{value:"Module"}));export{a as _,r as l,t as p};
|
@ -1 +0,0 @@
|
||||
import{r as e}from"./index-35a671a5.js";const t=!0;async function r(){throw e(307,"/latest/get-started")}const a=Object.freeze(Object.defineProperty({__proto__:null,load:r,prerender:t},Symbol.toStringTag,{value:"Module"}));export{a as _,r as l,t as p};
|
@ -1 +0,0 @@
|
||||
import{am as p,an as d,a8 as E,a9 as a}from"./singletons-79165f10.js";import{p as I}from"./stores-1c9d0b64.js";function D(t){return t===null}function F(t){return typeof t>"u"}function C(t){return typeof t=="string"}function j(t){return typeof t=="function"}function G(t){return t===window}function O(t){return t instanceof RegExp}function N(t){var n,s,e="";if(typeof t=="string"||typeof t=="number")e+=t;else if(typeof t=="object")if(Array.isArray(t))for(n=0;n<t.length;n++)t[n]&&(s=N(t[n]))&&(e&&(e+=" "),e+=s);else for(n in t)t[n]&&(e&&(e+=" "),e+=n);return e}function K(){for(var t,n,s=0,e="";s<arguments.length;)(t=arguments[s++])&&(n=N(t))&&(e&&(e+=" "),e+=n);return e}function _(t){return t.charAt(0).toUpperCase()+t.slice(1)}function x(t){return _((t==null?void 0:t.replace(/-./g,n=>" "+n[1].toUpperCase()))??"")}function v(t){return(t==null?void 0:t.replace(/\s/g,"-").toLowerCase())??""}const h=Symbol(""),X={canUpdateHash:()=>!0,cleanHash:t=>t};function Y(){try{return p(h)}catch(t){console.error(t),console.warn("[kit-docs]: attempted to get navigation context before setting it.")}}function M(t){d(h,t)}const T=Symbol("");function P(){try{return p(T)}catch(t){console.error(t),console.warn("[kit-docs]: attempted to get navbar context before setting it.")}}function V(t){d(T,t)}function w(t=null){var e;if(!t)return{links:{}};const n={},s=((e=t.baseUrl)==null?void 0:e.replace(/\/$/,""))??"";for(const i of Object.keys(t.links)){const u=t.links[i],g=v(i),l=C(t.links[i][0])?x(i):i;for(const c of u){const b=C(c)?{title:x(c),slug:`${s}/${g}/${c}`}:c;n[l]||(n[l]=[]),n[l].push(b)}}return{...t,links:n}}function R({match:t,slug:n},s){const e=s.replace(/\.html/,"");return t==="deep"?e===n||e.startsWith(n)&&e[n.length]==="/":O(t)?t.test(n):e===n}const k=Symbol();function W(t){const n=t&&"subscribe"in t?t:E(t),s=a(n,o=>w(o)),e=a(s,o=>Object.values(o.links).flat()),i=a([e,I],([o,r])=>o.findIndex(f=>R(f,r.url.pathname))),u=a([e,i],([o,r])=>o[r]),g=a([e,i],([o,r])=>o[r-1]),l=a([e,i],([o,r])=>o[r+1]),c=a([s,u],([o,r])=>{const f=Object.keys(o.links).find(A=>{var m;return(m=o.links[A])==null?void 0:m.some(y=>y.title===(r==null?void 0:r.title)&&y.slug===(r==null?void 0:r.slug))});return f!=="."?f:null});return{config:s,allLinks:e,activeLinkIndex:i,activeLink:u,previousLink:g,nextLink:l,activeCategory:c}}function z(t){d(k,t)}function B(){try{return p(k)}catch(t){console.error(t),console.warn("[kit-docs]: attempted to get sidebar context before setting it.")}}const H={nav:{previous:"Previous",next:"Next",mainMenu:"Main navigation menu",openSidebar:"Open main sidebar",options:"Options",links:"Links"},toc:{title:"On this page"},colorScheme:{title:"Color Scheme",light:"Light",dark:"Dark",system:"System",theme:"Theme"},dialog:{close:"Close dialog"},admonition:{note:"NOTE",info:"INFO",tip:"TIP",warning:"WARNING",danger:"DANGER",experimental:"EXPERIMENTAL"},code:{copy:"Copy code",copied:"Copied!"}},S=Symbol();function q(){try{return p(S)}catch(t){console.error(t),console.warn("[kit-docs]: attempted to get i18n context before setting it.")}}function J(t){d(S,t)}export{X as D,G as a,D as b,K as c,P as d,j as e,B as f,q as g,R as h,F as i,Y as j,V as k,z as l,W as m,J as n,H as o,M as s,_ as u};
|
@ -1 +0,0 @@
|
||||
class i{constructor(t,s){this.status=t,typeof s=="string"?this.body={message:s}:s?this.body=s:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class e{constructor(t,s){this.status=t,this.location=s}}export{i as H,e as R};
|
@ -1 +0,0 @@
|
||||
import{R as t}from"./control-f5b05b5f.js";function n(r,e){return new t(r,e)}export{n as r};
|
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
import{G as e}from"./singletons-79165f10.js";const r=()=>{const s=e;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},b={subscribe(s){return r().page.subscribe(s)}};export{b as p};
|
@ -1 +0,0 @@
|
||||
import{S as x,i as S,s as g,k as _,q as h,a as k,l as d,m as v,r as b,h as m,c as y,b as f,W as E,u as $,a2 as q,ac as C}from"../chunks/singletons-79165f10.js";import{p as H}from"../chunks/stores-1c9d0b64.js";function P(n){var u;let a,t=n[0].status+"",r,o,l,i=((u=n[0].error)==null?void 0:u.message)+"",c;return{c(){a=_("h1"),r=h(t),o=k(),l=_("p"),c=h(i)},l(e){a=d(e,"H1",{});var s=v(a);r=b(s,t),s.forEach(m),o=y(e),l=d(e,"P",{});var p=v(l);c=b(p,i),p.forEach(m)},m(e,s){f(e,a,s),E(a,r),f(e,o,s),f(e,l,s),E(l,c)},p(e,[s]){var p;s&1&&t!==(t=e[0].status+"")&&$(r,t),s&1&&i!==(i=((p=e[0].error)==null?void 0:p.message)+"")&&$(c,i)},i:q,o:q,d(e){e&&m(a),e&&m(o),e&&m(l)}}}function W(n,a,t){let r;return C(n,H,o=>t(0,r=o)),[r]}class z extends x{constructor(a){super(),S(this,a,W,P,g,{})}}export{z as default};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,78 +0,0 @@
|
||||
import{S as ln,i as pn,s as on,k as t,q as y,a as F,w as A,l as r,m as c,r as D,h as n,c as C,x as f,n as U,b as o,W as l,y as u,f as m,t as d,z as $,a2 as tn}from"../../../../chunks/singletons-79165f10.js";import{L as vs,I as rn,a as Gs,C as ss}from"../../../../chunks/Info-8cb253a1.js";function cn(b){let e;return{c(){e=y("#")},l(p){e=D(p,"#")},m(p,i){o(p,e,i)},d(p){p&&n(e)}}}function yn(b){let e,p,i,g,_;return i=new ss({props:{code:"updeep"}}),{c(){e=t("p"),p=y(`This is a fork of the main updeep package. For ease of reading — not to
|
||||
mention ease of shamelessly lifting large pieces of the original
|
||||
documentation — in this documentation all mentions of `),A(i.$$.fragment),g=y(` refers to this
|
||||
fork.`)},l(h){e=r(h,"P",{});var E=c(e);p=D(E,`This is a fork of the main updeep package. For ease of reading — not to
|
||||
mention ease of shamelessly lifting large pieces of the original
|
||||
documentation — in this documentation all mentions of `),f(i.$$.fragment,E),g=D(E,` refers to this
|
||||
fork.`),E.forEach(n)},m(h,E){o(h,e,E),l(e,p),u(i,e,null),l(e,g),_=!0},p:tn,i(h){_||(m(i.$$.fragment,h),_=!0)},o(h){d(i.$$.fragment,h),_=!1},d(h){h&&n(e),$(i)}}}function Dn(b){let e;return{c(){e=y("#")},l(p){e=D(p,"#")},m(p,i){o(p,e,i)},d(p){p&&n(e)}}}function Fn(b){let e;return{c(){e=y("#")},l(p){e=D(p,"#")},m(p,i){o(p,e,i)},d(p){p&&n(e)}}}function Cn(b){let e;return{c(){e=y("#")},l(p){e=D(p,"#")},m(p,i){o(p,e,i)},d(p){p&&n(e)}}}function An(b){let e,p,i,g,_,h,E,w,j,ks,Cs,P,As,J,ws,fs,V,qs,us,X,xs,ms,q,z,Is,ds,v,ns,as,js,Ps,es,ls,zs,Ts,ps,os,Ls,$s,O,T,ts,k,S,Rs,H,Bs,M,Us,Os,rs,L,N,Ss,K,Hs,hs,x,R,Ms,bs,Q,I,B,Ns,Es,W,gs;return j=new vs({props:{class:"header-anchor",href:"#about","aria-hidden":"true",$$slots:{default:[cn]},$$scope:{ctx:b}}}),P=new rn({props:{$$slots:{default:[yn]},$$scope:{ctx:b}}}),z=new vs({props:{class:"header-anchor",href:"#differences-with-the-original-updeep","aria-hidden":"true",$$slots:{default:[Dn]},$$scope:{ctx:b}}}),O=new Gs({props:{lang:"javascript",ext:"js",linesCount:10,code:`<pre><code><span class="line"><span style="color: #676E95">// original updeep</span></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> dataIn </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">a</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">b</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">2</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">};</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">let</span><span style="color: #A6ACCD"> dataOut </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">c</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">3</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span><span style="color: #A6ACCD"> dataIn)</span><span style="color: #89DDFF">;</span><span style="color: #A6ACCD"> </span><span style="color: #676E95">// simple call</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD">dataOut </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">c</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">3</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)(dataIn)</span><span style="color: #89DDFF">;</span><span style="color: #A6ACCD"> </span><span style="color: #676E95">// curried</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #676E95">// updeep-remeda</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD">dataOut </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(dataIn</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">c</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">3</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span><span style="color: #A6ACCD"> </span><span style="color: #676E95">// simple call</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD">dataOut </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">c</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">3</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)(dataIn)</span><span style="color: #89DDFF">;</span><span style="color: #A6ACCD"> </span><span style="color: #676E95">// curried</span></span>
|
||||
<span class="line"></span></code></pre>`}}),S=new ss({props:{code:"withDefault"}}),H=new ss({props:{code:"pipe"}}),M=new ss({props:{code:"??"}}),N=new ss({props:{code:"u.omitted"}}),K=new ss({props:{code:"u.skip"}}),R=new vs({props:{class:"header-anchor",href:"#installation","aria-hidden":"true",$$slots:{default:[Fn]},$$scope:{ctx:b}}}),Q=new Gs({props:{lang:"bash",ext:"sh",linesCount:4,code:`<pre><code><span class="line"><span style="color: #A6ACCD">$ npm install @yanick/updeep-remeda</span></span>
|
||||
<span class="line"><span style="color: #676E95"># or</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD">$ pnpm install @yanick/updeep-remeda</span></span>
|
||||
<span class="line"></span></code></pre>`}}),B=new vs({props:{class:"header-anchor",href:"#full-example","aria-hidden":"true",$$slots:{default:[Cn]},$$scope:{ctx:b}}}),W=new Gs({props:{lang:"javascript",ext:"js",linesCount:42,code:`<pre><code><span class="line"><span style="color: #89DDFF">import</span><span style="color: #A6ACCD"> u </span><span style="color: #89DDFF">from</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">@yanick/updeep-remeda</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> person </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">first</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Bill</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">last</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Sagat</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">children</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Mary-Kate</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">age</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">7</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Ashley</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">age</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">7</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> ]</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">todo</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Be funny</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Manage household</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD">]</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">email</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">bill@example.com</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">version</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">};</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> inc </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">(</span><span style="color: #A6ACCD">i</span><span style="color: #89DDFF">)</span><span style="color: #A6ACCD"> </span><span style="color: #C792EA">=></span><span style="color: #A6ACCD"> i </span><span style="color: #89DDFF">+</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> eq </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">(</span><span style="color: #A6ACCD">x</span><span style="color: #89DDFF">)</span><span style="color: #A6ACCD"> </span><span style="color: #C792EA">=></span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">(</span><span style="color: #A6ACCD">y</span><span style="color: #89DDFF">)</span><span style="color: #A6ACCD"> </span><span style="color: #C792EA">=></span><span style="color: #A6ACCD"> x </span><span style="color: #89DDFF">===</span><span style="color: #A6ACCD"> y</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> newPerson </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(person</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #89DDFF"> </span><span style="color: #676E95">// Change first name</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">first</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Bob</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span></span>
|
||||
<span class="line"><span style="color: #89DDFF"> </span><span style="color: #676E95">// Increment all children's ages</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">children</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> u</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">map</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">age</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> inc </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF"> </span><span style="color: #676E95">// Update email</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">email</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">bob@example.com</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF"> </span><span style="color: #676E95">// Remove todo</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">todo</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> u</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">reject</span><span style="color: #A6ACCD">(</span><span style="color: #82AAFF">eq</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Be funny</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD">))</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF"> </span><span style="color: #676E95">// Increment version</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">version</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> inc</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"><span style="color: #676E95">// => {</span></span>
|
||||
<span class="line"><span style="color: #676E95">// name: { first: 'Bob', last: 'Sagat' },</span></span>
|
||||
<span class="line"><span style="color: #676E95">// children: [</span></span>
|
||||
<span class="line"><span style="color: #676E95">// { name: 'Mary-Kate', age: 8 },</span></span>
|
||||
<span class="line"><span style="color: #676E95">// { name: 'Ashley', age: 8 }</span></span>
|
||||
<span class="line"><span style="color: #676E95">// ],</span></span>
|
||||
<span class="line"><span style="color: #676E95">// todo: [</span></span>
|
||||
<span class="line"><span style="color: #676E95">// 'Manage household'</span></span>
|
||||
<span class="line"><span style="color: #676E95">// ],</span></span>
|
||||
<span class="line"><span style="color: #676E95">// email: 'bob@example.com',</span></span>
|
||||
<span class="line"><span style="color: #676E95">// version: 2</span></span>
|
||||
<span class="line"><span style="color: #676E95">//}</span></span>
|
||||
<span class="line"></span></code></pre>`}}),{c(){e=t("h1"),p=y("updeep-remeda"),i=F(),g=t("blockquote"),_=t("p"),h=y(`Easily update nested frozen objects and arrays in a declarative and immutable
|
||||
manner.`),E=F(),w=t("h2"),A(j.$$.fragment),ks=y(" About"),Cs=F(),A(P.$$.fragment),As=F(),J=t("p"),ws=y(`updeep makes updating deeply nested objects/arrays painless by allowing you to
|
||||
declare the updates you would like to make and it will take care of the rest. It
|
||||
will recursively return the same instance if no changes have been made, making
|
||||
it ideal for using reference equality checks to detect changes.`),fs=F(),V=t("p"),qs=y(`Because of this, everything returned by updeep is frozen. Not only that, but
|
||||
updeep assumes that every object passed in to update is immutable, so it may
|
||||
freeze objects passed in as well. Note that the freezing only happens in
|
||||
development.`),us=F(),X=t("p"),xs=y("This fork of updeep requires Remeda, but works very well with any other utility function ([lodash], [Ramda], etc)."),ms=F(),q=t("h2"),A(z.$$.fragment),Is=y(" Differences with the original Updeep"),ds=F(),v=t("ul"),ns=t("li"),as=t("p"),js=y(`Under the hood, the use of lodash has
|
||||
been replaced by Remeda (for better type support and tree-shaking abilities).`),Ps=F(),es=t("li"),ls=t("p"),zs=y("The codebase has been ported to TypeScript (mostly for the lulz)."),Ts=F(),ps=t("li"),os=t("p"),Ls=y("The order of parameters in the non-curryied invocation of functions has been modified. In the original updeep the input object is the last parameter, whereas here it's the first."),$s=F(),A(O.$$.fragment),T=t("ul"),ts=t("li"),k=t("p"),A(S.$$.fragment),Rs=y(` has been removed as the behavior can be implemented using
|
||||
Remeda's `),A(H.$$.fragment),Bs=y(", or a simple "),A(M.$$.fragment),Us=y("."),Os=F(),rs=t("li"),L=t("p"),A(N.$$.fragment),Ss=y(" has been renamed "),A(K.$$.fragment),Hs=y("."),hs=F(),x=t("h2"),A(R.$$.fragment),Ms=y(" Installation"),bs=F(),A(Q.$$.fragment),I=t("h2"),A(B.$$.fragment),Ns=y(" Full example"),Es=F(),A(W.$$.fragment),this.h()},l(s){e=r(s,"H1",{});var a=c(e);p=D(a,"updeep-remeda"),a.forEach(n),i=C(s),g=r(s,"BLOCKQUOTE",{});var cs=c(g);_=r(cs,"P",{});var ys=c(_);h=D(ys,`Easily update nested frozen objects and arrays in a declarative and immutable
|
||||
manner.`),ys.forEach(n),cs.forEach(n),E=C(s),w=r(s,"H2",{id:!0,tabindex:!0});var Y=c(w);f(j.$$.fragment,Y),ks=D(Y," About"),Y.forEach(n),Cs=C(s),f(P.$$.fragment,s),As=C(s),J=r(s,"P",{});var Ds=c(J);ws=D(Ds,`updeep makes updating deeply nested objects/arrays painless by allowing you to
|
||||
declare the updates you would like to make and it will take care of the rest. It
|
||||
will recursively return the same instance if no changes have been made, making
|
||||
it ideal for using reference equality checks to detect changes.`),Ds.forEach(n),fs=C(s),V=r(s,"P",{});var is=c(V);qs=D(is,`Because of this, everything returned by updeep is frozen. Not only that, but
|
||||
updeep assumes that every object passed in to update is immutable, so it may
|
||||
freeze objects passed in as well. Note that the freezing only happens in
|
||||
development.`),is.forEach(n),us=C(s),X=r(s,"P",{});var Js=c(X);xs=D(Js,"This fork of updeep requires Remeda, but works very well with any other utility function ([lodash], [Ramda], etc)."),Js.forEach(n),ms=C(s),q=r(s,"H2",{id:!0,tabindex:!0});var Ks=c(q);f(z.$$.fragment,Ks),Is=D(Ks," Differences with the original Updeep"),Ks.forEach(n),ds=C(s),v=r(s,"UL",{});var Z=c(v);ns=r(Z,"LI",{});var Vs=c(ns);as=r(Vs,"P",{});var Xs=c(as);js=D(Xs,`Under the hood, the use of lodash has
|
||||
been replaced by Remeda (for better type support and tree-shaking abilities).`),Xs.forEach(n),Vs.forEach(n),Ps=C(Z),es=r(Z,"LI",{});var Ys=c(es);ls=r(Ys,"P",{});var Zs=c(ls);zs=D(Zs,"The codebase has been ported to TypeScript (mostly for the lulz)."),Zs.forEach(n),Ys.forEach(n),Ts=C(Z),ps=r(Z,"LI",{});var sn=c(ps);os=r(sn,"P",{});var nn=c(os);Ls=D(nn,"The order of parameters in the non-curryied invocation of functions has been modified. In the original updeep the input object is the last parameter, whereas here it's the first."),nn.forEach(n),sn.forEach(n),Z.forEach(n),$s=C(s),f(O.$$.fragment,s),T=r(s,"UL",{});var _s=c(T);ts=r(_s,"LI",{});var an=c(ts);k=r(an,"P",{});var G=c(k);f(S.$$.fragment,G),Rs=D(G,` has been removed as the behavior can be implemented using
|
||||
Remeda's `),f(H.$$.fragment,G),Bs=D(G,", or a simple "),f(M.$$.fragment,G),Us=D(G,"."),G.forEach(n),an.forEach(n),Os=C(_s),rs=r(_s,"LI",{});var en=c(rs);L=r(en,"P",{});var Fs=c(L);f(N.$$.fragment,Fs),Ss=D(Fs," has been renamed "),f(K.$$.fragment,Fs),Hs=D(Fs,"."),Fs.forEach(n),en.forEach(n),_s.forEach(n),hs=C(s),x=r(s,"H2",{id:!0,tabindex:!0});var Qs=c(x);f(R.$$.fragment,Qs),Ms=D(Qs," Installation"),Qs.forEach(n),bs=C(s),f(Q.$$.fragment,s),I=r(s,"H2",{id:!0,tabindex:!0});var Ws=c(I);f(B.$$.fragment,Ws),Ns=D(Ws," Full example"),Ws.forEach(n),Es=C(s),f(W.$$.fragment,s),this.h()},h(){U(w,"id","about"),U(w,"tabindex","-1"),U(q,"id","differences-with-the-original-updeep"),U(q,"tabindex","-1"),U(x,"id","installation"),U(x,"tabindex","-1"),U(I,"id","full-example"),U(I,"tabindex","-1")},m(s,a){o(s,e,a),l(e,p),o(s,i,a),o(s,g,a),l(g,_),l(_,h),o(s,E,a),o(s,w,a),u(j,w,null),l(w,ks),o(s,Cs,a),u(P,s,a),o(s,As,a),o(s,J,a),l(J,ws),o(s,fs,a),o(s,V,a),l(V,qs),o(s,us,a),o(s,X,a),l(X,xs),o(s,ms,a),o(s,q,a),u(z,q,null),l(q,Is),o(s,ds,a),o(s,v,a),l(v,ns),l(ns,as),l(as,js),l(v,Ps),l(v,es),l(es,ls),l(ls,zs),l(v,Ts),l(v,ps),l(ps,os),l(os,Ls),o(s,$s,a),u(O,s,a),o(s,T,a),l(T,ts),l(ts,k),u(S,k,null),l(k,Rs),u(H,k,null),l(k,Bs),u(M,k,null),l(k,Us),l(T,Os),l(T,rs),l(rs,L),u(N,L,null),l(L,Ss),u(K,L,null),l(L,Hs),o(s,hs,a),o(s,x,a),u(R,x,null),l(x,Ms),o(s,bs,a),u(Q,s,a),o(s,I,a),u(B,I,null),l(I,Ns),o(s,Es,a),u(W,s,a),gs=!0},p(s,[a]){const cs={};a&1&&(cs.$$scope={dirty:a,ctx:s}),j.$set(cs);const ys={};a&1&&(ys.$$scope={dirty:a,ctx:s}),P.$set(ys);const Y={};a&1&&(Y.$$scope={dirty:a,ctx:s}),z.$set(Y);const Ds={};a&1&&(Ds.$$scope={dirty:a,ctx:s}),R.$set(Ds);const is={};a&1&&(is.$$scope={dirty:a,ctx:s}),B.$set(is)},i(s){gs||(m(j.$$.fragment,s),m(P.$$.fragment,s),m(z.$$.fragment,s),m(O.$$.fragment,s),m(S.$$.fragment,s),m(H.$$.fragment,s),m(M.$$.fragment,s),m(N.$$.fragment,s),m(K.$$.fragment,s),m(R.$$.fragment,s),m(Q.$$.fragment,s),m(B.$$.fragment,s),m(W.$$.fragment,s),gs=!0)},o(s){d(j.$$.fragment,s),d(P.$$.fragment,s),d(z.$$.fragment,s),d(O.$$.fragment,s),d(S.$$.fragment,s),d(H.$$.fragment,s),d(M.$$.fragment,s),d(N.$$.fragment,s),d(K.$$.fragment,s),d(R.$$.fragment,s),d(Q.$$.fragment,s),d(B.$$.fragment,s),d(W.$$.fragment,s),gs=!1},d(s){s&&n(e),s&&n(i),s&&n(g),s&&n(E),s&&n(w),$(j),s&&n(Cs),$(P,s),s&&n(As),s&&n(J),s&&n(fs),s&&n(V),s&&n(us),s&&n(X),s&&n(ms),s&&n(q),$(z),s&&n(ds),s&&n(v),s&&n($s),$(O,s),s&&n(T),$(S),$(H),$(M),$(N),$(K),s&&n(hs),s&&n(x),$(R),s&&n(bs),$(Q,s),s&&n(I),$(B),s&&n(Es),$(W,s)}}}class mn extends ln{constructor(e){super(),pn(this,e,null,An,on,{})}}export{mn as default};
|
@ -1 +0,0 @@
|
||||
import{l as a,p as o}from"../../chunks/_layout-32f74dae.js";export{a as load,o as prerender};
|
@ -1 +0,0 @@
|
||||
import"../../chunks/index-35a671a5.js";import{l as p,p as a}from"../../chunks/_page-a27df1e4.js";export{p as load,a as prerender};
|
@ -1 +0,0 @@
|
||||
import"../../../chunks/index-35a671a5.js";import{l as p,p as a}from"../../../chunks/_page-115bdbbb.js";export{p as load,a as prerender};
|
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
{"version":"1673374967075"}
|
2
docs/_navbar.md
Normal file
2
docs/_navbar.md
Normal file
@ -0,0 +1,2 @@
|
||||
- [Getting started](.)
|
||||
- [API](api)
|
BIN
docs/favicon.png
BIN
docs/favicon.png
Binary file not shown.
Before Width: | Height: | Size: 1.5 KiB |
@ -1 +1,28 @@
|
||||
<meta http-equiv="refresh" content="0;url=/latest/get-started">
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>Document</title>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta name="description" content="Description" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0"
|
||||
/>
|
||||
<link rel="stylesheet" href="vendor/themes/vue.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script>
|
||||
window.$docsify = {
|
||||
loadNavbar: true,
|
||||
name: "updeep-remeda",
|
||||
repo: "https://github.com/yanick/updeep-remeda",
|
||||
alias: {
|
||||
"/api": "/latest/api",
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<script src="vendor/docsify.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1 +0,0 @@
|
||||
{"excerpt":"","headers":[{"level":2,"title":"Importing","slug":"importing","children":[]},{"level":2,"title":"u(dataIn, updates)","slug":"u-datain-updates","children":[]},{"level":2,"title":"u.update(dataIn, updates)","slug":"u-update-datain-updates","children":[{"level":3,"title":"Simple update","slug":"simple-update","children":[]},{"level":3,"title":"Multiple updates","slug":"multiple-updates","children":[]},{"level":3,"title":"Use a function","slug":"use-a-function","children":[]},{"level":3,"title":"Array Manipulation","slug":"array-manipulation","children":[]},{"level":3,"title":"Default input data","slug":"default-input-data","children":[]},{"level":3,"title":"Partial application","slug":"partial-application","children":[]}]},{"level":2,"title":"u.freeze(dataIn)","slug":"u-freeze-datain","children":[]},{"level":2,"title":"u.updateIn(dataIn, path, value)","slug":"u-updatein-datain-path-value","children":[]},{"level":2,"title":"u.constant(dataIn)","slug":"u-constant-datain","children":[]},{"level":2,"title":"u.if(dataIn, predicate, updates)","slug":"u-if-datain-predicate-updates","children":[]},{"level":2,"title":"u.filter(arrayIn, predicate)","slug":"u-filter-arrayin-predicate","children":[]},{"level":2,"title":"u.reject(arrayIn, predicate)","slug":"u-reject-arrayin-predicate","children":[]},{"level":2,"title":"u.pickBy(objectIn, predicate)","slug":"u-pickby-objectin-predicate","children":[]},{"level":2,"title":"u.omitBy(objectIn, predicate)","slug":"u-omitby-objectin-predicate","children":[]},{"level":2,"title":"u.pick(objectIn, keys)","slug":"u-pick-objectin-keys","children":[]},{"level":2,"title":"u.omit(objectIn, keys)","slug":"u-omit-objectin-keys","children":[]},{"level":2,"title":"u.matches(dataIn, condition)","slug":"u-matches-datain-condition","children":[]}],"title":"API","frontmatter":{"title":"API"},"lastUpdated":1673371541420}
|
@ -1 +0,0 @@
|
||||
{"excerpt":"","headers":[{"level":2,"title":"About","slug":"about","children":[]},{"level":2,"title":"Differences with the original Updeep","slug":"differences-with-the-original-updeep","children":[]},{"level":2,"title":"Installation","slug":"installation","children":[]},{"level":2,"title":"Full example","slug":"full-example","children":[]}],"title":"Get Started","frontmatter":{"title":"Get Started"},"lastUpdated":1673371541420}
|
@ -1 +0,0 @@
|
||||
<meta http-equiv="refresh" content="0;url=/latest/get-started">
|
@ -1,525 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="../favicon.png" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
|
||||
<script>
|
||||
const key = 'svelteness::color-scheme';
|
||||
const scheme = localStorage[key];
|
||||
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
if (scheme === 'dark' || (scheme !== 'light' && prefersDark)) {
|
||||
document.documentElement.classList.add('dark');
|
||||
} else {
|
||||
document.documentElement.classList.remove('dark');
|
||||
}
|
||||
</script>
|
||||
|
||||
<meta http-equiv="content-security-policy" content="">
|
||||
<link href="../_app/immutable/assets/_layout-d4f4ab95.css" rel="stylesheet">
|
||||
<link href="../_app/immutable/assets/Info-eb9b7651.css" rel="stylesheet">
|
||||
<link rel="modulepreload" href="../_app/immutable/start-4894d21d.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/chunks/singletons-79165f10.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/chunks/control-f5b05b5f.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/components/pages/_layout.svelte-ac40f340.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/chunks/contexts-c54c563b.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/chunks/stores-1c9d0b64.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/modules/pages/_layout.js-82ef414d.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/chunks/_layout-32f74dae.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/components/pages/latest/api/_page.md-bd91dac8.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/chunks/Info-8cb253a1.js">
|
||||
</head>
|
||||
<body data-sveltekit-preload-data="hover">
|
||||
<div style="display: contents">
|
||||
|
||||
|
||||
<div class="kit-docs bg-gray-body min-h-full min-w-full h-full transition-transform duration-150 ease-out" style="font-family: var(--kd-font-family-sans, inherit); --kd--navbar-height: calc(var(--kd-navbar-height) + var(--kd-breadcrumbs-height));"><div class="fixed top-0 z-30 w-full flex-none transform-gpu transition-transform duration-150 ease-out supports-backdrop-blur:bg-white/60 bg-gray-200/95 backdrop-blur dark:bg-gray-800/60 translate-y-0" style="border-bottom: var(--kd-navbar-border-bottom);"><div class="flex w-full flex-col items-center justify-center mx-auto max-w-[var(--kd-navbar-max-width)] p-[var(--kd-navbar-padding)] h-[var(--kd--navbar-height)]"><div class="flex w-full items-center">
|
||||
|
||||
|
||||
<div class="flex-1"></div>
|
||||
|
||||
<div class="992:hidden -mr-2 flex items-center">
|
||||
|
||||
<div class="relative inline-block text-left not-prose"><button id="popover-button-1" type="button" class="inline-flex w-full justify-center rounded-md p-2 text-lg font-medium text-gray-soft hover:text-gray-inverse" aria-controls="popover-1" aria-expanded="false" aria-haspopup="true"><svg viewBox="0 0 24 24" width="30" height="30"><!-- HTML_TAG_START --><path fill="currentColor" d="M18 18v2H6v-2h12zm3-7v2H3v-2h18zm-3-7v2H6V4h12z"/><!-- HTML_TAG_END --></svg>
|
||||
<span class="sr-only">Main navigation menu</span>
|
||||
</button>
|
||||
|
||||
<div class="fixed top-0 left-0 bg-black/40 backdrop-blur-sm dark:bg-gray-700/80 transition-opacity duration-75 pointer-events-auto z-40 w-screen h-screen opacity-0 invisible"></div>
|
||||
|
||||
<div hidden></div>
|
||||
|
||||
</div></div>
|
||||
|
||||
<div class="992:flex 992:items-center hidden"><nav><ul class="flex items-center space-x-8 text-lg font-medium"><li class="mt-4 first:mt-0 992:mt-0"><a class="p-1 text-gray-soft hover:text-gray-inverse" href="/latest/get-started">Get started</a></li><li class="mt-4 first:mt-0 992:mt-0"><a class="p-1 border-b hover:border-b-2 border-brand text-gray-inverse" href="/latest/api">API</a></li></ul></nav>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="border-gray-divider ml-6 mr-2.5 h-7 w-2 border-l-[1.5px]"></div>
|
||||
|
||||
<div class="hidden 992:flex items-center">
|
||||
|
||||
<div class="relative inline-block text-left not-prose"><button id="menu-button-1" type="button" class="inline-flex w-full justify-center rounded-md p-2 text-lg font-medium text-gray-soft hover:text-gray-inverse" aria-controls="menu-1" aria-expanded="false" aria-haspopup="true"><svg viewBox="0 0 24 24" width="1.2em" height="1.2em" class="h-6 w-6"><!-- HTML_TAG_START --><path fill="currentColor" d="M12 18a6 6 0 1 1 0-12a6 6 0 0 1 0 12zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636L5.636 7.05L3.515 4.93zM16.95 18.364l1.414-1.414l2.121 2.121l-1.414 1.414l-2.121-2.121zm2.121-14.85l1.414 1.415l-2.121 2.121l-1.414-1.414l2.121-2.121zM5.636 16.95l1.414 1.414l-2.121 2.121l-1.414-1.414l2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z"/><!-- HTML_TAG_END --></svg>
|
||||
<span class="sr-only">Color Scheme</span>
|
||||
</button>
|
||||
|
||||
<div hidden></div>
|
||||
|
||||
</div></div></div></div>
|
||||
|
||||
<div class="border-gray-divider 992:hidden flex w-full items-center mt-4 pt-4 border-t"><button id="main-sidebar-button" type="button" class="text-gray-soft hover:text-gray-inverse inline-flex justify-center rounded-md p-2 text-sm font-medium" aria-controls="main-sidebar" aria-expanded="false" aria-haspopup="true"><span class="sr-only">Open main sidebar</span>
|
||||
<svg viewBox="0 0 24 24" width="28" height="28"><!-- HTML_TAG_START --><path fill="currentColor" d="M21 18v2H3v-2h18zM17.05 3.55L22 8.5l-4.95 4.95v-9.9zM12 11v2H3v-2h9zm0-7v2H3V4h9z"/><!-- HTML_TAG_END --></svg></button>
|
||||
|
||||
<ol class="text-md text-gray-soft flex items-center whitespace-nowrap leading-6 mt-px ml-2.5">
|
||||
<li class="truncate font-semibold text-slate-900 dark:text-slate-200">API</li></ol></div>
|
||||
|
||||
|
||||
</div></div>
|
||||
|
||||
<div class="mx-auto w-full flex flex-row min-h-full max-w-[var(--kd-content-max-width)] pt-[var(--kd--navbar-height)] z-20"><aside id="main-sidebar" class="sidebar self-start fixed top-0 left-0 transform bg-gray-body z-50 border-gray-divider border-r -translate-x-full transform transition-transform duration-200 ease-out will-change-transform max-h-screen min-h-screen min-w-[var(--kd-sidebar-min-width)] max-w-[var(--kd-sidebar-max-width)] 992:translate-x-0 922:block 992:sticky 992:z-0 overflow-y-auto p-[var(--kd-sidebar-padding)] 992:top-[var(--kd--navbar-height)] 992:min-h-[calc(100vh-var(--kd--navbar-height))] 992:max-h-[calc(100vh-var(--kd--navbar-height))]" role="dialog" aria-modal="true" style=""><div class="992:hidden sticky top-0 left-0 flex items-center"><div class="flex-1"></div>
|
||||
<button class="text-gray-soft hover:text-gray-inverse p-4 -mx-6 pointer-events-none"><svg viewBox="0 0 24 24" width="24" height="24"><!-- HTML_TAG_START --><path fill="currentColor" d="m12 10.586l4.95-4.95l1.414 1.414l-4.95 4.95l4.95 4.95l-1.414 1.414l-4.95-4.95l-4.95 4.95l-1.414-1.414l4.95-4.95l-4.95-4.95L7.05 5.636z"/><!-- HTML_TAG_END --></svg>
|
||||
<span class="sr-only">Close sidebar</span></button></div>
|
||||
|
||||
<nav class="992:px-1">
|
||||
|
||||
|
||||
|
||||
<ul class="mt-8 pb-28 992:pb-0">
|
||||
<li class="992:mt-10 mt-12 first:mt-0"><h5 class="text-gray-strong 992:mb-3 mb-8 text-lg font-semibold">
|
||||
</h5>
|
||||
<ul class="border-gray-divider space-y-3 border-l"><li class="first:mt-6"><a class="992:py-1.5 -ml-px flex items-center border-l-2 py-2 pl-4 hover:border-gray-inverse text-gray-soft hover:text-gray-inverse border-transparent font-normal" href="/latest/get-started" style="">
|
||||
Get started
|
||||
</a>
|
||||
</li><li class="first:mt-6"><a class="992:py-1.5 -ml-px flex items-center border-l-2 py-2 pl-4 text-brand font-semibold" href="/latest/api" style="border-color: var(--kd-sidebar-border-active);">
|
||||
API
|
||||
</a>
|
||||
</li></ul>
|
||||
</li></ul>
|
||||
|
||||
|
||||
</nav></aside>
|
||||
|
||||
<div class="992:hidden z-40"><div class="fixed top-0 left-0 bg-black/40 backdrop-blur-sm dark:bg-gray-700/80 transition-opacity duration-75 pointer-events-auto z-40 w-screen h-screen opacity-0 invisible"></div></div>
|
||||
|
||||
<main class="w-full overflow-x-hidden 992:min-h-[calc(100vh-var(--kd--navbar-height))] min-h-[calc(100vh-var(--kd--navbar-height))] px-8 992:px-16 pt-8" style="max-width: var(--kd-main-max-width, var(--kd-article-max-width));">
|
||||
|
||||
<article class="markdown prose dark:prose-invert z-10 max-w-[var(--kd-article-max-width)]">
|
||||
|
||||
<h1>API</h1>
|
||||
<div class="svelte-ns3bhs"><h4 class="svelte-ns3bhs">💡 Info</h4>
|
||||
|
||||
<p>All functions are curried, Remeda-style, so if you see <code>f(dataIn, ...others)</code>, it can be called with either <code>f(dataIn, ...others)</code> or <code>f(...others)(dataIn)</code>.</p>
|
||||
|
||||
</div>
|
||||
<h2 id="importing" tabindex="-1">
|
||||
<a class="header-anchor" href="#importing" aria-hidden="true">#</a> Importing</h2>
|
||||
<p><code>updeep-remeda</code> exports a default function that is an alias to <code>u.update</code> and
|
||||
has all the other functions available as props.</p>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-text ext-text" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: undefined">import u from '@yanick/updeep-remeda';</span></span>
|
||||
<span class="line"><span style="color: undefined"></span></span>
|
||||
<span class="line"><span style="color: undefined">const foo = u({a:1}, { a: x => x + 1 });</span></span>
|
||||
<span class="line"><span style="color: undefined"></span></span>
|
||||
<span class="line"><span style="color: undefined">const bar = u.updateIn({ a: { b: 2 } }, 'a.b', 3 );</span></span>
|
||||
<span class="line"><span style="color: undefined"></span></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><p>Or you can import the functions piecemeal:</p>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-text ext-text" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: undefined">import { updateIn, omit } from '@yanick/updeep-remeda';</span></span>
|
||||
<span class="line"><span style="color: undefined"></span></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><h2 id="u-datain-updates" tabindex="-1">
|
||||
<a class="header-anchor" href="#u-datain-updates" aria-hidden="true">#</a> <code>u(dataIn, updates)</code></h2>
|
||||
<h2 id="u-update-datain-updates" tabindex="-1">
|
||||
<a class="header-anchor" href="#u-update-datain-updates" aria-hidden="true">#</a> <code>u.update(dataIn, updates)</code></h2>
|
||||
<p>Update as many values as you want, as deeply as you want. The <code>updates</code> parameter can either be an object, a function, or a value. Everything returned from <code>u</code> is frozen recursively.</p>
|
||||
<p>If <code>updates</code> is an object, for each key/value, it will apply the updates specified in the value to <code>object[key]</code>.</p>
|
||||
<p>If <code>updates</code> is a function, it will call the function with <code>object</code> and return the value.</p>
|
||||
<p>If <code>updates</code> is a value, it will return that value.</p>
|
||||
<p>Sometimes, you may want to set an entire object to a property, or a function. In that case, you'll need to use a function to return that value, otherwise it would be interpreted as an update. Ex. <code>function() { return { a: 0 }; }</code>.</p>
|
||||
<p>Also available at <code>u.update(...)</code>.</p>
|
||||
<h3 id="simple-update" tabindex="-1">
|
||||
<a class="header-anchor" href="#simple-update" aria-hidden="true">#</a> Simple update</h3>
|
||||
<p>Object properties:</p>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> person </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">first</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Jane</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">last</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">West</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">};</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> result </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(person</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">first</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Susan</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(result)</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">first</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Susan</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">last</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">West</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><p>Array elements:</p>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> scoreboard </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">scores</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span><span style="color: #F78C6C">12</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">28</span><span style="color: #A6ACCD">]</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">};</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> result </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(scoreboard</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">scores</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">36</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(result)</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">scores</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span><span style="color: #F78C6C">12</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">36</span><span style="color: #A6ACCD">] </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><h3 id="multiple-updates" tabindex="-1">
|
||||
<a class="header-anchor" href="#multiple-updates" aria-hidden="true">#</a> Multiple updates</h3>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> person </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">first</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Mike</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">last</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Smith</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">scores</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span><span style="color: #F78C6C">12</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">28</span><span style="color: #A6ACCD">]</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">};</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> result </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(person</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">last</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Jones</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">scores</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">36</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(result)</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">first</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Mike</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">last</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Jones</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">scores</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span><span style="color: #F78C6C">12</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">36</span><span style="color: #A6ACCD">]</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><h3 id="use-a-function" tabindex="-1">
|
||||
<a class="header-anchor" href="#use-a-function" aria-hidden="true">#</a> Use a function</h3>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> increment </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">(</span><span style="color: #A6ACCD">i</span><span style="color: #89DDFF">)</span><span style="color: #A6ACCD"> </span><span style="color: #C792EA">=></span><span style="color: #A6ACCD"> i </span><span style="color: #89DDFF">+</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">var</span><span style="color: #A6ACCD"> scoreboard </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">scores</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">team1</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">0</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">team2</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">0</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">};</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> result </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(scoreboard</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">scores</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">team2</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> increment </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(result)</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">scores</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">team1</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">0</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">team2</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">1</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><h3 id="array-manipulation" tabindex="-1">
|
||||
<a class="header-anchor" href="#array-manipulation" aria-hidden="true">#</a> Array Manipulation</h3>
|
||||
<p>Non-trivial array manipulations, such as element removal/insertion/sorting, can be implemented with functions. Because there are so many possible manipulations, we don't provide any helpers and leave this up to you. Simply ensure your function is pure and does not mutate its arguments.</p>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #C792EA">function</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">addTodo</span><span style="color: #89DDFF">(</span><span style="color: #A6ACCD">todos</span><span style="color: #89DDFF">)</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #F07178"> </span><span style="color: #89DDFF">return</span><span style="color: #F07178"> []</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">concat</span><span style="color: #F07178">(</span><span style="color: #A6ACCD">todos</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> [</span><span style="color: #89DDFF">{</span><span style="color: #F07178"> done</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #FF9CAC">false</span><span style="color: #F07178"> </span><span style="color: #89DDFF">}</span><span style="color: #F07178">])</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> state </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">todos</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">false</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">false</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">]</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">};</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> result </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">todos</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> addTodo </span><span style="color: #89DDFF">},</span><span style="color: #A6ACCD"> state)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(result)</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">todos</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">false</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">false</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">false</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">]</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><p>Remeda is one of the many libraries providing good utility functions for
|
||||
such manipulations.</p>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #89DDFF">import</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #F07178"> </span><span style="color: #A6ACCD">reject</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #A6ACCD">concat</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #A6ACCD">prop</span><span style="color: #F07178"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">from</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">remeda</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">let</span><span style="color: #A6ACCD"> state </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">todos</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">true</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">false</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">]</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">};</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #676E95">// add a new todo</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD">state </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(state</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">todos</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">concat</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">false</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">) </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(state)</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">todos</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">true</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">false</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">false</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">]</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #676E95">// remove all done todos</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD">state </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(state</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">todos</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">reject</span><span style="color: #A6ACCD">(</span><span style="color: #82AAFF">prop</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">done</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD">)) </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(state)</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">todos</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">false</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">false</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">] </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><h3 id="default-input-data" tabindex="-1">
|
||||
<a class="header-anchor" href="#default-input-data" aria-hidden="true">#</a> Default input data</h3>
|
||||
<p>When the input data is null or undefined, updeep uses a empty plain object.</p>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> result </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">null,</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">foo</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">bar</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(result)</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">foo</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">bar</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><h3 id="partial-application" tabindex="-1">
|
||||
<a class="header-anchor" href="#partial-application" aria-hidden="true">#</a> Partial application</h3>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> inc </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">(</span><span style="color: #A6ACCD">i</span><span style="color: #89DDFF">)</span><span style="color: #A6ACCD"> </span><span style="color: #C792EA">=></span><span style="color: #A6ACCD"> i </span><span style="color: #89DDFF">+</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> addOneYear </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">age</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> increment </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> result </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">addOneYear</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Shannon Barnes</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">age</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">62</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(result)</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Shannon Barnes</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">age</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">63</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><h2 id="u-freeze-datain" tabindex="-1">
|
||||
<a class="header-anchor" href="#u-freeze-datain" aria-hidden="true">#</a> <code>u.freeze(dataIn)</code></h2>
|
||||
<p>Freeze your initial state to protect against mutations. Only performs the freezing in development, and returns the original object unchanged in production.</p>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> state </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> u</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">freeze</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">someKey</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Some Value</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD">state</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">someKey </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Mutate</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">;</span><span style="color: #A6ACCD"> </span><span style="color: #676E95">// ERROR in development</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><h2 id="u-updatein-datain-path-value" tabindex="-1">
|
||||
<a class="header-anchor" href="#u-updatein-datain-path-value" aria-hidden="true">#</a> <code>u.updateIn(dataIn, path, value)</code></h2>
|
||||
<p>Update a single value with a simple string or array path. Can be use to update nested objects, arrays, or a combination. Can also be used to update every element of a nested array with <code>'*'</code>.</p>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> result </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> u</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">updateIn</span><span style="color: #A6ACCD">(</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">bunny</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">color</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">black</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">bunny.color</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">brown</span><span style="color: #89DDFF">"</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(result)</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">bunny</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">color</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">brown</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> result </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> u</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">updateIn</span><span style="color: #A6ACCD">(</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">0.1.color</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">brown</span><span style="color: #89DDFF">"</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD">)([[</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">color</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">blue</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">color</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">red</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">]</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> []])</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(result)</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">([[</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">color</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">blue</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">color</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">brown</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">]</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> []])</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> incr </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">(</span><span style="color: #A6ACCD">i</span><span style="color: #89DDFF">)</span><span style="color: #A6ACCD"> </span><span style="color: #C792EA">=></span><span style="color: #A6ACCD"> i </span><span style="color: #89DDFF">+</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> result </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> u</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">updateIn</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">bunny.age</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> incr)(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">bunny</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">age</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">2</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(result)</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">bunny</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">age</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">3</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> result </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">pets</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">bunny</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">age</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">2</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">] </span><span style="color: #89DDFF">}</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">pets</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> u</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">updateIn</span><span style="color: #A6ACCD">([</span><span style="color: #F78C6C">0</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">bunny</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">age</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD">]</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">3</span><span style="color: #A6ACCD">) </span><span style="color: #89DDFF">},</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(result)</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">pets</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">bunny</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">age</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">3</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">] </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> result </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> u</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">updateIn</span><span style="color: #A6ACCD">(</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">todos.*.done</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">true</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD">)(</span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">todos</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">false</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">false</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">]</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(result)</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">todos</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">true</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">done</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #FF9CAC">true</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">]</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><h2 id="u-constant-datain" tabindex="-1">
|
||||
<a class="header-anchor" href="#u-constant-datain" aria-hidden="true">#</a> <code>u.constant(dataIn)</code></h2>
|
||||
<p>Sometimes, you want to replace an object outright rather than merging it.
|
||||
You'll need to use a function that returns the new object.
|
||||
<code>u.constant</code> creates that function for you.</p>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> user </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Mitch</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">favorites</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">band</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Nirvana</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">movie</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">The Matrix</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">};</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> newFavorites </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">band</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Coldplay</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">};</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> result </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(user</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">favorites</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> u</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">constant</span><span style="color: #A6ACCD">(newFavorites) </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(result)</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Mitch</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">favorites</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">band</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Coldplay</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> alwaysFour </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> u</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">constant</span><span style="color: #A6ACCD">(</span><span style="color: #F78C6C">4</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(</span><span style="color: #82AAFF">alwaysFour</span><span style="color: #A6ACCD">(</span><span style="color: #F78C6C">32</span><span style="color: #A6ACCD">))</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">(</span><span style="color: #F78C6C">4</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><h2 id="u-if-datain-predicate-updates" tabindex="-1">
|
||||
<a class="header-anchor" href="#u-if-datain-predicate-updates" aria-hidden="true">#</a> <code>u.if(dataIn, predicate, updates)</code></h2>
|
||||
<p>Apply <code>updates</code> if <code>predicate</code> is truthy, or if <code>predicate</code> is a function.
|
||||
It evaluates to truthy when called with <code>object</code>.</p>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #C792EA">function</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">isEven</span><span style="color: #89DDFF">(</span><span style="color: #A6ACCD">x</span><span style="color: #89DDFF">)</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #F07178"> </span><span style="color: #89DDFF">return</span><span style="color: #F07178"> </span><span style="color: #A6ACCD">x</span><span style="color: #F07178"> </span><span style="color: #89DDFF">%</span><span style="color: #F07178"> </span><span style="color: #F78C6C">2</span><span style="color: #F07178"> </span><span style="color: #89DDFF">===</span><span style="color: #F07178"> </span><span style="color: #F78C6C">0</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">}</span></span>
|
||||
<span class="line"><span style="color: #C792EA">function</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">increment</span><span style="color: #89DDFF">(</span><span style="color: #A6ACCD">x</span><span style="color: #89DDFF">)</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #F07178"> </span><span style="color: #89DDFF">return</span><span style="color: #F07178"> </span><span style="color: #A6ACCD">x</span><span style="color: #F07178"> </span><span style="color: #89DDFF">+</span><span style="color: #F07178"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> result </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">value</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">2</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">value</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> u</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">if</span><span style="color: #A6ACCD">(isEven</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> increment) </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #82AAFF">expect</span><span style="color: #A6ACCD">(result)</span><span style="color: #89DDFF">.</span><span style="color: #A6ACCD">to</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">eql</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">value</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">3</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><h2 id="u-filter-arrayin-predicate" tabindex="-1">
|
||||
<a class="header-anchor" href="#u-filter-arrayin-predicate" aria-hidden="true">#</a> <code>u.filter(arrayIn, predicate)</code></h2>
|
||||
<h2 id="u-reject-arrayin-predicate" tabindex="-1">
|
||||
<a class="header-anchor" href="#u-reject-arrayin-predicate" aria-hidden="true">#</a> <code>u.reject(arrayIn, predicate)</code></h2>
|
||||
<h2 id="u-pickby-objectin-predicate" tabindex="-1">
|
||||
<a class="header-anchor" href="#u-pickby-objectin-predicate" aria-hidden="true">#</a> <code>u.pickBy(objectIn, predicate)</code></h2>
|
||||
<h2 id="u-omitby-objectin-predicate" tabindex="-1">
|
||||
<a class="header-anchor" href="#u-omitby-objectin-predicate" aria-hidden="true">#</a> <code>u.omitBy(objectIn, predicate)</code></h2>
|
||||
<h2 id="u-pick-objectin-keys" tabindex="-1">
|
||||
<a class="header-anchor" href="#u-pick-objectin-keys" aria-hidden="true">#</a> <code>u.pick(objectIn, keys)</code></h2>
|
||||
<h2 id="u-omit-objectin-keys" tabindex="-1">
|
||||
<a class="header-anchor" href="#u-omit-objectin-keys" aria-hidden="true">#</a> <code>u.omit(objectIn, keys)</code></h2>
|
||||
<p>Essentially the same as their Remeda counterparts. The difference being
|
||||
that if the transformation results in no change, the original object/array is
|
||||
returned.</p>
|
||||
<h2 id="u-matches-datain-condition" tabindex="-1">
|
||||
<a class="header-anchor" href="#u-matches-datain-condition" aria-hidden="true">#</a> <code>u.matches(dataIn, condition)</code></h2>
|
||||
<p>Do a deep comparison with <code>condition</code>, and returns
|
||||
<code>true</code> if the <code>dataIn</code> object matches.</p>
|
||||
<p>Scalar values are verified for equality (i.e., <code>{foo: 12}</code>
|
||||
will verify that the object has the prop <code>foo</code> set to <code>12</code>), and
|
||||
functions are going to be invoked with the object value of the object and
|
||||
expected to return <code>true</code> upon matching.</p>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #A6ACCD">u</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">matches</span><span style="color: #A6ACCD">(</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Bob</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">age</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">32</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">address</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">...</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Bob</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">age</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">(</span><span style="color: #A6ACCD">age</span><span style="color: #89DDFF">)</span><span style="color: #A6ACCD"> </span><span style="color: #C792EA">=></span><span style="color: #A6ACCD"> age </span><span style="color: #89DDFF">></span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">30</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span><span style="color: #A6ACCD"> </span><span style="color: #676E95">// true</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div></article>
|
||||
|
||||
<hr class="border-gray-divider mt-20">
|
||||
|
||||
<div class="992:text-xl flex items-center pt-12 pb-20 text-lg font-semibold text-gray-300"><div class="mb-4 flex flex-col items-start"><span class="text-gray-inverse ml-3 mb-4 inline-block">Previous</span>
|
||||
|
||||
<a class="group transform-gpu text-lg font-medium transition-transform hover:scale-105 hover:text-gray-inverse" href="/latest/get-started" data-sveltekit-prefetch><span class="opacity-0 transition-opacity duration-100 group-hover:visible group-hover:opacity-100 inline-block"><-</span>
|
||||
<span class="inline-block transform transition-transform duration-100 group-hover:translate-x-0 -translate-x-3 ">Get started</span>
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
<div class="992:flex-1"></div>
|
||||
|
||||
<div class="on-this-page pt-8 pb-8 hidden overflow-auto min-w-[160px] sticky right-4 pr-4 1440:right-6 1440:pr-2 1280:block pl-0.5 top-[var(--kd--navbar-height)] max-h-[calc(100vh-var(--kd--navbar-height))]" style=""><h5 class="font-semibold w-full text-left text-gray-inverse text-lg">On this page</h5>
|
||||
<ul class="space-y-4 mt-4"><li class="text-gray-soft hover:text-gray-inverse"><a href="#importing">Importing</a></li>
|
||||
<li class="text-gray-soft hover:text-gray-inverse"><a href="#u-datain-updates">u(dataIn, updates)</a></li>
|
||||
<li class="text-gray-soft hover:text-gray-inverse"><a href="#u-update-datain-updates">u.update(dataIn, updates)</a></li>
|
||||
<ul class="space-y-3"><li class="flex group group text-gray-soft hover:text-gray-inverse"><svg viewBox="0 0 24 24" width="20" height="20" class="mr-px mt-px text-gray-300 dark:text-gray-400 group-hover:text-gray-soft"><!-- HTML_TAG_START --><path fill="currentColor" d="M12.172 12L9.343 9.172l1.414-1.415L15 12l-4.243 4.243l-1.414-1.415z"/><!-- HTML_TAG_END --></svg>
|
||||
<a href="#simple-update">Simple update</a>
|
||||
</li><li class="flex group group text-gray-soft hover:text-gray-inverse"><svg viewBox="0 0 24 24" width="20" height="20" class="mr-px mt-px text-gray-300 dark:text-gray-400 group-hover:text-gray-soft"><!-- HTML_TAG_START --><path fill="currentColor" d="M12.172 12L9.343 9.172l1.414-1.415L15 12l-4.243 4.243l-1.414-1.415z"/><!-- HTML_TAG_END --></svg>
|
||||
<a href="#multiple-updates">Multiple updates</a>
|
||||
</li><li class="flex group group text-gray-soft hover:text-gray-inverse"><svg viewBox="0 0 24 24" width="20" height="20" class="mr-px mt-px text-gray-300 dark:text-gray-400 group-hover:text-gray-soft"><!-- HTML_TAG_START --><path fill="currentColor" d="M12.172 12L9.343 9.172l1.414-1.415L15 12l-4.243 4.243l-1.414-1.415z"/><!-- HTML_TAG_END --></svg>
|
||||
<a href="#use-a-function">Use a function</a>
|
||||
</li><li class="flex group group text-gray-soft hover:text-gray-inverse"><svg viewBox="0 0 24 24" width="20" height="20" class="mr-px mt-px text-gray-300 dark:text-gray-400 group-hover:text-gray-soft"><!-- HTML_TAG_START --><path fill="currentColor" d="M12.172 12L9.343 9.172l1.414-1.415L15 12l-4.243 4.243l-1.414-1.415z"/><!-- HTML_TAG_END --></svg>
|
||||
<a href="#array-manipulation">Array Manipulation</a>
|
||||
</li><li class="flex group group text-gray-soft hover:text-gray-inverse"><svg viewBox="0 0 24 24" width="20" height="20" class="mr-px mt-px text-gray-300 dark:text-gray-400 group-hover:text-gray-soft"><!-- HTML_TAG_START --><path fill="currentColor" d="M12.172 12L9.343 9.172l1.414-1.415L15 12l-4.243 4.243l-1.414-1.415z"/><!-- HTML_TAG_END --></svg>
|
||||
<a href="#default-input-data">Default input data</a>
|
||||
</li><li class="flex group group text-gray-soft hover:text-gray-inverse"><svg viewBox="0 0 24 24" width="20" height="20" class="mr-px mt-px text-gray-300 dark:text-gray-400 group-hover:text-gray-soft"><!-- HTML_TAG_START --><path fill="currentColor" d="M12.172 12L9.343 9.172l1.414-1.415L15 12l-4.243 4.243l-1.414-1.415z"/><!-- HTML_TAG_END --></svg>
|
||||
<a href="#partial-application">Partial application</a>
|
||||
</li>
|
||||
</ul><li class="text-gray-soft hover:text-gray-inverse"><a href="#u-freeze-datain">u.freeze(dataIn)</a></li>
|
||||
<li class="text-gray-soft hover:text-gray-inverse"><a href="#u-updatein-datain-path-value">u.updateIn(dataIn, path, value)</a></li>
|
||||
<li class="text-gray-soft hover:text-gray-inverse"><a href="#u-constant-datain">u.constant(dataIn)</a></li>
|
||||
<li class="text-gray-soft hover:text-gray-inverse"><a href="#u-if-datain-predicate-updates">u.if(dataIn, predicate, updates)</a></li>
|
||||
<li class="text-gray-soft hover:text-gray-inverse"><a href="#u-filter-arrayin-predicate">u.filter(arrayIn, predicate)</a></li>
|
||||
<li class="text-gray-soft hover:text-gray-inverse"><a href="#u-reject-arrayin-predicate">u.reject(arrayIn, predicate)</a></li>
|
||||
<li class="text-gray-soft hover:text-gray-inverse"><a href="#u-pickby-objectin-predicate">u.pickBy(objectIn, predicate)</a></li>
|
||||
<li class="text-gray-soft hover:text-gray-inverse"><a href="#u-omitby-objectin-predicate">u.omitBy(objectIn, predicate)</a></li>
|
||||
<li class="text-gray-soft hover:text-gray-inverse"><a href="#u-pick-objectin-keys">u.pick(objectIn, keys)</a></li>
|
||||
<li class="text-gray-soft hover:text-gray-inverse"><a href="#u-omit-objectin-keys">u.omit(objectIn, keys)</a></li>
|
||||
<li class="text-gray-soft hover:text-gray-inverse"><a href="#u-matches-datain-condition">u.matches(dataIn, condition)</a></li>
|
||||
</ul></div></div></div>
|
||||
|
||||
|
||||
<script type="module" data-sveltekit-hydrate="1ts6po4">
|
||||
import { start } from "../_app/immutable/start-4894d21d.js";
|
||||
|
||||
start({
|
||||
env: {},
|
||||
paths: {"base":"","assets":""},
|
||||
target: document.querySelector('[data-sveltekit-hydrate="1ts6po4"]').parentNode,
|
||||
version: "1673374967075",
|
||||
hydrate: {
|
||||
node_ids: [0, 4],
|
||||
data: [null,null],
|
||||
form: null
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<script type="application/json" data-sveltekit-fetched data-url="/kit-docs/latest_api.meta">{"status":200,"statusText":"","headers":{},"body":"{\"excerpt\":\"\",\"headers\":[{\"level\":2,\"title\":\"Importing\",\"slug\":\"importing\",\"children\":[]},{\"level\":2,\"title\":\"u(dataIn, updates)\",\"slug\":\"u-datain-updates\",\"children\":[]},{\"level\":2,\"title\":\"u.update(dataIn, updates)\",\"slug\":\"u-update-datain-updates\",\"children\":[{\"level\":3,\"title\":\"Simple update\",\"slug\":\"simple-update\",\"children\":[]},{\"level\":3,\"title\":\"Multiple updates\",\"slug\":\"multiple-updates\",\"children\":[]},{\"level\":3,\"title\":\"Use a function\",\"slug\":\"use-a-function\",\"children\":[]},{\"level\":3,\"title\":\"Array Manipulation\",\"slug\":\"array-manipulation\",\"children\":[]},{\"level\":3,\"title\":\"Default input data\",\"slug\":\"default-input-data\",\"children\":[]},{\"level\":3,\"title\":\"Partial application\",\"slug\":\"partial-application\",\"children\":[]}]},{\"level\":2,\"title\":\"u.freeze(dataIn)\",\"slug\":\"u-freeze-datain\",\"children\":[]},{\"level\":2,\"title\":\"u.updateIn(dataIn, path, value)\",\"slug\":\"u-updatein-datain-path-value\",\"children\":[]},{\"level\":2,\"title\":\"u.constant(dataIn)\",\"slug\":\"u-constant-datain\",\"children\":[]},{\"level\":2,\"title\":\"u.if(dataIn, predicate, updates)\",\"slug\":\"u-if-datain-predicate-updates\",\"children\":[]},{\"level\":2,\"title\":\"u.filter(arrayIn, predicate)\",\"slug\":\"u-filter-arrayin-predicate\",\"children\":[]},{\"level\":2,\"title\":\"u.reject(arrayIn, predicate)\",\"slug\":\"u-reject-arrayin-predicate\",\"children\":[]},{\"level\":2,\"title\":\"u.pickBy(objectIn, predicate)\",\"slug\":\"u-pickby-objectin-predicate\",\"children\":[]},{\"level\":2,\"title\":\"u.omitBy(objectIn, predicate)\",\"slug\":\"u-omitby-objectin-predicate\",\"children\":[]},{\"level\":2,\"title\":\"u.pick(objectIn, keys)\",\"slug\":\"u-pick-objectin-keys\",\"children\":[]},{\"level\":2,\"title\":\"u.omit(objectIn, keys)\",\"slug\":\"u-omit-objectin-keys\",\"children\":[]},{\"level\":2,\"title\":\"u.matches(dataIn, condition)\",\"slug\":\"u-matches-datain-condition\",\"children\":[]}],\"title\":\"API\",\"frontmatter\":{\"title\":\"API\"},\"lastUpdated\":1673371541420}"}</script></div>
|
||||
</body>
|
||||
</html>
|
317
docs/latest/api.md
Normal file
317
docs/latest/api.md
Normal file
@ -0,0 +1,317 @@
|
||||
---
|
||||
title: API
|
||||
---
|
||||
|
||||
# API
|
||||
|
||||
:::info
|
||||
|
||||
All functions are curried, Remeda-style, so if you see `f(dataIn, ...others)`, it can be called with either `f(dataIn, ...others)` or `f(...others)(dataIn)`.
|
||||
|
||||
:::
|
||||
|
||||
## Importing
|
||||
|
||||
`updeep-remeda` exports a default function that is an alias to `u.update` and
|
||||
has all the other functions available as props.
|
||||
|
||||
```
|
||||
import u from '@yanick/updeep-remeda';
|
||||
|
||||
const foo = u({a:1}, { a: x => x + 1 });
|
||||
|
||||
const bar = u.updateIn({ a: { b: 2 } }, 'a.b', 3 );
|
||||
```
|
||||
|
||||
Or you can import the functions piecemeal:
|
||||
|
||||
```
|
||||
import { updateIn, omit } from '@yanick/updeep-remeda';
|
||||
```
|
||||
|
||||
|
||||
## `u(dataIn, updates)`
|
||||
## `u.update(dataIn, updates)`
|
||||
|
||||
Update as many values as you want, as deeply as you want. The `updates` parameter can either be an object, a function, or a value. Everything returned from `u` is frozen recursively.
|
||||
|
||||
If `updates` is an object, for each key/value, it will apply the updates specified in the value to `object[key]`.
|
||||
|
||||
If `updates` is a function, it will call the function with `object` and return the value.
|
||||
|
||||
If `updates` is a value, it will return that value.
|
||||
|
||||
Sometimes, you may want to set an entire object to a property, or a function. In that case, you'll need to use a function to return that value, otherwise it would be interpreted as an update. Ex. `function() { return { a: 0 }; }`.
|
||||
|
||||
Also available at `u.update(...)`.
|
||||
|
||||
### Simple update
|
||||
|
||||
Object properties:
|
||||
|
||||
```js
|
||||
const person = {
|
||||
name: {
|
||||
first: "Jane",
|
||||
last: "West",
|
||||
},
|
||||
};
|
||||
|
||||
const result = u(person, { name: { first: "Susan" } });
|
||||
|
||||
expect(result).to.eql({ name: { first: "Susan", last: "West" } });
|
||||
```
|
||||
|
||||
Array elements:
|
||||
|
||||
```js
|
||||
const scoreboard = {
|
||||
scores: [12, 28],
|
||||
};
|
||||
|
||||
const result = u(scoreboard, { scores: { 1: 36 } });
|
||||
|
||||
expect(result).to.eql({ scores: [12, 36] });
|
||||
```
|
||||
|
||||
### Multiple updates
|
||||
|
||||
```js
|
||||
const person = {
|
||||
name: {
|
||||
first: "Mike",
|
||||
last: "Smith",
|
||||
},
|
||||
scores: [12, 28],
|
||||
};
|
||||
|
||||
const result = u(person, { name: { last: "Jones" }, scores: { 1: 36 } });
|
||||
|
||||
expect(result).to.eql({
|
||||
name: { first: "Mike", last: "Jones" },
|
||||
scores: [12, 36],
|
||||
});
|
||||
```
|
||||
|
||||
### Use a function
|
||||
|
||||
```js
|
||||
const increment = (i) => i + 1;
|
||||
|
||||
var scoreboard = {
|
||||
scores: {
|
||||
team1: 0,
|
||||
team2: 0,
|
||||
},
|
||||
};
|
||||
|
||||
const result = u(scoreboard, { scores: { team2: increment } });
|
||||
|
||||
expect(result).to.eql({ scores: { team1: 0, team2: 1 } });
|
||||
```
|
||||
|
||||
### Array Manipulation
|
||||
|
||||
Non-trivial array manipulations, such as element removal/insertion/sorting, can be implemented with functions. Because there are so many possible manipulations, we don't provide any helpers and leave this up to you. Simply ensure your function is pure and does not mutate its arguments.
|
||||
|
||||
```js
|
||||
function addTodo(todos) {
|
||||
return [].concat(todos, [{ done: false }]);
|
||||
}
|
||||
|
||||
const state = {
|
||||
todos: [{ done: false }, { done: false }],
|
||||
};
|
||||
|
||||
const result = u({ todos: addTodo }, state);
|
||||
|
||||
expect(result).to.eql({
|
||||
todos: [{ done: false }, { done: false }, { done: false }],
|
||||
});
|
||||
```
|
||||
|
||||
Remeda is one of the many libraries providing good utility functions for
|
||||
such manipulations.
|
||||
|
||||
```js
|
||||
import { reject, concat, prop } from "remeda";
|
||||
|
||||
let state = {
|
||||
todos: [{ done: true }, { done: false }],
|
||||
};
|
||||
|
||||
// add a new todo
|
||||
state = u(state, { todos: concat({ done: false }) });
|
||||
expect(state).to.eql({
|
||||
todos: [{ done: true }, { done: false }, { done: false }],
|
||||
});
|
||||
|
||||
// remove all done todos
|
||||
state = u(state, { todos: reject(prop("done")) });
|
||||
expect(state).to.eql({ todos: [{ done: false }, { done: false }] });
|
||||
```
|
||||
|
||||
### Default input data
|
||||
|
||||
When the input data is null or undefined, updeep uses a empty plain object.
|
||||
|
||||
```javascript
|
||||
const result = u(null, { foo: "bar" });
|
||||
expect(result).to.eql({ foo: "bar" });
|
||||
```
|
||||
|
||||
### Partial application
|
||||
|
||||
```js
|
||||
const inc = (i) => i + 1;
|
||||
|
||||
const addOneYear = u({ age: increment });
|
||||
const result = addOneYear({ name: "Shannon Barnes", age: 62 });
|
||||
|
||||
expect(result).to.eql({ name: "Shannon Barnes", age: 63 });
|
||||
```
|
||||
|
||||
## `u.freeze(dataIn)`
|
||||
|
||||
Freeze your initial state to protect against mutations. Only performs the freezing in development, and returns the original object unchanged in production.
|
||||
|
||||
```js
|
||||
const state = u.freeze({ someKey: "Some Value" });
|
||||
state.someKey = "Mutate"; // ERROR in development
|
||||
```
|
||||
|
||||
## `u.updateIn(dataIn, path, value)`
|
||||
|
||||
Update a single value with a simple string or array path. Can be use to update nested objects, arrays, or a combination. Can also be used to update every element of a nested array with `'*'`.
|
||||
|
||||
```js
|
||||
const result = u.updateIn(
|
||||
{ bunny: { color: "black" } },
|
||||
"bunny.color",
|
||||
"brown"
|
||||
);
|
||||
|
||||
expect(result).to.eql({ bunny: { color: "brown" } });
|
||||
```
|
||||
|
||||
```js
|
||||
const result = u.updateIn(
|
||||
"0.1.color",
|
||||
"brown"
|
||||
)([[{ color: "blue" }, { color: "red" }], []]);
|
||||
|
||||
expect(result).to.eql([[{ color: "blue" }, { color: "brown" }], []]);
|
||||
```
|
||||
|
||||
```js
|
||||
const incr = (i) => i + 1;
|
||||
|
||||
const result = u.updateIn("bunny.age", incr)({ bunny: { age: 2 } });
|
||||
|
||||
expect(result).to.eql({ bunny: { age: 3 } });
|
||||
```
|
||||
|
||||
```js
|
||||
const result = u(
|
||||
{ pets: [{ bunny: { age: 2 } }] }
|
||||
{ pets: u.updateIn([0, "bunny", "age"], 3) },
|
||||
);
|
||||
|
||||
expect(result).to.eql({ pets: [{ bunny: { age: 3 } }] });
|
||||
```
|
||||
|
||||
```js
|
||||
const result = u.updateIn(
|
||||
"todos.*.done",
|
||||
true
|
||||
)({
|
||||
todos: [{ done: false }, { done: false }],
|
||||
});
|
||||
|
||||
expect(result).to.eql({
|
||||
todos: [{ done: true }, { done: true }],
|
||||
});
|
||||
```
|
||||
|
||||
## `u.constant(dataIn)`
|
||||
|
||||
Sometimes, you want to replace an object outright rather than merging it.
|
||||
You'll need to use a function that returns the new object.
|
||||
`u.constant` creates that function for you.
|
||||
|
||||
```js
|
||||
const user = {
|
||||
name: "Mitch",
|
||||
favorites: {
|
||||
band: "Nirvana",
|
||||
movie: "The Matrix",
|
||||
},
|
||||
};
|
||||
|
||||
const newFavorites = {
|
||||
band: "Coldplay",
|
||||
};
|
||||
|
||||
const result = u(user, { favorites: u.constant(newFavorites) });
|
||||
|
||||
expect(result).to.eql({ name: "Mitch", favorites: { band: "Coldplay" } });
|
||||
```
|
||||
|
||||
```js
|
||||
const alwaysFour = u.constant(4);
|
||||
expect(alwaysFour(32)).to.eql(4);
|
||||
```
|
||||
|
||||
## `u.if(dataIn, predicate, updates)`
|
||||
|
||||
Apply `updates` if `predicate` is truthy, or if `predicate` is a function.
|
||||
It evaluates to truthy when called with `object`.
|
||||
|
||||
```js
|
||||
function isEven(x) {
|
||||
return x % 2 === 0;
|
||||
}
|
||||
function increment(x) {
|
||||
return x + 1;
|
||||
}
|
||||
|
||||
const result = u({ value: 2 }, { value: u.if(isEven, increment) });
|
||||
|
||||
expect(result).to.eql({ value: 3 });
|
||||
```
|
||||
|
||||
## `u.filter(arrayIn, predicate)`
|
||||
|
||||
## `u.reject(arrayIn, predicate)`
|
||||
|
||||
## `u.pickBy(objectIn, predicate)`
|
||||
|
||||
## `u.omitBy(objectIn, predicate)`
|
||||
|
||||
## `u.pick(objectIn, keys)`
|
||||
|
||||
## `u.omit(objectIn, keys)`
|
||||
|
||||
Essentially the same as their Remeda counterparts. The difference being
|
||||
that if the transformation results in no change, the original object/array is
|
||||
returned.
|
||||
|
||||
## `u.matches(dataIn, condition)`
|
||||
|
||||
Do a deep comparison with `condition`, and returns
|
||||
`true` if the `dataIn` object matches.
|
||||
|
||||
Scalar values are verified for equality (i.e., `{foo: 12}`
|
||||
will verify that the object has the prop `foo` set to `12`), and
|
||||
functions are going to be invoked with the object value of the object and
|
||||
expected to return `true` upon matching.
|
||||
|
||||
```js
|
||||
u.matches(
|
||||
{ name: "Bob", age: 32, address: "..." },
|
||||
{
|
||||
name: "Bob",
|
||||
age: (age) => age > 30,
|
||||
}
|
||||
); // true
|
||||
```
|
@ -1,256 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="../favicon.png" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
|
||||
<script>
|
||||
const key = 'svelteness::color-scheme';
|
||||
const scheme = localStorage[key];
|
||||
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
if (scheme === 'dark' || (scheme !== 'light' && prefersDark)) {
|
||||
document.documentElement.classList.add('dark');
|
||||
} else {
|
||||
document.documentElement.classList.remove('dark');
|
||||
}
|
||||
</script>
|
||||
|
||||
<meta http-equiv="content-security-policy" content="">
|
||||
<link href="../_app/immutable/assets/_layout-d4f4ab95.css" rel="stylesheet">
|
||||
<link href="../_app/immutable/assets/Info-eb9b7651.css" rel="stylesheet">
|
||||
<link rel="modulepreload" href="../_app/immutable/start-4894d21d.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/chunks/singletons-79165f10.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/chunks/control-f5b05b5f.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/components/pages/_layout.svelte-ac40f340.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/chunks/contexts-c54c563b.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/chunks/stores-1c9d0b64.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/modules/pages/_layout.js-82ef414d.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/chunks/_layout-32f74dae.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/components/pages/latest/get-started/_page.md-5c5fe5e6.js">
|
||||
<link rel="modulepreload" href="../_app/immutable/chunks/Info-8cb253a1.js">
|
||||
</head>
|
||||
<body data-sveltekit-preload-data="hover">
|
||||
<div style="display: contents">
|
||||
|
||||
|
||||
<div class="kit-docs bg-gray-body min-h-full min-w-full h-full transition-transform duration-150 ease-out" style="font-family: var(--kd-font-family-sans, inherit); --kd--navbar-height: calc(var(--kd-navbar-height) + var(--kd-breadcrumbs-height));"><div class="fixed top-0 z-30 w-full flex-none transform-gpu transition-transform duration-150 ease-out supports-backdrop-blur:bg-white/60 bg-gray-200/95 backdrop-blur dark:bg-gray-800/60 translate-y-0" style="border-bottom: var(--kd-navbar-border-bottom);"><div class="flex w-full flex-col items-center justify-center mx-auto max-w-[var(--kd-navbar-max-width)] p-[var(--kd-navbar-padding)] h-[var(--kd--navbar-height)]"><div class="flex w-full items-center">
|
||||
|
||||
|
||||
<div class="flex-1"></div>
|
||||
|
||||
<div class="992:hidden -mr-2 flex items-center">
|
||||
|
||||
<div class="relative inline-block text-left not-prose"><button id="popover-button-2" type="button" class="inline-flex w-full justify-center rounded-md p-2 text-lg font-medium text-gray-soft hover:text-gray-inverse" aria-controls="popover-2" aria-expanded="false" aria-haspopup="true"><svg viewBox="0 0 24 24" width="30" height="30"><!-- HTML_TAG_START --><path fill="currentColor" d="M18 18v2H6v-2h12zm3-7v2H3v-2h18zm-3-7v2H6V4h12z"/><!-- HTML_TAG_END --></svg>
|
||||
<span class="sr-only">Main navigation menu</span>
|
||||
</button>
|
||||
|
||||
<div class="fixed top-0 left-0 bg-black/40 backdrop-blur-sm dark:bg-gray-700/80 transition-opacity duration-75 pointer-events-auto z-40 w-screen h-screen opacity-0 invisible"></div>
|
||||
|
||||
<div hidden></div>
|
||||
|
||||
</div></div>
|
||||
|
||||
<div class="992:flex 992:items-center hidden"><nav><ul class="flex items-center space-x-8 text-lg font-medium"><li class="mt-4 first:mt-0 992:mt-0"><a class="p-1 border-b hover:border-b-2 border-brand text-gray-inverse" href="/latest/get-started">Get started</a></li><li class="mt-4 first:mt-0 992:mt-0"><a class="p-1 text-gray-soft hover:text-gray-inverse" href="/latest/api">API</a></li></ul></nav>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="border-gray-divider ml-6 mr-2.5 h-7 w-2 border-l-[1.5px]"></div>
|
||||
|
||||
<div class="hidden 992:flex items-center">
|
||||
|
||||
<div class="relative inline-block text-left not-prose"><button id="menu-button-2" type="button" class="inline-flex w-full justify-center rounded-md p-2 text-lg font-medium text-gray-soft hover:text-gray-inverse" aria-controls="menu-2" aria-expanded="false" aria-haspopup="true"><svg viewBox="0 0 24 24" width="1.2em" height="1.2em" class="h-6 w-6"><!-- HTML_TAG_START --><path fill="currentColor" d="M12 18a6 6 0 1 1 0-12a6 6 0 0 1 0 12zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636L5.636 7.05L3.515 4.93zM16.95 18.364l1.414-1.414l2.121 2.121l-1.414 1.414l-2.121-2.121zm2.121-14.85l1.414 1.415l-2.121 2.121l-1.414-1.414l2.121-2.121zM5.636 16.95l1.414 1.414l-2.121 2.121l-1.414-1.414l2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z"/><!-- HTML_TAG_END --></svg>
|
||||
<span class="sr-only">Color Scheme</span>
|
||||
</button>
|
||||
|
||||
<div hidden></div>
|
||||
|
||||
</div></div></div></div>
|
||||
|
||||
<div class="border-gray-divider 992:hidden flex w-full items-center mt-4 pt-4 border-t"><button id="main-sidebar-button" type="button" class="text-gray-soft hover:text-gray-inverse inline-flex justify-center rounded-md p-2 text-sm font-medium" aria-controls="main-sidebar" aria-expanded="false" aria-haspopup="true"><span class="sr-only">Open main sidebar</span>
|
||||
<svg viewBox="0 0 24 24" width="28" height="28"><!-- HTML_TAG_START --><path fill="currentColor" d="M21 18v2H3v-2h18zM17.05 3.55L22 8.5l-4.95 4.95v-9.9zM12 11v2H3v-2h9zm0-7v2H3V4h9z"/><!-- HTML_TAG_END --></svg></button>
|
||||
|
||||
<ol class="text-md text-gray-soft flex items-center whitespace-nowrap leading-6 mt-px ml-2.5">
|
||||
<li class="truncate font-semibold text-slate-900 dark:text-slate-200">Get started</li></ol></div>
|
||||
|
||||
|
||||
</div></div>
|
||||
|
||||
<div class="mx-auto w-full flex flex-row min-h-full max-w-[var(--kd-content-max-width)] pt-[var(--kd--navbar-height)] z-20"><aside id="main-sidebar" class="sidebar self-start fixed top-0 left-0 transform bg-gray-body z-50 border-gray-divider border-r -translate-x-full transform transition-transform duration-200 ease-out will-change-transform max-h-screen min-h-screen min-w-[var(--kd-sidebar-min-width)] max-w-[var(--kd-sidebar-max-width)] 992:translate-x-0 922:block 992:sticky 992:z-0 overflow-y-auto p-[var(--kd-sidebar-padding)] 992:top-[var(--kd--navbar-height)] 992:min-h-[calc(100vh-var(--kd--navbar-height))] 992:max-h-[calc(100vh-var(--kd--navbar-height))]" role="dialog" aria-modal="true" style=""><div class="992:hidden sticky top-0 left-0 flex items-center"><div class="flex-1"></div>
|
||||
<button class="text-gray-soft hover:text-gray-inverse p-4 -mx-6 pointer-events-none"><svg viewBox="0 0 24 24" width="24" height="24"><!-- HTML_TAG_START --><path fill="currentColor" d="m12 10.586l4.95-4.95l1.414 1.414l-4.95 4.95l4.95 4.95l-1.414 1.414l-4.95-4.95l-4.95 4.95l-1.414-1.414l4.95-4.95l-4.95-4.95L7.05 5.636z"/><!-- HTML_TAG_END --></svg>
|
||||
<span class="sr-only">Close sidebar</span></button></div>
|
||||
|
||||
<nav class="992:px-1">
|
||||
|
||||
|
||||
|
||||
<ul class="mt-8 pb-28 992:pb-0">
|
||||
<li class="992:mt-10 mt-12 first:mt-0"><h5 class="text-gray-strong 992:mb-3 mb-8 text-lg font-semibold">
|
||||
</h5>
|
||||
<ul class="border-gray-divider space-y-3 border-l"><li class="first:mt-6"><a class="992:py-1.5 -ml-px flex items-center border-l-2 py-2 pl-4 text-brand font-semibold" href="/latest/get-started" style="border-color: var(--kd-sidebar-border-active);">
|
||||
Get started
|
||||
</a>
|
||||
</li><li class="first:mt-6"><a class="992:py-1.5 -ml-px flex items-center border-l-2 py-2 pl-4 hover:border-gray-inverse text-gray-soft hover:text-gray-inverse border-transparent font-normal" href="/latest/api" style="">
|
||||
API
|
||||
</a>
|
||||
</li></ul>
|
||||
</li></ul>
|
||||
|
||||
|
||||
</nav></aside>
|
||||
|
||||
<div class="992:hidden z-40"><div class="fixed top-0 left-0 bg-black/40 backdrop-blur-sm dark:bg-gray-700/80 transition-opacity duration-75 pointer-events-auto z-40 w-screen h-screen opacity-0 invisible"></div></div>
|
||||
|
||||
<main class="w-full overflow-x-hidden 992:min-h-[calc(100vh-var(--kd--navbar-height))] min-h-[calc(100vh-var(--kd--navbar-height))] px-8 992:px-16 pt-8" style="max-width: var(--kd-main-max-width, var(--kd-article-max-width));">
|
||||
|
||||
<article class="markdown prose dark:prose-invert z-10 max-w-[var(--kd-article-max-width)]">
|
||||
|
||||
<h1>updeep-remeda</h1>
|
||||
<blockquote><p>Easily update nested frozen objects and arrays in a declarative and immutable
|
||||
manner.</p></blockquote>
|
||||
<h2 id="about" tabindex="-1">
|
||||
<a class="header-anchor" href="#about" aria-hidden="true">#</a> About</h2>
|
||||
<div class="svelte-ns3bhs"><h4 class="svelte-ns3bhs">💡 Info</h4>
|
||||
|
||||
<p>This is a fork of the main updeep package. For ease of reading — not to
|
||||
mention ease of shamelessly lifting large pieces of the original
|
||||
documentation — in this documentation all mentions of <code>updeep</code> refers to this
|
||||
fork.</p>
|
||||
|
||||
</div>
|
||||
<p>updeep makes updating deeply nested objects/arrays painless by allowing you to
|
||||
declare the updates you would like to make and it will take care of the rest. It
|
||||
will recursively return the same instance if no changes have been made, making
|
||||
it ideal for using reference equality checks to detect changes.</p>
|
||||
<p>Because of this, everything returned by updeep is frozen. Not only that, but
|
||||
updeep assumes that every object passed in to update is immutable, so it may
|
||||
freeze objects passed in as well. Note that the freezing only happens in
|
||||
development.</p>
|
||||
<p>This fork of updeep requires Remeda, but works very well with any other utility function ([lodash], [Ramda], etc).</p>
|
||||
<h2 id="differences-with-the-original-updeep" tabindex="-1">
|
||||
<a class="header-anchor" href="#differences-with-the-original-updeep" aria-hidden="true">#</a> Differences with the original Updeep</h2>
|
||||
<ul><li><p>Under the hood, the use of lodash has
|
||||
been replaced by Remeda (for better type support and tree-shaking abilities).</p></li>
|
||||
<li><p>The codebase has been ported to TypeScript (mostly for the lulz).</p></li>
|
||||
<li><p>The order of parameters in the non-curryied invocation of functions has been modified. In the original updeep the input object is the last parameter, whereas here it's the first.</p></li></ul>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #676E95">// original updeep</span></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> dataIn </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">a</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">b</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">2</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">};</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">let</span><span style="color: #A6ACCD"> dataOut </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">c</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">3</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span><span style="color: #A6ACCD"> dataIn)</span><span style="color: #89DDFF">;</span><span style="color: #A6ACCD"> </span><span style="color: #676E95">// simple call</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD">dataOut </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">c</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">3</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)(dataIn)</span><span style="color: #89DDFF">;</span><span style="color: #A6ACCD"> </span><span style="color: #676E95">// curried</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #676E95">// updeep-remeda</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD">dataOut </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(dataIn</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">c</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">3</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span><span style="color: #A6ACCD"> </span><span style="color: #676E95">// simple call</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD">dataOut </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">c</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">3</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)(dataIn)</span><span style="color: #89DDFF">;</span><span style="color: #A6ACCD"> </span><span style="color: #676E95">// curried</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><ul><li><p><code>withDefault</code> has been removed as the behavior can be implemented using
|
||||
Remeda's <code>pipe</code>, or a simple <code>??</code>.</p></li>
|
||||
<li><p><code>u.omitted</code> has been renamed <code>u.skip</code>.</p></li></ul>
|
||||
<h2 id="installation" tabindex="-1">
|
||||
<a class="header-anchor" href="#installation" aria-hidden="true">#</a> Installation</h2>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-bash ext-sh" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #A6ACCD">$ npm install @yanick/updeep-remeda</span></span>
|
||||
<span class="line"><span style="color: #676E95"># or</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD">$ pnpm install @yanick/updeep-remeda</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div><h2 id="full-example" tabindex="-1">
|
||||
<a class="header-anchor" href="#full-example" aria-hidden="true">#</a> Full example</h2>
|
||||
<div class="code-fence overflow-y-auto relative max-h-[60vh] 576:max-h-[32rem] my-8 rounded-md shadow-lg mx-auto border border-gray-divider lang-javascript ext-js" style="background-color: var(--kd-code-fence-bg);">
|
||||
|
||||
<div class="code relative z-0 overflow-hidden"><div class=""><!-- HTML_TAG_START --><pre><code><span class="line"><span style="color: #89DDFF">import</span><span style="color: #A6ACCD"> u </span><span style="color: #89DDFF">from</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">@yanick/updeep-remeda</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> person </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">first</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Bill</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">last</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Sagat</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">children</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Mary-Kate</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">age</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">7</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Ashley</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">age</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">7</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> ]</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">todo</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> [</span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Be funny</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Manage household</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD">]</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">email</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">bill@example.com</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">version</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">};</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> inc </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">(</span><span style="color: #A6ACCD">i</span><span style="color: #89DDFF">)</span><span style="color: #A6ACCD"> </span><span style="color: #C792EA">=></span><span style="color: #A6ACCD"> i </span><span style="color: #89DDFF">+</span><span style="color: #A6ACCD"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> eq </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">(</span><span style="color: #A6ACCD">x</span><span style="color: #89DDFF">)</span><span style="color: #A6ACCD"> </span><span style="color: #C792EA">=></span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">(</span><span style="color: #A6ACCD">y</span><span style="color: #89DDFF">)</span><span style="color: #A6ACCD"> </span><span style="color: #C792EA">=></span><span style="color: #A6ACCD"> x </span><span style="color: #89DDFF">===</span><span style="color: #A6ACCD"> y</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color: #C792EA">const</span><span style="color: #A6ACCD"> newPerson </span><span style="color: #89DDFF">=</span><span style="color: #A6ACCD"> </span><span style="color: #82AAFF">u</span><span style="color: #A6ACCD">(person</span><span style="color: #89DDFF">,</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span></span>
|
||||
<span class="line"><span style="color: #89DDFF"> </span><span style="color: #676E95">// Change first name</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">name</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">first</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Bob</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">},</span></span>
|
||||
<span class="line"><span style="color: #89DDFF"> </span><span style="color: #676E95">// Increment all children's ages</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">children</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> u</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">map</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">{</span><span style="color: #A6ACCD"> </span><span style="color: #F07178">age</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> inc </span><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF"> </span><span style="color: #676E95">// Update email</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">email</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> </span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">bob@example.com</span><span style="color: #89DDFF">"</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF"> </span><span style="color: #676E95">// Remove todo</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">todo</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> u</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">reject</span><span style="color: #A6ACCD">(</span><span style="color: #82AAFF">eq</span><span style="color: #A6ACCD">(</span><span style="color: #89DDFF">"</span><span style="color: #C3E88D">Be funny</span><span style="color: #89DDFF">"</span><span style="color: #A6ACCD">))</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF"> </span><span style="color: #676E95">// Increment version</span></span>
|
||||
<span class="line"><span style="color: #A6ACCD"> </span><span style="color: #F07178">version</span><span style="color: #89DDFF">:</span><span style="color: #A6ACCD"> inc</span><span style="color: #89DDFF">,</span></span>
|
||||
<span class="line"><span style="color: #89DDFF">}</span><span style="color: #A6ACCD">)</span><span style="color: #89DDFF">;</span></span>
|
||||
<span class="line"><span style="color: #676E95">// => {</span></span>
|
||||
<span class="line"><span style="color: #676E95">// name: { first: 'Bob', last: 'Sagat' },</span></span>
|
||||
<span class="line"><span style="color: #676E95">// children: [</span></span>
|
||||
<span class="line"><span style="color: #676E95">// { name: 'Mary-Kate', age: 8 },</span></span>
|
||||
<span class="line"><span style="color: #676E95">// { name: 'Ashley', age: 8 }</span></span>
|
||||
<span class="line"><span style="color: #676E95">// ],</span></span>
|
||||
<span class="line"><span style="color: #676E95">// todo: [</span></span>
|
||||
<span class="line"><span style="color: #676E95">// 'Manage household'</span></span>
|
||||
<span class="line"><span style="color: #676E95">// ],</span></span>
|
||||
<span class="line"><span style="color: #676E95">// email: 'bob@example.com',</span></span>
|
||||
<span class="line"><span style="color: #676E95">// version: 2</span></span>
|
||||
<span class="line"><span style="color: #676E95">//}</span></span>
|
||||
<span class="line"></span></code></pre><!-- HTML_TAG_END --></div>
|
||||
|
||||
|
||||
|
||||
</div></div></article>
|
||||
|
||||
<hr class="border-gray-divider mt-20">
|
||||
|
||||
<div class="992:text-xl flex items-center pt-12 pb-20 text-lg font-semibold text-gray-300">
|
||||
|
||||
<div class="ml-auto mb-4 flex flex-col items-end"><span class="text-gray-inverse mr-3 mb-4 inline-block">Next</span>
|
||||
|
||||
<a class="group transform-gpu text-lg font-medium transition-transform hover:scale-105 hover:text-gray-inverse" href="/latest/api" data-sveltekit-prefetch>
|
||||
<span class="inline-block transform transition-transform duration-100 group-hover:translate-x-0 translate-x-2">API</span>
|
||||
<span class="opacity-0 transition-opacity duration-100 group-hover:visible group-hover:opacity-100 inline-block">-></span></a></div></div>
|
||||
|
||||
</main>
|
||||
|
||||
<div class="992:flex-1"></div>
|
||||
|
||||
<div class="on-this-page pt-8 pb-8 hidden overflow-auto min-w-[160px] sticky right-4 pr-4 1440:right-6 1440:pr-2 1280:block pl-0.5 top-[var(--kd--navbar-height)] max-h-[calc(100vh-var(--kd--navbar-height))]" style=""><h5 class="font-semibold w-full text-left text-gray-inverse text-lg">On this page</h5>
|
||||
<ul class="space-y-4 mt-4"><li class="text-gray-soft hover:text-gray-inverse"><a href="#about">About</a></li>
|
||||
<li class="text-gray-soft hover:text-gray-inverse"><a href="#differences-with-the-original-updeep">Differences with the original Updeep</a></li>
|
||||
<li class="text-gray-soft hover:text-gray-inverse"><a href="#installation">Installation</a></li>
|
||||
<li class="text-gray-soft hover:text-gray-inverse"><a href="#full-example">Full example</a></li>
|
||||
</ul></div></div></div>
|
||||
|
||||
|
||||
<script type="module" data-sveltekit-hydrate="13ln1h8">
|
||||
import { start } from "../_app/immutable/start-4894d21d.js";
|
||||
|
||||
start({
|
||||
env: {},
|
||||
paths: {"base":"","assets":""},
|
||||
target: document.querySelector('[data-sveltekit-hydrate="13ln1h8"]').parentNode,
|
||||
version: "1673374967075",
|
||||
hydrate: {
|
||||
node_ids: [0, 5],
|
||||
data: [null,null],
|
||||
form: null
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<script type="application/json" data-sveltekit-fetched data-url="/kit-docs/latest_get-started.meta">{"status":200,"statusText":"","headers":{},"body":"{\"excerpt\":\"\",\"headers\":[{\"level\":2,\"title\":\"About\",\"slug\":\"about\",\"children\":[]},{\"level\":2,\"title\":\"Differences with the original Updeep\",\"slug\":\"differences-with-the-original-updeep\",\"children\":[]},{\"level\":2,\"title\":\"Installation\",\"slug\":\"installation\",\"children\":[]},{\"level\":2,\"title\":\"Full example\",\"slug\":\"full-example\",\"children\":[]}],\"title\":\"Get Started\",\"frontmatter\":{\"title\":\"Get Started\"},\"lastUpdated\":1673371541420}"}</script></div>
|
||||
</body>
|
||||
</html>
|
1
docs/vendor/docsify.js
vendored
Normal file
1
docs/vendor/docsify.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
docs/vendor/themes/vue.css
vendored
Normal file
1
docs/vendor/themes/vue.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -1,214 +0,0 @@
|
||||
{
|
||||
"src/lib/fonts/Inter-VF.italic-latin.woff2": {
|
||||
"file": "_app/immutable/assets/Inter-VF.italic-latin-65279caf.woff2",
|
||||
"src": "src/lib/fonts/Inter-VF.italic-latin.woff2"
|
||||
},
|
||||
"src/lib/fonts/Inter-VF.roman-latin.woff2": {
|
||||
"file": "_app/immutable/assets/Inter-VF.roman-latin-1b58736b.woff2",
|
||||
"src": "src/lib/fonts/Inter-VF.roman-latin.woff2"
|
||||
},
|
||||
"src/lib/fonts/FiraCode-VF.woff2": {
|
||||
"file": "_app/immutable/assets/FiraCode-VF-05b30ba3.woff2",
|
||||
"src": "src/lib/fonts/FiraCode-VF.woff2"
|
||||
},
|
||||
"src/lib/fonts/FiraCode-VF.woff": {
|
||||
"file": "_app/immutable/assets/FiraCode-VF-71c5868a.woff",
|
||||
"src": "src/lib/fonts/FiraCode-VF.woff"
|
||||
},
|
||||
"Info.css": {
|
||||
"file": "_app/immutable/assets/Info-eb9b7651.css",
|
||||
"src": "Info.css"
|
||||
},
|
||||
"src/routes/+layout.css": {
|
||||
"file": "_app/immutable/assets/_layout-d4f4ab95.css",
|
||||
"src": "src/routes/+layout.css"
|
||||
},
|
||||
"_control-f5b05b5f.js": {
|
||||
"file": "_app/immutable/chunks/control-f5b05b5f.js"
|
||||
},
|
||||
"node_modules/.pnpm/@sveltejs+kit@1.0.7_svelte@3.55.0+vite@4.0.4/node_modules/@sveltejs/kit/src/runtime/components/error.svelte": {
|
||||
"file": "_app/immutable/components/error.svelte-884b4aac.js",
|
||||
"src": "node_modules/.pnpm/@sveltejs+kit@1.0.7_svelte@3.55.0+vite@4.0.4/node_modules/@sveltejs/kit/src/runtime/components/error.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_singletons-79165f10.js",
|
||||
"_stores-1c9d0b64.js"
|
||||
]
|
||||
},
|
||||
"__layout-32f74dae.js": {
|
||||
"file": "_app/immutable/chunks/_layout-32f74dae.js"
|
||||
},
|
||||
"_index-35a671a5.js": {
|
||||
"file": "_app/immutable/chunks/index-35a671a5.js",
|
||||
"imports": [
|
||||
"_control-f5b05b5f.js"
|
||||
]
|
||||
},
|
||||
"__page-a27df1e4.js": {
|
||||
"file": "_app/immutable/chunks/_page-a27df1e4.js",
|
||||
"imports": [
|
||||
"_index-35a671a5.js"
|
||||
]
|
||||
},
|
||||
"_contexts-c54c563b.js": {
|
||||
"file": "_app/immutable/chunks/contexts-c54c563b.js",
|
||||
"imports": [
|
||||
"_singletons-79165f10.js",
|
||||
"_stores-1c9d0b64.js"
|
||||
]
|
||||
},
|
||||
"__page-115bdbbb.js": {
|
||||
"file": "_app/immutable/chunks/_page-115bdbbb.js",
|
||||
"imports": [
|
||||
"_index-35a671a5.js"
|
||||
]
|
||||
},
|
||||
".svelte-kit/generated/nodes/4.js": {
|
||||
"file": "_app/immutable/chunks/4-6a5c1f74.js",
|
||||
"src": ".svelte-kit/generated/nodes/4.js",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"src/routes/latest/api/+page.md"
|
||||
]
|
||||
},
|
||||
".svelte-kit/generated/nodes/2.js": {
|
||||
"file": "_app/immutable/chunks/2-c0299577.js",
|
||||
"src": ".svelte-kit/generated/nodes/2.js",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"__page-a27df1e4.js"
|
||||
]
|
||||
},
|
||||
".svelte-kit/generated/nodes/1.js": {
|
||||
"file": "_app/immutable/chunks/1-1bd08e4a.js",
|
||||
"src": ".svelte-kit/generated/nodes/1.js",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"node_modules/.pnpm/@sveltejs+kit@1.0.7_svelte@3.55.0+vite@4.0.4/node_modules/@sveltejs/kit/src/runtime/components/error.svelte"
|
||||
]
|
||||
},
|
||||
".svelte-kit/generated/nodes/3.js": {
|
||||
"file": "_app/immutable/chunks/3-c0299577.js",
|
||||
"src": ".svelte-kit/generated/nodes/3.js",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"__page-115bdbbb.js"
|
||||
]
|
||||
},
|
||||
"src/routes/+page.js": {
|
||||
"file": "_app/immutable/modules/pages/_page.js-c1f1be17.js",
|
||||
"src": "src/routes/+page.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index-35a671a5.js",
|
||||
"__page-a27df1e4.js"
|
||||
]
|
||||
},
|
||||
".svelte-kit/generated/nodes/0.js": {
|
||||
"file": "_app/immutable/chunks/0-0174d166.js",
|
||||
"src": ".svelte-kit/generated/nodes/0.js",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"__layout-32f74dae.js",
|
||||
"src/routes/+layout.svelte"
|
||||
]
|
||||
},
|
||||
"src/routes/+layout.js": {
|
||||
"file": "_app/immutable/modules/pages/_layout.js-82ef414d.js",
|
||||
"src": "src/routes/+layout.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"__layout-32f74dae.js"
|
||||
]
|
||||
},
|
||||
".svelte-kit/generated/nodes/5.js": {
|
||||
"file": "_app/immutable/chunks/5-2bf42e67.js",
|
||||
"src": ".svelte-kit/generated/nodes/5.js",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"src/routes/latest/get-started/+page.md"
|
||||
]
|
||||
},
|
||||
"_singletons-79165f10.js": {
|
||||
"file": "_app/immutable/chunks/singletons-79165f10.js"
|
||||
},
|
||||
"src/routes/latest/+page.js": {
|
||||
"file": "_app/immutable/modules/pages/latest/_page.js-bc157eed.js",
|
||||
"src": "src/routes/latest/+page.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index-35a671a5.js",
|
||||
"__page-115bdbbb.js"
|
||||
]
|
||||
},
|
||||
"_stores-1c9d0b64.js": {
|
||||
"file": "_app/immutable/chunks/stores-1c9d0b64.js",
|
||||
"imports": [
|
||||
"_singletons-79165f10.js"
|
||||
]
|
||||
},
|
||||
"src/routes/latest/get-started/+page.md": {
|
||||
"file": "_app/immutable/components/pages/latest/get-started/_page.md-5c5fe5e6.js",
|
||||
"src": "src/routes/latest/get-started/+page.md",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_singletons-79165f10.js",
|
||||
"_Info-8cb253a1.js"
|
||||
]
|
||||
},
|
||||
"node_modules/.pnpm/@sveltejs+kit@1.0.7_svelte@3.55.0+vite@4.0.4/node_modules/@sveltejs/kit/src/runtime/client/start.js": {
|
||||
"file": "_app/immutable/start-4894d21d.js",
|
||||
"src": "node_modules/.pnpm/@sveltejs+kit@1.0.7_svelte@3.55.0+vite@4.0.4/node_modules/@sveltejs/kit/src/runtime/client/start.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_singletons-79165f10.js",
|
||||
"_control-f5b05b5f.js"
|
||||
],
|
||||
"dynamicImports": [
|
||||
".svelte-kit/generated/nodes/0.js",
|
||||
".svelte-kit/generated/nodes/1.js",
|
||||
".svelte-kit/generated/nodes/2.js",
|
||||
".svelte-kit/generated/nodes/3.js",
|
||||
".svelte-kit/generated/nodes/4.js",
|
||||
".svelte-kit/generated/nodes/5.js"
|
||||
]
|
||||
},
|
||||
"src/routes/latest/api/+page.md": {
|
||||
"file": "_app/immutable/components/pages/latest/api/_page.md-bd91dac8.js",
|
||||
"src": "src/routes/latest/api/+page.md",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_singletons-79165f10.js",
|
||||
"_Info-8cb253a1.js"
|
||||
]
|
||||
},
|
||||
"_Info-8cb253a1.js": {
|
||||
"file": "_app/immutable/chunks/Info-8cb253a1.js",
|
||||
"imports": [
|
||||
"_singletons-79165f10.js",
|
||||
"_contexts-c54c563b.js"
|
||||
],
|
||||
"css": [
|
||||
"_app/immutable/assets/Info-eb9b7651.css"
|
||||
]
|
||||
},
|
||||
"src/routes/+layout.svelte": {
|
||||
"file": "_app/immutable/components/pages/_layout.svelte-ac40f340.js",
|
||||
"src": "src/routes/+layout.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_singletons-79165f10.js",
|
||||
"_contexts-c54c563b.js",
|
||||
"_stores-1c9d0b64.js"
|
||||
],
|
||||
"css": [
|
||||
"_app/immutable/assets/_layout-d4f4ab95.css"
|
||||
],
|
||||
"assets": [
|
||||
"_app/immutable/assets/Inter-VF.roman-latin-1b58736b.woff2",
|
||||
"_app/immutable/assets/Inter-VF.italic-latin-65279caf.woff2",
|
||||
"_app/immutable/assets/FiraCode-VF-05b30ba3.woff2",
|
||||
"_app/immutable/assets/FiraCode-VF-71c5868a.woff"
|
||||
]
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user