@effect/platform 0.62.0 → 0.62.1

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.
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.toResponseOrElse = exports.toResponse = exports.symbol = exports.isRespondable = void 0;
7
7
  var ParseResult = _interopRequireWildcard(require("@effect/schema/ParseResult"));
8
+ var Cause = _interopRequireWildcard(require("effect/Cause"));
8
9
  var Effect = _interopRequireWildcard(require("effect/Effect"));
9
10
  var _Predicate = require("effect/Predicate");
10
11
  var ServerResponse = _interopRequireWildcard(require("./HttpServerResponse.js"));
@@ -28,6 +29,9 @@ exports.isRespondable = isRespondable;
28
29
  const badRequest = /*#__PURE__*/ServerResponse.empty({
29
30
  status: 400
30
31
  });
32
+ const notFound = /*#__PURE__*/ServerResponse.empty({
33
+ status: 404
34
+ });
31
35
  /**
32
36
  * @since 1.0.0
33
37
  * @category accessors
@@ -51,6 +55,8 @@ const toResponseOrElse = (u, orElse) => {
51
55
  // add support for some commmon types
52
56
  } else if (ParseResult.isParseError(u)) {
53
57
  return Effect.succeed(badRequest);
58
+ } else if (Cause.isNoSuchElementException(u)) {
59
+ return Effect.succeed(notFound);
54
60
  }
55
61
  return Effect.succeed(orElse);
56
62
  };
@@ -1 +1 @@
1
- {"version":3,"file":"HttpServerRespondable.js","names":["ParseResult","_interopRequireWildcard","require","Effect","_Predicate","ServerResponse","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","symbol","exports","Symbol","for","isRespondable","hasProperty","badRequest","empty","status","toResponse","self","isServerResponse","succeed","orDie","toResponseOrElse","orElse","catchAllCause","isParseError"],"sources":["../../src/HttpServerRespondable.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"HttpServerRespondable.js","names":["ParseResult","_interopRequireWildcard","require","Cause","Effect","_Predicate","ServerResponse","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","symbol","exports","Symbol","for","isRespondable","hasProperty","badRequest","empty","status","notFound","toResponse","self","isServerResponse","succeed","orDie","toResponseOrElse","orElse","catchAllCause","isParseError","isNoSuchElementException"],"sources":["../../src/HttpServerRespondable.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"HttpServerRespondable.d.ts","sourceRoot":"","sources":["../../src/HttpServerRespondable.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAGjE;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,MAA6D,CAAA;AAEzF;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;CACpE;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,MAAO,OAAO,KAAG,CAAC,IAAI,WAAqC,CAAA;AAIrF;;;GAGG;AACH,eAAO,MAAM,UAAU,SAAU,WAAW,KAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAK9E,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,MAAO,OAAO,UAAU,kBAAkB,KAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAUzG,CAAA"}
1
+ {"version":3,"file":"HttpServerRespondable.d.ts","sourceRoot":"","sources":["../../src/HttpServerRespondable.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAGjE;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,MAA6D,CAAA;AAEzF;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;CACpE;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,MAAO,OAAO,KAAG,CAAC,IAAI,WAAqC,CAAA;AAKrF;;;GAGG;AACH,eAAO,MAAM,UAAU,SAAU,WAAW,KAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAK9E,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,MAAO,OAAO,UAAU,kBAAkB,KAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAYzG,CAAA"}
@@ -2,6 +2,7 @@
2
2
  * @since 1.0.0
3
3
  */
4
4
  import * as ParseResult from "@effect/schema/ParseResult";
5
+ import * as Cause from "effect/Cause";
5
6
  import * as Effect from "effect/Effect";
6
7
  import { hasProperty } from "effect/Predicate";
7
8
  import * as ServerResponse from "./HttpServerResponse.js";
@@ -18,6 +19,9 @@ export const isRespondable = u => hasProperty(u, symbol);
18
19
  const badRequest = /*#__PURE__*/ServerResponse.empty({
19
20
  status: 400
20
21
  });
22
+ const notFound = /*#__PURE__*/ServerResponse.empty({
23
+ status: 404
24
+ });
21
25
  /**
22
26
  * @since 1.0.0
23
27
  * @category accessors
@@ -40,6 +44,8 @@ export const toResponseOrElse = (u, orElse) => {
40
44
  // add support for some commmon types
41
45
  } else if (ParseResult.isParseError(u)) {
42
46
  return Effect.succeed(badRequest);
47
+ } else if (Cause.isNoSuchElementException(u)) {
48
+ return Effect.succeed(notFound);
43
49
  }
44
50
  return Effect.succeed(orElse);
45
51
  };
@@ -1 +1 @@
1
- {"version":3,"file":"HttpServerRespondable.js","names":["ParseResult","Effect","hasProperty","ServerResponse","symbol","Symbol","for","isRespondable","u","badRequest","empty","status","toResponse","self","isServerResponse","succeed","orDie","toResponseOrElse","orElse","catchAllCause","isParseError"],"sources":["../../src/HttpServerRespondable.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,WAAW,MAAM,4BAA4B;AACzD,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,WAAW,QAAQ,kBAAkB;AAE9C,OAAO,KAAKC,cAAc,MAAM,yBAAyB;AAEzD;;;;AAIA,OAAO,MAAMC,MAAM,gBAAkBC,MAAM,CAACC,GAAG,CAAC,wCAAwC,CAAC;AAUzF;;;;AAIA,OAAO,MAAMC,aAAa,GAAIC,CAAU,IAAuBN,WAAW,CAACM,CAAC,EAAEJ,MAAM,CAAC;AAErF,MAAMK,UAAU,gBAAGN,cAAc,CAACO,KAAK,CAAC;EAAEC,MAAM,EAAE;AAAG,CAAE,CAAC;AAExD;;;;AAIA,OAAO,MAAMC,UAAU,GAAIC,IAAiB,IAAuC;EACjF,IAAIV,cAAc,CAACW,gBAAgB,CAACD,IAAI,CAAC,EAAE;IACzC,OAAOZ,MAAM,CAACc,OAAO,CAACF,IAAI,CAAC;EAC7B;EACA,OAAOZ,MAAM,CAACe,KAAK,CAACH,IAAI,CAACT,MAAM,CAAC,EAAE,CAAC;AACrC,CAAC;AAED;;;;AAIA,OAAO,MAAMa,gBAAgB,GAAGA,CAACT,CAAU,EAAEU,MAA0B,KAAuC;EAC5G,IAAIf,cAAc,CAACW,gBAAgB,CAACN,CAAC,CAAC,EAAE;IACtC,OAAOP,MAAM,CAACc,OAAO,CAACP,CAAC,CAAC;EAC1B,CAAC,MAAM,IAAID,aAAa,CAACC,CAAC,CAAC,EAAE;IAC3B,OAAOP,MAAM,CAACkB,aAAa,CAACX,CAAC,CAACJ,MAAM,CAAC,EAAE,EAAE,MAAMH,MAAM,CAACc,OAAO,CAACG,MAAM,CAAC,CAAC;IACtE;EACF,CAAC,MAAM,IAAIlB,WAAW,CAACoB,YAAY,CAACZ,CAAC,CAAC,EAAE;IACtC,OAAOP,MAAM,CAACc,OAAO,CAACN,UAAU,CAAC;EACnC;EACA,OAAOR,MAAM,CAACc,OAAO,CAACG,MAAM,CAAC;AAC/B,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"HttpServerRespondable.js","names":["ParseResult","Cause","Effect","hasProperty","ServerResponse","symbol","Symbol","for","isRespondable","u","badRequest","empty","status","notFound","toResponse","self","isServerResponse","succeed","orDie","toResponseOrElse","orElse","catchAllCause","isParseError","isNoSuchElementException"],"sources":["../../src/HttpServerRespondable.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,WAAW,MAAM,4BAA4B;AACzD,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,WAAW,QAAQ,kBAAkB;AAE9C,OAAO,KAAKC,cAAc,MAAM,yBAAyB;AAEzD;;;;AAIA,OAAO,MAAMC,MAAM,gBAAkBC,MAAM,CAACC,GAAG,CAAC,wCAAwC,CAAC;AAUzF;;;;AAIA,OAAO,MAAMC,aAAa,GAAIC,CAAU,IAAuBN,WAAW,CAACM,CAAC,EAAEJ,MAAM,CAAC;AAErF,MAAMK,UAAU,gBAAGN,cAAc,CAACO,KAAK,CAAC;EAAEC,MAAM,EAAE;AAAG,CAAE,CAAC;AACxD,MAAMC,QAAQ,gBAAGT,cAAc,CAACO,KAAK,CAAC;EAAEC,MAAM,EAAE;AAAG,CAAE,CAAC;AAEtD;;;;AAIA,OAAO,MAAME,UAAU,GAAIC,IAAiB,IAAuC;EACjF,IAAIX,cAAc,CAACY,gBAAgB,CAACD,IAAI,CAAC,EAAE;IACzC,OAAOb,MAAM,CAACe,OAAO,CAACF,IAAI,CAAC;EAC7B;EACA,OAAOb,MAAM,CAACgB,KAAK,CAACH,IAAI,CAACV,MAAM,CAAC,EAAE,CAAC;AACrC,CAAC;AAED;;;;AAIA,OAAO,MAAMc,gBAAgB,GAAGA,CAACV,CAAU,EAAEW,MAA0B,KAAuC;EAC5G,IAAIhB,cAAc,CAACY,gBAAgB,CAACP,CAAC,CAAC,EAAE;IACtC,OAAOP,MAAM,CAACe,OAAO,CAACR,CAAC,CAAC;EAC1B,CAAC,MAAM,IAAID,aAAa,CAACC,CAAC,CAAC,EAAE;IAC3B,OAAOP,MAAM,CAACmB,aAAa,CAACZ,CAAC,CAACJ,MAAM,CAAC,EAAE,EAAE,MAAMH,MAAM,CAACe,OAAO,CAACG,MAAM,CAAC,CAAC;IACtE;EACF,CAAC,MAAM,IAAIpB,WAAW,CAACsB,YAAY,CAACb,CAAC,CAAC,EAAE;IACtC,OAAOP,MAAM,CAACe,OAAO,CAACP,UAAU,CAAC;EACnC,CAAC,MAAM,IAAIT,KAAK,CAACsB,wBAAwB,CAACd,CAAC,CAAC,EAAE;IAC5C,OAAOP,MAAM,CAACe,OAAO,CAACJ,QAAQ,CAAC;EACjC;EACA,OAAOX,MAAM,CAACe,OAAO,CAACG,MAAM,CAAC;AAC/B,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform",
3
- "version": "0.62.0",
3
+ "version": "0.62.1",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -2,6 +2,7 @@
2
2
  * @since 1.0.0
3
3
  */
4
4
  import * as ParseResult from "@effect/schema/ParseResult"
5
+ import * as Cause from "effect/Cause"
5
6
  import * as Effect from "effect/Effect"
6
7
  import { hasProperty } from "effect/Predicate"
7
8
  import type { HttpServerResponse } from "./HttpServerResponse.js"
@@ -28,6 +29,7 @@ export interface Respondable {
28
29
  export const isRespondable = (u: unknown): u is Respondable => hasProperty(u, symbol)
29
30
 
30
31
  const badRequest = ServerResponse.empty({ status: 400 })
32
+ const notFound = ServerResponse.empty({ status: 404 })
31
33
 
32
34
  /**
33
35
  * @since 1.0.0
@@ -52,6 +54,8 @@ export const toResponseOrElse = (u: unknown, orElse: HttpServerResponse): Effect
52
54
  // add support for some commmon types
53
55
  } else if (ParseResult.isParseError(u)) {
54
56
  return Effect.succeed(badRequest)
57
+ } else if (Cause.isNoSuchElementException(u)) {
58
+ return Effect.succeed(notFound)
55
59
  }
56
60
  return Effect.succeed(orElse)
57
61
  }