@nunofyobiz/effect-extras 2.1.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +2 -1
  2. package/dist/ArrayX.d.ts +0 -34
  3. package/dist/ArrayX.d.ts.map +1 -1
  4. package/dist/ArrayX.js +4 -58
  5. package/dist/ArrayX.js.map +1 -1
  6. package/dist/InclusiveOr.d.ts +1123 -0
  7. package/dist/InclusiveOr.d.ts.map +1 -0
  8. package/dist/InclusiveOr.js +1074 -0
  9. package/dist/InclusiveOr.js.map +1 -0
  10. package/dist/NonNullableX.d.ts.map +1 -1
  11. package/dist/NonNullableX.js +5 -0
  12. package/dist/NonNullableX.js.map +1 -1
  13. package/dist/OptionX.d.ts +8 -2
  14. package/dist/OptionX.d.ts.map +1 -1
  15. package/dist/OptionX.js +7 -1
  16. package/dist/OptionX.js.map +1 -1
  17. package/dist/PredicateX.d.ts +32 -0
  18. package/dist/PredicateX.d.ts.map +1 -1
  19. package/dist/PredicateX.js +38 -0
  20. package/dist/PredicateX.js.map +1 -1
  21. package/dist/RecordX.d.ts +128 -1
  22. package/dist/RecordX.d.ts.map +1 -1
  23. package/dist/RecordX.js +162 -1
  24. package/dist/RecordX.js.map +1 -1
  25. package/dist/StringX.d.ts +61 -0
  26. package/dist/StringX.d.ts.map +1 -1
  27. package/dist/StringX.js +68 -0
  28. package/dist/StringX.js.map +1 -1
  29. package/dist/WarnResult.d.ts +115 -70
  30. package/dist/WarnResult.d.ts.map +1 -1
  31. package/dist/WarnResult.js +141 -210
  32. package/dist/WarnResult.js.map +1 -1
  33. package/dist/index.d.ts +1 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +1 -0
  36. package/dist/index.js.map +1 -1
  37. package/package.json +2 -2
  38. package/src/ArrayX.ts +4 -86
  39. package/src/InclusiveOr.ts +1255 -0
  40. package/src/NonNullableX.ts +5 -0
  41. package/src/OptionX.ts +8 -2
  42. package/src/PredicateX.ts +41 -0
  43. package/src/RecordX.ts +183 -1
  44. package/src/StringX.ts +113 -0
  45. package/src/WarnResult.ts +297 -227
  46. package/src/index.ts +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InclusiveOr.js","names":["Array","Data","Effect","Option","Predicate","Struct","pipe","constUndefined","dual","identity","taggedEnum","LeftOnly","RightOnly","LeftAndRight","is","$is","match","$match","WithLeft","left","right","isNotNullish","WithRight","optionFromNullables","some","none","fromNullables","orElse","Error","getOrElse","matchLeft","Left","inclusiveOr","matchRight","Right","orElseLeft","orElseRight","orUndefined","undefined","leftOrElse","orElseReturn","get","leftOrUndefined","rightOrElse","rightOrUndefined","rightOption","leftOption","mapBoth","mapLeft","mapRight","mapBothEffect","map","left2","right2","all","flatMapLeft","mapLeftEffect","succeed","flatMapLeftEffect","flatMapRight","mapRightEffect","flatMapRightEffect","zip","array1","array2","f","newLength","Math","max","length","makeBy","index"],"sources":["../src/InclusiveOr.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;AAKA,SAASA,KAAK,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,EAAEC,SAAS,EAAEC,MAAM,EAAEC,IAAI,QAAQ,QAAQ;AAC7E,SAASC,cAAc,EAAEC,IAAI,EAAEC,QAAQ,QAAQ,iBAAiB;AAiJhE,MAAMC,UAAU,gBAAGT,IAAI,CAACS,UAAU,EAAyB;AAE3D;;;;;;;;;;;;;;;;AAgBA,OAAO,MAAMC,QAAQ,GAAGD,UAAU,CAACC,QAAQ;AAE3C;;;;;;;;;;;;;;;;AAgBA,OAAO,MAAMC,SAAS,GAAGF,UAAU,CAACE,SAAS;AAE7C;;;;;;;;;;;;;;;;;;AAkBA,OAAO,MAAMC,YAAY,GAAGH,UAAU,CAACG,YAAY;AAEnD;;;;;;;;;;;;;;;;;;;AAmBA,OAAO,MAAMC,EAAE,GAAGJ,UAAU,CAACK,GAAG;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,OAAO,MAAMC,KAAK,GAAGN,UAAU,CAACO,MAAM;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,OAAO,MAAMC,QAAQ,GAAGA,CAAO;EAC7BC,IAAI;EACJC;AAAK,CAIN,KACChB,SAAS,CAACiB,YAAY,CAACD,KAAK,CAAC,GACzBP,YAAY,CAAC;EAAEM,IAAI;EAAEC;AAAK,CAAE,CAAC,GAC7BT,QAAQ,CAAC;EAAEQ;AAAI,CAAE,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,OAAO,MAAMG,SAAS,GAAGA,CAAO;EAC9BH,IAAI;EACJC;AAAK,CAIN,KACChB,SAAS,CAACiB,YAAY,CAACF,IAAI,CAAC,GACxBN,YAAY,CAAC;EAAEM,IAAI;EAAEC;AAAK,CAAE,CAAC,GAC7BR,SAAS,CAAC;EAAEQ;AAAK,CAAE,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,OAAO,MAAMG,mBAAmB,GAAGA,CAAO;EACxCJ,IAAI;EACJC;AAAK,CAIN,KAAsC;EACrC,IAAIhB,SAAS,CAACiB,YAAY,CAACF,IAAI,CAAC,IAAIf,SAAS,CAACiB,YAAY,CAACD,KAAK,CAAC,EAAE;IACjE,OAAOjB,MAAM,CAACqB,IAAI,CAACX,YAAY,CAAC;MAAEM,IAAI;MAAEC;IAAK,CAAE,CAAC,CAAC;EACnD;EACA,IAAIhB,SAAS,CAACiB,YAAY,CAACF,IAAI,CAAC,EAAE;IAChC,OAAOhB,MAAM,CAACqB,IAAI,CAACb,QAAQ,CAAC;MAAEQ;IAAI,CAAE,CAAC,CAAC;EACxC;EACA,IAAIf,SAAS,CAACiB,YAAY,CAACD,KAAK,CAAC,EAAE;IACjC,OAAOjB,MAAM,CAACqB,IAAI,CAACZ,SAAS,CAAC;MAAEQ;IAAK,CAAE,CAAC,CAAC;EAC1C;EACA,OAAOjB,MAAM,CAACsB,IAAI,EAAE;AACtB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,OAAO,MAAMC,aAAa,GAAGA,CAAO;EAClCP,IAAI;EACJC,KAAK;EACLO,MAAM,GAAGA,CAAA,KAAK;IACZ,MAAM,IAAIC,KAAK,CAAC,kCAAkC,CAAC;EACrD;AAAC,CAKF,KACCtB,IAAI,CAACiB,mBAAmB,CAAC;EAAEJ,IAAI;EAAEC;AAAK,CAAE,CAAC,EAAEjB,MAAM,CAAC0B,SAAS,CAACF,MAAM,CAAC,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,OAAO,MAAMG,SAAS,GACpBA,CAAU;EACRC,IAAI;EACJnB;AAAS,CAIV,KACAoB,WAA8B;AAC7B;AACAhB,KAAK,CAACgB,WAAW,EAAE;EACjBrB,QAAQ,EAAEA,CAAC;IAAEQ;EAAI,CAAE,KAAKY,IAAI,CAACZ,IAAI,CAAC;EAClCP,SAAS,EAAEA,CAAC;IAAEQ;EAAK,CAAE,KAAKR,SAAS,CAACQ,KAAK,CAAC;EAC1CP,YAAY,EAAEA,CAAC;IAAEM;EAAI,CAAE,KAAKY,IAAI,CAACZ,IAAI;CACtC,CAAM;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,OAAO,MAAMc,UAAU,GACrBA,CAAU;EACRtB,QAAQ;EACRuB;AAAK,CAIN,KACAF,WAA8B;AAC7B;AACAhB,KAAK,CAACgB,WAAW,EAAE;EACjBrB,QAAQ,EAAEA,CAAC;IAAEQ;EAAI,CAAE,KAAKR,QAAQ,CAACQ,IAAI,CAAC;EACtCP,SAAS,EAAEA,CAAC;IAAEQ;EAAK,CAAE,KAAKc,KAAK,CAACd,KAAK,CAAC;EACtCP,YAAY,EAAEA,CAAC;IAAEO;EAAK,CAAE,KAAKc,KAAK,CAACd,KAAK;CACzC,CAAM;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,OAAO,MAAMO,MAAM,GAAGA,CAAS;EAC7BQ,UAAU;EACVC;AAAW,CAIZ,KACCpB,KAAK,CAAC;EACJL,QAAQ,EAAEA,CAAC;IAAEQ;EAAI,CAAE,KAAKN,YAAY,CAAC;IAAEM,IAAI;IAAEC,KAAK,EAAEgB,WAAW;EAAE,CAAE,CAAC;EACpExB,SAAS,EAAEA,CAAC;IAAEQ;EAAK,CAAE,KAAKP,YAAY,CAAC;IAAEM,IAAI,EAAEgB,UAAU,EAAE;IAAEf;EAAK,CAAE,CAAC;EACrEP,YAAY,EAAEA,CAAC;IAAEM,IAAI;IAAEC;EAAK,CAAE,KAAKP,YAAY,CAAC;IAAEM,IAAI;IAAEC;EAAK,CAAE;CAChE,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,OAAO,MAAMiB,WAAW,gBAAGV,MAAM,CAAC;EAChCQ,UAAU,EAAEA,CAAA,KAAMG,SAAS;EAC3BF,WAAW,EAAEA,CAAA,KAAME;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,OAAO,MAAMC,UAAU,GACjBC,YAAqB,IAClBR,WAA8B,IACnC1B,IAAI,CACF0B,WAAW,EACXL,MAAM,CAAC;EACLQ,UAAU,EAAEK,YAAY;EACxBJ,WAAW,EAAE7B;CACd,CAAC,EACFF,MAAM,CAACoC,GAAG,CAAC,MAAM,CAAC,CACnB;AAEL;;;;;;;;;;;;;;;;;;;;;AAqBA,OAAO,MAAMC,eAAe,gBAAGH,UAAU,CAAC,MAAMD,SAAS,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,OAAO,MAAMK,WAAW,GAClBH,YAAqB,IAClBR,WAA8B,IACnC1B,IAAI,CACF0B,WAAW,EACXL,MAAM,CAAC;EACLQ,UAAU,EAAE5B,cAAc;EAC1B6B,WAAW,EAAEI;CACd,CAAC,EACFnC,MAAM,CAACoC,GAAG,CAAC,OAAO,CAAC,CACpB;AAEL;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,OAAO,MAAMG,gBAAgB,gBAAGD,WAAW,CAAC,MAAML,SAAS,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,OAAO,MAAMO,WAAW,GACtBb,WAA8B,IAE9B1B,IAAI,CACF0B,WAAW,EACXC,UAAU,CAAC;EACTtB,QAAQ,EAAEA,CAAA,KAAMR,MAAM,CAACsB,IAAI,EAAE;EAC7BS,KAAK,EAAE/B,MAAM,CAACqB;CACf,CAAC,CACH;AAEH;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,OAAO,MAAMsB,UAAU,GACrBd,WAA8B,IAE9B1B,IAAI,CACF0B,WAAW,EACXF,SAAS,CAAC;EACRC,IAAI,EAAE5B,MAAM,CAACqB,IAAI;EACjBZ,SAAS,EAAEA,CAAA,KAAMT,MAAM,CAACsB,IAAI;CAC7B,CAAC,CACH;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,OAAO,MAAMsB,OAAO,GAAGA,CAAiB;EACtCC,OAAO;EACPC;AAAQ,CAIT,KACCjC,KAAK,CAAC;EACJL,QAAQ,EAAEA,CAAC;IAAEQ;EAAI,CAAE,KAAKR,QAAQ,CAAC;IAAEQ,IAAI,EAAE6B,OAAO,CAAC7B,IAAI;EAAC,CAAE,CAAC;EACzDP,SAAS,EAAEA,CAAC;IAAEQ;EAAK,CAAE,KAAKR,SAAS,CAAC;IAAEQ,KAAK,EAAE6B,QAAQ,CAAC7B,KAAK;EAAC,CAAE,CAAC;EAC/DP,YAAY,EAAEA,CAAC;IAAEM,IAAI;IAAEC;EAAK,CAAE,KAC5BP,YAAY,CAAC;IAAEM,IAAI,EAAE6B,OAAO,CAAC7B,IAAI,CAAC;IAAEC,KAAK,EAAE6B,QAAQ,CAAC7B,KAAK;EAAC,CAAE;CAC/D,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,OAAO,MAAM8B,aAAa,GAAGA,CAAiC;EAC5DF,OAAO;EACPC;AAAQ,CAIT,KAGCjC,KAAK,CAAC;EACJL,QAAQ,EAAEA,CAAC;IAAEQ;EAAI,CAAE,KACjBb,IAAI,CACF0C,OAAO,CAAC7B,IAAI,CAAC,EACbjB,MAAM,CAACiD,GAAG,CAAEC,KAAK,IAAKzC,QAAQ,CAAC;IAAEQ,IAAI,EAAEiC;EAAK,CAAE,CAAC,CAAC,CACjD;EAEHxC,SAAS,EAAEA,CAAC;IAAEQ;EAAK,CAAE,KACnBd,IAAI,CACF2C,QAAQ,CAAC7B,KAAK,CAAC,EACflB,MAAM,CAACiD,GAAG,CAAEE,MAAM,IAAKzC,SAAS,CAAC;IAAEQ,KAAK,EAAEiC;EAAM,CAAE,CAAC,CAAC,CACrD;EAEHxC,YAAY,EAAEA,CAAC;IAAEM,IAAI;IAAEC;EAAK,CAAE,KAC5Bd,IAAI,CACFJ,MAAM,CAACoD,GAAG,CAAC;IAAEnC,IAAI,EAAE6B,OAAO,CAAC7B,IAAI,CAAC;IAAEC,KAAK,EAAE6B,QAAQ,CAAC7B,KAAK;EAAC,CAAE,CAAC,EAC3DlB,MAAM,CAACiD,GAAG,CAAC,CAAC;IAAEhC,IAAI,EAAEiC,KAAK;IAAEhC,KAAK,EAAEiC;EAAM,CAAE,KACxCxC,YAAY,CAAC;IAAEM,IAAI,EAAEiC,KAAK;IAAEhC,KAAK,EAAEiC;EAAM,CAAE,CAAC,CAC7C;CAEN,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,OAAO,MAAML,OAAO,GAClBA,OAAyB,IAEzBD,OAAO,CAAC;EAAEC,OAAO;EAAEC,QAAQ,EAAExC;AAAQ,CAAE,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,OAAO,MAAM8C,WAAW,GACtBP,OAA0C,IAE1ChC,KAAK,CAAC;EACJL,QAAQ,EAAEA,CAAC;IAAEQ;EAAI,CAAE,KAAK6B,OAAO,CAAC7B,IAAI,CAAC;EACrCP,SAAS,EAAEA,CAAC;IAAEQ;EAAK,CAAE,KAAKR,SAAS,CAAC;IAAEQ;EAAK,CAAE,CAAC;EAC9CP,YAAY,EAAEA,CAAC;IAAEM;EAAI,CAAE,KAAK6B,OAAO,CAAC7B,IAAI;CACzC,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,OAAO,MAAMqC,aAAa,GACxBR,OAAgD,IAIhDE,aAAa,CAAC;EAAEF,OAAO;EAAEC,QAAQ,EAAE/C,MAAM,CAACuD;AAAO,CAAE,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,OAAO,MAAMC,iBAAiB,GAC5BV,OAAiE,IAIjEhC,KAAK,CAAC;EACJL,QAAQ,EAAEA,CAAC;IAAEQ;EAAI,CAAE,KAAK6B,OAAO,CAAC7B,IAAI,CAAC;EACrCP,SAAS,EAAEA,CAAC;IAAEQ;EAAK,CAAE,KAAKlB,MAAM,CAACuD,OAAO,CAAC7C,SAAS,CAAC;IAAEQ;EAAK,CAAE,CAAC,CAAC;EAC9DP,YAAY,EAAEA,CAAC;IAAEM;EAAI,CAAE,KAAK6B,OAAO,CAAC7B,IAAI;CACzC,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,OAAO,MAAM8B,QAAQ,GACnBA,QAA2B,IAE3BF,OAAO,CAAC;EAAEC,OAAO,EAAEvC,QAAQ;EAAEwC;AAAQ,CAAE,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,OAAO,MAAMU,YAAY,GACvBV,QAA4C,IAE5CjC,KAAK,CAAC;EACJL,QAAQ,EAAEA,CAAC;IAAEQ;EAAI,CAAE,KAAKR,QAAQ,CAAC;IAAEQ;EAAI,CAAE,CAAC;EAC1CP,SAAS,EAAEA,CAAC;IAAEQ;EAAK,CAAE,KAAK6B,QAAQ,CAAC7B,KAAK,CAAC;EACzCP,YAAY,EAAEA,CAAC;IAAEO;EAAK,CAAE,KAAK6B,QAAQ,CAAC7B,KAAK;CAC5C,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,OAAO,MAAMwC,cAAc,GACzBX,QAAkD,IAIlDC,aAAa,CAAC;EAAEF,OAAO,EAAE9C,MAAM,CAACuD,OAAO;EAAER;AAAQ,CAAE,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,OAAO,MAAMY,kBAAkB,GAC7BZ,QAAmE,IAInEjC,KAAK,CAAC;EACJL,QAAQ,EAAEA,CAAC;IAAEQ;EAAI,CAAE,KAAKjB,MAAM,CAACuD,OAAO,CAAC9C,QAAQ,CAAC;IAAEQ;EAAI,CAAE,CAAC,CAAC;EAC1DP,SAAS,EAAEA,CAAC;IAAEQ;EAAK,CAAE,KAAK6B,QAAQ,CAAC7B,KAAK,CAAC;EACzCP,YAAY,EAAEA,CAAC;IAAEO;EAAK,CAAE,KAAK6B,QAAQ,CAAC7B,KAAK;CAC5C,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,OAAO,MAAM0C,GAAG,gBAUZtD,IAAI,CACN,CAAC,EACD,CACEuD,MAAoB,EACpBC,MAAoB,EACpBC,CAAwC,KACjC;EACP,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAACL,MAAM,CAACM,MAAM,EAAEL,MAAM,CAACK,MAAM,CAAC;EAExD,IAAIH,SAAS,KAAK,CAAC,EAAE;IACnB,OAAO,EAAE;EACX;EAEA,OAAOlE,KAAK,CAACsE,MAAM,CAACJ,SAAS,EAAGK,KAAK,IAAI;IACvC,IAAIA,KAAK,GAAGR,MAAM,CAACM,MAAM,IAAIE,KAAK,GAAGP,MAAM,CAACK,MAAM,EAAE;MAClD,OAAOJ,CAAC,CAACpD,YAAY,CAAC;QAAEM,IAAI,EAAE4C,MAAM,CAACQ,KAAK,CAAC;QAAEnD,KAAK,EAAE4C,MAAM,CAACO,KAAK;MAAC,CAAE,CAAC,CAAC;IACvE;IAEA,IAAIA,KAAK,GAAGR,MAAM,CAACM,MAAM,EAAE;MACzB,OAAOJ,CAAC,CAACtD,QAAQ,CAAC;QAAEQ,IAAI,EAAE4C,MAAM,CAACQ,KAAK;MAAC,CAAE,CAAC,CAAC;IAC7C;IAEA,IAAIA,KAAK,GAAGP,MAAM,CAACK,MAAM,EAAE;MACzB,OAAOJ,CAAC,CAACrD,SAAS,CAAC;QAAEQ,KAAK,EAAE4C,MAAM,CAACO,KAAK;MAAC,CAAE,CAAC,CAAC;IAC/C;IAEA,MAAM,IAAI3C,KAAK,CAAC,SAAS2C,KAAK,yCAAyC,CAAC;EAC1E,CAAC,CAAC;AACJ,CAAC,CACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"NonNullableX.d.ts","sourceRoot":"","sources":["../src/NonNullableX.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAGL,KAAK,EAGN,MAAM,QAAQ,CAAC;AAGhB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,EACnC,OAAO,CAAC,EACR,eAAe,MAAM,KACpB,WAAW,CAAC,CAAC,CAOf,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,KAAK,IACf,CAAC,EAAE,CAAC,YAAY;IACf,YAAY,EAAE,MAAM,CAAC,CAAC;IACtB,eAAe,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CAC/C,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MACpB,CAAC,EAAE,CAAC,SACI,CAAC,YACE;IACR,YAAY,EAAE,MAAM,CAAC,CAAC;IACtB,eAAe,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CAC/C,KACE,CAAC,CAWP,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,GAAG,IACb,CAAC,EAAE,CAAC,OACE,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAC1B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,MAC9C,CAAC,EAAE,CAAC,KACA,CAAC,OACC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAC1B,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAiBtC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,IAAI,GACd,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MACtB,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,KAAG,CAAC,GAAG,IAAI,GAAG,SAMrC,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,aAAa,cAEZ,YAAY,GAAG,YAAY,KAClC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MACvD,CAAC,SACO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,YACX,YAAY,GAAG,YAAY,KAClC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAwC3B,CAAC"}
1
+ {"version":3,"file":"NonNullableX.d.ts","sourceRoot":"","sources":["../src/NonNullableX.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAGL,KAAK,EAGN,MAAM,QAAQ,CAAC;AAGhB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,EACnC,OAAO,CAAC,EACR,eAAe,MAAM,KACpB,WAAW,CAAC,CAAC,CAOf,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,KAAK,IACf,CAAC,EAAE,CAAC,YAAY;IACf,YAAY,EAAE,MAAM,CAAC,CAAC;IACtB,eAAe,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CAC/C,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MACpB,CAAC,EAAE,CAAC,SACI,CAAC,YACE;IACR,YAAY,EAAE,MAAM,CAAC,CAAC;IACtB,eAAe,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CAC/C,KACE,CAAC,CAWP,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,GAAG,IACb,CAAC,EAAE,CAAC,OACE,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAC1B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,MAC9C,CAAC,EAAE,CAAC,KACA,CAAC,OACC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAC1B,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAsBtC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,IAAI,GACd,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MACtB,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,KAAG,CAAC,GAAG,IAAI,GAAG,SAMrC,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,aAAa,cAEZ,YAAY,GAAG,YAAY,KAClC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MACvD,CAAC,SACO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,YACX,YAAY,GAAG,YAAY,KAClC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAwC3B,CAAC"}
@@ -115,9 +115,14 @@ export const map = /*#__PURE__*/dual(2, (a, map) => {
115
115
  if (Predicate.isNotNullish(a)) {
116
116
  return map(a);
117
117
  }
118
+ // Every value is either nullish or not, so once the check above has failed
119
+ // `isNullish(a)` is always true — its false branch (and the defensive throw
120
+ // below) is unreachable.
121
+ /* v8 ignore next */
118
122
  if (Predicate.isNullish(a)) {
119
123
  return a;
120
124
  }
125
+ /* v8 ignore next */
121
126
  throw new Error(`Value is neither nullable nor non-nullable: ${String(a)}`);
122
127
  });
123
128
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"NonNullableX.js","names":["Number","EffectNumber","Match","Predicate","dual","fromNullableOrThrow","value","variableName","isNotNullish","Error","String","match","whenNullable","whenNotNullable","map","a","isNullish","lift","nullableOrder","order","behavior","nullableSortCategory","valueSortCategory","pipe","when","exhaustive","b","aCategory","bCategory","sign"],"sources":["../src/NonNullableX.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NonNullableX.js","names":["Number","EffectNumber","Match","Predicate","dual","fromNullableOrThrow","value","variableName","isNotNullish","Error","String","match","whenNullable","whenNotNullable","map","a","isNullish","lift","nullableOrder","order","behavior","nullableSortCategory","valueSortCategory","pipe","when","exhaustive","b","aCategory","bCategory","sign"],"sources":["../src/NonNullableX.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/OptionX.d.ts CHANGED
@@ -13,7 +13,7 @@ import { Option } from "effect";
13
13
  *
14
14
  * @example
15
15
  * ```ts
16
- * import { Option } from "effect"
16
+ * import { Option, pipe } from "effect"
17
17
  * import { OptionX } from "@nunofyobiz/effect-extras"
18
18
  *
19
19
  * // Both Some — succeeds with the pair
@@ -27,12 +27,18 @@ import { Option } from "effect";
27
27
  * OptionX.tupleOf(Option.some(1), Option.none()),
28
28
  * Option.none(),
29
29
  * )
30
+ *
31
+ * // Data-last (piped): the piped Option fills the first tuple slot
32
+ * assert.deepStrictEqual(
33
+ * pipe(Option.some(1), OptionX.tupleOf(Option.some("a"))),
34
+ * Option.some([1, "a"]),
35
+ * )
30
36
  * ```
31
37
  *
32
38
  * @category combinators
33
39
  * @since 0.0.0
34
40
  */
35
- export declare const tupleOf: (<A>(a: Option.Option<A>) => <B>(b: Option.Option<B>) => Option.Option<[A, B]>) & (<A, B>(a: Option.Option<A>, b: Option.Option<B>) => Option.Option<[A, B]>);
41
+ export declare const tupleOf: (<B>(b: Option.Option<B>) => <A>(a: Option.Option<A>) => Option.Option<[A, B]>) & (<A, B>(a: Option.Option<A>, b: Option.Option<B>) => Option.Option<[A, B]>);
36
42
  /**
37
43
  * Runs a side effect with the value of an `Option` when it is `Some`, doing
38
44
  * nothing when it is `None`.
@@ -1 +1 @@
1
- {"version":3,"file":"OptionX.d.ts","sourceRoot":"","sources":["../src/OptionX.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAmB,MAAM,QAAQ,CAAC;AAGjD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,OAAO,IACjB,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAC5E,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAK1E,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,MAAM,IAChB,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,MAClE,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,CAW/D,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,WAAW,IACrB,CAAC,aACW,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,KAC1B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAChD,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAU/E,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAClC,gBAAgB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,KAClD,MAAM,CAAC,MAAM,CAAC,CAAC,CACuD,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,aAAa,IACvB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,MAC/D,CAAC,EAAE,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAG7D,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,kBAAkB,IAC5B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,SAAS,MACpE,CAAC,EAAE,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAGlE,CAAC"}
1
+ {"version":3,"file":"OptionX.d.ts","sourceRoot":"","sources":["../src/OptionX.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAmB,MAAM,QAAQ,CAAC;AAGjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,OAAO,IACjB,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAC5E,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAK1E,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,MAAM,IAChB,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,MAClE,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,CAW/D,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,WAAW,IACrB,CAAC,aACW,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,KAC1B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAChD,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAU/E,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAClC,gBAAgB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,KAClD,MAAM,CAAC,MAAM,CAAC,CAAC,CACuD,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,aAAa,IACvB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,MAC/D,CAAC,EAAE,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAG7D,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,kBAAkB,IAC5B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,SAAS,MACpE,CAAC,EAAE,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAGlE,CAAC"}
package/dist/OptionX.js CHANGED
@@ -14,7 +14,7 @@ import { dual } from "effect/Function";
14
14
  *
15
15
  * @example
16
16
  * ```ts
17
- * import { Option } from "effect"
17
+ * import { Option, pipe } from "effect"
18
18
  * import { OptionX } from "@nunofyobiz/effect-extras"
19
19
  *
20
20
  * // Both Some — succeeds with the pair
@@ -28,6 +28,12 @@ import { dual } from "effect/Function";
28
28
  * OptionX.tupleOf(Option.some(1), Option.none()),
29
29
  * Option.none(),
30
30
  * )
31
+ *
32
+ * // Data-last (piped): the piped Option fills the first tuple slot
33
+ * assert.deepStrictEqual(
34
+ * pipe(Option.some(1), OptionX.tupleOf(Option.some("a"))),
35
+ * Option.some([1, "a"]),
36
+ * )
31
37
  * ```
32
38
  *
33
39
  * @category combinators
@@ -1 +1 @@
1
- {"version":3,"file":"OptionX.js","names":["Option","Predicate","pipe","dual","tupleOf","a","b","flatMap","map","ifSome","self","match","onSome","value","onNone","inspectSome","function_","fromNullableOption","nullableOption","isNotNullish","none","mapSomeOrNull","getOrNull","mapSomeOrUndefined","getOrUndefined"],"sources":["../src/OptionX.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;AAKA,SAASA,MAAM,EAAEC,SAAS,EAAEC,IAAI,QAAQ,QAAQ;AAChD,SAASC,IAAI,QAAQ,iBAAiB;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,OAAO,MAAMC,OAAO,gBAAGD,IAAI,CAIzB,CAAC,EACD,CAAOE,CAAmB,EAAEC,CAAmB,KAC7CN,MAAM,CAACO,OAAO,CAACF,CAAC,EAAGA,CAAC,IAAKL,MAAM,CAACQ,GAAG,CAACF,CAAC,EAAGA,CAAC,IAAK,CAACD,CAAC,EAAEC,CAAC,CAAC,CAAC,CAAC,CACzD;AAED;;;;;;;;;;;;;;;;;;;;;;;AAuBA,OAAO,MAAMG,MAAM,gBAAGN,IAAI,CAGxB,CAAC,EAAE,CAAIO,IAAsB,EAAED,MAA0B,KAAU;EACnET,MAAM,CAACW,KAAK,CAACD,IAAI,EAAE;IACjBE,MAAM,EAAGC,KAAK,IAAI;MAChBJ,MAAM,CAACI,KAAK,CAAC;MACb;IACF,CAAC;IACDC,MAAM,EAAEA,CAAA,KAAK;MACX;IAAA;GAEH,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,OAAO,MAAMC,WAAW,gBAAGZ,IAAI,CAM7B,CAAC,EACD,CACEO,IAAsB,EACtBM,SAA6B,KACT;EACpBP,MAAM,CAACC,IAAI,EAAEM,SAAS,CAAC;EACvB,OAAON,IAAI;AACb,CAAC,CACF;AAED;;;;;;;;;;;;;;;;;;;;;AAqBA,OAAO,MAAMO,kBAAkB,GAC7BC,cAAmD,IAEnDjB,SAAS,CAACkB,YAAY,CAACD,cAAc,CAAC,GAAGA,cAAc,GAAGlB,MAAM,CAACoB,IAAI,EAAE;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,OAAO,MAAMC,aAAa,gBAAGlB,IAAI,CAG/B,CAAC,EAAE,CAAOO,IAAsB,EAAEF,GAAgB,KAClDN,IAAI,CAACQ,IAAI,EAAEV,MAAM,CAACQ,GAAG,CAACA,GAAG,CAAC,EAAER,MAAM,CAACsB,SAAS,CAAC,CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,OAAO,MAAMC,kBAAkB,gBAAGpB,IAAI,CAGpC,CAAC,EAAE,CAAOO,IAAsB,EAAEF,GAAgB,KAClDN,IAAI,CAACQ,IAAI,EAAEV,MAAM,CAACQ,GAAG,CAACA,GAAG,CAAC,EAAER,MAAM,CAACwB,cAAc,CAAC,CACnD","ignoreList":[]}
1
+ {"version":3,"file":"OptionX.js","names":["Option","Predicate","pipe","dual","tupleOf","a","b","flatMap","map","ifSome","self","match","onSome","value","onNone","inspectSome","function_","fromNullableOption","nullableOption","isNotNullish","none","mapSomeOrNull","getOrNull","mapSomeOrUndefined","getOrUndefined"],"sources":["../src/OptionX.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;AAKA,SAASA,MAAM,EAAEC,SAAS,EAAEC,IAAI,QAAQ,QAAQ;AAChD,SAASC,IAAI,QAAQ,iBAAiB;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,OAAO,MAAMC,OAAO,gBAAGD,IAAI,CAIzB,CAAC,EACD,CAAOE,CAAmB,EAAEC,CAAmB,KAC7CN,MAAM,CAACO,OAAO,CAACF,CAAC,EAAGA,CAAC,IAAKL,MAAM,CAACQ,GAAG,CAACF,CAAC,EAAGA,CAAC,IAAK,CAACD,CAAC,EAAEC,CAAC,CAAC,CAAC,CAAC,CACzD;AAED;;;;;;;;;;;;;;;;;;;;;;;AAuBA,OAAO,MAAMG,MAAM,gBAAGN,IAAI,CAGxB,CAAC,EAAE,CAAIO,IAAsB,EAAED,MAA0B,KAAU;EACnET,MAAM,CAACW,KAAK,CAACD,IAAI,EAAE;IACjBE,MAAM,EAAGC,KAAK,IAAI;MAChBJ,MAAM,CAACI,KAAK,CAAC;MACb;IACF,CAAC;IACDC,MAAM,EAAEA,CAAA,KAAK;MACX;IAAA;GAEH,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,OAAO,MAAMC,WAAW,gBAAGZ,IAAI,CAM7B,CAAC,EACD,CACEO,IAAsB,EACtBM,SAA6B,KACT;EACpBP,MAAM,CAACC,IAAI,EAAEM,SAAS,CAAC;EACvB,OAAON,IAAI;AACb,CAAC,CACF;AAED;;;;;;;;;;;;;;;;;;;;;AAqBA,OAAO,MAAMO,kBAAkB,GAC7BC,cAAmD,IAEnDjB,SAAS,CAACkB,YAAY,CAACD,cAAc,CAAC,GAAGA,cAAc,GAAGlB,MAAM,CAACoB,IAAI,EAAE;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,OAAO,MAAMC,aAAa,gBAAGlB,IAAI,CAG/B,CAAC,EAAE,CAAOO,IAAsB,EAAEF,GAAgB,KAClDN,IAAI,CAACQ,IAAI,EAAEV,MAAM,CAACQ,GAAG,CAACA,GAAG,CAAC,EAAER,MAAM,CAACsB,SAAS,CAAC,CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,OAAO,MAAMC,kBAAkB,gBAAGpB,IAAI,CAGpC,CAAC,EAAE,CAAOO,IAAsB,EAAEF,GAAgB,KAClDN,IAAI,CAACQ,IAAI,EAAEV,MAAM,CAACQ,GAAG,CAACA,GAAG,CAAC,EAAER,MAAM,CAACwB,cAAc,CAAC,CACnD","ignoreList":[]}
@@ -73,4 +73,36 @@ export declare const matchRefine: (<A, B extends A, C>(predicate: Predicate.Refi
73
73
  * @since 0.0.0
74
74
  */
75
75
  export declare function isNonEmptyString(value: unknown): value is string;
76
+ /**
77
+ * Refines an `unknown` value to a plain `Record<string, unknown>` — `true` only
78
+ * for a non-null, non-array object whose prototype is `Object.prototype` (an
79
+ * object literal) or `null` (an `Object.create(null)` map).
80
+ *
81
+ * Effect ships no `Predicate.isRecord`. `Predicate.isObject` is the closest, but
82
+ * it also accepts `Map`, `Set`, `Date`, `RegExp`, and class instances. This guard
83
+ * adds a prototype check to rule those out, narrowing to `Record<string, unknown>`
84
+ * so the JSON-tree helpers (`RecordX.deepMerge`, `RecordX.canonicalize`,
85
+ * `RecordX.deleteByPath`) can compose without an `as` cast.
86
+ *
87
+ * It is named **`unsafe`** because the narrowing comes purely from the value's
88
+ * runtime shape — it does *not* validate the key or value types. A symbol-keyed
89
+ * entry still passes despite the `string` key claim, and values are asserted
90
+ * `unknown` without any check. Treat it as a structural convenience, not a
91
+ * `Schema` validation: reach for `Schema` when you need real key/value guarantees.
92
+ *
93
+ * @example
94
+ * ```ts
95
+ * import { PredicateX } from "@nunofyobiz/effect-extras"
96
+ *
97
+ * assert.deepStrictEqual(PredicateX.unsafeIsRecord({ a: 1 }), true)
98
+ * assert.deepStrictEqual(PredicateX.unsafeIsRecord(Object.create(null)), true)
99
+ * assert.deepStrictEqual(PredicateX.unsafeIsRecord([1, 2]), false)
100
+ * assert.deepStrictEqual(PredicateX.unsafeIsRecord(new Map()), false)
101
+ * assert.deepStrictEqual(PredicateX.unsafeIsRecord(null), false)
102
+ * ```
103
+ *
104
+ * @category refinements
105
+ * @since 0.0.0
106
+ */
107
+ export declare function unsafeIsRecord(value: unknown): value is Record<string, unknown>;
76
108
  //# sourceMappingURL=PredicateX.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PredicateX.d.ts","sourceRoot":"","sources":["../src/PredicateX.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAU,MAAM,QAAQ,CAAC;AAG3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,WAAW,IACrB,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,aACL,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,YAC3B;IACR,SAAS,EAAE,MAAM,CAAC,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;CAC3B,KACE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MACnB,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SACT,CAAC,aACG,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,YAC3B;IAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAA;CAAE,KACxD,CAAC,CAQP,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAMhE"}
1
+ {"version":3,"file":"PredicateX.d.ts","sourceRoot":"","sources":["../src/PredicateX.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAU,MAAM,QAAQ,CAAC;AAG3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,WAAW,IACrB,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,aACL,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,YAC3B;IACR,SAAS,EAAE,MAAM,CAAC,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;CAC3B,KACE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MACnB,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SACT,CAAC,aACG,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,YAC3B;IAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAA;CAAE,KACxD,CAAC,CAQP,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAMhE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMlC"}
@@ -70,4 +70,42 @@ export const matchRefine = /*#__PURE__*/dual(3, (value, predicate, handlers) =>
70
70
  export function isNonEmptyString(value) {
71
71
  return Predicate.isNotNullish(value) && Predicate.isString(value) && String.isNonEmpty(value);
72
72
  }
73
+ /**
74
+ * Refines an `unknown` value to a plain `Record<string, unknown>` — `true` only
75
+ * for a non-null, non-array object whose prototype is `Object.prototype` (an
76
+ * object literal) or `null` (an `Object.create(null)` map).
77
+ *
78
+ * Effect ships no `Predicate.isRecord`. `Predicate.isObject` is the closest, but
79
+ * it also accepts `Map`, `Set`, `Date`, `RegExp`, and class instances. This guard
80
+ * adds a prototype check to rule those out, narrowing to `Record<string, unknown>`
81
+ * so the JSON-tree helpers (`RecordX.deepMerge`, `RecordX.canonicalize`,
82
+ * `RecordX.deleteByPath`) can compose without an `as` cast.
83
+ *
84
+ * It is named **`unsafe`** because the narrowing comes purely from the value's
85
+ * runtime shape — it does *not* validate the key or value types. A symbol-keyed
86
+ * entry still passes despite the `string` key claim, and values are asserted
87
+ * `unknown` without any check. Treat it as a structural convenience, not a
88
+ * `Schema` validation: reach for `Schema` when you need real key/value guarantees.
89
+ *
90
+ * @example
91
+ * ```ts
92
+ * import { PredicateX } from "@nunofyobiz/effect-extras"
93
+ *
94
+ * assert.deepStrictEqual(PredicateX.unsafeIsRecord({ a: 1 }), true)
95
+ * assert.deepStrictEqual(PredicateX.unsafeIsRecord(Object.create(null)), true)
96
+ * assert.deepStrictEqual(PredicateX.unsafeIsRecord([1, 2]), false)
97
+ * assert.deepStrictEqual(PredicateX.unsafeIsRecord(new Map()), false)
98
+ * assert.deepStrictEqual(PredicateX.unsafeIsRecord(null), false)
99
+ * ```
100
+ *
101
+ * @category refinements
102
+ * @since 0.0.0
103
+ */
104
+ export function unsafeIsRecord(value) {
105
+ if (!Predicate.isObject(value)) {
106
+ return false;
107
+ }
108
+ const prototype = Object.getPrototypeOf(value);
109
+ return prototype === Object.prototype || prototype === null;
110
+ }
73
111
  //# sourceMappingURL=PredicateX.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PredicateX.js","names":["Predicate","String","dual","matchRefine","value","predicate","handlers","whenTrue","whenFalse","isNonEmptyString","isNotNullish","isString","isNonEmpty"],"sources":["../src/PredicateX.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;AAKA,SAASA,SAAS,EAAEC,MAAM,QAAQ,QAAQ;AAC1C,SAASC,IAAI,QAAQ,iBAAiB;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,OAAO,MAAMC,WAAW,gBAAGD,IAAI,CAc7B,CAAC,EACD,CACEE,KAAQ,EACRC,SAAqC,EACrCC,QAA2D,KACpDD,SAAS,CAACD,KAAK,CAAC,GAAGE,QAAQ,CAACC,QAAQ,CAACH,KAAK,CAAC,GAAGE,QAAQ,CAACE,SAAS,EAAG,CAC7E;AAED;;;;;;;;;;;;;;;;;;;;;;AAsBA,OAAM,SAAUC,gBAAgBA,CAACL,KAAc;EAC7C,OACEJ,SAAS,CAACU,YAAY,CAACN,KAAK,CAAC,IAC7BJ,SAAS,CAACW,QAAQ,CAACP,KAAK,CAAC,IACzBH,MAAM,CAACW,UAAU,CAACR,KAAK,CAAC;AAE5B","ignoreList":[]}
1
+ {"version":3,"file":"PredicateX.js","names":["Predicate","String","dual","matchRefine","value","predicate","handlers","whenTrue","whenFalse","isNonEmptyString","isNotNullish","isString","isNonEmpty","unsafeIsRecord","isObject","prototype","Object","getPrototypeOf"],"sources":["../src/PredicateX.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;AAKA,SAASA,SAAS,EAAEC,MAAM,QAAQ,QAAQ;AAC1C,SAASC,IAAI,QAAQ,iBAAiB;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,OAAO,MAAMC,WAAW,gBAAGD,IAAI,CAc7B,CAAC,EACD,CACEE,KAAQ,EACRC,SAAqC,EACrCC,QAA2D,KACpDD,SAAS,CAACD,KAAK,CAAC,GAAGE,QAAQ,CAACC,QAAQ,CAACH,KAAK,CAAC,GAAGE,QAAQ,CAACE,SAAS,EAAG,CAC7E;AAED;;;;;;;;;;;;;;;;;;;;;;AAsBA,OAAM,SAAUC,gBAAgBA,CAACL,KAAc;EAC7C,OACEJ,SAAS,CAACU,YAAY,CAACN,KAAK,CAAC,IAC7BJ,SAAS,CAACW,QAAQ,CAACP,KAAK,CAAC,IACzBH,MAAM,CAACW,UAAU,CAACR,KAAK,CAAC;AAE5B;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,OAAM,SAAUS,cAAcA,CAC5BT,KAAc;EAEd,IAAI,CAACJ,SAAS,CAACc,QAAQ,CAACV,KAAK,CAAC,EAAE;IAC9B,OAAO,KAAK;EACd;EACA,MAAMW,SAAS,GAAGC,MAAM,CAACC,cAAc,CAACb,KAAK,CAAC;EAC9C,OAAOW,SAAS,KAAKC,MAAM,CAACD,SAAS,IAAIA,SAAS,KAAK,IAAI;AAC7D","ignoreList":[]}
package/dist/RecordX.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @since 0.0.0
5
5
  */
6
- import { Option, Order, Predicate } from "effect";
6
+ import { Option, Order, Predicate, Reducer } from "effect";
7
7
  /**
8
8
  * Returns `true` when `record` has at least one entry, narrowing it to a
9
9
  * known-non-empty `Record`.
@@ -320,4 +320,131 @@ export declare const upsert: (<K extends string | symbol, V>(key: K, upsert: (ex
320
320
  * @since 0.0.0
321
321
  */
322
322
  export declare const collectBy: (<K extends string | symbol, V>(identify: (v: V) => K) => (values: Iterable<V>) => Record<K, V>) & (<K extends string | symbol, V>(values: Iterable<V>, identify: (v: V) => K) => Record<K, V>);
323
+ /**
324
+ * Deep-merges two JSON values, with `b` winning on conflicts.
325
+ *
326
+ * Plain objects (per `PredicateX.unsafeIsRecord`) are merged recursively,
327
+ * key-by-key; every other shape — primitives, arrays, and impostors like
328
+ * `Map`/`Date`/class instances — is replaced wholesale by `b`. If either side
329
+ * isn't a plain object, `b` is returned as-is. Neither input is mutated. Reach
330
+ * for it to layer partial JSON overrides on top of a base.
331
+ *
332
+ * @example
333
+ * ```ts
334
+ * import { RecordX } from "@nunofyobiz/effect-extras"
335
+ * import { pipe } from "effect"
336
+ *
337
+ * // data-first — nested objects merge, b wins on leaf conflicts
338
+ * assert.deepStrictEqual(
339
+ * RecordX.deepMerge({ a: { x: 1 }, b: 2 }, { a: { y: 3 }, c: 4 }),
340
+ * { a: { x: 1, y: 3 }, b: 2, c: 4 },
341
+ * )
342
+ *
343
+ * // arrays are replaced wholesale, not concatenated
344
+ * assert.deepStrictEqual(RecordX.deepMerge({ a: [1, 2] }, { a: [3] }), { a: [3] })
345
+ *
346
+ * // data-last (pipeable) — merges the override onto the piped base
347
+ * assert.deepStrictEqual(pipe({ a: 1 }, RecordX.deepMerge({ b: 2 })), {
348
+ * a: 1,
349
+ * b: 2,
350
+ * })
351
+ * ```
352
+ *
353
+ * @category combining
354
+ * @since 0.0.0
355
+ */
356
+ export declare const deepMerge: ((b: unknown) => (a: unknown) => unknown) & ((a: unknown, b: unknown) => unknown);
357
+ /**
358
+ * {@link deepMerge} as a `Reducer` (monoid) with identity `{}`.
359
+ *
360
+ * `deepMergeReducer.combineAll(layers)` folds an iterable of object layers
361
+ * left-to-right via {@link deepMerge} — the universal "merge N JSON objects into
362
+ * one" fold, replacing a hand-rolled `Array.reduce(layers, {}, deepMerge)`. The
363
+ * `{}` identity is exact for the object-valued layers these folds carry: an empty
364
+ * list yields `{}`, and a single layer is returned unchanged.
365
+ *
366
+ * @example
367
+ * ```ts
368
+ * import { RecordX } from "@nunofyobiz/effect-extras"
369
+ *
370
+ * assert.deepStrictEqual(
371
+ * RecordX.deepMergeReducer.combineAll([
372
+ * { a: { x: 1 } },
373
+ * { a: { y: 2 }, b: 3 },
374
+ * { b: 4 },
375
+ * ]),
376
+ * { a: { x: 1, y: 2 }, b: 4 },
377
+ * )
378
+ *
379
+ * assert.deepStrictEqual(RecordX.deepMergeReducer.combineAll([]), {})
380
+ * ```
381
+ *
382
+ * @category instances
383
+ * @since 0.0.0
384
+ */
385
+ export declare const deepMergeReducer: Reducer.Reducer<unknown>;
386
+ /**
387
+ * Canonicalizes a JSON value by recursively sorting object keys; arrays keep
388
+ * their order.
389
+ *
390
+ * Two structurally-equal values that differ only in key order canonicalize to
391
+ * the same shape, so `JSON.stringify(canonicalize(x))` is a stable structural
392
+ * key for comparison, deduping, or hashing. Plain objects (per
393
+ * `PredicateX.unsafeIsRecord`) have their keys sorted ascending and their values
394
+ * canonicalized recursively; arrays are canonicalized element-wise in place;
395
+ * everything else passes through unchanged.
396
+ *
397
+ * @example
398
+ * ```ts
399
+ * import { RecordX } from "@nunofyobiz/effect-extras"
400
+ *
401
+ * assert.deepStrictEqual(
402
+ * JSON.stringify(RecordX.canonicalize({ b: 1, a: { d: 1, c: 2 } })),
403
+ * JSON.stringify({ a: { c: 2, d: 1 }, b: 1 }),
404
+ * )
405
+ *
406
+ * // arrays keep their order; primitives pass through
407
+ * assert.deepStrictEqual(RecordX.canonicalize([3, 1, 2]), [3, 1, 2])
408
+ * assert.deepStrictEqual(RecordX.canonicalize("x"), "x")
409
+ * ```
410
+ *
411
+ * @category transformations
412
+ * @since 0.0.0
413
+ */
414
+ export declare const canonicalize: (value: unknown) => unknown;
415
+ /**
416
+ * Immutably deletes the value at a `path` from a JSON object, pruning any parent
417
+ * objects left empty by the deletion.
418
+ *
419
+ * Walks `path` from the root; when it resolves to an existing key, that key is
420
+ * removed and every ancestor that becomes empty as a result is removed too.
421
+ * Returns `Some(newObject)` when the path existed (so callers can tell something
422
+ * changed), or `None` when it was absent or `object` isn't a plain object. The
423
+ * input is never mutated.
424
+ *
425
+ * @example
426
+ * ```ts
427
+ * import { RecordX } from "@nunofyobiz/effect-extras"
428
+ * import { Option, pipe } from "effect"
429
+ *
430
+ * // deletes the leaf and prunes the now-empty parent
431
+ * assert.deepStrictEqual(
432
+ * RecordX.deleteByPath({ a: { b: 1 } }, ["a", "b"]),
433
+ * Option.some({}),
434
+ * )
435
+ *
436
+ * // a sibling key keeps the parent alive
437
+ * assert.deepStrictEqual(
438
+ * RecordX.deleteByPath({ a: { b: 1, c: 2 } }, ["a", "b"]),
439
+ * Option.some({ a: { c: 2 } }),
440
+ * )
441
+ *
442
+ * // absent path → None; data-last (pipeable) form
443
+ * assert.deepStrictEqual(pipe({ a: 1 }, RecordX.deleteByPath(["b"])), Option.none())
444
+ * ```
445
+ *
446
+ * @category combining
447
+ * @since 0.0.0
448
+ */
449
+ export declare const deleteByPath: ((path: readonly string[]) => (object: unknown) => Option.Option<unknown>) & ((object: unknown, path: readonly string[]) => Option.Option<unknown>);
323
450
  //# sourceMappingURL=RecordX.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RecordX.d.ts","sourceRoot":"","sources":["../src/RecordX.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RecordX.d.ts","sourceRoot":"","sources":["../src/RecordX.ts"],"names":[],"mappings":"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"}
package/dist/RecordX.js CHANGED
@@ -3,9 +3,10 @@
3
3
  *
4
4
  * @since 0.0.0
5
5
  */
6
- import { Array, Option, Predicate, Record, pipe } from "effect";
6
+ import { Array, Option, Order, Predicate, Record, Reducer, pipe } from "effect";
7
7
  import { dual } from "effect/Function";
8
8
  import * as ArrayX from "./ArrayX.js";
9
+ import * as PredicateX from "./PredicateX.js";
9
10
  /**
10
11
  * Returns `true` when `record` has at least one entry, narrowing it to a
11
12
  * known-non-empty `Record`.
@@ -323,4 +324,164 @@ export const upsert = /*#__PURE__*/dual(3, (record, key, upsert) => {
323
324
  * @since 0.0.0
324
325
  */
325
326
  export const collectBy = /*#__PURE__*/dual(2, (values, identify) => Array.reduce(values, {}, (accumulator, value) => Record.set(accumulator, identify(value), value)));
327
+ /**
328
+ * Deep-merges two JSON values, with `b` winning on conflicts.
329
+ *
330
+ * Plain objects (per `PredicateX.unsafeIsRecord`) are merged recursively,
331
+ * key-by-key; every other shape — primitives, arrays, and impostors like
332
+ * `Map`/`Date`/class instances — is replaced wholesale by `b`. If either side
333
+ * isn't a plain object, `b` is returned as-is. Neither input is mutated. Reach
334
+ * for it to layer partial JSON overrides on top of a base.
335
+ *
336
+ * @example
337
+ * ```ts
338
+ * import { RecordX } from "@nunofyobiz/effect-extras"
339
+ * import { pipe } from "effect"
340
+ *
341
+ * // data-first — nested objects merge, b wins on leaf conflicts
342
+ * assert.deepStrictEqual(
343
+ * RecordX.deepMerge({ a: { x: 1 }, b: 2 }, { a: { y: 3 }, c: 4 }),
344
+ * { a: { x: 1, y: 3 }, b: 2, c: 4 },
345
+ * )
346
+ *
347
+ * // arrays are replaced wholesale, not concatenated
348
+ * assert.deepStrictEqual(RecordX.deepMerge({ a: [1, 2] }, { a: [3] }), { a: [3] })
349
+ *
350
+ * // data-last (pipeable) — merges the override onto the piped base
351
+ * assert.deepStrictEqual(pipe({ a: 1 }, RecordX.deepMerge({ b: 2 })), {
352
+ * a: 1,
353
+ * b: 2,
354
+ * })
355
+ * ```
356
+ *
357
+ * @category combining
358
+ * @since 0.0.0
359
+ */
360
+ export const deepMerge = /*#__PURE__*/dual(2, (a, b) => {
361
+ if (!PredicateX.unsafeIsRecord(a) || !PredicateX.unsafeIsRecord(b)) {
362
+ return b;
363
+ }
364
+ return Record.reduce(b, {
365
+ ...a
366
+ }, (accumulator, value, key) => ({
367
+ ...accumulator,
368
+ [key]: key in a ? deepMerge(a[key], value) : value
369
+ }));
370
+ });
371
+ /**
372
+ * {@link deepMerge} as a `Reducer` (monoid) with identity `{}`.
373
+ *
374
+ * `deepMergeReducer.combineAll(layers)` folds an iterable of object layers
375
+ * left-to-right via {@link deepMerge} — the universal "merge N JSON objects into
376
+ * one" fold, replacing a hand-rolled `Array.reduce(layers, {}, deepMerge)`. The
377
+ * `{}` identity is exact for the object-valued layers these folds carry: an empty
378
+ * list yields `{}`, and a single layer is returned unchanged.
379
+ *
380
+ * @example
381
+ * ```ts
382
+ * import { RecordX } from "@nunofyobiz/effect-extras"
383
+ *
384
+ * assert.deepStrictEqual(
385
+ * RecordX.deepMergeReducer.combineAll([
386
+ * { a: { x: 1 } },
387
+ * { a: { y: 2 }, b: 3 },
388
+ * { b: 4 },
389
+ * ]),
390
+ * { a: { x: 1, y: 2 }, b: 4 },
391
+ * )
392
+ *
393
+ * assert.deepStrictEqual(RecordX.deepMergeReducer.combineAll([]), {})
394
+ * ```
395
+ *
396
+ * @category instances
397
+ * @since 0.0.0
398
+ */
399
+ export const deepMergeReducer = /*#__PURE__*/Reducer.make(deepMerge, {});
400
+ /**
401
+ * Canonicalizes a JSON value by recursively sorting object keys; arrays keep
402
+ * their order.
403
+ *
404
+ * Two structurally-equal values that differ only in key order canonicalize to
405
+ * the same shape, so `JSON.stringify(canonicalize(x))` is a stable structural
406
+ * key for comparison, deduping, or hashing. Plain objects (per
407
+ * `PredicateX.unsafeIsRecord`) have their keys sorted ascending and their values
408
+ * canonicalized recursively; arrays are canonicalized element-wise in place;
409
+ * everything else passes through unchanged.
410
+ *
411
+ * @example
412
+ * ```ts
413
+ * import { RecordX } from "@nunofyobiz/effect-extras"
414
+ *
415
+ * assert.deepStrictEqual(
416
+ * JSON.stringify(RecordX.canonicalize({ b: 1, a: { d: 1, c: 2 } })),
417
+ * JSON.stringify({ a: { c: 2, d: 1 }, b: 1 }),
418
+ * )
419
+ *
420
+ * // arrays keep their order; primitives pass through
421
+ * assert.deepStrictEqual(RecordX.canonicalize([3, 1, 2]), [3, 1, 2])
422
+ * assert.deepStrictEqual(RecordX.canonicalize("x"), "x")
423
+ * ```
424
+ *
425
+ * @category transformations
426
+ * @since 0.0.0
427
+ */
428
+ export const canonicalize = value => {
429
+ if (Array.isArray(value)) {
430
+ return Array.map(value, canonicalize);
431
+ }
432
+ if (!PredicateX.unsafeIsRecord(value)) {
433
+ return value;
434
+ }
435
+ return pipe(Record.toEntries(value), Array.map(([key, entry]) => [key, canonicalize(entry)]), Array.sort(Order.mapInput(Order.String, ([key]) => key)), Record.fromEntries);
436
+ };
437
+ /**
438
+ * Immutably deletes the value at a `path` from a JSON object, pruning any parent
439
+ * objects left empty by the deletion.
440
+ *
441
+ * Walks `path` from the root; when it resolves to an existing key, that key is
442
+ * removed and every ancestor that becomes empty as a result is removed too.
443
+ * Returns `Some(newObject)` when the path existed (so callers can tell something
444
+ * changed), or `None` when it was absent or `object` isn't a plain object. The
445
+ * input is never mutated.
446
+ *
447
+ * @example
448
+ * ```ts
449
+ * import { RecordX } from "@nunofyobiz/effect-extras"
450
+ * import { Option, pipe } from "effect"
451
+ *
452
+ * // deletes the leaf and prunes the now-empty parent
453
+ * assert.deepStrictEqual(
454
+ * RecordX.deleteByPath({ a: { b: 1 } }, ["a", "b"]),
455
+ * Option.some({}),
456
+ * )
457
+ *
458
+ * // a sibling key keeps the parent alive
459
+ * assert.deepStrictEqual(
460
+ * RecordX.deleteByPath({ a: { b: 1, c: 2 } }, ["a", "b"]),
461
+ * Option.some({ a: { c: 2 } }),
462
+ * )
463
+ *
464
+ * // absent path → None; data-last (pipeable) form
465
+ * assert.deepStrictEqual(pipe({ a: 1 }, RecordX.deleteByPath(["b"])), Option.none())
466
+ * ```
467
+ *
468
+ * @category combining
469
+ * @since 0.0.0
470
+ */
471
+ export const deleteByPath = /*#__PURE__*/dual(2, (object, path) => {
472
+ if (!PredicateX.unsafeIsRecord(object)) {
473
+ return Option.none();
474
+ }
475
+ const [head, ...rest] = path;
476
+ if (head === undefined) {
477
+ return Option.none();
478
+ }
479
+ if (rest.length === 0) {
480
+ return head in object ? Option.some(Record.remove(object, head)) : Option.none();
481
+ }
482
+ return Option.map(deleteByPath(object[head], rest), newChild => PredicateX.unsafeIsRecord(newChild) && Record.isEmptyRecord(newChild) ? Record.remove(object, head) : {
483
+ ...object,
484
+ [head]: newChild
485
+ });
486
+ });
326
487
  //# sourceMappingURL=RecordX.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RecordX.js","names":["Array","Option","Predicate","Record","pipe","dual","ArrayX","isNonEmptyRecord","record","not","isEmptyRecord","modifyIfExists","self","key","f","modify","getOrElse","takeFirstWhere","predicate","order","values","takeLastWhere","takeLast","sort","last","keysAs","getOrThrow","getOrThrowWith","Error","String","keys","onNone","get","upsert","existingValue","updatedValue","set","collectBy","identify","reduce","accumulator","value"],"sources":["../src/RecordX.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"RecordX.js","names":["Array","Option","Order","Predicate","Record","Reducer","pipe","dual","ArrayX","PredicateX","isNonEmptyRecord","record","not","isEmptyRecord","modifyIfExists","self","key","f","modify","getOrElse","takeFirstWhere","predicate","order","values","takeLastWhere","takeLast","sort","last","keysAs","getOrThrow","getOrThrowWith","Error","String","keys","onNone","get","upsert","existingValue","updatedValue","set","collectBy","identify","reduce","accumulator","value","deepMerge","a","b","unsafeIsRecord","deepMergeReducer","make","canonicalize","isArray","map","toEntries","entry","mapInput","fromEntries","deleteByPath","object","path","none","head","rest","undefined","length","some","remove","newChild"],"sources":["../src/RecordX.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}