alchemy-effect 0.6.3 → 0.7.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/bin/alchemy-effect.js +90 -20
- package/bin/alchemy-effect.js.map +1 -1
- package/bin/alchemy-effect.ts +27 -24
- package/lib/cli/index.d.ts +1 -0
- package/lib/cli/index.d.ts.map +1 -1
- package/package.json +13 -3
- package/src/AWS/Website/StaticSite.ts +5 -7
- package/src/AWS/Website/shared.ts +15 -3
- package/src/Apply.ts +143 -107
- package/src/Artifacts.ts +147 -0
- package/src/Build/Command.ts +21 -99
- package/src/Build/Memo.ts +187 -0
- package/src/Bundle/Bundle.ts +23 -17
- package/src/Cloudflare/Website/Vite.ts +65 -0
- package/src/Cloudflare/Website/index.ts +1 -1
- package/src/Cloudflare/Workers/Assets.ts +7 -2
- package/src/Cloudflare/Workers/Worker.ts +189 -59
- package/src/Destroy.ts +3 -2
- package/src/Output.ts +4 -0
- package/src/Plan.ts +606 -585
- package/src/Stack.ts +18 -6
- package/src/Test/Vitest.ts +20 -11
- package/src/Util/gitignore-rules-to-globs.ts +80 -0
- package/src/Cloudflare/Website/TanstackStart.ts +0 -14
package/bin/alchemy-effect.ts
CHANGED
|
@@ -18,6 +18,7 @@ import * as ChildProcess from "effect/unstable/process/ChildProcess";
|
|
|
18
18
|
|
|
19
19
|
import packageJson from "../package.json" with { type: "json" };
|
|
20
20
|
import { apply } from "../src/Apply.ts";
|
|
21
|
+
import { provideFreshArtifactStore } from "../src/Artifacts.ts";
|
|
21
22
|
import * as AWSAccount from "../src/AWS/Account.ts";
|
|
22
23
|
import {
|
|
23
24
|
bootstrap as bootstrapAws,
|
|
@@ -230,33 +231,35 @@ const execStack = Effect.fn(function* ({
|
|
|
230
231
|
const cli = yield* CLI.Cli;
|
|
231
232
|
const stack = yield* stackEffect;
|
|
232
233
|
|
|
233
|
-
yield*
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
234
|
+
yield* provideFreshArtifactStore(
|
|
235
|
+
Effect.gen(function* () {
|
|
236
|
+
const updatePlan = yield* Plan.make(
|
|
237
|
+
destroy
|
|
238
|
+
? {
|
|
239
|
+
...stack,
|
|
240
|
+
// zero these out (destroy will treat all as orphans)
|
|
241
|
+
// TODO(sam): probably better to have Plan.destroy and Plan.update
|
|
242
|
+
resources: {},
|
|
243
|
+
bindings: {},
|
|
244
|
+
output: {},
|
|
245
|
+
}
|
|
246
|
+
: stack,
|
|
247
|
+
);
|
|
248
|
+
if (dryRun) {
|
|
249
|
+
yield* cli.displayPlan(updatePlan);
|
|
250
|
+
} else {
|
|
251
|
+
if (!yes) {
|
|
252
|
+
const approved = yield* cli.approvePlan(updatePlan);
|
|
253
|
+
if (!approved) {
|
|
254
|
+
return;
|
|
243
255
|
}
|
|
244
|
-
: stack,
|
|
245
|
-
);
|
|
246
|
-
if (dryRun) {
|
|
247
|
-
yield* cli.displayPlan(updatePlan);
|
|
248
|
-
} else {
|
|
249
|
-
if (!yes) {
|
|
250
|
-
const approved = yield* cli.approvePlan(updatePlan);
|
|
251
|
-
if (!approved) {
|
|
252
|
-
return;
|
|
253
256
|
}
|
|
254
|
-
|
|
255
|
-
const outputs = yield* apply(updatePlan);
|
|
257
|
+
const outputs = yield* apply(updatePlan);
|
|
256
258
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
259
|
+
yield* Console.log(outputs);
|
|
260
|
+
}
|
|
261
|
+
}),
|
|
262
|
+
).pipe(
|
|
260
263
|
Effect.provide(stack.services),
|
|
261
264
|
// Effect.provide(Logger.layer([fileLogger("stacks", stack.name, stage)])),
|
|
262
265
|
);
|
package/lib/cli/index.d.ts
CHANGED
|
@@ -184,6 +184,7 @@ interface Output<A = any, Req$1 = any> extends Pipeable {
|
|
|
184
184
|
[Symbol.iterator](): Iterator<Yieldable<any, void, never, Req$1>, Accessor<A>, void>;
|
|
185
185
|
bind(id: string): Effect$1.Effect<Effect$1.Effect<A>, never, ExecutionContext>;
|
|
186
186
|
asEffect(): Effect$1.Effect<Accessor<A>, never, Req$1>;
|
|
187
|
+
as<T>(): Output<T, Req$1>;
|
|
187
188
|
}
|
|
188
189
|
interface Accessor<A> extends Effect$1.Effect<A> {}
|
|
189
190
|
//#endregion
|
package/lib/cli/index.d.ts.map
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"homepage": "https://alchemy.run",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Sam Goodwin <sam@alchemy.run>",
|
|
@@ -146,6 +146,11 @@
|
|
|
146
146
|
"bun": "./src/State/index.ts",
|
|
147
147
|
"import": "./lib/State/index.js"
|
|
148
148
|
},
|
|
149
|
+
"./Test/Bun": {
|
|
150
|
+
"types": "./src/Test/Bun.d.ts",
|
|
151
|
+
"bun": "./src/Test/Bun.ts",
|
|
152
|
+
"import": "./lib/Test/Bun.js"
|
|
153
|
+
},
|
|
149
154
|
"./Util": {
|
|
150
155
|
"types": "./src/Util/index.d.ts",
|
|
151
156
|
"bun": "./src/Util/index.ts",
|
|
@@ -170,7 +175,8 @@
|
|
|
170
175
|
"@aws-sdk/credential-providers": "^3.0.0",
|
|
171
176
|
"@distilled.cloud/aws": "^0.7.11",
|
|
172
177
|
"@distilled.cloud/cloudflare": "^0.7.11",
|
|
173
|
-
"@distilled.cloud/cloudflare-rolldown-plugin": "
|
|
178
|
+
"@distilled.cloud/cloudflare-rolldown-plugin": "0.2.0",
|
|
179
|
+
"@distilled.cloud/cloudflare-vite-plugin": "0.1.0",
|
|
174
180
|
"@distilled.cloud/core": "^0.7.11",
|
|
175
181
|
"@effect/vitest": "4.0.0-beta.43",
|
|
176
182
|
"@libsql/client": "^0.17.0",
|
|
@@ -216,7 +222,8 @@
|
|
|
216
222
|
"peerDependencies": {
|
|
217
223
|
"@effect/platform-bun": "*",
|
|
218
224
|
"@effect/platform-node": "*",
|
|
219
|
-
"effect": "*"
|
|
225
|
+
"effect": "*",
|
|
226
|
+
"vite": "^8.0.7"
|
|
220
227
|
},
|
|
221
228
|
"peerDependenciesMeta": {
|
|
222
229
|
"@effect/platform-node": {
|
|
@@ -227,6 +234,9 @@
|
|
|
227
234
|
},
|
|
228
235
|
"effect": {
|
|
229
236
|
"optional": true
|
|
237
|
+
},
|
|
238
|
+
"vite": {
|
|
239
|
+
"optional": true
|
|
230
240
|
}
|
|
231
241
|
}
|
|
232
242
|
}
|
|
@@ -189,13 +189,11 @@ export const StaticSite = Construct.fn(function* (
|
|
|
189
189
|
? yield* Command("Build", {
|
|
190
190
|
command: props.build.command,
|
|
191
191
|
cwd: sitePath,
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
"**/.git/**",
|
|
198
|
-
],
|
|
192
|
+
memo: {
|
|
193
|
+
include: props.build.include,
|
|
194
|
+
exclude: props.build.exclude,
|
|
195
|
+
lockfile: props.build.lockfile,
|
|
196
|
+
},
|
|
199
197
|
outdir: props.build.output,
|
|
200
198
|
env: props.environment,
|
|
201
199
|
})
|
|
@@ -91,14 +91,26 @@ export interface StaticSiteBuildProps {
|
|
|
91
91
|
*/
|
|
92
92
|
output: string;
|
|
93
93
|
/**
|
|
94
|
-
*
|
|
95
|
-
*
|
|
94
|
+
* Glob patterns of files to hash. Paths are relative to `path`.
|
|
95
|
+
* When the hash of matched files changes, the build will re-run.
|
|
96
|
+
*
|
|
97
|
+
* @default ["**\/*"] (all files, filtered by `exclude`)
|
|
98
|
+
* @example ["src/**", "package.json", "tsconfig.json"]
|
|
96
99
|
*/
|
|
97
100
|
include?: string[];
|
|
98
101
|
/**
|
|
99
|
-
*
|
|
102
|
+
* Glob patterns to exclude from input hashing. Paths are relative to `path`.
|
|
103
|
+
*
|
|
104
|
+
* @default gitignore rules collected from the working directory up to the repo root
|
|
100
105
|
*/
|
|
101
106
|
exclude?: string[];
|
|
107
|
+
/**
|
|
108
|
+
* Whether to include the nearest package-manager lockfile in the hash,
|
|
109
|
+
* even when it lives above the site directory (e.g. monorepo root).
|
|
110
|
+
*
|
|
111
|
+
* @default true when both `include` and `exclude` are unset; false otherwise
|
|
112
|
+
*/
|
|
113
|
+
lockfile?: boolean;
|
|
102
114
|
}
|
|
103
115
|
|
|
104
116
|
export interface StaticSiteAssetsProps {
|
package/src/Apply.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import * as Deferred from "effect/Deferred";
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
|
-
import * as Layer from "effect/Layer";
|
|
4
3
|
import type { Simplify } from "effect/Types";
|
|
4
|
+
import {
|
|
5
|
+
Artifacts,
|
|
6
|
+
ArtifactStore,
|
|
7
|
+
createArtifactStore,
|
|
8
|
+
ensureArtifactStore,
|
|
9
|
+
makeScopedArtifacts,
|
|
10
|
+
} from "./Artifacts.ts";
|
|
11
|
+
import * as Option from "effect/Option";
|
|
5
12
|
import {
|
|
6
13
|
type PlanStatusSession,
|
|
7
14
|
type ScopedPlanStatusSession,
|
|
@@ -59,6 +66,21 @@ interface ResourceTracker {
|
|
|
59
66
|
instanceId: string;
|
|
60
67
|
}
|
|
61
68
|
|
|
69
|
+
const provideLifecycleScope =
|
|
70
|
+
(fqn: string, instanceId: string) =>
|
|
71
|
+
<A, E, R>(
|
|
72
|
+
effect: Effect.Effect<A, E, R>,
|
|
73
|
+
): Effect.Effect<A, E, Exclude<R, InstanceId | Artifacts>> =>
|
|
74
|
+
Effect.serviceOption(ArtifactStore).pipe(
|
|
75
|
+
Effect.map(Option.getOrElse(createArtifactStore)),
|
|
76
|
+
Effect.flatMap((store) =>
|
|
77
|
+
effect.pipe(
|
|
78
|
+
Effect.provideService(Artifacts, makeScopedArtifacts(store, fqn)),
|
|
79
|
+
Effect.provideService(InstanceId, instanceId),
|
|
80
|
+
),
|
|
81
|
+
),
|
|
82
|
+
) as Effect.Effect<A, E, Exclude<R, InstanceId | Artifacts>>;
|
|
83
|
+
|
|
62
84
|
export const apply = <P extends Plan>(
|
|
63
85
|
plan: P,
|
|
64
86
|
): Effect.Effect<
|
|
@@ -66,68 +88,70 @@ export const apply = <P extends Plan>(
|
|
|
66
88
|
Output.InvalidReferenceError | Output.MissingSourceError | StateStoreError,
|
|
67
89
|
Cli | State | Stack | Stage
|
|
68
90
|
> =>
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
yield* executePlan(
|
|
88
|
-
plan,
|
|
89
|
-
tracker,
|
|
90
|
-
terminalStatuses,
|
|
91
|
-
session,
|
|
92
|
-
state,
|
|
93
|
-
stackName,
|
|
94
|
-
stage,
|
|
95
|
-
);
|
|
91
|
+
ensureArtifactStore(
|
|
92
|
+
Effect.gen(function* () {
|
|
93
|
+
const cli = yield* Cli;
|
|
94
|
+
const session = yield* cli.startApplySession(plan);
|
|
95
|
+
const state = yield* State;
|
|
96
|
+
const stack = yield* Stack;
|
|
97
|
+
const stage = yield* Stage;
|
|
98
|
+
const stackName = stack.name;
|
|
99
|
+
|
|
100
|
+
const tracker: Record<string, ResourceTracker> = {};
|
|
101
|
+
const terminalStatuses = new Map<
|
|
102
|
+
string,
|
|
103
|
+
{
|
|
104
|
+
id: string;
|
|
105
|
+
type: string;
|
|
106
|
+
status: Extract<ApplyStatus, "created" | "updated">;
|
|
107
|
+
}
|
|
108
|
+
>();
|
|
96
109
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
110
|
+
yield* executePlan(
|
|
111
|
+
plan,
|
|
112
|
+
tracker,
|
|
113
|
+
terminalStatuses,
|
|
114
|
+
session,
|
|
115
|
+
state,
|
|
116
|
+
stackName,
|
|
117
|
+
stage,
|
|
118
|
+
);
|
|
100
119
|
|
|
101
|
-
|
|
120
|
+
// TODO(sam): support roll back to previous state if errors occur during expansion
|
|
121
|
+
// -> RISK: some UPDATEs may not be reversible (i.e. trigger replacements)
|
|
122
|
+
// TODO(sam): should pivot be done separately? E.g shift traffic?
|
|
102
123
|
|
|
103
|
-
|
|
104
|
-
plan,
|
|
105
|
-
tracker,
|
|
106
|
-
terminalStatuses,
|
|
107
|
-
session,
|
|
108
|
-
state,
|
|
109
|
-
stackName,
|
|
110
|
-
stage,
|
|
111
|
-
);
|
|
124
|
+
yield* collectGarbage(plan, session);
|
|
112
125
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
126
|
+
yield* converge(
|
|
127
|
+
plan,
|
|
128
|
+
tracker,
|
|
129
|
+
terminalStatuses,
|
|
130
|
+
session,
|
|
131
|
+
state,
|
|
132
|
+
stackName,
|
|
133
|
+
stage,
|
|
134
|
+
);
|
|
119
135
|
|
|
120
|
-
|
|
136
|
+
yield* Effect.forEach(
|
|
137
|
+
Array.from(terminalStatuses.values()),
|
|
138
|
+
({ id, type, status }) =>
|
|
139
|
+
session.emit({ kind: "status-change", id, type, status }),
|
|
140
|
+
{ concurrency: "unbounded" },
|
|
141
|
+
);
|
|
121
142
|
|
|
122
|
-
|
|
123
|
-
return undefined;
|
|
124
|
-
}
|
|
143
|
+
yield* session.done();
|
|
125
144
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
145
|
+
if (!plan.output) {
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
const outputs = Object.fromEntries(
|
|
150
|
+
Object.entries(tracker).map(([fqn, t]) => [fqn, t.output]),
|
|
151
|
+
);
|
|
152
|
+
return yield* Output.evaluate(plan.output, outputs);
|
|
153
|
+
}),
|
|
154
|
+
);
|
|
131
155
|
|
|
132
156
|
// ── Phase 1: concurrent initial execution ──────────────────────────────────
|
|
133
157
|
//
|
|
@@ -381,12 +405,14 @@ const executeNode = (
|
|
|
381
405
|
// Some resources need a placeholder physical resource before their real
|
|
382
406
|
// create can finish. Persist that stub so downstream evaluation can proceed.
|
|
383
407
|
yield* report("pre-creating");
|
|
384
|
-
attr = yield* node.provider
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
408
|
+
attr = yield* node.provider
|
|
409
|
+
.precreate({
|
|
410
|
+
id: logicalId,
|
|
411
|
+
news: node.props,
|
|
412
|
+
session: scopedSession,
|
|
413
|
+
instanceId,
|
|
414
|
+
})
|
|
415
|
+
.pipe(provideLifecycleScope(fqn, instanceId));
|
|
390
416
|
yield* commit<CreatingResourceState>({
|
|
391
417
|
status: "creating",
|
|
392
418
|
fqn,
|
|
@@ -424,14 +450,16 @@ const executeNode = (
|
|
|
424
450
|
yield* Output.evaluate(node.bindings, outputs),
|
|
425
451
|
);
|
|
426
452
|
|
|
427
|
-
attr = yield* node.provider
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
453
|
+
attr = yield* node.provider
|
|
454
|
+
.create({
|
|
455
|
+
id: logicalId,
|
|
456
|
+
news,
|
|
457
|
+
instanceId,
|
|
458
|
+
bindings: bindingOutputs,
|
|
459
|
+
session: scopedSession,
|
|
460
|
+
output: attr,
|
|
461
|
+
})
|
|
462
|
+
.pipe(provideLifecycleScope(fqn, instanceId));
|
|
435
463
|
|
|
436
464
|
yield* commit<CreatedResourceState>({
|
|
437
465
|
status: "created",
|
|
@@ -519,16 +547,18 @@ const executeNode = (
|
|
|
519
547
|
yield* Output.evaluate(node.bindings, outputs),
|
|
520
548
|
);
|
|
521
549
|
|
|
522
|
-
const attr = yield* node.provider
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
550
|
+
const attr = yield* node.provider
|
|
551
|
+
.update({
|
|
552
|
+
id: logicalId,
|
|
553
|
+
news,
|
|
554
|
+
instanceId,
|
|
555
|
+
bindings: bindingOutputs,
|
|
556
|
+
session: scopedSession,
|
|
557
|
+
olds: previousProps,
|
|
558
|
+
// @ts-expect-error - type system says this can be undefined, can it be?
|
|
559
|
+
output: node.state.attr,
|
|
560
|
+
})
|
|
561
|
+
.pipe(provideLifecycleScope(fqn, instanceId));
|
|
532
562
|
|
|
533
563
|
if (node.state.status === "replaced") {
|
|
534
564
|
yield* commit<ReplacedResourceState>({
|
|
@@ -620,12 +650,14 @@ const executeNode = (
|
|
|
620
650
|
|
|
621
651
|
if (node.provider.precreate && attr === undefined) {
|
|
622
652
|
yield* report("pre-creating");
|
|
623
|
-
attr = yield* node.provider
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
653
|
+
attr = yield* node.provider
|
|
654
|
+
.precreate({
|
|
655
|
+
id: logicalId,
|
|
656
|
+
news: node.props,
|
|
657
|
+
session: scopedSession,
|
|
658
|
+
instanceId,
|
|
659
|
+
})
|
|
660
|
+
.pipe(provideLifecycleScope(fqn, instanceId));
|
|
629
661
|
yield* commit<ReplacingResourceState>({
|
|
630
662
|
status: "replacing",
|
|
631
663
|
fqn,
|
|
@@ -665,14 +697,16 @@ const executeNode = (
|
|
|
665
697
|
yield* Output.evaluate(node.bindings, outputs),
|
|
666
698
|
);
|
|
667
699
|
|
|
668
|
-
attr = yield* node.provider
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
700
|
+
attr = yield* node.provider
|
|
701
|
+
.create({
|
|
702
|
+
id: logicalId,
|
|
703
|
+
news,
|
|
704
|
+
instanceId,
|
|
705
|
+
bindings: bindingOutputs,
|
|
706
|
+
session: scopedSession,
|
|
707
|
+
output: attr,
|
|
708
|
+
})
|
|
709
|
+
.pipe(provideLifecycleScope(fqn, instanceId));
|
|
676
710
|
|
|
677
711
|
yield* commit<ReplacedResourceState>({
|
|
678
712
|
// Creation of the new generation succeeded; from here on the only remaining
|
|
@@ -710,7 +744,7 @@ const executeNode = (
|
|
|
710
744
|
|
|
711
745
|
// @ts-expect-error - node is never, this should be unreachable
|
|
712
746
|
return yield* Effect.die(`Unknown action: ${node.action}`);
|
|
713
|
-
})
|
|
747
|
+
});
|
|
714
748
|
}) as Effect.Effect<void, never, never>;
|
|
715
749
|
|
|
716
750
|
// ── Phase 3: imperative convergence loop ───────────────────────────────────
|
|
@@ -796,7 +830,7 @@ const converge = Effect.fnUntraced(function* (
|
|
|
796
830
|
olds: oldProps,
|
|
797
831
|
output: tracker[fqn].output,
|
|
798
832
|
})
|
|
799
|
-
.pipe(
|
|
833
|
+
.pipe(provideLifecycleScope(fqn, instanceId));
|
|
800
834
|
|
|
801
835
|
tracker[fqn] = {
|
|
802
836
|
output: attr,
|
|
@@ -851,13 +885,13 @@ const collectGarbage = Effect.fnUntraced(function* (
|
|
|
851
885
|
deletionGraph: Record<string, Delete | ReplacedResourceState | undefined>,
|
|
852
886
|
) {
|
|
853
887
|
const deletions: {
|
|
854
|
-
[fqn in string]: Effect.Effect<void, StateStoreError,
|
|
888
|
+
[fqn in string]: Effect.Effect<void, StateStoreError, ArtifactStore>;
|
|
855
889
|
} = {};
|
|
856
890
|
|
|
857
891
|
const deleteResource = (
|
|
858
892
|
node: Delete | ReplacedResourceState,
|
|
859
893
|
ancestors: ReadonlySet<string> = new Set(),
|
|
860
|
-
): Effect.Effect<void, StateStoreError,
|
|
894
|
+
): Effect.Effect<void, StateStoreError, ArtifactStore> =>
|
|
861
895
|
Effect.gen(function* () {
|
|
862
896
|
const isDeleteNode = (
|
|
863
897
|
node: Delete | ReplacedResourceState,
|
|
@@ -964,14 +998,16 @@ const collectGarbage = Effect.fnUntraced(function* (
|
|
|
964
998
|
}
|
|
965
999
|
|
|
966
1000
|
if (attr !== undefined) {
|
|
967
|
-
yield* provider
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
1001
|
+
yield* provider
|
|
1002
|
+
.delete({
|
|
1003
|
+
id: logicalId,
|
|
1004
|
+
instanceId,
|
|
1005
|
+
olds: props as never,
|
|
1006
|
+
output: attr,
|
|
1007
|
+
session: scopedSession,
|
|
1008
|
+
bindings: [],
|
|
1009
|
+
})
|
|
1010
|
+
.pipe(provideLifecycleScope(fqn, instanceId));
|
|
975
1011
|
}
|
|
976
1012
|
|
|
977
1013
|
if (isDeleteNode(node)) {
|
|
@@ -1024,7 +1060,7 @@ const collectGarbage = Effect.fnUntraced(function* (
|
|
|
1024
1060
|
}
|
|
1025
1061
|
yield* scopedSession.note("Replaced resource cleanup complete.");
|
|
1026
1062
|
}
|
|
1027
|
-
})
|
|
1063
|
+
}),
|
|
1028
1064
|
));
|
|
1029
1065
|
});
|
|
1030
1066
|
|