alchemy-effect 0.7.1 → 0.9.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.
Files changed (54) hide show
  1. package/bin/alchemy-effect.js +29 -21
  2. package/bin/alchemy-effect.js.map +1 -1
  3. package/bin/alchemy-effect.ts +32 -68
  4. package/lib/cli/index.d.ts +1 -0
  5. package/lib/cli/index.d.ts.map +1 -1
  6. package/package.json +3 -2
  7. package/src/AWS/AutoScaling/LaunchTemplate.ts +5 -4
  8. package/src/AWS/EC2/Instance.ts +3 -4
  9. package/src/AWS/ECS/Task.ts +36 -34
  10. package/src/AWS/Lambda/Function.ts +68 -68
  11. package/src/Apply.ts +2 -0
  12. package/src/Artifacts.ts +10 -1
  13. package/src/Binding.ts +20 -5
  14. package/src/Cloudflare/Container.ts +210 -109
  15. package/src/Cloudflare/D1/D1Database.ts +32 -32
  16. package/src/Cloudflare/KV/Delete.ts +7 -5
  17. package/src/Cloudflare/KV/Get.ts +5 -5
  18. package/src/Cloudflare/KV/GetWithMetadata.ts +5 -5
  19. package/src/Cloudflare/KV/{Namespace.ts → KVNamespace.ts} +6 -6
  20. package/src/Cloudflare/KV/{NamespaceBinding.ts → KVNamespaceBinding.ts} +2 -2
  21. package/src/Cloudflare/KV/List.ts +5 -5
  22. package/src/Cloudflare/KV/Put.ts +5 -5
  23. package/src/Cloudflare/KV/index.ts +1 -1
  24. package/src/Cloudflare/Providers.ts +2 -8
  25. package/src/Cloudflare/R2/{Bucket.ts → R2Bucket.ts} +19 -19
  26. package/src/Cloudflare/R2/R2BucketBinding.ts +322 -0
  27. package/src/Cloudflare/R2/index.ts +2 -9
  28. package/src/Cloudflare/Workers/Assets.ts +11 -5
  29. package/src/Cloudflare/Workers/DurableObject.ts +4 -33
  30. package/src/Cloudflare/Workers/HttpServer.ts +1 -0
  31. package/src/Cloudflare/Workers/InferEnv.ts +23 -0
  32. package/src/Cloudflare/Workers/WebSocket.ts +4 -3
  33. package/src/Cloudflare/Workers/Worker.ts +480 -165
  34. package/src/Cloudflare/Workers/cloudflare_workers.ts +13 -21
  35. package/src/Cloudflare/Workers/index.ts +1 -0
  36. package/src/Cloudflare/index.ts +2 -2
  37. package/src/Platform.ts +36 -55
  38. package/src/Provider.ts +1 -0
  39. package/src/Resource.ts +3 -2
  40. package/src/Stack.ts +5 -4
  41. package/src/Test/Bun.ts +207 -0
  42. package/src/Util/ConfigProvider.ts +25 -0
  43. package/src/Util/FileLogger.ts +22 -0
  44. package/src/Util/effect.ts +24 -0
  45. package/src/Cloudflare/R2/BucketBinding.ts +0 -31
  46. package/src/Cloudflare/R2/CreateMultipartUpload.ts +0 -59
  47. package/src/Cloudflare/R2/DeleteObject.ts +0 -41
  48. package/src/Cloudflare/R2/GetObject.ts +0 -47
  49. package/src/Cloudflare/R2/HeadObject.ts +0 -41
  50. package/src/Cloudflare/R2/ListObjects.ts +0 -45
  51. package/src/Cloudflare/R2/MultipartUploadClient.ts +0 -40
  52. package/src/Cloudflare/R2/PutObject.ts +0 -55
  53. package/src/Cloudflare/R2/ResumeMultipartUpload.ts +0 -48
  54. package/src/Cloudflare/R2/UploadValue.ts +0 -10
@@ -4,7 +4,6 @@ import * as Config from "effect/Config";
4
4
  import * as ConfigProvider from "effect/ConfigProvider";
5
5
  import * as Console from "effect/Console";
6
6
  import * as Effect from "effect/Effect";
7
- import * as FileSystem from "effect/FileSystem";
8
7
  import * as Layer from "effect/Layer";
9
8
  import * as Logger from "effect/Logger";
10
9
  import * as Option from "effect/Option";
@@ -27,12 +26,14 @@ import {
27
26
  import * as AWSCredentials from "../src/AWS/Credentials.ts";
28
27
  import * as AWSRegion from "../src/AWS/Region.ts";
29
28
  import * as CLI from "../src/Cli/index.ts";
30
- import { DotAlchemy, dotAlchemy } from "../src/Config.ts";
29
+ import { dotAlchemy } from "../src/Config.ts";
31
30
  import * as Plan from "../src/Plan.ts";
32
31
  import { getProviderByType, type LogLine } from "../src/Provider.ts";
33
32
  import * as Stack from "../src/Stack.ts";
34
33
  import { Stage } from "../src/Stage.ts";
35
34
  import * as State from "../src/State/index.ts";
35
+ import { loadConfigProvider } from "../src/Util/ConfigProvider.ts";
36
+ import { fileLogger } from "../src/Util/FileLogger.ts";
36
37
 
37
38
  const USER = Config.string("USER").pipe(
38
39
  Config.orElse(() => Config.string("USERNAME")),
@@ -94,48 +95,12 @@ const yes = Flag.boolean("yes").pipe(
94
95
  );
95
96
 
96
97
  const force = Flag.boolean("force").pipe(
97
- Flag.withDescription("Force updates for resources that would otherwise no-op"),
98
+ Flag.withDescription(
99
+ "Force updates for resources that would otherwise no-op",
100
+ ),
98
101
  Flag.withDefault(false),
99
102
  );
100
103
 
101
- const fileLogger = Effect.fnUntraced(function* (
102
- ...segments: ReadonlyArray<string>
103
- ) {
104
- const dotAlchemy = yield* DotAlchemy;
105
- const fs = yield* FileSystem.FileSystem;
106
- const path = yield* Path;
107
- const logFile = path.join(dotAlchemy, "log", ...segments);
108
-
109
- yield* fs.makeDirectory(path.dirname(logFile), { recursive: true });
110
-
111
- return yield* Logger.formatLogFmt.pipe(
112
- Logger.toFile(logFile, {
113
- flag: "a",
114
- }),
115
- );
116
- });
117
-
118
- const loadConfigProvider = (envFile: Option.Option<string>) => {
119
- if (Option.isSome(envFile)) {
120
- return ConfigProvider.fromDotEnv({ path: envFile.value }).pipe(
121
- Effect.map((dotEnv) =>
122
- ConfigProvider.orElse(dotEnv, ConfigProvider.fromEnv()),
123
- ),
124
- );
125
- }
126
- return Effect.gen(function* () {
127
- const fs = yield* FileSystem.FileSystem;
128
- const exists = yield* fs.exists(".env");
129
- if (!exists) {
130
- return ConfigProvider.fromEnv();
131
- }
132
- return ConfigProvider.orElse(
133
- yield* ConfigProvider.fromDotEnv({ path: ".env" }),
134
- ConfigProvider.fromEnv(),
135
- );
136
- });
137
- };
138
-
139
104
  const main = Argument.file("main", {
140
105
  mustExist: true,
141
106
  }).pipe(
@@ -239,37 +204,36 @@ const execStack = Effect.fn(function* ({
239
204
  const cli = yield* CLI.Cli;
240
205
  const stack = yield* stackEffect;
241
206
 
242
- yield* provideFreshArtifactStore(
243
- Effect.gen(function* () {
244
- const updatePlan = yield* Plan.make(
245
- destroy
246
- ? {
247
- ...stack,
248
- // zero these out (destroy will treat all as orphans)
249
- // TODO(sam): probably better to have Plan.destroy and Plan.update
250
- resources: {},
251
- bindings: {},
252
- output: {},
253
- }
254
- : stack,
255
- { force },
256
- );
257
- if (dryRun) {
258
- yield* cli.displayPlan(updatePlan);
259
- } else {
260
- if (!yes) {
261
- const approved = yield* cli.approvePlan(updatePlan);
262
- if (!approved) {
263
- return;
207
+ yield* Effect.gen(function* () {
208
+ const updatePlan = yield* Plan.make(
209
+ destroy
210
+ ? {
211
+ ...stack,
212
+ // zero these out (destroy will treat all as orphans)
213
+ // TODO(sam): probably better to have Plan.destroy and Plan.update
214
+ resources: {},
215
+ bindings: {},
216
+ output: {},
264
217
  }
218
+ : stack,
219
+ { force },
220
+ );
221
+ if (dryRun) {
222
+ yield* cli.displayPlan(updatePlan);
223
+ } else {
224
+ if (!yes) {
225
+ const approved = yield* cli.approvePlan(updatePlan);
226
+ if (!approved) {
227
+ return;
265
228
  }
266
- const outputs = yield* apply(updatePlan);
267
-
268
- yield* Console.log(outputs);
269
229
  }
270
- }),
271
- ).pipe(
230
+ const outputs = yield* apply(updatePlan);
231
+
232
+ yield* Console.log(outputs);
233
+ }
234
+ }).pipe(
272
235
  Effect.provide(stack.services),
236
+ provideFreshArtifactStore,
273
237
  // Effect.provide(Logger.layer([fileLogger("stacks", stack.name, stage)])),
274
238
  );
275
239
  }).pipe(
@@ -291,6 +291,7 @@ interface ProviderService<Res extends ResourceLike = ResourceLike, ReadReq = nev
291
291
  news: Props<Res>;
292
292
  instanceId: string;
293
293
  session: ScopedPlanStatusSession;
294
+ bindings: BindingData<Res>;
294
295
  }): Effect$1.Effect<Res["Attributes"], any, PrecreateReq>;
295
296
  create(input: {
296
297
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/Util/data.ts","../../src/Http.ts","../../src/ExecutionContext.ts","../../src/Namespace.ts","../../src/RemovalPolicy.ts","../../src/Resource.ts","../../src/State/ResourceState.ts","../../src/Output.ts","../../src/Input.ts","../../src/Diff.ts","../../src/Provider.ts","../../src/Plan.ts","../../src/Cli/Event.ts","../../src/Cli/Cli.ts","../../src/Cli/InkCLI.tsx"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/Util/data.ts","../../src/Http.ts","../../src/ExecutionContext.ts","../../src/Namespace.ts","../../src/RemovalPolicy.ts","../../src/Resource.ts","../../src/State/ResourceState.ts","../../src/Output.ts","../../src/Input.ts","../../src/Diff.ts","../../src/Provider.ts","../../src/Plan.ts","../../src/Cli/Event.ts","../../src/Cli/Cli.ts","../../src/Cli/InkCLI.tsx"],"sourcesContent":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "alchemy-effect",
3
- "version": "0.7.1",
3
+ "version": "0.9.0",
4
4
  "homepage": "https://alchemy.run",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Sam Goodwin <sam@alchemy.run>",
@@ -194,8 +194,9 @@
194
194
  "jszip": "^3.10.1",
195
195
  "rolldown": "1.0.0-rc.13",
196
196
  "solid-js": "latest",
197
+ "sonda": "^0.11.1",
197
198
  "web-tree-sitter": "0.25.10",
198
- "workerd": "1.20260405.1",
199
+ "workerd": "1.20260412.1",
199
200
  "yaml": "^2.0.0"
200
201
  },
201
202
  "devDependencies": {
@@ -162,10 +162,11 @@ export const LaunchTemplate: Platform<
162
162
  LaunchTemplateServices,
163
163
  LaunchTemplateShape,
164
164
  LaunchTemplateExecutionContext
165
- > = Platform(
166
- "AWS.AutoScaling.LaunchTemplate",
167
- createEc2HostExecutionContext("AWS.AutoScaling.LaunchTemplate"),
168
- );
165
+ > = Platform("AWS.AutoScaling.LaunchTemplate", {
166
+ createExecutionContext: createEc2HostExecutionContext(
167
+ "AWS.AutoScaling.LaunchTemplate",
168
+ ),
169
+ });
169
170
 
170
171
  export const LaunchTemplateProvider = () =>
171
172
  LaunchTemplate.provider.effect(
@@ -304,10 +304,9 @@ export const Instance: Platform<
304
304
  InstanceServices,
305
305
  InstanceShape,
306
306
  InstanceExecutionContext
307
- > = Platform(
308
- "AWS.EC2.Instance",
309
- createEc2HostExecutionContext("AWS.EC2.Instance"),
310
- );
307
+ > = Platform("AWS.EC2.Instance", {
308
+ createExecutionContext: createEc2HostExecutionContext("AWS.EC2.Instance"),
309
+ });
311
310
 
312
311
  export const InstanceProvider = () =>
313
312
  Instance.provider.effect(
@@ -174,43 +174,45 @@ export const Task: Platform<
174
174
  TaskServices,
175
175
  TaskShape,
176
176
  TaskExecutionContext
177
- > = Platform("AWS.ECS.Task", (id): TaskExecutionContext => {
178
- const runners: Effect.Effect<void, never, any>[] = [];
179
- const env: Record<string, any> = {};
180
-
181
- return {
182
- Type: "AWS.ECS.Task",
183
- id,
184
- env,
185
- set: (bindingId: string, output: Output.Output) =>
186
- Effect.sync(() => {
187
- const key = bindingId.replaceAll(/[^a-zA-Z0-9]/g, "_");
188
- env[key] = output.pipe(Output.map((value) => JSON.stringify(value)));
189
- return key;
190
- }),
191
- get: <T>(key: string) =>
192
- Config.string(key)
193
- .asEffect()
194
- .pipe(
195
- Effect.flatMap((value) =>
196
- Effect.try({
197
- try: () => JSON.parse(value) as T,
198
- catch: (error) => error as Error,
199
- }),
200
- ),
201
- Effect.catch((cause) =>
202
- Effect.die(
203
- new Error(`Failed to get environment variable: ${key}`, {
204
- cause,
177
+ > = Platform("AWS.ECS.Task", {
178
+ createExecutionContext: (id): TaskExecutionContext => {
179
+ const runners: Effect.Effect<void, never, any>[] = [];
180
+ const env: Record<string, any> = {};
181
+
182
+ return {
183
+ Type: "AWS.ECS.Task",
184
+ id,
185
+ env,
186
+ set: (bindingId: string, output: Output.Output) =>
187
+ Effect.sync(() => {
188
+ const key = bindingId.replaceAll(/[^a-zA-Z0-9]/g, "_");
189
+ env[key] = output.pipe(Output.map((value) => JSON.stringify(value)));
190
+ return key;
191
+ }),
192
+ get: <T>(key: string) =>
193
+ Config.string(key)
194
+ .asEffect()
195
+ .pipe(
196
+ Effect.flatMap((value) =>
197
+ Effect.try({
198
+ try: () => JSON.parse(value) as T,
199
+ catch: (error) => error as Error,
205
200
  }),
206
201
  ),
202
+ Effect.catch((cause) =>
203
+ Effect.die(
204
+ new Error(`Failed to get environment variable: ${key}`, {
205
+ cause,
206
+ }),
207
+ ),
208
+ ),
207
209
  ),
208
- ),
209
- run: (effect: Effect.Effect<void, never, any>) =>
210
- Effect.sync(() => {
211
- runners.push(effect);
212
- }),
213
- };
210
+ run: (effect: Effect.Effect<void, never, any>) =>
211
+ Effect.sync(() => {
212
+ runners.push(effect);
213
+ }),
214
+ };
215
+ },
214
216
  });
215
217
 
216
218
  export const TaskProvider = () =>
@@ -9,7 +9,6 @@ import * as Config from "effect/Config";
9
9
  import * as Effect from "effect/Effect";
10
10
  import * as FileSystem from "effect/FileSystem";
11
11
  import * as Option from "effect/Option";
12
- import * as Path from "effect/Path";
13
12
  import * as Schedule from "effect/Schedule";
14
13
  import * as ServiceMap from "effect/ServiceMap";
15
14
  import * as Stream from "effect/Stream";
@@ -139,76 +138,78 @@ export const Function: Platform<
139
138
  FunctionServices,
140
139
  FunctionShape,
141
140
  Serverless.FunctionContext
142
- > = Platform(FunctionTypeId, (id: string): Serverless.FunctionContext => {
143
- const listeners: Effect.Effect<Serverless.FunctionListener>[] = [];
144
- const env: Record<string, any> = {};
145
-
146
- const ctx = {
147
- Type: FunctionTypeId,
148
- id,
149
- env,
150
- set: (id: string, output: Output.Output) =>
151
- Effect.sync(() => {
152
- const key = id.replaceAll(/[^a-zA-Z0-9]/g, "_");
153
- env[key] = output.pipe(Output.map((value) => JSON.stringify(value)));
154
- return key;
155
- }),
156
- get: <T>(key: string) =>
157
- Config.string(key)
158
- .asEffect()
159
- .pipe(
160
- Effect.flatMap((val) =>
161
- Effect.try({
162
- try: () => JSON.parse(val) as T,
163
- catch: () => val, // assume it's just a string
164
- }),
165
- ),
166
- Effect.catch((cause) =>
167
- Effect.die(
168
- new Error(`Failed to get environment variable: ${key}`, {
169
- cause,
141
+ > = Platform(FunctionTypeId, {
142
+ createExecutionContext: (id: string): Serverless.FunctionContext => {
143
+ const listeners: Effect.Effect<Serverless.FunctionListener>[] = [];
144
+ const env: Record<string, any> = {};
145
+
146
+ const ctx = {
147
+ Type: FunctionTypeId,
148
+ id,
149
+ env,
150
+ set: (id: string, output: Output.Output) =>
151
+ Effect.sync(() => {
152
+ const key = id.replaceAll(/[^a-zA-Z0-9]/g, "_");
153
+ env[key] = output.pipe(Output.map((value) => JSON.stringify(value)));
154
+ return key;
155
+ }),
156
+ get: <T>(key: string) =>
157
+ Config.string(key)
158
+ .asEffect()
159
+ .pipe(
160
+ Effect.flatMap((val) =>
161
+ Effect.try({
162
+ try: () => JSON.parse(val) as T,
163
+ catch: () => val, // assume it's just a string
170
164
  }),
171
165
  ),
166
+ Effect.catch((cause) =>
167
+ Effect.die(
168
+ new Error(`Failed to get environment variable: ${key}`, {
169
+ cause,
170
+ }),
171
+ ),
172
+ ),
172
173
  ),
173
- ),
174
- serve: (handler: HttpEffect) =>
175
- ctx.listen(makeFunctionHttpHandler(handler)),
176
- listen: ((
177
- handler:
178
- | Serverless.FunctionListener
179
- | Effect.Effect<Serverless.FunctionListener>,
180
- ) =>
181
- Effect.sync(() =>
182
- Effect.isEffect(handler)
183
- ? listeners.push(handler)
184
- : listeners.push(Effect.succeed(handler)),
185
- )) as any as Serverless.FunctionContext["listen"],
186
- exports: Effect.sync(() => ({
187
- // construct an Effect that produces the Function's entrypoint
188
- // Effect<(event, context) => Promise<any>>
189
- handler: Effect.map(
190
- Effect.all(listeners, {
191
- concurrency: "unbounded",
192
- }),
193
- (handlers) =>
194
- async (event: any, context: lambda.Context): Promise<any> => {
195
- console.log({ event, handlers });
196
- for (const handler of handlers) {
197
- const eff = handler(event);
198
- if (Effect.isEffect(eff)) {
199
- return await eff.pipe(
200
- Effect.provideService(HandlerContext, context),
201
- Effect.tap(Effect.logDebug),
202
- Effect.runPromise,
203
- );
174
+ serve: (handler: HttpEffect) =>
175
+ ctx.listen(makeFunctionHttpHandler(handler)),
176
+ listen: ((
177
+ handler:
178
+ | Serverless.FunctionListener
179
+ | Effect.Effect<Serverless.FunctionListener>,
180
+ ) =>
181
+ Effect.sync(() =>
182
+ Effect.isEffect(handler)
183
+ ? listeners.push(handler)
184
+ : listeners.push(Effect.succeed(handler)),
185
+ )) as any as Serverless.FunctionContext["listen"],
186
+ exports: Effect.sync(() => ({
187
+ // construct an Effect that produces the Function's entrypoint
188
+ // Effect<(event, context) => Promise<any>>
189
+ handler: Effect.map(
190
+ Effect.all(listeners, {
191
+ concurrency: "unbounded",
192
+ }),
193
+ (handlers) =>
194
+ async (event: any, context: lambda.Context): Promise<any> => {
195
+ console.log({ event, handlers });
196
+ for (const handler of handlers) {
197
+ const eff = handler(event);
198
+ if (Effect.isEffect(eff)) {
199
+ return await eff.pipe(
200
+ Effect.provideService(HandlerContext, context),
201
+ Effect.tap(Effect.logDebug),
202
+ Effect.runPromise,
203
+ );
204
+ }
204
205
  }
205
- }
206
- throw new Error("No event handler found");
207
- },
208
- ),
209
- })),
210
- };
211
- return ctx;
206
+ throw new Error("No event handler found");
207
+ },
208
+ ),
209
+ })),
210
+ };
211
+ return ctx;
212
+ },
212
213
  });
213
214
 
214
215
  export const FunctionProvider = () =>
@@ -218,7 +219,6 @@ export const FunctionProvider = () =>
218
219
  const accountId = yield* Account;
219
220
  const region = yield* Region;
220
221
  const fs = yield* FileSystem.FileSystem;
221
- const path = yield* Path.Path;
222
222
  const virtualEntryPlugin = yield* Bundle.virtualEntryPlugin;
223
223
  const alchemyEnv = {
224
224
  ALCHEMY_STACK_NAME: stack.name,
package/src/Apply.ts CHANGED
@@ -411,6 +411,7 @@ const executeNode = (
411
411
  news: node.props,
412
412
  session: scopedSession,
413
413
  instanceId,
414
+ bindings: excludeDeletedBindings(node.bindings),
414
415
  })
415
416
  .pipe(provideLifecycleScope(fqn, instanceId));
416
417
  yield* commit<CreatingResourceState>({
@@ -656,6 +657,7 @@ const executeNode = (
656
657
  news: node.props,
657
658
  session: scopedSession,
658
659
  instanceId,
660
+ bindings: excludeDeletedBindings(node.bindings),
659
661
  })
660
662
  .pipe(provideLifecycleScope(fqn, instanceId));
661
663
  yield* commit<ReplacingResourceState>({
package/src/Artifacts.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import * as Deferred from "effect/Deferred";
1
2
  import * as Effect from "effect/Effect";
2
3
  import * as Layer from "effect/Layer";
3
4
  import * as Option from "effect/Option";
@@ -134,14 +135,22 @@ export const ensureArtifactStore = <A, E, R>(
134
135
 
135
136
  export const cached =
136
137
  (id: string) =>
137
- <A, Err = never, Req = never>(eff: Effect.Effect<A, Err, Req>) =>
138
+ <A, Err = never, Req = never>(
139
+ eff: Effect.Effect<A, Err, Req>,
140
+ ): Effect.Effect<A, Err, Req | Artifacts> =>
138
141
  Effect.gen(function* () {
139
142
  const artifacts = yield* Artifacts;
143
+ const deferred = yield* Deferred.make<A>();
140
144
  const cached = yield* artifacts.get<A>(id);
141
145
  if (cached) {
146
+ if (Effect.isEffect(cached)) {
147
+ return yield* cached;
148
+ }
142
149
  return cached;
143
150
  }
151
+ yield* artifacts.set(id, Deferred.await(deferred));
144
152
  const result = yield* eff;
153
+ yield* Deferred.succeed(deferred, result);
145
154
  yield* artifacts.set(id, result);
146
155
  return result;
147
156
  });
package/src/Binding.ts CHANGED
@@ -28,15 +28,22 @@ export interface Service<
28
28
  extends ServiceMap.Service<Self, Shape>, ServiceLike {
29
29
  readonly key: Identifier;
30
30
  new (_: never): ServiceShape<Identifier, Shape>;
31
- bind: (
32
- ...args: Parameters<Shape>
31
+ bind: <Req = never>(
32
+ ...args: BindParameters<Parameters<Shape>, Req>
33
33
  ) => Effect.Effect<
34
34
  Effect.Success<ReturnType<Shape>>,
35
35
  Effect.Error<ReturnType<Shape>>,
36
- Self | Effect.Services<ReturnType<Shape>>
36
+ Self | Effect.Services<ReturnType<Shape>> | Req
37
37
  >;
38
38
  }
39
39
 
40
+ type BindParameters<
41
+ Parameters extends any[],
42
+ Req = never,
43
+ > = Parameters extends [infer First, ...infer Rest]
44
+ ? [First | Effect.Effect<First, never, Req>, ...BindParameters<Rest, Req>]
45
+ : [];
46
+
40
47
  /**
41
48
  * Creates a runtime binding service.
42
49
  *
@@ -140,8 +147,16 @@ export const Policy =
140
147
  Effect.map(
141
148
  ([resource, fn]) =>
142
149
  (...args: any[]) =>
143
- fn(...args).pipe(
144
- Namespace.push((resource as ResourceLike).LogicalId),
150
+ Effect.all(
151
+ args.map((arg) =>
152
+ Effect.isEffect(arg) ? arg : Effect.succeed(arg),
153
+ ),
154
+ ).pipe(
155
+ Effect.flatMap((args) =>
156
+ fn(...args).pipe(
157
+ Namespace.push((resource as ResourceLike).LogicalId),
158
+ ),
159
+ ),
145
160
  ),
146
161
  ),
147
162
  );