@effect-app/infra 0.154.7 → 0.155.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/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 0.155.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 99f79ab: update packages
8
+ - cd25b5f: improve: typed error handling
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies [99f79ab]
13
+ - Updated dependencies [cd25b5f]
14
+ - @effect-app/infra-adapters@0.105.0
15
+ - @effect-app/prelude@0.132.0
16
+ - @effect-app/schema@0.170.0
17
+ - @effect-app/core@0.116.0
18
+
3
19
  ## 0.154.7
4
20
 
5
21
  ### Patch Changes
@@ -12,7 +12,9 @@ var tsplus_module_3 = _interopRequireWildcard(require("@effect/platform/Http/Ser
12
12
  var tsplus_module_4 = _interopRequireWildcard(require("effect/Effect"));
13
13
  var tsplus_module_5 = _interopRequireWildcard(require("effect/Cause"));
14
14
  var tsplus_module_6 = _interopRequireWildcard(require("effect/Schedule"));
15
+ var tsplus_module_7 = _interopRequireWildcard(require("@effect/schema/Parser"));
15
16
  var _errorReporter = require("@effect-app/infra/errorReporter");
17
+ var _errors = require("@effect-app/prelude/client/errors");
16
18
  var _http = require("../http.cjs");
17
19
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
18
20
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -28,7 +30,7 @@ function defaultBasicErrorHandler(_req, res, r2) {
28
30
  const optimisticConcurrencySchedule = tsplus_module_6.once && tsplus_module_6.recurWhile(a => a._tag === "OptimisticConcurrencyException");
29
31
  function defaultErrorHandler(req, res, r2) {
30
32
  const r3 = req.method === "PATCH" ? tsplus_module_4.retry(r2, optimisticConcurrencySchedule) : r2;
31
- const sendError = code => body => tsplus_module_4.sync(() => tsplus_module_3.setBody(tsplus_module_3.setStatus(code)(res), tsplus_module_2.unsafeJson(body)));
33
+ const sendError = (code, schema) => body => tsplus_module_4.andThen(tsplus_module_4.orDie(tsplus_module_7.encode(schema)(body)), body => tsplus_module_3.setBody(tsplus_module_3.setStatus(code)(res), tsplus_module_2.unsafeJson(body)));
32
34
  return tsplus_module_4.catchAll(tsplus_module_4.catchTags(tsplus_module_4.tapErrorCause(r3, cause => tsplus_module_5.isFailure(cause) ? logRequestError(cause) : tsplus_module_4.unit), {
33
35
  "JWTError": err => tsplus_module_4.succeed(tsplus_module_3.unsafeJson({
34
36
  message: err.error.message
@@ -36,13 +38,13 @@ function defaultErrorHandler(req, res, r2) {
36
38
  status: err.error.status,
37
39
  headers: _http.HttpHeaders.fromInput(err.error.headers)
38
40
  })),
39
- "ValidationError": err => sendError(400)(err.errors),
40
- "NotFoundError": sendError(404),
41
- "NotLoggedInError": sendError(401),
42
- "UnauthorizedError": sendError(403),
43
- "InvalidStateError": sendError(422),
41
+ "ValidationError": sendError(400, _errors.ValidationError),
42
+ "NotFoundError": sendError(404, _errors.NotFoundError),
43
+ "NotLoggedInError": sendError(401, _errors.NotLoggedInError),
44
+ "UnauthorizedError": sendError(403, _errors.UnauthorizedError),
45
+ "InvalidStateError": sendError(422, _errors.InvalidStateError),
44
46
  // 412 or 409.. https://stackoverflow.com/questions/19122088/which-http-status-code-to-use-to-reject-a-put-due-to-optimistic-locking-failure
45
- "OptimisticConcurrencyException": sendError(412)
47
+ "OptimisticConcurrencyException": sendError(412, _errors.OptimisticConcurrencyException)
46
48
  })
47
49
  // final catch all; expecting never so that unhandled known errors will show up
48
50
  , err => tsplus_module_4.flatMap(tsplus_module_4.map(tsplus_module_4.logError("Program error, compiler probably silenced, got an unsupported Error in Error Channel of Effect" + err), () => err), tsplus_module_4.die));
@@ -1 +1 @@
1
- {"version":3,"file":"defaultErrorHandler.cjs","names":["_errorReporter","require","_http","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","JWTError","tsplus_module_1","TaggedClass","exports","logRequestError","logError","defaultBasicErrorHandler","_req","res","r2","sendError","code","body","tsplus_module_4","sync","tsplus_module_3","setStatus","setBody","tsplus_module_2","unsafeJson","catchAll","catchTag","tapErrorCause","cause","tsplus_module_5","isFailure","unit","err","errors","flatMap","map","die","optimisticConcurrencySchedule","tsplus_module_6","once","recurWhile","_tag","defaultErrorHandler","req","r3","method","retry","catchTags","succeed","message","error","status","headers","HttpHeaders","fromInput"],"sources":["../../../_src/api/routing/defaultErrorHandler.ts"],"sourcesContent":[null],"mappings":"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"}
1
+ {"version":3,"file":"defaultErrorHandler.cjs","names":["_errorReporter","require","_errors","_http","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","JWTError","tsplus_module_1","TaggedClass","exports","logRequestError","logError","defaultBasicErrorHandler","_req","res","r2","sendError","code","body","tsplus_module_4","sync","tsplus_module_3","setStatus","setBody","tsplus_module_2","unsafeJson","catchAll","catchTag","tapErrorCause","cause","tsplus_module_5","isFailure","unit","err","errors","flatMap","map","die","optimisticConcurrencySchedule","tsplus_module_6","once","recurWhile","_tag","defaultErrorHandler","req","r3","method","retry","schema","andThen","orDie","tsplus_module_7","encode","catchTags","succeed","message","error","status","headers","HttpHeaders","fromInput","ValidationError","NotFoundError","NotLoggedInError","UnauthorizedError","InvalidStateError","OptimisticConcurrencyException"],"sources":["../../../_src/api/routing/defaultErrorHandler.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -1,5 +1,13 @@
1
1
  import { logError } from "@effect-app/infra/errorReporter"
2
- import type { SupportedErrors, ValidationError } from "@effect-app/prelude/client/errors"
2
+ import type { SupportedErrors } from "@effect-app/prelude/client/errors"
3
+ import {
4
+ InvalidStateError,
5
+ NotFoundError,
6
+ NotLoggedInError,
7
+ OptimisticConcurrencyException,
8
+ UnauthorizedError,
9
+ ValidationError
10
+ } from "@effect-app/prelude/client/errors"
3
11
  import { HttpBody, HttpHeaders, type HttpServerRequest, type HttpServerResponse } from "../http.js"
4
12
 
5
13
  import type {
@@ -24,7 +32,8 @@ export function defaultBasicErrorHandler<R>(
24
32
  res: HttpServerResponse,
25
33
  r2: Effect<R, ValidationError, HttpServerResponse>
26
34
  ) {
27
- const sendError = (code: number) => (body: unknown) => Effect.sync(() => res.setBody(HttpBody.unsafeJson(body)).setStatus(code))
35
+ const sendError = (code: number) => (body: unknown) =>
36
+ Effect.sync(() => res.setBody(HttpBody.unsafeJson(body)).setStatus(code))
28
37
  return r2
29
38
  .tapErrorCause((cause) => cause.isFailure() ? logRequestError(cause) : Effect.unit)
30
39
  .catchTag("ValidationError", (err) => sendError(400)(err.errors))
@@ -50,7 +59,15 @@ export function defaultErrorHandler<R>(
50
59
  const r3 = req.method === "PATCH"
51
60
  ? r2.retry(optimisticConcurrencySchedule)
52
61
  : r2
53
- const sendError = (code: number) => (body: unknown) => Effect.sync(() => res.setStatus(code).setBody(HttpBody.unsafeJson(body)))
62
+ const sendError = <R, From, To>(code: number, schema: Schema<R, From, To>) => (body: To) =>
63
+ schema
64
+ .encode(body)
65
+ .orDie
66
+ .andThen((body) =>
67
+ res
68
+ .setStatus(code)
69
+ .setBody(HttpBody.unsafeJson(body))
70
+ )
54
71
  return r3
55
72
  .tapErrorCause((cause) => cause.isFailure() ? logRequestError(cause) : Effect.unit)
56
73
  .catchTags({
@@ -63,13 +80,13 @@ export function defaultErrorHandler<R>(
63
80
  headers: HttpHeaders.fromInput(err.error.headers)
64
81
  })
65
82
  ),
66
- "ValidationError": (err) => sendError(400)(err.errors),
67
- "NotFoundError": sendError(404),
68
- "NotLoggedInError": sendError(401),
69
- "UnauthorizedError": sendError(403),
70
- "InvalidStateError": sendError(422),
83
+ "ValidationError": sendError(400, ValidationError),
84
+ "NotFoundError": sendError(404, NotFoundError),
85
+ "NotLoggedInError": sendError(401, NotLoggedInError),
86
+ "UnauthorizedError": sendError(403, UnauthorizedError),
87
+ "InvalidStateError": sendError(422, InvalidStateError),
71
88
  // 412 or 409.. https://stackoverflow.com/questions/19122088/which-http-status-code-to-use-to-reject-a-put-due-to-optimistic-locking-failure
72
- "OptimisticConcurrencyException": sendError(412)
89
+ "OptimisticConcurrencyException": sendError(412, OptimisticConcurrencyException)
73
90
  })
74
91
  // final catch all; expecting never so that unhandled known errors will show up
75
92
  .catchAll((err: never) =>
@@ -1,6 +1,8 @@
1
1
  import { Data } from "effect/Data";
2
2
  import { Effect } from "effect/Effect";
3
- import type { SupportedErrors, ValidationError } from "@effect-app/prelude/client/errors";
3
+ import { Schema } from "@effect-app/prelude/schema";
4
+ import type { SupportedErrors } from "@effect-app/prelude/client/errors";
5
+ import { ValidationError } from "@effect-app/prelude/client/errors";
4
6
  import { type HttpServerRequest, type HttpServerResponse } from "../http.js";
5
7
  import type { InsufficientScopeError, InvalidRequestError, InvalidTokenError, UnauthorizedError as JWTUnauthorizedError } from "express-oauth2-jwt-bearer";
6
8
  declare const JWTError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<Omit<A, keyof import("effect/Equal").Equal>, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" | keyof import("effect/Equal").Equal ? never : P]: A[P]; }) => import("effect/Data").Data<Readonly<A> & {
@@ -1 +1 @@
1
- {"version":3,"file":"defaultErrorHandler.d.ts","sourceRoot":"","sources":["../../../_src/api/routing/defaultErrorHandler.ts"],"names":[],"mappings":";;AACA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACzF,OAAO,EAAyB,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEnG,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,IAAI,oBAAoB,EAC1C,MAAM,2BAA2B,CAAA;;;;AAElC,qBAAa,QAAS,SAAQ,cAA6B;IACzD,KAAK,EACD,sBAAsB,GACtB,mBAAmB,GACnB,iBAAiB,GACjB,oBAAoB,CAAA;CACzB,CAAC;CAAG;AAIL,wBAAgB,wBAAwB,CAAC,CAAC,EACxC,IAAI,EAAE,iBAAiB,EACvB,GAAG,EAAE,kBAAkB,EACvB,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,EAAE,kBAAkB,CAAC,gEAenD;AAKD,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,GAAG,EAAE,iBAAiB,EACtB,GAAG,EAAE,kBAAkB,EACvB,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,GAAG,QAAQ,EAAE,kBAAkB,CAAC,gEAmC9D"}
1
+ {"version":3,"file":"defaultErrorHandler.d.ts","sourceRoot":"","sources":["../../../_src/api/routing/defaultErrorHandler.ts"],"names":[],"mappings":";;;AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAML,eAAe,EAChB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAyB,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEnG,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,IAAI,oBAAoB,EAC1C,MAAM,2BAA2B,CAAA;;;;AAElC,qBAAa,QAAS,SAAQ,cAA6B;IACzD,KAAK,EACD,sBAAsB,GACtB,mBAAmB,GACnB,iBAAiB,GACjB,oBAAoB,CAAA;CACzB,CAAC;CAAG;AAIL,wBAAgB,wBAAwB,CAAC,CAAC,EACxC,IAAI,EAAE,iBAAiB,EACvB,GAAG,EAAE,kBAAkB,EACvB,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,EAAE,kBAAkB,CAAC,gEAgBnD;AAKD,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,GAAG,EAAE,iBAAiB,EACtB,GAAG,EAAE,kBAAkB,EACvB,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,GAAG,QAAQ,EAAE,kBAAkB,CAAC,gEA2C9D"}
@@ -4,7 +4,9 @@ import * as tsplus_module_3 from "@effect/platform/Http/ServerResponse";
4
4
  import * as tsplus_module_4 from "effect/Effect";
5
5
  import * as tsplus_module_5 from "effect/Cause";
6
6
  import * as tsplus_module_6 from "effect/Schedule";
7
+ import * as tsplus_module_7 from "@effect/schema/Parser";
7
8
  import { logError } from "@effect-app/infra/errorReporter";
9
+ import { InvalidStateError, NotFoundError, NotLoggedInError, OptimisticConcurrencyException, UnauthorizedError, ValidationError } from "@effect-app/prelude/client/errors";
8
10
  import { HttpHeaders } from "../http.js";
9
11
  export class JWTError extends tsplus_module_1.TaggedClass("JWTError") {
10
12
  }
@@ -20,7 +22,7 @@ export function defaultErrorHandler(req, res, r2) {
20
22
  const r3 = req.method === "PATCH"
21
23
  ? tsplus_module_4.retry(r2, optimisticConcurrencySchedule)
22
24
  : r2;
23
- const sendError = (code) => (body) => tsplus_module_4.sync(() => tsplus_module_3.setBody(tsplus_module_3.setStatus(code)(res), tsplus_module_2.unsafeJson(body)));
25
+ const sendError = (code, schema) => (body) => tsplus_module_4.andThen(tsplus_module_4.orDie(tsplus_module_7.encode(schema)(body)), (body) => tsplus_module_3.setBody(tsplus_module_3.setStatus(code)(res), tsplus_module_2.unsafeJson(body)));
24
26
  return tsplus_module_4.catchAll(tsplus_module_4.catchTags(tsplus_module_4.tapErrorCause(r3, (cause) => tsplus_module_5.isFailure(cause) ? logRequestError(cause) : tsplus_module_4.unit), {
25
27
  "JWTError": (err) => tsplus_module_4.succeed(tsplus_module_3.unsafeJson({ message: err.error.message }, {
26
28
  status: err
@@ -28,15 +30,15 @@ export function defaultErrorHandler(req, res, r2) {
28
30
  .status,
29
31
  headers: HttpHeaders.fromInput(err.error.headers)
30
32
  })),
31
- "ValidationError": (err) => sendError(400)(err.errors),
32
- "NotFoundError": sendError(404),
33
- "NotLoggedInError": sendError(401),
34
- "UnauthorizedError": sendError(403),
35
- "InvalidStateError": sendError(422),
33
+ "ValidationError": sendError(400, ValidationError),
34
+ "NotFoundError": sendError(404, NotFoundError),
35
+ "NotLoggedInError": sendError(401, NotLoggedInError),
36
+ "UnauthorizedError": sendError(403, UnauthorizedError),
37
+ "InvalidStateError": sendError(422, InvalidStateError),
36
38
  // 412 or 409.. https://stackoverflow.com/questions/19122088/which-http-status-code-to-use-to-reject-a-put-due-to-optimistic-locking-failure
37
- "OptimisticConcurrencyException": sendError(412)
39
+ "OptimisticConcurrencyException": sendError(412, OptimisticConcurrencyException)
38
40
  })
39
41
  // final catch all; expecting never so that unhandled known errors will show up
40
42
  , (err) => tsplus_module_4.flatMap(tsplus_module_4.map(tsplus_module_4.logError("Program error, compiler probably silenced, got an unsupported Error in Error Channel of Effect" + err), () => err), tsplus_module_4.die));
41
43
  }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdEVycm9ySGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvYXBpL3JvdXRpbmcvZGVmYXVsdEVycm9ySGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFFMUQsT0FBTyxFQUFZLFdBQVcsRUFBbUQsTUFBTSxZQUFZLENBQUE7QUFTbkcsTUFBTSxPQUFPLFFBQVMsU0FBUSw0QkFBaUIsVUFBVSxDQU12RDtDQUFHO0FBRUwsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBRTNDLE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsSUFBdUIsRUFDdkIsR0FBdUIsRUFDdkIsRUFBa0Q7SUFFbEQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBYSxFQUFFLEVBQUUsQ0FBQyxxQkFBWSxHQUFHLEVBQUUsQ0FBQywwQkFBaUQsSUFBSSxFQUFyRCx3QkFBQSxHQUFHLEVBQVMsMkJBQW9CLElBQUksQ0FBQyxDQUFDLENBQWdCLENBQUMsQ0FBQTtJQUNoSSxPQUFPLHlCQUFBLHlCQUFBLDhCQUFBLEVBQUUsRUFDUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsMEJBQUEsS0FBSyxDQUFZLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFZLENBQUMsRUFDekUsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakUsK0VBQStFO01BQ3JFLENBQUMsR0FBVSxFQUFFLEVBQUUsQ0FDdkIsd0JBQUEsb0JBQUEseUJBRUksZ0dBQWdHLEdBQUcsR0FBRyxDQUN2RyxFQUNJLEdBQUcsRUFBRSxDQUFDLEdBQWMsQ0FBQyxzQkFDTixDQUN2QixDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sNkJBQTZCLEdBQUcsd0JBQ2pDLDJCQUFnRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBRXhHLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsR0FBc0IsRUFDdEIsR0FBdUIsRUFDdkIsRUFBNkQ7SUFFN0QsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sS0FBSyxPQUFPO1FBQy9CLENBQUMsQ0FBQyxzQkFBQSxFQUFFLEVBQU8sNkJBQTZCLENBQUM7UUFDekMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNOLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQUMscUJBQVksR0FBRyxFQUFFLENBQUMsd0JBQUEsMEJBQWMsSUFBSSxFQUFsQixHQUFHLENBQWdCLEVBQVMsMkJBQW9CLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNoSSxPQUFPLHlCQUFBLDBCQUFBLDhCQUFBLEVBQUUsRUFDUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsMEJBQUEsS0FBSyxDQUFZLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFZLENBQUMsRUFDeEU7UUFDVCxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNsQix3QkFDRSwyQkFBOEIsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM1RCxNQUFNLEVBQUUsR0FBRztpQkFDUixLQUFLO2lCQUNMLE1BQU07WUFDVCxPQUFPLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztTQUNsRCxDQUFDLENBQ0g7UUFDSCxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDdEQsZUFBZSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFDL0Isa0JBQWtCLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUNsQyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDO1FBQ25DLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFDbkMsNElBQTRJO1FBQzVJLGdDQUFnQyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7S0FDakQsQ0FBQztJQUNGLCtFQUErRTtNQUNyRSxDQUFDLEdBQVUsRUFBRSxFQUFFLENBQ3ZCLHdCQUFBLG9CQUFBLHlCQUVJLGdHQUFnRyxHQUFHLEdBQUcsQ0FDdkcsRUFDSSxHQUFHLEVBQUUsQ0FBQyxHQUFjLENBQUMsc0JBQ04sQ0FDdkIsQ0FBQTtBQUNMLENBQUMifQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdEVycm9ySGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvYXBpL3JvdXRpbmcvZGVmYXVsdEVycm9ySGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBRTFELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQiw4QkFBOEIsRUFDOUIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDaEIsTUFBTSxtQ0FBbUMsQ0FBQTtBQUMxQyxPQUFPLEVBQVksV0FBVyxFQUFtRCxNQUFNLFlBQVksQ0FBQTtBQVNuRyxNQUFNLE9BQU8sUUFBUyxTQUFRLDRCQUFpQixVQUFVLENBTXZEO0NBQUc7QUFFTCxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUE7QUFFM0MsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxJQUF1QixFQUN2QixHQUF1QixFQUN2QixFQUFrRDtJQUVsRCxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFhLEVBQUUsRUFBRSxDQUNwRCxxQkFBWSxHQUFHLEVBQUUsQ0FBQywwQkFBaUQsSUFBSSxFQUFyRCx3QkFBQSxHQUFHLEVBQVMsMkJBQW9CLElBQUksQ0FBQyxDQUFDLENBQWdCLENBQUMsQ0FBQTtJQUMzRSxPQUFPLHlCQUFBLHlCQUFBLDhCQUFBLEVBQUUsRUFDUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsMEJBQUEsS0FBSyxDQUFZLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFZLENBQUMsRUFDekUsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakUsK0VBQStFO01BQ3JFLENBQUMsR0FBVSxFQUFFLEVBQUUsQ0FDdkIsd0JBQUEsb0JBQUEseUJBRUksZ0dBQWdHLEdBQUcsR0FBRyxDQUN2RyxFQUNJLEdBQUcsRUFBRSxDQUFDLEdBQWMsQ0FBQyxzQkFDTixDQUN2QixDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sNkJBQTZCLEdBQUcsd0JBQ2pDLDJCQUFnRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBRXhHLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsR0FBc0IsRUFDdEIsR0FBdUIsRUFDdkIsRUFBNkQ7SUFFN0QsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sS0FBSyxPQUFPO1FBQy9CLENBQUMsQ0FBQyxzQkFBQSxFQUFFLEVBQU8sNkJBQTZCLENBQUM7UUFDekMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNOLE1BQU0sU0FBUyxHQUFHLENBQWMsSUFBWSxFQUFFLE1BQTJCLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBUSxFQUFFLEVBQUUsQ0FDekYsOENBQUEsdUJBQUEsTUFBTSxFQUNJLElBQUksQ0FBQyxHQUVKLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDaEIsd0JBQUEsMEJBQ2EsSUFBSSxFQURqQixHQUFHLENBQ2UsRUFDUCwyQkFBb0IsSUFBSSxDQUFDLENBQUMsQ0FDdEMsQ0FBQTtJQUNMLE9BQU8seUJBQUEsMEJBQUEsOEJBQUEsRUFBRSxFQUNRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQywwQkFBQSxLQUFLLENBQVksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMscUJBQVksQ0FBQyxFQUN4RTtRQUNULFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ2xCLHdCQUNFLDJCQUE4QixFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzVELE1BQU0sRUFBRSxHQUFHO2lCQUNSLEtBQUs7aUJBQ0wsTUFBTTtZQUNULE9BQU8sRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQ2xELENBQUMsQ0FDSDtRQUNILGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDO1FBQ2xELGVBQWUsRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQztRQUM5QyxrQkFBa0IsRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDO1FBQ3BELG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUM7UUFDdEQsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQztRQUN0RCw0SUFBNEk7UUFDNUksZ0NBQWdDLEVBQUUsU0FBUyxDQUFDLEdBQUcsRUFBRSw4QkFBOEIsQ0FBQztLQUNqRixDQUFDO0lBQ0YsK0VBQStFO01BQ3JFLENBQUMsR0FBVSxFQUFFLEVBQUUsQ0FDdkIsd0JBQUEsb0JBQUEseUJBRUksZ0dBQWdHLEdBQUcsR0FBRyxDQUN2RyxFQUNJLEdBQUcsRUFBRSxDQUFDLEdBQWMsQ0FBQyxzQkFDTixDQUN2QixDQUFBO0FBQ0wsQ0FBQyJ9
@@ -12,16 +12,16 @@ export declare function createContext<TKey extends string, EA, A extends DBRecor
12
12
  };
13
13
  declare const RedisSerializedDBRecord_base: S.Class<never, {
14
14
  readonly data: string;
15
- readonly version: string;
16
15
  readonly timestamp: string;
16
+ readonly version: string;
17
17
  }, {
18
18
  readonly data: string;
19
- readonly version: string;
20
19
  readonly timestamp: Date;
20
+ readonly version: string;
21
21
  }, {
22
22
  readonly data: string;
23
- readonly version: string;
24
23
  readonly timestamp: Date;
24
+ readonly version: string;
25
25
  }, RedisSerializedDBRecord, {
26
26
  version: S.Schema<never, string, string>;
27
27
  timestamp: S.Schema<never, string, Date>;
@@ -39,16 +39,16 @@ export interface DBRecord<TKey extends string> {
39
39
  }
40
40
  declare const SerializedDBRecord_base: S.Class<never, {
41
41
  readonly data: string;
42
- readonly version: string;
43
42
  readonly timestamp: string;
43
+ readonly version: string;
44
44
  }, {
45
45
  readonly data: string;
46
- readonly version: string;
47
46
  readonly timestamp: Date;
47
+ readonly version: string;
48
48
  }, {
49
49
  readonly data: string;
50
- readonly version: string;
51
50
  readonly timestamp: Date;
51
+ readonly version: string;
52
52
  }, SerializedDBRecord, {
53
53
  version: S.Schema<never, string, string>;
54
54
  timestamp: S.Schema<never, string, Date>;
@@ -58,12 +58,12 @@ export declare class SerializedDBRecord extends SerializedDBRecord_base {
58
58
  }
59
59
  export declare function makeSerialisedDBRecord(s: Schema<never, any>): S.Schema<never, {
60
60
  readonly data: any;
61
- readonly version: number;
62
61
  readonly timestamp: string;
62
+ readonly version: number;
63
63
  }, {
64
64
  readonly data: any;
65
- readonly version: number;
66
65
  readonly timestamp: Date;
66
+ readonly version: number;
67
67
  }>;
68
68
  export interface CachedRecord<T> {
69
69
  version: string;
package/package.json CHANGED
@@ -1,30 +1,30 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "0.154.7",
3
+ "version": "0.155.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
7
7
  "@azure/cosmos": "^4.0.0",
8
8
  "@azure/service-bus": "^7.9.3",
9
- "@effect/platform": "^0.43.3",
10
- "@effect/schema": "npm:@effect-app/schema-fork@0.0.0-20240127162054",
9
+ "@effect/platform": "^0.43.4",
10
+ "@effect/schema": "npm:@effect-app/schema-fork@0.0.0-20240129113320",
11
11
  "express-oauth2-jwt-bearer": "^1.6.0",
12
12
  "@faker-js/faker": "^8.4.0",
13
13
  "@sendgrid/helpers": "^8.0.0",
14
14
  "@sendgrid/mail": "^8.1.0",
15
15
  "change-case": "^5.4.2",
16
16
  "cross-fetch": "^4.0.0",
17
- "effect": "^2.2.2",
17
+ "effect": "^2.2.3",
18
18
  "fast-check": "~3.15.0",
19
19
  "object-hash": "^3.0.0",
20
20
  "path-parser": "^6.1.0",
21
21
  "proper-lockfile": "^4.1.2",
22
22
  "pure-rand": "6.0.4",
23
23
  "redlock": "^4.2.0",
24
- "@effect-app/prelude": "0.131.0",
25
- "@effect-app/infra-adapters": "0.104.13",
26
- "@effect-app/schema": "0.169.3",
27
- "@effect-app/core": "0.115.0"
24
+ "@effect-app/core": "0.116.0",
25
+ "@effect-app/schema": "0.170.0",
26
+ "@effect-app/infra-adapters": "0.105.0",
27
+ "@effect-app/prelude": "0.132.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@babel/cli": "^7.23.9",