alchemy 2.0.0-beta.14 → 2.0.0-beta.15
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.js +602 -596
- package/bin/alchemy.js.map +1 -1
- package/bin/alchemy.ts +2 -0
- package/bin/commands/deploy.ts +0 -1
- package/bin/commands/state.ts +8 -5
- package/lib/AWS/Lambda/BucketEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/BucketEventSource.d.ts.map +1 -1
- package/lib/AWS/Lambda/EventBridgeEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/EventBridgeEventSource.d.ts.map +1 -1
- package/lib/AWS/Lambda/QueueEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/QueueEventSource.d.ts.map +1 -1
- package/lib/AWS/Lambda/StreamEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/StreamEventSource.d.ts.map +1 -1
- package/lib/AWS/Lambda/TableEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/TableEventSource.d.ts.map +1 -1
- package/lib/AWS/Lambda/TopicEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/TopicEventSource.d.ts.map +1 -1
- package/lib/Agent/lsp/client.d.ts +2 -2
- package/lib/Cli/InkCLI.d.ts +0 -1
- package/lib/Cli/InkCLI.d.ts.map +1 -1
- package/lib/Cli/InkCLI.js +0 -5
- package/lib/Cli/InkCLI.js.map +1 -1
- package/lib/Cli/index.d.ts +0 -1
- package/lib/Cli/index.d.ts.map +1 -1
- package/lib/Cli/index.js +4 -1
- package/lib/Cli/index.js.map +1 -1
- package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts +58 -0
- package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts.map +1 -0
- package/lib/Cloudflare/ApiToken/AccountApiToken.js +137 -0
- package/lib/Cloudflare/ApiToken/AccountApiToken.js.map +1 -0
- package/lib/Cloudflare/ApiToken/Common.d.ts +91 -0
- package/lib/Cloudflare/ApiToken/Common.d.ts.map +1 -0
- package/lib/Cloudflare/ApiToken/Common.js +61 -0
- package/lib/Cloudflare/ApiToken/Common.js.map +1 -0
- package/lib/Cloudflare/ApiToken/PermissionGroups.d.ts +1549 -0
- package/lib/Cloudflare/ApiToken/PermissionGroups.d.ts.map +1 -0
- package/lib/Cloudflare/ApiToken/PermissionGroups.js +1856 -0
- package/lib/Cloudflare/ApiToken/PermissionGroups.js.map +1 -0
- package/lib/Cloudflare/ApiToken/UserApiToken.d.ts +49 -0
- package/lib/Cloudflare/ApiToken/UserApiToken.d.ts.map +1 -0
- package/lib/Cloudflare/ApiToken/UserApiToken.js +113 -0
- package/lib/Cloudflare/ApiToken/UserApiToken.js.map +1 -0
- package/lib/Cloudflare/ApiToken/index.d.ts +5 -0
- package/lib/Cloudflare/ApiToken/index.d.ts.map +1 -0
- package/lib/Cloudflare/ApiToken/index.js +5 -0
- package/lib/Cloudflare/ApiToken/index.js.map +1 -0
- package/lib/Cloudflare/Auth/AuthProvider.js +2 -2
- package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
- package/lib/Cloudflare/Providers.d.ts.map +1 -1
- package/lib/Cloudflare/Providers.js +4 -1
- package/lib/Cloudflare/Providers.js.map +1 -1
- package/lib/Cloudflare/StateStore/Api.d.ts +7 -8
- package/lib/Cloudflare/StateStore/Api.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/Api.js +6 -4
- package/lib/Cloudflare/StateStore/Api.js.map +1 -1
- package/lib/Cloudflare/StateStore/State.d.ts +1 -1
- package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/Store.d.ts +2 -2
- package/lib/Cloudflare/StateStore/Store.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/Store.js +6 -4
- package/lib/Cloudflare/StateStore/Store.js.map +1 -1
- package/lib/Cloudflare/StateStore/Token.d.ts +6 -4
- package/lib/Cloudflare/StateStore/Token.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/Token.js +8 -4
- package/lib/Cloudflare/StateStore/Token.js.map +1 -1
- package/lib/Cloudflare/index.d.ts +1 -0
- package/lib/Cloudflare/index.d.ts.map +1 -1
- package/lib/Cloudflare/index.js +1 -0
- package/lib/Cloudflare/index.js.map +1 -1
- package/lib/Deploy.d.ts +1 -1
- package/lib/Deploy.d.ts.map +1 -1
- package/lib/Destroy.d.ts +1 -1
- package/lib/Destroy.d.ts.map +1 -1
- package/lib/GitHub/Providers.d.ts +3 -0
- package/lib/GitHub/Providers.d.ts.map +1 -0
- package/lib/GitHub/Providers.js +5 -0
- package/lib/GitHub/Providers.js.map +1 -0
- package/lib/GitHub/index.d.ts +1 -0
- package/lib/GitHub/index.d.ts.map +1 -1
- package/lib/GitHub/index.js +1 -0
- package/lib/GitHub/index.js.map +1 -1
- package/lib/Output.d.ts.map +1 -1
- package/lib/Output.js +4 -0
- package/lib/Output.js.map +1 -1
- package/lib/Plan.d.ts.map +1 -1
- package/lib/Plan.js +4 -0
- package/lib/Plan.js.map +1 -1
- package/lib/Stack.d.ts +5 -4
- package/lib/Stack.d.ts.map +1 -1
- package/lib/Stack.js +27 -8
- package/lib/Stack.js.map +1 -1
- package/lib/State/HttpStateStore.js +1 -1
- package/lib/State/HttpStateStore.js.map +1 -1
- package/lib/Test/Bun.d.ts +2 -2
- package/lib/Test/Bun.d.ts.map +1 -1
- package/lib/Test/Bun.js +2 -4
- package/lib/Test/Bun.js.map +1 -1
- package/lib/Test/Vitest.d.ts +1 -1
- package/lib/Test/Vitest.d.ts.map +1 -1
- package/lib/Test/Vitest.js +11 -7
- package/lib/Test/Vitest.js.map +1 -1
- package/lib/cli/index.d.ts +2 -6
- package/lib/cli/index.d.ts.map +1 -1
- package/lib/cli/index.js +2 -43050
- package/lib/cli/index.js.map +1 -1
- package/package.json +5 -5
- package/src/Cli/InkCLI.tsx +0 -10
- package/src/Cli/index.ts +4 -1
- package/src/Cloudflare/ApiToken/AccountApiToken.ts +197 -0
- package/src/Cloudflare/ApiToken/Common.ts +148 -0
- package/src/Cloudflare/ApiToken/PermissionGroups.ts +1910 -0
- package/src/Cloudflare/ApiToken/UserApiToken.ts +168 -0
- package/src/Cloudflare/ApiToken/index.ts +4 -0
- package/src/Cloudflare/Auth/AuthProvider.ts +2 -2
- package/src/Cloudflare/Providers.ts +5 -0
- package/src/Cloudflare/StateStore/Api.ts +6 -4
- package/src/Cloudflare/StateStore/Store.ts +6 -4
- package/src/Cloudflare/StateStore/Token.ts +10 -4
- package/src/Cloudflare/index.ts +1 -0
- package/src/GitHub/Providers.ts +6 -0
- package/src/GitHub/index.ts +1 -0
- package/src/Output.ts +3 -0
- package/src/Plan.ts +3 -0
- package/src/Stack.ts +33 -7
- package/src/State/HttpStateStore.ts +1 -0
- package/src/Test/Bun.ts +2 -2
- package/src/Test/Vitest.ts +11 -7
package/bin/alchemy.ts
CHANGED
|
@@ -6,6 +6,7 @@ import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";
|
|
|
6
6
|
|
|
7
7
|
import packageJson from "../package.json" with { type: "json" };
|
|
8
8
|
import { AlchemyContextLive } from "../src/AlchemyContext.ts";
|
|
9
|
+
import { inkCLI } from "../src/Cli/InkCLI.tsx";
|
|
9
10
|
import { PlatformServices, runMain } from "../src/Util/PlatformServices.ts";
|
|
10
11
|
|
|
11
12
|
import { handleCancellation } from "./commands/_shared.ts";
|
|
@@ -42,6 +43,7 @@ const services = Layer.mergeAll(
|
|
|
42
43
|
Layer.provideMerge(AlchemyContextLive, PlatformServices),
|
|
43
44
|
FetchHttpClient.layer,
|
|
44
45
|
ConfigProvider.layer(ConfigProvider.fromEnv()),
|
|
46
|
+
inkCLI(),
|
|
45
47
|
);
|
|
46
48
|
|
|
47
49
|
cli.pipe(
|
package/bin/commands/deploy.ts
CHANGED
package/bin/commands/state.ts
CHANGED
|
@@ -23,7 +23,9 @@ import { envFile, importStack, main, profile, stage } from "./_shared.ts";
|
|
|
23
23
|
* bootstrap.
|
|
24
24
|
*/
|
|
25
25
|
const localFlag = Flag.boolean("local").pipe(
|
|
26
|
-
Flag.withDescription(
|
|
26
|
+
Flag.withDescription(
|
|
27
|
+
"Read from local .alchemy/state instead of the stack's configured state store",
|
|
28
|
+
),
|
|
27
29
|
Flag.withDefault(false),
|
|
28
30
|
);
|
|
29
31
|
|
|
@@ -62,7 +64,10 @@ const withStateService = <A, E>(
|
|
|
62
64
|
const services = Layer.mergeAll(
|
|
63
65
|
Layer.succeed(AuthProviders, {}),
|
|
64
66
|
ConfigProvider.layer(
|
|
65
|
-
withProfileOverride(
|
|
67
|
+
withProfileOverride(
|
|
68
|
+
yield* loadConfigProvider(args.envFile),
|
|
69
|
+
args.profile,
|
|
70
|
+
),
|
|
66
71
|
),
|
|
67
72
|
Logger.layer([fileLogger("out")]),
|
|
68
73
|
Layer.succeed(Stage, args.stage),
|
|
@@ -171,9 +176,7 @@ const getCommand = Command.make(
|
|
|
171
176
|
fqn,
|
|
172
177
|
});
|
|
173
178
|
if (value === undefined) {
|
|
174
|
-
yield* Console.log(
|
|
175
|
-
`(not found: ${stackName}/${stageName}/${fqn})`,
|
|
176
|
-
);
|
|
179
|
+
yield* Console.log(`(not found: ${stackName}/${stageName}/${fqn})`);
|
|
177
180
|
return;
|
|
178
181
|
}
|
|
179
182
|
// encodeState produces a JSON-friendly view: redacted secrets
|
|
@@ -22,7 +22,7 @@ import type { S3EventType } from "../S3/S3Event.ts";
|
|
|
22
22
|
* );
|
|
23
23
|
* ```
|
|
24
24
|
*/
|
|
25
|
-
export declare const BucketEventSource: Layer.Layer<S3BucketEventSource, never, import("../../AlchemyContext.ts").AlchemyContext | import("effect/Path").Path | import("effect/FileSystem").FileSystem | import("effect/unstable/process/ChildProcessSpawner").ChildProcessSpawner | import("effect/unstable/http/HttpClient").HttpClient | import("../../ExecutionContext.ts").ExecutionContext<import("../../ExecutionContext.ts").BaseExecutionContext> | import("../../Auth/AuthProvider.ts").AuthProviders | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | Binding.PolicyLike | import("../../Provider.ts").Provider<any> | import("../../Provider.ts").ProviderCollectionLike | import("@distilled.cloud/aws/Region").Region | import("@distilled.cloud/aws/Credentials").Credentials>;
|
|
25
|
+
export declare const BucketEventSource: Layer.Layer<S3BucketEventSource, never, import("../../AlchemyContext.ts").AlchemyContext | import("effect/Path").Path | import("effect/FileSystem").FileSystem | import("effect/unstable/process/ChildProcessSpawner").ChildProcessSpawner | import("effect/unstable/http/HttpClient").HttpClient | import("../../ExecutionContext.ts").ExecutionContext<import("../../ExecutionContext.ts").BaseExecutionContext> | import("../../Auth/AuthProvider.ts").AuthProviders | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | import("../../Cli/Cli.ts").Cli | Binding.PolicyLike | import("../../Provider.ts").Provider<any> | import("../../Provider.ts").ProviderCollectionLike | import("@distilled.cloud/aws/Region").Region | import("@distilled.cloud/aws/Credentials").Credentials>;
|
|
26
26
|
declare const BucketEventSourcePolicy_base: Binding.Policy<BucketEventSourcePolicy, "Policy<AWS.S3.BucketEventSource>", (bucket: Bucket, props?: NotificationsProps<S3EventType[]>) => Effect.Effect<void>>;
|
|
27
27
|
/**
|
|
28
28
|
* Deploy-time policy for attaching an S3 bucket as a Lambda event source.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BucketEventSource.d.ts","sourceRoot":"","sources":["../../../src/AWS/Lambda/BucketEventSource.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,iBAAiB,IAAI,mBAAmB,EAEzC,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"BucketEventSource.d.ts","sourceRoot":"","sources":["../../../src/AWS/Lambda/BucketEventSource.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,iBAAiB,IAAI,mBAAmB,EAEzC,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB,2wBAqD7B,CAAC;iIAYU,MAAM,UACN,kBAAkB,CAAC,WAAW,EAAE,CAAC,KACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAR1B;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,4BAMd;CAAG;AAElC,eAAO,MAAM,2BAA2B,oDAuCvC,CAAC"}
|
|
@@ -93,7 +93,7 @@ export declare const isEventBridgeEvent: (event: any) => event is lambda.EventBr
|
|
|
93
93
|
* );
|
|
94
94
|
* ```
|
|
95
95
|
*/
|
|
96
|
-
export declare const EventSource: Layer.Layer<EventBridgeEventSource, never, import("../../AlchemyContext.ts").AlchemyContext | import("effect/Path").Path | import("effect/FileSystem").FileSystem | import("effect/unstable/process/ChildProcessSpawner").ChildProcessSpawner | import("effect/unstable/http/HttpClient").HttpClient | import("../../ExecutionContext.ts").ExecutionContext<import("../../ExecutionContext.ts").BaseExecutionContext> | import("../../Auth/AuthProvider.ts").AuthProviders | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | Binding.PolicyLike | import("../../Provider.ts").Provider<any> | import("../../Provider.ts").ProviderCollectionLike | import("@distilled.cloud/aws/Region").Region | import("@distilled.cloud/aws/Credentials").Credentials>;
|
|
96
|
+
export declare const EventSource: Layer.Layer<EventBridgeEventSource, never, import("../../AlchemyContext.ts").AlchemyContext | import("effect/Path").Path | import("effect/FileSystem").FileSystem | import("effect/unstable/process/ChildProcessSpawner").ChildProcessSpawner | import("effect/unstable/http/HttpClient").HttpClient | import("../../ExecutionContext.ts").ExecutionContext<import("../../ExecutionContext.ts").BaseExecutionContext> | import("../../Auth/AuthProvider.ts").AuthProviders | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | import("../../Cli/Cli.ts").Cli | Binding.PolicyLike | import("../../Provider.ts").Provider<any> | import("../../Provider.ts").ProviderCollectionLike | import("@distilled.cloud/aws/Region").Region | import("@distilled.cloud/aws/Credentials").Credentials>;
|
|
97
97
|
declare const EventSourcePolicy_base: Binding.Policy<EventSourcePolicy, "Policy<AWS.EventBridge.EventSource>", (descriptor: Parameters<EventSourceService>[0]) => Effect.Effect<void, never, any>>;
|
|
98
98
|
/**
|
|
99
99
|
* Deploy-time policy/service bridge for EventBridge subscriptions.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventBridgeEventSource.d.ts","sourceRoot":"","sources":["../../../src/AWS/Lambda/EventBridgeEventSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EACL,WAAW,IAAI,sBAAsB,EAKrC,KAAK,kBAAkB,EACxB,MAAM,+BAA+B,CAAC;AAIvC;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,GAAG,KACT,KAAK,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAEH,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqFG;AACH,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"EventBridgeEventSource.d.ts","sourceRoot":"","sources":["../../../src/AWS/Lambda/EventBridgeEventSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EACL,WAAW,IAAI,sBAAsB,EAKrC,KAAK,kBAAkB,EACxB,MAAM,+BAA+B,CAAC;AAIvC;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,GAAG,KACT,KAAK,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAEH,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqFG;AACH,eAAO,MAAM,WAAW,8wBAqCvB,CAAC;4HAWc,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;AAVtC;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,sBAKL;CAAG;AAErC;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,8CAYjC,CAAC"}
|
|
@@ -5,7 +5,7 @@ import * as Binding from "../../Binding.ts";
|
|
|
5
5
|
import type { Queue } from "../SQS/Queue.ts";
|
|
6
6
|
import { QueueEventSource as SQSQueueEventSource, type QueueEventSourceProps } from "../SQS/QueueEventSource.ts";
|
|
7
7
|
export declare const isSQSEvent: (event: any) => event is lambda.SQSEvent;
|
|
8
|
-
export declare const QueueEventSource: Layer.Layer<SQSQueueEventSource, never, import("../../AlchemyContext.ts").AlchemyContext | import("effect/Path").Path | import("effect/FileSystem").FileSystem | import("effect/unstable/process/ChildProcessSpawner").ChildProcessSpawner | import("effect/unstable/http/HttpClient").HttpClient | import("../../ExecutionContext.ts").ExecutionContext<import("../../ExecutionContext.ts").BaseExecutionContext> | import("../../Auth/AuthProvider.ts").AuthProviders | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | Binding.PolicyLike | import("../../Provider.ts").Provider<any> | import("../../Provider.ts").ProviderCollectionLike | import("@distilled.cloud/aws/Region").Region | import("@distilled.cloud/aws/Credentials").Credentials>;
|
|
8
|
+
export declare const QueueEventSource: Layer.Layer<SQSQueueEventSource, never, import("../../AlchemyContext.ts").AlchemyContext | import("effect/Path").Path | import("effect/FileSystem").FileSystem | import("effect/unstable/process/ChildProcessSpawner").ChildProcessSpawner | import("effect/unstable/http/HttpClient").HttpClient | import("../../ExecutionContext.ts").ExecutionContext<import("../../ExecutionContext.ts").BaseExecutionContext> | import("../../Auth/AuthProvider.ts").AuthProviders | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | import("../../Cli/Cli.ts").Cli | Binding.PolicyLike | import("../../Provider.ts").Provider<any> | import("../../Provider.ts").ProviderCollectionLike | import("@distilled.cloud/aws/Region").Region | import("@distilled.cloud/aws/Credentials").Credentials>;
|
|
9
9
|
declare const QueueEventSourcePolicy_base: Binding.Policy<QueueEventSourcePolicy, "Policy<AWS.SQS.QueueEventSourcePolicy>", (queue: Queue, props: QueueEventSourceProps) => Effect.Effect<void>>;
|
|
10
10
|
export declare class QueueEventSourcePolicy extends QueueEventSourcePolicy_base {
|
|
11
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueueEventSource.d.ts","sourceRoot":"","sources":["../../../src/AWS/Lambda/QueueEventSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,YAAY,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,gBAAgB,IAAI,mBAAmB,EACvC,KAAK,qBAAqB,EAE3B,MAAM,4BAA4B,CAAC;AAIpC,eAAO,MAAM,UAAU,GAAI,OAAO,GAAG,KAAG,KAAK,IAAI,MAAM,CAAC,QAGZ,CAAC;AAE7C,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"QueueEventSource.d.ts","sourceRoot":"","sources":["../../../src/AWS/Lambda/QueueEventSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,YAAY,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,gBAAgB,IAAI,mBAAmB,EACvC,KAAK,qBAAqB,EAE3B,MAAM,4BAA4B,CAAC;AAIpC,eAAO,MAAM,UAAU,GAAI,OAAO,GAAG,KAAG,KAAK,IAAI,MAAM,CAAC,QAGZ,CAAC;AAE7C,eAAO,MAAM,gBAAgB,2wBA8B5B,CAAC;oIAIQ,KAAK,SAAS,qBAAqB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAFrE,qBAAa,sBAAuB,SAAQ,2BAGP;CAAG;AAExC,eAAO,MAAM,0BAA0B,mDAsCtC,CAAC"}
|
|
@@ -5,7 +5,7 @@ import * as Binding from "../../Binding.ts";
|
|
|
5
5
|
import type { Stream as KinesisStream } from "../Kinesis/Stream.ts";
|
|
6
6
|
import { StreamEventSource as KinesisStreamEventSource, type StreamEventSourceProps } from "../Kinesis/StreamEventSource.ts";
|
|
7
7
|
export declare const isKinesisStreamEvent: (event: any) => event is lambda.KinesisStreamEvent;
|
|
8
|
-
export declare const StreamEventSource: Layer.Layer<KinesisStreamEventSource, never, import("../../AlchemyContext.ts").AlchemyContext | import("effect/Path").Path | import("effect/FileSystem").FileSystem | import("effect/unstable/process/ChildProcessSpawner").ChildProcessSpawner | import("effect/unstable/http/HttpClient").HttpClient | import("../../ExecutionContext.ts").ExecutionContext<import("../../ExecutionContext.ts").BaseExecutionContext> | import("../../Auth/AuthProvider.ts").AuthProviders | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | Binding.PolicyLike | import("../../Provider.ts").Provider<any> | import("../../Provider.ts").ProviderCollectionLike | import("@distilled.cloud/aws/Region").Region | import("@distilled.cloud/aws/Credentials").Credentials>;
|
|
8
|
+
export declare const StreamEventSource: Layer.Layer<KinesisStreamEventSource, never, import("../../AlchemyContext.ts").AlchemyContext | import("effect/Path").Path | import("effect/FileSystem").FileSystem | import("effect/unstable/process/ChildProcessSpawner").ChildProcessSpawner | import("effect/unstable/http/HttpClient").HttpClient | import("../../ExecutionContext.ts").ExecutionContext<import("../../ExecutionContext.ts").BaseExecutionContext> | import("../../Auth/AuthProvider.ts").AuthProviders | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | import("../../Cli/Cli.ts").Cli | Binding.PolicyLike | import("../../Provider.ts").Provider<any> | import("../../Provider.ts").ProviderCollectionLike | import("@distilled.cloud/aws/Region").Region | import("@distilled.cloud/aws/Credentials").Credentials>;
|
|
9
9
|
declare const StreamEventSourcePolicy_base: Binding.Policy<StreamEventSourcePolicy, "Policy<AWS.Kinesis.StreamEventSource>", (stream: KinesisStream, props: StreamEventSourceProps) => Effect.Effect<void>>;
|
|
10
10
|
export declare class StreamEventSourcePolicy extends StreamEventSourcePolicy_base {
|
|
11
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StreamEventSource.d.ts","sourceRoot":"","sources":["../../../src/AWS/Lambda/StreamEventSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,YAAY,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EACL,iBAAiB,IAAI,wBAAwB,EAE7C,KAAK,sBAAsB,EAE5B,MAAM,iCAAiC,CAAC;AAIzC,eAAO,MAAM,oBAAoB,GAC/B,OAAO,GAAG,KACT,KAAK,IAAI,MAAM,CAAC,kBAG6B,CAAC;AAEjD,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"StreamEventSource.d.ts","sourceRoot":"","sources":["../../../src/AWS/Lambda/StreamEventSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,YAAY,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EACL,iBAAiB,IAAI,wBAAwB,EAE7C,KAAK,sBAAsB,EAE5B,MAAM,iCAAiC,CAAC;AAIzC,eAAO,MAAM,oBAAoB,GAC/B,OAAO,GAAG,KACT,KAAK,IAAI,MAAM,CAAC,kBAG6B,CAAC;AAEjD,eAAO,MAAM,iBAAiB,gxBAsC7B,CAAC;sIAIS,aAAa,SAAS,sBAAsB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAF/E,qBAAa,uBAAwB,SAAQ,4BAGT;CAAG;AAEvC,eAAO,MAAM,2BAA2B,oDAuDvC,CAAC"}
|
|
@@ -5,7 +5,7 @@ import * as Binding from "../../Binding.ts";
|
|
|
5
5
|
import { TableEventSource as DynamoDBTableEventSource, type StreamsProps } from "../DynamoDB/Stream.ts";
|
|
6
6
|
import type { Table } from "../DynamoDB/Table.ts";
|
|
7
7
|
export declare const isDynamoDBStreamEvent: (event: any) => event is lambda.DynamoDBStreamEvent;
|
|
8
|
-
export declare const TableEventSource: Layer.Layer<DynamoDBTableEventSource, never, import("../../AlchemyContext.ts").AlchemyContext | import("effect/Path").Path | import("effect/FileSystem").FileSystem | import("effect/unstable/process/ChildProcessSpawner").ChildProcessSpawner | import("effect/unstable/http/HttpClient").HttpClient | import("../../ExecutionContext.ts").ExecutionContext<import("../../ExecutionContext.ts").BaseExecutionContext> | import("../../Auth/AuthProvider.ts").AuthProviders | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | Binding.PolicyLike | import("../../Provider.ts").Provider<any> | import("../../Provider.ts").ProviderCollectionLike | import("@distilled.cloud/aws/Region").Region | import("@distilled.cloud/aws/Credentials").Credentials>;
|
|
8
|
+
export declare const TableEventSource: Layer.Layer<DynamoDBTableEventSource, never, import("../../AlchemyContext.ts").AlchemyContext | import("effect/Path").Path | import("effect/FileSystem").FileSystem | import("effect/unstable/process/ChildProcessSpawner").ChildProcessSpawner | import("effect/unstable/http/HttpClient").HttpClient | import("../../ExecutionContext.ts").ExecutionContext<import("../../ExecutionContext.ts").BaseExecutionContext> | import("../../Auth/AuthProvider.ts").AuthProviders | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | import("../../Cli/Cli.ts").Cli | Binding.PolicyLike | import("../../Provider.ts").Provider<any> | import("../../Provider.ts").ProviderCollectionLike | import("@distilled.cloud/aws/Region").Region | import("@distilled.cloud/aws/Credentials").Credentials>;
|
|
9
9
|
declare const TableEventSourcePolicy_base: Binding.Policy<TableEventSourcePolicy, "Policy<AWS.DynamoDB.TableEventSource>", (table: Table, props: StreamsProps) => Effect.Effect<void>>;
|
|
10
10
|
export declare class TableEventSourcePolicy extends TableEventSourcePolicy_base {
|
|
11
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableEventSource.d.ts","sourceRoot":"","sources":["../../../src/AWS/Lambda/TableEventSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,YAAY,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EACL,gBAAgB,IAAI,wBAAwB,EAE5C,KAAK,YAAY,EAElB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAIlD,eAAO,MAAM,qBAAqB,GAChC,OAAO,GAAG,KACT,KAAK,IAAI,MAAM,CAAC,mBAG8B,CAAC;AAElD,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"TableEventSource.d.ts","sourceRoot":"","sources":["../../../src/AWS/Lambda/TableEventSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,YAAY,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EACL,gBAAgB,IAAI,wBAAwB,EAE5C,KAAK,YAAY,EAElB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAIlD,eAAO,MAAM,qBAAqB,GAChC,OAAO,GAAG,KACT,KAAK,IAAI,MAAM,CAAC,mBAG8B,CAAC;AAElD,eAAO,MAAM,gBAAgB,gxBAuC5B,CAAC;mIAIQ,KAAK,SAAS,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAF5D,qBAAa,sBAAuB,SAAQ,2BAGR;CAAG;AAEvC,eAAO,MAAM,0BAA0B,mDAqFtC,CAAC"}
|
|
@@ -5,7 +5,7 @@ import * as Binding from "../../Binding.ts";
|
|
|
5
5
|
import type { Topic } from "../SNS/Topic.ts";
|
|
6
6
|
import { TopicEventSource as SNSTopicEventSource, type TopicEventSourceProps } from "../SNS/TopicEventSource.ts";
|
|
7
7
|
export declare const isSNSEvent: (event: any) => event is lambda.SNSEvent;
|
|
8
|
-
export declare const TopicEventSource: Layer.Layer<SNSTopicEventSource, never, import("../../AlchemyContext.ts").AlchemyContext | import("effect/Path").Path | import("effect/FileSystem").FileSystem | import("effect/unstable/process/ChildProcessSpawner").ChildProcessSpawner | import("effect/unstable/http/HttpClient").HttpClient | import("../../ExecutionContext.ts").ExecutionContext<import("../../ExecutionContext.ts").BaseExecutionContext> | import("../../Auth/AuthProvider.ts").AuthProviders | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | Binding.PolicyLike | import("../../Provider.ts").Provider<any> | import("../../Provider.ts").ProviderCollectionLike | import("@distilled.cloud/aws/Region").Region | import("@distilled.cloud/aws/Credentials").Credentials>;
|
|
8
|
+
export declare const TopicEventSource: Layer.Layer<SNSTopicEventSource, never, import("../../AlchemyContext.ts").AlchemyContext | import("effect/Path").Path | import("effect/FileSystem").FileSystem | import("effect/unstable/process/ChildProcessSpawner").ChildProcessSpawner | import("effect/unstable/http/HttpClient").HttpClient | import("../../ExecutionContext.ts").ExecutionContext<import("../../ExecutionContext.ts").BaseExecutionContext> | import("../../Auth/AuthProvider.ts").AuthProviders | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | import("../../Cli/Cli.ts").Cli | Binding.PolicyLike | import("../../Provider.ts").Provider<any> | import("../../Provider.ts").ProviderCollectionLike | import("@distilled.cloud/aws/Region").Region | import("@distilled.cloud/aws/Credentials").Credentials>;
|
|
9
9
|
declare const TopicEventSourcePolicy_base: Binding.Policy<TopicEventSourcePolicy, "Policy<AWS.SNS.TopicEventSource>", (topic: Topic, props?: TopicEventSourceProps) => Effect.Effect<void>>;
|
|
10
10
|
export declare class TopicEventSourcePolicy extends TopicEventSourcePolicy_base {
|
|
11
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopicEventSource.d.ts","sourceRoot":"","sources":["../../../src/AWS/Lambda/TopicEventSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,YAAY,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAE5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,gBAAgB,IAAI,mBAAmB,EACvC,KAAK,qBAAqB,EAG3B,MAAM,4BAA4B,CAAC;AAIpC,eAAO,MAAM,UAAU,GAAI,OAAO,GAAG,KAAG,KAAK,IAAI,MAAM,CAAC,QAEe,CAAC;AAExE,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"TopicEventSource.d.ts","sourceRoot":"","sources":["../../../src/AWS/Lambda/TopicEventSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,YAAY,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAE5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,gBAAgB,IAAI,mBAAmB,EACvC,KAAK,qBAAqB,EAG3B,MAAM,4BAA4B,CAAC;AAIpC,eAAO,MAAM,UAAU,GAAI,OAAO,GAAG,KAAG,KAAK,IAAI,MAAM,CAAC,QAEe,CAAC;AAExE,eAAO,MAAM,gBAAgB,2wBAwC5B,CAAC;8HAIQ,KAAK,UAAU,qBAAqB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAFtE,qBAAa,sBAAuB,SAAQ,2BAGb;CAAG;AAElC,eAAO,MAAM,0BAA0B,mDAqCtC,CAAC"}
|
|
@@ -96,9 +96,9 @@ export declare const makeLSPClient: (id: string, proc: Subprocess, root: string)
|
|
|
96
96
|
readonly character: number;
|
|
97
97
|
};
|
|
98
98
|
};
|
|
99
|
-
readonly source?: string | undefined;
|
|
100
99
|
readonly code?: string | number | undefined;
|
|
101
100
|
readonly severity?: number | undefined;
|
|
101
|
+
readonly source?: string | undefined;
|
|
102
102
|
}[], never, never>;
|
|
103
103
|
getDiagnostics: (path: string) => Effect.Effect<never[] | {
|
|
104
104
|
readonly message: string;
|
|
@@ -112,9 +112,9 @@ export declare const makeLSPClient: (id: string, proc: Subprocess, root: string)
|
|
|
112
112
|
readonly character: number;
|
|
113
113
|
};
|
|
114
114
|
};
|
|
115
|
-
readonly source?: string | undefined;
|
|
116
115
|
readonly code?: string | number | undefined;
|
|
117
116
|
readonly severity?: number | undefined;
|
|
117
|
+
readonly source?: string | undefined;
|
|
118
118
|
}[], never, never>;
|
|
119
119
|
onDiagnostics: (callback: (uri: string, diagnostics: Diagnostic[]) => Effect.Effect<void>) => Effect.Effect<void, never, never>;
|
|
120
120
|
shutdown: Effect.Effect<void, never, never>;
|
package/lib/Cli/InkCLI.d.ts
CHANGED
package/lib/Cli/InkCLI.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InkCLI.d.ts","sourceRoot":"","sources":["../../src/Cli/InkCLI.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,EAA0B,GAAG,EAAE,MAAM,UAAU,CAAC;AAMvD,eAAO,MAAM,MAAM,sCAQhB,CAAC
|
|
1
|
+
{"version":3,"file":"InkCLI.d.ts","sourceRoot":"","sources":["../../src/Cli/InkCLI.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,EAA0B,GAAG,EAAE,MAAM,UAAU,CAAC;AAMvD,eAAO,MAAM,MAAM,sCAQhB,CAAC"}
|
package/lib/Cli/InkCLI.js
CHANGED
|
@@ -12,11 +12,6 @@ export const inkCLI = () => Layer.succeed(Cli, Cli.of({
|
|
|
12
12
|
displayPlan,
|
|
13
13
|
startApplySession,
|
|
14
14
|
}));
|
|
15
|
-
export const inkCLIAutoApprove = () => Layer.succeed(Cli, Cli.of({
|
|
16
|
-
approvePlan: () => Effect.succeed(true),
|
|
17
|
-
displayPlan,
|
|
18
|
-
startApplySession,
|
|
19
|
-
}));
|
|
20
15
|
const approvePlan = Effect.fn(function* (plan) {
|
|
21
16
|
let approved = false;
|
|
22
17
|
const { waitUntilExit } = render(_jsx(ApprovePlan, { plan: plan, approve: (a) => (approved = a) }));
|
package/lib/Cli/InkCLI.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InkCLI.js","sourceRoot":"","sources":["../../src/Cli/InkCLI.tsx"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAA0B,GAAG,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA8B,CAAC;AAC3D,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,sBAAuB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA+B,CAAC;AAE7D,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE,CACzB,KAAK,CAAC,OAAO,CACX,GAAG,EACH,GAAG,CAAC,EAAE,CAAC;IACL,WAAW;IACX,WAAW;IACX,iBAAiB;CAClB,CAAC,CACH,CAAC;AAEJ,MAAM,
|
|
1
|
+
{"version":3,"file":"InkCLI.js","sourceRoot":"","sources":["../../src/Cli/InkCLI.tsx"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAA0B,GAAG,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA8B,CAAC;AAC3D,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,sBAAuB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA+B,CAAC;AAE7D,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE,CACzB,KAAK,CAAC,OAAO,CACX,GAAG,EACH,GAAG,CAAC,EAAE,CAAC;IACL,WAAW;IACX,WAAW;IACX,iBAAiB;CAClB,CAAC,CACH,CAAC;AAEJ,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAkB,IAAO;IAC9D,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAC9B,KAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAI,CAC5D,CAAC;IACF,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACrC,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAiB,IAAO,EAAuB,EAAE,CACnE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;IACf,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAC,aAAa,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC,CAAC;IAC1D,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEL,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAkB,IAAO;IACpE,MAAM,SAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IACzD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CACxB,KAAC,YAAY,IACX,IAAI,EAAE,IAAI,EACV,MAAM,EAAE;YACN,SAAS,CAAC,QAAQ;gBAChB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACxB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;SACF,GACD,CACH,CAAC;IACF,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;YACvB,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,8CAA8C;YACvE,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACtC,CAAC,CAAC;QACF,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YACf,KAAK,MAAM,QAAQ,IAAI,SAAS;gBAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC,CAAC;KACuB,CAAC;AAChC,CAAC,CAAC,CAAC"}
|
package/lib/Cli/index.d.ts
CHANGED
package/lib/Cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Cli/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Cli/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
|
package/lib/Cli/index.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export * from "./Cli.js";
|
|
2
|
-
|
|
2
|
+
// Note: do NOT re-export InkCLI here. The Ink-based renderer pulls in
|
|
3
|
+
// `react`/`ink`, which we do not want consumers of `alchemy/Cli` to
|
|
4
|
+
// transitively depend on. Import `alchemy/Cli/InkCLI` directly when needed
|
|
5
|
+
// (currently only from `bin/alchemy.ts`, which is bundled).
|
|
3
6
|
//# sourceMappingURL=index.js.map
|
package/lib/Cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Cli/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Cli/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,4DAA4D"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import * as Redacted from "effect/Redacted";
|
|
2
|
+
import * as Provider from "../../Provider.ts";
|
|
3
|
+
import { Resource } from "../../Resource.ts";
|
|
4
|
+
import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
|
|
5
|
+
import type { Providers } from "../Providers.ts";
|
|
6
|
+
import { type BaseApiTokenProps } from "./Common.ts";
|
|
7
|
+
export type AccountApiTokenProps = BaseApiTokenProps;
|
|
8
|
+
export type AccountApiToken = Resource<"Cloudflare.AccountApiToken", AccountApiTokenProps, {
|
|
9
|
+
tokenId: string;
|
|
10
|
+
name: string;
|
|
11
|
+
status: "active" | "disabled" | "expired";
|
|
12
|
+
/**
|
|
13
|
+
* The plaintext token value. Cloudflare returns this only once, on
|
|
14
|
+
* creation, so we persist it here for downstream consumers (e.g. a
|
|
15
|
+
* GitHub Actions secret).
|
|
16
|
+
*/
|
|
17
|
+
value: Redacted.Redacted<string>;
|
|
18
|
+
accountId: string;
|
|
19
|
+
}, never, Providers>;
|
|
20
|
+
/**
|
|
21
|
+
* A Cloudflare account-owned API token (`POST /accounts/{account_id}/tokens`).
|
|
22
|
+
*
|
|
23
|
+
* Account-owned tokens are managed at the account level and persist
|
|
24
|
+
* independently of any single user. Use these for CI tokens, third-party
|
|
25
|
+
* integrations, or anywhere the token should outlive an individual user's
|
|
26
|
+
* session.
|
|
27
|
+
*
|
|
28
|
+
* Creating account-owned tokens requires the caller to have the
|
|
29
|
+
* `API Tokens > Write` account permission.
|
|
30
|
+
*
|
|
31
|
+
* @section Creating a Token
|
|
32
|
+
* @example A token for managing Workers and KV from CI
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const token = yield* Cloudflare.AccountApiToken("ci-token", {
|
|
35
|
+
* name: "my-ci-token",
|
|
36
|
+
* policies: [
|
|
37
|
+
* {
|
|
38
|
+
* effect: "allow",
|
|
39
|
+
* permissionGroups: [
|
|
40
|
+
* "Workers Scripts Write",
|
|
41
|
+
* "Workers KV Storage Write",
|
|
42
|
+
* ],
|
|
43
|
+
* resources: { "com.cloudflare.api.account": "*" },
|
|
44
|
+
* },
|
|
45
|
+
* ],
|
|
46
|
+
* });
|
|
47
|
+
*
|
|
48
|
+
* yield* GitHub.Secret("cf-api-token", {
|
|
49
|
+
* owner: "me",
|
|
50
|
+
* repository: "my-repo",
|
|
51
|
+
* name: "CLOUDFLARE_API_TOKEN",
|
|
52
|
+
* value: token.value,
|
|
53
|
+
* });
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare const AccountApiToken: import("../../Resource.ts").ResourceClass<AccountApiToken>;
|
|
57
|
+
export declare const AccountApiTokenProvider: () => import("effect/Layer").Layer<Provider.Provider<AccountApiToken>, never, import("effect/unstable/http/HttpClient").HttpClient | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | import("@distilled.cloud/cloudflare").Credentials | CloudflareEnvironment>;
|
|
58
|
+
//# sourceMappingURL=AccountApiToken.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountApiToken.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/AccountApiToken.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAG5C,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAErD,MAAM,MAAM,eAAe,GAAG,QAAQ,CACpC,4BAA4B,EAC5B,oBAAoB,EACpB;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C;;;;OAIG;IACH,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB,EACD,KAAK,EACL,SAAS,CACV,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,eAAe,4DAE3B,CAAC;AASF,eAAO,MAAM,uBAAuB,mRA+GjC,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import * as accounts from "@distilled.cloud/cloudflare/accounts";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Redacted from "effect/Redacted";
|
|
4
|
+
import { isResolved } from "../../Diff.js";
|
|
5
|
+
import { createPhysicalName } from "../../PhysicalName.js";
|
|
6
|
+
import * as Provider from "../../Provider.js";
|
|
7
|
+
import { Resource } from "../../Resource.js";
|
|
8
|
+
import { CloudflareEnvironment } from "../CloudflareEnvironment.js";
|
|
9
|
+
import { buildConditionPayload, conditionFingerprint, policyFingerprint, resolvePolicies, } from "./Common.js";
|
|
10
|
+
/**
|
|
11
|
+
* A Cloudflare account-owned API token (`POST /accounts/{account_id}/tokens`).
|
|
12
|
+
*
|
|
13
|
+
* Account-owned tokens are managed at the account level and persist
|
|
14
|
+
* independently of any single user. Use these for CI tokens, third-party
|
|
15
|
+
* integrations, or anywhere the token should outlive an individual user's
|
|
16
|
+
* session.
|
|
17
|
+
*
|
|
18
|
+
* Creating account-owned tokens requires the caller to have the
|
|
19
|
+
* `API Tokens > Write` account permission.
|
|
20
|
+
*
|
|
21
|
+
* @section Creating a Token
|
|
22
|
+
* @example A token for managing Workers and KV from CI
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const token = yield* Cloudflare.AccountApiToken("ci-token", {
|
|
25
|
+
* name: "my-ci-token",
|
|
26
|
+
* policies: [
|
|
27
|
+
* {
|
|
28
|
+
* effect: "allow",
|
|
29
|
+
* permissionGroups: [
|
|
30
|
+
* "Workers Scripts Write",
|
|
31
|
+
* "Workers KV Storage Write",
|
|
32
|
+
* ],
|
|
33
|
+
* resources: { "com.cloudflare.api.account": "*" },
|
|
34
|
+
* },
|
|
35
|
+
* ],
|
|
36
|
+
* });
|
|
37
|
+
*
|
|
38
|
+
* yield* GitHub.Secret("cf-api-token", {
|
|
39
|
+
* owner: "me",
|
|
40
|
+
* repository: "my-repo",
|
|
41
|
+
* name: "CLOUDFLARE_API_TOKEN",
|
|
42
|
+
* value: token.value,
|
|
43
|
+
* });
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export const AccountApiToken = Resource("Cloudflare.AccountApiToken");
|
|
47
|
+
const resolveName = (id, name) => Effect.gen(function* () {
|
|
48
|
+
return name ?? (yield* createPhysicalName({ id }));
|
|
49
|
+
});
|
|
50
|
+
export const AccountApiTokenProvider = () => Provider.effect(AccountApiToken, Effect.gen(function* () {
|
|
51
|
+
const { accountId } = yield* CloudflareEnvironment;
|
|
52
|
+
const createToken = yield* accounts.createToken;
|
|
53
|
+
const updateToken = yield* accounts.updateToken;
|
|
54
|
+
const deleteToken = yield* accounts.deleteToken;
|
|
55
|
+
const getToken = yield* accounts.getToken;
|
|
56
|
+
const buildAttributes = (tokenData, value) => ({
|
|
57
|
+
tokenId: tokenData.id ?? "",
|
|
58
|
+
name: tokenData.name ?? "",
|
|
59
|
+
status: tokenData.status ?? "active",
|
|
60
|
+
value,
|
|
61
|
+
accountId,
|
|
62
|
+
});
|
|
63
|
+
return {
|
|
64
|
+
stables: ["tokenId", "accountId"],
|
|
65
|
+
diff: Effect.fn(function* ({ id, olds, news, output }) {
|
|
66
|
+
if (!isResolved(news))
|
|
67
|
+
return undefined;
|
|
68
|
+
if ((output?.accountId ?? accountId) !== accountId) {
|
|
69
|
+
return { action: "replace" };
|
|
70
|
+
}
|
|
71
|
+
const oldName = output?.name ?? (yield* resolveName(id, olds?.name));
|
|
72
|
+
const newName = yield* resolveName(id, news.name);
|
|
73
|
+
const oldPolicyFp = policyFingerprint(resolvePolicies(olds?.policies ?? [], accountId));
|
|
74
|
+
const newPolicyFp = policyFingerprint(resolvePolicies(news.policies, accountId));
|
|
75
|
+
const oldCondFp = conditionFingerprint(olds?.condition);
|
|
76
|
+
const newCondFp = conditionFingerprint(news.condition);
|
|
77
|
+
if (oldName !== newName ||
|
|
78
|
+
oldPolicyFp !== newPolicyFp ||
|
|
79
|
+
oldCondFp !== newCondFp ||
|
|
80
|
+
(olds?.expiresOn ?? undefined) !== (news.expiresOn ?? undefined) ||
|
|
81
|
+
(olds?.notBefore ?? undefined) !== (news.notBefore ?? undefined)) {
|
|
82
|
+
return { action: "update" };
|
|
83
|
+
}
|
|
84
|
+
}),
|
|
85
|
+
create: Effect.fn(function* ({ id, news }) {
|
|
86
|
+
const name = yield* resolveName(id, news.name);
|
|
87
|
+
const policies = resolvePolicies(news.policies, accountId);
|
|
88
|
+
const result = yield* createToken({
|
|
89
|
+
accountId,
|
|
90
|
+
name,
|
|
91
|
+
policies,
|
|
92
|
+
condition: buildConditionPayload(news.condition),
|
|
93
|
+
expiresOn: news.expiresOn,
|
|
94
|
+
notBefore: news.notBefore,
|
|
95
|
+
});
|
|
96
|
+
if (!result.value) {
|
|
97
|
+
return yield* Effect.die(`Cloudflare did not return a value for token "${name}".`);
|
|
98
|
+
}
|
|
99
|
+
return buildAttributes(result, Redacted.make(result.value));
|
|
100
|
+
}),
|
|
101
|
+
update: Effect.fn(function* ({ id, news, output }) {
|
|
102
|
+
const name = yield* resolveName(id, news.name);
|
|
103
|
+
const policies = resolvePolicies(news.policies, accountId);
|
|
104
|
+
const result = yield* updateToken({
|
|
105
|
+
accountId,
|
|
106
|
+
tokenId: output.tokenId,
|
|
107
|
+
name,
|
|
108
|
+
policies,
|
|
109
|
+
condition: buildConditionPayload(news.condition),
|
|
110
|
+
expiresOn: news.expiresOn,
|
|
111
|
+
notBefore: news.notBefore,
|
|
112
|
+
});
|
|
113
|
+
// Cloudflare doesn't return the value on update; preserve the
|
|
114
|
+
// value captured at creation.
|
|
115
|
+
return buildAttributes(result, output.value);
|
|
116
|
+
}),
|
|
117
|
+
delete: Effect.fn(function* ({ output }) {
|
|
118
|
+
yield* deleteToken({
|
|
119
|
+
accountId: output.accountId,
|
|
120
|
+
tokenId: output.tokenId,
|
|
121
|
+
}).pipe(
|
|
122
|
+
// Already gone — Cloudflare may report this as either an
|
|
123
|
+
// `InvalidRoute` (token-id no longer routable) or a generic
|
|
124
|
+
// `TokenNotFound`. Either is fine; we just want the resource gone.
|
|
125
|
+
Effect.catchTag("InvalidRoute", () => Effect.void), Effect.catchTag("TokenNotFound", () => Effect.void));
|
|
126
|
+
}),
|
|
127
|
+
read: Effect.fn(function* ({ output }) {
|
|
128
|
+
if (!output?.tokenId)
|
|
129
|
+
return undefined;
|
|
130
|
+
return yield* getToken({
|
|
131
|
+
accountId: output.accountId,
|
|
132
|
+
tokenId: output.tokenId,
|
|
133
|
+
}).pipe(Effect.map((token) => buildAttributes(token, output.value)), Effect.catchTag("InvalidRoute", () => Effect.succeed(undefined)), Effect.catchTag("TokenNotFound", () => Effect.succeed(undefined)));
|
|
134
|
+
}),
|
|
135
|
+
};
|
|
136
|
+
}));
|
|
137
|
+
//# sourceMappingURL=AccountApiToken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountApiToken.js","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/AccountApiToken.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { type PermissionGroupName } from "./PermissionGroups.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Resource keys recognized by Cloudflare API token policies.
|
|
4
|
+
*
|
|
5
|
+
* The literal `"com.cloudflare.api.account"` is rewritten by the account-scoped
|
|
6
|
+
* provider to `"com.cloudflare.api.account.${accountId}"` so callers don't have
|
|
7
|
+
* to splice the account ID themselves.
|
|
8
|
+
*
|
|
9
|
+
* @see https://developers.cloudflare.com/fundamentals/api/reference/permissions/
|
|
10
|
+
*/
|
|
11
|
+
export type ApiTokenResourceKey = "com.cloudflare.api.account" | `com.cloudflare.api.account.${string}` | `com.cloudflare.api.account.zone.${string}` | `com.cloudflare.edge.r2.bucket.${string}` | (string & {});
|
|
12
|
+
/**
|
|
13
|
+
* A permission group reference: either a typed Cloudflare permission-group
|
|
14
|
+
* name (resolved against the static catalog) or an explicit `{ id }` for
|
|
15
|
+
* names that aren't in the catalog or have multiple scopes.
|
|
16
|
+
*/
|
|
17
|
+
export type ApiTokenPermissionGroupRef = PermissionGroupName | {
|
|
18
|
+
id: string;
|
|
19
|
+
meta?: {
|
|
20
|
+
key?: string;
|
|
21
|
+
value?: string;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export interface ApiTokenPolicy {
|
|
25
|
+
effect: "allow" | "deny";
|
|
26
|
+
permissionGroups: ApiTokenPermissionGroupRef[];
|
|
27
|
+
resources: {
|
|
28
|
+
[K in ApiTokenResourceKey]?: string;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export interface ApiTokenCondition {
|
|
32
|
+
requestIp?: {
|
|
33
|
+
in?: string[];
|
|
34
|
+
notIn?: string[];
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export type BaseApiTokenProps = {
|
|
38
|
+
/**
|
|
39
|
+
* Token name. Defaults to a generated physical name based on the
|
|
40
|
+
* resource's logical id, app name, and stage.
|
|
41
|
+
*/
|
|
42
|
+
name?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Access policies attached to the token. At least one policy is required
|
|
45
|
+
* by Cloudflare.
|
|
46
|
+
*/
|
|
47
|
+
policies: ApiTokenPolicy[];
|
|
48
|
+
/** ISO 8601 expiration timestamp. */
|
|
49
|
+
expiresOn?: string;
|
|
50
|
+
/** ISO 8601 "not before" timestamp. */
|
|
51
|
+
notBefore?: string;
|
|
52
|
+
/** Optional usage conditions (e.g. IP allowlist). */
|
|
53
|
+
condition?: ApiTokenCondition;
|
|
54
|
+
};
|
|
55
|
+
export type ResolvedPolicy = {
|
|
56
|
+
effect: "allow" | "deny";
|
|
57
|
+
permissionGroups: {
|
|
58
|
+
id: string;
|
|
59
|
+
meta?: {
|
|
60
|
+
key?: string;
|
|
61
|
+
value?: string;
|
|
62
|
+
};
|
|
63
|
+
}[];
|
|
64
|
+
resources: Record<string, unknown>;
|
|
65
|
+
};
|
|
66
|
+
export declare const resolvePermissionGroup: (ref: ApiTokenPermissionGroupRef) => {
|
|
67
|
+
id: string;
|
|
68
|
+
meta?: undefined;
|
|
69
|
+
} | {
|
|
70
|
+
id: string;
|
|
71
|
+
meta: {
|
|
72
|
+
key?: string;
|
|
73
|
+
value?: string;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Rewrite the bare `"com.cloudflare.api.account"` key to the
|
|
78
|
+
* account-scoped form. Pass `accountId: undefined` to leave keys unchanged
|
|
79
|
+
* (e.g. for user-owned tokens whose policies don't carry an account scope).
|
|
80
|
+
*/
|
|
81
|
+
export declare const resolveResources: (resources: ApiTokenPolicy["resources"], accountId: string | undefined) => Record<string, string>;
|
|
82
|
+
export declare const resolvePolicies: (policies: ApiTokenPolicy[], accountId: string | undefined) => ResolvedPolicy[];
|
|
83
|
+
export declare const policyFingerprint: (policies: ResolvedPolicy[]) => string;
|
|
84
|
+
export declare const conditionFingerprint: (condition: ApiTokenCondition | undefined) => string;
|
|
85
|
+
export declare const buildConditionPayload: (condition: ApiTokenCondition | undefined) => {
|
|
86
|
+
requestIp: {
|
|
87
|
+
in: string[] | undefined;
|
|
88
|
+
notIn: string[] | undefined;
|
|
89
|
+
} | undefined;
|
|
90
|
+
} | undefined;
|
|
91
|
+
//# sourceMappingURL=Common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Common.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/Common.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,GAC3B,4BAA4B,GAC5B,8BAA8B,MAAM,EAAE,GACtC,mCAAmC,MAAM,EAAE,GAC3C,iCAAiC,MAAM,EAAE,GACzC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,GAClC,mBAAmB,GACnB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,gBAAgB,EAAE,0BAA0B,EAAE,CAAC;IAC/C,SAAS,EAAE;SAAG,CAAC,IAAI,mBAAmB,CAAC,CAAC,EAAE,MAAM;KAAE,CAAC;CACpD;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE;QACV,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,gBAAgB,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EAAE,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,KAAK,0BAA0B;;;;;;cAxCrC,MAAM;gBAAU,MAAM;;CAqDtD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,cAAc,CAAC,WAAW,CAAC,EACtC,WAAW,MAAM,GAAG,SAAS,KAC5B,MAAM,CAAC,MAAM,EAAE,MAAM,CAWvB,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,cAAc,EAAE,EAC1B,WAAW,MAAM,GAAG,SAAS,KAC5B,cAAc,EAKZ,CAAC;AAEN,eAAO,MAAM,iBAAiB,GAAI,UAAU,cAAc,EAAE,KAAG,MAW5D,CAAC;AAEJ,eAAO,MAAM,oBAAoB,GAC/B,WAAW,iBAAiB,GAAG,SAAS,KACvC,MAIC,CAAC;AAEL,eAAO,MAAM,qBAAqB,GAChC,WAAW,iBAAiB,GAAG,SAAS;;;;;aAW3B,CAAC"}
|