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.
Files changed (127) hide show
  1. package/bin/alchemy.js +602 -596
  2. package/bin/alchemy.js.map +1 -1
  3. package/bin/alchemy.ts +2 -0
  4. package/bin/commands/deploy.ts +0 -1
  5. package/bin/commands/state.ts +8 -5
  6. package/lib/AWS/Lambda/BucketEventSource.d.ts +1 -1
  7. package/lib/AWS/Lambda/BucketEventSource.d.ts.map +1 -1
  8. package/lib/AWS/Lambda/EventBridgeEventSource.d.ts +1 -1
  9. package/lib/AWS/Lambda/EventBridgeEventSource.d.ts.map +1 -1
  10. package/lib/AWS/Lambda/QueueEventSource.d.ts +1 -1
  11. package/lib/AWS/Lambda/QueueEventSource.d.ts.map +1 -1
  12. package/lib/AWS/Lambda/StreamEventSource.d.ts +1 -1
  13. package/lib/AWS/Lambda/StreamEventSource.d.ts.map +1 -1
  14. package/lib/AWS/Lambda/TableEventSource.d.ts +1 -1
  15. package/lib/AWS/Lambda/TableEventSource.d.ts.map +1 -1
  16. package/lib/AWS/Lambda/TopicEventSource.d.ts +1 -1
  17. package/lib/AWS/Lambda/TopicEventSource.d.ts.map +1 -1
  18. package/lib/Agent/lsp/client.d.ts +2 -2
  19. package/lib/Cli/InkCLI.d.ts +0 -1
  20. package/lib/Cli/InkCLI.d.ts.map +1 -1
  21. package/lib/Cli/InkCLI.js +0 -5
  22. package/lib/Cli/InkCLI.js.map +1 -1
  23. package/lib/Cli/index.d.ts +0 -1
  24. package/lib/Cli/index.d.ts.map +1 -1
  25. package/lib/Cli/index.js +4 -1
  26. package/lib/Cli/index.js.map +1 -1
  27. package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts +58 -0
  28. package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts.map +1 -0
  29. package/lib/Cloudflare/ApiToken/AccountApiToken.js +137 -0
  30. package/lib/Cloudflare/ApiToken/AccountApiToken.js.map +1 -0
  31. package/lib/Cloudflare/ApiToken/Common.d.ts +91 -0
  32. package/lib/Cloudflare/ApiToken/Common.d.ts.map +1 -0
  33. package/lib/Cloudflare/ApiToken/Common.js +61 -0
  34. package/lib/Cloudflare/ApiToken/Common.js.map +1 -0
  35. package/lib/Cloudflare/ApiToken/PermissionGroups.d.ts +1549 -0
  36. package/lib/Cloudflare/ApiToken/PermissionGroups.d.ts.map +1 -0
  37. package/lib/Cloudflare/ApiToken/PermissionGroups.js +1856 -0
  38. package/lib/Cloudflare/ApiToken/PermissionGroups.js.map +1 -0
  39. package/lib/Cloudflare/ApiToken/UserApiToken.d.ts +49 -0
  40. package/lib/Cloudflare/ApiToken/UserApiToken.d.ts.map +1 -0
  41. package/lib/Cloudflare/ApiToken/UserApiToken.js +113 -0
  42. package/lib/Cloudflare/ApiToken/UserApiToken.js.map +1 -0
  43. package/lib/Cloudflare/ApiToken/index.d.ts +5 -0
  44. package/lib/Cloudflare/ApiToken/index.d.ts.map +1 -0
  45. package/lib/Cloudflare/ApiToken/index.js +5 -0
  46. package/lib/Cloudflare/ApiToken/index.js.map +1 -0
  47. package/lib/Cloudflare/Auth/AuthProvider.js +2 -2
  48. package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
  49. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  50. package/lib/Cloudflare/Providers.js +4 -1
  51. package/lib/Cloudflare/Providers.js.map +1 -1
  52. package/lib/Cloudflare/StateStore/Api.d.ts +7 -8
  53. package/lib/Cloudflare/StateStore/Api.d.ts.map +1 -1
  54. package/lib/Cloudflare/StateStore/Api.js +6 -4
  55. package/lib/Cloudflare/StateStore/Api.js.map +1 -1
  56. package/lib/Cloudflare/StateStore/State.d.ts +1 -1
  57. package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
  58. package/lib/Cloudflare/StateStore/Store.d.ts +2 -2
  59. package/lib/Cloudflare/StateStore/Store.d.ts.map +1 -1
  60. package/lib/Cloudflare/StateStore/Store.js +6 -4
  61. package/lib/Cloudflare/StateStore/Store.js.map +1 -1
  62. package/lib/Cloudflare/StateStore/Token.d.ts +6 -4
  63. package/lib/Cloudflare/StateStore/Token.d.ts.map +1 -1
  64. package/lib/Cloudflare/StateStore/Token.js +8 -4
  65. package/lib/Cloudflare/StateStore/Token.js.map +1 -1
  66. package/lib/Cloudflare/index.d.ts +1 -0
  67. package/lib/Cloudflare/index.d.ts.map +1 -1
  68. package/lib/Cloudflare/index.js +1 -0
  69. package/lib/Cloudflare/index.js.map +1 -1
  70. package/lib/Deploy.d.ts +1 -1
  71. package/lib/Deploy.d.ts.map +1 -1
  72. package/lib/Destroy.d.ts +1 -1
  73. package/lib/Destroy.d.ts.map +1 -1
  74. package/lib/GitHub/Providers.d.ts +3 -0
  75. package/lib/GitHub/Providers.d.ts.map +1 -0
  76. package/lib/GitHub/Providers.js +5 -0
  77. package/lib/GitHub/Providers.js.map +1 -0
  78. package/lib/GitHub/index.d.ts +1 -0
  79. package/lib/GitHub/index.d.ts.map +1 -1
  80. package/lib/GitHub/index.js +1 -0
  81. package/lib/GitHub/index.js.map +1 -1
  82. package/lib/Output.d.ts.map +1 -1
  83. package/lib/Output.js +4 -0
  84. package/lib/Output.js.map +1 -1
  85. package/lib/Plan.d.ts.map +1 -1
  86. package/lib/Plan.js +4 -0
  87. package/lib/Plan.js.map +1 -1
  88. package/lib/Stack.d.ts +5 -4
  89. package/lib/Stack.d.ts.map +1 -1
  90. package/lib/Stack.js +27 -8
  91. package/lib/Stack.js.map +1 -1
  92. package/lib/State/HttpStateStore.js +1 -1
  93. package/lib/State/HttpStateStore.js.map +1 -1
  94. package/lib/Test/Bun.d.ts +2 -2
  95. package/lib/Test/Bun.d.ts.map +1 -1
  96. package/lib/Test/Bun.js +2 -4
  97. package/lib/Test/Bun.js.map +1 -1
  98. package/lib/Test/Vitest.d.ts +1 -1
  99. package/lib/Test/Vitest.d.ts.map +1 -1
  100. package/lib/Test/Vitest.js +11 -7
  101. package/lib/Test/Vitest.js.map +1 -1
  102. package/lib/cli/index.d.ts +2 -6
  103. package/lib/cli/index.d.ts.map +1 -1
  104. package/lib/cli/index.js +2 -43050
  105. package/lib/cli/index.js.map +1 -1
  106. package/package.json +5 -5
  107. package/src/Cli/InkCLI.tsx +0 -10
  108. package/src/Cli/index.ts +4 -1
  109. package/src/Cloudflare/ApiToken/AccountApiToken.ts +197 -0
  110. package/src/Cloudflare/ApiToken/Common.ts +148 -0
  111. package/src/Cloudflare/ApiToken/PermissionGroups.ts +1910 -0
  112. package/src/Cloudflare/ApiToken/UserApiToken.ts +168 -0
  113. package/src/Cloudflare/ApiToken/index.ts +4 -0
  114. package/src/Cloudflare/Auth/AuthProvider.ts +2 -2
  115. package/src/Cloudflare/Providers.ts +5 -0
  116. package/src/Cloudflare/StateStore/Api.ts +6 -4
  117. package/src/Cloudflare/StateStore/Store.ts +6 -4
  118. package/src/Cloudflare/StateStore/Token.ts +10 -4
  119. package/src/Cloudflare/index.ts +1 -0
  120. package/src/GitHub/Providers.ts +6 -0
  121. package/src/GitHub/index.ts +1 -0
  122. package/src/Output.ts +3 -0
  123. package/src/Plan.ts +3 -0
  124. package/src/Stack.ts +33 -7
  125. package/src/State/HttpStateStore.ts +1 -0
  126. package/src/Test/Bun.ts +2 -2
  127. 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(
@@ -59,7 +59,6 @@ const execStack = Effect.fn(function* ({
59
59
  ConfigProvider.layer(
60
60
  withProfileOverride(yield* loadConfigProvider(envFile), profile),
61
61
  ),
62
- CLI.inkCLI(),
63
62
  Logger.layer([fileLogger("out")]),
64
63
  Layer.succeed(Stage, stage),
65
64
  );
@@ -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("Read from local .alchemy/state instead of the stack's configured state store"),
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(yield* loadConfigProvider(args.envFile), args.profile),
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,0uBAqD7B,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"}
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,6uBAqCvB,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"}
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,0uBA8B5B,CAAC;oIAIQ,KAAK,SAAS,qBAAqB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAFrE,qBAAa,sBAAuB,SAAQ,2BAGP;CAAG;AAExC,eAAO,MAAM,0BAA0B,mDAsCtC,CAAC"}
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,+uBAsC7B,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"}
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,+uBAuC5B,CAAC;mIAIQ,KAAK,SAAS,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAF5D,qBAAa,sBAAuB,SAAQ,2BAGR;CAAG;AAEvC,eAAO,MAAM,0BAA0B,mDAqFtC,CAAC"}
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,0uBAwC5B,CAAC;8HAIQ,KAAK,UAAU,qBAAqB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAFtE,qBAAa,sBAAuB,SAAQ,2BAGb;CAAG;AAElC,eAAO,MAAM,0BAA0B,mDAqCtC,CAAC"}
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>;
@@ -1,5 +1,4 @@
1
1
  import * as Layer from "effect/Layer";
2
2
  import { Cli } from "./Cli.ts";
3
3
  export declare const inkCLI: () => Layer.Layer<Cli, never, never>;
4
- export declare const inkCLIAutoApprove: () => Layer.Layer<Cli, never, never>;
5
4
  //# sourceMappingURL=InkCLI.d.ts.map
@@ -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;AAEJ,eAAO,MAAM,iBAAiB,sCAQ3B,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) }));
@@ -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,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE,CACpC,KAAK,CAAC,OAAO,CACX,GAAG,EACH,GAAG,CAAC,EAAE,CAAC;IACL,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IACvC,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"}
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"}
@@ -1,3 +1,2 @@
1
1
  export * from "./Cli.ts";
2
- export * from "./InkCLI.tsx";
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Cli/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,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
- export * from "./InkCLI.js";
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Cli/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAc,CAAC"}
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"}