@clipboard-health/util-ts 3.10.0 → 3.12.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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@clipboard-health/util-ts",
3
3
  "description": "TypeScript utilities.",
4
- "version": "3.10.0",
4
+ "version": "3.12.0",
5
5
  "bugs": "https://github.com/ClipboardHealth/core-utils/issues",
6
6
  "dependencies": {
7
7
  "tslib": "2.8.1"
@@ -4,6 +4,14 @@ exports.toError = toError;
4
4
  const isString_1 = require("../strings/isString");
5
5
  const stringify_1 = require("../strings/stringify");
6
6
  const isError_1 = require("./isError");
7
+ const IGNORED_PROPERTIES = new Set([
8
+ "message",
9
+ "stack",
10
+ "name",
11
+ "__proto__",
12
+ "prototype",
13
+ "constructor",
14
+ ]);
7
15
  /**
8
16
  * Converts an error-like value to an Error instance. If the input is already an Error, returns it
9
17
  * directly. Otherwise, creates a new Error with an appropriate string representation of the input.
@@ -20,6 +28,15 @@ function toError(value) {
20
28
  if ("stack" in value) {
21
29
  error.stack = String(value.stack);
22
30
  }
31
+ if ("name" in value && typeof value.name === "string") {
32
+ error.name = String(value.name);
33
+ }
34
+ // Preserve original properties without clobbering.
35
+ Reflect.ownKeys(value)
36
+ .filter((key) => !IGNORED_PROPERTIES.has(String(key)))
37
+ .forEach((key) => {
38
+ error[key] = value[key];
39
+ });
23
40
  return error;
24
41
  }
25
42
  if (typeof value === "symbol") {
@@ -1 +1 @@
1
- {"version":3,"file":"toError.js","sourceRoot":"","sources":["../../../../../../packages/util-ts/src/lib/errors/toError.ts"],"names":[],"mappings":";;AAWA,0BAuBC;AAlCD,kDAA+C;AAC/C,oDAAiD;AACjD,uCAAoC;AAEpC;;;;;;GAMG;AACH,SAAgB,OAAO,CAAC,KAAc;IACpC,IAAI,IAAA,iBAAO,EAAC,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;YACrB,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,KAAK,CAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,qBAAS,EAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAClC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"toError.js","sourceRoot":"","sources":["../../../../../../packages/util-ts/src/lib/errors/toError.ts"],"names":[],"mappings":";;AAsBA,0BAkCC;AAxDD,kDAA+C;AAC/C,oDAAiD;AACjD,uCAAoC;AAEpC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,SAAS;IACT,OAAO;IACP,MAAM;IACN,WAAW;IACX,WAAW;IACX,aAAa;CACd,CAAC,CAAC;AAIH;;;;;;GAMG;AACH,SAAgB,OAAO,CAAC,KAAc;IACpC,IAAI,IAAA,iBAAO,EAAC,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;YACrB,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,mDAAmD;QACnD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;aACnB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;aACrD,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACd,KAAmC,CAAC,GAAG,CAAC,GAAI,KAAwB,CAAC,GAAG,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QAEL,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,KAAK,CAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,qBAAS,EAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAClC,CAAC;AACH,CAAC"}
@@ -9,31 +9,35 @@ export interface Failure<E> {
9
9
  readonly isSuccess: false;
10
10
  readonly error: E;
11
11
  }
12
+ export type SuccessResult<A> = Right<A> & Success<A>;
13
+ export type FailureResult = Left<ServiceError> & Failure<ServiceError>;
12
14
  /**
13
15
  * Represents the result of a service operation that may fail.
16
+ *
17
+ * The type is also an {@link Either}, allowing functions built for {@link Either}.
18
+ *
14
19
  * @template A The type of the successful result value
15
20
  */
16
- export type ServiceResult<A> = Either<ServiceError, A> & (Success<A> | Failure<ServiceError>);
21
+ export type ServiceResult<A> = SuccessResult<A> | FailureResult;
17
22
  /**
18
- * Alias for {@link right} that duplicates the `right` property to `value` and `isRight` to
19
- * `isSuccess`.
23
+ * Creates a successful ServiceResult.
20
24
  */
21
25
  export declare function success<A>(value: A): ServiceResult<A>;
22
26
  /**
23
- * Alias for {@link left} that duplicates the `left` property to `error` and `isLeft` to
24
- * `isSuccess`.
27
+ * Creates a failed ServiceResult.
25
28
  */
26
29
  export declare function failure<A = never>(params: ServiceErrorParams | ServiceError): ServiceResult<A>;
27
30
  /**
28
- * Alias for {@link isLeft}.
31
+ * Type guard for failure results.
29
32
  */
30
33
  export declare function isFailure<A>(result: ServiceResult<A>): result is Left<ServiceError> & Failure<ServiceError>;
31
34
  /**
32
- * Alias for {@link isRight}.
35
+ * Type guard for success results.
33
36
  */
34
37
  export declare function isSuccess<A>(result: ServiceResult<A>): result is Right<A> & Success<A>;
35
38
  /**
36
- * Alias for {@link mapLeft}
39
+ * Alias for {@link mapLeft}.
40
+ * Note: returns an {@link Either}, not a ServiceResult.
37
41
  */
38
42
  export declare function mapFailure<G>(f: (left: ServiceError) => G): <A>(result: ServiceResult<A>) => Either<G, A>;
39
43
  /**
@@ -11,44 +11,43 @@ exports.fromSafeParseReturnType = fromSafeParseReturnType;
11
11
  const serviceError_1 = require("../errors/serviceError");
12
12
  const either_1 = require("./either");
13
13
  /**
14
- * Alias for {@link right} that duplicates the `right` property to `value` and `isRight` to
15
- * `isSuccess`.
14
+ * Creates a successful ServiceResult.
16
15
  */
17
16
  function success(value) {
18
- const base = (0, either_1.right)(value);
19
- Object.defineProperties(base, {
20
- isSuccess: { get: () => true, enumerable: true },
21
- value: { get: () => base.right, enumerable: true },
17
+ return Object.freeze({
18
+ isRight: true,
19
+ isSuccess: true,
20
+ right: value,
21
+ value,
22
22
  });
23
- return Object.freeze(base);
24
23
  }
25
24
  /**
26
- * Alias for {@link left} that duplicates the `left` property to `error` and `isLeft` to
27
- * `isSuccess`.
25
+ * Creates a failed ServiceResult.
28
26
  */
29
27
  function failure(params) {
30
28
  const error = params instanceof serviceError_1.ServiceError ? params : new serviceError_1.ServiceError(params);
31
- const base = (0, either_1.left)(error);
32
- Object.defineProperties(base, {
33
- isSuccess: { get: () => false, enumerable: true },
34
- error: { get: () => base.left, enumerable: true },
29
+ return Object.freeze({
30
+ isRight: false,
31
+ isSuccess: false,
32
+ left: error,
33
+ error,
35
34
  });
36
- return Object.freeze(base);
37
35
  }
38
36
  /**
39
- * Alias for {@link isLeft}.
37
+ * Type guard for failure results.
40
38
  */
41
39
  function isFailure(result) {
42
40
  return !result.isSuccess;
43
41
  }
44
42
  /**
45
- * Alias for {@link isRight}.
43
+ * Type guard for success results.
46
44
  */
47
45
  function isSuccess(result) {
48
46
  return result.isSuccess;
49
47
  }
50
48
  /**
51
- * Alias for {@link mapLeft}
49
+ * Alias for {@link mapLeft}.
50
+ * Note: returns an {@link Either}, not a ServiceResult.
52
51
  */
53
52
  function mapFailure(f) {
54
53
  return (0, either_1.mapLeft)(f);
@@ -1 +1 @@
1
- {"version":3,"file":"serviceResult.js","sourceRoot":"","sources":["../../../../../../packages/util-ts/src/lib/functional/serviceResult.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serviceResult.js","sourceRoot":"","sources":["../../../../../../packages/util-ts/src/lib/functional/serviceResult.ts"],"names":[],"mappings":";;AA8BA,0BAOC;AAKD,0BAQC;AAKD,8BAIC;AAKD,8BAEC;AAMD,gCAIC;AA+CD,sCASC;AAuCD,4BASC;AAqCD,0DAIC;AA3ND,yDAA+E;AAC/E,qCAAuE;AAwBvE;;GAEG;AACH,SAAgB,OAAO,CAAI,KAAQ;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,KAAK;QACZ,KAAK;KACG,CAAC,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAY,MAAyC;IAC1E,MAAM,KAAK,GAAG,MAAM,YAAY,2BAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,2BAAY,CAAC,MAAM,CAAC,CAAC;IACjF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,KAAK;QAChB,IAAI,EAAE,KAAK;QACX,KAAK;KACG,CAAC,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CACvB,MAAwB;IAExB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAI,MAAwB;IACnD,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CACxB,CAA4B;IAE5B,OAAO,IAAA,gBAAO,EAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACI,KAAK,UAAU,aAAa,CACjC,CAAmB,EACnB,OAAyC;IAEzC,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,SAAgB,QAAQ,CACtB,CAAU,EACV,OAAyC;IAEzC,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,SAAgB,uBAAuB,CACrC,KAAsC;IAEtC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,2BAAY,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAClB,KAAc,EACd,OAAyC;IAEzC,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,YAAY,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,2BAAY,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC"}