alchemy-effect 0.4.0 → 0.6.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/README.md +13 -7
- package/bin/alchemy-effect.js +307 -266
- package/bin/alchemy-effect.js.map +1 -1
- package/lib/apply.d.ts.map +1 -1
- package/lib/apply.js +253 -246
- package/lib/apply.js.map +1 -1
- package/lib/aws/client.d.ts.map +1 -1
- package/lib/aws/client.js +15 -2
- package/lib/aws/client.js.map +1 -1
- package/lib/aws/dynamodb/secondary-index.d.ts.map +1 -1
- package/lib/aws/dynamodb/table.d.ts.map +1 -1
- package/lib/aws/dynamodb/table.js.map +1 -1
- package/lib/aws/dynamodb/table.provider.d.ts.map +1 -1
- package/lib/aws/dynamodb/table.provider.js +10 -2
- package/lib/aws/dynamodb/table.provider.js.map +1 -1
- package/lib/aws/ec2/egress-only-igw.d.ts +55 -0
- package/lib/aws/ec2/egress-only-igw.d.ts.map +1 -0
- package/lib/aws/ec2/egress-only-igw.js +4 -0
- package/lib/aws/ec2/egress-only-igw.js.map +1 -0
- package/lib/aws/ec2/egress-only-igw.provider.d.ts +6 -0
- package/lib/aws/ec2/egress-only-igw.provider.d.ts.map +1 -0
- package/lib/aws/ec2/egress-only-igw.provider.js +114 -0
- package/lib/aws/ec2/egress-only-igw.provider.js.map +1 -0
- package/lib/aws/ec2/eip.d.ts +85 -0
- package/lib/aws/ec2/eip.d.ts.map +1 -0
- package/lib/aws/ec2/eip.js +4 -0
- package/lib/aws/ec2/eip.js.map +1 -0
- package/lib/aws/ec2/eip.provider.d.ts +6 -0
- package/lib/aws/ec2/eip.provider.d.ts.map +1 -0
- package/lib/aws/ec2/eip.provider.js +135 -0
- package/lib/aws/ec2/eip.provider.js.map +1 -0
- package/lib/aws/ec2/index.d.ts +18 -0
- package/lib/aws/ec2/index.d.ts.map +1 -1
- package/lib/aws/ec2/index.js +18 -0
- package/lib/aws/ec2/index.js.map +1 -1
- package/lib/aws/ec2/internet-gateway.d.ts.map +1 -1
- package/lib/aws/ec2/internet-gateway.provider.d.ts.map +1 -1
- package/lib/aws/ec2/internet-gateway.provider.js +9 -5
- package/lib/aws/ec2/internet-gateway.provider.js.map +1 -1
- package/lib/aws/ec2/nat-gateway.d.ts +127 -0
- package/lib/aws/ec2/nat-gateway.d.ts.map +1 -0
- package/lib/aws/ec2/nat-gateway.js +4 -0
- package/lib/aws/ec2/nat-gateway.js.map +1 -0
- package/lib/aws/ec2/nat-gateway.provider.d.ts +6 -0
- package/lib/aws/ec2/nat-gateway.provider.d.ts.map +1 -0
- package/lib/aws/ec2/nat-gateway.provider.js +222 -0
- package/lib/aws/ec2/nat-gateway.provider.js.map +1 -0
- package/lib/aws/ec2/network-acl-association.d.ts +44 -0
- package/lib/aws/ec2/network-acl-association.d.ts.map +1 -0
- package/lib/aws/ec2/network-acl-association.js +4 -0
- package/lib/aws/ec2/network-acl-association.js.map +1 -0
- package/lib/aws/ec2/network-acl-association.provider.d.ts +4 -0
- package/lib/aws/ec2/network-acl-association.provider.d.ts.map +1 -0
- package/lib/aws/ec2/network-acl-association.provider.js +115 -0
- package/lib/aws/ec2/network-acl-association.provider.js.map +1 -0
- package/lib/aws/ec2/network-acl-entry.d.ts +118 -0
- package/lib/aws/ec2/network-acl-entry.d.ts.map +1 -0
- package/lib/aws/ec2/network-acl-entry.js +3 -0
- package/lib/aws/ec2/network-acl-entry.js.map +1 -0
- package/lib/aws/ec2/network-acl-entry.provider.d.ts +4 -0
- package/lib/aws/ec2/network-acl-entry.provider.d.ts.map +1 -0
- package/lib/aws/ec2/network-acl-entry.provider.js +129 -0
- package/lib/aws/ec2/network-acl-entry.provider.js.map +1 -0
- package/lib/aws/ec2/network-acl.d.ts +82 -0
- package/lib/aws/ec2/network-acl.d.ts.map +1 -0
- package/lib/aws/ec2/network-acl.js +4 -0
- package/lib/aws/ec2/network-acl.js.map +1 -0
- package/lib/aws/ec2/network-acl.provider.d.ts +6 -0
- package/lib/aws/ec2/network-acl.provider.d.ts.map +1 -0
- package/lib/aws/ec2/network-acl.provider.js +136 -0
- package/lib/aws/ec2/network-acl.provider.js.map +1 -0
- package/lib/aws/ec2/route-table-association.d.ts.map +1 -1
- package/lib/aws/ec2/route-table-association.provider.d.ts.map +1 -1
- package/lib/aws/ec2/route-table-association.provider.js.map +1 -1
- package/lib/aws/ec2/route-table.d.ts.map +1 -1
- package/lib/aws/ec2/route-table.provider.d.ts.map +1 -1
- package/lib/aws/ec2/route-table.provider.js.map +1 -1
- package/lib/aws/ec2/route.d.ts.map +1 -1
- package/lib/aws/ec2/route.provider.d.ts.map +1 -1
- package/lib/aws/ec2/route.provider.js.map +1 -1
- package/lib/aws/ec2/security-group-rule.d.ts +118 -0
- package/lib/aws/ec2/security-group-rule.d.ts.map +1 -0
- package/lib/aws/ec2/security-group-rule.js +4 -0
- package/lib/aws/ec2/security-group-rule.js.map +1 -0
- package/lib/aws/ec2/security-group-rule.provider.d.ts +4 -0
- package/lib/aws/ec2/security-group-rule.provider.d.ts.map +1 -0
- package/lib/aws/ec2/security-group-rule.provider.js +193 -0
- package/lib/aws/ec2/security-group-rule.provider.js.map +1 -0
- package/lib/aws/ec2/security-group.d.ts +147 -0
- package/lib/aws/ec2/security-group.d.ts.map +1 -0
- package/lib/aws/ec2/security-group.js +4 -0
- package/lib/aws/ec2/security-group.js.map +1 -0
- package/lib/aws/ec2/security-group.provider.d.ts +6 -0
- package/lib/aws/ec2/security-group.provider.d.ts.map +1 -0
- package/lib/aws/ec2/security-group.provider.js +291 -0
- package/lib/aws/ec2/security-group.provider.js.map +1 -0
- package/lib/aws/ec2/subnet.d.ts.map +1 -1
- package/lib/aws/ec2/subnet.provider.d.ts.map +1 -1
- package/lib/aws/ec2/subnet.provider.js +33 -30
- package/lib/aws/ec2/subnet.provider.js.map +1 -1
- package/lib/aws/ec2/vpc-endpoint.d.ts +176 -0
- package/lib/aws/ec2/vpc-endpoint.d.ts.map +1 -0
- package/lib/aws/ec2/vpc-endpoint.js +4 -0
- package/lib/aws/ec2/vpc-endpoint.js.map +1 -0
- package/lib/aws/ec2/vpc-endpoint.provider.d.ts +6 -0
- package/lib/aws/ec2/vpc-endpoint.provider.d.ts.map +1 -0
- package/lib/aws/ec2/vpc-endpoint.provider.js +315 -0
- package/lib/aws/ec2/vpc-endpoint.provider.js.map +1 -0
- package/lib/aws/ec2/vpc.d.ts.map +1 -1
- package/lib/aws/ec2/vpc.provider.d.ts.map +1 -1
- package/lib/aws/ec2/vpc.provider.js +38 -32
- package/lib/aws/ec2/vpc.provider.js.map +1 -1
- package/lib/aws/index.d.ts +2 -2
- package/lib/aws/index.d.ts.map +1 -1
- package/lib/aws/index.js +1 -1
- package/lib/aws/index.js.map +1 -1
- package/lib/aws/lambda/function.d.ts.map +1 -1
- package/lib/aws/lambda/function.invoke.d.ts.map +1 -1
- package/lib/aws/lambda/function.invoke.js.map +1 -1
- package/lib/aws/lambda/function.js.map +1 -1
- package/lib/aws/lambda/function.provider.d.ts.map +1 -1
- package/lib/aws/lambda/function.provider.js +19 -23
- package/lib/aws/lambda/function.provider.js.map +1 -1
- package/lib/aws/sqs/queue.d.ts +1 -2
- package/lib/aws/sqs/queue.d.ts.map +1 -1
- package/lib/aws/sqs/queue.event-source.d.ts.map +1 -1
- package/lib/aws/sqs/queue.event-source.js +2 -2
- package/lib/aws/sqs/queue.event-source.js.map +1 -1
- package/lib/aws/sqs/queue.js.map +1 -1
- package/lib/aws/sqs/queue.provider.d.ts +1 -2
- package/lib/aws/sqs/queue.provider.d.ts.map +1 -1
- package/lib/aws/sqs/queue.provider.js +35 -20
- package/lib/aws/sqs/queue.provider.js.map +1 -1
- package/lib/aws/sqs/queue.send-message.d.ts.map +1 -1
- package/lib/aws/sqs/queue.send-message.js.map +1 -1
- package/lib/binding.d.ts.map +1 -1
- package/lib/cli/components/PlanProgress.d.ts.map +1 -1
- package/lib/cli/components/PlanProgress.js.map +1 -1
- package/lib/cli/index.d.ts +8 -4
- package/lib/cli/index.d.ts.map +1 -1
- package/lib/cli/index.js.map +1 -1
- package/lib/cloudflare/kv/namespace.binding.d.ts.map +1 -1
- package/lib/cloudflare/kv/namespace.binding.js.map +1 -1
- package/lib/cloudflare/kv/namespace.d.ts.map +1 -1
- package/lib/cloudflare/kv/namespace.provider.d.ts +1 -2
- package/lib/cloudflare/kv/namespace.provider.d.ts.map +1 -1
- package/lib/cloudflare/kv/namespace.provider.js +11 -8
- package/lib/cloudflare/kv/namespace.provider.js.map +1 -1
- package/lib/cloudflare/r2/bucket.binding.d.ts.map +1 -1
- package/lib/cloudflare/r2/bucket.binding.js +1 -1
- package/lib/cloudflare/r2/bucket.binding.js.map +1 -1
- package/lib/cloudflare/r2/bucket.d.ts +1 -1
- package/lib/cloudflare/r2/bucket.d.ts.map +1 -1
- package/lib/cloudflare/r2/bucket.provider.d.ts +1 -2
- package/lib/cloudflare/r2/bucket.provider.d.ts.map +1 -1
- package/lib/cloudflare/r2/bucket.provider.js +20 -14
- package/lib/cloudflare/r2/bucket.provider.js.map +1 -1
- package/lib/cloudflare/worker/worker.d.ts +2 -2
- package/lib/cloudflare/worker/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker/worker.provider.d.ts +1 -2
- package/lib/cloudflare/worker/worker.provider.d.ts.map +1 -1
- package/lib/cloudflare/worker/worker.provider.js +40 -13
- package/lib/cloudflare/worker/worker.provider.js.map +1 -1
- package/lib/instance-id.d.ts +5 -1
- package/lib/instance-id.d.ts.map +1 -1
- package/lib/instance-id.js +4 -0
- package/lib/instance-id.js.map +1 -1
- package/lib/output.d.ts.map +1 -1
- package/lib/output.js.map +1 -1
- package/lib/physical-name.d.ts +15 -4
- package/lib/physical-name.d.ts.map +1 -1
- package/lib/physical-name.js +12 -3
- package/lib/physical-name.js.map +1 -1
- package/lib/plan.d.ts +2 -2
- package/lib/plan.d.ts.map +1 -1
- package/lib/plan.js +73 -24
- package/lib/plan.js.map +1 -1
- package/lib/provider.d.ts +1 -2
- package/lib/provider.d.ts.map +1 -1
- package/lib/resource.d.ts +3 -2
- package/lib/resource.d.ts.map +1 -1
- package/lib/resource.js.map +1 -1
- package/lib/runtime.d.ts.map +1 -1
- package/lib/tags.d.ts +12 -0
- package/lib/tags.d.ts.map +1 -1
- package/lib/tags.js +24 -0
- package/lib/tags.js.map +1 -1
- package/lib/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +51 -51
- package/src/apply.ts +316 -297
- package/src/aws/client.ts +22 -1
- package/src/aws/dynamodb/secondary-index.ts +5 -5
- package/src/aws/dynamodb/table.provider.ts +15 -4
- package/src/aws/dynamodb/table.ts +8 -11
- package/src/aws/ec2/egress-only-igw.provider.ts +181 -0
- package/src/aws/ec2/egress-only-igw.ts +77 -0
- package/src/aws/ec2/eip.provider.ts +191 -0
- package/src/aws/ec2/eip.ts +106 -0
- package/src/aws/ec2/index.ts +18 -0
- package/src/aws/ec2/internet-gateway.provider.ts +15 -6
- package/src/aws/ec2/internet-gateway.ts +6 -6
- package/src/aws/ec2/nat-gateway.provider.ts +341 -0
- package/src/aws/ec2/nat-gateway.ts +155 -0
- package/src/aws/ec2/network-acl-association.provider.ts +181 -0
- package/src/aws/ec2/network-acl-association.ts +60 -0
- package/src/aws/ec2/network-acl-entry.provider.ts +218 -0
- package/src/aws/ec2/network-acl-entry.ts +140 -0
- package/src/aws/ec2/network-acl.provider.ts +195 -0
- package/src/aws/ec2/network-acl.ts +102 -0
- package/src/aws/ec2/route-table-association.provider.ts +1 -2
- package/src/aws/ec2/route-table-association.ts +6 -6
- package/src/aws/ec2/route-table.provider.ts +1 -2
- package/src/aws/ec2/route-table.ts +6 -6
- package/src/aws/ec2/route.provider.ts +1 -2
- package/src/aws/ec2/route.ts +6 -6
- package/src/aws/ec2/security-group-rule.provider.ts +264 -0
- package/src/aws/ec2/security-group-rule.ts +151 -0
- package/src/aws/ec2/security-group.provider.ts +392 -0
- package/src/aws/ec2/security-group.ts +182 -0
- package/src/aws/ec2/subnet.provider.ts +57 -56
- package/src/aws/ec2/subnet.ts +6 -6
- package/src/aws/ec2/vpc-endpoint.provider.ts +466 -0
- package/src/aws/ec2/vpc-endpoint.ts +213 -0
- package/src/aws/ec2/vpc.provider.ts +60 -52
- package/src/aws/ec2/vpc.ts +6 -6
- package/src/aws/index.ts +9 -0
- package/src/aws/lambda/function.invoke.ts +4 -2
- package/src/aws/lambda/function.provider.ts +42 -31
- package/src/aws/lambda/function.ts +4 -2
- package/src/aws/sqs/queue.event-source.ts +12 -14
- package/src/aws/sqs/queue.provider.ts +40 -24
- package/src/aws/sqs/queue.send-message.ts +4 -2
- package/src/aws/sqs/queue.ts +1 -8
- package/src/binding.ts +7 -7
- package/src/cli/components/PlanProgress.tsx +3 -2
- package/src/cloudflare/kv/namespace.binding.ts +4 -2
- package/src/cloudflare/kv/namespace.provider.ts +18 -16
- package/src/cloudflare/kv/namespace.ts +6 -6
- package/src/cloudflare/r2/bucket.binding.ts +5 -3
- package/src/cloudflare/r2/bucket.provider.ts +34 -30
- package/src/cloudflare/r2/bucket.ts +7 -7
- package/src/cloudflare/worker/worker.provider.ts +39 -13
- package/src/cloudflare/worker/worker.ts +2 -2
- package/src/instance-id.ts +5 -1
- package/src/output.ts +5 -3
- package/src/physical-name.ts +27 -5
- package/src/plan.ts +108 -41
- package/src/provider.ts +12 -12
- package/src/resource.ts +17 -6
- package/src/runtime.ts +2 -2
- package/src/tags.ts +29 -0
package/bin/alchemy-effect.js
CHANGED
|
@@ -22,7 +22,7 @@ import * as Redacted from "effect/Redacted";
|
|
|
22
22
|
import * as Schema from "effect/Schema";
|
|
23
23
|
import * as EffectSecret from "effect/Secret";
|
|
24
24
|
import * as Context from "effect/Context";
|
|
25
|
-
import * as Layer from "effect/Layer";
|
|
25
|
+
import * as Layer$1 from "effect/Layer";
|
|
26
26
|
import * as Terminal from "@effect/platform/Terminal";
|
|
27
27
|
import * as Effectable from "effect/Effectable";
|
|
28
28
|
import * as Data from "effect/Data";
|
|
@@ -43,7 +43,7 @@ import * as ConfigProvider from "effect/ConfigProvider";
|
|
|
43
43
|
import { NodeContext, NodeRuntime } from "@effect/platform-node";
|
|
44
44
|
import * as PlatformConfigProvider from "@effect/platform/PlatformConfigProvider";
|
|
45
45
|
import * as FetchHttpClient from "@effect/platform/FetchHttpClient";
|
|
46
|
-
import { pipe as pipe$1 } from "effect";
|
|
46
|
+
import { Layer, pipe as pipe$1 } from "effect";
|
|
47
47
|
import { omit } from "effect/Struct";
|
|
48
48
|
import { PassThrough, Stream } from "node:stream";
|
|
49
49
|
import process$1, { cwd, env } from "node:process";
|
|
@@ -14042,7 +14042,7 @@ const asEffect = (effect) => Effect.isEffect(effect) ? effect : Effect.succeed(e
|
|
|
14042
14042
|
|
|
14043
14043
|
//#endregion
|
|
14044
14044
|
//#region package.json
|
|
14045
|
-
var version = "0.
|
|
14045
|
+
var version = "0.6.0";
|
|
14046
14046
|
|
|
14047
14047
|
//#endregion
|
|
14048
14048
|
//#region src/resource.ts
|
|
@@ -14054,7 +14054,7 @@ const isResource = (r) => {
|
|
|
14054
14054
|
//#region src/state.ts
|
|
14055
14055
|
var StateStoreError = class extends Data.TaggedError("StateStoreError") {};
|
|
14056
14056
|
var State = class extends Context.Tag("AWS::Lambda::State")() {};
|
|
14057
|
-
const localFs = Layer.effect(State, Effect.gen(function* () {
|
|
14057
|
+
const localFs = Layer$1.effect(State, Effect.gen(function* () {
|
|
14058
14058
|
const fs$1 = yield* FileSystem.FileSystem;
|
|
14059
14059
|
const path$3 = yield* Path$1.Path;
|
|
14060
14060
|
const dotAlchemy$1 = path$3.join(process.cwd(), ".alchemy");
|
|
@@ -14093,7 +14093,7 @@ const localFs = Layer.effect(State, Effect.gen(function* () {
|
|
|
14093
14093
|
//#endregion
|
|
14094
14094
|
//#region src/app.ts
|
|
14095
14095
|
var App$1 = class extends Context.Tag("App")() {};
|
|
14096
|
-
const app = (input) => Layer.succeed(App$1, App$1.of(input));
|
|
14096
|
+
const app = (input) => Layer$1.succeed(App$1, App$1.of(input));
|
|
14097
14097
|
const make = app;
|
|
14098
14098
|
|
|
14099
14099
|
//#endregion
|
|
@@ -14102,6 +14102,8 @@ var CLI = class extends Context.Tag("CLIService")() {};
|
|
|
14102
14102
|
|
|
14103
14103
|
//#endregion
|
|
14104
14104
|
//#region src/instance-id.ts
|
|
14105
|
+
/** A 16-byte (128-bit) random hex-encoded string representing an physical instance of a logical resource */
|
|
14106
|
+
var InstanceId = class extends Context.Tag("instance-id")() {};
|
|
14105
14107
|
/**
|
|
14106
14108
|
* @returns Hex-encoded instance ID (16 random bytes)
|
|
14107
14109
|
*/
|
|
@@ -14295,7 +14297,7 @@ const plan = (..._resources) => Effect.gen(function* () {
|
|
|
14295
14297
|
stack: app$1.name,
|
|
14296
14298
|
stage: app$1.stage,
|
|
14297
14299
|
resourceId: id
|
|
14298
|
-
})));
|
|
14300
|
+
})), { concurrency: "unbounded" });
|
|
14299
14301
|
const resolvedResources = {};
|
|
14300
14302
|
const resolveResource = (resourceExpr) => Effect.gen(function* () {
|
|
14301
14303
|
return yield* resolvedResources[resourceExpr.src.id] ??= yield* Effect.cached(Effect.gen(function* () {
|
|
@@ -14315,7 +14317,7 @@ const plan = (..._resources) => Effect.gen(function* () {
|
|
|
14315
14317
|
instanceId: oldState.instanceId,
|
|
14316
14318
|
news: props,
|
|
14317
14319
|
output: oldState.attr
|
|
14318
|
-
}) : Effect.succeed(void 0);
|
|
14320
|
+
}).pipe(Effect.provide(Layer$1.succeed(InstanceId, oldState.instanceId))) : Effect.succeed(void 0);
|
|
14319
14321
|
const stables = [...provider.stables ?? [], ...diff$1?.stables ?? []];
|
|
14320
14322
|
const withStables = (output) => stables.length > 0 ? new ResourceExpr(resourceExpr.src, Object.fromEntries(stables.map((stable) => [stable, output?.[stable]]))) : resourceExpr;
|
|
14321
14323
|
if (diff$1 == null) {
|
|
@@ -14329,8 +14331,8 @@ const plan = (..._resources) => Effect.gen(function* () {
|
|
|
14329
14331
|
const resolveInput = (input) => Effect.gen(function* () {
|
|
14330
14332
|
if (!input) return input;
|
|
14331
14333
|
else if (isExpr(input)) return yield* resolveOutput(input);
|
|
14332
|
-
else if (Array.isArray(input)) return yield* Effect.all(input.map(resolveInput));
|
|
14333
|
-
else if (typeof input === "object") return Object.fromEntries(yield* Effect.all(Object.entries(input).map(([key, value]) => resolveInput(value).pipe(Effect.map((value$1) => [key, value$1])))));
|
|
14334
|
+
else if (Array.isArray(input)) return yield* Effect.all(input.map(resolveInput), { concurrency: "unbounded" });
|
|
14335
|
+
else if (typeof input === "object") return Object.fromEntries(yield* Effect.all(Object.entries(input).map(([key, value]) => resolveInput(value).pipe(Effect.map((value$1) => [key, value$1]))), { concurrency: "unbounded" }));
|
|
14334
14336
|
return input;
|
|
14335
14337
|
});
|
|
14336
14338
|
const resolveOutput = (expr) => Effect.gen(function* () {
|
|
@@ -14342,7 +14344,7 @@ const plan = (..._resources) => Effect.gen(function* () {
|
|
|
14342
14344
|
} else if (isEffectExpr(expr)) {
|
|
14343
14345
|
const upstream$1 = yield* resolveOutput(expr.expr);
|
|
14344
14346
|
return hasOutputs(upstream$1) ? expr : yield* expr.f(upstream$1);
|
|
14345
|
-
} else if (isAllExpr(expr)) return yield* Effect.all(expr.outs.map(resolveOutput));
|
|
14347
|
+
} else if (isAllExpr(expr)) return yield* Effect.all(expr.outs.map(resolveOutput), { concurrency: "unbounded" });
|
|
14346
14348
|
return yield* Effect.die(/* @__PURE__ */ new Error("Not implemented yet"));
|
|
14347
14349
|
});
|
|
14348
14350
|
const oldDownstreamDependencies = Object.fromEntries(oldResources.filter((resource) => !!resource).map((resource) => [resource.logicalId, resource.downstream]));
|
|
@@ -14385,6 +14387,25 @@ const plan = (..._resources) => Effect.gen(function* () {
|
|
|
14385
14387
|
props: news,
|
|
14386
14388
|
state: oldState
|
|
14387
14389
|
});
|
|
14390
|
+
else if (oldState.status === "creating" && oldState.attr === void 0) {
|
|
14391
|
+
if (provider.read) {
|
|
14392
|
+
const attr = yield* provider.read({
|
|
14393
|
+
id,
|
|
14394
|
+
instanceId: oldState.instanceId,
|
|
14395
|
+
olds: oldState.props,
|
|
14396
|
+
output: oldState.attr,
|
|
14397
|
+
bindings
|
|
14398
|
+
});
|
|
14399
|
+
if (attr) return Node$1({
|
|
14400
|
+
action: "create",
|
|
14401
|
+
props: news,
|
|
14402
|
+
state: {
|
|
14403
|
+
...oldState,
|
|
14404
|
+
attr
|
|
14405
|
+
}
|
|
14406
|
+
});
|
|
14407
|
+
}
|
|
14408
|
+
}
|
|
14388
14409
|
const oldProps = oldState.props;
|
|
14389
14410
|
const diff$1 = yield* asEffect(provider.diff ? provider.diff({
|
|
14390
14411
|
id,
|
|
@@ -14392,7 +14413,7 @@ const plan = (..._resources) => Effect.gen(function* () {
|
|
|
14392
14413
|
instanceId: oldState.instanceId,
|
|
14393
14414
|
output: oldState.attr,
|
|
14394
14415
|
news
|
|
14395
|
-
}) : void 0).pipe(Effect.map((diff$2) => diff$2 ?? { action: arePropsChanged(oldProps, news) ? "update" : "noop" }));
|
|
14416
|
+
}).pipe(Effect.provide(Layer$1.succeed(InstanceId, oldState.instanceId))) : void 0).pipe(Effect.map((diff$2) => diff$2 ?? { action: arePropsChanged(oldProps, news) ? "update" : "noop" }));
|
|
14396
14417
|
if (oldState.status === "creating") if (diff$1.action === "noop") return Node$1({
|
|
14397
14418
|
action: "create",
|
|
14398
14419
|
props: news,
|
|
@@ -14470,7 +14491,7 @@ const plan = (..._resources) => Effect.gen(function* () {
|
|
|
14470
14491
|
action: "noop",
|
|
14471
14492
|
state: oldState
|
|
14472
14493
|
});
|
|
14473
|
-
})))).map((update) => [update.resource.id, update]));
|
|
14494
|
+
})), { concurrency: "unbounded" })).map((update) => [update.resource.id, update]));
|
|
14474
14495
|
const deletions = Object.fromEntries((yield* Effect.all((yield* state.list({
|
|
14475
14496
|
stack: app$1.name,
|
|
14476
14497
|
stage: app$1.stage
|
|
@@ -14481,20 +14502,36 @@ const plan = (..._resources) => Effect.gen(function* () {
|
|
|
14481
14502
|
stage: app$1.stage,
|
|
14482
14503
|
resourceId: id
|
|
14483
14504
|
});
|
|
14484
|
-
|
|
14485
|
-
|
|
14486
|
-
|
|
14487
|
-
|
|
14488
|
-
|
|
14489
|
-
|
|
14490
|
-
|
|
14491
|
-
|
|
14492
|
-
|
|
14493
|
-
|
|
14494
|
-
|
|
14495
|
-
|
|
14496
|
-
|
|
14497
|
-
|
|
14505
|
+
let attr = oldState?.attr;
|
|
14506
|
+
if (oldState) {
|
|
14507
|
+
const provider = yield* getProviderByType(oldState.resourceType);
|
|
14508
|
+
if (oldState.attr === void 0) {
|
|
14509
|
+
if (provider.read) attr = yield* provider.read({
|
|
14510
|
+
id,
|
|
14511
|
+
instanceId: oldState.instanceId,
|
|
14512
|
+
olds: oldState.props,
|
|
14513
|
+
output: oldState.attr,
|
|
14514
|
+
bindings: oldState.bindings ?? []
|
|
14515
|
+
}).pipe(Effect.provide(Layer$1.succeed(InstanceId, oldState.instanceId)));
|
|
14516
|
+
}
|
|
14517
|
+
return [id, {
|
|
14518
|
+
action: "delete",
|
|
14519
|
+
state: {
|
|
14520
|
+
...oldState,
|
|
14521
|
+
attr
|
|
14522
|
+
},
|
|
14523
|
+
bindings: [],
|
|
14524
|
+
provider,
|
|
14525
|
+
resource: {
|
|
14526
|
+
id,
|
|
14527
|
+
type: oldState.resourceType,
|
|
14528
|
+
attr,
|
|
14529
|
+
props: oldState.props
|
|
14530
|
+
},
|
|
14531
|
+
downstream: oldDownstreamDependencies[id] ?? []
|
|
14532
|
+
}];
|
|
14533
|
+
}
|
|
14534
|
+
})), { concurrency: "unbounded" })).filter((v) => !!v));
|
|
14498
14535
|
for (const [resourceId, deletion] of Object.entries(deletions)) {
|
|
14499
14536
|
const dependencies = deletion.state.downstream.filter((d) => d in resourceGraph);
|
|
14500
14537
|
if (dependencies.length > 0) return yield* Effect.fail(new DeleteResourceHasDownstreamDependencies({
|
|
@@ -14550,7 +14587,7 @@ const diffBindings = Effect.fn(function* ({ oldState, bindings, target }) {
|
|
|
14550
14587
|
attr: oldBinding.attr
|
|
14551
14588
|
};
|
|
14552
14589
|
});
|
|
14553
|
-
return (yield* Effect.all(bindings.map(diffBinding))).filter((action) => action !== null);
|
|
14590
|
+
return (yield* Effect.all(bindings.map(diffBinding), { concurrency: "unbounded" })).filter((action) => action !== null);
|
|
14554
14591
|
});
|
|
14555
14592
|
const isBindingDiff = Effect.fn(function* ({ target, oldBinding: { binding: oldBinding }, newBinding }) {
|
|
14556
14593
|
const oldCap = oldBinding.capability;
|
|
@@ -14559,18 +14596,20 @@ const isBindingDiff = Effect.fn(function* ({ target, oldBinding: { binding: oldB
|
|
|
14559
14596
|
const provider = yield* newBinding.Tag;
|
|
14560
14597
|
if (provider.diff) {
|
|
14561
14598
|
const oldState = yield* (yield* State).get(oldCap.resource.id);
|
|
14562
|
-
|
|
14563
|
-
|
|
14564
|
-
|
|
14565
|
-
|
|
14566
|
-
|
|
14567
|
-
|
|
14568
|
-
|
|
14569
|
-
|
|
14570
|
-
|
|
14571
|
-
|
|
14572
|
-
|
|
14573
|
-
|
|
14599
|
+
if (oldState) {
|
|
14600
|
+
const diff$1 = yield* provider.diff({
|
|
14601
|
+
source: {
|
|
14602
|
+
id: oldCap.resource.id,
|
|
14603
|
+
props: newCap.resource.props,
|
|
14604
|
+
oldProps: oldState?.props,
|
|
14605
|
+
oldAttr: oldState?.attr
|
|
14606
|
+
},
|
|
14607
|
+
props: newBinding.props,
|
|
14608
|
+
attr: oldBinding.attr,
|
|
14609
|
+
target
|
|
14610
|
+
}).pipe(Effect.provide(Layer$1.succeed(InstanceId, oldState.instanceId)));
|
|
14611
|
+
if (diff$1?.action === "update" || diff$1?.action === "replace") return diff$1;
|
|
14612
|
+
}
|
|
14574
14613
|
}
|
|
14575
14614
|
return { action: oldBinding.capability.action !== newBinding.capability.action || oldBinding.capability?.resource?.id !== newBinding.capability?.resource?.id ? "update" : "noop" };
|
|
14576
14615
|
});
|
|
@@ -14654,7 +14693,7 @@ const expandAndPivot = Effect.fnUntraced(function* (plan$1, session) {
|
|
|
14654
14693
|
};
|
|
14655
14694
|
}
|
|
14656
14695
|
return oldBindingOutput;
|
|
14657
|
-
})));
|
|
14696
|
+
})), { concurrency: "unbounded" });
|
|
14658
14697
|
const apply = (node) => Effect.gen(function* () {
|
|
14659
14698
|
const commit = (value) => state.set({
|
|
14660
14699
|
stack: app$1.name,
|
|
@@ -14680,7 +14719,7 @@ const expandAndPivot = Effect.fnUntraced(function* (plan$1, session) {
|
|
|
14680
14719
|
status
|
|
14681
14720
|
});
|
|
14682
14721
|
if (node.action === "noop") return node.state.attr;
|
|
14683
|
-
const upstream$1 = Object.fromEntries(yield* Effect.all(Object.entries(resolveUpstream(node.props)).map(([id$1]) => resolveUpstream$1(id$1).pipe(Effect.map(({ upstreamAttr }) => [id$1, upstreamAttr])))));
|
|
14722
|
+
const upstream$1 = Object.fromEntries(yield* Effect.all(Object.entries(resolveUpstream(node.props)).map(([id$1]) => resolveUpstream$1(id$1).pipe(Effect.map(({ upstreamAttr }) => [id$1, upstreamAttr]))), { concurrency: "unbounded" }));
|
|
14684
14723
|
const instanceId = yield* Effect.gen(function* () {
|
|
14685
14724
|
if (node.action === "create" && !node.state?.instanceId) {
|
|
14686
14725
|
const instanceId$1 = yield* generateInstanceId();
|
|
@@ -14714,248 +14753,250 @@ const expandAndPivot = Effect.fnUntraced(function* (plan$1, session) {
|
|
|
14714
14753
|
} else if (node.state?.instanceId) return node.state.instanceId;
|
|
14715
14754
|
return yield* Effect.dieMessage(`Instance ID not found for resource '${id}' and action is '${node.action}'`);
|
|
14716
14755
|
});
|
|
14717
|
-
|
|
14718
|
-
|
|
14719
|
-
|
|
14720
|
-
|
|
14721
|
-
|
|
14722
|
-
|
|
14723
|
-
|
|
14724
|
-
|
|
14725
|
-
|
|
14726
|
-
|
|
14727
|
-
|
|
14728
|
-
|
|
14729
|
-
|
|
14730
|
-
|
|
14731
|
-
|
|
14732
|
-
|
|
14733
|
-
|
|
14734
|
-
|
|
14756
|
+
return yield* Effect.gen(function* () {
|
|
14757
|
+
if (node.action === "create") {
|
|
14758
|
+
const news = yield* evaluate(node.props, upstream$1);
|
|
14759
|
+
const checkpoint = (attr$1) => commit({
|
|
14760
|
+
status: "creating",
|
|
14761
|
+
logicalId: id,
|
|
14762
|
+
instanceId,
|
|
14763
|
+
resourceType: node.resource.type,
|
|
14764
|
+
props: news,
|
|
14765
|
+
attr: attr$1,
|
|
14766
|
+
providerVersion: node.provider.version ?? 0,
|
|
14767
|
+
bindings: node.bindings,
|
|
14768
|
+
downstream: node.downstream
|
|
14769
|
+
});
|
|
14770
|
+
if (!node.state) yield* checkpoint(void 0);
|
|
14771
|
+
let attr;
|
|
14772
|
+
if (node.action === "create" && node.provider.precreate && node.state?.attr === void 0) {
|
|
14773
|
+
yield* report("pre-creating");
|
|
14774
|
+
attr = yield* node.provider.precreate({
|
|
14775
|
+
id,
|
|
14776
|
+
news: node.props,
|
|
14777
|
+
session: scopedSession,
|
|
14778
|
+
instanceId
|
|
14779
|
+
});
|
|
14780
|
+
yield* checkpoint(attr);
|
|
14781
|
+
}
|
|
14782
|
+
yield* report("attaching");
|
|
14783
|
+
let bindingOutputs = yield* attachBindings({
|
|
14784
|
+
resource,
|
|
14785
|
+
bindings: node.bindings,
|
|
14786
|
+
target: {
|
|
14787
|
+
id,
|
|
14788
|
+
props: news,
|
|
14789
|
+
attr
|
|
14790
|
+
}
|
|
14791
|
+
});
|
|
14792
|
+
yield* report("creating");
|
|
14793
|
+
attr = yield* node.provider.create({
|
|
14735
14794
|
id,
|
|
14736
|
-
news
|
|
14737
|
-
|
|
14738
|
-
|
|
14795
|
+
news,
|
|
14796
|
+
instanceId,
|
|
14797
|
+
bindings: bindingOutputs,
|
|
14798
|
+
session: scopedSession
|
|
14739
14799
|
});
|
|
14740
14800
|
yield* checkpoint(attr);
|
|
14741
|
-
|
|
14742
|
-
|
|
14743
|
-
|
|
14744
|
-
|
|
14745
|
-
|
|
14746
|
-
|
|
14747
|
-
|
|
14801
|
+
yield* report("post-attach");
|
|
14802
|
+
bindingOutputs = yield* postAttachBindings({
|
|
14803
|
+
resource,
|
|
14804
|
+
bindings: node.bindings,
|
|
14805
|
+
bindingOutputs,
|
|
14806
|
+
target: {
|
|
14807
|
+
id,
|
|
14808
|
+
props: news,
|
|
14809
|
+
attr
|
|
14810
|
+
}
|
|
14811
|
+
});
|
|
14812
|
+
yield* commit({
|
|
14813
|
+
status: "created",
|
|
14814
|
+
logicalId: id,
|
|
14815
|
+
instanceId,
|
|
14816
|
+
resourceType: node.resource.type,
|
|
14748
14817
|
props: news,
|
|
14749
|
-
attr
|
|
14750
|
-
|
|
14751
|
-
|
|
14752
|
-
|
|
14753
|
-
|
|
14754
|
-
|
|
14755
|
-
|
|
14756
|
-
|
|
14757
|
-
|
|
14758
|
-
|
|
14759
|
-
})
|
|
14760
|
-
|
|
14761
|
-
|
|
14762
|
-
|
|
14763
|
-
|
|
14764
|
-
|
|
14765
|
-
|
|
14766
|
-
|
|
14818
|
+
attr,
|
|
14819
|
+
bindings: node.bindings.map((binding, i) => ({
|
|
14820
|
+
...binding,
|
|
14821
|
+
attr: bindingOutputs[i]
|
|
14822
|
+
})),
|
|
14823
|
+
providerVersion: node.provider.version ?? 0,
|
|
14824
|
+
downstream: node.downstream
|
|
14825
|
+
});
|
|
14826
|
+
yield* report("created");
|
|
14827
|
+
return attr;
|
|
14828
|
+
} else if (node.action === "update") {
|
|
14829
|
+
const upstream$2 = Object.fromEntries(yield* Effect.all(Object.entries(resolveUpstream(node.props)).map(([id$1]) => resolveUpstream$1(id$1).pipe(Effect.map(({ upstreamAttr }) => [id$1, upstreamAttr]))), { concurrency: "unbounded" }));
|
|
14830
|
+
const news = yield* evaluate(node.props, upstream$2);
|
|
14831
|
+
const checkpoint = (attr$1) => {
|
|
14832
|
+
if (node.state.status === "replaced") return commit({
|
|
14833
|
+
...node.state,
|
|
14834
|
+
attr: attr$1,
|
|
14835
|
+
props: news
|
|
14836
|
+
});
|
|
14837
|
+
else return commit({
|
|
14838
|
+
status: "updating",
|
|
14839
|
+
logicalId: id,
|
|
14840
|
+
instanceId,
|
|
14841
|
+
resourceType: node.resource.type,
|
|
14842
|
+
props: news,
|
|
14843
|
+
attr: attr$1,
|
|
14844
|
+
providerVersion: node.provider.version ?? 0,
|
|
14845
|
+
bindings: node.bindings,
|
|
14846
|
+
downstream: node.downstream,
|
|
14847
|
+
old: node.state.status === "updating" ? node.state.old : node.state
|
|
14848
|
+
});
|
|
14849
|
+
};
|
|
14850
|
+
yield* checkpoint(node.state.attr);
|
|
14851
|
+
yield* report("attaching");
|
|
14852
|
+
let bindingOutputs = yield* attachBindings({
|
|
14853
|
+
resource,
|
|
14854
|
+
bindings: node.bindings,
|
|
14855
|
+
target: {
|
|
14856
|
+
id,
|
|
14857
|
+
props: news,
|
|
14858
|
+
attr: node.state.attr
|
|
14859
|
+
}
|
|
14860
|
+
});
|
|
14861
|
+
yield* report("updating");
|
|
14862
|
+
const attr = yield* node.provider.update({
|
|
14767
14863
|
id,
|
|
14768
|
-
|
|
14769
|
-
|
|
14770
|
-
|
|
14771
|
-
|
|
14772
|
-
|
|
14773
|
-
|
|
14774
|
-
|
|
14775
|
-
|
|
14776
|
-
|
|
14777
|
-
|
|
14778
|
-
|
|
14779
|
-
|
|
14780
|
-
|
|
14781
|
-
|
|
14782
|
-
|
|
14783
|
-
|
|
14784
|
-
|
|
14785
|
-
|
|
14786
|
-
|
|
14787
|
-
|
|
14788
|
-
} else if (node.action === "update") {
|
|
14789
|
-
const upstream$2 = Object.fromEntries(yield* Effect.all(Object.entries(resolveUpstream(node.props)).map(([id$1]) => resolveUpstream$1(id$1).pipe(Effect.map(({ upstreamAttr }) => [id$1, upstreamAttr])))));
|
|
14790
|
-
const news = yield* evaluate(node.props, upstream$2);
|
|
14791
|
-
const checkpoint = (attr$1) => {
|
|
14792
|
-
if (node.state.status === "replaced") return commit({
|
|
14864
|
+
news,
|
|
14865
|
+
instanceId,
|
|
14866
|
+
bindings: bindingOutputs,
|
|
14867
|
+
session: scopedSession,
|
|
14868
|
+
olds: node.state.status === "created" || node.state.status === "updated" || node.state.status === "replaced" ? node.state.props : node.state.old.props,
|
|
14869
|
+
output: node.state.attr
|
|
14870
|
+
});
|
|
14871
|
+
yield* checkpoint(attr);
|
|
14872
|
+
yield* report("post-attach");
|
|
14873
|
+
bindingOutputs = yield* postAttachBindings({
|
|
14874
|
+
resource,
|
|
14875
|
+
bindings: node.bindings,
|
|
14876
|
+
bindingOutputs,
|
|
14877
|
+
target: {
|
|
14878
|
+
id,
|
|
14879
|
+
props: news,
|
|
14880
|
+
attr
|
|
14881
|
+
}
|
|
14882
|
+
});
|
|
14883
|
+
if (node.state.status === "replaced") yield* commit({
|
|
14793
14884
|
...node.state,
|
|
14794
|
-
attr
|
|
14885
|
+
attr,
|
|
14795
14886
|
props: news
|
|
14796
14887
|
});
|
|
14797
|
-
else
|
|
14798
|
-
status: "
|
|
14888
|
+
else yield* commit({
|
|
14889
|
+
status: "updated",
|
|
14890
|
+
logicalId: id,
|
|
14891
|
+
instanceId,
|
|
14892
|
+
resourceType: node.resource.type,
|
|
14893
|
+
props: news,
|
|
14894
|
+
attr,
|
|
14895
|
+
bindings: node.bindings.map((binding, i) => ({
|
|
14896
|
+
...binding,
|
|
14897
|
+
attr: bindingOutputs[i]
|
|
14898
|
+
})),
|
|
14899
|
+
providerVersion: node.provider.version ?? 0,
|
|
14900
|
+
downstream: node.downstream
|
|
14901
|
+
});
|
|
14902
|
+
yield* report("updated");
|
|
14903
|
+
return attr;
|
|
14904
|
+
} else if (node.action === "replace") {
|
|
14905
|
+
if (node.state.status === "replaced") return node.state.attr;
|
|
14906
|
+
let state$1;
|
|
14907
|
+
if (node.state.status !== "replacing") yield* commit(state$1 = {
|
|
14908
|
+
status: "replacing",
|
|
14909
|
+
logicalId: id,
|
|
14910
|
+
instanceId,
|
|
14911
|
+
resourceType: node.resource.type,
|
|
14912
|
+
props: node.props,
|
|
14913
|
+
attr: node.state.attr,
|
|
14914
|
+
providerVersion: node.provider.version ?? 0,
|
|
14915
|
+
deleteFirst: node.deleteFirst,
|
|
14916
|
+
old: node.state,
|
|
14917
|
+
downstream: node.downstream
|
|
14918
|
+
});
|
|
14919
|
+
else state$1 = node.state;
|
|
14920
|
+
const upstream$2 = Object.fromEntries(yield* Effect.all(Object.entries(resolveUpstream(node.props)).map(([id$1]) => resolveUpstream$1(id$1).pipe(Effect.map(({ upstreamAttr }) => [id$1, upstreamAttr]))), { concurrency: "unbounded" }));
|
|
14921
|
+
const news = yield* evaluate(node.props, upstream$2);
|
|
14922
|
+
const checkpoint = ({ status, attr: attr$1, bindings }) => commit({
|
|
14923
|
+
status,
|
|
14799
14924
|
logicalId: id,
|
|
14800
14925
|
instanceId,
|
|
14801
14926
|
resourceType: node.resource.type,
|
|
14802
14927
|
props: news,
|
|
14803
14928
|
attr: attr$1,
|
|
14804
14929
|
providerVersion: node.provider.version ?? 0,
|
|
14805
|
-
bindings: node.bindings,
|
|
14930
|
+
bindings: bindings ?? node.bindings,
|
|
14806
14931
|
downstream: node.downstream,
|
|
14807
|
-
old:
|
|
14932
|
+
old: state$1.old,
|
|
14933
|
+
deleteFirst: node.deleteFirst
|
|
14808
14934
|
});
|
|
14809
|
-
|
|
14810
|
-
|
|
14811
|
-
|
|
14812
|
-
|
|
14813
|
-
|
|
14814
|
-
|
|
14815
|
-
|
|
14816
|
-
|
|
14817
|
-
|
|
14818
|
-
|
|
14819
|
-
|
|
14820
|
-
|
|
14821
|
-
|
|
14822
|
-
const attr = yield* node.provider.update({
|
|
14823
|
-
id,
|
|
14824
|
-
news,
|
|
14825
|
-
instanceId,
|
|
14826
|
-
bindings: bindingOutputs,
|
|
14827
|
-
session: scopedSession,
|
|
14828
|
-
olds: node.state.status === "created" || node.state.status === "updated" || node.state.status === "replaced" ? node.state.props : node.state.old.props,
|
|
14829
|
-
output: node.state.attr
|
|
14830
|
-
});
|
|
14831
|
-
yield* checkpoint(attr);
|
|
14832
|
-
yield* report("post-attach");
|
|
14833
|
-
bindingOutputs = yield* postAttachBindings({
|
|
14834
|
-
resource,
|
|
14835
|
-
bindings: node.bindings,
|
|
14836
|
-
bindingOutputs,
|
|
14837
|
-
target: {
|
|
14838
|
-
id,
|
|
14839
|
-
props: news,
|
|
14840
|
-
attr
|
|
14935
|
+
let attr;
|
|
14936
|
+
if (node.provider.precreate && node.state?.attr === void 0) {
|
|
14937
|
+
yield* report("pre-creating");
|
|
14938
|
+
attr = yield* node.provider.precreate({
|
|
14939
|
+
id,
|
|
14940
|
+
news: node.props,
|
|
14941
|
+
session: scopedSession,
|
|
14942
|
+
instanceId
|
|
14943
|
+
});
|
|
14944
|
+
yield* checkpoint({
|
|
14945
|
+
status: "replacing",
|
|
14946
|
+
attr
|
|
14947
|
+
});
|
|
14841
14948
|
}
|
|
14842
|
-
|
|
14843
|
-
|
|
14844
|
-
|
|
14845
|
-
|
|
14846
|
-
|
|
14847
|
-
|
|
14848
|
-
|
|
14849
|
-
|
|
14850
|
-
|
|
14851
|
-
|
|
14852
|
-
|
|
14853
|
-
|
|
14854
|
-
attr,
|
|
14855
|
-
bindings: node.bindings.map((binding, i) => ({
|
|
14856
|
-
...binding,
|
|
14857
|
-
attr: bindingOutputs[i]
|
|
14858
|
-
})),
|
|
14859
|
-
providerVersion: node.provider.version ?? 0,
|
|
14860
|
-
downstream: node.downstream
|
|
14861
|
-
});
|
|
14862
|
-
yield* report("updated");
|
|
14863
|
-
return attr;
|
|
14864
|
-
} else if (node.action === "replace") {
|
|
14865
|
-
if (node.state.status === "replaced") return node.state.attr;
|
|
14866
|
-
let state$1;
|
|
14867
|
-
if (node.state.status !== "replacing") yield* commit(state$1 = {
|
|
14868
|
-
status: "replacing",
|
|
14869
|
-
logicalId: id,
|
|
14870
|
-
instanceId,
|
|
14871
|
-
resourceType: node.resource.type,
|
|
14872
|
-
props: node.props,
|
|
14873
|
-
attr: node.state.attr,
|
|
14874
|
-
providerVersion: node.provider.version ?? 0,
|
|
14875
|
-
deleteFirst: node.deleteFirst,
|
|
14876
|
-
old: node.state,
|
|
14877
|
-
downstream: node.downstream
|
|
14878
|
-
});
|
|
14879
|
-
else state$1 = node.state;
|
|
14880
|
-
const upstream$2 = Object.fromEntries(yield* Effect.all(Object.entries(resolveUpstream(node.props)).map(([id$1]) => resolveUpstream$1(id$1).pipe(Effect.map(({ upstreamAttr }) => [id$1, upstreamAttr])))));
|
|
14881
|
-
const news = yield* evaluate(node.props, upstream$2);
|
|
14882
|
-
const checkpoint = ({ status, attr: attr$1, bindings }) => commit({
|
|
14883
|
-
status,
|
|
14884
|
-
logicalId: id,
|
|
14885
|
-
instanceId,
|
|
14886
|
-
resourceType: node.resource.type,
|
|
14887
|
-
props: news,
|
|
14888
|
-
attr: attr$1,
|
|
14889
|
-
providerVersion: node.provider.version ?? 0,
|
|
14890
|
-
bindings: bindings ?? node.bindings,
|
|
14891
|
-
downstream: node.downstream,
|
|
14892
|
-
old: state$1.old,
|
|
14893
|
-
deleteFirst: node.deleteFirst
|
|
14894
|
-
});
|
|
14895
|
-
let attr;
|
|
14896
|
-
if (node.provider.precreate && node.state?.attr === void 0) {
|
|
14897
|
-
yield* report("pre-creating");
|
|
14898
|
-
attr = yield* node.provider.precreate({
|
|
14949
|
+
yield* report("attaching");
|
|
14950
|
+
let bindingOutputs = yield* attachBindings({
|
|
14951
|
+
resource,
|
|
14952
|
+
bindings: node.bindings,
|
|
14953
|
+
target: {
|
|
14954
|
+
id,
|
|
14955
|
+
props: news,
|
|
14956
|
+
attr
|
|
14957
|
+
}
|
|
14958
|
+
});
|
|
14959
|
+
yield* report("creating replacement");
|
|
14960
|
+
attr = yield* node.provider.create({
|
|
14899
14961
|
id,
|
|
14900
|
-
news
|
|
14901
|
-
|
|
14902
|
-
|
|
14962
|
+
news,
|
|
14963
|
+
instanceId,
|
|
14964
|
+
bindings: bindingOutputs,
|
|
14965
|
+
session: scopedSession
|
|
14903
14966
|
});
|
|
14904
14967
|
yield* checkpoint({
|
|
14905
14968
|
status: "replacing",
|
|
14906
14969
|
attr
|
|
14907
14970
|
});
|
|
14971
|
+
yield* report("post-attach");
|
|
14972
|
+
bindingOutputs = yield* postAttachBindings({
|
|
14973
|
+
resource,
|
|
14974
|
+
bindings: node.bindings,
|
|
14975
|
+
bindingOutputs,
|
|
14976
|
+
target: {
|
|
14977
|
+
id,
|
|
14978
|
+
props: news,
|
|
14979
|
+
attr
|
|
14980
|
+
}
|
|
14981
|
+
});
|
|
14982
|
+
yield* checkpoint({
|
|
14983
|
+
status: "replaced",
|
|
14984
|
+
attr,
|
|
14985
|
+
bindings: node.bindings.map((binding, i) => ({
|
|
14986
|
+
...binding,
|
|
14987
|
+
attr: bindingOutputs[i]
|
|
14988
|
+
}))
|
|
14989
|
+
});
|
|
14990
|
+
yield* report("created");
|
|
14991
|
+
return attr;
|
|
14908
14992
|
}
|
|
14909
|
-
yield*
|
|
14910
|
-
|
|
14911
|
-
resource,
|
|
14912
|
-
bindings: node.bindings,
|
|
14913
|
-
target: {
|
|
14914
|
-
id,
|
|
14915
|
-
props: news,
|
|
14916
|
-
attr
|
|
14917
|
-
}
|
|
14918
|
-
});
|
|
14919
|
-
yield* report("creating replacement");
|
|
14920
|
-
attr = yield* node.provider.create({
|
|
14921
|
-
id,
|
|
14922
|
-
news,
|
|
14923
|
-
instanceId,
|
|
14924
|
-
bindings: bindingOutputs,
|
|
14925
|
-
session: scopedSession
|
|
14926
|
-
});
|
|
14927
|
-
yield* checkpoint({
|
|
14928
|
-
status: "replacing",
|
|
14929
|
-
attr
|
|
14930
|
-
});
|
|
14931
|
-
yield* report("post-attach");
|
|
14932
|
-
bindingOutputs = yield* postAttachBindings({
|
|
14933
|
-
resource,
|
|
14934
|
-
bindings: node.bindings,
|
|
14935
|
-
bindingOutputs,
|
|
14936
|
-
target: {
|
|
14937
|
-
id,
|
|
14938
|
-
props: news,
|
|
14939
|
-
attr
|
|
14940
|
-
}
|
|
14941
|
-
});
|
|
14942
|
-
yield* checkpoint({
|
|
14943
|
-
status: "replaced",
|
|
14944
|
-
attr,
|
|
14945
|
-
bindings: node.bindings.map((binding, i) => ({
|
|
14946
|
-
...binding,
|
|
14947
|
-
attr: bindingOutputs[i]
|
|
14948
|
-
}))
|
|
14949
|
-
});
|
|
14950
|
-
yield* report("created");
|
|
14951
|
-
return attr;
|
|
14952
|
-
}
|
|
14953
|
-
return yield* Effect.dieMessage(`Unknown action: ${node.action}`);
|
|
14993
|
+
return yield* Effect.dieMessage(`Unknown action: ${node.action}`);
|
|
14994
|
+
}).pipe(Effect.provide(Layer.succeed(InstanceId, instanceId)));
|
|
14954
14995
|
}));
|
|
14955
14996
|
});
|
|
14956
14997
|
return Object.fromEntries(yield* Effect.all(Object.entries(plan$1.resources).map(Effect.fn(function* ([id, node]) {
|
|
14957
14998
|
return [id, yield* apply(node)];
|
|
14958
|
-
}))));
|
|
14999
|
+
})), { concurrency: "unbounded" }));
|
|
14959
15000
|
});
|
|
14960
15001
|
const collectGarbage = Effect.fnUntraced(function* (plan$1, session) {
|
|
14961
15002
|
const state = yield* State;
|
|
@@ -15009,7 +15050,7 @@ const collectGarbage = Effect.fnUntraced(function* (plan$1, session) {
|
|
|
15009
15050
|
})
|
|
15010
15051
|
};
|
|
15011
15052
|
return yield* deletions[logicalId] ??= yield* Effect.cached(Effect.gen(function* () {
|
|
15012
|
-
yield* Effect.all(downstream.map((dep) => dep in deletionGraph ? deleteResource(deletionGraph[dep]) : Effect.void));
|
|
15053
|
+
yield* Effect.all(downstream.map((dep) => dep in deletionGraph ? deleteResource(deletionGraph[dep]) : Effect.void), { concurrency: "unbounded" });
|
|
15013
15054
|
yield* report("deleting");
|
|
15014
15055
|
if (isDeleteNode(node)) yield* commit({
|
|
15015
15056
|
status: "deleting",
|
|
@@ -15022,7 +15063,7 @@ const collectGarbage = Effect.fnUntraced(function* (plan$1, session) {
|
|
|
15022
15063
|
providerVersion: provider.version ?? 0,
|
|
15023
15064
|
bindings: node.bindings
|
|
15024
15065
|
});
|
|
15025
|
-
yield* provider.delete({
|
|
15066
|
+
if (attr !== void 0) yield* provider.delete({
|
|
15026
15067
|
id: logicalId,
|
|
15027
15068
|
instanceId,
|
|
15028
15069
|
olds: props,
|
|
@@ -15051,15 +15092,15 @@ const collectGarbage = Effect.fnUntraced(function* (plan$1, session) {
|
|
|
15051
15092
|
});
|
|
15052
15093
|
yield* report("replaced");
|
|
15053
15094
|
}
|
|
15054
|
-
}));
|
|
15095
|
+
}).pipe(Effect.provide(Layer.succeed(InstanceId, instanceId))));
|
|
15055
15096
|
});
|
|
15056
|
-
yield* Effect.all(Object.values(deletionGraph).filter((node) => node !== void 0).map(deleteResource));
|
|
15097
|
+
yield* Effect.all(Object.values(deletionGraph).filter((node) => node !== void 0).map(deleteResource), { concurrency: "unbounded" });
|
|
15057
15098
|
});
|
|
15058
15099
|
|
|
15059
15100
|
//#endregion
|
|
15060
15101
|
//#region src/dot-alchemy.ts
|
|
15061
15102
|
var DotAlchemy = class extends Context.Tag(".alchemy")() {};
|
|
15062
|
-
const dotAlchemy = Layer.effect(DotAlchemy, Effect.gen(function* () {
|
|
15103
|
+
const dotAlchemy = Layer$1.effect(DotAlchemy, Effect.gen(function* () {
|
|
15063
15104
|
const fs$1 = yield* FileSystem.FileSystem;
|
|
15064
15105
|
const dir = (yield* Path$1.Path).join(process.cwd(), ".alchemy");
|
|
15065
15106
|
yield* fs$1.makeDirectory(dir, { recursive: true });
|
|
@@ -55235,7 +55276,7 @@ function useGlobalSpinner(intervalMs = 80) {
|
|
|
55235
55276
|
|
|
55236
55277
|
//#endregion
|
|
55237
55278
|
//#region src/cli/ink-service.tsx
|
|
55238
|
-
const inkCLI = () => Layer.succeed(CLI, CLI.of({
|
|
55279
|
+
const inkCLI = () => Layer$1.succeed(CLI, CLI.of({
|
|
55239
55280
|
approvePlan,
|
|
55240
55281
|
displayPlan,
|
|
55241
55282
|
startApplySession
|
|
@@ -55325,10 +55366,10 @@ const execStack = Effect.fn(function* ({ main: main$1, stage: stage$1, envFile:
|
|
|
55325
55366
|
if (!stack) return yield* Effect.die(/* @__PURE__ */ new Error(`Main file '${main$1}' must export a default stack definition (export default defineStack({...}))`));
|
|
55326
55367
|
const stackName = stack.name;
|
|
55327
55368
|
const configProvider = Option.isSome(envFile$1) ? ConfigProvider.orElse(yield* PlatformConfigProvider.fromDotEnv(envFile$1.value), ConfigProvider.fromEnv) : ConfigProvider.fromEnv();
|
|
55328
|
-
const stageConfig = yield* asEffect(stack.stages.config(stage$1)).pipe(Effect.provide(stack.layers ?? Layer.empty), Effect.withConfigProvider(configProvider));
|
|
55329
|
-
const platform$1 = Layer.mergeAll(NodeContext.layer, FetchHttpClient.layer, Logger.pretty);
|
|
55330
|
-
const alchemy = Layer.mergeAll(stack.state ?? localFs, stack.cli ?? inkCLI(), dotAlchemy);
|
|
55331
|
-
const layers = Layer.provideMerge(Layer.provideMerge(stack.providers, alchemy), Layer.mergeAll(platform$1, make({
|
|
55369
|
+
const stageConfig = yield* asEffect(stack.stages.config(stage$1)).pipe(Effect.provide(stack.layers ?? Layer$1.empty), Effect.withConfigProvider(configProvider));
|
|
55370
|
+
const platform$1 = Layer$1.mergeAll(NodeContext.layer, FetchHttpClient.layer, Logger.pretty);
|
|
55371
|
+
const alchemy = Layer$1.mergeAll(stack.state ?? localFs, stack.cli ?? inkCLI(), dotAlchemy);
|
|
55372
|
+
const layers = Layer$1.provideMerge(Layer$1.provideMerge(stack.providers, alchemy), Layer$1.mergeAll(platform$1, make({
|
|
55332
55373
|
name: stackName,
|
|
55333
55374
|
stage: stage$1,
|
|
55334
55375
|
config: stageConfig
|
|
@@ -55342,7 +55383,7 @@ const execStack = Effect.fn(function* ({ main: main$1, stage: stage$1, envFile:
|
|
|
55342
55383
|
if (!(yield* cli.approvePlan(updatePlan))) return;
|
|
55343
55384
|
}
|
|
55344
55385
|
const outputs = yield* applyPlan(updatePlan);
|
|
55345
|
-
if (outputs && stack.tap) yield* stack.tap(outputs).pipe(Effect.provide(stack.layers ?? Layer.empty));
|
|
55386
|
+
if (outputs && stack.tap) yield* stack.tap(outputs).pipe(Effect.provide(stack.layers ?? Layer$1.empty));
|
|
55346
55387
|
}
|
|
55347
55388
|
}).pipe(Effect.provide(layers), Effect.withConfigProvider(configProvider));
|
|
55348
55389
|
});
|