@tempots/std 0.25.1 → 0.25.2

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.
package/async-result.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s={notAsked:{type:"NotAsked"},loading(e=void 0){return{type:"Loading",previousValue:e}},success(e){return{type:"AsyncSuccess",value:e}},failure(e){return{type:"AsyncFailure",error:e}},isSuccess(e){return e.type==="AsyncSuccess"},isFailure(e){return e.type==="AsyncFailure"},isNotAsked(e){return e.type==="NotAsked"},isLoading(e){return e.type==="Loading"},getOrElse(e,r){return s.isSuccess(e)?e.value:r},getOrElseLazy(e,r){return s.isSuccess(e)?e.value:r()},getOrNull(e){return s.isSuccess(e)?e.value:null},getOrUndefined(e){return s.isSuccess(e)?e.value:void 0},getUnsafe:e=>{if(s.isSuccess(e))return e.value;throw s.isFailure(e)?e.error:new Error("Cannot get value from a not-asked or loading result")},match:(e,{success:r,failure:u,loading:a,notAsked:c=a})=>s.isSuccess(e)?r(e.value):s.isFailure(e)?u(e.error):s.isNotAsked(e)?c():a(e.previousValue),effect:(e,r)=>{switch(e.type){case"AsyncSuccess":r.success?.(e.value);break;case"AsyncFailure":r.failure?.(e.error);break;case"Loading":r.loading?.(e.previousValue);break;case"NotAsked":r.notAsked?.();break}return e},whenSuccess:(e,r)=>(s.isSuccess(e)&&r(e.value),e),whenFailure:(e,r)=>(s.isFailure(e)&&r(e.error),e),equals:(e,r,u={valueEquals:(a,c)=>a===c,errorEquals:(a,c)=>a===c})=>e.type==="AsyncSuccess"&&r.type==="AsyncSuccess"?u.valueEquals(e.value,r.value):e.type==="AsyncFailure"&&r.type==="AsyncFailure"?u.errorEquals(e.error,r.error):e.type==="Loading"&&r.type==="Loading"?u.valueEquals(e.previousValue,r.previousValue):e.type==="NotAsked"&&r.type==="NotAsked",all:e=>{const r=[];for(const u of e)if(s.isSuccess(u))r.push(u.value);else return u;return s.success(r)},ofPromise:async e=>{try{const r=await e;return s.success(r)}catch(r){return s.failure(r instanceof Error?r:new Error(String(r)))}},map:(e,r)=>{switch(e.type){case"AsyncSuccess":return s.success(r(e.value));case"NotAsked":return s.notAsked;case"AsyncFailure":return s.failure(e.error);case"Loading":return s.loading(e.previousValue!=null?r(e.previousValue):void 0)}},flatMap:(e,r)=>{switch(e.type){case"AsyncSuccess":return r(e.value);case"NotAsked":return s.notAsked;case"AsyncFailure":return s.failure(e.error);case"Loading":return s.loading()}},mapError:(e,r)=>{switch(e.type){case"AsyncSuccess":return s.success(e.value);case"NotAsked":return s.notAsked;case"AsyncFailure":return s.failure(r(e.error));case"Loading":return s.loading(e.previousValue)}},flatMapError:(e,r)=>{switch(e.type){case"AsyncSuccess":return s.success(e.value);case"NotAsked":return s.notAsked;case"AsyncFailure":return r(e.error);case"Loading":return s.loading(e.previousValue)}},toResult:e=>{switch(e.type){case"AsyncSuccess":return{type:"Success",value:e.value};case"AsyncFailure":return{type:"Failure",error:e.error};case"NotAsked":case"Loading":return}},isSettled(e){return e.type==="AsyncSuccess"||e.type==="AsyncFailure"},recover:(e,r)=>{switch(e.type){case"AsyncSuccess":return s.success(e.value);case"NotAsked":return s.notAsked;case"AsyncFailure":return s.success(r(e.error));case"Loading":return s.loading(e.previousValue)}},ap:(e,r)=>s.isSuccess(e)&&s.isSuccess(r)?s.success(e.value(r.value)):s.isFailure(e)?s.failure(e.error):s.isFailure(r)?s.failure(r.error):s.isLoading(e)||s.isLoading(r)?s.loading():s.notAsked,map2:(e,r,u)=>s.isSuccess(e)&&s.isSuccess(r)?s.success(u(e.value,r.value)):s.isFailure(e)?s.failure(e.error):s.isFailure(r)?s.failure(r.error):s.isLoading(e)||s.isLoading(r)?s.loading():s.notAsked,map3:(e,r,u,a)=>s.isSuccess(e)&&s.isSuccess(r)&&s.isSuccess(u)?s.success(a(e.value,r.value,u.value)):s.isFailure(e)?s.failure(e.error):s.isFailure(r)?s.failure(r.error):s.isFailure(u)?s.failure(u.error):s.isLoading(e)||s.isLoading(r)||s.isLoading(u)?s.loading():s.notAsked};exports.AsyncResult=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s={notAsked:{type:"NotAsked"},loading(e=void 0){return{type:"Loading",previousValue:e}},success(e){return{type:"AsyncSuccess",value:e}},failure(e){return{type:"AsyncFailure",error:e}},isSuccess(e){return e.type==="AsyncSuccess"},isFailure(e){return e.type==="AsyncFailure"},isNotAsked(e){return e.type==="NotAsked"},isLoading(e){return e.type==="Loading"},getOrElse(e,r){return s.isSuccess(e)?e.value:r},getOrElseLazy(e,r){return s.isSuccess(e)?e.value:r()},getOrNull(e){return s.isSuccess(e)?e.value:null},getOrUndefined(e){return s.isSuccess(e)?e.value:void 0},getUnsafe:e=>{if(s.isSuccess(e))return e.value;throw s.isFailure(e)?e.error:new Error("Cannot get value from a not-asked or loading result")},match:(e,{success:r,failure:u,loading:i,notAsked:c=i})=>s.isSuccess(e)?r(e.value):s.isFailure(e)?u(e.error):s.isNotAsked(e)?c():i(e.previousValue),effect:(e,r)=>{switch(e.type){case"AsyncSuccess":r.success?r.success(e.value):r.else?.();break;case"AsyncFailure":r.failure?r.failure(e.error):r.else?.();break;case"Loading":r.loading?r.loading(e.previousValue):r.else?.();break;case"NotAsked":r.notAsked?r.notAsked():r.else?.();break}return e},whenSuccess:(e,r)=>(s.isSuccess(e)&&r(e.value),e),whenFailure:(e,r)=>(s.isFailure(e)&&r(e.error),e),equals:(e,r,u={valueEquals:(i,c)=>i===c,errorEquals:(i,c)=>i===c})=>e.type==="AsyncSuccess"&&r.type==="AsyncSuccess"?u.valueEquals(e.value,r.value):e.type==="AsyncFailure"&&r.type==="AsyncFailure"?u.errorEquals(e.error,r.error):e.type==="Loading"&&r.type==="Loading"?u.valueEquals(e.previousValue,r.previousValue):e.type==="NotAsked"&&r.type==="NotAsked",all:e=>{const r=[];for(const u of e)if(s.isSuccess(u))r.push(u.value);else return u;return s.success(r)},ofPromise:async e=>{try{const r=await e;return s.success(r)}catch(r){return s.failure(r instanceof Error?r:new Error(String(r)))}},map:(e,r)=>{switch(e.type){case"AsyncSuccess":return s.success(r(e.value));case"NotAsked":return s.notAsked;case"AsyncFailure":return s.failure(e.error);case"Loading":return s.loading(e.previousValue!=null?r(e.previousValue):void 0)}},flatMap:(e,r)=>{switch(e.type){case"AsyncSuccess":return r(e.value);case"NotAsked":return s.notAsked;case"AsyncFailure":return s.failure(e.error);case"Loading":return s.loading()}},mapError:(e,r)=>{switch(e.type){case"AsyncSuccess":return s.success(e.value);case"NotAsked":return s.notAsked;case"AsyncFailure":return s.failure(r(e.error));case"Loading":return s.loading(e.previousValue)}},flatMapError:(e,r)=>{switch(e.type){case"AsyncSuccess":return s.success(e.value);case"NotAsked":return s.notAsked;case"AsyncFailure":return r(e.error);case"Loading":return s.loading(e.previousValue)}},toResult:e=>{switch(e.type){case"AsyncSuccess":return{type:"Success",value:e.value};case"AsyncFailure":return{type:"Failure",error:e.error};case"NotAsked":case"Loading":return}},isSettled(e){return e.type==="AsyncSuccess"||e.type==="AsyncFailure"},recover:(e,r)=>{switch(e.type){case"AsyncSuccess":return s.success(e.value);case"NotAsked":return s.notAsked;case"AsyncFailure":return s.success(r(e.error));case"Loading":return s.loading(e.previousValue)}},ap:(e,r)=>s.isSuccess(e)&&s.isSuccess(r)?s.success(e.value(r.value)):s.isFailure(e)?s.failure(e.error):s.isFailure(r)?s.failure(r.error):s.isLoading(e)||s.isLoading(r)?s.loading():s.notAsked,map2:(e,r,u)=>s.isSuccess(e)&&s.isSuccess(r)?s.success(u(e.value,r.value)):s.isFailure(e)?s.failure(e.error):s.isFailure(r)?s.failure(r.error):s.isLoading(e)||s.isLoading(r)?s.loading():s.notAsked,map3:(e,r,u,i)=>s.isSuccess(e)&&s.isSuccess(r)&&s.isSuccess(u)?s.success(i(e.value,r.value,u.value)):s.isFailure(e)?s.failure(e.error):s.isFailure(r)?s.failure(r.error):s.isFailure(u)?s.failure(u.error):s.isLoading(e)||s.isLoading(r)||s.isLoading(u)?s.loading():s.notAsked};exports.AsyncResult=s;
package/async-result.d.ts CHANGED
@@ -172,8 +172,9 @@ export declare const AsyncResult: {
172
172
  /**
173
173
  * Executes side effects based on the state of the result.
174
174
  * Unlike `match`, all handlers are optional, allowing you to react only to specific states.
175
+ * The `else` handler is called when no specific handler is provided for the current state.
175
176
  * @param r - The result.
176
- * @param handlers - An object with optional handlers for each state.
177
+ * @param handlers - An object with optional handlers for each state and an optional `else` fallback.
177
178
  * @returns The result that was passed in, allowing for chaining.
178
179
  * @public
179
180
  */
@@ -182,6 +183,7 @@ export declare const AsyncResult: {
182
183
  failure?: (error: E) => void;
183
184
  loading?: (previousValue?: V) => void;
184
185
  notAsked?: () => void;
186
+ else?: () => void;
185
187
  }) => AsyncResult<V, E>;
186
188
  /**
187
189
  * When the result is a success, it applies the function to the value.
package/async-result.js CHANGED
@@ -130,30 +130,31 @@ const s = {
130
130
  match: (e, {
131
131
  success: r,
132
132
  failure: u,
133
- loading: a,
134
- notAsked: c = a
135
- }) => s.isSuccess(e) ? r(e.value) : s.isFailure(e) ? u(e.error) : s.isNotAsked(e) ? c() : a(e.previousValue),
133
+ loading: i,
134
+ notAsked: c = i
135
+ }) => s.isSuccess(e) ? r(e.value) : s.isFailure(e) ? u(e.error) : s.isNotAsked(e) ? c() : i(e.previousValue),
136
136
  /**
137
137
  * Executes side effects based on the state of the result.
138
138
  * Unlike `match`, all handlers are optional, allowing you to react only to specific states.
139
+ * The `else` handler is called when no specific handler is provided for the current state.
139
140
  * @param r - The result.
140
- * @param handlers - An object with optional handlers for each state.
141
+ * @param handlers - An object with optional handlers for each state and an optional `else` fallback.
141
142
  * @returns The result that was passed in, allowing for chaining.
142
143
  * @public
143
144
  */
144
145
  effect: (e, r) => {
145
146
  switch (e.type) {
146
147
  case "AsyncSuccess":
147
- r.success?.(e.value);
148
+ r.success ? r.success(e.value) : r.else?.();
148
149
  break;
149
150
  case "AsyncFailure":
150
- r.failure?.(e.error);
151
+ r.failure ? r.failure(e.error) : r.else?.();
151
152
  break;
152
153
  case "Loading":
153
- r.loading?.(e.previousValue);
154
+ r.loading ? r.loading(e.previousValue) : r.else?.();
154
155
  break;
155
156
  case "NotAsked":
156
- r.notAsked?.();
157
+ r.notAsked ? r.notAsked() : r.else?.();
157
158
  break;
158
159
  }
159
160
  return e;
@@ -184,8 +185,8 @@ const s = {
184
185
  * @returns `true` if the results are equal, `false` otherwise.
185
186
  */
186
187
  equals: (e, r, u = {
187
- valueEquals: (a, c) => a === c,
188
- errorEquals: (a, c) => a === c
188
+ valueEquals: (i, c) => i === c,
189
+ errorEquals: (i, c) => i === c
189
190
  }) => e.type === "AsyncSuccess" && r.type === "AsyncSuccess" ? u.valueEquals(e.value, r.value) : e.type === "AsyncFailure" && r.type === "AsyncFailure" ? u.errorEquals(e.error, r.error) : e.type === "Loading" && r.type === "Loading" ? u.valueEquals(e.previousValue, r.previousValue) : e.type === "NotAsked" && r.type === "NotAsked",
190
191
  /**
191
192
  * Combines multiple results into a single result.
@@ -370,7 +371,7 @@ const s = {
370
371
  * @returns A new `AsyncResult` with the result of applying the function to all three values.
371
372
  * @public
372
373
  */
373
- map3: (e, r, u, a) => s.isSuccess(e) && s.isSuccess(r) && s.isSuccess(u) ? s.success(a(e.value, r.value, u.value)) : s.isFailure(e) ? s.failure(e.error) : s.isFailure(r) ? s.failure(r.error) : s.isFailure(u) ? s.failure(u.error) : s.isLoading(e) || s.isLoading(r) || s.isLoading(u) ? s.loading() : s.notAsked
374
+ map3: (e, r, u, i) => s.isSuccess(e) && s.isSuccess(r) && s.isSuccess(u) ? s.success(i(e.value, r.value, u.value)) : s.isFailure(e) ? s.failure(e.error) : s.isFailure(r) ? s.failure(r.error) : s.isFailure(u) ? s.failure(u.error) : s.isLoading(e) || s.isLoading(r) || s.isLoading(u) ? s.loading() : s.notAsked
374
375
  };
375
376
  export {
376
377
  s as AsyncResult
package/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./array.cjs"),b=require("./async-result.cjs"),a=require("./bigint.cjs"),u=require("./boolean.cjs"),t=require("./date.cjs"),A=require("./deferred.cjs"),g=require("./equal.cjs"),p=require("./function.cjs"),l=require("./iterator.cjs"),y=require("./json.cjs"),m=require("./map.cjs"),i=require("./number.cjs"),s=require("./object.cjs"),S=require("./promise.cjs"),c=require("./random.cjs"),C=require("./regexp.cjs"),f=require("./result-bSKKrSLB.cjs"),n=require("./set.cjs"),e=require("./string.cjs"),d=require("./timer.cjs"),o=require("./url.cjs");exports.applyArrayDiffOperations=r.applyArrayDiffOperations;exports.areArraysEqual=r.areArraysEqual;exports.arrayDiffOperations=r.arrayDiffOperations;exports.arrayHasValues=r.arrayHasValues;exports.arrayHead=r.arrayHead;exports.arrayTail=r.arrayTail;exports.buildArray=r.buildArray;exports.chunk=r.chunk;exports.compareArrays=r.compareArrays;exports.fillArray=r.fillArray;exports.filterMapArray=r.filterMapArray;exports.filterNullsFromArray=r.filterNullsFromArray;exports.groupBy=r.groupBy;exports.isArrayEmpty=r.isArrayEmpty;exports.joinArrayWithConjunction=r.joinArrayWithConjunction;exports.partition=r.partition;exports.range=r.range;exports.rankArray=r.rankArray;exports.removeAllFromArray=r.removeAllFromArray;exports.removeAllFromArrayByPredicate=r.removeAllFromArrayByPredicate;exports.removeOneFromArray=r.removeOneFromArray;exports.removeOneFromArrayByPredicate=r.removeOneFromArrayByPredicate;exports.uniqueByPrimitive=r.uniqueByPrimitive;exports.AsyncResult=b.AsyncResult;exports.biAbs=a.biAbs;exports.biCeilDiv=a.biCeilDiv;exports.biCompare=a.biCompare;exports.biFloorDiv=a.biFloorDiv;exports.biGcd=a.biGcd;exports.biIsEven=a.biIsEven;exports.biIsNegative=a.biIsNegative;exports.biIsOdd=a.biIsOdd;exports.biIsOne=a.biIsOne;exports.biIsPositive=a.biIsPositive;exports.biIsPrime=a.biIsPrime;exports.biIsZero=a.biIsZero;exports.biLcm=a.biLcm;exports.biMax=a.biMax;exports.biMin=a.biMin;exports.biNextPrime=a.biNextPrime;exports.biPow=a.biPow;exports.biPrevPrime=a.biPrevPrime;exports.booleanToInt=u.booleanToInt;exports.canParseBoolean=u.canParseBoolean;exports.compareBooleans=u.compareBooleans;exports.parseBoolean=u.parseBoolean;exports.xorBoolean=u.xorBoolean;exports.addDays=t.addDays;exports.addHours=t.addHours;exports.addMinutes=t.addMinutes;exports.compareDates=t.compareDates;exports.diffInDays=t.diffInDays;exports.diffInHours=t.diffInHours;exports.endOfDay=t.endOfDay;exports.endOfWeek=t.endOfWeek;exports.isSameDay=t.isSameDay;exports.isSameHour=t.isSameHour;exports.isSameMinute=t.isSameMinute;exports.isSameMonth=t.isSameMonth;exports.isSameSecond=t.isSameSecond;exports.isSameWeek=t.isSameWeek;exports.isSameYear=t.isSameYear;exports.isValidDate=t.isValidDate;exports.isWeekend=t.isWeekend;exports.startOfDay=t.startOfDay;exports.startOfWeek=t.startOfWeek;exports.deferred=A.deferred;exports.deepEqual=g.deepEqual;exports.looseEqual=g.looseEqual;exports.strictEqual=g.strictEqual;exports.compose=p.compose;exports.curryLeft=p.curryLeft;exports.flip=p.flip;exports.identity=p.identity;exports.memoize=p.memoize;exports.negate=p.negate;exports.once=p.once;exports.partial=p.partial;exports.pipe=p.pipe;exports.chain=l.chain;exports.every=l.every;exports.filter=l.filter;exports.find=l.find;exports.map=l.map;exports.reduce=l.reduce;exports.skip=l.skip;exports.some=l.some;exports.take=l.take;exports.toArray=l.toArray;exports.isJSON=y.isJSON;exports.isJSONArray=y.isJSONArray;exports.isJSONObject=y.isJSONObject;exports.isJSONPrimitive=y.isJSONPrimitive;exports.parseJSON=y.parseJSON;exports.mapEntries=m.mapEntries;exports.mapFilter=m.mapFilter;exports.mapFromEntries=m.mapFromEntries;exports.mapGroupBy=m.mapGroupBy;exports.mapIsEmpty=m.mapIsEmpty;exports.mapKeys=m.mapKeys;exports.mapMap=m.mapMap;exports.mapMerge=m.mapMerge;exports.mapToObject=m.mapToObject;exports.mapValues=m.mapValues;exports.EPSILON=i.EPSILON;exports.angleDifference=i.angleDifference;exports.ceilTo=i.ceilTo;exports.clamp=i.clamp;exports.clampInt=i.clampInt;exports.clampSym=i.clampSym;exports.compareNumbers=i.compareNumbers;exports.floorTo=i.floorTo;exports.interpolate=i.interpolate;exports.interpolateAngle=i.interpolateAngle;exports.interpolateAngleCCW=i.interpolateAngleCCW;exports.interpolateAngleCW=i.interpolateAngleCW;exports.interpolateWidestAngle=i.interpolateWidestAngle;exports.nearEqual=i.nearEqual;exports.nearEqualAngles=i.nearEqualAngles;exports.nearZero=i.nearZero;exports.root=i.root;exports.roundTo=i.roundTo;exports.toHex=i.toHex;exports.widestAngleDifference=i.widestAngleDifference;exports.wrap=i.wrap;exports.wrapCircular=i.wrapCircular;exports.deepClone=s.deepClone;exports.isEmptyObject=s.isEmptyObject;exports.isObject=s.isObject;exports.mergeObjects=s.mergeObjects;exports.objectEntries=s.objectEntries;exports.objectFromEntries=s.objectFromEntries;exports.objectKeys=s.objectKeys;exports.objectValues=s.objectValues;exports.omit=s.omit;exports.pick=s.pick;exports.removeObjectFields=s.removeObjectFields;exports.sameObjectKeys=s.sameObjectKeys;exports.sleep=S.sleep;exports.randomBytes=c.randomBytes;exports.randomChoice=c.randomChoice;exports.randomChoices=c.randomChoices;exports.randomFloat=c.randomFloat;exports.randomHex=c.randomHex;exports.randomInt=c.randomInt;exports.randomUuid=c.randomUuid;exports.seedRandom=c.seedRandom;exports.shuffle=c.shuffle;exports.shuffled=c.shuffled;exports.mapRegExp=C.mapRegExp;exports.Result=f.Result;exports.Validation=f.Validation;exports.setDifference=n.setDifference;exports.setFilter=n.setFilter;exports.setFromArray=n.setFromArray;exports.setIntersection=n.setIntersection;exports.setIsEmpty=n.setIsEmpty;exports.setIsSubset=n.setIsSubset;exports.setIsSuperset=n.setIsSuperset;exports.setMap=n.setMap;exports.setSymmetricDifference=n.setSymmetricDifference;exports.setToArray=n.setToArray;exports.setUnion=n.setUnion;exports.canonicalizeNewlines=e.canonicalizeNewlines;exports.capitalize=e.capitalize;exports.capitalizeWords=e.capitalizeWords;exports.chunkString=e.chunkString;exports.collapseText=e.collapseText;exports.compareCaseInsensitive=e.compareCaseInsensitive;exports.compareStrings=e.compareStrings;exports.containsAllText=e.containsAllText;exports.containsAllTextCaseInsensitive=e.containsAllTextCaseInsensitive;exports.containsAnyText=e.containsAnyText;exports.containsAnyTextCaseInsensitive=e.containsAnyTextCaseInsensitive;exports.countStringOccurrences=e.countStringOccurrences;exports.dasherize=e.dasherize;exports.decodeBase64=e.decodeBase64;exports.deleteFirstFromString=e.deleteFirstFromString;exports.deleteStringAfter=e.deleteStringAfter;exports.deleteStringBefore=e.deleteStringBefore;exports.deleteSubstring=e.deleteSubstring;exports.ellipsis=e.ellipsis;exports.ellipsisMiddle=e.ellipsisMiddle;exports.encodeBase64=e.encodeBase64;exports.filterCharcodes=e.filterCharcodes;exports.filterChars=e.filterChars;exports.humanize=e.humanize;exports.ifEmptyString=e.ifEmptyString;exports.isAlpha=e.isAlpha;exports.isAlphaNum=e.isAlphaNum;exports.isBreakingWhitespace=e.isBreakingWhitespace;exports.isDigitsOnly=e.isDigitsOnly;exports.isEmptyString=e.isEmptyString;exports.isLowerCase=e.isLowerCase;exports.isSpaceAt=e.isSpaceAt;exports.isUpperCase=e.isUpperCase;exports.jsQuote=e.jsQuote;exports.lowerCaseFirst=e.lowerCaseFirst;exports.lpad=e.lpad;exports.mapChars=e.mapChars;exports.quote=e.quote;exports.randomStringSequence=e.randomStringSequence;exports.randomStringSequenceBase64=e.randomStringSequenceBase64;exports.randomSubString=e.randomSubString;exports.reverseString=e.reverseString;exports.rpad=e.rpad;exports.smartQuote=e.smartQuote;exports.splitStringOnFirst=e.splitStringOnFirst;exports.splitStringOnLast=e.splitStringOnLast;exports.splitStringOnce=e.splitStringOnce;exports.stringEndsWithAny=e.stringEndsWithAny;exports.stringHasContent=e.stringHasContent;exports.stringHashCode=e.stringHashCode;exports.stringStartsWithAny=e.stringStartsWithAny;exports.stringToCharcodes=e.stringToCharcodes;exports.stringsDifferAtIndex=e.stringsDifferAtIndex;exports.substringAfter=e.substringAfter;exports.substringAfterLast=e.substringAfterLast;exports.substringBefore=e.substringBefore;exports.substringBeforeLast=e.substringBeforeLast;exports.surroundString=e.surroundString;exports.textContainsCaseInsensitive=e.textContainsCaseInsensitive;exports.textEndsWithAnyCaseInsensitive=e.textEndsWithAnyCaseInsensitive;exports.textEndsWithCaseInsensitive=e.textEndsWithCaseInsensitive;exports.textStartsWithAnyCaseInsensitive=e.textStartsWithAnyCaseInsensitive;exports.textStartsWithCaseInsensitive=e.textStartsWithCaseInsensitive;exports.textToLines=e.textToLines;exports.trimChars=e.trimChars;exports.trimCharsLeft=e.trimCharsLeft;exports.trimCharsRight=e.trimCharsRight;exports.trimStringSlice=e.trimStringSlice;exports.underscore=e.underscore;exports.upperCaseFirst=e.upperCaseFirst;exports.wrapColumns=e.wrapColumns;exports.wrapLine=e.wrapLine;exports.debounce=d.debounce;exports.delayed=d.delayed;exports.delayedAnimationFrame=d.delayedAnimationFrame;exports.interval=d.interval;exports.intervalAnimationFrame=d.intervalAnimationFrame;exports.throttle=d.throttle;exports.buildUrl=o.buildUrl;exports.getBaseName=o.getBaseName;exports.getFileExtension=o.getFileExtension;exports.getFileName=o.getFileName;exports.getQueryParams=o.getQueryParams;exports.isValidUrl=o.isValidUrl;exports.joinPaths=o.joinPaths;exports.normalizePath=o.normalizePath;exports.parseUrl=o.parseUrl;exports.removeQueryParam=o.removeQueryParam;exports.setQueryParam=o.setQueryParam;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./array.cjs"),b=require("./async-result.cjs"),a=require("./bigint.cjs"),u=require("./boolean.cjs"),t=require("./date.cjs"),A=require("./deferred.cjs"),g=require("./equal.cjs"),p=require("./function.cjs"),l=require("./iterator.cjs"),y=require("./json.cjs"),m=require("./map.cjs"),i=require("./number.cjs"),s=require("./object.cjs"),S=require("./promise.cjs"),c=require("./random.cjs"),C=require("./regexp.cjs"),f=require("./result-DBJ3htTg.cjs"),n=require("./set.cjs"),e=require("./string.cjs"),d=require("./timer.cjs"),o=require("./url.cjs");exports.applyArrayDiffOperations=r.applyArrayDiffOperations;exports.areArraysEqual=r.areArraysEqual;exports.arrayDiffOperations=r.arrayDiffOperations;exports.arrayHasValues=r.arrayHasValues;exports.arrayHead=r.arrayHead;exports.arrayTail=r.arrayTail;exports.buildArray=r.buildArray;exports.chunk=r.chunk;exports.compareArrays=r.compareArrays;exports.fillArray=r.fillArray;exports.filterMapArray=r.filterMapArray;exports.filterNullsFromArray=r.filterNullsFromArray;exports.groupBy=r.groupBy;exports.isArrayEmpty=r.isArrayEmpty;exports.joinArrayWithConjunction=r.joinArrayWithConjunction;exports.partition=r.partition;exports.range=r.range;exports.rankArray=r.rankArray;exports.removeAllFromArray=r.removeAllFromArray;exports.removeAllFromArrayByPredicate=r.removeAllFromArrayByPredicate;exports.removeOneFromArray=r.removeOneFromArray;exports.removeOneFromArrayByPredicate=r.removeOneFromArrayByPredicate;exports.uniqueByPrimitive=r.uniqueByPrimitive;exports.AsyncResult=b.AsyncResult;exports.biAbs=a.biAbs;exports.biCeilDiv=a.biCeilDiv;exports.biCompare=a.biCompare;exports.biFloorDiv=a.biFloorDiv;exports.biGcd=a.biGcd;exports.biIsEven=a.biIsEven;exports.biIsNegative=a.biIsNegative;exports.biIsOdd=a.biIsOdd;exports.biIsOne=a.biIsOne;exports.biIsPositive=a.biIsPositive;exports.biIsPrime=a.biIsPrime;exports.biIsZero=a.biIsZero;exports.biLcm=a.biLcm;exports.biMax=a.biMax;exports.biMin=a.biMin;exports.biNextPrime=a.biNextPrime;exports.biPow=a.biPow;exports.biPrevPrime=a.biPrevPrime;exports.booleanToInt=u.booleanToInt;exports.canParseBoolean=u.canParseBoolean;exports.compareBooleans=u.compareBooleans;exports.parseBoolean=u.parseBoolean;exports.xorBoolean=u.xorBoolean;exports.addDays=t.addDays;exports.addHours=t.addHours;exports.addMinutes=t.addMinutes;exports.compareDates=t.compareDates;exports.diffInDays=t.diffInDays;exports.diffInHours=t.diffInHours;exports.endOfDay=t.endOfDay;exports.endOfWeek=t.endOfWeek;exports.isSameDay=t.isSameDay;exports.isSameHour=t.isSameHour;exports.isSameMinute=t.isSameMinute;exports.isSameMonth=t.isSameMonth;exports.isSameSecond=t.isSameSecond;exports.isSameWeek=t.isSameWeek;exports.isSameYear=t.isSameYear;exports.isValidDate=t.isValidDate;exports.isWeekend=t.isWeekend;exports.startOfDay=t.startOfDay;exports.startOfWeek=t.startOfWeek;exports.deferred=A.deferred;exports.deepEqual=g.deepEqual;exports.looseEqual=g.looseEqual;exports.strictEqual=g.strictEqual;exports.compose=p.compose;exports.curryLeft=p.curryLeft;exports.flip=p.flip;exports.identity=p.identity;exports.memoize=p.memoize;exports.negate=p.negate;exports.once=p.once;exports.partial=p.partial;exports.pipe=p.pipe;exports.chain=l.chain;exports.every=l.every;exports.filter=l.filter;exports.find=l.find;exports.map=l.map;exports.reduce=l.reduce;exports.skip=l.skip;exports.some=l.some;exports.take=l.take;exports.toArray=l.toArray;exports.isJSON=y.isJSON;exports.isJSONArray=y.isJSONArray;exports.isJSONObject=y.isJSONObject;exports.isJSONPrimitive=y.isJSONPrimitive;exports.parseJSON=y.parseJSON;exports.mapEntries=m.mapEntries;exports.mapFilter=m.mapFilter;exports.mapFromEntries=m.mapFromEntries;exports.mapGroupBy=m.mapGroupBy;exports.mapIsEmpty=m.mapIsEmpty;exports.mapKeys=m.mapKeys;exports.mapMap=m.mapMap;exports.mapMerge=m.mapMerge;exports.mapToObject=m.mapToObject;exports.mapValues=m.mapValues;exports.EPSILON=i.EPSILON;exports.angleDifference=i.angleDifference;exports.ceilTo=i.ceilTo;exports.clamp=i.clamp;exports.clampInt=i.clampInt;exports.clampSym=i.clampSym;exports.compareNumbers=i.compareNumbers;exports.floorTo=i.floorTo;exports.interpolate=i.interpolate;exports.interpolateAngle=i.interpolateAngle;exports.interpolateAngleCCW=i.interpolateAngleCCW;exports.interpolateAngleCW=i.interpolateAngleCW;exports.interpolateWidestAngle=i.interpolateWidestAngle;exports.nearEqual=i.nearEqual;exports.nearEqualAngles=i.nearEqualAngles;exports.nearZero=i.nearZero;exports.root=i.root;exports.roundTo=i.roundTo;exports.toHex=i.toHex;exports.widestAngleDifference=i.widestAngleDifference;exports.wrap=i.wrap;exports.wrapCircular=i.wrapCircular;exports.deepClone=s.deepClone;exports.isEmptyObject=s.isEmptyObject;exports.isObject=s.isObject;exports.mergeObjects=s.mergeObjects;exports.objectEntries=s.objectEntries;exports.objectFromEntries=s.objectFromEntries;exports.objectKeys=s.objectKeys;exports.objectValues=s.objectValues;exports.omit=s.omit;exports.pick=s.pick;exports.removeObjectFields=s.removeObjectFields;exports.sameObjectKeys=s.sameObjectKeys;exports.sleep=S.sleep;exports.randomBytes=c.randomBytes;exports.randomChoice=c.randomChoice;exports.randomChoices=c.randomChoices;exports.randomFloat=c.randomFloat;exports.randomHex=c.randomHex;exports.randomInt=c.randomInt;exports.randomUuid=c.randomUuid;exports.seedRandom=c.seedRandom;exports.shuffle=c.shuffle;exports.shuffled=c.shuffled;exports.mapRegExp=C.mapRegExp;exports.Result=f.Result;exports.Validation=f.Validation;exports.setDifference=n.setDifference;exports.setFilter=n.setFilter;exports.setFromArray=n.setFromArray;exports.setIntersection=n.setIntersection;exports.setIsEmpty=n.setIsEmpty;exports.setIsSubset=n.setIsSubset;exports.setIsSuperset=n.setIsSuperset;exports.setMap=n.setMap;exports.setSymmetricDifference=n.setSymmetricDifference;exports.setToArray=n.setToArray;exports.setUnion=n.setUnion;exports.canonicalizeNewlines=e.canonicalizeNewlines;exports.capitalize=e.capitalize;exports.capitalizeWords=e.capitalizeWords;exports.chunkString=e.chunkString;exports.collapseText=e.collapseText;exports.compareCaseInsensitive=e.compareCaseInsensitive;exports.compareStrings=e.compareStrings;exports.containsAllText=e.containsAllText;exports.containsAllTextCaseInsensitive=e.containsAllTextCaseInsensitive;exports.containsAnyText=e.containsAnyText;exports.containsAnyTextCaseInsensitive=e.containsAnyTextCaseInsensitive;exports.countStringOccurrences=e.countStringOccurrences;exports.dasherize=e.dasherize;exports.decodeBase64=e.decodeBase64;exports.deleteFirstFromString=e.deleteFirstFromString;exports.deleteStringAfter=e.deleteStringAfter;exports.deleteStringBefore=e.deleteStringBefore;exports.deleteSubstring=e.deleteSubstring;exports.ellipsis=e.ellipsis;exports.ellipsisMiddle=e.ellipsisMiddle;exports.encodeBase64=e.encodeBase64;exports.filterCharcodes=e.filterCharcodes;exports.filterChars=e.filterChars;exports.humanize=e.humanize;exports.ifEmptyString=e.ifEmptyString;exports.isAlpha=e.isAlpha;exports.isAlphaNum=e.isAlphaNum;exports.isBreakingWhitespace=e.isBreakingWhitespace;exports.isDigitsOnly=e.isDigitsOnly;exports.isEmptyString=e.isEmptyString;exports.isLowerCase=e.isLowerCase;exports.isSpaceAt=e.isSpaceAt;exports.isUpperCase=e.isUpperCase;exports.jsQuote=e.jsQuote;exports.lowerCaseFirst=e.lowerCaseFirst;exports.lpad=e.lpad;exports.mapChars=e.mapChars;exports.quote=e.quote;exports.randomStringSequence=e.randomStringSequence;exports.randomStringSequenceBase64=e.randomStringSequenceBase64;exports.randomSubString=e.randomSubString;exports.reverseString=e.reverseString;exports.rpad=e.rpad;exports.smartQuote=e.smartQuote;exports.splitStringOnFirst=e.splitStringOnFirst;exports.splitStringOnLast=e.splitStringOnLast;exports.splitStringOnce=e.splitStringOnce;exports.stringEndsWithAny=e.stringEndsWithAny;exports.stringHasContent=e.stringHasContent;exports.stringHashCode=e.stringHashCode;exports.stringStartsWithAny=e.stringStartsWithAny;exports.stringToCharcodes=e.stringToCharcodes;exports.stringsDifferAtIndex=e.stringsDifferAtIndex;exports.substringAfter=e.substringAfter;exports.substringAfterLast=e.substringAfterLast;exports.substringBefore=e.substringBefore;exports.substringBeforeLast=e.substringBeforeLast;exports.surroundString=e.surroundString;exports.textContainsCaseInsensitive=e.textContainsCaseInsensitive;exports.textEndsWithAnyCaseInsensitive=e.textEndsWithAnyCaseInsensitive;exports.textEndsWithCaseInsensitive=e.textEndsWithCaseInsensitive;exports.textStartsWithAnyCaseInsensitive=e.textStartsWithAnyCaseInsensitive;exports.textStartsWithCaseInsensitive=e.textStartsWithCaseInsensitive;exports.textToLines=e.textToLines;exports.trimChars=e.trimChars;exports.trimCharsLeft=e.trimCharsLeft;exports.trimCharsRight=e.trimCharsRight;exports.trimStringSlice=e.trimStringSlice;exports.underscore=e.underscore;exports.upperCaseFirst=e.upperCaseFirst;exports.wrapColumns=e.wrapColumns;exports.wrapLine=e.wrapLine;exports.debounce=d.debounce;exports.delayed=d.delayed;exports.delayedAnimationFrame=d.delayedAnimationFrame;exports.interval=d.interval;exports.intervalAnimationFrame=d.intervalAnimationFrame;exports.throttle=d.throttle;exports.buildUrl=o.buildUrl;exports.getBaseName=o.getBaseName;exports.getFileExtension=o.getFileExtension;exports.getFileName=o.getFileName;exports.getQueryParams=o.getQueryParams;exports.isValidUrl=o.isValidUrl;exports.joinPaths=o.joinPaths;exports.normalizePath=o.normalizePath;exports.parseUrl=o.parseUrl;exports.removeQueryParam=o.removeQueryParam;exports.setQueryParam=o.setQueryParam;
package/index.js CHANGED
@@ -14,7 +14,7 @@ import { deepClone as jr, isEmptyObject as Nr, isObject as Tr, mergeObjects as k
14
14
  import { sleep as Jr } from "./promise.js";
15
15
  import { randomBytes as Kr, randomChoice as Gr, randomChoices as Zr, randomFloat as Yr, randomHex as Xr, randomInt as _r, randomUuid as $r, seedRandom as et, shuffle as rt, shuffled as tt } from "./random.js";
16
16
  import { mapRegExp as at } from "./regexp.js";
17
- import { R as nt, V as ot } from "./result-7Po2Mxhx.js";
17
+ import { R as nt, V as ot } from "./result-BYto972d.js";
18
18
  import { setDifference as lt, setFilter as pt, setFromArray as dt, setIntersection as ct, setIsEmpty as ft, setIsSubset as yt, setIsSuperset as ut, setMap as gt, setSymmetricDifference as At, setToArray as St, setUnion as bt } from "./set.js";
19
19
  import { canonicalizeNewlines as Ct, capitalize as ht, capitalizeWords as Ot, chunkString as It, collapseText as vt, compareCaseInsensitive as Et, compareStrings as Ft, containsAllText as Bt, containsAllTextCaseInsensitive as Dt, containsAnyText as Pt, containsAnyTextCaseInsensitive as Wt, countStringOccurrences as jt, dasherize as Nt, decodeBase64 as Tt, deleteFirstFromString as kt, deleteStringAfter as qt, deleteStringBefore as Lt, deleteSubstring as Mt, ellipsis as wt, ellipsisMiddle as Ht, encodeBase64 as zt, filterCharcodes as Vt, filterChars as Rt, humanize as Ut, ifEmptyString as Jt, isAlpha as Qt, isAlphaNum as Kt, isBreakingWhitespace as Gt, isDigitsOnly as Zt, isEmptyString as Yt, isLowerCase as Xt, isSpaceAt as _t, isUpperCase as $t, jsQuote as ei, lowerCaseFirst as ri, lpad as ti, mapChars as ii, quote as ai, randomStringSequence as si, randomStringSequenceBase64 as ni, randomSubString as oi, reverseString as mi, rpad as li, smartQuote as pi, splitStringOnFirst as di, splitStringOnLast as ci, splitStringOnce as fi, stringEndsWithAny as yi, stringHasContent as ui, stringHashCode as gi, stringStartsWithAny as Ai, stringToCharcodes as Si, stringsDifferAtIndex as bi, substringAfter as xi, substringAfterLast as Ci, substringBefore as hi, substringBeforeLast as Oi, surroundString as Ii, textContainsCaseInsensitive as vi, textEndsWithAnyCaseInsensitive as Ei, textEndsWithCaseInsensitive as Fi, textStartsWithAnyCaseInsensitive as Bi, textStartsWithCaseInsensitive as Di, textToLines as Pi, trimChars as Wi, trimCharsLeft as ji, trimCharsRight as Ni, trimStringSlice as Ti, underscore as ki, upperCaseFirst as qi, wrapColumns as Li, wrapLine as Mi } from "./string.js";
20
20
  import { debounce as Hi, delayed as zi, delayedAnimationFrame as Vi, interval as Ri, intervalAnimationFrame as Ui, throttle as Ji } from "./timer.js";
package/json.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./result-bSKKrSLB.cjs"),e=r=>typeof r=="object"&&!Array.isArray(r)&&r!=null&&Object.values(r).every(t),i=r=>Array.isArray(r)&&r.every(t),t=r=>o(r)||e(r)||i(r),o=r=>typeof r=="string"||typeof r=="boolean"||typeof r=="number"||r==null,n=r=>{try{return s.Result.success(JSON.parse(r))}catch(c){return s.Result.failure(c)}};exports.isJSON=t;exports.isJSONArray=i;exports.isJSONObject=e;exports.isJSONPrimitive=o;exports.parseJSON=n;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./result-DBJ3htTg.cjs"),e=r=>typeof r=="object"&&!Array.isArray(r)&&r!=null&&Object.values(r).every(t),i=r=>Array.isArray(r)&&r.every(t),t=r=>o(r)||e(r)||i(r),o=r=>typeof r=="string"||typeof r=="boolean"||typeof r=="number"||r==null,n=r=>{try{return s.Result.success(JSON.parse(r))}catch(c){return s.Result.failure(c)}};exports.isJSON=t;exports.isJSONArray=i;exports.isJSONObject=e;exports.isJSONPrimitive=o;exports.parseJSON=n;
package/json.js CHANGED
@@ -1,4 +1,4 @@
1
- import { R as t } from "./result-7Po2Mxhx.js";
1
+ import { R as t } from "./result-BYto972d.js";
2
2
  const e = (r) => typeof r == "object" && !Array.isArray(r) && r != null && Object.values(r).every(s), c = (r) => Array.isArray(r) && r.every(s), s = (r) => i(r) || e(r) || c(r), i = (r) => typeof r == "string" || typeof r == "boolean" || typeof r == "number" || r == null, y = (r) => {
3
3
  try {
4
4
  return t.success(JSON.parse(r));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tempots/std",
3
- "version": "0.25.1",
3
+ "version": "0.25.2",
4
4
  "priority": 8,
5
5
  "description": "Std library for TypeScript. Natural complement to the Tempo libraries.",
6
6
  "keywords": [
@@ -52,12 +52,13 @@ const i = {
52
52
  /**
53
53
  * Executes side effects based on the state of the validation.
54
54
  * Unlike `match`, all handlers are optional, allowing you to react only to specific states.
55
+ * The `else` handler is called when no specific handler is provided for the current state.
55
56
  * @param v - The validation.
56
- * @param handlers - An object with optional handlers for each state.
57
+ * @param handlers - An object with optional handlers for each state and an optional `else` fallback.
57
58
  * @returns The validation that was passed in, allowing for chaining.
58
59
  * @public
59
60
  */
60
- effect: (e, r) => (e.type === "valid" ? r.valid?.() : r.invalid?.(e.error), e),
61
+ effect: (e, r) => (e.type === "valid" ? r.valid ? r.valid() : r.else?.() : r.invalid ? r.invalid(e.error) : r.else?.(), e),
61
62
  /**
62
63
  * Execute a function when the `Validation` is valid.
63
64
  *
@@ -305,12 +306,13 @@ const i = {
305
306
  /**
306
307
  * Executes side effects based on the state of the result.
307
308
  * Unlike `match`, all handlers are optional, allowing you to react only to specific states.
309
+ * The `else` handler is called when no specific handler is provided for the current state.
308
310
  * @param r - The result.
309
- * @param handlers - An object with optional handlers for each state.
311
+ * @param handlers - An object with optional handlers for each state and an optional `else` fallback.
310
312
  * @returns The result that was passed in, allowing for chaining.
311
313
  * @public
312
314
  */
313
- effect: (e, r) => (e.type === "Success" ? r.success?.(e.value) : r.failure?.(e.error), e),
315
+ effect: (e, r) => (e.type === "Success" ? r.success ? r.success(e.value) : r.else?.() : r.failure ? r.failure(e.error) : r.else?.(), e),
314
316
  /**
315
317
  * Calls the provided function if the result is a success.
316
318
  * @param apply - The function to call if the result is a success.
@@ -0,0 +1 @@
1
+ "use strict";const n=require("./async-result.cjs"),i={valid:{type:"valid"},invalid(e){return{type:"invalid",error:e}},isValid(e){return e.type==="valid"},isInvalid(e){return e.type==="invalid"},match:(e,r,u)=>i.isValid(e)?r():u(e.error),toResult:(e,r)=>i.match(e,()=>s.success(r),u=>s.failure(u)),effect:(e,r)=>(e.type==="valid"?r.valid?r.valid():r.else?.():r.invalid?r.invalid(e.error):r.else?.(),e),whenValid:(e,r)=>(i.isValid(e)&&r(),e),whenInvalid:(e,r)=>(i.isInvalid(e)&&r(e.error),e),mapError:(e,r)=>e.type==="invalid"?i.invalid(r(e.error)):e,flatMapError:(e,r)=>e.type==="invalid"?r(e.error):e,combine:(e,r,u)=>i.isValid(e)&&i.isValid(r)?i.valid:i.isInvalid(e)&&i.isInvalid(r)?i.invalid(u(e.error,r.error)):i.isInvalid(e)?e:r,all:e=>{for(const r of e)if(i.isInvalid(r))return r;return i.valid},allErrors:e=>{const r=[];for(const u of e)i.isInvalid(u)&&r.push(u.error);return r.length>0?i.invalid(r):i.valid},equals:(e,r,u=(t,l)=>t===l)=>e.type==="valid"&&r.type==="valid"?!0:e.type==="invalid"&&r.type==="invalid"?u(e.error,r.error):!1,recover:e=>i.valid,getError:e=>{if(i.isInvalid(e))return e.error},getErrorOrElse:(e,r)=>i.isInvalid(e)?e.error:r},s={success(e){return{type:"Success",value:e}},failure(e){return{type:"Failure",error:e}},map:(e,r)=>e.type==="Success"?s.success(r(e.value)):e,flatMap:(e,r)=>e.type==="Success"?r(e.value):e,toAsync(e){return s.match(e,r=>n.AsyncResult.success(r),r=>n.AsyncResult.failure(r))},toValidation(e){return s.match(e,()=>i.valid,r=>i.invalid(r))},isSuccess(e){return e.type==="Success"},isFailure(e){return e.type==="Failure"},getOrElse(e,r){return s.isSuccess(e)?e.value:r},getOrElseLazy(e,r){return s.isSuccess(e)?e.value:r()},getOrNull(e){return s.isSuccess(e)?e.value:null},getOrUndefined(e){return s.isSuccess(e)?e.value:void 0},getUnsafe:e=>{if(s.isSuccess(e))return e.value;throw e.error},match:(e,r,u)=>s.isSuccess(e)?r(e.value):u(e.error),effect:(e,r)=>(e.type==="Success"?r.success?r.success(e.value):r.else?.():r.failure?r.failure(e.error):r.else?.(),e),whenSuccess:(e,r)=>(s.isSuccess(e)&&r(e.value),e),whenFailure:(e,r)=>(s.isFailure(e)&&r(e.error),e),combine:(e,r,u,t)=>s.match(e,l=>s.match(r,a=>s.success(u(l,a)),a=>s.failure(a)),l=>s.match(r,a=>s.failure(l),a=>s.failure(t(l,a)))),equals:(e,r,u={valueEquals:(t,l)=>t===l,errorEquals:(t,l)=>t===l})=>e.type==="Success"&&r.type==="Success"?u.valueEquals(e.value,r.value):e.type==="Failure"&&r.type==="Failure"?u.errorEquals(e.error,r.error):!1,all:e=>{const r=[];for(const u of e)if(s.isSuccess(u))r.push(u.value);else return u;return s.success(r)},mapError:(e,r)=>e.type==="Failure"?s.failure(r(e.error)):e,flatMapError:(e,r)=>e.type==="Failure"?r(e.error):e,recover:(e,r)=>e.type==="Failure"?{type:"Success",value:r(e.error)}:e,ap:(e,r)=>s.isSuccess(e)&&s.isSuccess(r)?s.success(e.value(r.value)):s.isFailure(e)?s.failure(e.error):s.failure(r.error),map2:(e,r,u)=>s.isSuccess(e)&&s.isSuccess(r)?s.success(u(e.value,r.value)):s.isFailure(e)?s.failure(e.error):s.failure(r.error),map3:(e,r,u,t)=>s.isSuccess(e)&&s.isSuccess(r)&&s.isSuccess(u)?s.success(t(e.value,r.value,u.value)):s.isFailure(e)?s.failure(e.error):s.isFailure(r)?s.failure(r.error):s.failure(u.error),ofPromise:async e=>{try{const r=await e;return s.success(r)}catch(r){return s.failure(r instanceof Error?r:new Error(String(r)))}},swap:e=>s.isSuccess(e)?s.failure(e.value):s.success(e.error),fromNullable:(e,r)=>e==null?s.failure(r):s.success(e),fromNullableLazy:(e,r)=>e==null?s.failure(r()):s.success(e),tryCatch:e=>{try{return s.success(e())}catch(r){return s.failure(r instanceof Error?r:new Error(String(r)))}}};exports.Result=s;exports.Validation=i;
package/result.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./async-result.cjs");const e=require("./result-bSKKrSLB.cjs");exports.Result=e.Result;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./async-result.cjs");const e=require("./result-DBJ3htTg.cjs");exports.Result=e.Result;
package/result.d.ts CHANGED
@@ -143,14 +143,16 @@ export declare const Result: {
143
143
  /**
144
144
  * Executes side effects based on the state of the result.
145
145
  * Unlike `match`, all handlers are optional, allowing you to react only to specific states.
146
+ * The `else` handler is called when no specific handler is provided for the current state.
146
147
  * @param r - The result.
147
- * @param handlers - An object with optional handlers for each state.
148
+ * @param handlers - An object with optional handlers for each state and an optional `else` fallback.
148
149
  * @returns The result that was passed in, allowing for chaining.
149
150
  * @public
150
151
  */
151
152
  effect: <V, E>(r: Result<V, E>, handlers: {
152
153
  success?: (value: V) => void;
153
154
  failure?: (error: E) => void;
155
+ else?: () => void;
154
156
  }) => Result<V, E>;
155
157
  /**
156
158
  * Calls the provided function if the result is a success.
package/result.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import "./async-result.js";
2
- import { R as e } from "./result-7Po2Mxhx.js";
2
+ import { R as e } from "./result-BYto972d.js";
3
3
  export {
4
4
  e as Result
5
5
  };
package/validation.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./result-bSKKrSLB.cjs");exports.Validation=i.Validation;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./result-DBJ3htTg.cjs");exports.Validation=i.Validation;
package/validation.d.ts CHANGED
@@ -75,14 +75,16 @@ export declare const Validation: {
75
75
  /**
76
76
  * Executes side effects based on the state of the validation.
77
77
  * Unlike `match`, all handlers are optional, allowing you to react only to specific states.
78
+ * The `else` handler is called when no specific handler is provided for the current state.
78
79
  * @param v - The validation.
79
- * @param handlers - An object with optional handlers for each state.
80
+ * @param handlers - An object with optional handlers for each state and an optional `else` fallback.
80
81
  * @returns The validation that was passed in, allowing for chaining.
81
82
  * @public
82
83
  */
83
84
  effect: <E>(v: Validation<E>, handlers: {
84
85
  valid?: () => void;
85
86
  invalid?: (error: E) => void;
87
+ else?: () => void;
86
88
  }) => Validation<E>;
87
89
  /**
88
90
  * Execute a function when the `Validation` is valid.
package/validation.js CHANGED
@@ -1,4 +1,4 @@
1
- import { V as i } from "./result-7Po2Mxhx.js";
1
+ import { V as i } from "./result-BYto972d.js";
2
2
  export {
3
3
  i as Validation
4
4
  };
@@ -1 +0,0 @@
1
- "use strict";const n=require("./async-result.cjs"),i={valid:{type:"valid"},invalid(e){return{type:"invalid",error:e}},isValid(e){return e.type==="valid"},isInvalid(e){return e.type==="invalid"},match:(e,r,u)=>i.isValid(e)?r():u(e.error),toResult:(e,r)=>i.match(e,()=>s.success(r),u=>s.failure(u)),effect:(e,r)=>(e.type==="valid"?r.valid?.():r.invalid?.(e.error),e),whenValid:(e,r)=>(i.isValid(e)&&r(),e),whenInvalid:(e,r)=>(i.isInvalid(e)&&r(e.error),e),mapError:(e,r)=>e.type==="invalid"?i.invalid(r(e.error)):e,flatMapError:(e,r)=>e.type==="invalid"?r(e.error):e,combine:(e,r,u)=>i.isValid(e)&&i.isValid(r)?i.valid:i.isInvalid(e)&&i.isInvalid(r)?i.invalid(u(e.error,r.error)):i.isInvalid(e)?e:r,all:e=>{for(const r of e)if(i.isInvalid(r))return r;return i.valid},allErrors:e=>{const r=[];for(const u of e)i.isInvalid(u)&&r.push(u.error);return r.length>0?i.invalid(r):i.valid},equals:(e,r,u=(t,l)=>t===l)=>e.type==="valid"&&r.type==="valid"?!0:e.type==="invalid"&&r.type==="invalid"?u(e.error,r.error):!1,recover:e=>i.valid,getError:e=>{if(i.isInvalid(e))return e.error},getErrorOrElse:(e,r)=>i.isInvalid(e)?e.error:r},s={success(e){return{type:"Success",value:e}},failure(e){return{type:"Failure",error:e}},map:(e,r)=>e.type==="Success"?s.success(r(e.value)):e,flatMap:(e,r)=>e.type==="Success"?r(e.value):e,toAsync(e){return s.match(e,r=>n.AsyncResult.success(r),r=>n.AsyncResult.failure(r))},toValidation(e){return s.match(e,()=>i.valid,r=>i.invalid(r))},isSuccess(e){return e.type==="Success"},isFailure(e){return e.type==="Failure"},getOrElse(e,r){return s.isSuccess(e)?e.value:r},getOrElseLazy(e,r){return s.isSuccess(e)?e.value:r()},getOrNull(e){return s.isSuccess(e)?e.value:null},getOrUndefined(e){return s.isSuccess(e)?e.value:void 0},getUnsafe:e=>{if(s.isSuccess(e))return e.value;throw e.error},match:(e,r,u)=>s.isSuccess(e)?r(e.value):u(e.error),effect:(e,r)=>(e.type==="Success"?r.success?.(e.value):r.failure?.(e.error),e),whenSuccess:(e,r)=>(s.isSuccess(e)&&r(e.value),e),whenFailure:(e,r)=>(s.isFailure(e)&&r(e.error),e),combine:(e,r,u,t)=>s.match(e,l=>s.match(r,a=>s.success(u(l,a)),a=>s.failure(a)),l=>s.match(r,a=>s.failure(l),a=>s.failure(t(l,a)))),equals:(e,r,u={valueEquals:(t,l)=>t===l,errorEquals:(t,l)=>t===l})=>e.type==="Success"&&r.type==="Success"?u.valueEquals(e.value,r.value):e.type==="Failure"&&r.type==="Failure"?u.errorEquals(e.error,r.error):!1,all:e=>{const r=[];for(const u of e)if(s.isSuccess(u))r.push(u.value);else return u;return s.success(r)},mapError:(e,r)=>e.type==="Failure"?s.failure(r(e.error)):e,flatMapError:(e,r)=>e.type==="Failure"?r(e.error):e,recover:(e,r)=>e.type==="Failure"?{type:"Success",value:r(e.error)}:e,ap:(e,r)=>s.isSuccess(e)&&s.isSuccess(r)?s.success(e.value(r.value)):s.isFailure(e)?s.failure(e.error):s.failure(r.error),map2:(e,r,u)=>s.isSuccess(e)&&s.isSuccess(r)?s.success(u(e.value,r.value)):s.isFailure(e)?s.failure(e.error):s.failure(r.error),map3:(e,r,u,t)=>s.isSuccess(e)&&s.isSuccess(r)&&s.isSuccess(u)?s.success(t(e.value,r.value,u.value)):s.isFailure(e)?s.failure(e.error):s.isFailure(r)?s.failure(r.error):s.failure(u.error),ofPromise:async e=>{try{const r=await e;return s.success(r)}catch(r){return s.failure(r instanceof Error?r:new Error(String(r)))}},swap:e=>s.isSuccess(e)?s.failure(e.value):s.success(e.error),fromNullable:(e,r)=>e==null?s.failure(r):s.success(e),fromNullableLazy:(e,r)=>e==null?s.failure(r()):s.success(e),tryCatch:e=>{try{return s.success(e())}catch(r){return s.failure(r instanceof Error?r:new Error(String(r)))}}};exports.Result=s;exports.Validation=i;