@effect/platform-node 4.0.0-rc.110 → 4.0.0-rc.112

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.
@@ -27,8 +27,8 @@
27
27
  "@effect/sql-sqlite-wasm": "workspace:*",
28
28
  "@effect/vitest": "workspace:*",
29
29
  "effect": "workspace:*",
30
- "hono": "^4.12.28",
31
- "nodemailer": "^9.0.3"
30
+ "hono": "^4.13.3",
31
+ "nodemailer": "^9.0.5"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/nodemailer": "^8.0.1"
@@ -55,7 +55,7 @@ export class NodeHttpIncomingMessage extends Inspectable.Class {
55
55
  return Headers.fromInput(this.source.headers);
56
56
  }
57
57
  get remoteAddress() {
58
- return this.remoteAddressOverride ?? Option.fromNullishOr(this.source.socket.remoteAddress);
58
+ return this.remoteAddressOverride ?? Option.fromNullishOr(this.source.socket?.remoteAddress);
59
59
  }
60
60
  textEffect;
61
61
  get text() {
@@ -1 +1 @@
1
- {"version":3,"file":"NodeHttpIncomingMessage.js","names":[],"sources":["../src/NodeHttpIncomingMessage.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NodeHttpIncomingMessage.js","names":[],"sources":["../src/NodeHttpIncomingMessage.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"NodeRedis.d.ts","sourceRoot":"","sources":["../src/NodeRedis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,mCAAmC,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAsB,MAAM,OAAO,CAAA;AAExD,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAA;AACtD,KAAK,sBAAsB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;;qBAW1D,eAAe;kBAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;;AAVrG;;;;;;;GAOG;AACH,qBAAa,SAAU,SAAQ,cAGQ;CAAG;AAoE1C;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,KAAK,aACN,sBAAsB,GAAG,SAAS,KAC3C,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,EAAE,KAAK,CAAC,UAAU,CAAuC,CAAA;AAE/F;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,WAAW,EAAE,CACxB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,KACzC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,EAAE,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAO5E,CAAA"}
1
+ {"version":3,"file":"NodeRedis.d.ts","sourceRoot":"","sources":["../src/NodeRedis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,mCAAmC,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAsB,MAAM,OAAO,CAAA;AAExD,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAA;AACtD,KAAK,sBAAsB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;;qBAW1D,eAAe;kBAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;;AAVrG;;;;;;;GAOG;AACH,qBAAa,SAAU,SAAQ,cAGQ;CAAG;AAwH1C;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,KAAK,aACN,sBAAsB,GAAG,SAAS,KAC3C,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,EAAE,KAAK,CAAC,UAAU,CAAuC,CAAA;AAE/F;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,WAAW,EAAE,CACxB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,KACzC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,EAAE,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAO5E,CAAA"}
package/dist/NodeRedis.js CHANGED
@@ -12,6 +12,7 @@
12
12
  */
13
13
  import * as Config from "effect/Config";
14
14
  import * as Context from "effect/Context";
15
+ import * as Deferred from "effect/Deferred";
15
16
  import * as Effect from "effect/Effect";
16
17
  import * as Fn from "effect/Function";
17
18
  import * as Layer from "effect/Layer";
@@ -70,6 +71,56 @@ const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
70
71
  catch: cause => new Redis.RedisError({
71
72
  cause
72
73
  })
74
+ }),
75
+ subscribe: (channel, onMessage) => Effect.gen(function* () {
76
+ const terminal = yield* Deferred.make();
77
+ yield* Effect.acquireRelease(Effect.tryPromise({
78
+ try: async () => {
79
+ let subscriberReady = false;
80
+ const subscriber = client.duplicate(socket?.reconnectStrategy === undefined ? {
81
+ socket: {
82
+ ...socket,
83
+ reconnectStrategy: (retries, cause) => {
84
+ if (!subscriberReady) return cause;
85
+ if (cause instanceof SocketTimeoutError) return false;
86
+ const jitter = Math.floor(Math.random() * 200);
87
+ const delay = Math.min(2 ** retries * 50, 2000);
88
+ return delay + jitter;
89
+ }
90
+ }
91
+ } : {});
92
+ subscriber.once("ready", () => {
93
+ subscriberReady = true;
94
+ });
95
+ subscriber.on("error", cause => {
96
+ runSync(Effect.logWarning("NodeRedis subscriber error", cause));
97
+ if (!subscriber.isOpen) {
98
+ runSync(Deferred.fail(terminal, new Redis.RedisError({
99
+ cause
100
+ })));
101
+ }
102
+ });
103
+ try {
104
+ await subscriber.connect();
105
+ await subscriber.subscribe(channel, (message, channel) => {
106
+ onMessage({
107
+ channel,
108
+ message
109
+ });
110
+ });
111
+ return subscriber;
112
+ } catch (cause) {
113
+ if (subscriber.isOpen) subscriber.destroy();
114
+ throw cause;
115
+ }
116
+ },
117
+ catch: cause => new Redis.RedisError({
118
+ cause
119
+ })
120
+ }), subscriber => Effect.sync(() => {
121
+ if (subscriber.isOpen) subscriber.destroy();
122
+ }));
123
+ return Deferred.await(terminal);
73
124
  })
74
125
  });
75
126
  const nodeRedis = Fn.identity({
@@ -1 +1 @@
1
- {"version":3,"file":"NodeRedis.js","names":[],"sources":["../src/NodeRedis.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NodeRedis.js","names":[],"sources":["../src/NodeRedis.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -50,7 +50,7 @@ export const layerPlatform = /*#__PURE__*/Layer.succeed(Worker.WorkerPlatform)(/
50
50
  return Effect.as(Scope.addFinalizer(scope, Effect.suspend(() => {
51
51
  thing.postMessage([1]);
52
52
  return Deferred.await(exitDeferred);
53
- }).pipe(Effect.timeout(5000), Effect.catchCause(() => Effect.sync(() => thing.kill())))), thing);
53
+ }).pipe(Effect.timeout(5000), Effect.catchCause(() => Effect.promise(() => Promise.resolve(thing.kill()))))), thing);
54
54
  },
55
55
  listen({
56
56
  deferred,
@@ -1 +1 @@
1
- {"version":3,"file":"NodeWorker.js","names":[],"sources":["../src/NodeWorker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NodeWorker.js","names":[],"sources":["../src/NodeWorker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@effect/platform-node",
3
3
  "type": "module",
4
- "version": "4.0.0-rc.110",
4
+ "version": "4.0.0-rc.112",
5
5
  "license": "MIT",
6
6
  "description": "Platform specific implementations for the Node.js runtime",
7
7
  "homepage": "https://effect.website",
@@ -53,20 +53,20 @@
53
53
  },
54
54
  "dependencies": {
55
55
  "mime": "^4.1.0",
56
- "undici": "^8.7.0",
57
- "@effect/platform-node-shared": "^4.0.0-rc.110"
56
+ "undici": "^8.10.0",
57
+ "@effect/platform-node-shared": "^4.0.0-rc.112"
58
58
  },
59
59
  "peerDependencies": {
60
60
  "redis": ">=5.0.0 <7.0.0",
61
- "effect": "^4.0.0-rc.110"
61
+ "effect": "^4.0.0-rc.112"
62
62
  },
63
63
  "devDependencies": {
64
- "@testcontainers/mysql": "^12.0.4",
65
- "@testcontainers/postgresql": "^12.0.4",
66
- "@testcontainers/redis": "^12.0.4",
67
- "@types/node": "^26.1.2",
64
+ "@testcontainers/mysql": "^12.1.0",
65
+ "@testcontainers/postgresql": "^12.1.0",
66
+ "@testcontainers/redis": "^12.1.0",
67
+ "@types/node": "^26.2.0",
68
68
  "redis": "^6.2.1",
69
- "effect": "^4.0.0-rc.110"
69
+ "effect": "^4.0.0-rc.112"
70
70
  },
71
71
  "scripts": {
72
72
  "codegen": "effect-utils codegen",
@@ -68,7 +68,7 @@ export abstract class NodeHttpIncomingMessage<E> extends Inspectable.Class
68
68
  }
69
69
 
70
70
  get remoteAddress() {
71
- return this.remoteAddressOverride ?? Option.fromNullishOr(this.source.socket.remoteAddress)
71
+ return this.remoteAddressOverride ?? Option.fromNullishOr(this.source.socket?.remoteAddress)
72
72
  }
73
73
 
74
74
  private textEffect: Effect.Effect<string, E> | undefined
package/src/NodeRedis.ts CHANGED
@@ -12,6 +12,7 @@
12
12
  */
13
13
  import * as Config from "effect/Config"
14
14
  import * as Context from "effect/Context"
15
+ import * as Deferred from "effect/Deferred"
15
16
  import * as Effect from "effect/Effect"
16
17
  import * as Fn from "effect/Function"
17
18
  import * as Layer from "effect/Layer"
@@ -87,6 +88,58 @@ const make = Effect.fnUntraced(function*(
87
88
  Effect.tryPromise({
88
89
  try: () => client.sendCommand([command, ...args]) as Promise<A>,
89
90
  catch: (cause) => new Redis.RedisError({ cause })
91
+ }),
92
+ subscribe: (channel, onMessage) =>
93
+ Effect.gen(function*() {
94
+ const terminal = yield* Deferred.make<void, Redis.RedisError>()
95
+ yield* Effect.acquireRelease(
96
+ Effect.tryPromise({
97
+ try: async () => {
98
+ let subscriberReady = false
99
+ const subscriber = client.duplicate(
100
+ socket?.reconnectStrategy === undefined
101
+ ? {
102
+ socket: {
103
+ ...socket,
104
+ reconnectStrategy: (retries, cause) => {
105
+ if (!subscriberReady) return cause
106
+ if (cause instanceof SocketTimeoutError) return false
107
+ const jitter = Math.floor(Math.random() * 200)
108
+ const delay = Math.min(2 ** retries * 50, 2000)
109
+ return delay + jitter
110
+ }
111
+ }
112
+ }
113
+ : {}
114
+ )
115
+ subscriber.once("ready", () => {
116
+ subscriberReady = true
117
+ })
118
+ subscriber.on("error", (cause) => {
119
+ runSync(Effect.logWarning("NodeRedis subscriber error", cause))
120
+ if (!subscriber.isOpen) {
121
+ runSync(Deferred.fail(terminal, new Redis.RedisError({ cause })))
122
+ }
123
+ })
124
+ try {
125
+ await subscriber.connect()
126
+ await subscriber.subscribe(channel, (message, channel) => {
127
+ onMessage({ channel, message })
128
+ })
129
+ return subscriber
130
+ } catch (cause) {
131
+ if (subscriber.isOpen) subscriber.destroy()
132
+ throw cause
133
+ }
134
+ },
135
+ catch: (cause) => new Redis.RedisError({ cause })
136
+ }),
137
+ (subscriber) =>
138
+ Effect.sync(() => {
139
+ if (subscriber.isOpen) subscriber.destroy()
140
+ })
141
+ )
142
+ return Deferred.await(terminal)
90
143
  })
91
144
  })
92
145
 
package/src/NodeWorker.ts CHANGED
@@ -58,7 +58,7 @@ export const layerPlatform: Layer.Layer<Worker.WorkerPlatform> = Layer.succeed(W
58
58
  return Deferred.await(exitDeferred)
59
59
  }).pipe(
60
60
  Effect.timeout(5000),
61
- Effect.catchCause(() => Effect.sync(() => thing.kill()))
61
+ Effect.catchCause(() => Effect.promise(() => Promise.resolve(thing.kill())))
62
62
  )
63
63
  ),
64
64
  thing