alchemy 2.0.0-beta.84 → 2.0.0-beta.85
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/THIRD_PARTY_LICENSES.md +2 -2
- package/bin/cli.js +14 -6
- package/bin/register-oxc.js +16 -12
- package/lib/AdoptPolicy.d.ts +73 -0
- package/lib/AdoptPolicy.d.ts.map +1 -1
- package/lib/AdoptPolicy.js +54 -0
- package/lib/AdoptPolicy.js.map +1 -1
- package/lib/Alchemist/AuthRegistry.d.ts +31 -0
- package/lib/Alchemist/AuthRegistry.d.ts.map +1 -0
- package/lib/Alchemist/AuthRegistry.js +95 -0
- package/lib/Alchemist/AuthRegistry.js.map +1 -0
- package/lib/Alchemist/Drift.d.ts +70 -0
- package/lib/Alchemist/Drift.d.ts.map +1 -0
- package/lib/Alchemist/Drift.js +54 -0
- package/lib/Alchemist/Drift.js.map +1 -0
- package/lib/Alchemist/Entrypoint.d.ts +27 -3
- package/lib/Alchemist/Entrypoint.d.ts.map +1 -1
- package/lib/Alchemist/Entrypoint.js +34 -3
- package/lib/Alchemist/Entrypoint.js.map +1 -1
- package/lib/Alchemist/Errors.d.ts +1 -1
- package/lib/Alchemist/Errors.d.ts.map +1 -1
- package/lib/Alchemist/Errors.js +1 -1
- package/lib/Alchemist/Errors.js.map +1 -1
- package/lib/Alchemist/Logs.d.ts +46 -0
- package/lib/Alchemist/Logs.d.ts.map +1 -0
- package/lib/Alchemist/{routes/logs.js → Logs.js} +21 -26
- package/lib/Alchemist/Logs.js.map +1 -0
- package/lib/Alchemist/Nuke.d.ts +69 -0
- package/lib/Alchemist/Nuke.d.ts.map +1 -0
- package/lib/Alchemist/Nuke.js +35 -0
- package/lib/Alchemist/Nuke.js.map +1 -0
- package/lib/Alchemist/Operations.d.ts +168 -0
- package/lib/Alchemist/Operations.d.ts.map +1 -0
- package/lib/Alchemist/Operations.js +165 -0
- package/lib/Alchemist/Operations.js.map +1 -0
- package/lib/Alchemist/Profile.d.ts +132 -0
- package/lib/Alchemist/Profile.d.ts.map +1 -0
- package/lib/Alchemist/{routes/profile.js → Profile.js} +20 -21
- package/lib/Alchemist/Profile.js.map +1 -0
- package/lib/Alchemist/{routes/provider.d.ts → Provider.d.ts} +4 -4
- package/lib/Alchemist/Provider.d.ts.map +1 -0
- package/lib/Alchemist/{routes/provider.js → Provider.js} +7 -6
- package/lib/Alchemist/Provider.js.map +1 -0
- package/lib/Alchemist/Runtime.d.ts +10 -6
- package/lib/Alchemist/Runtime.d.ts.map +1 -1
- package/lib/Alchemist/Runtime.js +38 -2
- package/lib/Alchemist/Runtime.js.map +1 -1
- package/lib/Alchemist/{routes/state.d.ts → State.d.ts} +36 -16
- package/lib/Alchemist/State.d.ts.map +1 -0
- package/lib/Alchemist/{routes/state.js → State.js} +50 -15
- package/lib/Alchemist/State.js.map +1 -0
- package/lib/Alchemist/index.d.ts +11 -10
- package/lib/Alchemist/index.d.ts.map +1 -1
- package/lib/Alchemist/index.js +10 -9
- package/lib/Alchemist/index.js.map +1 -1
- package/lib/Apply.d.ts +2 -8
- package/lib/Apply.d.ts.map +1 -1
- package/lib/Apply.js +364 -184
- package/lib/Apply.js.map +1 -1
- package/lib/Auth/AuthProvider.d.ts +24 -11
- package/lib/Auth/AuthProvider.d.ts.map +1 -1
- package/lib/Auth/AuthProvider.js +28 -12
- package/lib/Auth/AuthProvider.js.map +1 -1
- package/lib/Auth/BrowserOAuth.d.ts +6 -8
- package/lib/Auth/BrowserOAuth.d.ts.map +1 -1
- package/lib/Auth/BrowserOAuth.js +25 -41
- package/lib/Auth/BrowserOAuth.js.map +1 -1
- package/lib/Auth/Credentials.d.ts.map +1 -1
- package/lib/Auth/Credentials.js +2 -2
- package/lib/Auth/Credentials.js.map +1 -1
- package/lib/Auth/Demand.d.ts +4 -4
- package/lib/Auth/Demand.d.ts.map +1 -1
- package/lib/Auth/Demand.js +16 -10
- package/lib/Auth/Demand.js.map +1 -1
- package/lib/Auth/Env.d.ts +2 -1
- package/lib/Auth/Env.d.ts.map +1 -1
- package/lib/Auth/Env.js +4 -2
- package/lib/Auth/Env.js.map +1 -1
- package/lib/Auth/Inspect.d.ts +2 -2
- package/lib/Auth/Inspect.d.ts.map +1 -1
- package/lib/Auth/Inspect.js +3 -1
- package/lib/Auth/Inspect.js.map +1 -1
- package/lib/Auth/Lock.d.ts.map +1 -1
- package/lib/Auth/Lock.js +4 -8
- package/lib/Auth/Lock.js.map +1 -1
- package/lib/Auth/OAuthFlow.d.ts +3 -12
- package/lib/Auth/OAuthFlow.d.ts.map +1 -1
- package/lib/Auth/OAuthFlow.js +7 -17
- package/lib/Auth/OAuthFlow.js.map +1 -1
- package/lib/Auth/Paths.d.ts +2 -1
- package/lib/Auth/Paths.d.ts.map +1 -1
- package/lib/Auth/Paths.js +3 -2
- package/lib/Auth/Paths.js.map +1 -1
- package/lib/Auth/Profile.d.ts +10 -0
- package/lib/Auth/Profile.d.ts.map +1 -1
- package/lib/Auth/Profile.js +19 -2
- package/lib/Auth/Profile.js.map +1 -1
- package/lib/Auth/Registry.d.ts +20 -0
- package/lib/Auth/Registry.d.ts.map +1 -0
- package/lib/Auth/Registry.js +17 -0
- package/lib/Auth/Registry.js.map +1 -0
- package/lib/Auth/Resolve.d.ts +34 -2
- package/lib/Auth/Resolve.d.ts.map +1 -1
- package/lib/Auth/Resolve.js +51 -3
- package/lib/Auth/Resolve.js.map +1 -1
- package/lib/Auth/StoredAuthProvider.d.ts +1 -1
- package/lib/Auth/StoredAuthProvider.d.ts.map +1 -1
- package/lib/Auth/StoredAuthProvider.js +1 -2
- package/lib/Auth/StoredAuthProvider.js.map +1 -1
- package/lib/Binding.d.ts.map +1 -1
- package/lib/Binding.js +3 -1
- package/lib/Binding.js.map +1 -1
- package/lib/Bundle/Bundle.d.ts +5 -0
- package/lib/Bundle/Bundle.d.ts.map +1 -1
- package/lib/Bundle/Bundle.js +36 -6
- package/lib/Bundle/Bundle.js.map +1 -1
- package/lib/Bundle/NamespaceImportPlugin.d.ts +55 -0
- package/lib/Bundle/NamespaceImportPlugin.d.ts.map +1 -0
- package/lib/Bundle/NamespaceImportPlugin.js +226 -0
- package/lib/Bundle/NamespaceImportPlugin.js.map +1 -0
- package/lib/Bundle/index.d.ts +1 -0
- package/lib/Bundle/index.d.ts.map +1 -1
- package/lib/Bundle/index.js +1 -0
- package/lib/Bundle/index.js.map +1 -1
- package/lib/Cli/Format.d.ts.map +1 -1
- package/lib/Cli/Format.js +2 -1
- package/lib/Cli/Format.js.map +1 -1
- package/lib/Cli/GlobalLog.d.ts +72 -26
- package/lib/Cli/GlobalLog.d.ts.map +1 -1
- package/lib/Cli/GlobalLog.js +151 -59
- package/lib/Cli/GlobalLog.js.map +1 -1
- package/lib/Cli/LoggingCli.d.ts.map +1 -1
- package/lib/Cli/LoggingCli.js +24 -18
- package/lib/Cli/LoggingCli.js.map +1 -1
- package/lib/Cli/PlainCliFormatter.d.ts.map +1 -1
- package/lib/Cli/PlainCliFormatter.js +4 -1
- package/lib/Cli/PlainCliFormatter.js.map +1 -1
- package/lib/Cli/Present.d.ts +14 -0
- package/lib/Cli/Present.d.ts.map +1 -0
- package/lib/Cli/Present.js +22 -0
- package/lib/Cli/Present.js.map +1 -0
- package/lib/Cli/SigilRenderer.d.ts +58 -0
- package/lib/Cli/SigilRenderer.d.ts.map +1 -0
- package/lib/Cli/SigilRenderer.js +39 -0
- package/lib/Cli/SigilRenderer.js.map +1 -0
- package/lib/Cli/checkVersion.d.ts +11 -14
- package/lib/Cli/checkVersion.d.ts.map +1 -1
- package/lib/Cli/checkVersion.js +19 -77
- package/lib/Cli/checkVersion.js.map +1 -1
- package/lib/Cli/commands/confirm.d.ts +2 -2
- package/lib/Cli/commands/confirm.d.ts.map +1 -1
- package/lib/Cli/commands/confirm.js +3 -3
- package/lib/Cli/commands/confirm.js.map +1 -1
- package/lib/Cli/commands/deploy.d.ts +4 -4
- package/lib/Cli/commands/deploy.d.ts.map +1 -1
- package/lib/Cli/commands/deploy.js +40 -39
- package/lib/Cli/commands/deploy.js.map +1 -1
- package/lib/Cli/commands/dev.d.ts.map +1 -1
- package/lib/Cli/commands/dev.js +41 -3
- package/lib/Cli/commands/dev.js.map +1 -1
- package/lib/Cli/commands/drift.d.ts +2 -2
- package/lib/Cli/commands/drift.d.ts.map +1 -1
- package/lib/Cli/commands/drift.js +14 -13
- package/lib/Cli/commands/drift.js.map +1 -1
- package/lib/Cli/commands/errors.d.ts.map +1 -1
- package/lib/Cli/commands/errors.js +2 -1
- package/lib/Cli/commands/errors.js.map +1 -1
- package/lib/Cli/commands/instrument.d.ts +15 -5
- package/lib/Cli/commands/instrument.d.ts.map +1 -1
- package/lib/Cli/commands/instrument.js +33 -8
- package/lib/Cli/commands/instrument.js.map +1 -1
- package/lib/Cli/commands/logs.d.ts +1 -1
- package/lib/Cli/commands/logs.d.ts.map +1 -1
- package/lib/Cli/commands/logs.js +22 -22
- package/lib/Cli/commands/logs.js.map +1 -1
- package/lib/Cli/commands/nuke.d.ts +3 -2
- package/lib/Cli/commands/nuke.d.ts.map +1 -1
- package/lib/Cli/commands/nuke.js +19 -17
- package/lib/Cli/commands/nuke.js.map +1 -1
- package/lib/Cli/commands/profile/commands.d.ts +3 -2
- package/lib/Cli/commands/profile/commands.d.ts.map +1 -1
- package/lib/Cli/commands/profile/commands.js +26 -27
- package/lib/Cli/commands/profile/commands.js.map +1 -1
- package/lib/Cli/commands/profile/flows.d.ts +6 -5
- package/lib/Cli/commands/profile/flows.d.ts.map +1 -1
- package/lib/Cli/commands/profile/flows.js +19 -17
- package/lib/Cli/commands/profile/flows.js.map +1 -1
- package/lib/Cli/commands/profile/hub.d.ts +1 -2
- package/lib/Cli/commands/profile/hub.d.ts.map +1 -1
- package/lib/Cli/commands/profile/hub.js +15 -17
- package/lib/Cli/commands/profile/hub.js.map +1 -1
- package/lib/Cli/commands/provider.d.ts +3 -1
- package/lib/Cli/commands/provider.d.ts.map +1 -1
- package/lib/Cli/commands/provider.js +4 -4
- package/lib/Cli/commands/provider.js.map +1 -1
- package/lib/Cli/commands/render.d.ts +2 -4
- package/lib/Cli/commands/render.d.ts.map +1 -1
- package/lib/Cli/commands/render.js +33 -56
- package/lib/Cli/commands/render.js.map +1 -1
- package/lib/Cli/commands/state.d.ts +1 -2
- package/lib/Cli/commands/state.d.ts.map +1 -1
- package/lib/Cli/commands/state.js +74 -27
- package/lib/Cli/commands/state.js.map +1 -1
- package/lib/Cli/components/capabilities.d.ts +4 -0
- package/lib/Cli/components/capabilities.d.ts.map +1 -0
- package/lib/Cli/components/capabilities.js +18 -0
- package/lib/Cli/components/capabilities.js.map +1 -0
- package/lib/Cli/components/types.d.ts +2 -81
- package/lib/Cli/components/types.d.ts.map +1 -1
- package/lib/Cli/components/types.js +1 -3
- package/lib/Cli/components/types.js.map +1 -1
- package/lib/Cli/components/ui/Environment.d.ts +3 -3
- package/lib/Cli/components/ui/Environment.d.ts.map +1 -1
- package/lib/Cli/components/ui/Environment.js.map +1 -1
- package/lib/Cli/components/ui/Interactive.d.ts +17 -4
- package/lib/Cli/components/ui/Interactive.d.ts.map +1 -1
- package/lib/Cli/components/ui/Interactive.js +7 -11
- package/lib/Cli/components/ui/Interactive.js.map +1 -1
- package/lib/Cli/components/ui/Layout.d.ts +1 -1
- package/lib/Cli/components/ui/Layout.d.ts.map +1 -1
- package/lib/Cli/components/ui/Layout.js +1 -1
- package/lib/Cli/components/ui/Layout.js.map +1 -1
- package/lib/Cli/components/ui/Typography.d.ts +1 -1
- package/lib/Cli/components/ui/Typography.d.ts.map +1 -1
- package/lib/Cli/components/ui/Typography.js +1 -1
- package/lib/Cli/components/ui/Typography.js.map +1 -1
- package/lib/Cli/components/ui/index.d.ts +2 -2
- package/lib/Cli/components/ui/index.js +2 -2
- package/lib/Cli/components/view/ApprovePlan.d.ts +1 -1
- package/lib/Cli/components/view/ApprovePlan.d.ts.map +1 -1
- package/lib/Cli/components/view/ApprovePlan.js +2 -1
- package/lib/Cli/components/view/ApprovePlan.js.map +1 -1
- package/lib/Cli/components/view/Format.d.ts +5 -0
- package/lib/Cli/components/view/Format.d.ts.map +1 -0
- package/lib/Cli/components/view/Format.js +39 -0
- package/lib/Cli/components/view/Format.js.map +1 -0
- package/lib/Cli/components/view/Help.d.ts +2 -2
- package/lib/Cli/components/view/Help.d.ts.map +1 -1
- package/lib/Cli/components/view/Help.js +7 -5
- package/lib/Cli/components/view/Help.js.map +1 -1
- package/lib/Cli/components/view/Logo.js +1 -1
- package/lib/Cli/components/view/Logo.js.map +1 -1
- package/lib/Cli/components/view/Nuke.d.ts +8 -9
- package/lib/Cli/components/view/Nuke.d.ts.map +1 -1
- package/lib/Cli/components/view/Nuke.js +49 -52
- package/lib/Cli/components/view/Nuke.js.map +1 -1
- package/lib/Cli/components/view/PlanDecision.d.ts +1 -1
- package/lib/Cli/components/view/PlanDecision.d.ts.map +1 -1
- package/lib/Cli/components/view/PlanDecision.js +1 -1
- package/lib/Cli/components/view/PlanDecision.js.map +1 -1
- package/lib/Cli/components/view/PlanRow.js +1 -1
- package/lib/Cli/components/view/PlanRow.js.map +1 -1
- package/lib/Cli/components/view/PlanTree.d.ts +1 -1
- package/lib/Cli/components/view/PlanTree.d.ts.map +1 -1
- package/lib/Cli/components/view/PlanTree.js +1 -1
- package/lib/Cli/components/view/PlanView.js +1 -1
- package/lib/Cli/components/view/PlanView.js.map +1 -1
- package/lib/Cli/components/view/Profile.d.ts +1 -1
- package/lib/Cli/components/view/Profile.js +2 -2
- package/lib/Cli/components/view/Profile.js.map +1 -1
- package/lib/Cli/components/view/ProfileDashboard.d.ts +4 -4
- package/lib/Cli/components/view/ProfileDashboard.d.ts.map +1 -1
- package/lib/Cli/components/view/ProfileDashboard.js +9 -8
- package/lib/Cli/components/view/ProfileDashboard.js.map +1 -1
- package/lib/Cli/components/view/Prompts.d.ts +3 -3
- package/lib/Cli/components/view/Prompts.d.ts.map +1 -1
- package/lib/Cli/components/view/Prompts.js +11 -18
- package/lib/Cli/components/view/Prompts.js.map +1 -1
- package/lib/Cli/components/view/Runtime.d.ts +5 -5
- package/lib/Cli/components/view/Runtime.d.ts.map +1 -1
- package/lib/Cli/components/view/Runtime.js +136 -219
- package/lib/Cli/components/view/Runtime.js.map +1 -1
- package/lib/Cli/components/view/SigilCli.d.ts +2 -2
- package/lib/Cli/components/view/SigilCli.d.ts.map +1 -1
- package/lib/Cli/components/view/SigilCli.js +7 -7
- package/lib/Cli/components/view/SigilCli.js.map +1 -1
- package/lib/Cli/components/view/StateExplorer.d.ts +1 -1
- package/lib/Cli/components/view/StateExplorer.d.ts.map +1 -1
- package/lib/Cli/components/view/StateExplorer.js +2 -1
- package/lib/Cli/components/view/StateExplorer.js.map +1 -1
- package/lib/Cli/components/view/statusStyle.d.ts +2 -2
- package/lib/Cli/components/view/statusStyle.d.ts.map +1 -1
- package/lib/Cli/components/view/statusStyle.js +1 -1
- package/lib/Cli/components/view/statusStyle.js.map +1 -1
- package/lib/Cli/exec.d.ts +6 -1
- package/lib/Cli/exec.d.ts.map +1 -1
- package/lib/Cli/exec.js +29 -34
- package/lib/Cli/exec.js.map +1 -1
- package/lib/Cli/main.d.ts.map +1 -1
- package/lib/Cli/main.js +35 -26
- package/lib/Cli/main.js.map +1 -1
- package/lib/Cli/selectCli.d.ts +2 -2
- package/lib/Cli/selectCli.d.ts.map +1 -1
- package/lib/Cli/selectCli.js +2 -2
- package/lib/Cli/selectCli.js.map +1 -1
- package/lib/Command/Command.js +1 -1
- package/lib/Command/Command.js.map +1 -1
- package/lib/Command/Dev.d.ts +58 -4
- package/lib/Command/Dev.d.ts.map +1 -1
- package/lib/Command/Dev.js +87 -30
- package/lib/Command/Dev.js.map +1 -1
- package/lib/Command/Local.d.ts +1 -1
- package/lib/Command/Memo.js +1 -1
- package/lib/Command/Memo.js.map +1 -1
- package/lib/Command/Providers.d.ts +1 -1
- package/lib/Command/Providers.d.ts.map +1 -1
- package/lib/Contributions.d.ts +2 -3
- package/lib/Contributions.d.ts.map +1 -1
- package/lib/Contributions.js +38 -6
- package/lib/Contributions.js.map +1 -1
- package/lib/DNS/Adapter.d.ts +204 -0
- package/lib/DNS/Adapter.d.ts.map +1 -0
- package/lib/DNS/Adapter.js +112 -0
- package/lib/DNS/Adapter.js.map +1 -0
- package/lib/DNS/index.d.ts +2 -0
- package/lib/DNS/index.d.ts.map +1 -0
- package/lib/DNS/index.js +2 -0
- package/lib/DNS/index.js.map +1 -0
- package/lib/Deploy.d.ts +7 -2
- package/lib/Deploy.d.ts.map +1 -1
- package/lib/Deploy.js +8 -3
- package/lib/Deploy.js.map +1 -1
- package/lib/Destroy.d.ts +5 -8
- package/lib/Destroy.d.ts.map +1 -1
- package/lib/Destroy.js +10 -7
- package/lib/Destroy.js.map +1 -1
- package/lib/Diff.d.ts.map +1 -1
- package/lib/Diff.js +14 -4
- package/lib/Diff.js.map +1 -1
- package/lib/Drift.d.ts +7 -7
- package/lib/Drift.d.ts.map +1 -1
- package/lib/Drift.js +184 -101
- package/lib/Drift.js.map +1 -1
- package/lib/EvalStack.d.ts +23 -0
- package/lib/EvalStack.d.ts.map +1 -0
- package/lib/EvalStack.js +47 -0
- package/lib/EvalStack.js.map +1 -0
- package/lib/Events.d.ts +210 -0
- package/lib/Events.d.ts.map +1 -0
- package/lib/Events.js +244 -0
- package/lib/Events.js.map +1 -0
- package/lib/Interaction.d.ts +159 -48
- package/lib/Interaction.d.ts.map +1 -1
- package/lib/Interaction.js +139 -58
- package/lib/Interaction.js.map +1 -1
- package/lib/Local/LocalProvider.d.ts.map +1 -1
- package/lib/Local/LocalProvider.js +31 -9
- package/lib/Local/LocalProvider.js.map +1 -1
- package/lib/Local/RpcProvider.d.ts.map +1 -1
- package/lib/Local/RpcProvider.js +10 -1
- package/lib/Local/RpcProvider.js.map +1 -1
- package/lib/Local/RpcProviderProxy.d.ts +16 -0
- package/lib/Local/RpcProviderProxy.d.ts.map +1 -1
- package/lib/Local/RpcProviderProxy.js +19 -10
- package/lib/Local/RpcProviderProxy.js.map +1 -1
- package/lib/Local/RpcSerialization.d.ts +3 -2
- package/lib/Local/RpcSerialization.d.ts.map +1 -1
- package/lib/Local/RpcSerialization.js +13 -10
- package/lib/Local/RpcSerialization.js.map +1 -1
- package/lib/Local/RpcServer.d.ts +2 -1
- package/lib/Local/RpcServer.d.ts.map +1 -1
- package/lib/Local/RpcServer.js +19 -14
- package/lib/Local/RpcServer.js.map +1 -1
- package/lib/Local/RpcServerBun.d.ts.map +1 -1
- package/lib/Local/RpcServerBun.js +8 -4
- package/lib/Local/RpcServerBun.js.map +1 -1
- package/lib/Local/RpcServerEnvironment.d.ts +2 -3
- package/lib/Local/RpcServerEnvironment.d.ts.map +1 -1
- package/lib/Local/RpcServerEnvironment.js +2 -2
- package/lib/Local/RpcServerEnvironment.js.map +1 -1
- package/lib/Local/RpcServerNode.d.ts.map +1 -1
- package/lib/Local/RpcServerNode.js +5 -1
- package/lib/Local/RpcServerNode.js.map +1 -1
- package/lib/Local/RpcServerSession.d.ts +1 -1
- package/lib/Local/RpcServerSession.d.ts.map +1 -1
- package/lib/Local/RpcServerSession.js.map +1 -1
- package/lib/Local/RpcSpawner.d.ts +6 -8
- package/lib/Local/RpcSpawner.d.ts.map +1 -1
- package/lib/Local/RpcSpawner.js +45 -36
- package/lib/Local/RpcSpawner.js.map +1 -1
- package/lib/Local/Sidecar.d.ts +23 -0
- package/lib/Local/Sidecar.d.ts.map +1 -1
- package/lib/Local/Sidecar.js +14 -9
- package/lib/Local/Sidecar.js.map +1 -1
- package/lib/Nuke.d.ts +5 -23
- package/lib/Nuke.d.ts.map +1 -1
- package/lib/Nuke.js +48 -13
- package/lib/Nuke.js.map +1 -1
- package/lib/Output.d.ts +19 -1
- package/lib/Output.d.ts.map +1 -1
- package/lib/Output.js +96 -3
- package/lib/Output.js.map +1 -1
- package/lib/Plan.d.ts +5 -1
- package/lib/Plan.d.ts.map +1 -1
- package/lib/Plan.js +111 -33
- package/lib/Plan.js.map +1 -1
- package/lib/Platform.d.ts.map +1 -1
- package/lib/Platform.js +31 -7
- package/lib/Platform.js.map +1 -1
- package/lib/Provider.d.ts +45 -0
- package/lib/Provider.d.ts.map +1 -1
- package/lib/Provider.js +2 -2
- package/lib/Provider.js.map +1 -1
- package/lib/Report.d.ts +17 -195
- package/lib/Report.d.ts.map +1 -1
- package/lib/Report.js +39 -12
- package/lib/Report.js.map +1 -1
- package/lib/Runtime/ManagedHttpShutdown.d.ts +17 -0
- package/lib/Runtime/ManagedHttpShutdown.d.ts.map +1 -1
- package/lib/Runtime/ManagedHttpShutdown.js +11 -2
- package/lib/Runtime/ManagedHttpShutdown.js.map +1 -1
- package/lib/RuntimeContext.js +1 -1
- package/lib/RuntimeContext.js.map +1 -1
- package/lib/Stack.d.ts +49 -29
- package/lib/Stack.d.ts.map +1 -1
- package/lib/Stack.js +25 -31
- package/lib/Stack.js.map +1 -1
- package/lib/State/BucketState.d.ts.map +1 -1
- package/lib/State/BucketState.js +43 -14
- package/lib/State/BucketState.js.map +1 -1
- package/lib/State/LocalState.d.ts.map +1 -1
- package/lib/State/LocalState.js +3 -3
- package/lib/State/LocalState.js.map +1 -1
- package/lib/State/Provisioning.d.ts +5 -0
- package/lib/State/Provisioning.d.ts.map +1 -1
- package/lib/State/Provisioning.js +3 -1
- package/lib/State/Provisioning.js.map +1 -1
- package/lib/State/ResourceState.d.ts +2 -0
- package/lib/State/ResourceState.d.ts.map +1 -1
- package/lib/State/State.d.ts +26 -0
- package/lib/State/State.d.ts.map +1 -1
- package/lib/State/StateEncoding.d.ts +7 -0
- package/lib/State/StateEncoding.d.ts.map +1 -1
- package/lib/State/StateEncoding.js +19 -0
- package/lib/State/StateEncoding.js.map +1 -1
- package/lib/State/index.js +2 -2
- package/lib/State/index.js.map +1 -1
- package/lib/Telemetry/Layer.d.ts +2 -5
- package/lib/Telemetry/Layer.d.ts.map +1 -1
- package/lib/Telemetry/Layer.js +3 -23
- package/lib/Telemetry/Layer.js.map +1 -1
- package/lib/Telemetry/Metrics.d.ts +1 -1
- package/lib/Telemetry/Metrics.d.ts.map +1 -1
- package/lib/TelemetryRelay.js +1 -1
- package/lib/TelemetryRelay.js.map +1 -1
- package/lib/TelemetryRuntime.d.ts +1 -1
- package/lib/TelemetryRuntime.d.ts.map +1 -1
- package/lib/TelemetryRuntime.js +4 -3
- package/lib/TelemetryRuntime.js.map +1 -1
- package/lib/Util/ConsoleSink.d.ts +23 -2
- package/lib/Util/ConsoleSink.d.ts.map +1 -1
- package/lib/Util/ConsoleSink.js +54 -14
- package/lib/Util/ConsoleSink.js.map +1 -1
- package/lib/Util/LogAnnotation.d.ts +19 -0
- package/lib/Util/LogAnnotation.d.ts.map +1 -0
- package/lib/Util/LogAnnotation.js +19 -0
- package/lib/Util/LogAnnotation.js.map +1 -0
- package/lib/Util/LogRecord.d.ts +281 -0
- package/lib/Util/LogRecord.d.ts.map +1 -0
- package/lib/Util/LogRecord.js +267 -0
- package/lib/Util/LogRecord.js.map +1 -0
- package/lib/Util/Node.d.ts +9 -0
- package/lib/Util/Node.d.ts.map +1 -1
- package/lib/Util/Node.js +10 -6
- package/lib/Util/Node.js.map +1 -1
- package/lib/Util/PlatformServices.d.ts +3 -2
- package/lib/Util/PlatformServices.d.ts.map +1 -1
- package/lib/Util/PlatformServices.js +6 -2
- package/lib/Util/PlatformServices.js.map +1 -1
- package/lib/Util/ResourceOutput.d.ts +18 -10
- package/lib/Util/ResourceOutput.d.ts.map +1 -1
- package/lib/Util/ResourceOutput.js +22 -23
- package/lib/Util/ResourceOutput.js.map +1 -1
- package/lib/Util/Shutdown.d.ts +10 -0
- package/lib/Util/Shutdown.d.ts.map +1 -0
- package/lib/Util/Shutdown.js +32 -0
- package/lib/Util/Shutdown.js.map +1 -0
- package/lib/Util/Terminal.d.ts +2 -4
- package/lib/Util/Terminal.d.ts.map +1 -1
- package/lib/Util/Terminal.js +3 -11
- package/lib/Util/Terminal.js.map +1 -1
- package/lib/Util/TraceParent.d.ts +32 -0
- package/lib/Util/TraceParent.d.ts.map +1 -0
- package/lib/Util/TraceParent.js +42 -0
- package/lib/Util/TraceParent.js.map +1 -0
- package/lib/Util/base64.d.ts +7 -0
- package/lib/Util/base64.d.ts.map +1 -0
- package/lib/Util/base64.js +24 -0
- package/lib/Util/base64.js.map +1 -0
- package/lib/Util/cached-function.d.ts +5 -0
- package/lib/Util/cached-function.d.ts.map +1 -1
- package/lib/Util/cached-function.js +13 -8
- package/lib/Util/cached-function.js.map +1 -1
- package/lib/Util/data.d.ts +1 -1
- package/lib/Util/data.d.ts.map +1 -1
- package/lib/Util/data.js +1 -1
- package/lib/Util/data.js.map +1 -1
- package/lib/Util/equal.d.ts.map +1 -1
- package/lib/Util/equal.js +3 -2
- package/lib/Util/equal.js.map +1 -1
- package/lib/Util/extraFiles.d.ts.map +1 -1
- package/lib/Util/extraFiles.js +5 -5
- package/lib/Util/extraFiles.js.map +1 -1
- package/lib/Util/interactive.js +1 -1
- package/lib/Website/AstroOutput.d.ts +42 -0
- package/lib/Website/AstroOutput.d.ts.map +1 -0
- package/lib/Website/AstroOutput.js +34 -0
- package/lib/Website/AstroOutput.js.map +1 -0
- package/lib/Website/FrontendCore.d.ts +1 -1
- package/lib/Workflows.d.ts +9 -0
- package/lib/Workflows.d.ts.map +1 -1
- package/lib/Workflows.js +8 -0
- package/lib/Workflows.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/package.json +21 -28
- package/src/AdoptPolicy.ts +76 -0
- package/src/Alchemist/AuthRegistry.ts +164 -0
- package/src/Alchemist/Drift.ts +103 -0
- package/src/Alchemist/Entrypoint.ts +51 -3
- package/src/Alchemist/Errors.ts +1 -1
- package/src/Alchemist/{routes/logs.ts → Logs.ts} +28 -30
- package/src/Alchemist/Nuke.ts +90 -0
- package/src/Alchemist/Operations.ts +309 -0
- package/src/Alchemist/{routes/profile.ts → Profile.ts} +22 -22
- package/src/Alchemist/{routes/provider.ts → Provider.ts} +7 -6
- package/src/Alchemist/Runtime.ts +46 -12
- package/src/Alchemist/{routes/state.ts → State.ts} +78 -21
- package/src/Alchemist/index.ts +32 -15
- package/src/Apply.ts +513 -274
- package/src/Auth/AuthProvider.ts +76 -23
- package/src/Auth/BrowserOAuth.ts +37 -60
- package/src/Auth/Credentials.ts +2 -4
- package/src/Auth/Demand.ts +27 -18
- package/src/Auth/Env.ts +13 -8
- package/src/Auth/Inspect.ts +5 -2
- package/src/Auth/Lock.ts +4 -8
- package/src/Auth/OAuthFlow.ts +12 -26
- package/src/Auth/Paths.ts +3 -2
- package/src/Auth/Profile.ts +30 -2
- package/src/Auth/Registry.ts +27 -0
- package/src/Auth/Resolve.ts +75 -3
- package/src/Auth/StoredAuthProvider.ts +1 -2
- package/src/Binding.ts +3 -4
- package/src/Bundle/Bundle.ts +58 -7
- package/src/Bundle/NamespaceImportPlugin.ts +259 -0
- package/src/Bundle/index.ts +1 -0
- package/src/Cli/Format.ts +2 -1
- package/src/Cli/GlobalLog.ts +206 -68
- package/src/Cli/LoggingCli.ts +33 -20
- package/src/Cli/PlainCliFormatter.ts +4 -1
- package/src/Cli/Present.ts +34 -0
- package/src/Cli/SigilRenderer.ts +75 -0
- package/src/Cli/checkVersion.ts +25 -78
- package/src/Cli/commands/confirm.ts +3 -3
- package/src/Cli/commands/deploy.ts +53 -44
- package/src/Cli/commands/dev.ts +65 -7
- package/src/Cli/commands/drift.ts +20 -16
- package/src/Cli/commands/errors.ts +2 -3
- package/src/Cli/commands/instrument.ts +39 -8
- package/src/Cli/commands/logs.ts +22 -30
- package/src/Cli/commands/nuke.ts +25 -26
- package/src/Cli/commands/profile/commands.ts +34 -34
- package/src/Cli/commands/profile/flows.ts +26 -20
- package/src/Cli/commands/profile/hub.ts +16 -18
- package/src/Cli/commands/provider.ts +4 -4
- package/src/Cli/commands/render.ts +43 -71
- package/src/Cli/commands/state.ts +113 -33
- package/src/Cli/components/capabilities.ts +20 -0
- package/src/Cli/components/types.ts +13 -99
- package/src/Cli/components/ui/Environment.tsx +5 -5
- package/src/Cli/components/ui/Interactive.tsx +24 -15
- package/src/Cli/components/ui/Layout.tsx +1 -1
- package/src/Cli/components/ui/Typography.tsx +1 -1
- package/src/Cli/components/ui/index.ts +2 -2
- package/src/Cli/components/view/ApprovePlan.tsx +2 -1
- package/src/Cli/components/view/Format.tsx +58 -0
- package/src/Cli/components/view/Help.tsx +14 -17
- package/src/Cli/components/view/Logo.tsx +1 -1
- package/src/Cli/components/view/Nuke.tsx +74 -49
- package/src/Cli/components/view/PlanDecision.tsx +1 -1
- package/src/Cli/components/view/PlanRow.tsx +1 -1
- package/src/Cli/components/view/PlanTree.ts +2 -2
- package/src/Cli/components/view/PlanView.tsx +2 -2
- package/src/Cli/components/view/Profile.tsx +2 -2
- package/src/Cli/components/view/ProfileDashboard.tsx +12 -11
- package/src/Cli/components/view/Prompts.tsx +37 -75
- package/src/Cli/components/view/Runtime.tsx +132 -238
- package/src/Cli/components/view/SigilCli.tsx +12 -12
- package/src/Cli/components/view/StateExplorer.tsx +2 -1
- package/src/Cli/components/view/statusStyle.ts +2 -2
- package/src/Cli/exec.ts +48 -41
- package/src/Cli/main.ts +52 -33
- package/src/Cli/selectCli.ts +3 -3
- package/src/Command/Command.ts +1 -1
- package/src/Command/Dev.ts +129 -36
- package/src/Command/Memo.ts +1 -1
- package/src/Contributions.ts +42 -8
- package/src/DNS/Adapter.ts +289 -0
- package/src/DNS/index.ts +1 -0
- package/src/Deploy.ts +11 -3
- package/src/Destroy.ts +19 -13
- package/src/Diff.ts +17 -4
- package/src/Drift.ts +256 -127
- package/src/EvalStack.ts +97 -0
- package/src/Events.ts +296 -0
- package/src/Interaction.ts +332 -97
- package/src/Local/LocalProvider.ts +40 -9
- package/src/Local/RpcProvider.ts +11 -1
- package/src/Local/RpcProviderProxy.ts +29 -21
- package/src/Local/RpcSerialization.ts +32 -17
- package/src/Local/RpcServer.ts +25 -17
- package/src/Local/RpcServerBun.ts +10 -6
- package/src/Local/RpcServerEnvironment.ts +2 -2
- package/src/Local/RpcServerNode.ts +8 -1
- package/src/Local/RpcServerSession.ts +2 -2
- package/src/Local/RpcSpawner.ts +61 -37
- package/src/Local/Sidecar.ts +10 -1
- package/src/Nuke.ts +66 -43
- package/src/Output.ts +120 -7
- package/src/Plan.ts +140 -52
- package/src/Platform.ts +47 -18
- package/src/Provider.ts +48 -3
- package/src/Report.ts +77 -275
- package/src/Runtime/ManagedHttpShutdown.ts +21 -4
- package/src/RuntimeContext.ts +1 -1
- package/src/Stack.ts +113 -135
- package/src/State/BucketState.ts +53 -21
- package/src/State/LocalState.ts +7 -9
- package/src/State/Provisioning.ts +8 -1
- package/src/State/ResourceState.ts +2 -0
- package/src/State/State.ts +30 -0
- package/src/State/StateEncoding.ts +22 -0
- package/src/State/index.ts +2 -2
- package/src/Telemetry/Layer.ts +3 -24
- package/src/Telemetry/Metrics.ts +1 -1
- package/src/TelemetryRelay.ts +1 -1
- package/src/TelemetryRuntime.ts +8 -8
- package/src/Util/ConsoleSink.ts +76 -13
- package/src/Util/LogAnnotation.ts +18 -0
- package/src/Util/LogRecord.ts +386 -0
- package/src/Util/Node.ts +20 -6
- package/src/Util/PlatformServices.ts +17 -4
- package/src/Util/ResourceOutput.ts +26 -25
- package/src/Util/Shutdown.ts +52 -0
- package/src/Util/Terminal.ts +3 -20
- package/src/Util/TraceParent.ts +70 -0
- package/src/Util/base64.ts +22 -0
- package/src/Util/cached-function.ts +30 -19
- package/src/Util/data.ts +2 -2
- package/src/Util/equal.ts +3 -2
- package/src/Util/extraFiles.ts +9 -8
- package/src/Util/interactive.ts +1 -1
- package/src/Website/AstroOutput.ts +83 -0
- package/src/Workflows.ts +11 -0
- package/src/index.ts +1 -0
- package/lib/Alchemist/Progress.d.ts +0 -16
- package/lib/Alchemist/Progress.d.ts.map +0 -1
- package/lib/Alchemist/Progress.js +0 -123
- package/lib/Alchemist/Progress.js.map +0 -1
- package/lib/Alchemist/Session.d.ts +0 -116
- package/lib/Alchemist/Session.d.ts.map +0 -1
- package/lib/Alchemist/Session.js +0 -212
- package/lib/Alchemist/Session.js.map +0 -1
- package/lib/Alchemist/routes/drift.d.ts +0 -55
- package/lib/Alchemist/routes/drift.d.ts.map +0 -1
- package/lib/Alchemist/routes/drift.js +0 -52
- package/lib/Alchemist/routes/drift.js.map +0 -1
- package/lib/Alchemist/routes/logs.d.ts +0 -41
- package/lib/Alchemist/routes/logs.d.ts.map +0 -1
- package/lib/Alchemist/routes/logs.js.map +0 -1
- package/lib/Alchemist/routes/nuke.d.ts +0 -46
- package/lib/Alchemist/routes/nuke.d.ts.map +0 -1
- package/lib/Alchemist/routes/nuke.js +0 -80
- package/lib/Alchemist/routes/nuke.js.map +0 -1
- package/lib/Alchemist/routes/profile.d.ts +0 -133
- package/lib/Alchemist/routes/profile.d.ts.map +0 -1
- package/lib/Alchemist/routes/profile.js.map +0 -1
- package/lib/Alchemist/routes/provider.d.ts.map +0 -1
- package/lib/Alchemist/routes/provider.js.map +0 -1
- package/lib/Alchemist/routes/stack.d.ts +0 -95
- package/lib/Alchemist/routes/stack.d.ts.map +0 -1
- package/lib/Alchemist/routes/stack.js +0 -73
- package/lib/Alchemist/routes/stack.js.map +0 -1
- package/lib/Alchemist/routes/state.d.ts.map +0 -1
- package/lib/Alchemist/routes/state.js.map +0 -1
- package/lib/Cli/CliKit/CliKit.d.ts +0 -92
- package/lib/Cli/CliKit/CliKit.d.ts.map +0 -1
- package/lib/Cli/CliKit/CliKit.js +0 -27
- package/lib/Cli/CliKit/CliKit.js.map +0 -1
- package/lib/Cli/CliKit/index.d.ts +0 -9
- package/lib/Cli/CliKit/index.d.ts.map +0 -1
- package/lib/Cli/CliKit/index.js +0 -9
- package/lib/Cli/CliKit/index.js.map +0 -1
- package/lib/Cli/CliKit/interaction.d.ts +0 -13
- package/lib/Cli/CliKit/interaction.d.ts.map +0 -1
- package/lib/Cli/CliKit/interaction.js +0 -17
- package/lib/Cli/CliKit/interaction.js.map +0 -1
- package/lib/Cli/CliKit/layer.d.ts +0 -7
- package/lib/Cli/CliKit/layer.d.ts.map +0 -1
- package/lib/Cli/CliKit/layer.js +0 -33
- package/lib/Cli/CliKit/layer.js.map +0 -1
- package/lib/Local/DevLog.d.ts +0 -32
- package/lib/Local/DevLog.d.ts.map +0 -1
- package/lib/Local/DevLog.js +0 -112
- package/lib/Local/DevLog.js.map +0 -1
- package/lib/Test/Alchemy.d.ts +0 -79
- package/lib/Test/Alchemy.d.ts.map +0 -1
- package/lib/Test/Alchemy.js +0 -193
- package/lib/Test/Alchemy.js.map +0 -1
- package/lib/Test/Bun.d.ts +0 -69
- package/lib/Test/Bun.d.ts.map +0 -1
- package/lib/Test/Bun.js +0 -126
- package/lib/Test/Bun.js.map +0 -1
- package/lib/Test/Core.d.ts +0 -277
- package/lib/Test/Core.d.ts.map +0 -1
- package/lib/Test/Core.js +0 -362
- package/lib/Test/Core.js.map +0 -1
- package/lib/Test/Http.d.ts +0 -109
- package/lib/Test/Http.d.ts.map +0 -1
- package/lib/Test/Http.js +0 -123
- package/lib/Test/Http.js.map +0 -1
- package/lib/Test/TestState.d.ts +0 -12
- package/lib/Test/TestState.d.ts.map +0 -1
- package/lib/Test/TestState.js +0 -15
- package/lib/Test/TestState.js.map +0 -1
- package/lib/Test/Vitest.d.ts +0 -60
- package/lib/Test/Vitest.d.ts.map +0 -1
- package/lib/Test/Vitest.js +0 -132
- package/lib/Test/Vitest.js.map +0 -1
- package/lib/Test/index.d.ts +0 -3
- package/lib/Test/index.d.ts.map +0 -1
- package/lib/Test/index.js +0 -3
- package/lib/Test/index.js.map +0 -1
- package/lib/Util/FileLogger.d.ts +0 -7
- package/lib/Util/FileLogger.d.ts.map +0 -1
- package/lib/Util/FileLogger.js +0 -16
- package/lib/Util/FileLogger.js.map +0 -1
- package/src/Alchemist/Progress.ts +0 -167
- package/src/Alchemist/Session.ts +0 -415
- package/src/Alchemist/routes/drift.ts +0 -87
- package/src/Alchemist/routes/nuke.ts +0 -131
- package/src/Alchemist/routes/stack.ts +0 -173
- package/src/Cli/CliKit/CliKit.ts +0 -159
- package/src/Cli/CliKit/index.ts +0 -41
- package/src/Cli/CliKit/interaction.ts +0 -19
- package/src/Cli/CliKit/layer.ts +0 -44
- package/src/Local/DevLog.ts +0 -122
- package/src/Test/Alchemy.ts +0 -334
- package/src/Test/Bun.ts +0 -230
- package/src/Test/Core.ts +0 -785
- package/src/Test/Http.ts +0 -201
- package/src/Test/TestState.ts +0 -35
- package/src/Test/Vitest.ts +0 -239
- package/src/Test/index.ts +0 -2
- package/src/Util/FileLogger.ts +0 -20
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import * as Config from "effect/Config";
|
|
2
|
-
import * as Context from "effect/Context";
|
|
3
|
-
import * as Effect from "effect/Effect";
|
|
4
|
-
import * as Layer from "effect/Layer";
|
|
5
|
-
import * as Logger from "effect/Logger";
|
|
6
|
-
import * as Option from "effect/Option";
|
|
7
|
-
import { MinimumLogLevel } from "effect/References";
|
|
8
|
-
import * as Nuke from "../../Nuke.ts";
|
|
9
|
-
import type { ProviderMode } from "../../ProviderMode.ts";
|
|
10
|
-
import type { ApplyStatus } from "../../Report.ts";
|
|
11
|
-
import { Progress, withSpanEvents } from "../Progress.ts";
|
|
12
|
-
import { buildStackProviders, DEFAULT_ENTRYPOINT, type Target } from "../Session.ts";
|
|
13
|
-
|
|
14
|
-
export interface ScanInput extends Target {
|
|
15
|
-
readonly mode: ProviderMode;
|
|
16
|
-
/** Provider-id globs to include. Omitted means every provider. */
|
|
17
|
-
readonly include?: ReadonlyArray<string>;
|
|
18
|
-
/** Provider-id globs to exclude. Applied after `include`. */
|
|
19
|
-
readonly exclude?: ReadonlyArray<string>;
|
|
20
|
-
readonly concurrency?: number | "unbounded";
|
|
21
|
-
readonly providerTimeoutSeconds?: number;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/** One discovered cloud object, bound to the provider that can delete it. */
|
|
25
|
-
export type NukeResource = Nuke.Target;
|
|
26
|
-
|
|
27
|
-
export interface NukeScan {
|
|
28
|
-
readonly mode: ProviderMode;
|
|
29
|
-
readonly resources: ReadonlyArray<NukeResource>;
|
|
30
|
-
readonly failures: ReadonlyArray<Nuke.ProviderFailure>;
|
|
31
|
-
/** The built provider context {@link execute} deletes under. */
|
|
32
|
-
readonly context: Context.Context<never>;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export interface ExecuteInput {
|
|
36
|
-
readonly scan: NukeScan;
|
|
37
|
-
/** The subset of `scan.resources` to delete. */
|
|
38
|
-
readonly resources: ReadonlyArray<NukeResource>;
|
|
39
|
-
readonly strategy: Nuke.Strategy;
|
|
40
|
-
readonly concurrency?: number | "unbounded";
|
|
41
|
-
readonly providerTimeoutSeconds?: number;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export type NukeResult = Nuke.Result;
|
|
45
|
-
|
|
46
|
-
/** Enumerate everything the stack's registered providers can see. */
|
|
47
|
-
export const scan = Effect.fn("Alchemist.nuke.scan")(function* (input: ScanInput) {
|
|
48
|
-
const report = withSpanEvents(yield* Progress);
|
|
49
|
-
const debug = yield* Config.String("DEBUG").pipe(
|
|
50
|
-
Config.withDefault(""),
|
|
51
|
-
Effect.map((value) => value.length > 0),
|
|
52
|
-
);
|
|
53
|
-
// Nuke needs the provider layer, not a stack instance: it deletes what
|
|
54
|
-
// the cloud has, not what state says we own.
|
|
55
|
-
const built = yield* buildStackProviders({
|
|
56
|
-
main: input.entrypoint ?? DEFAULT_ENTRYPOINT,
|
|
57
|
-
envFile: Option.fromNullishOr(input.envFile),
|
|
58
|
-
profile: input.profile,
|
|
59
|
-
logger: debug ? Logger.layer([Logger.defaultLogger]) : undefined,
|
|
60
|
-
extra: Layer.succeed(MinimumLogLevel, debug ? "Debug" : "Info"),
|
|
61
|
-
});
|
|
62
|
-
const context = built.context as Context.Context<never>;
|
|
63
|
-
const { resources, failures } = yield* Nuke.list({
|
|
64
|
-
context,
|
|
65
|
-
mode: input.mode,
|
|
66
|
-
include: input.include,
|
|
67
|
-
exclude: input.exclude,
|
|
68
|
-
concurrency: input.concurrency,
|
|
69
|
-
timeoutSeconds: input.providerTimeoutSeconds,
|
|
70
|
-
onScan: (total) => report({ _tag: "nuke.scan.started", total }),
|
|
71
|
-
onProviderStarted: (provider) => report({ _tag: "nuke.scan.provider.started", provider }),
|
|
72
|
-
onProvider: (provider, count, error) =>
|
|
73
|
-
report({
|
|
74
|
-
_tag: "nuke.scan.provider.completed",
|
|
75
|
-
provider,
|
|
76
|
-
resources: count,
|
|
77
|
-
error,
|
|
78
|
-
}),
|
|
79
|
-
});
|
|
80
|
-
return { mode: input.mode, resources, failures, context } satisfies NukeScan;
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Permanently delete the selected resources. Each confirmed deletion is
|
|
85
|
-
* reported through {@link Progress} as `NukeResourceDeleted`.
|
|
86
|
-
*/
|
|
87
|
-
export const execute = Effect.fn("Alchemist.nuke.execute")(function* (input: ExecuteInput) {
|
|
88
|
-
const report = withSpanEvents(yield* Progress);
|
|
89
|
-
const keys = new Map(input.resources.map((resource, index) => [resource, `nuke/${index}`]));
|
|
90
|
-
const status = (resource: Nuke.Target, status: ApplyStatus, message?: string) =>
|
|
91
|
-
report({
|
|
92
|
-
_tag: "apply.resource.status",
|
|
93
|
-
fqn: keys.get(resource)!,
|
|
94
|
-
id: resource.providerId,
|
|
95
|
-
type: resource.providerId,
|
|
96
|
-
status,
|
|
97
|
-
message,
|
|
98
|
-
});
|
|
99
|
-
return yield* Nuke.destroy({
|
|
100
|
-
targets: input.resources,
|
|
101
|
-
context: input.scan.context,
|
|
102
|
-
strategy: input.strategy,
|
|
103
|
-
concurrency: input.concurrency,
|
|
104
|
-
timeoutSeconds: input.providerTimeoutSeconds,
|
|
105
|
-
onPass: (pass) => report({ _tag: "nuke.pass.started", pass }),
|
|
106
|
-
onDeleting: (resource) => status(resource, "deleting"),
|
|
107
|
-
onHeld: (resource, blockedBy) =>
|
|
108
|
-
status(resource, "skipped", `Held back by ${blockedBy.join(", ")}`),
|
|
109
|
-
onDeleted: (resource) =>
|
|
110
|
-
status(resource, "deleted").pipe(
|
|
111
|
-
Effect.andThen(
|
|
112
|
-
report({
|
|
113
|
-
_tag: "nuke.resource.deleted",
|
|
114
|
-
provider: resource.providerId,
|
|
115
|
-
resource: resource.displayName,
|
|
116
|
-
}),
|
|
117
|
-
),
|
|
118
|
-
),
|
|
119
|
-
onFailed: (resource, message) =>
|
|
120
|
-
status(resource, "fail", message).pipe(
|
|
121
|
-
Effect.andThen(
|
|
122
|
-
report({
|
|
123
|
-
_tag: "nuke.resource.failed",
|
|
124
|
-
provider: resource.providerId,
|
|
125
|
-
resource: resource.displayName,
|
|
126
|
-
message,
|
|
127
|
-
}),
|
|
128
|
-
),
|
|
129
|
-
),
|
|
130
|
-
});
|
|
131
|
-
});
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import * as Clock from "effect/Clock";
|
|
2
|
-
import * as Effect from "effect/Effect";
|
|
3
|
-
import { apply as applyPlan } from "../../Apply.ts";
|
|
4
|
-
import * as Plan from "../../Plan.ts";
|
|
5
|
-
import type { PlannedAction, PlannedResource } from "../../Report.ts";
|
|
6
|
-
import type { ResourceSelection, SelectionOutput } from "../../ResourceSelection.ts";
|
|
7
|
-
import { applySession, Progress, withSpanEvents } from "../Progress.ts";
|
|
8
|
-
import { open, type Session, type StackTarget } from "../Session.ts";
|
|
9
|
-
|
|
10
|
-
export type { StackTarget } from "../Session.ts";
|
|
11
|
-
|
|
12
|
-
export interface PlanInput {
|
|
13
|
-
readonly target: StackTarget;
|
|
14
|
-
readonly operation: "deploy" | "destroy";
|
|
15
|
-
readonly force?: boolean;
|
|
16
|
-
readonly include?: never;
|
|
17
|
-
readonly exclude?: never;
|
|
18
|
-
readonly adopt?: boolean;
|
|
19
|
-
readonly updateStateStore?: boolean;
|
|
20
|
-
/** Run local (emulated) providers instead of the real cloud. */
|
|
21
|
-
readonly dev?: boolean;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/** Select nodes and dependencies; declaration still runs, stack outputs are preserved. */
|
|
25
|
-
export interface FilteredPlanInput
|
|
26
|
-
extends Omit<PlanInput, keyof ResourceSelection>, ResourceSelection {}
|
|
27
|
-
|
|
28
|
-
/** Infer the deployed stack output from an `alchemy.run.ts` module type. */
|
|
29
|
-
export type StackModuleOutput<Module> = Module extends { readonly default: infer Definition }
|
|
30
|
-
? Definition extends Effect.Effect<any, any, any>
|
|
31
|
-
? Effect.Success<Definition> extends { readonly output: infer Output }
|
|
32
|
-
? Output
|
|
33
|
-
: unknown
|
|
34
|
-
: unknown
|
|
35
|
-
: unknown;
|
|
36
|
-
|
|
37
|
-
export interface PlanSummary {
|
|
38
|
-
readonly create: number;
|
|
39
|
-
readonly update: number;
|
|
40
|
-
readonly adopted: number;
|
|
41
|
-
readonly replace: number;
|
|
42
|
-
readonly delete: number;
|
|
43
|
-
readonly orphaned: number;
|
|
44
|
-
readonly noop: number;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export interface PlanSnapshot<Output = unknown> {
|
|
48
|
-
readonly stack: { readonly name: string; readonly stage: string };
|
|
49
|
-
readonly summary: PlanSummary;
|
|
50
|
-
/**
|
|
51
|
-
* Serializable resource rows (including orphan deletions) with their
|
|
52
|
-
* bindings and provider modes — what a remote renderer shows without
|
|
53
|
-
* holding {@link PlanSnapshot.native}.
|
|
54
|
-
*/
|
|
55
|
-
readonly resources: ReadonlyArray<PlannedResource>;
|
|
56
|
-
/** Serializable stack-action rows. */
|
|
57
|
-
readonly actions: ReadonlyArray<PlannedAction>;
|
|
58
|
-
/** The engine plan, as consumed by in-process renderers and {@link apply}. */
|
|
59
|
-
readonly native: Plan.Plan<Output>;
|
|
60
|
-
readonly createdAt: Date;
|
|
61
|
-
/** The session this plan was computed under; {@link apply} runs in it. */
|
|
62
|
-
readonly session: Session;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/** Whether a plan proposes any cloud mutations (i.e. approval-worthy work). */
|
|
66
|
-
export const hasChanges = (summary: PlanSummary): boolean =>
|
|
67
|
-
summary.create +
|
|
68
|
-
summary.update +
|
|
69
|
-
summary.adopted +
|
|
70
|
-
summary.replace +
|
|
71
|
-
summary.delete +
|
|
72
|
-
summary.orphaned >
|
|
73
|
-
0;
|
|
74
|
-
|
|
75
|
-
export const summarize = (plan: Plan.Plan): PlanSummary => {
|
|
76
|
-
const summary: { -readonly [K in keyof PlanSummary]: PlanSummary[K] } = {
|
|
77
|
-
create: 0,
|
|
78
|
-
update: 0,
|
|
79
|
-
adopted: 0,
|
|
80
|
-
replace: 0,
|
|
81
|
-
delete: 0,
|
|
82
|
-
orphaned: 0,
|
|
83
|
-
noop: 0,
|
|
84
|
-
};
|
|
85
|
-
for (const node of Object.values(plan.resources)) summary[node.action]++;
|
|
86
|
-
for (const node of Object.values(plan.deletions)) {
|
|
87
|
-
if (node !== undefined) summary[node.action]++;
|
|
88
|
-
}
|
|
89
|
-
return summary;
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
type PlanResult<Output> = Effect.Effect<
|
|
93
|
-
PlanSnapshot<Output>,
|
|
94
|
-
Effect.Error<ReturnType<typeof planStack>>,
|
|
95
|
-
Effect.Services<ReturnType<typeof planStack>>
|
|
96
|
-
>;
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Import the stack, resolve its services, and compute a deploy or destroy
|
|
100
|
-
* plan. Planning phases are reported through {@link Progress}; the returned
|
|
101
|
-
* snapshot is what {@link apply} executes. Filtered deploys preserve stack
|
|
102
|
-
* outputs and return void; the entire declaration still evaluates.
|
|
103
|
-
* With an explicit module type, filter-carrying callbacks also specify the input type.
|
|
104
|
-
*/
|
|
105
|
-
export function plan<Module = unknown>(
|
|
106
|
-
input: FilteredPlanInput &
|
|
107
|
-
({ include: ReadonlyArray<string> } | { exclude: ReadonlyArray<string> }),
|
|
108
|
-
): PlanResult<undefined>;
|
|
109
|
-
export function plan<Module = unknown>(input: PlanInput): PlanResult<StackModuleOutput<Module>>;
|
|
110
|
-
export function plan<Module = unknown>(
|
|
111
|
-
input: FilteredPlanInput,
|
|
112
|
-
): PlanResult<StackModuleOutput<Module> | undefined>;
|
|
113
|
-
export function plan<Module = unknown, Input extends FilteredPlanInput = PlanInput>(
|
|
114
|
-
input: Input,
|
|
115
|
-
): PlanResult<SelectionOutput<StackModuleOutput<Module>, Input>>;
|
|
116
|
-
export function plan(input: FilteredPlanInput) {
|
|
117
|
-
return planStack(input);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
const planStack = Effect.fn("Alchemist.stack.plan")(function* (input: FilteredPlanInput) {
|
|
121
|
-
type Output = StackModuleOutput<unknown> | undefined;
|
|
122
|
-
if (
|
|
123
|
-
input.operation === "destroy" &&
|
|
124
|
-
(input.include !== undefined || input.exclude !== undefined)
|
|
125
|
-
) {
|
|
126
|
-
return yield* Effect.die(
|
|
127
|
-
new Plan.InvalidResourceSelection({ message: "Filtered destroy is not supported." }),
|
|
128
|
-
);
|
|
129
|
-
}
|
|
130
|
-
const report = withSpanEvents(yield* Progress);
|
|
131
|
-
|
|
132
|
-
// Everything below emits into the same flat ProgressEvent channel:
|
|
133
|
-
// `open` reports importing-module / resolving-services at the real work
|
|
134
|
-
// boundaries, the engine reports loading-state / computing-plan and the
|
|
135
|
-
// per-node diff events. Re-providing the wrapped reporter is all the
|
|
136
|
-
// route does — no translation layer.
|
|
137
|
-
const session = yield* open(input.target, input).pipe(Effect.provideService(Progress, report));
|
|
138
|
-
const native = (yield* (
|
|
139
|
-
input.operation === "destroy"
|
|
140
|
-
? Plan.destroy(session.stack)
|
|
141
|
-
: Plan.make(session.stack, {
|
|
142
|
-
force: input.force,
|
|
143
|
-
include: input.include,
|
|
144
|
-
exclude: input.exclude,
|
|
145
|
-
})
|
|
146
|
-
).pipe(
|
|
147
|
-
Effect.provideService(Progress, report),
|
|
148
|
-
Effect.provide(session.context),
|
|
149
|
-
)) as Plan.Plan<Output>;
|
|
150
|
-
yield* report({ _tag: "plan.phase", phase: "plan-ready" });
|
|
151
|
-
return {
|
|
152
|
-
stack: { name: session.stack.name, stage: session.stack.stage },
|
|
153
|
-
summary: summarize(native),
|
|
154
|
-
...Plan.describePlan(native),
|
|
155
|
-
native,
|
|
156
|
-
createdAt: new Date(yield* Clock.currentTimeMillis),
|
|
157
|
-
session,
|
|
158
|
-
} satisfies PlanSnapshot<Output>;
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Apply a computed plan. Engine apply events are reported through
|
|
163
|
-
* {@link Progress} as `ApplyEvent`.
|
|
164
|
-
*/
|
|
165
|
-
export const apply = Effect.fn("Alchemist.stack.apply")(function* <Output>(
|
|
166
|
-
snapshot: PlanSnapshot<Output>,
|
|
167
|
-
) {
|
|
168
|
-
const report = withSpanEvents(yield* Progress);
|
|
169
|
-
return yield* Effect.provide(
|
|
170
|
-
applyPlan(snapshot.native, { session: applySession(report) }),
|
|
171
|
-
snapshot.session.context,
|
|
172
|
-
);
|
|
173
|
-
});
|
package/src/Cli/CliKit/CliKit.ts
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import type { TerminalProgressState } from "@alchemy.run/sigil/ansi";
|
|
2
|
-
import * as Context from "effect/Context";
|
|
3
|
-
import * as Effect from "effect/Effect";
|
|
4
|
-
import type * as Scope from "effect/Scope";
|
|
5
|
-
import type { NonInteractiveTerminal } from "../../Interaction.ts";
|
|
6
|
-
import type {
|
|
7
|
-
ConfirmOptions,
|
|
8
|
-
CycleSelectOptions,
|
|
9
|
-
AwaitExternalOptions,
|
|
10
|
-
MessageOptions,
|
|
11
|
-
InteractionError,
|
|
12
|
-
LiveViewHandle,
|
|
13
|
-
LiveViewOptions,
|
|
14
|
-
MenuOptions,
|
|
15
|
-
MultiSelectOptions,
|
|
16
|
-
PasswordInputOptions,
|
|
17
|
-
ProgressHandle,
|
|
18
|
-
ProgressOptions,
|
|
19
|
-
RenderOptions,
|
|
20
|
-
Screen,
|
|
21
|
-
SelectOptions,
|
|
22
|
-
CliKitCapabilities,
|
|
23
|
-
TextInputOptions,
|
|
24
|
-
View,
|
|
25
|
-
} from "../components/types.ts";
|
|
26
|
-
|
|
27
|
-
/** The sole injected owner of terminal rendering and input for a CLI process. */
|
|
28
|
-
export class CliKit extends Context.Service<
|
|
29
|
-
CliKit,
|
|
30
|
-
{
|
|
31
|
-
readonly terminal: CliKitCapabilities;
|
|
32
|
-
|
|
33
|
-
/** Terminal-emulator progress displayed outside the rendered TUI. */
|
|
34
|
-
readonly nativeProgress: {
|
|
35
|
-
readonly set: (state: TerminalProgressState, value?: number) => Effect.Effect<void>;
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
readonly output: {
|
|
39
|
-
/** Append a completed layout to terminal scrollback/output. */
|
|
40
|
-
readonly print: (view: View, options?: RenderOptions) => Effect.Effect<void>;
|
|
41
|
-
|
|
42
|
-
/** Render a layout without writing it. Useful for help, logs and snapshots. */
|
|
43
|
-
readonly format: (view: View, options?: RenderOptions) => string;
|
|
44
|
-
|
|
45
|
-
/** Effect form of `format`, useful when composing CLI programs. */
|
|
46
|
-
readonly render: (view: View, options?: RenderOptions) => Effect.Effect<string>;
|
|
47
|
-
|
|
48
|
-
/** Append an arbitrary visual layout. Prefer the semantic methods for logs. */
|
|
49
|
-
readonly info: (message: string | MessageOptions) => Effect.Effect<void>;
|
|
50
|
-
readonly success: (message: string | MessageOptions) => Effect.Effect<void>;
|
|
51
|
-
readonly warning: (message: string | MessageOptions) => Effect.Effect<void>;
|
|
52
|
-
readonly error: (message: string | MessageOptions) => Effect.Effect<void>;
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
readonly prompt: {
|
|
56
|
-
readonly text: (options: TextInputOptions) => Effect.Effect<string, InteractionError>;
|
|
57
|
-
readonly password: (options: PasswordInputOptions) => Effect.Effect<string, InteractionError>;
|
|
58
|
-
readonly confirm: (options: ConfirmOptions) => Effect.Effect<boolean, InteractionError>;
|
|
59
|
-
readonly select: <Value>(
|
|
60
|
-
options: SelectOptions<Value>,
|
|
61
|
-
) => Effect.Effect<Value, InteractionError>;
|
|
62
|
-
readonly multiSelect: <Value>(
|
|
63
|
-
options: MultiSelectOptions<Value>,
|
|
64
|
-
) => Effect.Effect<ReadonlyArray<Value>, InteractionError>;
|
|
65
|
-
readonly cycle: <State>(
|
|
66
|
-
options: CycleSelectOptions<State>,
|
|
67
|
-
) => Effect.Effect<ReadonlyArray<State>, InteractionError>;
|
|
68
|
-
readonly awaitExternal: (
|
|
69
|
-
options: AwaitExternalOptions,
|
|
70
|
-
) => Effect.Effect<string, InteractionError>;
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Display an application menu. Each invocation replaces the current app
|
|
74
|
-
* flow, so looping back to a menu clears any prompts shown since the last
|
|
75
|
-
* selection.
|
|
76
|
-
*/
|
|
77
|
-
readonly menu: <Value>(options: MenuOptions<Value>) => Effect.Effect<Value, InteractionError>;
|
|
78
|
-
|
|
79
|
-
/** Run an arbitrary interactive screen in the service's single live region. */
|
|
80
|
-
readonly custom: <Value>(screen: Screen<Value>) => Effect.Effect<Value, InteractionError>;
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
/** Run a sequence of prompts as one owned interaction. */
|
|
84
|
-
readonly wizard: <A, E, R>(
|
|
85
|
-
effect: Effect.Effect<A, E, R>,
|
|
86
|
-
) => Effect.Effect<A, E | NonInteractiveTerminal, R>;
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Keep one renderer alive while an Effect drives menus, screens and prompt
|
|
90
|
-
* flows. The application is cleared and the renderer exits when it settles.
|
|
91
|
-
*/
|
|
92
|
-
readonly application: <A, E, R>(
|
|
93
|
-
effect: Effect.Effect<A, E, R>,
|
|
94
|
-
) => Effect.Effect<A, E | NonInteractiveTerminal, R>;
|
|
95
|
-
|
|
96
|
-
readonly live: {
|
|
97
|
-
/**
|
|
98
|
-
* Add a mutable row to the live region. The handle is idempotent, and
|
|
99
|
-
* the enclosing Scope closes it as a backstop so interruption can never
|
|
100
|
-
* leave an orphaned row keeping the renderer mounted.
|
|
101
|
-
*/
|
|
102
|
-
readonly progress: (
|
|
103
|
-
options: ProgressOptions,
|
|
104
|
-
) => Effect.Effect<ProgressHandle, never, Scope.Scope>;
|
|
105
|
-
/**
|
|
106
|
-
* Mount a live layout while the scope is open. The view is immutable —
|
|
107
|
-
* dynamic content flows through a caller-owned store (`LiveStore` +
|
|
108
|
-
* `useLiveStore`) that the view's component subscribes to.
|
|
109
|
-
*/
|
|
110
|
-
readonly open: (
|
|
111
|
-
view: View,
|
|
112
|
-
options?: LiveViewOptions,
|
|
113
|
-
) => Effect.Effect<LiveViewHandle, never, Scope.Scope>;
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
/** Run work behind a progress row and collapse it to a final status line. */
|
|
117
|
-
readonly task: <A, E, R>(
|
|
118
|
-
options: ProgressOptions,
|
|
119
|
-
effect: Effect.Effect<A, E, R>,
|
|
120
|
-
) => Effect.Effect<A, E, R>;
|
|
121
|
-
}
|
|
122
|
-
>()("Alchemy::CliKit") {}
|
|
123
|
-
|
|
124
|
-
/** Effectful service accessors for code that must defer acquisition to use time. */
|
|
125
|
-
export const accessors = {
|
|
126
|
-
output: {
|
|
127
|
-
info: (message: string | MessageOptions) =>
|
|
128
|
-
Effect.flatMap(CliKit, (service) => service.output.info(message)),
|
|
129
|
-
success: (message: string | MessageOptions) =>
|
|
130
|
-
Effect.flatMap(CliKit, (service) => service.output.success(message)),
|
|
131
|
-
warning: (message: string | MessageOptions) =>
|
|
132
|
-
Effect.flatMap(CliKit, (service) => service.output.warning(message)),
|
|
133
|
-
error: (message: string | MessageOptions) =>
|
|
134
|
-
Effect.flatMap(CliKit, (service) => service.output.error(message)),
|
|
135
|
-
},
|
|
136
|
-
prompt: {
|
|
137
|
-
text: (options: TextInputOptions) =>
|
|
138
|
-
Effect.flatMap(CliKit, (service) => service.prompt.text(options)),
|
|
139
|
-
password: (options: PasswordInputOptions) =>
|
|
140
|
-
Effect.flatMap(CliKit, (service) => service.prompt.password(options)),
|
|
141
|
-
confirm: (options: ConfirmOptions) =>
|
|
142
|
-
Effect.flatMap(CliKit, (service) => service.prompt.confirm(options)),
|
|
143
|
-
select: <Value>(options: SelectOptions<Value>) =>
|
|
144
|
-
Effect.flatMap(CliKit, (service) => service.prompt.select(options)),
|
|
145
|
-
multiSelect: <Value>(options: MultiSelectOptions<Value>) =>
|
|
146
|
-
Effect.flatMap(CliKit, (service) => service.prompt.multiSelect(options)),
|
|
147
|
-
},
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
export const ApplicationPresentation = Context.Reference<"inline" | "alternate">(
|
|
151
|
-
"Alchemy::CliKit/ApplicationPresentation",
|
|
152
|
-
{ defaultValue: () => "inline" },
|
|
153
|
-
);
|
|
154
|
-
|
|
155
|
-
/** Pipeable presentation modifiers for {@link CliKit.application}. */
|
|
156
|
-
export const Application = {
|
|
157
|
-
alternate: <A, E, R>(effect: Effect.Effect<A, E, R>) =>
|
|
158
|
-
effect.pipe(Effect.provideService(ApplicationPresentation, "alternate" as const)),
|
|
159
|
-
};
|
package/src/Cli/CliKit/index.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
export { accessors, Application, CliKit } from "./CliKit.ts";
|
|
2
|
-
export { layer } from "./layer.ts";
|
|
3
|
-
export { CliKitInteraction } from "./interaction.ts";
|
|
4
|
-
export { openUrl } from "../../Interaction.ts";
|
|
5
|
-
export { BrowserOpenFailed, NonInteractiveTerminal, TerminalCancelled } from "../../Interaction.ts";
|
|
6
|
-
export { glyphsFor, spinnerFramesFor, theme, type GlyphName } from "../../Util/Theme.ts";
|
|
7
|
-
export {
|
|
8
|
-
ANSI_BOLD,
|
|
9
|
-
ANSI_DIM,
|
|
10
|
-
ANSI_RESET,
|
|
11
|
-
ansiFg,
|
|
12
|
-
colorsEnabled,
|
|
13
|
-
paint,
|
|
14
|
-
pipedColorEnv,
|
|
15
|
-
truncate,
|
|
16
|
-
unicodeEnabled,
|
|
17
|
-
} from "../../Util/Terminal.ts";
|
|
18
|
-
export {
|
|
19
|
-
Screen,
|
|
20
|
-
type Choice,
|
|
21
|
-
type AwaitExternalOptions,
|
|
22
|
-
type ConfirmOptions,
|
|
23
|
-
type CycleChoice,
|
|
24
|
-
type CycleSelectOptions,
|
|
25
|
-
type InteractionError,
|
|
26
|
-
type LiveViewHandle,
|
|
27
|
-
type LiveViewOptions,
|
|
28
|
-
type MenuOptions,
|
|
29
|
-
type MessageOptions,
|
|
30
|
-
type MultiSelectOptions,
|
|
31
|
-
type PasswordInputOptions,
|
|
32
|
-
type ProgressHandle,
|
|
33
|
-
type ProgressOptions,
|
|
34
|
-
type RenderOptions,
|
|
35
|
-
type ScreenController,
|
|
36
|
-
type SelectOptions,
|
|
37
|
-
type CliKitCapabilities,
|
|
38
|
-
type CliKitOptions,
|
|
39
|
-
type TextInputOptions,
|
|
40
|
-
type View,
|
|
41
|
-
} from "../components/types.ts";
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import * as Effect from "effect/Effect";
|
|
2
|
-
import * as Layer from "effect/Layer";
|
|
3
|
-
import { Interaction } from "../../Interaction.ts";
|
|
4
|
-
import { CliKit } from "./CliKit.ts";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* The CLI's implementation of the engine's {@link Interaction} capability,
|
|
8
|
-
* backed by the full CliKit terminal runtime: messages and `task` render
|
|
9
|
-
* through the live renderer, prompts run as real interactive screens.
|
|
10
|
-
* Provided by the CLI entrypoints next to `CliKit.layer()`; every other
|
|
11
|
-
* process uses `Interaction.layerNonInteractive` (or nothing at all —
|
|
12
|
-
* children have no interaction capability in their graphs).
|
|
13
|
-
*/
|
|
14
|
-
export const CliKitInteraction = Layer.effect(
|
|
15
|
-
Interaction,
|
|
16
|
-
// CliKit's surface is a structural superset of Interaction's — the
|
|
17
|
-
// terminal service IS the CLI's Interaction implementation.
|
|
18
|
-
Effect.map(CliKit, (cli): Interaction["Service"] => cli),
|
|
19
|
-
);
|
package/src/Cli/CliKit/layer.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { detectCapabilities } from "@alchemy.run/sigil/capabilities";
|
|
2
|
-
import * as Effect from "effect/Effect";
|
|
3
|
-
import * as Layer from "effect/Layer";
|
|
4
|
-
import { isNonInteractive } from "../../Util/interactive.ts";
|
|
5
|
-
import type { CliKitCapabilities, CliKitOptions } from "../components/types.ts";
|
|
6
|
-
import { CliKit } from "./CliKit.ts";
|
|
7
|
-
|
|
8
|
-
export const resolveCapabilities = (options: CliKitOptions): CliKitCapabilities => {
|
|
9
|
-
const stdout = options.stdout ?? process.stdout;
|
|
10
|
-
const stdin = options.stdin ?? process.stdin;
|
|
11
|
-
const detected = detectCapabilities({ stdout });
|
|
12
|
-
const input =
|
|
13
|
-
options.input ?? (stdin.isTTY === true && stdout.isTTY === true && !isNonInteractive());
|
|
14
|
-
return {
|
|
15
|
-
input,
|
|
16
|
-
columns: detected.size.columns,
|
|
17
|
-
rows: detected.size.rows,
|
|
18
|
-
colors: options.colors ?? detected.supports.color,
|
|
19
|
-
unicode: options.unicode ?? detected.supports.unicode,
|
|
20
|
-
alternateScreen: detected.supports.alternateScreen,
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
// One shared import promise per process. Concurrent dynamic imports of the
|
|
25
|
-
// same module (e.g. two test files building this layer at once) can race in
|
|
26
|
-
// bun and hand one caller a partially-evaluated namespace, which throws a
|
|
27
|
-
// TDZ ReferenceError on `makeRuntime`; funneling every build through a
|
|
28
|
-
// single import() sidesteps the race.
|
|
29
|
-
let sigilRuntime: Promise<typeof import("../components/view/Runtime.tsx")> | undefined;
|
|
30
|
-
const loadSigilRuntime = () => (sigilRuntime ??= import("../components/view/Runtime.tsx"));
|
|
31
|
-
|
|
32
|
-
/** Provides one terminal runtime for the enclosing scope. */
|
|
33
|
-
export const layer = (options: CliKitOptions = {}) =>
|
|
34
|
-
Layer.effect(
|
|
35
|
-
CliKit,
|
|
36
|
-
Effect.acquireRelease(
|
|
37
|
-
Effect.promise(async () => {
|
|
38
|
-
const capabilities = resolveCapabilities(options);
|
|
39
|
-
const { makeRuntime } = await loadSigilRuntime();
|
|
40
|
-
return makeRuntime(options, capabilities);
|
|
41
|
-
}),
|
|
42
|
-
({ dispose }) => Effect.promise(dispose),
|
|
43
|
-
).pipe(Effect.map(({ service }) => service)),
|
|
44
|
-
);
|