@effect-app/infra 4.0.0-beta.320 → 4.0.0-beta.322

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,19 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 4.0.0-beta.322
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [2231ef8]
8
+ - effect-app@4.0.0-beta.322
9
+
10
+ ## 4.0.0-beta.321
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [18bae5b]
15
+ - effect-app@4.0.0-beta.321
16
+
3
17
  ## 4.0.0-beta.320
4
18
 
5
19
  ### Patch Changes
package/dist/CUPS.js CHANGED
@@ -88,7 +88,7 @@ function* buildListArgs(config) {
88
88
  }
89
89
  export const CUPSConfig = Config.all({
90
90
  server: Config
91
- .string("server")
91
+ .String("server")
92
92
  .pipe(Config.map((s) => new URL(s)), Config.option, Config.nested("cups"))
93
93
  });
94
94
  export class CUPS extends Context.Service()("effect-app/CUPS", {
@@ -31,7 +31,9 @@ export declare const makeMessageStorage: (options?: {
31
31
  }) => Effect.Effect<Option.Option<Snowflake.Snowflake>, PersistenceError, never>;
32
32
  readonly registerReplyHandler: <R extends import("effect/unstable/rpc/Rpc").Any>(message: import("effect/unstable/cluster/Message").OutgoingRequest<R> | import("effect/unstable/cluster/Message").IncomingRequest<R>) => Effect.Effect<void, import("effect/unstable/cluster/ClusterError").EntityNotAssignedToRunner, never>;
33
33
  readonly unregisterReplyHandler: (requestId: Snowflake.Snowflake) => Effect.Effect<void, never, never>;
34
- readonly unregisterShardReplyHandlers: (shardId: ShardId.ShardId) => Effect.Effect<void, never, never>;
34
+ readonly unregisterShardReplyHandlers: (shardId: ShardId.ShardId, options?: {
35
+ readonly interrupt?: boolean | undefined;
36
+ }) => Effect.Effect<void, never, never>;
35
37
  readonly unprocessedMessages: (shardIds: Iterable<ShardId.ShardId>, options?: {
36
38
  readonly limit?: number | undefined;
37
39
  readonly addresses?: readonly import("effect/unstable/cluster/EntityAddress").EntityAddress[] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"ClusterCosmos.d.ts","sourceRoot":"","sources":["../src/ClusterCosmos.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAG3C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AAExE,OAAO,KAAK,KAAK,KAAK,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,aAAa,MAAM,uCAAuC,CAAA;AACtE,OAAO,KAAK,OAAO,MAAM,iCAAiC,CAAA;AAC1D,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AACxE,OAAO,KAAK,SAAS,MAAM,mCAAmC,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAA;AAGpE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAiVD,eAAO,MAAM,kBAAkB;sBACX,MAAM,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;6CA2WpC,CAAA;AA+GF,eAAO,MAAM,iBAAiB;sBACV,MAAM,GAAG,SAAS;;;;;;;;;;uDA+RpC,CAAA;AAEF,eAAO,MAAM,mBAAmB,aAAc;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,KAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,EAAE,YAAY,GAAG,cAAc,CAAC,cAAc,CAG/F,CAAA;AAEH,eAAO,MAAM,kBAAkB,aAAc;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,KAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,EAAE,YAAY,GAAG,cAAc,CAAC,cAAc,CACzB,CAAA;AAEvE,eAAO,MAAM,YAAY,aAAc;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,KAAG,KAAK,CAAC,KAAK,CACb,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,EAC3D,KAAK,EACL,YAAY,GAAG,cAAc,CAAC,cAAc,CAC6B,CAAA;AAE3E,eAAO,MAAM,WAAW,WAAY,mBAAmB,KAAG,KAAK,CAAC,KAAK,CACnE,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,EAC3D,KAAK,EACL,cAAc,CAAC,cAAc,CAI5B,CAAA"}
1
+ {"version":3,"file":"ClusterCosmos.d.ts","sourceRoot":"","sources":["../src/ClusterCosmos.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAG3C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AAExE,OAAO,KAAK,KAAK,KAAK,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,aAAa,MAAM,uCAAuC,CAAA;AACtE,OAAO,KAAK,OAAO,MAAM,iCAAiC,CAAA;AAC1D,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AACxE,OAAO,KAAK,SAAS,MAAM,mCAAmC,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAA;AAGpE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAiVD,eAAO,MAAM,kBAAkB;sBACX,MAAM,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CA2WpC,CAAA;AA+GF,eAAO,MAAM,iBAAiB;sBACV,MAAM,GAAG,SAAS;;;;;;;;;;uDA+RpC,CAAA;AAEF,eAAO,MAAM,mBAAmB,aAAc;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,KAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,EAAE,YAAY,GAAG,cAAc,CAAC,cAAc,CAG/F,CAAA;AAEH,eAAO,MAAM,kBAAkB,aAAc;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,KAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,EAAE,YAAY,GAAG,cAAc,CAAC,cAAc,CACzB,CAAA;AAEvE,eAAO,MAAM,YAAY,aAAc;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,KAAG,KAAK,CAAC,KAAK,CACb,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,EAC3D,KAAK,EACL,YAAY,GAAG,cAAc,CAAC,cAAc,CAC6B,CAAA;AAE3E,eAAO,MAAM,WAAW,WAAY,mBAAmB,KAAG,KAAK,CAAC,KAAK,CACnE,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,EAC3D,KAAK,EACL,cAAc,CAAC,cAAc,CAI5B,CAAA"}
package/dist/arbs.d.ts CHANGED
@@ -1,5 +1,8 @@
1
1
  import type * as S from "effect-app/Schema";
2
- import * as FastCheck from "effect/testing/FastCheck";
2
+ import * as FastCheck from "fast-check";
3
3
  export declare function generate<T>(arb: FastCheck.Arbitrary<T>): FastCheck.Value<T>;
4
4
  export declare function generateFromArbitrary<T>(arb: S.Arbitrary<T>): FastCheck.Value<T>;
5
+ export declare function generateFromSchema<S extends S.Constraint>(schema: S): {
6
+ value: S["Type"] & ({} | null);
7
+ };
5
8
  //# sourceMappingURL=arbs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"arbs.d.ts","sourceRoot":"","sources":["../src/arbs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,CAAC,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,SAAS,MAAM,0BAA0B,CAAA;AAUrD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,sBAEtD;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,sBAE3D"}
1
+ {"version":3,"file":"arbs.d.ts","sourceRoot":"","sources":["../src/arbs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,CAAC,MAAM,mBAAmB,CAAA;AAG3C,OAAO,KAAK,SAAS,MAAM,YAAY,CAAA;AAUvC,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,sBAEtD;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,sBAE3D;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;;EASnE"}
package/dist/arbs.js CHANGED
@@ -1,7 +1,9 @@
1
1
  // Do not import to frontend
2
2
  import { faker } from "@faker-js/faker";
3
3
  import { setFaker } from "effect-app/faker";
4
- import * as FastCheck from "effect/testing/FastCheck";
4
+ import * as Effect from "effect/Effect";
5
+ import * as Arbitrary from "effect/unstable/arbitrary/Arbitrary";
6
+ import * as FastCheck from "fast-check";
5
7
  import { Random } from "fast-check";
6
8
  import { congruential32 } from "pure-rand/generator/congruential32";
7
9
  const seed = 5;
@@ -14,4 +16,12 @@ export function generate(arb) {
14
16
  export function generateFromArbitrary(arb) {
15
17
  return generate(arb(FastCheck));
16
18
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hcmJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUE0QjtBQUU1QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTNDLE9BQU8sS0FBSyxTQUFTLE1BQU0sMEJBQTBCLENBQUE7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFFbkUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFBO0FBQ2QsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBRTNCLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUVmLE1BQU0sVUFBVSxRQUFRLENBQUksR0FBMkI7SUFDckQsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQTtBQUNyQyxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUFJLEdBQW1CO0lBQzFELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO0FBQ2pDLENBQUMifQ==
19
+ export function generateFromSchema(schema) {
20
+ const samples = Effect.runSync(Arbitrary.sampleEffect(Arbitrary.schema(schema), { count: 1, seed }));
21
+ const value = samples[0];
22
+ if (value === undefined) {
23
+ throw new Error("failed to sample schema");
24
+ }
25
+ return { value };
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hcmJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUE0QjtBQUU1QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTNDLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUNBQXFDLENBQUE7QUFDaEUsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDdkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFFbkUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFBO0FBQ2QsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBRTNCLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUVmLE1BQU0sVUFBVSxRQUFRLENBQUksR0FBMkI7SUFDckQsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQTtBQUNyQyxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUFJLEdBQW1CO0lBQzFELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO0FBQ2pDLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQXlCLE1BQVM7SUFDbEUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FDNUIsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUNyRSxDQUFBO0lBQ0QsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3hCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0lBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFBO0FBQ2xCLENBQUMifQ==
@@ -3,7 +3,7 @@ import { LocaleRef, RequestContext } from "effect-app/RequestContext";
3
3
  import { NonEmptyString255 } from "effect-app/Schema";
4
4
  import { storeId } from "effect-app/Store";
5
5
  export function getRequestContextFromFiber(fiber) {
6
- const span = Option.fromNullishOr(fiber.currentSpan);
6
+ const span = Option.fromNullishOr(fiber.cache.span);
7
7
  const locale = fiber.getRef(LocaleRef);
8
8
  const namespace = fiber.getRef(storeId);
9
9
  return RequestContext.make({
@@ -13,4 +13,4 @@ export function getRequestContextFromFiber(fiber) {
13
13
  namespace
14
14
  });
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZ2dlci9zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUcxQyxNQUFNLFVBQVUsMEJBQTBCLENBQUMsS0FBb0M7SUFDN0UsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDcEQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUN0QyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZDLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2hHLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUMvRTtRQUNELElBQUksRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7UUFDNUIsTUFBTTtRQUNOLFNBQVM7S0FDVixDQUFDLENBQUE7QUFDSixDQUFDIn0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZ2dlci9zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUcxQyxNQUFNLFVBQVUsMEJBQTBCLENBQUMsS0FBb0M7SUFDN0UsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ25ELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDdEMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN2QyxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDekIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNoRyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FDL0U7UUFDRCxJQUFJLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxDQUFDO1FBQzVCLE1BQU07UUFDTixTQUFTO0tBQ1YsQ0FBQyxDQUFBO0FBQ0osQ0FBQyJ9
@@ -57,7 +57,7 @@ const summarizePayload = (payload) => typeof payload === "object" && payload !==
57
57
  : payload;
58
58
  // TODO: do we need this as middleware or just as layer?
59
59
  export const DevModeLive = Layer.effect(DevMode, Effect.gen(function* () {
60
- const env = yield* Config.string("env").pipe(Config.withDefault("local-dev"));
60
+ const env = yield* Config.String("env").pipe(Config.withDefault("local-dev"));
61
61
  return env !== "prod";
62
62
  }));
63
63
  export const RequestCacheMiddlewareLive = Layer.succeed(RequestCacheMiddleware, (effect) => effect);
package/dist/routing.js CHANGED
@@ -27,7 +27,7 @@ const RequestTypes = {
27
27
  };
28
28
  export const skipOnProd = Effect
29
29
  .gen(function* () {
30
- const env = yield* Config.string("env");
30
+ const env = yield* Config.String("env");
31
31
  return env !== "prod";
32
32
  })
33
33
  .pipe(Effect.orDie);
package/dist/test.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import * as S from "effect-app/Schema";
2
2
  import { copy } from "effect-app/utils";
3
- import { generateFromArbitrary } from "./arbs.js";
3
+ import { generateFromSchema } from "./arbs.js";
4
4
  /**
5
5
  * Given the schema for an object-like structure, creates a function that generates random instances of that object with some values provided.
6
6
  */
7
7
  export const createRandomInstance = (s) => {
8
- const gen = generateFromArbitrary(S.toArbitrary(s));
8
+ const gen = generateFromSchema(s);
9
9
  return (overrides) => {
10
10
  const v = gen.value;
11
11
  return overrides ? copy(v, overrides) : v;
@@ -15,7 +15,7 @@ export const createRandomInstance = (s) => {
15
15
  * Like `createRandomInstance`, but takes encoded values rather than decoded ones.
16
16
  */
17
17
  export const createRandomInstanceI = (s) => {
18
- const gen = generateFromArbitrary(S.toArbitrary(s));
18
+ const gen = generateFromSchema(s);
19
19
  const encode = S.encodeSync(s);
20
20
  const decode = S.decodeSync(s);
21
21
  return (overrides) => {
@@ -26,4 +26,4 @@ export const createRandomInstanceI = (s) => {
26
26
  };
27
27
  };
28
28
  export * from "./arbs.js";
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxDQUFDLE1BQU0sbUJBQW1CLENBQUE7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUVqRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQXlCLENBQWlELEVBQUUsRUFBRTtJQUNoSCxNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbkQsT0FBTyxDQUFDLFNBQXNCLEVBQUUsRUFBRTtRQUNoQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFBO1FBQ25CLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDM0MsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFzQixDQUE4QyxFQUFFLEVBQUU7SUFDM0csTUFBTSxHQUFHLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ25ELE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDOUIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM5QixPQUFPLENBQUMsU0FBc0IsRUFBRSxFQUFFO1FBQ2hDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUE7UUFDbkIsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN4QixPQUFPLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQTtJQUMvQyxDQUFDLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRCxjQUFjLFdBQVcsQ0FBQSJ9
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxDQUFDLE1BQU0sbUJBQW1CLENBQUE7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUU5Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQXlCLENBQWlELEVBQUUsRUFBRTtJQUNoSCxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQyxPQUFPLENBQUMsU0FBc0IsRUFBRSxFQUFFO1FBQ2hDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUE7UUFDbkIsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMzQyxDQUFDLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQXNCLENBQThDLEVBQUUsRUFBRTtJQUMzRyxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzlCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDOUIsT0FBTyxDQUFDLFNBQXNCLEVBQUUsRUFBRTtRQUNoQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFBO1FBQ25CLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxDQUFDLENBQUE7UUFDeEIsT0FBTyxNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUE7SUFDL0MsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBRUQsY0FBYyxXQUFXLENBQUEifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "4.0.0-beta.320",
3
+ "version": "4.0.0-beta.322",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "repository": {
@@ -16,12 +16,12 @@
16
16
  "proper-lockfile": "^4.1.2",
17
17
  "pure-rand": "8.4.0",
18
18
  "query-string": "^9.4.0",
19
- "effect-app": "4.0.0-beta.320"
19
+ "effect-app": "4.0.0-beta.322"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@azure/cosmos": "^4.9.3",
23
23
  "@azure/service-bus": "^7.9.5",
24
- "@effect/sql-sqlite-node": "4.0.0-rc.112",
24
+ "@effect/sql-sqlite-node": "4.0.0-rc.115",
25
25
  "@sentry/opentelemetry": "10.55.0",
26
26
  "@types/better-sqlite3": "^7.6.13",
27
27
  "@types/node": "25.9.1",
@@ -39,12 +39,12 @@
39
39
  "peerDependencies": {
40
40
  "@azure/cosmos": "^4.9.3",
41
41
  "@azure/service-bus": "^7.9.5",
42
- "@effect/vitest": "^4.0.0-rc.112",
42
+ "@effect/vitest": "^4.0.0-rc.115",
43
43
  "@sendgrid/helpers": "^8.0.0",
44
44
  "@sendgrid/mail": "^8.1.6",
45
45
  "@sentry/node": "10.55.0",
46
46
  "@sentry/opentelemetry": "10.55.0",
47
- "effect": "^4.0.0-rc.112",
47
+ "effect": "^4.0.0-rc.115",
48
48
  "jwt-decode": "^4.0.0",
49
49
  "redis": "^3.1.2",
50
50
  "redlock": "^4.2.0"
package/src/CUPS.ts CHANGED
@@ -131,7 +131,7 @@ function* buildListArgs(config?: { host?: string | undefined }) {
131
131
 
132
132
  export const CUPSConfig = Config.all({
133
133
  server: Config
134
- .string("server")
134
+ .String("server")
135
135
  .pipe(
136
136
  Config.map((s) => new URL(s)),
137
137
  Config.option,
package/src/arbs.ts CHANGED
@@ -3,7 +3,9 @@
3
3
  import { faker } from "@faker-js/faker"
4
4
  import { setFaker } from "effect-app/faker"
5
5
  import type * as S from "effect-app/Schema"
6
- import * as FastCheck from "effect/testing/FastCheck"
6
+ import * as Effect from "effect/Effect"
7
+ import * as Arbitrary from "effect/unstable/arbitrary/Arbitrary"
8
+ import * as FastCheck from "fast-check"
7
9
  import { Random } from "fast-check"
8
10
  import { congruential32 } from "pure-rand/generator/congruential32"
9
11
 
@@ -20,3 +22,14 @@ export function generate<T>(arb: FastCheck.Arbitrary<T>) {
20
22
  export function generateFromArbitrary<T>(arb: S.Arbitrary<T>) {
21
23
  return generate(arb(FastCheck))
22
24
  }
25
+
26
+ export function generateFromSchema<S extends S.Constraint>(schema: S) {
27
+ const samples = Effect.runSync(
28
+ Arbitrary.sampleEffect(Arbitrary.schema(schema), { count: 1, seed })
29
+ )
30
+ const value = samples[0]
31
+ if (value === undefined) {
32
+ throw new Error("failed to sample schema")
33
+ }
34
+ return { value }
35
+ }
@@ -5,7 +5,7 @@ import { storeId } from "effect-app/Store"
5
5
  import type * as Fiber from "effect/Fiber"
6
6
 
7
7
  export function getRequestContextFromFiber(fiber: Fiber.Fiber<unknown, unknown>) {
8
- const span = Option.fromNullishOr(fiber.currentSpan)
8
+ const span = Option.fromNullishOr(fiber.cache.span)
9
9
  const locale = fiber.getRef(LocaleRef)
10
10
  const namespace = fiber.getRef(storeId)
11
11
  return RequestContext.make({
@@ -61,7 +61,7 @@ const summarizePayload = (payload: unknown): unknown =>
61
61
  export const DevModeLive = Layer.effect(
62
62
  DevMode,
63
63
  Effect.gen(function*() {
64
- const env = yield* Config.string("env").pipe(Config.withDefault("local-dev"))
64
+ const env = yield* Config.String("env").pipe(Config.withDefault("local-dev"))
65
65
  return env !== "prod"
66
66
  })
67
67
  )
package/src/routing.ts CHANGED
@@ -182,7 +182,7 @@ export type RouteMatcher<
182
182
 
183
183
  export const skipOnProd = Effect
184
184
  .gen(function*() {
185
- const env = yield* Config.string("env")
185
+ const env = yield* Config.String("env")
186
186
  return env !== "prod"
187
187
  })
188
188
  .pipe(Effect.orDie)
package/src/test.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import * as S from "effect-app/Schema"
2
2
  import { copy } from "effect-app/utils"
3
- import { generateFromArbitrary } from "./arbs.ts"
3
+ import { generateFromSchema } from "./arbs.ts"
4
4
 
5
5
  /**
6
6
  * Given the schema for an object-like structure, creates a function that generates random instances of that object with some values provided.
7
7
  */
8
8
  export const createRandomInstance = <A extends object, I, R>(s: S.Codec<A, I, R> & { fields: S.Struct.Fields }) => {
9
- const gen = generateFromArbitrary(S.toArbitrary(s))
9
+ const gen = generateFromSchema(s)
10
10
  return (overrides?: Partial<A>) => {
11
11
  const v = gen.value
12
12
  return overrides ? copy(v, overrides) : v
@@ -17,7 +17,7 @@ export const createRandomInstance = <A extends object, I, R>(s: S.Codec<A, I, R>
17
17
  * Like `createRandomInstance`, but takes encoded values rather than decoded ones.
18
18
  */
19
19
  export const createRandomInstanceI = <A extends object, I>(s: S.Codec<A, I> & { fields: S.Struct.Fields }) => {
20
- const gen = generateFromArbitrary(S.toArbitrary(s))
20
+ const gen = generateFromSchema(s)
21
21
  const encode = S.encodeSync(s)
22
22
  const decode = S.decodeSync(s)
23
23
  return (overrides?: Partial<I>) => {
@@ -1665,7 +1665,7 @@ it("find with transformed id", () =>
1665
1665
  const PreconfigurationIdFromString = S.NonEmptyString255.pipe(
1666
1666
  S.decodeTo(
1667
1667
  S.toType(PreconfigurationId),
1668
- SchemaTransformation.transformOrFail({
1668
+ SchemaTransformation.transformEffect({
1669
1669
  decode: Effect.fnUntraced(function*(value) {
1670
1670
  const values = value.split("_")
1671
1671
  const label = yield* S.SchemaParser.decodeUnknownEffect(S.NonEmptyString50)(values.pop())
@@ -1723,7 +1723,7 @@ it("find with transformed id in tagged union", () =>
1723
1723
  const PreconfigurationIdFromString = S.NonEmptyString255.pipe(
1724
1724
  S.decodeTo(
1725
1725
  S.toType(PreconfigurationId),
1726
- SchemaTransformation.transformOrFail({
1726
+ SchemaTransformation.transformEffect({
1727
1727
  decode: Effect.fnUntraced(function*(value) {
1728
1728
  const values = value.split("_")
1729
1729
  const label = yield* S.SchemaParser.decodeUnknownEffect(S.NonEmptyString50)(values.pop())
@@ -99,7 +99,7 @@ class SomethingRepo extends Context.Service<SomethingRepo>()(
99
99
  Layer.provide(
100
100
  Effect
101
101
  .gen(function*() {
102
- const url = yield* Config.redacted("STORAGE_URL").pipe(
102
+ const url = yield* Config.Redacted("STORAGE_URL").pipe(
103
103
  Config.withDefault(
104
104
  Redacted.make(
105
105
  // the emulator doesn't implement array projections :/ so you need an actual cloud instance!
@@ -48,6 +48,7 @@ import * as Layer from "effect/Layer"
48
48
  import * as Option from "effect/Option"
49
49
  import * as Stream from "effect/Stream"
50
50
  import { FetchHttpClient } from "effect/unstable/http"
51
+ import * as NetAddress from "effect/unstable/net/NetAddress"
51
52
  import { RpcSerialization } from "effect/unstable/rpc"
52
53
  import { createServer } from "http"
53
54
  import { RequestContextMiddleware } from "../src/internal/RequestContextMiddleware.js"
@@ -193,8 +194,10 @@ const ClientLayer = Layer
193
194
  Effect.gen(function*() {
194
195
  const server = yield* HttpServer.HttpServer
195
196
  const addr = server.address
196
- if (addr._tag !== "TcpAddress") return yield* Effect.die(new Error("expected TcpAddress"))
197
- const host = addr.hostname === "0.0.0.0" ? "127.0.0.1" : addr.hostname
197
+ if (NetAddress.isUnixPathAddress(addr)) {
198
+ return yield* Effect.die(new Error("expected inet address"))
199
+ }
200
+ const host = NetAddress.isUnspecified(addr.address) ? "127.0.0.1" : NetAddress.formatUrlHost(addr.address)
198
201
  const url = `http://${host}:${addr.port}`
199
202
  return ApiClientFactory
200
203
  .layer({ url, headers: Option.none() })
@@ -30,6 +30,7 @@ import * as Option from "effect/Option"
30
30
  import * as Ref from "effect/Ref"
31
31
  import * as Stream from "effect/Stream"
32
32
  import { FetchHttpClient } from "effect/unstable/http"
33
+ import * as NetAddress from "effect/unstable/net/NetAddress"
33
34
  import { RpcSerialization } from "effect/unstable/rpc"
34
35
  import { createServer } from "http"
35
36
  import { RequestContextMiddleware } from "../src/internal/RequestContextMiddleware.js"
@@ -230,8 +231,10 @@ const ClientLayer = Layer
230
231
  Effect.gen(function*() {
231
232
  const server = yield* HttpServer.HttpServer
232
233
  const addr = server.address
233
- if (addr._tag !== "TcpAddress") return yield* Effect.die(new Error("expected TcpAddress"))
234
- const host = addr.hostname === "0.0.0.0" ? "127.0.0.1" : addr.hostname
234
+ if (NetAddress.isUnixPathAddress(addr)) {
235
+ return yield* Effect.die(new Error("expected inet address"))
236
+ }
237
+ const host = NetAddress.isUnspecified(addr.address) ? "127.0.0.1" : NetAddress.formatUrlHost(addr.address)
235
238
  const url = `http://${host}:${addr.port}`
236
239
  return ApiClientFactory
237
240
  .layer({ url, headers: Option.none() })
@@ -23,6 +23,7 @@ import * as Layer from "effect/Layer"
23
23
  import * as Option from "effect/Option"
24
24
  import * as Stream from "effect/Stream"
25
25
  import { FetchHttpClient } from "effect/unstable/http"
26
+ import * as NetAddress from "effect/unstable/net/NetAddress"
26
27
  import { RpcSerialization } from "effect/unstable/rpc"
27
28
  import { createServer } from "http"
28
29
  import { makeRouter } from "../src/routing.js"
@@ -176,8 +177,10 @@ const ClientLayer = Layer
176
177
  Effect.gen(function*() {
177
178
  const server = yield* HttpServer.HttpServer
178
179
  const addr = server.address
179
- if (addr._tag !== "TcpAddress") return yield* Effect.die(new Error("expected TcpAddress"))
180
- const host = addr.hostname === "0.0.0.0" ? "127.0.0.1" : addr.hostname
180
+ if (NetAddress.isUnixPathAddress(addr)) {
181
+ return yield* Effect.die(new Error("expected inet address"))
182
+ }
183
+ const host = NetAddress.isUnspecified(addr.address) ? "127.0.0.1" : NetAddress.formatUrlHost(addr.address)
181
184
  const url = `http://${host}:${addr.port}`
182
185
  return ApiClientFactory
183
186
  .layer({ url, headers: Option.none() })