Commit: 6236c5c
Parent: 687babd

Implement RPC

Mårten Åsberg committed on 2026-04-01 at 15:24
Directory.Packages.props +1 -0
diff --git a/Directory.Packages.props b/Directory.Packages.props
index acc52f2..98eabd0 100644
@@ -13,5 +13,6 @@
<PackageVersion Include="Avalonia.Fonts.Inter" Version="12.0.0-rc2" />
<PackageVersion Include="Avalonia.Themes.Fluent" Version="12.0.0-rc2" />
<PackageVersion Include="PowerShellStandard.Library" Version="5.1.1" />
<PackageVersion Include="System.Management.Automation" Version="7.6.0" />
</ItemGroup>
</Project>
OutGridTree.Window/App.axaml.cs +14 -1
diff --git a/OutGridTree.Window/App.axaml.cs b/OutGridTree.Window/App.axaml.cs
index f391c22..6d2dca2 100644
@@ -6,6 +6,8 @@ namespace OutGridTree.Window;
internal sealed partial class App : Application
{
private readonly RpcService rpcService = new();
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
@@ -15,9 +17,20 @@ internal sealed partial class App : Application
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
desktop.MainWindow = new MainWindow();
if (desktop.Args is [var pipeName])
{
desktop.MainWindow = new MainWindow(rpcService);
desktop.ShutdownRequested += OnShutdownRequested;
rpcService.Start(pipeName);
}
}
base.OnFrameworkInitializationCompleted();
}
private void OnShutdownRequested(object? sender, ShutdownRequestedEventArgs e)
{
rpcService.Stop();
}
}
OutGridTree.Window/MainWindow.axaml.cs +72 -2
diff --git a/OutGridTree.Window/MainWindow.axaml.cs b/OutGridTree.Window/MainWindow.axaml.cs
index 2ae1d40..0e7d977 100644
@@ -1,15 +1,85 @@
using System;
using System.Collections.ObjectModel;
using System.Management.Automation;
using Avalonia.Controls;
using Avalonia.Data;
using Avalonia.Data.Converters;
namespace OutGridTree.Window;
internal sealed partial class MainWindow : Avalonia.Controls.Window
{
private readonly ObservableCollection<object> records = [];
private readonly RpcService rpcService;
private readonly ObservableCollection<object?> records = [];
public MainWindow()
public MainWindow(RpcService rpcService)
{
this.rpcService = rpcService;
rpcService.RecordReceived += OnRecordReceived;
InitializeComponent();
Table.ItemsSource = records;
}
private void OnRecordReceived(object? record)
{
Dispatcher.Post(() => AddRecord(record));
}
private void AddRecord(object? record)
{
if (record is not null && records.Count is 0)
{
if (record is PSObject psObject)
{
foreach (var property in psObject.Properties)
{
var name = property.Name;
Table.Columns.Add(
new DataGridTextColumn()
{
Header = name,
Binding = CompiledBinding.Create<object, object>(
o => o,
converter: new FuncValueConverter<object, string?>(o =>
(o as PSObject)?.Properties[name].Value?.ToString()
)
),
}
);
}
}
else
{
Table.Columns.Add(
new DataGridTextColumn()
{
Header = record switch
{
bool => "Boolean",
byte or sbyte or short or ushort or int or uint or long or ulong => "Integer",
float or double or decimal => "Number",
char => "Character",
string => "String",
_ => "Primitive",
},
Binding = CompiledBinding.Create<object, object>(
o => o,
converter: new FuncValueConverter<object, string?>(o => o?.ToString())
),
}
);
}
}
records.Add(record);
}
protected override void OnClosed(EventArgs e)
{
rpcService.RecordReceived -= OnRecordReceived;
base.OnClosed(e);
}
}
OutGridTree.Window/OutGridTree.Window.csproj +1 -0
diff --git a/OutGridTree.Window/OutGridTree.Window.csproj b/OutGridTree.Window/OutGridTree.Window.csproj
index 7114cdc..6a00926 100644
@@ -10,5 +10,6 @@
<PackageReference Include="Avalonia.Desktop" />
<PackageReference Include="Avalonia.Fonts.Inter" />
<PackageReference Include="Avalonia.Themes.Fluent" />
<PackageReference Include="System.Management.Automation" />
</ItemGroup>
</Project>
OutGridTree.Window/RpcService.cs +62 -0
diff --git a/OutGridTree.Window/RpcService.cs b/OutGridTree.Window/RpcService.cs
new file mode 100644
index 0000000..8ea27ec
@@ -0,0 +1,62 @@
using System;
using System.IO;
using System.IO.Pipes;
using System.Management.Automation;
using System.Text;
using System.Threading;
namespace OutGridTree.Window;
internal sealed class RpcService
{
public event Action<object?>? RecordReceived;
private NamedPipeClientStream? pipe;
private readonly CancellationTokenSource cts = new();
private Thread? thread;
public void Start(string pipeName)
{
pipe = new(".", pipeName, PipeDirection.In);
thread = new(Run);
thread.Start();
}
private void Run()
{
if (pipe is null)
{
return;
}
pipe.Connect();
var reader = new StreamReader(pipe);
while (reader.ReadLine(cts.Token) is string line)
{
var record = PSSerializer.Deserialize(Encoding.UTF8.GetString(Convert.FromBase64String(line)));
RecordReceived?.Invoke(record);
}
}
public void Stop()
{
cts.Cancel();
thread?.Join();
pipe?.Dispose();
}
}
file static class StreamReaderExtensions
{
public static string? ReadLine(this StreamReader reader, CancellationToken cancellationToken)
{
var valueTask = reader.ReadLineAsync(cancellationToken);
if (valueTask.IsCompletedSuccessfully)
{
return valueTask.Result;
}
var task = valueTask.AsTask();
task.Wait(cancellationToken);
return task.Result;
}
}
OutGridTree.Window/packages.lock.json +641 -0
diff --git a/OutGridTree.Window/packages.lock.json b/OutGridTree.Window/packages.lock.json
index 4eeda7a..fa84713 100644
@@ -60,6 +60,30 @@
"resolved": "1.2.6",
"contentHash": "KMSJG+jfk7vjP52QkWB99qWespXCPAzG/IaMCMRHYWumJEAGKQYm2HtyWG6eqnOwDitH96i1cqq5EVesyOtPmg=="
},
"System.Management.Automation": {
"type": "Direct",
"requested": "[7.6.0, )",
"resolved": "7.6.0",
"contentHash": "S/AVZCBLZAsfZ+Oe29GuH45bi8Gi5inskQ4IE8Q5bvgtuF4AIwuXPkpnZK5nzF+9XDz+hF31yS8w1C15HvZhlg==",
"dependencies": {
"Microsoft.ApplicationInsights": "2.23.0",
"Microsoft.Management.Infrastructure": "3.0.0",
"Microsoft.PowerShell.CoreCLR.Eventing": "7.6.0",
"Microsoft.PowerShell.Native": "700.0.0-rc.1",
"Microsoft.Security.Extensions": "1.4.0",
"Microsoft.Win32.Registry.AccessControl": "10.0.5",
"Newtonsoft.Json": "13.0.4",
"System.CodeDom": "10.0.5",
"System.Configuration.ConfigurationManager": "10.0.5",
"System.Diagnostics.EventLog": "10.0.5",
"System.DirectoryServices": "10.0.5",
"System.Management": "10.0.5",
"System.Security.Cryptography.Pkcs": "10.0.5",
"System.Security.Cryptography.ProtectedData": "10.0.5",
"System.Security.Permissions": "10.0.5",
"System.Windows.Extensions": "10.0.5"
}
},
"Avalonia.Angle.Windows.Natives": {
"type": "Transitive",
"resolved": "2.1.25547.20250602",
@@ -179,6 +203,58 @@
"resolved": "0.11.4",
"contentHash": "yZ8+Lgwo+KtRI29TB2mIOEMzV+csMJ+pKZg4YHReAP3vRewWLKKeYfrBDo5FS69rWnEbCfU3sbM+ZEQr+GDLtg=="
},
"Microsoft.ApplicationInsights": {
"type": "Transitive",
"resolved": "2.23.0",
"contentHash": "nWArUZTdU7iqZLycLKWe0TDms48KKGE6pONH2terYNa8REXiqixrMOkf1sk5DHGMaUTqONU2YkS4SAXBhLStgw=="
},
"Microsoft.Management.Infrastructure": {
"type": "Transitive",
"resolved": "3.0.0",
"contentHash": "cGZi0q5IujCTVYKo9h22Pw+UwfZDV82HXO8HTxMG2HqntPlT3Ls8jY6punLp4YzCypJNpfCAu2kae3TIyuAiJw==",
"dependencies": {
"Microsoft.Management.Infrastructure.Runtime.Unix": "3.0.0",
"Microsoft.Management.Infrastructure.Runtime.Win": "3.0.0"
}
},
"Microsoft.Management.Infrastructure.Runtime.Unix": {
"type": "Transitive",
"resolved": "3.0.0",
"contentHash": "QZE3uEDvZ0m7LabQvcmNOYHp7v1QPBVMpB/ild0WEE8zqUVAP5y9rRI5we37ImI1bQmW5pZ+3HNC70POPm0jBQ=="
},
"Microsoft.Management.Infrastructure.Runtime.Win": {
"type": "Transitive",
"resolved": "3.0.0",
"contentHash": "uwMyWN33+iQ8Wm/n1yoPXgFoiYNd0HzJyoqSVhaQZyJfaQrJR3udgcIHjqa1qbc3lS6kvfuUMN4TrF4U4refCQ=="
},
"Microsoft.PowerShell.CoreCLR.Eventing": {
"type": "Transitive",
"resolved": "7.6.0",
"contentHash": "bjNtp02ZuXhg6b28p6q+hoAhoSksHZ7cdVhCXX3vUqU0Zlvgl9FJlxFmGfL7ommIpIx/8j5eXO5Pth24LwDSnQ==",
"dependencies": {
"System.Diagnostics.EventLog": "10.0.5"
}
},
"Microsoft.PowerShell.Native": {
"type": "Transitive",
"resolved": "700.0.0-rc.1",
"contentHash": "lJOCErHTSWwCzfp3wgeyqhNRi4t43McDc0CHqlbt3Cj3OomiqPlNHQXujSbgd+0Ir6/8QAmvU/VOYgqCyMki6A=="
},
"Microsoft.Security.Extensions": {
"type": "Transitive",
"resolved": "1.4.0",
"contentHash": "MnHXttc0jHbRrGdTJ+yJBbGDoa4OXhtnKXHQw70foMyAooFtPScZX/dN+Nib47nuglc9Gt29Gfb5Zl+1lAuTeA=="
},
"Microsoft.Win32.Registry.AccessControl": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "1J6ooeZGeTSlM2vZdB1UHm9Y7vP8f/pS+Pd2JrqfjXLBZXrrby4rXBY6pP2k/Wb26CVm9TlEPjyWB2ryXT69LA=="
},
"Newtonsoft.Json": {
"type": "Transitive",
"resolved": "13.0.4",
"contentHash": "pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A=="
},
"SkiaSharp": {
"type": "Transitive",
"resolved": "3.119.3-preview.1.1",
@@ -208,6 +284,61 @@
"resolved": "3.119.3-preview.1.1",
"contentHash": "PkMb1pGPBSW3ZL0IVKP9DZs+w065HVs4jGQELsbkmKzKSL5P8KHLkrrmnv2XpFpXtx2njOllB8243N1dBMK+CQ=="
},
"System.CodeDom": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "hGZWDDJh1U6t7fy3iO4HlZYK1ur1fWE3sTqTNHkHk0Leh0JUcxYM//JtLBNG5g+6D2Lt0+aHH8rc7e5oIlNgCg=="
},
"System.Configuration.ConfigurationManager": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "9UHU7hldEOVgcOHUX7Pa+owDfpzhW+a1gshEvyknAoDA++G6FV+N1cPoUbtsXEO7GgPErGSg8MHrI/YqrLoiGA==",
"dependencies": {
"System.Diagnostics.EventLog": "10.0.5",
"System.Security.Cryptography.ProtectedData": "10.0.5"
}
},
"System.Diagnostics.EventLog": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "wugvy+pBVzjQEnRs9wMTWwoaeNFX3hsaHeVHFDIvJSWXp7wfmNWu3mxAwBIE6pyW+g6+rHa1Of5fTzb0QVqUTA=="
},
"System.DirectoryServices": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "1AbKZ7Jh/kN7U7BPf5fLWMXjaXeSCCSL8OLvs1aM2P4FJL1+BATcnIjhUgG3pcmII0aFN+tWS/rX0iBZkX9AVw=="
},
"System.Management": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "JhBVxvWhUJ0KAquUK0dMnc3a1Ol4JyH8fMrMQZ9GgEUkrtvPy8DE57SDnGnuvOdI0maJOdguxw87N5bh2eL87A==",
"dependencies": {
"System.CodeDom": "10.0.5"
}
},
"System.Security.Cryptography.Pkcs": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "BJEYUZfXpkPIHo2+oFoUemD5CPMFHPJOkRzXrbj/iZrWsjga3ypj8Rqd9bFlSLupEH4IIdD/aBWm/V1gCiBL9w=="
},
"System.Security.Cryptography.ProtectedData": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "kxR4O/8o32eNN3m4qbLe3UifYqeyEpallCyVAsLvL5ZFJVyT3JCb+9du/WHfC09VyJh1Q+p/Gd4+AwM7Rz4acg=="
},
"System.Security.Permissions": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "mhNFWI/5ljeEUT4nsJFK5ykecpyelRwN6Hy1x0hIJoqs5ssHJ9jr7hIkrjhbiE2Y4usuG1FpZr9S00Oei49aMg==",
"dependencies": {
"System.Windows.Extensions": "10.0.5"
}
},
"System.Windows.Extensions": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "5hVP2TIgEqqA590MnKmMN5+Fgzl6xBRjR1wbgC3M1znrZZJe63TwBPN+ymaMgwT0vjsiXk95AjMAe8SAhhJSTg=="
},
"Tmds.DBus.Protocol": {
"type": "Transitive",
"resolved": "0.90.3",
@@ -215,6 +346,30 @@
}
},
"net10.0/linux-arm64": {
"System.Management.Automation": {
"type": "Direct",
"requested": "[7.6.0, )",
"resolved": "7.6.0",
"contentHash": "S/AVZCBLZAsfZ+Oe29GuH45bi8Gi5inskQ4IE8Q5bvgtuF4AIwuXPkpnZK5nzF+9XDz+hF31yS8w1C15HvZhlg==",
"dependencies": {
"Microsoft.ApplicationInsights": "2.23.0",
"Microsoft.Management.Infrastructure": "3.0.0",
"Microsoft.PowerShell.CoreCLR.Eventing": "7.6.0",
"Microsoft.PowerShell.Native": "700.0.0-rc.1",
"Microsoft.Security.Extensions": "1.4.0",
"Microsoft.Win32.Registry.AccessControl": "10.0.5",
"Newtonsoft.Json": "13.0.4",
"System.CodeDom": "10.0.5",
"System.Configuration.ConfigurationManager": "10.0.5",
"System.Diagnostics.EventLog": "10.0.5",
"System.DirectoryServices": "10.0.5",
"System.Management": "10.0.5",
"System.Security.Cryptography.Pkcs": "10.0.5",
"System.Security.Cryptography.ProtectedData": "10.0.5",
"System.Security.Permissions": "10.0.5",
"System.Windows.Extensions": "10.0.5"
}
},
"Avalonia.Angle.Windows.Natives": {
"type": "Transitive",
"resolved": "2.1.25547.20250602",
@@ -243,6 +398,39 @@
"resolved": "8.3.1.3",
"contentHash": "bx8CE8Js+XGX8PUxAHCBDEORt5aaBYtMN4Hr9QFs57Xithh6yjUyYqksizH6eRDhJkwsGI+SXWmPmMm8lZC9Pw=="
},
"Microsoft.Management.Infrastructure.Runtime.Unix": {
"type": "Transitive",
"resolved": "3.0.0",
"contentHash": "QZE3uEDvZ0m7LabQvcmNOYHp7v1QPBVMpB/ild0WEE8zqUVAP5y9rRI5we37ImI1bQmW5pZ+3HNC70POPm0jBQ=="
},
"Microsoft.Management.Infrastructure.Runtime.Win": {
"type": "Transitive",
"resolved": "3.0.0",
"contentHash": "uwMyWN33+iQ8Wm/n1yoPXgFoiYNd0HzJyoqSVhaQZyJfaQrJR3udgcIHjqa1qbc3lS6kvfuUMN4TrF4U4refCQ=="
},
"Microsoft.PowerShell.CoreCLR.Eventing": {
"type": "Transitive",
"resolved": "7.6.0",
"contentHash": "bjNtp02ZuXhg6b28p6q+hoAhoSksHZ7cdVhCXX3vUqU0Zlvgl9FJlxFmGfL7ommIpIx/8j5eXO5Pth24LwDSnQ==",
"dependencies": {
"System.Diagnostics.EventLog": "10.0.5"
}
},
"Microsoft.PowerShell.Native": {
"type": "Transitive",
"resolved": "700.0.0-rc.1",
"contentHash": "lJOCErHTSWwCzfp3wgeyqhNRi4t43McDc0CHqlbt3Cj3OomiqPlNHQXujSbgd+0Ir6/8QAmvU/VOYgqCyMki6A=="
},
"Microsoft.Security.Extensions": {
"type": "Transitive",
"resolved": "1.4.0",
"contentHash": "MnHXttc0jHbRrGdTJ+yJBbGDoa4OXhtnKXHQw70foMyAooFtPScZX/dN+Nib47nuglc9Gt29Gfb5Zl+1lAuTeA=="
},
"Microsoft.Win32.Registry.AccessControl": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "1J6ooeZGeTSlM2vZdB1UHm9Y7vP8f/pS+Pd2JrqfjXLBZXrrby4rXBY6pP2k/Wb26CVm9TlEPjyWB2ryXT69LA=="
},
"SkiaSharp.NativeAssets.Linux": {
"type": "Transitive",
"resolved": "3.119.3-preview.1.1",
@@ -257,9 +445,61 @@
"type": "Transitive",
"resolved": "3.119.3-preview.1.1",
"contentHash": "PkMb1pGPBSW3ZL0IVKP9DZs+w065HVs4jGQELsbkmKzKSL5P8KHLkrrmnv2XpFpXtx2njOllB8243N1dBMK+CQ=="
},
"System.Diagnostics.EventLog": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "wugvy+pBVzjQEnRs9wMTWwoaeNFX3hsaHeVHFDIvJSWXp7wfmNWu3mxAwBIE6pyW+g6+rHa1Of5fTzb0QVqUTA=="
},
"System.DirectoryServices": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "1AbKZ7Jh/kN7U7BPf5fLWMXjaXeSCCSL8OLvs1aM2P4FJL1+BATcnIjhUgG3pcmII0aFN+tWS/rX0iBZkX9AVw=="
},
"System.Management": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "JhBVxvWhUJ0KAquUK0dMnc3a1Ol4JyH8fMrMQZ9GgEUkrtvPy8DE57SDnGnuvOdI0maJOdguxw87N5bh2eL87A==",
"dependencies": {
"System.CodeDom": "10.0.5"
}
},
"System.Security.Cryptography.Pkcs": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "BJEYUZfXpkPIHo2+oFoUemD5CPMFHPJOkRzXrbj/iZrWsjga3ypj8Rqd9bFlSLupEH4IIdD/aBWm/V1gCiBL9w=="
},
"System.Windows.Extensions": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "5hVP2TIgEqqA590MnKmMN5+Fgzl6xBRjR1wbgC3M1znrZZJe63TwBPN+ymaMgwT0vjsiXk95AjMAe8SAhhJSTg=="
}
},
"net10.0/linux-x64": {
"System.Management.Automation": {
"type": "Direct",
"requested": "[7.6.0, )",
"resolved": "7.6.0",
"contentHash": "S/AVZCBLZAsfZ+Oe29GuH45bi8Gi5inskQ4IE8Q5bvgtuF4AIwuXPkpnZK5nzF+9XDz+hF31yS8w1C15HvZhlg==",
"dependencies": {
"Microsoft.ApplicationInsights": "2.23.0",
"Microsoft.Management.Infrastructure": "3.0.0",
"Microsoft.PowerShell.CoreCLR.Eventing": "7.6.0",
"Microsoft.PowerShell.Native": "700.0.0-rc.1",
"Microsoft.Security.Extensions": "1.4.0",
"Microsoft.Win32.Registry.AccessControl": "10.0.5",
"Newtonsoft.Json": "13.0.4",
"System.CodeDom": "10.0.5",
"System.Configuration.ConfigurationManager": "10.0.5",
"System.Diagnostics.EventLog": "10.0.5",
"System.DirectoryServices": "10.0.5",
"System.Management": "10.0.5",
"System.Security.Cryptography.Pkcs": "10.0.5",
"System.Security.Cryptography.ProtectedData": "10.0.5",
"System.Security.Permissions": "10.0.5",
"System.Windows.Extensions": "10.0.5"
}
},
"Avalonia.Angle.Windows.Natives": {
"type": "Transitive",
"resolved": "2.1.25547.20250602",
@@ -288,6 +528,39 @@
"resolved": "8.3.1.3",
"contentHash": "bx8CE8Js+XGX8PUxAHCBDEORt5aaBYtMN4Hr9QFs57Xithh6yjUyYqksizH6eRDhJkwsGI+SXWmPmMm8lZC9Pw=="
},
"Microsoft.Management.Infrastructure.Runtime.Unix": {
"type": "Transitive",
"resolved": "3.0.0",
"contentHash": "QZE3uEDvZ0m7LabQvcmNOYHp7v1QPBVMpB/ild0WEE8zqUVAP5y9rRI5we37ImI1bQmW5pZ+3HNC70POPm0jBQ=="
},
"Microsoft.Management.Infrastructure.Runtime.Win": {
"type": "Transitive",
"resolved": "3.0.0",
"contentHash": "uwMyWN33+iQ8Wm/n1yoPXgFoiYNd0HzJyoqSVhaQZyJfaQrJR3udgcIHjqa1qbc3lS6kvfuUMN4TrF4U4refCQ=="
},
"Microsoft.PowerShell.CoreCLR.Eventing": {
"type": "Transitive",
"resolved": "7.6.0",
"contentHash": "bjNtp02ZuXhg6b28p6q+hoAhoSksHZ7cdVhCXX3vUqU0Zlvgl9FJlxFmGfL7ommIpIx/8j5eXO5Pth24LwDSnQ==",
"dependencies": {
"System.Diagnostics.EventLog": "10.0.5"
}
},
"Microsoft.PowerShell.Native": {
"type": "Transitive",
"resolved": "700.0.0-rc.1",
"contentHash": "lJOCErHTSWwCzfp3wgeyqhNRi4t43McDc0CHqlbt3Cj3OomiqPlNHQXujSbgd+0Ir6/8QAmvU/VOYgqCyMki6A=="
},
"Microsoft.Security.Extensions": {
"type": "Transitive",
"resolved": "1.4.0",
"contentHash": "MnHXttc0jHbRrGdTJ+yJBbGDoa4OXhtnKXHQw70foMyAooFtPScZX/dN+Nib47nuglc9Gt29Gfb5Zl+1lAuTeA=="
},
"Microsoft.Win32.Registry.AccessControl": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "1J6ooeZGeTSlM2vZdB1UHm9Y7vP8f/pS+Pd2JrqfjXLBZXrrby4rXBY6pP2k/Wb26CVm9TlEPjyWB2ryXT69LA=="
},
"SkiaSharp.NativeAssets.Linux": {
"type": "Transitive",
"resolved": "3.119.3-preview.1.1",
@@ -302,9 +575,61 @@
"type": "Transitive",
"resolved": "3.119.3-preview.1.1",
"contentHash": "PkMb1pGPBSW3ZL0IVKP9DZs+w065HVs4jGQELsbkmKzKSL5P8KHLkrrmnv2XpFpXtx2njOllB8243N1dBMK+CQ=="
},
"System.Diagnostics.EventLog": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "wugvy+pBVzjQEnRs9wMTWwoaeNFX3hsaHeVHFDIvJSWXp7wfmNWu3mxAwBIE6pyW+g6+rHa1Of5fTzb0QVqUTA=="
},
"System.DirectoryServices": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "1AbKZ7Jh/kN7U7BPf5fLWMXjaXeSCCSL8OLvs1aM2P4FJL1+BATcnIjhUgG3pcmII0aFN+tWS/rX0iBZkX9AVw=="
},
"System.Management": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "JhBVxvWhUJ0KAquUK0dMnc3a1Ol4JyH8fMrMQZ9GgEUkrtvPy8DE57SDnGnuvOdI0maJOdguxw87N5bh2eL87A==",
"dependencies": {
"System.CodeDom": "10.0.5"
}
},
"System.Security.Cryptography.Pkcs": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "BJEYUZfXpkPIHo2+oFoUemD5CPMFHPJOkRzXrbj/iZrWsjga3ypj8Rqd9bFlSLupEH4IIdD/aBWm/V1gCiBL9w=="
},
"System.Windows.Extensions": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "5hVP2TIgEqqA590MnKmMN5+Fgzl6xBRjR1wbgC3M1znrZZJe63TwBPN+ymaMgwT0vjsiXk95AjMAe8SAhhJSTg=="
}
},
"net10.0/osx-arm64": {
"System.Management.Automation": {
"type": "Direct",
"requested": "[7.6.0, )",
"resolved": "7.6.0",
"contentHash": "S/AVZCBLZAsfZ+Oe29GuH45bi8Gi5inskQ4IE8Q5bvgtuF4AIwuXPkpnZK5nzF+9XDz+hF31yS8w1C15HvZhlg==",
"dependencies": {
"Microsoft.ApplicationInsights": "2.23.0",
"Microsoft.Management.Infrastructure": "3.0.0",
"Microsoft.PowerShell.CoreCLR.Eventing": "7.6.0",
"Microsoft.PowerShell.Native": "700.0.0-rc.1",
"Microsoft.Security.Extensions": "1.4.0",
"Microsoft.Win32.Registry.AccessControl": "10.0.5",
"Newtonsoft.Json": "13.0.4",
"System.CodeDom": "10.0.5",
"System.Configuration.ConfigurationManager": "10.0.5",
"System.Diagnostics.EventLog": "10.0.5",
"System.DirectoryServices": "10.0.5",
"System.Management": "10.0.5",
"System.Security.Cryptography.Pkcs": "10.0.5",
"System.Security.Cryptography.ProtectedData": "10.0.5",
"System.Security.Permissions": "10.0.5",
"System.Windows.Extensions": "10.0.5"
}
},
"Avalonia.Angle.Windows.Natives": {
"type": "Transitive",
"resolved": "2.1.25547.20250602",
@@ -333,6 +658,39 @@
"resolved": "8.3.1.3",
"contentHash": "bx8CE8Js+XGX8PUxAHCBDEORt5aaBYtMN4Hr9QFs57Xithh6yjUyYqksizH6eRDhJkwsGI+SXWmPmMm8lZC9Pw=="
},
"Microsoft.Management.Infrastructure.Runtime.Unix": {
"type": "Transitive",
"resolved": "3.0.0",
"contentHash": "QZE3uEDvZ0m7LabQvcmNOYHp7v1QPBVMpB/ild0WEE8zqUVAP5y9rRI5we37ImI1bQmW5pZ+3HNC70POPm0jBQ=="
},
"Microsoft.Management.Infrastructure.Runtime.Win": {
"type": "Transitive",
"resolved": "3.0.0",
"contentHash": "uwMyWN33+iQ8Wm/n1yoPXgFoiYNd0HzJyoqSVhaQZyJfaQrJR3udgcIHjqa1qbc3lS6kvfuUMN4TrF4U4refCQ=="
},
"Microsoft.PowerShell.CoreCLR.Eventing": {
"type": "Transitive",
"resolved": "7.6.0",
"contentHash": "bjNtp02ZuXhg6b28p6q+hoAhoSksHZ7cdVhCXX3vUqU0Zlvgl9FJlxFmGfL7ommIpIx/8j5eXO5Pth24LwDSnQ==",
"dependencies": {
"System.Diagnostics.EventLog": "10.0.5"
}
},
"Microsoft.PowerShell.Native": {
"type": "Transitive",
"resolved": "700.0.0-rc.1",
"contentHash": "lJOCErHTSWwCzfp3wgeyqhNRi4t43McDc0CHqlbt3Cj3OomiqPlNHQXujSbgd+0Ir6/8QAmvU/VOYgqCyMki6A=="
},
"Microsoft.Security.Extensions": {
"type": "Transitive",
"resolved": "1.4.0",
"contentHash": "MnHXttc0jHbRrGdTJ+yJBbGDoa4OXhtnKXHQw70foMyAooFtPScZX/dN+Nib47nuglc9Gt29Gfb5Zl+1lAuTeA=="
},
"Microsoft.Win32.Registry.AccessControl": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "1J6ooeZGeTSlM2vZdB1UHm9Y7vP8f/pS+Pd2JrqfjXLBZXrrby4rXBY6pP2k/Wb26CVm9TlEPjyWB2ryXT69LA=="
},
"SkiaSharp.NativeAssets.Linux": {
"type": "Transitive",
"resolved": "3.119.3-preview.1.1",
@@ -347,9 +705,61 @@
"type": "Transitive",
"resolved": "3.119.3-preview.1.1",
"contentHash": "PkMb1pGPBSW3ZL0IVKP9DZs+w065HVs4jGQELsbkmKzKSL5P8KHLkrrmnv2XpFpXtx2njOllB8243N1dBMK+CQ=="
},
"System.Diagnostics.EventLog": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "wugvy+pBVzjQEnRs9wMTWwoaeNFX3hsaHeVHFDIvJSWXp7wfmNWu3mxAwBIE6pyW+g6+rHa1Of5fTzb0QVqUTA=="
},
"System.DirectoryServices": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "1AbKZ7Jh/kN7U7BPf5fLWMXjaXeSCCSL8OLvs1aM2P4FJL1+BATcnIjhUgG3pcmII0aFN+tWS/rX0iBZkX9AVw=="
},
"System.Management": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "JhBVxvWhUJ0KAquUK0dMnc3a1Ol4JyH8fMrMQZ9GgEUkrtvPy8DE57SDnGnuvOdI0maJOdguxw87N5bh2eL87A==",
"dependencies": {
"System.CodeDom": "10.0.5"
}
},
"System.Security.Cryptography.Pkcs": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "BJEYUZfXpkPIHo2+oFoUemD5CPMFHPJOkRzXrbj/iZrWsjga3ypj8Rqd9bFlSLupEH4IIdD/aBWm/V1gCiBL9w=="
},
"System.Windows.Extensions": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "5hVP2TIgEqqA590MnKmMN5+Fgzl6xBRjR1wbgC3M1znrZZJe63TwBPN+ymaMgwT0vjsiXk95AjMAe8SAhhJSTg=="
}
},
"net10.0/osx-x64": {
"System.Management.Automation": {
"type": "Direct",
"requested": "[7.6.0, )",
"resolved": "7.6.0",
"contentHash": "S/AVZCBLZAsfZ+Oe29GuH45bi8Gi5inskQ4IE8Q5bvgtuF4AIwuXPkpnZK5nzF+9XDz+hF31yS8w1C15HvZhlg==",
"dependencies": {
"Microsoft.ApplicationInsights": "2.23.0",
"Microsoft.Management.Infrastructure": "3.0.0",
"Microsoft.PowerShell.CoreCLR.Eventing": "7.6.0",
"Microsoft.PowerShell.Native": "700.0.0-rc.1",
"Microsoft.Security.Extensions": "1.4.0",
"Microsoft.Win32.Registry.AccessControl": "10.0.5",
"Newtonsoft.Json": "13.0.4",
"System.CodeDom": "10.0.5",
"System.Configuration.ConfigurationManager": "10.0.5",
"System.Diagnostics.EventLog": "10.0.5",
"System.DirectoryServices": "10.0.5",
"System.Management": "10.0.5",
"System.Security.Cryptography.Pkcs": "10.0.5",
"System.Security.Cryptography.ProtectedData": "10.0.5",
"System.Security.Permissions": "10.0.5",
"System.Windows.Extensions": "10.0.5"
}
},
"Avalonia.Angle.Windows.Natives": {
"type": "Transitive",
"resolved": "2.1.25547.20250602",
@@ -378,6 +788,39 @@
"resolved": "8.3.1.3",
"contentHash": "bx8CE8Js+XGX8PUxAHCBDEORt5aaBYtMN4Hr9QFs57Xithh6yjUyYqksizH6eRDhJkwsGI+SXWmPmMm8lZC9Pw=="
},
"Microsoft.Management.Infrastructure.Runtime.Unix": {
"type": "Transitive",
"resolved": "3.0.0",
"contentHash": "QZE3uEDvZ0m7LabQvcmNOYHp7v1QPBVMpB/ild0WEE8zqUVAP5y9rRI5we37ImI1bQmW5pZ+3HNC70POPm0jBQ=="
},
"Microsoft.Management.Infrastructure.Runtime.Win": {
"type": "Transitive",
"resolved": "3.0.0",
"contentHash": "uwMyWN33+iQ8Wm/n1yoPXgFoiYNd0HzJyoqSVhaQZyJfaQrJR3udgcIHjqa1qbc3lS6kvfuUMN4TrF4U4refCQ=="
},
"Microsoft.PowerShell.CoreCLR.Eventing": {
"type": "Transitive",
"resolved": "7.6.0",
"contentHash": "bjNtp02ZuXhg6b28p6q+hoAhoSksHZ7cdVhCXX3vUqU0Zlvgl9FJlxFmGfL7ommIpIx/8j5eXO5Pth24LwDSnQ==",
"dependencies": {
"System.Diagnostics.EventLog": "10.0.5"
}
},
"Microsoft.PowerShell.Native": {
"type": "Transitive",
"resolved": "700.0.0-rc.1",
"contentHash": "lJOCErHTSWwCzfp3wgeyqhNRi4t43McDc0CHqlbt3Cj3OomiqPlNHQXujSbgd+0Ir6/8QAmvU/VOYgqCyMki6A=="
},
"Microsoft.Security.Extensions": {
"type": "Transitive",
"resolved": "1.4.0",
"contentHash": "MnHXttc0jHbRrGdTJ+yJBbGDoa4OXhtnKXHQw70foMyAooFtPScZX/dN+Nib47nuglc9Gt29Gfb5Zl+1lAuTeA=="
},
"Microsoft.Win32.Registry.AccessControl": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "1J6ooeZGeTSlM2vZdB1UHm9Y7vP8f/pS+Pd2JrqfjXLBZXrrby4rXBY6pP2k/Wb26CVm9TlEPjyWB2ryXT69LA=="
},
"SkiaSharp.NativeAssets.Linux": {
"type": "Transitive",
"resolved": "3.119.3-preview.1.1",
@@ -392,9 +835,61 @@
"type": "Transitive",
"resolved": "3.119.3-preview.1.1",
"contentHash": "PkMb1pGPBSW3ZL0IVKP9DZs+w065HVs4jGQELsbkmKzKSL5P8KHLkrrmnv2XpFpXtx2njOllB8243N1dBMK+CQ=="
},
"System.Diagnostics.EventLog": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "wugvy+pBVzjQEnRs9wMTWwoaeNFX3hsaHeVHFDIvJSWXp7wfmNWu3mxAwBIE6pyW+g6+rHa1Of5fTzb0QVqUTA=="
},
"System.DirectoryServices": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "1AbKZ7Jh/kN7U7BPf5fLWMXjaXeSCCSL8OLvs1aM2P4FJL1+BATcnIjhUgG3pcmII0aFN+tWS/rX0iBZkX9AVw=="
},
"System.Management": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "JhBVxvWhUJ0KAquUK0dMnc3a1Ol4JyH8fMrMQZ9GgEUkrtvPy8DE57SDnGnuvOdI0maJOdguxw87N5bh2eL87A==",
"dependencies": {
"System.CodeDom": "10.0.5"
}
},
"System.Security.Cryptography.Pkcs": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "BJEYUZfXpkPIHo2+oFoUemD5CPMFHPJOkRzXrbj/iZrWsjga3ypj8Rqd9bFlSLupEH4IIdD/aBWm/V1gCiBL9w=="
},
"System.Windows.Extensions": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "5hVP2TIgEqqA590MnKmMN5+Fgzl6xBRjR1wbgC3M1znrZZJe63TwBPN+ymaMgwT0vjsiXk95AjMAe8SAhhJSTg=="
}
},
"net10.0/win-arm64": {
"System.Management.Automation": {
"type": "Direct",
"requested": "[7.6.0, )",
"resolved": "7.6.0",
"contentHash": "S/AVZCBLZAsfZ+Oe29GuH45bi8Gi5inskQ4IE8Q5bvgtuF4AIwuXPkpnZK5nzF+9XDz+hF31yS8w1C15HvZhlg==",
"dependencies": {
"Microsoft.ApplicationInsights": "2.23.0",
"Microsoft.Management.Infrastructure": "3.0.0",
"Microsoft.PowerShell.CoreCLR.Eventing": "7.6.0",
"Microsoft.PowerShell.Native": "700.0.0-rc.1",
"Microsoft.Security.Extensions": "1.4.0",
"Microsoft.Win32.Registry.AccessControl": "10.0.5",
"Newtonsoft.Json": "13.0.4",
"System.CodeDom": "10.0.5",
"System.Configuration.ConfigurationManager": "10.0.5",
"System.Diagnostics.EventLog": "10.0.5",
"System.DirectoryServices": "10.0.5",
"System.Management": "10.0.5",
"System.Security.Cryptography.Pkcs": "10.0.5",
"System.Security.Cryptography.ProtectedData": "10.0.5",
"System.Security.Permissions": "10.0.5",
"System.Windows.Extensions": "10.0.5"
}
},
"Avalonia.Angle.Windows.Natives": {
"type": "Transitive",
"resolved": "2.1.25547.20250602",
@@ -423,6 +918,39 @@
"resolved": "8.3.1.3",
"contentHash": "bx8CE8Js+XGX8PUxAHCBDEORt5aaBYtMN4Hr9QFs57Xithh6yjUyYqksizH6eRDhJkwsGI+SXWmPmMm8lZC9Pw=="
},
"Microsoft.Management.Infrastructure.Runtime.Unix": {
"type": "Transitive",
"resolved": "3.0.0",
"contentHash": "QZE3uEDvZ0m7LabQvcmNOYHp7v1QPBVMpB/ild0WEE8zqUVAP5y9rRI5we37ImI1bQmW5pZ+3HNC70POPm0jBQ=="
},
"Microsoft.Management.Infrastructure.Runtime.Win": {
"type": "Transitive",
"resolved": "3.0.0",
"contentHash": "uwMyWN33+iQ8Wm/n1yoPXgFoiYNd0HzJyoqSVhaQZyJfaQrJR3udgcIHjqa1qbc3lS6kvfuUMN4TrF4U4refCQ=="
},
"Microsoft.PowerShell.CoreCLR.Eventing": {
"type": "Transitive",
"resolved": "7.6.0",
"contentHash": "bjNtp02ZuXhg6b28p6q+hoAhoSksHZ7cdVhCXX3vUqU0Zlvgl9FJlxFmGfL7ommIpIx/8j5eXO5Pth24LwDSnQ==",
"dependencies": {
"System.Diagnostics.EventLog": "10.0.5"
}
},
"Microsoft.PowerShell.Native": {
"type": "Transitive",
"resolved": "700.0.0-rc.1",
"contentHash": "lJOCErHTSWwCzfp3wgeyqhNRi4t43McDc0CHqlbt3Cj3OomiqPlNHQXujSbgd+0Ir6/8QAmvU/VOYgqCyMki6A=="
},
"Microsoft.Security.Extensions": {
"type": "Transitive",
"resolved": "1.4.0",
"contentHash": "MnHXttc0jHbRrGdTJ+yJBbGDoa4OXhtnKXHQw70foMyAooFtPScZX/dN+Nib47nuglc9Gt29Gfb5Zl+1lAuTeA=="
},
"Microsoft.Win32.Registry.AccessControl": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "1J6ooeZGeTSlM2vZdB1UHm9Y7vP8f/pS+Pd2JrqfjXLBZXrrby4rXBY6pP2k/Wb26CVm9TlEPjyWB2ryXT69LA=="
},
"SkiaSharp.NativeAssets.Linux": {
"type": "Transitive",
"resolved": "3.119.3-preview.1.1",
@@ -437,9 +965,61 @@
"type": "Transitive",
"resolved": "3.119.3-preview.1.1",
"contentHash": "PkMb1pGPBSW3ZL0IVKP9DZs+w065HVs4jGQELsbkmKzKSL5P8KHLkrrmnv2XpFpXtx2njOllB8243N1dBMK+CQ=="
},
"System.Diagnostics.EventLog": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "wugvy+pBVzjQEnRs9wMTWwoaeNFX3hsaHeVHFDIvJSWXp7wfmNWu3mxAwBIE6pyW+g6+rHa1Of5fTzb0QVqUTA=="
},
"System.DirectoryServices": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "1AbKZ7Jh/kN7U7BPf5fLWMXjaXeSCCSL8OLvs1aM2P4FJL1+BATcnIjhUgG3pcmII0aFN+tWS/rX0iBZkX9AVw=="
},
"System.Management": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "JhBVxvWhUJ0KAquUK0dMnc3a1Ol4JyH8fMrMQZ9GgEUkrtvPy8DE57SDnGnuvOdI0maJOdguxw87N5bh2eL87A==",
"dependencies": {
"System.CodeDom": "10.0.5"
}
},
"System.Security.Cryptography.Pkcs": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "BJEYUZfXpkPIHo2+oFoUemD5CPMFHPJOkRzXrbj/iZrWsjga3ypj8Rqd9bFlSLupEH4IIdD/aBWm/V1gCiBL9w=="
},
"System.Windows.Extensions": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "5hVP2TIgEqqA590MnKmMN5+Fgzl6xBRjR1wbgC3M1znrZZJe63TwBPN+ymaMgwT0vjsiXk95AjMAe8SAhhJSTg=="
}
},
"net10.0/win-x64": {
"System.Management.Automation": {
"type": "Direct",
"requested": "[7.6.0, )",
"resolved": "7.6.0",
"contentHash": "S/AVZCBLZAsfZ+Oe29GuH45bi8Gi5inskQ4IE8Q5bvgtuF4AIwuXPkpnZK5nzF+9XDz+hF31yS8w1C15HvZhlg==",
"dependencies": {
"Microsoft.ApplicationInsights": "2.23.0",
"Microsoft.Management.Infrastructure": "3.0.0",
"Microsoft.PowerShell.CoreCLR.Eventing": "7.6.0",
"Microsoft.PowerShell.Native": "700.0.0-rc.1",
"Microsoft.Security.Extensions": "1.4.0",
"Microsoft.Win32.Registry.AccessControl": "10.0.5",
"Newtonsoft.Json": "13.0.4",
"System.CodeDom": "10.0.5",
"System.Configuration.ConfigurationManager": "10.0.5",
"System.Diagnostics.EventLog": "10.0.5",
"System.DirectoryServices": "10.0.5",
"System.Management": "10.0.5",
"System.Security.Cryptography.Pkcs": "10.0.5",
"System.Security.Cryptography.ProtectedData": "10.0.5",
"System.Security.Permissions": "10.0.5",
"System.Windows.Extensions": "10.0.5"
}
},
"Avalonia.Angle.Windows.Natives": {
"type": "Transitive",
"resolved": "2.1.25547.20250602",
@@ -468,6 +1048,39 @@
"resolved": "8.3.1.3",
"contentHash": "bx8CE8Js+XGX8PUxAHCBDEORt5aaBYtMN4Hr9QFs57Xithh6yjUyYqksizH6eRDhJkwsGI+SXWmPmMm8lZC9Pw=="
},
"Microsoft.Management.Infrastructure.Runtime.Unix": {
"type": "Transitive",
"resolved": "3.0.0",
"contentHash": "QZE3uEDvZ0m7LabQvcmNOYHp7v1QPBVMpB/ild0WEE8zqUVAP5y9rRI5we37ImI1bQmW5pZ+3HNC70POPm0jBQ=="
},
"Microsoft.Management.Infrastructure.Runtime.Win": {
"type": "Transitive",
"resolved": "3.0.0",
"contentHash": "uwMyWN33+iQ8Wm/n1yoPXgFoiYNd0HzJyoqSVhaQZyJfaQrJR3udgcIHjqa1qbc3lS6kvfuUMN4TrF4U4refCQ=="
},
"Microsoft.PowerShell.CoreCLR.Eventing": {
"type": "Transitive",
"resolved": "7.6.0",
"contentHash": "bjNtp02ZuXhg6b28p6q+hoAhoSksHZ7cdVhCXX3vUqU0Zlvgl9FJlxFmGfL7ommIpIx/8j5eXO5Pth24LwDSnQ==",
"dependencies": {
"System.Diagnostics.EventLog": "10.0.5"
}
},
"Microsoft.PowerShell.Native": {
"type": "Transitive",
"resolved": "700.0.0-rc.1",
"contentHash": "lJOCErHTSWwCzfp3wgeyqhNRi4t43McDc0CHqlbt3Cj3OomiqPlNHQXujSbgd+0Ir6/8QAmvU/VOYgqCyMki6A=="
},
"Microsoft.Security.Extensions": {
"type": "Transitive",
"resolved": "1.4.0",
"contentHash": "MnHXttc0jHbRrGdTJ+yJBbGDoa4OXhtnKXHQw70foMyAooFtPScZX/dN+Nib47nuglc9Gt29Gfb5Zl+1lAuTeA=="
},
"Microsoft.Win32.Registry.AccessControl": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "1J6ooeZGeTSlM2vZdB1UHm9Y7vP8f/pS+Pd2JrqfjXLBZXrrby4rXBY6pP2k/Wb26CVm9TlEPjyWB2ryXT69LA=="
},
"SkiaSharp.NativeAssets.Linux": {
"type": "Transitive",
"resolved": "3.119.3-preview.1.1",
@@ -482,6 +1095,34 @@
"type": "Transitive",
"resolved": "3.119.3-preview.1.1",
"contentHash": "PkMb1pGPBSW3ZL0IVKP9DZs+w065HVs4jGQELsbkmKzKSL5P8KHLkrrmnv2XpFpXtx2njOllB8243N1dBMK+CQ=="
},
"System.Diagnostics.EventLog": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "wugvy+pBVzjQEnRs9wMTWwoaeNFX3hsaHeVHFDIvJSWXp7wfmNWu3mxAwBIE6pyW+g6+rHa1Of5fTzb0QVqUTA=="
},
"System.DirectoryServices": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "1AbKZ7Jh/kN7U7BPf5fLWMXjaXeSCCSL8OLvs1aM2P4FJL1+BATcnIjhUgG3pcmII0aFN+tWS/rX0iBZkX9AVw=="
},
"System.Management": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "JhBVxvWhUJ0KAquUK0dMnc3a1Ol4JyH8fMrMQZ9GgEUkrtvPy8DE57SDnGnuvOdI0maJOdguxw87N5bh2eL87A==",
"dependencies": {
"System.CodeDom": "10.0.5"
}
},
"System.Security.Cryptography.Pkcs": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "BJEYUZfXpkPIHo2+oFoUemD5CPMFHPJOkRzXrbj/iZrWsjga3ypj8Rqd9bFlSLupEH4IIdD/aBWm/V1gCiBL9w=="
},
"System.Windows.Extensions": {
"type": "Transitive",
"resolved": "10.0.5",
"contentHash": "5hVP2TIgEqqA590MnKmMN5+Fgzl6xBRjR1wbgC3M1znrZZJe63TwBPN+ymaMgwT0vjsiXk95AjMAe8SAhhJSTg=="
}
}
}
OutGridTree/OutGridTree.cs +66 -9
diff --git a/OutGridTree/OutGridTree.cs b/OutGridTree/OutGridTree.cs
index f4f5d66..ecdc804 100644
@@ -1,5 +1,10 @@
using System;
using System.Diagnostics;
using System.IO;
using System.IO.Pipes;
using System.Management.Automation;
using System.Management.Automation.Internal;
using System.Text;
namespace OutGridTree;
@@ -7,31 +12,83 @@ namespace OutGridTree;
[Alias("ogt")]
public sealed class OutGridTree : Cmdlet
{
[Parameter(Mandatory = true, Position = 0, ValueFromPipeline = true)]
[Parameter(ValueFromPipeline = true)]
public PSObject InputObject { get; set; } = AutomationNull.Value;
[Parameter(Mandatory = true)]
public string WindowExe { get; set; } = "";
#nullable disable
private NamedPipeServerStream pipe;
private Process windowProcess;
private StreamWriter writer;
#nullable restore
protected override void BeginProcessing()
{
// TODO: Open window
var pipeName = Path.GetTempFileName();
pipe = new(pipeName, PipeDirection.Out);
windowProcess = Process.Start(
new ProcessStartInfo()
{
FileName = WindowExe,
Arguments = pipeName,
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
}
);
pipe.WaitForConnection();
writer = new(pipe);
}
protected override void ProcessRecord()
{
// TODO: Add record to window
WriteDebug($"Processing record: {InputObject}");
if (!pipe.IsConnected)
{
TerminateDueToWindowClosed();
return;
}
try
{
writer.WriteLine(Convert.ToBase64String(Encoding.UTF8.GetBytes(PSSerializer.Serialize(InputObject))));
}
catch (IOException)
{
TerminateDueToWindowClosed();
return;
}
}
private void TerminateDueToWindowClosed() =>
ThrowTerminatingError(
new(new InvalidOperationException("Window closed"), "WindowClosed", ErrorCategory.InvalidOperation, null)
);
protected override void EndProcessing()
{
// TODO: Wait for window to close
WriteDebug("End processing");
WriteDebug("Exited");
if (pipe.IsConnected)
{
writer.Flush();
}
}
protected override void StopProcessing()
{
// TODO: Close window
WriteDebug("Stop processing");
WriteDebug("Shutdown");
if (pipe.IsConnected)
{
pipe?.Close();
pipe?.Disconnect();
}
pipe?.Dispose();
if (!windowProcess.HasExited)
{
windowProcess?.Close();
}
windowProcess?.Dispose();
}
}
README.md +2 -0
diff --git a/README.md b/README.md
index 4f873fd..ac56b88 100644
@@ -1,3 +1,5 @@
# Out-GridTree
A cross-platform alternative to `Out-GridView` with expandable rows.
[![Screenshot of Out-GridTree window](./docs/screenshot.png)](./docs/screenshot.png)
docs/screenshot.png +0 -0
diff --git a/docs/screenshot.png b/docs/screenshot.png
new file mode 100644
index 0000000..1ec61c0
Binary files /dev/null and b/docs/screenshot.png differ