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
package/src/Nuke.ts
CHANGED
|
@@ -4,6 +4,7 @@ import * as Effect from "effect/Effect";
|
|
|
4
4
|
import * as Formatter from "effect/Formatter";
|
|
5
5
|
import * as Schedule from "effect/Schedule";
|
|
6
6
|
import picomatch from "picomatch";
|
|
7
|
+
import { emit, type ApplyStatus } from "./Events.ts";
|
|
7
8
|
import {
|
|
8
9
|
isProviderCollectionService,
|
|
9
10
|
isProviderService,
|
|
@@ -27,6 +28,8 @@ export interface ProviderFailure {
|
|
|
27
28
|
|
|
28
29
|
/** One cloud object a provider's `list()` turned up, bound to its provider. */
|
|
29
30
|
export interface Target {
|
|
31
|
+
/** Unique within a scan; names the target's row in progress events and views. */
|
|
32
|
+
readonly key: string;
|
|
30
33
|
readonly providerId: string;
|
|
31
34
|
readonly displayName: string;
|
|
32
35
|
readonly attributes: Record<string, unknown>;
|
|
@@ -46,27 +49,13 @@ export interface ListOptions extends DiscoverOptions {
|
|
|
46
49
|
readonly context: Context.Context<never>;
|
|
47
50
|
readonly concurrency?: number | "unbounded";
|
|
48
51
|
readonly timeoutSeconds?: number;
|
|
49
|
-
/** Called once with the selected provider count before enumeration starts. */
|
|
50
|
-
readonly onScan?: (total: number) => Effect.Effect<void>;
|
|
51
|
-
/** Called when a provider starts resolving/listing, to identify slow scans. */
|
|
52
|
-
readonly onProviderStarted?: (provider: string) => Effect.Effect<void>;
|
|
53
|
-
/**
|
|
54
|
-
* Called as each provider's listing settles (0 resources when it failed),
|
|
55
|
-
* for progress reporting — scans across many providers are the slowest
|
|
56
|
-
* part of a nuke and would otherwise be silent until the summary.
|
|
57
|
-
*/
|
|
58
|
-
readonly onProvider?: (
|
|
59
|
-
provider: string,
|
|
60
|
-
resources: number,
|
|
61
|
-
error?: string,
|
|
62
|
-
) => Effect.Effect<void>;
|
|
63
52
|
}
|
|
64
53
|
|
|
65
54
|
export type Strategy =
|
|
66
55
|
/** Delete in dependency order, retrying a wave until it stops making progress. */
|
|
67
|
-
| { readonly
|
|
56
|
+
| { readonly type: "coordinated" }
|
|
68
57
|
/** Delete everything at once, retrying each object on its own. */
|
|
69
|
-
| { readonly
|
|
58
|
+
| { readonly type: "independent"; readonly retries: number };
|
|
70
59
|
|
|
71
60
|
export interface DestroyOptions {
|
|
72
61
|
readonly targets: ReadonlyArray<Target>;
|
|
@@ -74,16 +63,6 @@ export interface DestroyOptions {
|
|
|
74
63
|
readonly strategy: Strategy;
|
|
75
64
|
readonly concurrency?: number | "unbounded";
|
|
76
65
|
readonly timeoutSeconds?: number;
|
|
77
|
-
/** Called before each coordinated pass, or once for independent deletion. */
|
|
78
|
-
readonly onPass?: (pass: number) => Effect.Effect<void>;
|
|
79
|
-
/** Called before each deletion attempt. */
|
|
80
|
-
readonly onDeleting?: (resource: Target) => Effect.Effect<void>;
|
|
81
|
-
/** Called when dependency failures prevent a resource from being attempted. */
|
|
82
|
-
readonly onHeld?: (resource: Target, blockedBy: ReadonlyArray<string>) => Effect.Effect<void>;
|
|
83
|
-
/** Called as each object is confirmed gone, for progress reporting. */
|
|
84
|
-
readonly onDeleted?: (resource: Target) => Effect.Effect<void>;
|
|
85
|
-
/** Called as a deletion attempt fails permanently (the run keeps going). */
|
|
86
|
-
readonly onFailed?: (resource: Target, message: string) => Effect.Effect<void>;
|
|
87
66
|
}
|
|
88
67
|
|
|
89
68
|
export interface Result {
|
|
@@ -116,10 +95,15 @@ const failure = (
|
|
|
116
95
|
message: typeof cause === "string" ? cause : Formatter.format(cause),
|
|
117
96
|
});
|
|
118
97
|
|
|
98
|
+
/**
|
|
99
|
+
* One provider's failure, typed or defect, must not abort an account-wide
|
|
100
|
+
* sweep: credential layers die on a rejected token, so collect both.
|
|
101
|
+
*/
|
|
102
|
+
const settle = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
|
|
103
|
+
Effect.result(effect.pipe(Effect.catchDefect((defect) => Effect.fail(defect))));
|
|
104
|
+
|
|
119
105
|
/** Deletions here run out-of-band, so nothing reports through an apply session. */
|
|
120
106
|
const silent = {
|
|
121
|
-
emit: () => Effect.void,
|
|
122
|
-
done: () => Effect.void,
|
|
123
107
|
note: () => Effect.void,
|
|
124
108
|
};
|
|
125
109
|
|
|
@@ -211,13 +195,13 @@ export const list = (
|
|
|
211
195
|
const providers = yield* discover(options.context, options).pipe(
|
|
212
196
|
Effect.provide(options.context),
|
|
213
197
|
);
|
|
214
|
-
yield*
|
|
198
|
+
yield* emit({ type: "nuke.scan.started", total: providers.length });
|
|
215
199
|
yield* Effect.forEach(
|
|
216
200
|
providers,
|
|
217
201
|
({ id, provider }) =>
|
|
218
202
|
Effect.gen(function* () {
|
|
219
|
-
yield*
|
|
220
|
-
const result = yield*
|
|
203
|
+
yield* emit({ type: "nuke.scan.provider.started", provider: id });
|
|
204
|
+
const result = yield* settle(
|
|
221
205
|
Effect.gen(function* () {
|
|
222
206
|
const listed = yield* provider
|
|
223
207
|
.list()
|
|
@@ -228,19 +212,29 @@ export const list = (
|
|
|
228
212
|
if (result._tag === "Failure") {
|
|
229
213
|
const error = failure(id, "list", result.failure);
|
|
230
214
|
failures.push(error);
|
|
231
|
-
yield*
|
|
215
|
+
yield* emit({
|
|
216
|
+
type: "nuke.scan.provider.completed",
|
|
217
|
+
provider: id,
|
|
218
|
+
resources: 0,
|
|
219
|
+
error: error.message,
|
|
220
|
+
});
|
|
232
221
|
return;
|
|
233
222
|
}
|
|
234
223
|
for (const raw of result.success.listed) {
|
|
235
224
|
const attributes = (raw ?? {}) as Record<string, unknown>;
|
|
236
225
|
resources.push({
|
|
226
|
+
key: `${id}/${resources.length}`,
|
|
237
227
|
providerId: id,
|
|
238
228
|
displayName: displayName(attributes),
|
|
239
229
|
attributes,
|
|
240
230
|
provider: result.success.provider,
|
|
241
231
|
});
|
|
242
232
|
}
|
|
243
|
-
yield*
|
|
233
|
+
yield* emit({
|
|
234
|
+
type: "nuke.scan.provider.completed",
|
|
235
|
+
provider: id,
|
|
236
|
+
resources: result.success.listed.length,
|
|
237
|
+
});
|
|
244
238
|
}),
|
|
245
239
|
{ concurrency: options.concurrency ?? 16, discard: true },
|
|
246
240
|
);
|
|
@@ -254,13 +248,40 @@ export const destroy = ({
|
|
|
254
248
|
strategy,
|
|
255
249
|
concurrency = 16,
|
|
256
250
|
timeoutSeconds = 120,
|
|
257
|
-
onDeleted = () => Effect.void,
|
|
258
|
-
onFailed = () => Effect.void,
|
|
259
|
-
onPass = () => Effect.void,
|
|
260
|
-
onDeleting = () => Effect.void,
|
|
261
|
-
onHeld = () => Effect.void,
|
|
262
251
|
}: DestroyOptions): Effect.Effect<Result> =>
|
|
263
252
|
Effect.gen(function* () {
|
|
253
|
+
// Each target reports as an apply row under its `key`.
|
|
254
|
+
const status = (resource: Target, status: ApplyStatus, message?: string) =>
|
|
255
|
+
emit({
|
|
256
|
+
type: "apply.resource.status",
|
|
257
|
+
fqn: resource.key,
|
|
258
|
+
id: resource.providerId,
|
|
259
|
+
resourceType: resource.providerId,
|
|
260
|
+
status,
|
|
261
|
+
message,
|
|
262
|
+
});
|
|
263
|
+
const onPass = (pass: number) => emit({ type: "nuke.pass.started", pass });
|
|
264
|
+
const onDeleted = (resource: Target) =>
|
|
265
|
+
status(resource, "deleted").pipe(
|
|
266
|
+
Effect.andThen(
|
|
267
|
+
emit({
|
|
268
|
+
type: "nuke.resource.deleted",
|
|
269
|
+
provider: resource.providerId,
|
|
270
|
+
resource: resource.displayName,
|
|
271
|
+
}),
|
|
272
|
+
),
|
|
273
|
+
);
|
|
274
|
+
const onFailed = (resource: Target, message: string) =>
|
|
275
|
+
status(resource, "fail", message).pipe(
|
|
276
|
+
Effect.andThen(
|
|
277
|
+
emit({
|
|
278
|
+
type: "nuke.resource.failed",
|
|
279
|
+
provider: resource.providerId,
|
|
280
|
+
resource: resource.displayName,
|
|
281
|
+
message,
|
|
282
|
+
}),
|
|
283
|
+
),
|
|
284
|
+
);
|
|
264
285
|
const deleted: Target[] = [];
|
|
265
286
|
const failed: Array<Result["failed"][number]> = [];
|
|
266
287
|
const held: Array<Result["held"][number]> = [];
|
|
@@ -269,7 +290,7 @@ export const destroy = ({
|
|
|
269
290
|
// `output` alone — `olds` just mirrors it and `instanceId` is unavailable.
|
|
270
291
|
const attempt = (resource: Target) =>
|
|
271
292
|
Effect.gen(function* () {
|
|
272
|
-
yield*
|
|
293
|
+
yield* status(resource, "deleting");
|
|
273
294
|
return yield* resource.provider
|
|
274
295
|
.delete({
|
|
275
296
|
id: resource.displayName,
|
|
@@ -284,13 +305,13 @@ export const destroy = ({
|
|
|
284
305
|
.pipe(Effect.timeout(Duration.seconds(timeoutSeconds)), Effect.provide(context));
|
|
285
306
|
});
|
|
286
307
|
|
|
287
|
-
if (strategy.
|
|
308
|
+
if (strategy.type === "independent") {
|
|
288
309
|
passes = 1;
|
|
289
310
|
yield* onPass(passes);
|
|
290
311
|
yield* Effect.forEach(
|
|
291
312
|
targets,
|
|
292
313
|
(resource) =>
|
|
293
|
-
|
|
314
|
+
settle(
|
|
294
315
|
attempt(resource).pipe(
|
|
295
316
|
Effect.retry({
|
|
296
317
|
schedule: Schedule.min([
|
|
@@ -358,7 +379,9 @@ export const destroy = ({
|
|
|
358
379
|
);
|
|
359
380
|
if (blockers.length > 0) {
|
|
360
381
|
heldTypes.add(typeId);
|
|
361
|
-
yield* Effect.forEach(resources, (resource) =>
|
|
382
|
+
yield* Effect.forEach(resources, (resource) =>
|
|
383
|
+
status(resource, "skipped", `Held back by ${blockers.join(", ")}`),
|
|
384
|
+
);
|
|
362
385
|
held.push(
|
|
363
386
|
...resources.map((resource) => ({
|
|
364
387
|
resource,
|
|
@@ -375,7 +398,7 @@ export const destroy = ({
|
|
|
375
398
|
remaining,
|
|
376
399
|
(resource) =>
|
|
377
400
|
Effect.gen(function* () {
|
|
378
|
-
const result = yield*
|
|
401
|
+
const result = yield* settle(attempt(resource));
|
|
379
402
|
if (result._tag === "Success") {
|
|
380
403
|
deleted.push(resource);
|
|
381
404
|
yield* onDeleted(resource);
|
package/src/Output.ts
CHANGED
|
@@ -163,7 +163,7 @@ export type ArrayExpr<A extends any[], Req = any> = Output<A, Req> & {
|
|
|
163
163
|
};
|
|
164
164
|
|
|
165
165
|
export const isResourceExpr = <Value = any, Req = any>(
|
|
166
|
-
node:
|
|
166
|
+
node: any,
|
|
167
167
|
): node is ResourceExpr<Value, Req> => exprKind(node) === "ResourceExpr";
|
|
168
168
|
|
|
169
169
|
export class ResourceExpr<Value, Req = never> extends BaseExpr<Value, Req> {
|
|
@@ -251,6 +251,15 @@ export class ApplyExpr<A, B, Req = never> extends BaseExpr<B, Req> {
|
|
|
251
251
|
[inspect](): string {
|
|
252
252
|
return `${this.expr[inspect]()}.map(${this.f.toString()})`;
|
|
253
253
|
}
|
|
254
|
+
|
|
255
|
+
// Bind the upstream and apply `f` where it is read. A binding keyed by this
|
|
256
|
+
// expression would embed `f.toString()`, which differs between the deploy
|
|
257
|
+
// and a minified runtime bundle, so the runtime would find nothing.
|
|
258
|
+
override asEffect(): any {
|
|
259
|
+
return Effect.map(this.expr.asEffect() as Effect.Effect<Accessor<A>>, (accessor) =>
|
|
260
|
+
Effect.map(accessor, this.f),
|
|
261
|
+
);
|
|
262
|
+
}
|
|
254
263
|
}
|
|
255
264
|
|
|
256
265
|
export const mapEffect =
|
|
@@ -374,6 +383,14 @@ export class AllExpr<Outs extends Expr[]> extends BaseExpr<Outs> {
|
|
|
374
383
|
[inspect](): string {
|
|
375
384
|
return `all(${this.outs.map((out) => out[inspect]()).join(", ")})`;
|
|
376
385
|
}
|
|
386
|
+
|
|
387
|
+
// Bind each member on its own (see `ApplyExpr.asEffect`).
|
|
388
|
+
override asEffect(): any {
|
|
389
|
+
return Effect.map(
|
|
390
|
+
Effect.all(this.outs.map((out) => out.asEffect() as Effect.Effect<Accessor<unknown>>)),
|
|
391
|
+
(accessors) => Effect.all(accessors),
|
|
392
|
+
);
|
|
393
|
+
}
|
|
377
394
|
}
|
|
378
395
|
|
|
379
396
|
export const isRefExpr = <A = any>(node: any): node is RefExpr<A> => exprKind(node) === "RefExpr";
|
|
@@ -407,6 +424,54 @@ export class RefExpr<A> extends BaseExpr<A, never> {
|
|
|
407
424
|
}
|
|
408
425
|
}
|
|
409
426
|
|
|
427
|
+
/**
|
|
428
|
+
* Refs the plan bound to a resource declared in the same program. A ref names
|
|
429
|
+
* a resource by stack, stage and id; when those are the current stack and
|
|
430
|
+
* stage and the program also declares that resource, the ref is a dependency
|
|
431
|
+
* on it, exactly like a direct reference: {@link upstream} reports the edge
|
|
432
|
+
* (create waits for the target, delete runs the dependent first) and
|
|
433
|
+
* {@link evaluate} reads the target's fresh attributes from the apply-time
|
|
434
|
+
* outputs. Unbound refs (other stacks or stages, or resources only in state)
|
|
435
|
+
* keep reading persisted state and carry no edge.
|
|
436
|
+
*/
|
|
437
|
+
const boundRefs = new WeakMap<object, ResourceLike>();
|
|
438
|
+
|
|
439
|
+
// Keyed by the raw expression, so a ref reached through its proxy or
|
|
440
|
+
// unwrapped through `ExprSymbol` finds the same binding.
|
|
441
|
+
const rawExpr = (ref: object): object => (ref as any)[ExprSymbol] ?? ref;
|
|
442
|
+
|
|
443
|
+
/** Bind `ref` to the declared resource it names (see {@link boundRefs}). */
|
|
444
|
+
export const bindRef = (ref: RefExpr<any>, target: ResourceLike): void => {
|
|
445
|
+
boundRefs.set(rawExpr(ref), target);
|
|
446
|
+
};
|
|
447
|
+
|
|
448
|
+
/** The declared resource a ref was bound to, if any. */
|
|
449
|
+
export const refTarget = (ref: RefExpr<any>): ResourceLike | undefined =>
|
|
450
|
+
boundRefs.get(rawExpr(ref));
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* Every {@link RefExpr} reachable from `value` through the same expression and
|
|
454
|
+
* plain-data structure {@link upstream} walks. Refs a `flatMap` produces at
|
|
455
|
+
* evaluation time are not reachable, as for any upstream.
|
|
456
|
+
*/
|
|
457
|
+
export const collectRefs = (value: any, seen: WeakSet<object> = new WeakSet()): RefExpr<any>[] => {
|
|
458
|
+
if (isPrimitive(value) || isResource(value)) {
|
|
459
|
+
return [];
|
|
460
|
+
} else if (isExpr(value)) {
|
|
461
|
+
if (isRefExpr(value)) return [value];
|
|
462
|
+
if (isPropExpr(value)) return collectRefs(value.expr, seen);
|
|
463
|
+
if (isAllExpr(value)) return value.outs.flatMap((out: any) => collectRefs(out, seen));
|
|
464
|
+
if (isEffectExpr(value) || isApplyExpr(value) || isFlatMapExpr(value) || isNamedExpr(value)) {
|
|
465
|
+
return collectRefs(value.expr, seen);
|
|
466
|
+
}
|
|
467
|
+
return [];
|
|
468
|
+
} else if (isPlainData(value)) {
|
|
469
|
+
if (alreadySeen(value, seen)) return [];
|
|
470
|
+
return Object.values(value).flatMap((child) => collectRefs(child, seen));
|
|
471
|
+
}
|
|
472
|
+
return [];
|
|
473
|
+
};
|
|
474
|
+
|
|
410
475
|
export const isStackRefExpr = <A = any>(node: any): node is StackRefExpr<A> =>
|
|
411
476
|
exprKind(node) === "StackRefExpr";
|
|
412
477
|
|
|
@@ -629,12 +694,16 @@ export const evaluate: <A, Req = never>(
|
|
|
629
694
|
const value = yield* evaluate(expr.expr, upstream);
|
|
630
695
|
return yield* evaluate(expr.f(value), upstream);
|
|
631
696
|
} else if (isAllExpr(expr)) {
|
|
632
|
-
return yield* Effect.
|
|
697
|
+
return yield* Effect.forEach(expr.outs, (out) => evaluate(out, upstream));
|
|
633
698
|
} else if (isPropExpr(expr)) {
|
|
634
699
|
return (yield* evaluate(expr.expr, upstream))?.[expr.identifier];
|
|
635
700
|
} else if (isNamedExpr(expr)) {
|
|
636
701
|
return yield* evaluate(expr.expr, upstream);
|
|
637
702
|
} else if (isRefExpr(expr)) {
|
|
703
|
+
const target = refTarget(expr);
|
|
704
|
+
if (target !== undefined && Object.hasOwn(upstream, target.FQN)) {
|
|
705
|
+
return upstream[target.FQN as keyof typeof upstream];
|
|
706
|
+
}
|
|
638
707
|
const state = yield* yield* State.State;
|
|
639
708
|
const stack = expr.stack ?? (yield* StackContext).name;
|
|
640
709
|
const stage = expr.stage ?? (yield* Stage);
|
|
@@ -682,13 +751,11 @@ export const evaluate: <A, Req = never>(
|
|
|
682
751
|
}
|
|
683
752
|
const nested = new Set(ancestors).add(expr);
|
|
684
753
|
if (Array.isArray(expr)) {
|
|
685
|
-
return yield* Effect.
|
|
754
|
+
return yield* Effect.forEach(expr, (item) => evaluate(item, upstream, nested));
|
|
686
755
|
}
|
|
687
756
|
return Object.fromEntries(
|
|
688
|
-
yield* Effect.
|
|
689
|
-
|
|
690
|
-
evaluate(value, upstream, nested).pipe(Effect.map((value) => [key, value])),
|
|
691
|
-
),
|
|
757
|
+
yield* Effect.forEach(Object.entries(expr), ([key, value]) =>
|
|
758
|
+
evaluate(value, upstream, nested).pipe(Effect.map((value) => [key, value])),
|
|
692
759
|
),
|
|
693
760
|
);
|
|
694
761
|
}
|
|
@@ -701,6 +768,49 @@ export const evaluate: <A, Req = never>(
|
|
|
701
768
|
return expr;
|
|
702
769
|
}) as Effect.Effect<any>;
|
|
703
770
|
|
|
771
|
+
/**
|
|
772
|
+
* Evaluate the parts of `expr` that `upstream` can resolve. An Output whose
|
|
773
|
+
* sources are all in `upstream` is evaluated, plain data is walked, and an
|
|
774
|
+
* Output with any other source is returned unevaluated.
|
|
775
|
+
*/
|
|
776
|
+
export const evaluateAvailable = (
|
|
777
|
+
expr: any,
|
|
778
|
+
upstream: {
|
|
779
|
+
[Id in string]: any;
|
|
780
|
+
},
|
|
781
|
+
ancestors: ReadonlySet<object> = new Set(),
|
|
782
|
+
): Effect.Effect<
|
|
783
|
+
any,
|
|
784
|
+
InvalidReferenceError | MissingSourceError | Config.ConfigError,
|
|
785
|
+
State.State
|
|
786
|
+
> =>
|
|
787
|
+
Effect.gen(function* () {
|
|
788
|
+
if (isResource(expr) || isOutput(expr)) {
|
|
789
|
+
const sources = Object.keys(upstreamAny(expr));
|
|
790
|
+
return sources.every((fqn) => Object.hasOwn(upstream, fqn))
|
|
791
|
+
? yield* evaluate(expr, upstream)
|
|
792
|
+
: expr;
|
|
793
|
+
}
|
|
794
|
+
if (Config.isConfig(expr)) {
|
|
795
|
+
return yield* evaluate(expr, upstream);
|
|
796
|
+
}
|
|
797
|
+
if (isPlainData(expr)) {
|
|
798
|
+
if (ancestors.has(expr)) {
|
|
799
|
+
return undefined;
|
|
800
|
+
}
|
|
801
|
+
const nested = new Set(ancestors).add(expr);
|
|
802
|
+
if (Array.isArray(expr)) {
|
|
803
|
+
return yield* Effect.forEach(expr, (item) => evaluateAvailable(item, upstream, nested));
|
|
804
|
+
}
|
|
805
|
+
return Object.fromEntries(
|
|
806
|
+
yield* Effect.forEach(Object.entries(expr), ([key, value]) =>
|
|
807
|
+
evaluateAvailable(value, upstream, nested).pipe(Effect.map((value) => [key, value])),
|
|
808
|
+
),
|
|
809
|
+
);
|
|
810
|
+
}
|
|
811
|
+
return expr;
|
|
812
|
+
});
|
|
813
|
+
|
|
704
814
|
export const hasOutputs = (value: any): value is Output<any, any> =>
|
|
705
815
|
Object.keys(upstreamAny(value)).length > 0;
|
|
706
816
|
|
|
@@ -756,6 +866,9 @@ export const upstream = <E extends Output<any, any>>(
|
|
|
756
866
|
return {
|
|
757
867
|
[expr.src.FQN]: expr.src,
|
|
758
868
|
};
|
|
869
|
+
} else if (isRefExpr(expr)) {
|
|
870
|
+
const target = refTarget(expr);
|
|
871
|
+
return target === undefined ? {} : { [target.FQN]: target };
|
|
759
872
|
} else if (isPropExpr(expr)) {
|
|
760
873
|
return upstream(expr.expr, seen);
|
|
761
874
|
} else if (isAllExpr(expr)) {
|