1import * as Layer from "effect/Layer";
2import { Stack } from "../Stack.ts";
3import * as State from "../State/index.ts";
4
5export const state = (resources: Record<string, State.ResourceState> = {}) =>
6 Layer.effect(
7 State.State,
8 Stack.useSync((stack) =>
9 State.InMemoryService({
10 [stack.name]: {
11 [stack.stage]: resources,
12 },
13 }),
14 ),
15 );
16
17export const defaultState = (
18 resources: Record<string, State.ResourceState> = {},
19 other?: {
20 [stack: string]: {
21 [stage: string]: {
22 [resourceId: string]: State.ResourceState;
23 };
24 };
25 },
26) =>
27 Layer.succeed(
28 State.State,
29 State.InMemoryService({
30 ["test-app"]: {
31 ["test-stage"]: resources,
32 },
33 ...other,
34 }),
35 );