From 0f190a3f26ab84801229b33b1fb96bb61c46e74b Mon Sep 17 00:00:00 2001 From: programmingPug <36635276+programmingPug@users.noreply.github.com> Date: Tue, 14 Jan 2025 14:47:10 -0500 Subject: [PATCH] Major rewrite --- .gitignore | 3 + .../Controllers/DeviceController.cs | 115 + .../Controllers/SoilMoistureController.cs | 96 + .../Data/SoilMoisture.db | Bin 32768 -> 36864 bytes SoilMoistureAPI/Data/SoilMoistureContext.cs | 29 + SoilMoistureAPI/Dockerfile | 34 + .../Middleware/ApiKeyMiddleware.cs | 44 + .../20250109170429_InitialCreate.Designer.cs | 79 + .../20250109170429_InitialCreate.cs | 63 + .../SoilMoistureContextModelSnapshot.cs | 76 + SoilMoistureAPI/Models/Device.cs | 18 + SoilMoistureAPI/Models/DeviceDto.cs | 8 + SoilMoistureAPI/Models/SoilMoisture.cs | 24 + SoilMoistureAPI/Models/SoilMoistureDto.cs | 8 + SoilMoistureAPI/Program.cs | 70 + .../Properties/launchSettings.json | 23 + .../SoilMoistureAPI.csproj | 14 +- SoilMoistureAPI/SoilMoistureAPI.csproj.user | 9 + SoilMoistureAPI/SoilMoistureAPI.http | 64 + SoilMoistureAPI/SoilMoistureAPI.sln | 22 + SoilMoistureAPI/SoilMoistureAPI.xml | 32 + .../appsettings.Development.json | 0 SoilMoistureAPI/appsettings.json | 12 + docker-compose.yml | 35 + .../DesignTimeBuild/.dtbcache.v2 | Bin 166030 -> 0 bytes .../.vs/house-plant-api/v17/.futdcache.v1 | Bin 138 -> 0 bytes house-plant-api/.vs/house-plant-api/v17/.suo | Bin 71680 -> 0 bytes house-plant-api/Context/AppDbContext.cs | 31 - .../Controllers/SoilMoistureController.cs | 108 - house-plant-api/Models/Device.cs | 14 - house-plant-api/Program.cs | 51 - .../Properties/launchSettings.json | 31 - house-plant-api/Services/BluetoothService.cs | 53 - .../Services/CachedBluetoothService.cs | 101 - .../Services/DevicePollingService.cs | 103 - house-plant-api/appsettings.json | 9 - house-plant-api/devices.db | Bin 4096 -> 0 bytes house-plant-api/devices.db-wal | Bin 222512 -> 0 bytes house-plant-api/house-plant-api.sln | 25 - ...CoreApp,Version=v6.0.AssemblyAttributes.cs | 4 - .../net6.0/house-plant-api.AssemblyInfo.cs | 23 - .../house-plant-api.AssemblyInfoInputs.cache | 1 - ....GeneratedMSBuildEditorConfig.editorconfig | 21 - .../net6.0/house-plant-api.GlobalUsings.g.cs | 17 - .../Debug/net6.0/house-plant-api.assets.cache | Bin 18282 -> 0 bytes ...e-plant-api.csproj.AssemblyReference.cache | Bin 7737 -> 0 bytes .../house-plant-api.csproj.nuget.dgspec.json | 112 - .../obj/house-plant-api.csproj.nuget.g.props | 24 - .../house-plant-api.csproj.nuget.g.targets | 10 - house-plant-api/obj/project.assets.json | 3984 ----------------- house-plant-api/obj/project.nuget.cache | 67 - plant-browser/.vscode/extensions.json | 4 - plant-browser/.vscode/launch.json | 20 - plant-browser/.vscode/tasks.json | 42 - plant-browser/Dockerfile | 25 + plant-browser/angular.json | 8 +- plant-browser/nginx.conf | 45 + .../src/app/services/soil-data.service.ts | 19 +- .../src/environments/environment.prod.ts | 4 + plant-browser/src/environments/environment.ts | 4 + 60 files changed, 966 insertions(+), 4872 deletions(-) create mode 100644 SoilMoistureAPI/Controllers/DeviceController.cs create mode 100644 SoilMoistureAPI/Controllers/SoilMoistureController.cs rename house-plant-api/devices.db-shm => SoilMoistureAPI/Data/SoilMoisture.db (86%) create mode 100644 SoilMoistureAPI/Data/SoilMoistureContext.cs create mode 100644 SoilMoistureAPI/Dockerfile create mode 100644 SoilMoistureAPI/Middleware/ApiKeyMiddleware.cs create mode 100644 SoilMoistureAPI/Migrations/20250109170429_InitialCreate.Designer.cs create mode 100644 SoilMoistureAPI/Migrations/20250109170429_InitialCreate.cs create mode 100644 SoilMoistureAPI/Migrations/SoilMoistureContextModelSnapshot.cs create mode 100644 SoilMoistureAPI/Models/Device.cs create mode 100644 SoilMoistureAPI/Models/DeviceDto.cs create mode 100644 SoilMoistureAPI/Models/SoilMoisture.cs create mode 100644 SoilMoistureAPI/Models/SoilMoistureDto.cs create mode 100644 SoilMoistureAPI/Program.cs create mode 100644 SoilMoistureAPI/Properties/launchSettings.json rename house-plant-api/house-plant-api.csproj => SoilMoistureAPI/SoilMoistureAPI.csproj (51%) create mode 100644 SoilMoistureAPI/SoilMoistureAPI.csproj.user create mode 100644 SoilMoistureAPI/SoilMoistureAPI.http create mode 100644 SoilMoistureAPI/SoilMoistureAPI.sln create mode 100644 SoilMoistureAPI/SoilMoistureAPI.xml rename {house-plant-api => SoilMoistureAPI}/appsettings.Development.json (100%) create mode 100644 SoilMoistureAPI/appsettings.json create mode 100644 docker-compose.yml delete mode 100644 house-plant-api/.vs/house-plant-api/DesignTimeBuild/.dtbcache.v2 delete mode 100644 house-plant-api/.vs/house-plant-api/v17/.futdcache.v1 delete mode 100644 house-plant-api/.vs/house-plant-api/v17/.suo delete mode 100644 house-plant-api/Context/AppDbContext.cs delete mode 100644 house-plant-api/Controllers/SoilMoistureController.cs delete mode 100644 house-plant-api/Models/Device.cs delete mode 100644 house-plant-api/Program.cs delete mode 100644 house-plant-api/Properties/launchSettings.json delete mode 100644 house-plant-api/Services/BluetoothService.cs delete mode 100644 house-plant-api/Services/CachedBluetoothService.cs delete mode 100644 house-plant-api/Services/DevicePollingService.cs delete mode 100644 house-plant-api/appsettings.json delete mode 100644 house-plant-api/devices.db delete mode 100644 house-plant-api/devices.db-wal delete mode 100644 house-plant-api/house-plant-api.sln delete mode 100644 house-plant-api/obj/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs delete mode 100644 house-plant-api/obj/Debug/net6.0/house-plant-api.AssemblyInfo.cs delete mode 100644 house-plant-api/obj/Debug/net6.0/house-plant-api.AssemblyInfoInputs.cache delete mode 100644 house-plant-api/obj/Debug/net6.0/house-plant-api.GeneratedMSBuildEditorConfig.editorconfig delete mode 100644 house-plant-api/obj/Debug/net6.0/house-plant-api.GlobalUsings.g.cs delete mode 100644 house-plant-api/obj/Debug/net6.0/house-plant-api.assets.cache delete mode 100644 house-plant-api/obj/Debug/net6.0/house-plant-api.csproj.AssemblyReference.cache delete mode 100644 house-plant-api/obj/house-plant-api.csproj.nuget.dgspec.json delete mode 100644 house-plant-api/obj/house-plant-api.csproj.nuget.g.props delete mode 100644 house-plant-api/obj/house-plant-api.csproj.nuget.g.targets delete mode 100644 house-plant-api/obj/project.assets.json delete mode 100644 house-plant-api/obj/project.nuget.cache delete mode 100644 plant-browser/.vscode/extensions.json delete mode 100644 plant-browser/.vscode/launch.json delete mode 100644 plant-browser/.vscode/tasks.json create mode 100644 plant-browser/Dockerfile create mode 100644 plant-browser/nginx.conf create mode 100644 plant-browser/src/environments/environment.prod.ts create mode 100644 plant-browser/src/environments/environment.ts diff --git a/.gitignore b/.gitignore index 8f89c7a..4534548 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ /house-plant-api/bin /house-plant-api/obj /house-plant-api/.vs +/SoilMoistureAPI/.vs +/SoilMoistureAPI/bin +/SoilMoistureAPI/obj diff --git a/SoilMoistureAPI/Controllers/DeviceController.cs b/SoilMoistureAPI/Controllers/DeviceController.cs new file mode 100644 index 0000000..fb0dd96 --- /dev/null +++ b/SoilMoistureAPI/Controllers/DeviceController.cs @@ -0,0 +1,115 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using SoilMoistureAPI.Data; +using SoilMoistureAPI.Models; +using System.Threading.Tasks; + +namespace SoilMoistureAPI.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class DeviceController : ControllerBase + { + private readonly SoilMoistureContext _context; + + public DeviceController(SoilMoistureContext context) + { + _context = context; + } + + // POST: api/Device + [HttpPost] + public async Task> CreateDevice(Device device) + { + if (device == null || string.IsNullOrEmpty(device.DeviceId)) + { + return BadRequest("Invalid device data."); + } + + // Check if device already exists + var existingDevice = await _context.Devices.FindAsync(device.DeviceId); + if (existingDevice != null) + { + return Conflict("Device with the same DeviceId already exists."); + } + + _context.Devices.Add(device); + await _context.SaveChangesAsync(); + + return CreatedAtAction(nameof(GetDevice), new { id = device.DeviceId }, device); + } + + // GET: api/Device/{id} + [HttpGet("{id}")] + public async Task> GetDevice(string id) + { + var device = await _context.Devices + .Include(d => d.SoilMoistures) + .FirstOrDefaultAsync(d => d.DeviceId == id); + + if (device == null) + { + return NotFound(); + } + + return device; + } + + // PUT: api/Device/{id}/nickname + [HttpPut("{id}/nickname")] + public async Task UpdateNickname(string id, [FromBody] string newNickname) + { + if (string.IsNullOrEmpty(newNickname)) + { + return BadRequest("Nickname cannot be empty."); + } + + var device = await _context.Devices.FindAsync(id); + if (device == null) + { + return NotFound("Device not found."); + } + + device.Nickname = newNickname; + _context.Entry(device).State = EntityState.Modified; + + try + { + await _context.SaveChangesAsync(); + return NoContent(); // 204 No Content + } + catch (DbUpdateConcurrencyException) + { + if (!DeviceExists(id)) + { + return NotFound("Device not found."); + } + else + { + throw; + } + } + } + + // DELETE: api/Device/{id} + [HttpDelete("{id}")] + public async Task DeleteDevice(string id) + { + var device = await _context.Devices.FindAsync(id); + if (device == null) + { + return NotFound("Device not found."); + } + + _context.Devices.Remove(device); + await _context.SaveChangesAsync(); + + return NoContent(); // 204 No Content + } + + private bool DeviceExists(string id) + { + return _context.Devices.Any(e => e.DeviceId == id); + } + } +} diff --git a/SoilMoistureAPI/Controllers/SoilMoistureController.cs b/SoilMoistureAPI/Controllers/SoilMoistureController.cs new file mode 100644 index 0000000..e93da9c --- /dev/null +++ b/SoilMoistureAPI/Controllers/SoilMoistureController.cs @@ -0,0 +1,96 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using SoilMoistureAPI.Data; +using SoilMoistureAPI.Models; + +namespace SoilMoistureAPI.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class SoilMoistureController : ControllerBase + { + private readonly SoilMoistureContext _context; + + public SoilMoistureController(SoilMoistureContext context) + { + _context = context; + } + + // POST: api/SoilMoisture + [HttpPost] + public async Task PostSoilMoisture([FromBody] SoilMoistureDto data) + { + if (data == null) + { + return BadRequest("No data received."); + } + + // Basic validation: ensure required fields are provided. + if (string.IsNullOrEmpty(data.DeviceId)) + { + ModelState.AddModelError("DeviceId", "The DeviceId field is required."); + } + // You might also want to validate moisture level here. + if (!ModelState.IsValid) + { + return BadRequest(ModelState); + } + + // Check if a record for this device already exists + var existingRecord = await _context.SoilMoistures + .Include(sm => sm.Device) + .FirstOrDefaultAsync(sm => sm.DeviceId == data.DeviceId); + + if (existingRecord != null) + { + // Update the existing record + existingRecord.MoistureLevel = data.MoistureLevel; + existingRecord.Timestamp = DateTime.UtcNow; + + _context.SoilMoistures.Update(existingRecord); + await _context.SaveChangesAsync(); + return Ok(existingRecord); + } + else + { + // Create a new record + var newRecord = new SoilMoisture + { + DeviceId = data.DeviceId, + MoistureLevel = data.MoistureLevel, + Timestamp = DateTime.UtcNow, + Device = new Device + { + DeviceId = data.DeviceId, + Nickname = "Dave" + } + }; + + _context.SoilMoistures.Add(newRecord); + await _context.SaveChangesAsync(); + return Ok(newRecord); + } + } + + // GET: api/SoilMoisture/5 + [HttpGet("{id}")] + public async Task> GetSoilMoisture(int id) + { + var soilMoisture = await _context.SoilMoistures.FindAsync(id); + + if (soilMoisture == null) + { + return NotFound(); + } + + return soilMoisture; + } + + // GET: api/SoilMoisture + [HttpGet] + public async Task>> GetSoilMoistures() + { + return await _context.SoilMoistures.ToListAsync(); + } + } +} \ No newline at end of file diff --git a/house-plant-api/devices.db-shm b/SoilMoistureAPI/Data/SoilMoisture.db similarity index 86% rename from house-plant-api/devices.db-shm rename to SoilMoistureAPI/Data/SoilMoisture.db index 4710d5be4f78cbb61bf1c3ffe4b10bac05efa34c..747bf13ef8193b88bfda0749fc66eba5907dd286 100644 GIT binary patch literal 36864 zcmeI(Z%ZRb9KiA2cqW=7=M@V3KuU+D;06D%tF~#R(57*`F2;>b)009ILKmY**5cq!ueqPEMpReh|4}#vg|D$u-YW9QfQ9lTytAQW3_Wd_O z$9K+Cwae9ptaws5?!G(~=G;c6sJp^UH8sTxa~#tw9_O;g`nrA=wZHB9;bm9-BHjx9 z%PYUvnZ8^~`t&Ma)})xa_eHOL;cuvx#p}1(oUyj1|F$!Vnd&=rkxRw9GswJ9#dOY1 zm82(M%7$?3o^VfUHBqg*O|MZ=^};+pOnaH)xZxaC8fW5Ao{7qdS9e_1(UEk$jhm2@ z8XpSc3;+{S_aihvs&4g`Qq^XCplwvRUiI3!oNv1Ob&}_ z@T67+z1L-0d(!Ndb7JQPo!9X?m~zP%Hy5);WmVTkD?C{_?W?Fix}KoeN$BkGB$G2r zCH>kNWzlNMgQMX4K|2ciz3?mbVDtw+&8%EVXE^hoNxqYi@fu4lh3S;%#JLM_Jm{Za zb)r}PAXG!0ikdGv3t8iv(maNly|nC^)$ty9DgH4vtmrwzw)N}H8C11?=XJVyT$8yE zDZW7o72f^nyW2tP5!^^Z&3kAH`C=hXKJ5I_I{1Q0*~0R#|0 z0D*T9h~NK@|NozY00IagfB*srAb#jr2q1s}0tg_000Iag zfB*tx0rvl6362OLfB*srAbFKO#=&4EM zKZGIESkO6{=S{xzot&KfmuCTA>!On?d!=eg^Khk>S(P8U>|Cgn1(=E@xeYyL5-^$*pm#X&e@74PtRqy=0JCx%K0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7e?KLx6(6GC7(1?qW}M#l0u6qAwYlt z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ LfB*pk|C_)KD%UQ> diff --git a/SoilMoistureAPI/Data/SoilMoistureContext.cs b/SoilMoistureAPI/Data/SoilMoistureContext.cs new file mode 100644 index 0000000..c3422fd --- /dev/null +++ b/SoilMoistureAPI/Data/SoilMoistureContext.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore; +using SoilMoistureAPI.Models; + +namespace SoilMoistureAPI.Data +{ + public class SoilMoistureContext : DbContext + { + public SoilMoistureContext(DbContextOptions options) : base(options) + { + } + + public DbSet SoilMoistures { get; set; } + public DbSet Devices { get; set; } // New DbSet for Devices + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + // Configure the primary key for Device + modelBuilder.Entity() + .HasKey(d => d.DeviceId); + + // Configure one-to-many relationship + modelBuilder.Entity() + .HasMany(d => d.SoilMoistures) + .WithOne(s => s.Device) + .HasForeignKey(s => s.DeviceId) + .OnDelete(DeleteBehavior.Cascade); + } + } +} diff --git a/SoilMoistureAPI/Dockerfile b/SoilMoistureAPI/Dockerfile new file mode 100644 index 0000000..fae15cb --- /dev/null +++ b/SoilMoistureAPI/Dockerfile @@ -0,0 +1,34 @@ +# Use the official .NET SDK image for building the application +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build +WORKDIR /src + +# Copy the csproj file and restore dependencies +COPY ["SoilMoistureAPI.csproj", "./"] +RUN dotnet restore "SoilMoistureAPI.csproj" + +# Copy the remaining source code and build the project +COPY . . +RUN dotnet build "SoilMoistureAPI.csproj" -c Release -o /app/build + +# Publish the application to the /app/publish directory +FROM build AS publish +RUN dotnet publish "SoilMoistureAPI.csproj" -c Release -o /app/publish + +# Use the official ASP.NET Core runtime image for running the application +FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS final +WORKDIR /app +COPY --from=publish /app/publish . + +#RUN groupadd --gid "1000" "plantpal" && useradd --uid "1000" --gid "1000" -m "plantpal" +#RUN chown plantpal:1000 /app +#USER plantpal + +# Expose port 80 (HTTP) and 443 (HTTPS) if needed +EXPOSE 80 +#EXPOSE 443 + +# Set environment variables +ENV ASPNETCORE_URLS=http://+:80 + +# Set the entry point to run the application +ENTRYPOINT ["dotnet", "SoilMoistureAPI.dll"] diff --git a/SoilMoistureAPI/Middleware/ApiKeyMiddleware.cs b/SoilMoistureAPI/Middleware/ApiKeyMiddleware.cs new file mode 100644 index 0000000..11f6b41 --- /dev/null +++ b/SoilMoistureAPI/Middleware/ApiKeyMiddleware.cs @@ -0,0 +1,44 @@ +/* +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Configuration; +using System.Linq; // Ensure this namespace is included +using System.Threading.Tasks; + +namespace SoilMoistureAPI.Middleware +{ + public class ApiKeyMiddleware + { + private readonly RequestDelegate _next; + private const string APIKEYNAME = "X-API-KEY"; + private readonly string[] _validApiKeys; + + public ApiKeyMiddleware(RequestDelegate next, IConfiguration configuration) + { + _next = next; + _validApiKeys = configuration.GetSection("ApiSettings:ValidApiKeys").Get(); + } + + public async Task InvokeAsync(HttpContext context) + { + if (!context.Request.Headers.TryGetValue(APIKEYNAME, out var extractedApiKey)) + { + context.Response.StatusCode = 401; // Unauthorized + await context.Response.WriteAsync("API Key was not provided."); + return; + } + + // Convert StringValues to string using FirstOrDefault() + var apiKey = extractedApiKey.FirstOrDefault(); + + if (string.IsNullOrEmpty(apiKey) || !_validApiKeys.Contains(apiKey)) + { + context.Response.StatusCode = 403; // Forbidden + await context.Response.WriteAsync("Unauthorized client."); + return; + } + + await _next(context); + } + } +} +*/ \ No newline at end of file diff --git a/SoilMoistureAPI/Migrations/20250109170429_InitialCreate.Designer.cs b/SoilMoistureAPI/Migrations/20250109170429_InitialCreate.Designer.cs new file mode 100644 index 0000000..bf0617a --- /dev/null +++ b/SoilMoistureAPI/Migrations/20250109170429_InitialCreate.Designer.cs @@ -0,0 +1,79 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using SoilMoistureAPI.Data; + +#nullable disable + +namespace SoilMoistureAPI.Migrations +{ + [DbContext(typeof(SoilMoistureContext))] + [Migration("20250109170429_InitialCreate")] + partial class InitialCreate + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "9.0.0"); + + modelBuilder.Entity("SoilMoistureAPI.Models.Device", b => + { + b.Property("DeviceId") + .HasColumnType("TEXT"); + + b.Property("Nickname") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("TEXT"); + + b.HasKey("DeviceId"); + + b.ToTable("Devices"); + }); + + modelBuilder.Entity("SoilMoistureAPI.Models.SoilMoisture", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DeviceId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("MoistureLevel") + .HasColumnType("REAL"); + + b.Property("Timestamp") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("DeviceId"); + + b.ToTable("SoilMoistures"); + }); + + modelBuilder.Entity("SoilMoistureAPI.Models.SoilMoisture", b => + { + b.HasOne("SoilMoistureAPI.Models.Device", "Device") + .WithMany("SoilMoistures") + .HasForeignKey("DeviceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Device"); + }); + + modelBuilder.Entity("SoilMoistureAPI.Models.Device", b => + { + b.Navigation("SoilMoistures"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/SoilMoistureAPI/Migrations/20250109170429_InitialCreate.cs b/SoilMoistureAPI/Migrations/20250109170429_InitialCreate.cs new file mode 100644 index 0000000..69f344d --- /dev/null +++ b/SoilMoistureAPI/Migrations/20250109170429_InitialCreate.cs @@ -0,0 +1,63 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace SoilMoistureAPI.Migrations +{ + /// + public partial class InitialCreate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Devices", + columns: table => new + { + DeviceId = table.Column(type: "TEXT", nullable: false), + Nickname = table.Column(type: "TEXT", maxLength: 100, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Devices", x => x.DeviceId); + }); + + migrationBuilder.CreateTable( + name: "SoilMoistures", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + DeviceId = table.Column(type: "TEXT", nullable: false), + MoistureLevel = table.Column(type: "REAL", nullable: false), + Timestamp = table.Column(type: "TEXT", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_SoilMoistures", x => x.Id); + table.ForeignKey( + name: "FK_SoilMoistures_Devices_DeviceId", + column: x => x.DeviceId, + principalTable: "Devices", + principalColumn: "DeviceId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_SoilMoistures_DeviceId", + table: "SoilMoistures", + column: "DeviceId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "SoilMoistures"); + + migrationBuilder.DropTable( + name: "Devices"); + } + } +} diff --git a/SoilMoistureAPI/Migrations/SoilMoistureContextModelSnapshot.cs b/SoilMoistureAPI/Migrations/SoilMoistureContextModelSnapshot.cs new file mode 100644 index 0000000..2b60a24 --- /dev/null +++ b/SoilMoistureAPI/Migrations/SoilMoistureContextModelSnapshot.cs @@ -0,0 +1,76 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using SoilMoistureAPI.Data; + +#nullable disable + +namespace SoilMoistureAPI.Migrations +{ + [DbContext(typeof(SoilMoistureContext))] + partial class SoilMoistureContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "9.0.0"); + + modelBuilder.Entity("SoilMoistureAPI.Models.Device", b => + { + b.Property("DeviceId") + .HasColumnType("TEXT"); + + b.Property("Nickname") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("TEXT"); + + b.HasKey("DeviceId"); + + b.ToTable("Devices"); + }); + + modelBuilder.Entity("SoilMoistureAPI.Models.SoilMoisture", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DeviceId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("MoistureLevel") + .HasColumnType("REAL"); + + b.Property("Timestamp") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("DeviceId"); + + b.ToTable("SoilMoistures"); + }); + + modelBuilder.Entity("SoilMoistureAPI.Models.SoilMoisture", b => + { + b.HasOne("SoilMoistureAPI.Models.Device", "Device") + .WithMany("SoilMoistures") + .HasForeignKey("DeviceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Device"); + }); + + modelBuilder.Entity("SoilMoistureAPI.Models.Device", b => + { + b.Navigation("SoilMoistures"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/SoilMoistureAPI/Models/Device.cs b/SoilMoistureAPI/Models/Device.cs new file mode 100644 index 0000000..ae7b2ff --- /dev/null +++ b/SoilMoistureAPI/Models/Device.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace SoilMoistureAPI.Models +{ + public class Device + { + [Key] + public string DeviceId { get; set; } // Primary Key + + [Required] + [MaxLength(100)] + public string Nickname { get; set; } + + // Navigation Property + public ICollection SoilMoistures { get; set; } + } +} diff --git a/SoilMoistureAPI/Models/DeviceDto.cs b/SoilMoistureAPI/Models/DeviceDto.cs new file mode 100644 index 0000000..da1360d --- /dev/null +++ b/SoilMoistureAPI/Models/DeviceDto.cs @@ -0,0 +1,8 @@ +namespace SoilMoistureAPI.Models +{ + public class DeviceDto + { + public string DeviceId { get; set; } + public string Nickname { get; set; } + } +} diff --git a/SoilMoistureAPI/Models/SoilMoisture.cs b/SoilMoistureAPI/Models/SoilMoisture.cs new file mode 100644 index 0000000..04f6288 --- /dev/null +++ b/SoilMoistureAPI/Models/SoilMoisture.cs @@ -0,0 +1,24 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace SoilMoistureAPI.Models +{ + public class SoilMoisture + { + [Key] + public int Id { get; set; } + + [Required] + [ForeignKey("Device")] + public string DeviceId { get; set; } // Foreign Key + + [Required] + public float MoistureLevel { get; set; } + + public DateTime Timestamp { get; set; } = DateTime.UtcNow; + + // Navigation Property + public Device Device { get; set; } + } +} diff --git a/SoilMoistureAPI/Models/SoilMoistureDto.cs b/SoilMoistureAPI/Models/SoilMoistureDto.cs new file mode 100644 index 0000000..0a20f6e --- /dev/null +++ b/SoilMoistureAPI/Models/SoilMoistureDto.cs @@ -0,0 +1,8 @@ +namespace SoilMoistureAPI.Models +{ + public class SoilMoistureDto + { + public string DeviceId { get; set; } + public float MoistureLevel { get; set; } + } +} diff --git a/SoilMoistureAPI/Program.cs b/SoilMoistureAPI/Program.cs new file mode 100644 index 0000000..feac9a0 --- /dev/null +++ b/SoilMoistureAPI/Program.cs @@ -0,0 +1,70 @@ +using Microsoft.EntityFrameworkCore; +using SoilMoistureAPI.Data; +//using SoilMoistureAPI.Middleware; + +var builder = WebApplication.CreateBuilder(args); + +builder.WebHost.ConfigureKestrel(options => +{ + options.ListenAnyIP(80); // Listen on port 80 for HTTP + // Optionally, listen on port 443 for HTTPS + /* + options.ListenAnyIP(443, listenOptions => + { + listenOptions.UseHttps(); + }); + */ +}); + +// Add services to the container. +builder.Services.AddControllers(); + +// Configure CORS +builder.Services.AddCors(options => +{ + options.AddPolicy("AllowClient", + builder => + { + //builder.WithOrigins("http://localhost:3000", "http://soilmoisture_client:80") + builder.AllowAnyOrigin() + .AllowAnyHeader() + .AllowAnyMethod(); + }); +}); + +// Register the DB context with SQLite +builder.Services.AddDbContext(options => + options.UseSqlite(builder.Configuration.GetConnectionString("DefaultConnection"))); + +// Add Swagger/OpenAPI support +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + +var app = builder.Build(); + +// Apply migrations at startup +using (var scope = app.Services.CreateScope()) +{ + var db = scope.ServiceProvider.GetRequiredService(); + db.Database.Migrate(); +} + +// Use API Key Middleware +//app.UseMiddleware(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +app.UseHttpsRedirection(); + +app.UseCors("AllowClient"); + +app.UseAuthorization(); + +app.MapControllers(); + +app.Run(); diff --git a/SoilMoistureAPI/Properties/launchSettings.json b/SoilMoistureAPI/Properties/launchSettings.json new file mode 100644 index 0000000..1bc7ce7 --- /dev/null +++ b/SoilMoistureAPI/Properties/launchSettings.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": false, + "applicationUrl": "http://localhost:5115", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": false, + "applicationUrl": "https://localhost:7274;http://localhost:5115", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/house-plant-api/house-plant-api.csproj b/SoilMoistureAPI/SoilMoistureAPI.csproj similarity index 51% rename from house-plant-api/house-plant-api.csproj rename to SoilMoistureAPI/SoilMoistureAPI.csproj index a839dc7..a23c298 100644 --- a/house-plant-api/house-plant-api.csproj +++ b/SoilMoistureAPI/SoilMoistureAPI.csproj @@ -1,23 +1,23 @@ - + - net8.0-windows10.0.26100.0 + net9.0 enable enable - house_plant_api - + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + - - - + diff --git a/SoilMoistureAPI/SoilMoistureAPI.csproj.user b/SoilMoistureAPI/SoilMoistureAPI.csproj.user new file mode 100644 index 0000000..983ecfc --- /dev/null +++ b/SoilMoistureAPI/SoilMoistureAPI.csproj.user @@ -0,0 +1,9 @@ + + + + http + + + ProjectDebugger + + \ No newline at end of file diff --git a/SoilMoistureAPI/SoilMoistureAPI.http b/SoilMoistureAPI/SoilMoistureAPI.http new file mode 100644 index 0000000..0f34566 --- /dev/null +++ b/SoilMoistureAPI/SoilMoistureAPI.http @@ -0,0 +1,64 @@ +### Base URL +@baseUrl = http://localhost:80 + +### Common Headers +@apiKey = Your_API_Key_1 + +### 1. Device Management + +#### 1.1 Create a New Device +POST {{baseUrl}}/api/Device +Content-Type: application/json +X-API-KEY: {{apiKey}} + +{ + "DeviceId": "ESP32_Device_01", + "Nickname": "Greenhouse Sensor" +} + +#### 1.2 Get Device Details +GET {{baseUrl}}/api/Device/ESP32_Device_01 +X-API-KEY: {{apiKey}} + +#### 1.3 Update Device Nickname +PUT {{baseUrl}}/api/Device/ESP32_Device_01/nickname +Content-Type: application/json +X-API-KEY: {{apiKey}} + +"Greenhouse Sensor v2" + +#### 1.4 Delete a Device +DELETE {{baseUrl}}/api/Device/ESP32_Device_01 +X-API-KEY: {{apiKey}} + +### 2. Soil Moisture Data Management + +#### 2.1 Post New Soil Moisture Data +POST {{baseUrl}}/api/SoilMoisture +Content-Type: application/json +X-API-KEY: {{apiKey}} + +{ + "DeviceId": "ESP32_Device_01", + "MoistureLevel": 75.5 +} + +#### 2.2 Get All Soil Moisture Readings +GET {{baseUrl}}/api/SoilMoisture?pageNumber=1&pageSize=10 +X-API-KEY: {{apiKey}} + +#### 2.3 Get Specific Soil Moisture Reading +GET {{baseUrl}}/api/SoilMoisture/1 +X-API-KEY: {{apiKey}} + +### 3. Health Check + +#### 3.1 Get Health Status +GET {{baseUrl}}/health +X-API-KEY: {{apiKey}} + +### 4. Swagger Documentation Access + +#### 4.1 Access Swagger UI +GET {{baseUrl}}/swagger/index.html +X-API-KEY: {{apiKey}} diff --git a/SoilMoistureAPI/SoilMoistureAPI.sln b/SoilMoistureAPI/SoilMoistureAPI.sln new file mode 100644 index 0000000..c4d3296 --- /dev/null +++ b/SoilMoistureAPI/SoilMoistureAPI.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.12.35527.113 d17.12 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SoilMoistureAPI", "SoilMoistureAPI.csproj", "{CE9A98F2-99B9-488A-B047-A0DB7F065769}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CE9A98F2-99B9-488A-B047-A0DB7F065769}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CE9A98F2-99B9-488A-B047-A0DB7F065769}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CE9A98F2-99B9-488A-B047-A0DB7F065769}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CE9A98F2-99B9-488A-B047-A0DB7F065769}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/SoilMoistureAPI/SoilMoistureAPI.xml b/SoilMoistureAPI/SoilMoistureAPI.xml new file mode 100644 index 0000000..8d33998 --- /dev/null +++ b/SoilMoistureAPI/SoilMoistureAPI.xml @@ -0,0 +1,32 @@ + + +False +HomeAutomation: +2025-01-08 + +[b]8.JAN.2025:[/b]Added[br] + +http://forums.unraid.net +PlanyPal API + +PlantPal's API[br][br] + +localhost:5000/soilmoistureapi-api +https://github.com/ +localhost:5000/soilmoistureapi-api +true +false + + bridge + + + 3016 + 80 + tcp + + + +http://[IP]:[PORT:3016] +http://i.imgur.com/zXpacAF.png +http://i.imgur.com/zXpacAF.png + \ No newline at end of file diff --git a/house-plant-api/appsettings.Development.json b/SoilMoistureAPI/appsettings.Development.json similarity index 100% rename from house-plant-api/appsettings.Development.json rename to SoilMoistureAPI/appsettings.Development.json diff --git a/SoilMoistureAPI/appsettings.json b/SoilMoistureAPI/appsettings.json new file mode 100644 index 0000000..5264d76 --- /dev/null +++ b/SoilMoistureAPI/appsettings.json @@ -0,0 +1,12 @@ +{ + "ConnectionStrings": { + "DefaultConnection": "Data Source=app/data/SoilMoisture.db" + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..4dba554 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,35 @@ +version: '3.8' + +services: + api: + build: + context: ./SoilMoistureAPI + dockerfile: Dockerfile + container_name: soilmoisture_api + ports: + - "8000:80" # Host port 8000 maps to container port 80 (HTTP) + volumes: + - ./SoilMoistureAPI/data:/app/data + environment: + - ASPNETCORE_URLS=http://+:80 + - ConnectionStrings__DefaultConnection=Data Source=/app/data/SoilMoisture.db + networks: + - soilmoisture_network + restart: unless-stopped + + client: + build: + context: ./plant-browser + dockerfile: Dockerfile + container_name: soilmoisture_client + ports: + - "3000:80" # Host port 3000 maps to container port 80 (NGINX) + depends_on: + - api + networks: + - soilmoisture_network + restart: unless-stopped + +networks: + soilmoisture_network: + driver: bridge diff --git a/house-plant-api/.vs/house-plant-api/DesignTimeBuild/.dtbcache.v2 b/house-plant-api/.vs/house-plant-api/DesignTimeBuild/.dtbcache.v2 deleted file mode 100644 index ca982bc061350f815bc5e63ca36b08f6abefffd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166030 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 R-n)1md*9-{*Ijqr{{!yAlUV=& diff --git a/house-plant-api/.vs/house-plant-api/v17/.futdcache.v1 b/house-plant-api/.vs/house-plant-api/v17/.futdcache.v1 deleted file mode 100644 index 60dbf2f376814e417eed6aec00b99ee77eeaaf5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 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 ASO5S3 diff --git a/house-plant-api/Context/AppDbContext.cs b/house-plant-api/Context/AppDbContext.cs deleted file mode 100644 index 4b96810..0000000 --- a/house-plant-api/Context/AppDbContext.cs +++ /dev/null @@ -1,31 +0,0 @@ -namespace house_plant_api.Context -{ - using house_plant_api.Models; - using Microsoft.EntityFrameworkCore; - - public class AppDbContext : DbContext - { - public DbSet Devices { get; set; } - - public AppDbContext(DbContextOptions options) : base(options) { } - - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - base.OnModelCreating(modelBuilder); - - modelBuilder.Entity() - .HasKey(d => d.Id); - - modelBuilder.Entity() - .Property(d => d.Name) - .IsRequired(); - - modelBuilder.Entity() - .Property(d => d.Nickname); - - modelBuilder.Entity() - .Property(d => d.Uuid) - .IsRequired(); - } - } -} diff --git a/house-plant-api/Controllers/SoilMoistureController.cs b/house-plant-api/Controllers/SoilMoistureController.cs deleted file mode 100644 index 3cdd114..0000000 --- a/house-plant-api/Controllers/SoilMoistureController.cs +++ /dev/null @@ -1,108 +0,0 @@ -namespace house_plant_api.Controllers -{ - using house_plant_api.Context; - using Microsoft.AspNetCore.Mvc; - using Microsoft.EntityFrameworkCore; - using System.Linq; - using System.Threading.Tasks; - - [ApiController] - [Route("api/[controller]")] - public class DevicesController : ControllerBase - { - private readonly IDbContextFactory _dbContextFactory; - - public DevicesController(IDbContextFactory dbContextFactory) - { - _dbContextFactory = dbContextFactory; - } - - // GET: api/devices - [HttpGet] - public async Task GetDevices() - { - using var dbContext = _dbContextFactory.CreateDbContext(); - var devices = await dbContext.Devices.ToListAsync(); - var result = devices.Select(d => new - { - d.Name, - d.Uuid, - d.Nickname, - Moisture = d.Moisture.HasValue ? $"{d.Moisture}%" : "N/A", - d.LastSeen - }); - return Ok(result); - } - - // GET: api/devices/{name} - [HttpGet("{name}")] - public async Task GetDevice(string name) - { - using var dbContext = _dbContextFactory.CreateDbContext(); - var device = await dbContext.Devices.FirstOrDefaultAsync(d => d.Name == name); - - if (device == null) - return NotFound(new { Error = $"Device '{name}' not found." }); - - return Ok(new - { - device.Name, - device.Uuid, - device.Nickname, - Moisture = device.Moisture.HasValue ? $"{device.Moisture}%" : "N/A", - device.LastSeen - }); - } - - // DELETE: api/devices/{name} - [HttpDelete("{name}")] - public async Task DeleteDevice(string name) - { - using var dbContext = _dbContextFactory.CreateDbContext(); - var device = await dbContext.Devices.FirstOrDefaultAsync(d => d.Name == name); - - if (device == null) - return NotFound(new { Error = $"Device '{name}' not found in database." }); - - dbContext.Devices.Remove(device); - await dbContext.SaveChangesAsync(); - - return Ok(new { Message = $"Device '{name}' removed successfully." }); - } - - // PUT: api/devices/{name}/nickname - [HttpPut("{name}/nickname")] - public async Task UpdateNickname(string name, [FromBody] NicknameUpdateRequest request) - { - // Find the device by Name - using var dbContext = _dbContextFactory.CreateDbContext(); - var device = await dbContext.Devices.FirstOrDefaultAsync(d => d.Name == name); - - if (device == null) - { - return NotFound(new { Error = $"Device '{name}' not found." }); - } - - // Update the Nickname - device.Nickname = request.Nickname; - - // Save changes - dbContext.Devices.Update(device); - await dbContext.SaveChangesAsync(); - - return Ok(new - { - Message = $"Nickname updated successfully for device '{name}'.", - Nickname = device.Nickname - }); - } - - } - - // A simple DTO (Data Transfer Object) for updating the nickname - public class NicknameUpdateRequest - { - public string Nickname { get; set; } - } - -} diff --git a/house-plant-api/Models/Device.cs b/house-plant-api/Models/Device.cs deleted file mode 100644 index cdf4c3b..0000000 --- a/house-plant-api/Models/Device.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace house_plant_api.Models -{ - using System; - - public class Device - { - public int Id { get; set; } - public string Name { get; set; } - public string Nickname { get; set; } - public string Uuid { get; set; } - public int? Moisture { get; set; } - public DateTime? LastSeen { get; set; } - } -} diff --git a/house-plant-api/Program.cs b/house-plant-api/Program.cs deleted file mode 100644 index 011a95f..0000000 --- a/house-plant-api/Program.cs +++ /dev/null @@ -1,51 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; -using Microsoft.EntityFrameworkCore; -using house_plant_api.Context; -using house_plant_api.Services; - -var builder = WebApplication.CreateBuilder(args); - -// 1. Register EF Core with DbContextFactory -builder.Services.AddDbContextFactory(options => - options.UseSqlite("Data Source=devices.db")); - -// 2. Register the BluetoothService (can be Singleton or Transient) -builder.Services.AddSingleton(); - -// 3. Register the hosted service -builder.Services.AddHostedService(); - -// 4. Add controllers -builder.Services.AddControllers(); - -// 1. Register CORS services -builder.Services.AddCors(options => -{ - options.AddPolicy("AllowAll", policyBuilder => - { - policyBuilder - .AllowAnyOrigin() // Allows requests from any domain - .AllowAnyHeader() // Allows any request headers - .AllowAnyMethod(); // Allows any HTTP method (GET, POST, PUT, etc.) - }); -}); - - -var app = builder.Build(); - -// 3. Use CORS with the named policy -app.UseCors("AllowAll"); - -// Ensure DB is created or migrated -using (var scope = app.Services.CreateScope()) -{ - var dbContextFactory = scope.ServiceProvider.GetRequiredService>(); - using var dbContext = dbContextFactory.CreateDbContext(); - dbContext.Database.EnsureCreated(); // or dbContext.Database.Migrate() if using migrations -} - -app.MapControllers(); - -app.Run(); \ No newline at end of file diff --git a/house-plant-api/Properties/launchSettings.json b/house-plant-api/Properties/launchSettings.json deleted file mode 100644 index 7dbeb6a..0000000 --- a/house-plant-api/Properties/launchSettings.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:62301", - "sslPort": 44394 - } - }, - "profiles": { - "house_plant_api": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "launchUrl": "swagger", - "applicationUrl": "https://localhost:7284;http://localhost:5284", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "launchUrl": "swagger", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} diff --git a/house-plant-api/Services/BluetoothService.cs b/house-plant-api/Services/BluetoothService.cs deleted file mode 100644 index eb00172..0000000 --- a/house-plant-api/Services/BluetoothService.cs +++ /dev/null @@ -1,53 +0,0 @@ -namespace house_plant_api.Services -{ - using System; - using System.Collections.Generic; - using System.Linq; - using System.Threading.Tasks; - using house_plant_api.Models; - using InTheHand.Bluetooth; - - public class BluetoothService - { - private readonly Guid _serviceUuid = Guid.Parse("12345678-1234-1234-1234-123456789abc"); - private readonly Guid _characteristicUuid = Guid.Parse("abcd1234-5678-1234-5678-abcdef123456"); - - public async Task> ScanDevicesAsync() - { - // Scan for BLE devices - return await Bluetooth.ScanForDevicesAsync(); - } - - public async Task GetSoilMoistureAsync(string deviceName) - { - // 1. Scan for devices and match by name - var devices = await Bluetooth.ScanForDevicesAsync(); - var targetDevice = devices.FirstOrDefault(d => d.Name == deviceName); - - if (targetDevice == null) - throw new Exception($"Device '{deviceName}' not found."); - - // 2. Connect and read moisture - await targetDevice.Gatt.ConnectAsync(); - try - { - var services = await targetDevice.Gatt.GetPrimaryServicesAsync(); - var targetService = services.FirstOrDefault(s => s.Uuid == _serviceUuid); - if (targetService == null) - throw new Exception("Moisture service not found."); - - var characteristics = await targetService.GetCharacteristicsAsync(); - var targetCharacteristic = characteristics.FirstOrDefault(c => c.Uuid == _characteristicUuid); - if (targetCharacteristic == null) - throw new Exception("Moisture characteristic not found."); - - var value = await targetCharacteristic.ReadValueAsync(); - return BitConverter.ToInt32(value, 0); - } - finally - { - targetDevice.Gatt.Disconnect(); - } - } - } -} diff --git a/house-plant-api/Services/CachedBluetoothService.cs b/house-plant-api/Services/CachedBluetoothService.cs deleted file mode 100644 index 5d12165..0000000 --- a/house-plant-api/Services/CachedBluetoothService.cs +++ /dev/null @@ -1,101 +0,0 @@ -namespace house_plant_api.Services -{ - using house_plant_api.Context; - using house_plant_api.Models; - using Microsoft.EntityFrameworkCore; - using System; - using System.Linq; - using System.Threading.Tasks; - - public class CachedBluetoothService - { - private readonly BluetoothService _bluetoothService; - private readonly IDbContextFactory _dbContextFactory; - - public CachedBluetoothService( - BluetoothService bluetoothService, - IDbContextFactory dbContextFactory) - { - _bluetoothService = bluetoothService; - _dbContextFactory = dbContextFactory; - } - - public List GetTrackedDevices() - { - // If you're using an IDbContextFactory: - using var dbContext = _dbContextFactory.CreateDbContext(); - // Or if you're injecting a scoped dbContext (see note below): - // var dbContext = _dbContext; - - return dbContext.Devices.ToList(); - } - - public async Task> GetTrackedDevicesAsync() - { - using var dbContext = _dbContextFactory.CreateDbContext(); - return await dbContext.Devices.ToListAsync(); - } - - public async Task PollDevicesAsync() - { - try - { - var devices = await _bluetoothService.ScanDevicesAsync(); - - // Create a fresh AppDbContext instance - using var dbContext = _dbContextFactory.CreateDbContext(); - - foreach (var device in devices) - { - var existingDevice = dbContext.Devices - .FirstOrDefault(d => d.Uuid == device.Id.ToString()); - - if (existingDevice == null) - { - dbContext.Devices.Add(new Device - { - Name = device.Name, - Nickname = "Pakkun Flower", - Uuid = device.Id.ToString(), - LastSeen = DateTime.Now - }); - } - else - { - existingDevice.LastSeen = DateTime.Now; - - try - { - var moisture = await _bluetoothService.GetSoilMoistureAsync(device.Name); - existingDevice.Moisture = moisture; - } - catch - { - // Swallow exceptions from reading moisture - } - } - } - - await dbContext.SaveChangesAsync(); - } - catch (Exception ex) - { - Console.WriteLine($"Error during polling: {ex.Message}"); - } - } - - public async Task DeleteDeviceAsync(string name) - { - using var dbContext = _dbContextFactory.CreateDbContext(); - var device = dbContext.Devices.FirstOrDefault(d => d.Name == name); - - if (device == null) - return false; - - dbContext.Devices.Remove(device); - await dbContext.SaveChangesAsync(); - return true; - } - - } -} diff --git a/house-plant-api/Services/DevicePollingService.cs b/house-plant-api/Services/DevicePollingService.cs deleted file mode 100644 index ff5817c..0000000 --- a/house-plant-api/Services/DevicePollingService.cs +++ /dev/null @@ -1,103 +0,0 @@ -namespace house_plant_api.Services -{ - using System; - using System.Linq; - using System.Threading; - using System.Threading.Tasks; - using Microsoft.Extensions.Hosting; - using Microsoft.Extensions.Logging; - using Microsoft.EntityFrameworkCore; - using InTheHand.Bluetooth; - using house_plant_api.Context; - using house_plant_api.Models; - - public class DevicePollingService : BackgroundService - { - private readonly ILogger _logger; - private readonly BluetoothService _bluetoothService; - private readonly IDbContextFactory _dbContextFactory; - private readonly TimeSpan _pollingInterval = TimeSpan.FromSeconds(10); - - public DevicePollingService( - ILogger logger, - BluetoothService bluetoothService, - IDbContextFactory dbContextFactory) - { - _logger = logger; - _bluetoothService = bluetoothService; - _dbContextFactory = dbContextFactory; - } - - protected override async Task ExecuteAsync(CancellationToken stoppingToken) - { - while (!stoppingToken.IsCancellationRequested) - { - await PollDevicesAsync(); - await Task.Delay(_pollingInterval, stoppingToken); - } - } - - private async Task PollDevicesAsync() - { - _logger.LogInformation("Polling devices for moisture data..."); - - try - { - // 1. Scan for BLE devices - var devices = await _bluetoothService.ScanDevicesAsync(); - - // 2. Open a new DB context for each polling run - using var dbContext = _dbContextFactory.CreateDbContext(); - - // 3. Filter devices that have "SoilSensor" in the name (if desired) - var soilDevices = devices - .Where(d => !string.IsNullOrEmpty(d.Name) && d.Name.Contains("SoilSensor", StringComparison.OrdinalIgnoreCase)) - .ToList(); - - // 4. For each device, attempt to get moisture data and store/update in DB - foreach (var device in soilDevices) - { - var existingDevice = dbContext.Devices - .FirstOrDefault(d => d.Uuid == device.Id.ToString()); - - if (existingDevice == null) - { - // Add new device to DB - existingDevice = new Device - { - Name = device.Name, - Nickname = "Pakkun Flower", - Uuid = device.Id.ToString(), - LastSeen = DateTime.Now - }; - dbContext.Devices.Add(existingDevice); - } - else - { - existingDevice.LastSeen = DateTime.Now; - } - - try - { - // Attempt to read moisture from the device - var moisture = await _bluetoothService.GetSoilMoistureAsync(device.Name); - existingDevice.Moisture = moisture; - } - catch (Exception ex) - { - // If reading fails, log and continue - _logger.LogWarning(ex, $"Failed to read moisture from {device.Name}"); - } - } - - // 5. Save changes - await dbContext.SaveChangesAsync(); - _logger.LogInformation("Polling cycle complete."); - } - catch (Exception ex) - { - _logger.LogError(ex, "Error during device polling."); - } - } - } -} diff --git a/house-plant-api/appsettings.json b/house-plant-api/appsettings.json deleted file mode 100644 index 10f68b8..0000000 --- a/house-plant-api/appsettings.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - }, - "AllowedHosts": "*" -} diff --git a/house-plant-api/devices.db b/house-plant-api/devices.db deleted file mode 100644 index 0de02ecf623141161c863ee065d9f7dd83cbe849..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 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 diff --git a/house-plant-api/house-plant-api.sln b/house-plant-api/house-plant-api.sln deleted file mode 100644 index 0c10d93..0000000 --- a/house-plant-api/house-plant-api.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.2.32526.322 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "house-plant-api", "house-plant-api.csproj", "{B9DDD6E9-3F03-4E70-B70C-832B6AB79BF0}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B9DDD6E9-3F03-4E70-B70C-832B6AB79BF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B9DDD6E9-3F03-4E70-B70C-832B6AB79BF0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B9DDD6E9-3F03-4E70-B70C-832B6AB79BF0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B9DDD6E9-3F03-4E70-B70C-832B6AB79BF0}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {E84FCCE2-5F7C-4F20-9663-220B767E5A2B} - EndGlobalSection -EndGlobal diff --git a/house-plant-api/obj/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs b/house-plant-api/obj/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs deleted file mode 100644 index ed92695..0000000 --- a/house-plant-api/obj/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs +++ /dev/null @@ -1,4 +0,0 @@ -// -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] diff --git a/house-plant-api/obj/Debug/net6.0/house-plant-api.AssemblyInfo.cs b/house-plant-api/obj/Debug/net6.0/house-plant-api.AssemblyInfo.cs deleted file mode 100644 index 08b53a8..0000000 --- a/house-plant-api/obj/Debug/net6.0/house-plant-api.AssemblyInfo.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: System.Reflection.AssemblyCompanyAttribute("house-plant-api")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a426dce05e7078fd640479bc6275b245e1288429")] -[assembly: System.Reflection.AssemblyProductAttribute("house-plant-api")] -[assembly: System.Reflection.AssemblyTitleAttribute("house-plant-api")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] - -// Generated by the MSBuild WriteCodeFragment class. - diff --git a/house-plant-api/obj/Debug/net6.0/house-plant-api.AssemblyInfoInputs.cache b/house-plant-api/obj/Debug/net6.0/house-plant-api.AssemblyInfoInputs.cache deleted file mode 100644 index e9b03b2..0000000 --- a/house-plant-api/obj/Debug/net6.0/house-plant-api.AssemblyInfoInputs.cache +++ /dev/null @@ -1 +0,0 @@ -cb53261d04034aa4f1c238bde724ae959471c3d7407c687211410d9a41ef0a2a diff --git a/house-plant-api/obj/Debug/net6.0/house-plant-api.GeneratedMSBuildEditorConfig.editorconfig b/house-plant-api/obj/Debug/net6.0/house-plant-api.GeneratedMSBuildEditorConfig.editorconfig deleted file mode 100644 index 6b24502..0000000 --- a/house-plant-api/obj/Debug/net6.0/house-plant-api.GeneratedMSBuildEditorConfig.editorconfig +++ /dev/null @@ -1,21 +0,0 @@ -is_global = true -build_property.TargetFramework = net6.0 -build_property.TargetPlatformMinVersion = -build_property.UsingMicrosoftNETSdkWeb = true -build_property.ProjectTypeGuids = -build_property.InvariantGlobalization = -build_property.PlatformNeutralAssembly = -build_property.EnforceExtendedAnalyzerRules = -build_property._SupportedPlatformList = Linux,macOS,Windows -build_property.RootNamespace = house_plant_api -build_property.RootNamespace = house_plant_api -build_property.ProjectDir = C:\Users\ckoch\Documents\GitHub\houseplant\house-plant-api\ -build_property.EnableComHosting = -build_property.EnableGeneratedComInterfaceComImportInterop = -build_property.RazorLangVersion = 6.0 -build_property.SupportLocalizedComponentNames = -build_property.GenerateRazorMetadataSourceChecksumAttributes = -build_property.MSBuildProjectDirectory = C:\Users\ckoch\Documents\GitHub\houseplant\house-plant-api -build_property._RazorSourceGeneratorDebug = -build_property.EffectiveAnalysisLevelStyle = 6.0 -build_property.EnableCodeStyleSeverity = diff --git a/house-plant-api/obj/Debug/net6.0/house-plant-api.GlobalUsings.g.cs b/house-plant-api/obj/Debug/net6.0/house-plant-api.GlobalUsings.g.cs deleted file mode 100644 index 025530a..0000000 --- a/house-plant-api/obj/Debug/net6.0/house-plant-api.GlobalUsings.g.cs +++ /dev/null @@ -1,17 +0,0 @@ -// -global using global::Microsoft.AspNetCore.Builder; -global using global::Microsoft.AspNetCore.Hosting; -global using global::Microsoft.AspNetCore.Http; -global using global::Microsoft.AspNetCore.Routing; -global using global::Microsoft.Extensions.Configuration; -global using global::Microsoft.Extensions.DependencyInjection; -global using global::Microsoft.Extensions.Hosting; -global using global::Microsoft.Extensions.Logging; -global using global::System; -global using global::System.Collections.Generic; -global using global::System.IO; -global using global::System.Linq; -global using global::System.Net.Http; -global using global::System.Net.Http.Json; -global using global::System.Threading; -global using global::System.Threading.Tasks; diff --git a/house-plant-api/obj/Debug/net6.0/house-plant-api.assets.cache b/house-plant-api/obj/Debug/net6.0/house-plant-api.assets.cache deleted file mode 100644 index 6d82f5aa4734716b154492676fcda2e570ec9fa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18282 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 - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - $(UserProfile)\.nuget\packages\ - C:\Users\ckoch\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages - PackageReference - 6.12.2 - - - - - - - - - - - - C:\Users\ckoch\.nuget\packages\microsoft.extensions.apidescription.server\6.0.5 - - \ No newline at end of file diff --git a/house-plant-api/obj/house-plant-api.csproj.nuget.g.targets b/house-plant-api/obj/house-plant-api.csproj.nuget.g.targets deleted file mode 100644 index 486654e..0000000 --- a/house-plant-api/obj/house-plant-api.csproj.nuget.g.targets +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/house-plant-api/obj/project.assets.json b/house-plant-api/obj/project.assets.json deleted file mode 100644 index 7a8d1e8..0000000 --- a/house-plant-api/obj/project.assets.json +++ /dev/null @@ -1,3984 +0,0 @@ -{ - "version": 3, - "targets": { - "net8.0-windows10.0.26100": { - "InTheHand.BluetoothLE/4.0.37": { - "type": "package", - "compile": { - "lib/net8.0-windows10.0.19041/InTheHand.BluetoothLE.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0-windows10.0.19041/InTheHand.BluetoothLE.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Data.Sqlite.Core/9.0.0": { - "type": "package", - "dependencies": { - "SQLitePCLRaw.core": "2.1.10" - }, - "compile": { - "lib/net8.0/Microsoft.Data.Sqlite.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Data.Sqlite.dll": { - "related": ".xml" - } - } - }, - "Microsoft.EntityFrameworkCore/9.0.0": { - "type": "package", - "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "9.0.0", - "Microsoft.EntityFrameworkCore.Analyzers": "9.0.0", - "Microsoft.Extensions.Caching.Memory": "9.0.0", - "Microsoft.Extensions.Logging": "9.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props": {} - } - }, - "Microsoft.EntityFrameworkCore.Abstractions/9.0.0": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.EntityFrameworkCore.Analyzers/9.0.0": { - "type": "package" - }, - "Microsoft.EntityFrameworkCore.Relational/9.0.0": { - "type": "package", - "dependencies": { - "Microsoft.EntityFrameworkCore": "9.0.0", - "Microsoft.Extensions.Caching.Memory": "9.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "9.0.0", - "Microsoft.Extensions.Logging": "9.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { - "related": ".xml" - } - } - }, - "Microsoft.EntityFrameworkCore.Sqlite/9.0.0": { - "type": "package", - "dependencies": { - "Microsoft.EntityFrameworkCore.Sqlite.Core": "9.0.0", - "Microsoft.Extensions.Caching.Memory": "9.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "9.0.0", - "Microsoft.Extensions.DependencyModel": "9.0.0", - "Microsoft.Extensions.Logging": "9.0.0", - "SQLitePCLRaw.bundle_e_sqlite3": "2.1.10", - "SQLitePCLRaw.core": "2.1.10", - "System.Text.Json": "9.0.0" - }, - "compile": { - "lib/net8.0/_._": {} - }, - "runtime": { - "lib/net8.0/_._": {} - } - }, - "Microsoft.EntityFrameworkCore.Sqlite.Core/9.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Data.Sqlite.Core": "9.0.0", - "Microsoft.EntityFrameworkCore.Relational": "9.0.0", - "Microsoft.Extensions.Caching.Memory": "9.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "9.0.0", - "Microsoft.Extensions.DependencyModel": "9.0.0", - "Microsoft.Extensions.Logging": "9.0.0", - "SQLitePCLRaw.core": "2.1.10", - "System.Text.Json": "9.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.EntityFrameworkCore.Sqlite.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.EntityFrameworkCore.Sqlite.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.ApiDescription.Server/6.0.5": { - "type": "package", - "build": { - "build/Microsoft.Extensions.ApiDescription.Server.props": {}, - "build/Microsoft.Extensions.ApiDescription.Server.targets": {} - }, - "buildMultiTargeting": { - "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props": {}, - "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets": {} - } - }, - "Microsoft.Extensions.Caching.Abstractions/9.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "9.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.Caching.Memory/9.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "9.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0", - "Microsoft.Extensions.Logging.Abstractions": "9.0.0", - "Microsoft.Extensions.Options": "9.0.0", - "Microsoft.Extensions.Primitives": "9.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.Configuration.Abstractions/9.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "9.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.DependencyInjection/9.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/9.0.0": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.DependencyModel/9.0.0": { - "type": "package", - "dependencies": { - "System.Text.Encodings.Web": "9.0.0", - "System.Text.Json": "9.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.DependencyModel.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyModel.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.Logging/9.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "9.0.0", - "Microsoft.Extensions.Logging.Abstractions": "9.0.0", - "Microsoft.Extensions.Options": "9.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.Logging.Abstractions/9.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0", - "System.Diagnostics.DiagnosticSource": "9.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets": {} - } - }, - "Microsoft.Extensions.Options/9.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0", - "Microsoft.Extensions.Primitives": "9.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/Microsoft.Extensions.Options.targets": {} - } - }, - "Microsoft.Extensions.Primitives/9.0.0": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.OpenApi/1.6.22": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.OpenApi.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.OpenApi.dll": { - "related": ".pdb;.xml" - } - } - }, - "RJCP.Core.Environment/0.3.0": { - "type": "package", - "compile": { - "lib/net8.0/RJCP.Core.Environment.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/net8.0/RJCP.Core.Environment.dll": { - "related": ".pdb;.xml" - } - }, - "resource": { - "lib/net8.0/de/RJCP.Core.Environment.resources.dll": { - "locale": "de" - } - } - }, - "RJCP.Core.SysCompat/0.2.0": { - "type": "package", - "compile": { - "lib/net8.0/RJCP.Core.SysCompat.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/net8.0/RJCP.Core.SysCompat.dll": { - "related": ".pdb;.xml" - } - } - }, - "RJCP.Diagnostics.Trace/0.2.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "RJCP.Core.SysCompat": "0.2.0" - }, - "compile": { - "lib/net8.0/RJCP.Diagnostics.Trace.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/net8.0/RJCP.Diagnostics.Trace.dll": { - "related": ".pdb;.xml" - } - } - }, - "RJCP.IO.Buffer/0.2.1": { - "type": "package", - "dependencies": { - "RJCP.Core.SysCompat": "0.2.0" - }, - "compile": { - "lib/net8.0/RJCP.IO.Buffer.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/net8.0/RJCP.IO.Buffer.dll": { - "related": ".pdb;.xml" - } - } - }, - "RJCP.IO.Device/0.8.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "RJCP.Core.Environment": "0.3.0", - "RJCP.Diagnostics.Trace": "0.2.1" - }, - "compile": { - "lib/net8.0/RJCP.IO.Device.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/net8.0/RJCP.IO.Device.dll": { - "related": ".pdb;.xml" - } - } - }, - "RJCP.SerialPortStream/3.0.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "RJCP.Core.SysCompat": "0.2.0", - "RJCP.Diagnostics.Trace": "0.2.1", - "RJCP.IO.Buffer": "0.2.1", - "RJCP.IO.Device": "0.8.1" - }, - "compile": { - "lib/net8.0/RJCP.SerialPortStream.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/net8.0/RJCP.SerialPortStream.dll": { - "related": ".pdb;.xml" - } - } - }, - "runtime.android-arm.runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "runtimeTargets": { - "runtimes/android-arm/native/libSystem.IO.Ports.Native.so": { - "assetType": "native", - "rid": "android-arm" - }, - "runtimes/android-arm64/native/_._": { - "assetType": "native", - "rid": "android-arm64" - }, - "runtimes/android-x64/native/_._": { - "assetType": "native", - "rid": "android-x64" - }, - "runtimes/android-x86/native/_._": { - "assetType": "native", - "rid": "android-x86" - }, - "runtimes/linux-arm/native/_._": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/_._": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-bionic-arm64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-arm64" - }, - "runtimes/linux-bionic-x64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-x64" - }, - "runtimes/linux-musl-arm/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-x64/native/_._": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-x64/native/_._": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/maccatalyst-arm64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/_._": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/_._": { - "assetType": "native", - "rid": "osx-x64" - } - } - }, - "runtime.android-arm64.runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "runtimeTargets": { - "runtimes/android-arm/native/_._": { - "assetType": "native", - "rid": "android-arm" - }, - "runtimes/android-arm64/native/libSystem.IO.Ports.Native.so": { - "assetType": "native", - "rid": "android-arm64" - }, - "runtimes/android-x64/native/_._": { - "assetType": "native", - "rid": "android-x64" - }, - "runtimes/android-x86/native/_._": { - "assetType": "native", - "rid": "android-x86" - }, - "runtimes/linux-arm/native/_._": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/_._": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-bionic-arm64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-arm64" - }, - "runtimes/linux-bionic-x64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-x64" - }, - "runtimes/linux-musl-arm/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-x64/native/_._": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-x64/native/_._": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/maccatalyst-arm64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/_._": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/_._": { - "assetType": "native", - "rid": "osx-x64" - } - } - }, - "runtime.android-x64.runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "runtimeTargets": { - "runtimes/android-arm/native/_._": { - "assetType": "native", - "rid": "android-arm" - }, - "runtimes/android-arm64/native/_._": { - "assetType": "native", - "rid": "android-arm64" - }, - "runtimes/android-x64/native/libSystem.IO.Ports.Native.so": { - "assetType": "native", - "rid": "android-x64" - }, - "runtimes/android-x86/native/_._": { - "assetType": "native", - "rid": "android-x86" - }, - "runtimes/linux-arm/native/_._": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/_._": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-bionic-arm64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-arm64" - }, - "runtimes/linux-bionic-x64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-x64" - }, - "runtimes/linux-musl-arm/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-x64/native/_._": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-x64/native/_._": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/maccatalyst-arm64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/_._": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/_._": { - "assetType": "native", - "rid": "osx-x64" - } - } - }, - "runtime.android-x86.runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "runtimeTargets": { - "runtimes/android-arm/native/_._": { - "assetType": "native", - "rid": "android-arm" - }, - "runtimes/android-arm64/native/_._": { - "assetType": "native", - "rid": "android-arm64" - }, - "runtimes/android-x64/native/_._": { - "assetType": "native", - "rid": "android-x64" - }, - "runtimes/android-x86/native/libSystem.IO.Ports.Native.so": { - "assetType": "native", - "rid": "android-x86" - }, - "runtimes/linux-arm/native/_._": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/_._": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-bionic-arm64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-arm64" - }, - "runtimes/linux-bionic-x64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-x64" - }, - "runtimes/linux-musl-arm/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-x64/native/_._": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-x64/native/_._": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/maccatalyst-arm64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/_._": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/_._": { - "assetType": "native", - "rid": "osx-x64" - } - } - }, - "runtime.linux-arm.runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "runtimeTargets": { - "runtimes/android-arm/native/_._": { - "assetType": "native", - "rid": "android-arm" - }, - "runtimes/android-arm64/native/_._": { - "assetType": "native", - "rid": "android-arm64" - }, - "runtimes/android-x64/native/_._": { - "assetType": "native", - "rid": "android-x64" - }, - "runtimes/android-x86/native/_._": { - "assetType": "native", - "rid": "android-x86" - }, - "runtimes/linux-arm/native/libSystem.IO.Ports.Native.so": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/_._": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-bionic-arm64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-arm64" - }, - "runtimes/linux-bionic-x64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-x64" - }, - "runtimes/linux-musl-arm/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-x64/native/_._": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-x64/native/_._": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/maccatalyst-arm64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/_._": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/_._": { - "assetType": "native", - "rid": "osx-x64" - } - } - }, - "runtime.linux-arm64.runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "runtimeTargets": { - "runtimes/android-arm/native/_._": { - "assetType": "native", - "rid": "android-arm" - }, - "runtimes/android-arm64/native/_._": { - "assetType": "native", - "rid": "android-arm64" - }, - "runtimes/android-x64/native/_._": { - "assetType": "native", - "rid": "android-x64" - }, - "runtimes/android-x86/native/_._": { - "assetType": "native", - "rid": "android-x86" - }, - "runtimes/linux-arm/native/_._": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/libSystem.IO.Ports.Native.so": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-bionic-arm64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-arm64" - }, - "runtimes/linux-bionic-x64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-x64" - }, - "runtimes/linux-musl-arm/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-x64/native/_._": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-x64/native/_._": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/maccatalyst-arm64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/_._": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/_._": { - "assetType": "native", - "rid": "osx-x64" - } - } - }, - "runtime.linux-bionic-arm64.runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "runtimeTargets": { - "runtimes/android-arm/native/_._": { - "assetType": "native", - "rid": "android-arm" - }, - "runtimes/android-arm64/native/_._": { - "assetType": "native", - "rid": "android-arm64" - }, - "runtimes/android-x64/native/_._": { - "assetType": "native", - "rid": "android-x64" - }, - "runtimes/android-x86/native/_._": { - "assetType": "native", - "rid": "android-x86" - }, - "runtimes/linux-arm/native/_._": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/_._": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-bionic-arm64/native/libSystem.IO.Ports.Native.so": { - "assetType": "native", - "rid": "linux-bionic-arm64" - }, - "runtimes/linux-bionic-x64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-x64" - }, - "runtimes/linux-musl-arm/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-x64/native/_._": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-x64/native/_._": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/maccatalyst-arm64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/_._": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/_._": { - "assetType": "native", - "rid": "osx-x64" - } - } - }, - "runtime.linux-bionic-x64.runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "runtimeTargets": { - "runtimes/android-arm/native/_._": { - "assetType": "native", - "rid": "android-arm" - }, - "runtimes/android-arm64/native/_._": { - "assetType": "native", - "rid": "android-arm64" - }, - "runtimes/android-x64/native/_._": { - "assetType": "native", - "rid": "android-x64" - }, - "runtimes/android-x86/native/_._": { - "assetType": "native", - "rid": "android-x86" - }, - "runtimes/linux-arm/native/_._": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/_._": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-bionic-arm64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-arm64" - }, - "runtimes/linux-bionic-x64/native/libSystem.IO.Ports.Native.so": { - "assetType": "native", - "rid": "linux-bionic-x64" - }, - "runtimes/linux-musl-arm/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-x64/native/_._": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-x64/native/_._": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/maccatalyst-arm64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/_._": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/_._": { - "assetType": "native", - "rid": "osx-x64" - } - } - }, - "runtime.linux-musl-arm.runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "runtimeTargets": { - "runtimes/android-arm/native/_._": { - "assetType": "native", - "rid": "android-arm" - }, - "runtimes/android-arm64/native/_._": { - "assetType": "native", - "rid": "android-arm64" - }, - "runtimes/android-x64/native/_._": { - "assetType": "native", - "rid": "android-x64" - }, - "runtimes/android-x86/native/_._": { - "assetType": "native", - "rid": "android-x86" - }, - "runtimes/linux-arm/native/_._": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/_._": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-bionic-arm64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-arm64" - }, - "runtimes/linux-bionic-x64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-x64" - }, - "runtimes/linux-musl-arm/native/libSystem.IO.Ports.Native.so": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-x64/native/_._": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-x64/native/_._": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/maccatalyst-arm64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/_._": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/_._": { - "assetType": "native", - "rid": "osx-x64" - } - } - }, - "runtime.linux-musl-arm64.runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "runtimeTargets": { - "runtimes/android-arm/native/_._": { - "assetType": "native", - "rid": "android-arm" - }, - "runtimes/android-arm64/native/_._": { - "assetType": "native", - "rid": "android-arm64" - }, - "runtimes/android-x64/native/_._": { - "assetType": "native", - "rid": "android-x64" - }, - "runtimes/android-x86/native/_._": { - "assetType": "native", - "rid": "android-x86" - }, - "runtimes/linux-arm/native/_._": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/_._": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-bionic-arm64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-arm64" - }, - "runtimes/linux-bionic-x64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-x64" - }, - "runtimes/linux-musl-arm/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/libSystem.IO.Ports.Native.so": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-x64/native/_._": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-x64/native/_._": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/maccatalyst-arm64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/_._": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/_._": { - "assetType": "native", - "rid": "osx-x64" - } - } - }, - "runtime.linux-musl-x64.runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "runtimeTargets": { - "runtimes/android-arm/native/_._": { - "assetType": "native", - "rid": "android-arm" - }, - "runtimes/android-arm64/native/_._": { - "assetType": "native", - "rid": "android-arm64" - }, - "runtimes/android-x64/native/_._": { - "assetType": "native", - "rid": "android-x64" - }, - "runtimes/android-x86/native/_._": { - "assetType": "native", - "rid": "android-x86" - }, - "runtimes/linux-arm/native/_._": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/_._": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-bionic-arm64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-arm64" - }, - "runtimes/linux-bionic-x64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-x64" - }, - "runtimes/linux-musl-arm/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-x64/native/libSystem.IO.Ports.Native.so": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-x64/native/_._": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/maccatalyst-arm64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/_._": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/_._": { - "assetType": "native", - "rid": "osx-x64" - } - } - }, - "runtime.linux-x64.runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "runtimeTargets": { - "runtimes/android-arm/native/_._": { - "assetType": "native", - "rid": "android-arm" - }, - "runtimes/android-arm64/native/_._": { - "assetType": "native", - "rid": "android-arm64" - }, - "runtimes/android-x64/native/_._": { - "assetType": "native", - "rid": "android-x64" - }, - "runtimes/android-x86/native/_._": { - "assetType": "native", - "rid": "android-x86" - }, - "runtimes/linux-arm/native/_._": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/_._": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-bionic-arm64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-arm64" - }, - "runtimes/linux-bionic-x64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-x64" - }, - "runtimes/linux-musl-arm/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-x64/native/_._": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-x64/native/libSystem.IO.Ports.Native.so": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/maccatalyst-arm64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/_._": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/_._": { - "assetType": "native", - "rid": "osx-x64" - } - } - }, - "runtime.maccatalyst-arm64.runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "runtimeTargets": { - "runtimes/android-arm/native/_._": { - "assetType": "native", - "rid": "android-arm" - }, - "runtimes/android-arm64/native/_._": { - "assetType": "native", - "rid": "android-arm64" - }, - "runtimes/android-x64/native/_._": { - "assetType": "native", - "rid": "android-x64" - }, - "runtimes/android-x86/native/_._": { - "assetType": "native", - "rid": "android-x86" - }, - "runtimes/linux-arm/native/_._": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/_._": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-bionic-arm64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-arm64" - }, - "runtimes/linux-bionic-x64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-x64" - }, - "runtimes/linux-musl-arm/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-x64/native/_._": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-x64/native/_._": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/maccatalyst-arm64/native/libSystem.IO.Ports.Native.dylib": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/_._": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/_._": { - "assetType": "native", - "rid": "osx-x64" - } - } - }, - "runtime.maccatalyst-x64.runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "runtimeTargets": { - "runtimes/android-arm/native/_._": { - "assetType": "native", - "rid": "android-arm" - }, - "runtimes/android-arm64/native/_._": { - "assetType": "native", - "rid": "android-arm64" - }, - "runtimes/android-x64/native/_._": { - "assetType": "native", - "rid": "android-x64" - }, - "runtimes/android-x86/native/_._": { - "assetType": "native", - "rid": "android-x86" - }, - "runtimes/linux-arm/native/_._": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/_._": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-bionic-arm64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-arm64" - }, - "runtimes/linux-bionic-x64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-x64" - }, - "runtimes/linux-musl-arm/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-x64/native/_._": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-x64/native/_._": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/maccatalyst-arm64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/libSystem.IO.Ports.Native.dylib": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/_._": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/_._": { - "assetType": "native", - "rid": "osx-x64" - } - } - }, - "runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "dependencies": { - "runtime.android-arm.runtime.native.System.IO.Ports": "9.0.0", - "runtime.android-arm64.runtime.native.System.IO.Ports": "9.0.0", - "runtime.android-x64.runtime.native.System.IO.Ports": "9.0.0", - "runtime.android-x86.runtime.native.System.IO.Ports": "9.0.0", - "runtime.linux-arm.runtime.native.System.IO.Ports": "9.0.0", - "runtime.linux-arm64.runtime.native.System.IO.Ports": "9.0.0", - "runtime.linux-bionic-arm64.runtime.native.System.IO.Ports": "9.0.0", - "runtime.linux-bionic-x64.runtime.native.System.IO.Ports": "9.0.0", - "runtime.linux-musl-arm.runtime.native.System.IO.Ports": "9.0.0", - "runtime.linux-musl-arm64.runtime.native.System.IO.Ports": "9.0.0", - "runtime.linux-musl-x64.runtime.native.System.IO.Ports": "9.0.0", - "runtime.linux-x64.runtime.native.System.IO.Ports": "9.0.0", - "runtime.maccatalyst-arm64.runtime.native.System.IO.Ports": "9.0.0", - "runtime.maccatalyst-x64.runtime.native.System.IO.Ports": "9.0.0", - "runtime.osx-arm64.runtime.native.System.IO.Ports": "9.0.0", - "runtime.osx-x64.runtime.native.System.IO.Ports": "9.0.0" - } - }, - "runtime.osx-arm64.runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "runtimeTargets": { - "runtimes/android-arm/native/_._": { - "assetType": "native", - "rid": "android-arm" - }, - "runtimes/android-arm64/native/_._": { - "assetType": "native", - "rid": "android-arm64" - }, - "runtimes/android-x64/native/_._": { - "assetType": "native", - "rid": "android-x64" - }, - "runtimes/android-x86/native/_._": { - "assetType": "native", - "rid": "android-x86" - }, - "runtimes/linux-arm/native/_._": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/_._": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-bionic-arm64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-arm64" - }, - "runtimes/linux-bionic-x64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-x64" - }, - "runtimes/linux-musl-arm/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-x64/native/_._": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-x64/native/_._": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/maccatalyst-arm64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/libSystem.IO.Ports.Native.dylib": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/_._": { - "assetType": "native", - "rid": "osx-x64" - } - } - }, - "runtime.osx-x64.runtime.native.System.IO.Ports/9.0.0": { - "type": "package", - "runtimeTargets": { - "runtimes/android-arm/native/_._": { - "assetType": "native", - "rid": "android-arm" - }, - "runtimes/android-arm64/native/_._": { - "assetType": "native", - "rid": "android-arm64" - }, - "runtimes/android-x64/native/_._": { - "assetType": "native", - "rid": "android-x64" - }, - "runtimes/android-x86/native/_._": { - "assetType": "native", - "rid": "android-x86" - }, - "runtimes/linux-arm/native/_._": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/_._": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-bionic-arm64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-arm64" - }, - "runtimes/linux-bionic-x64/native/_._": { - "assetType": "native", - "rid": "linux-bionic-x64" - }, - "runtimes/linux-musl-arm/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/_._": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-x64/native/_._": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-x64/native/_._": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/maccatalyst-arm64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/_._": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/_._": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/libSystem.IO.Ports.Native.dylib": { - "assetType": "native", - "rid": "osx-x64" - } - } - }, - "SQLitePCLRaw.bundle_e_sqlite3/2.1.10": { - "type": "package", - "dependencies": { - "SQLitePCLRaw.lib.e_sqlite3": "2.1.10", - "SQLitePCLRaw.provider.e_sqlite3": "2.1.10" - }, - "compile": { - "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll": {} - }, - "runtime": { - "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll": {} - } - }, - "SQLitePCLRaw.core/2.1.10": { - "type": "package", - "dependencies": { - "System.Memory": "4.5.3" - }, - "compile": { - "lib/netstandard2.0/SQLitePCLRaw.core.dll": {} - }, - "runtime": { - "lib/netstandard2.0/SQLitePCLRaw.core.dll": {} - } - }, - "SQLitePCLRaw.lib.e_sqlite3/2.1.10": { - "type": "package", - "compile": { - "lib/netstandard2.0/_._": {} - }, - "runtime": { - "lib/netstandard2.0/_._": {} - }, - "build": { - "buildTransitive/net8.0/SQLitePCLRaw.lib.e_sqlite3.targets": {} - }, - "runtimeTargets": { - "runtimes/browser-wasm/nativeassets/net8.0/e_sqlite3.a": { - "assetType": "native", - "rid": "browser-wasm" - }, - "runtimes/linux-arm/native/libe_sqlite3.so": { - "assetType": "native", - "rid": "linux-arm" - }, - "runtimes/linux-arm64/native/libe_sqlite3.so": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-armel/native/libe_sqlite3.so": { - "assetType": "native", - "rid": "linux-armel" - }, - "runtimes/linux-mips64/native/libe_sqlite3.so": { - "assetType": "native", - "rid": "linux-mips64" - }, - "runtimes/linux-musl-arm/native/libe_sqlite3.so": { - "assetType": "native", - "rid": "linux-musl-arm" - }, - "runtimes/linux-musl-arm64/native/libe_sqlite3.so": { - "assetType": "native", - "rid": "linux-musl-arm64" - }, - "runtimes/linux-musl-s390x/native/libe_sqlite3.so": { - "assetType": "native", - "rid": "linux-musl-s390x" - }, - "runtimes/linux-musl-x64/native/libe_sqlite3.so": { - "assetType": "native", - "rid": "linux-musl-x64" - }, - "runtimes/linux-ppc64le/native/libe_sqlite3.so": { - "assetType": "native", - "rid": "linux-ppc64le" - }, - "runtimes/linux-s390x/native/libe_sqlite3.so": { - "assetType": "native", - "rid": "linux-s390x" - }, - "runtimes/linux-x64/native/libe_sqlite3.so": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/linux-x86/native/libe_sqlite3.so": { - "assetType": "native", - "rid": "linux-x86" - }, - "runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib": { - "assetType": "native", - "rid": "maccatalyst-arm64" - }, - "runtimes/maccatalyst-x64/native/libe_sqlite3.dylib": { - "assetType": "native", - "rid": "maccatalyst-x64" - }, - "runtimes/osx-arm64/native/libe_sqlite3.dylib": { - "assetType": "native", - "rid": "osx-arm64" - }, - "runtimes/osx-x64/native/libe_sqlite3.dylib": { - "assetType": "native", - "rid": "osx-x64" - }, - "runtimes/win-arm/native/e_sqlite3.dll": { - "assetType": "native", - "rid": "win-arm" - }, - "runtimes/win-arm64/native/e_sqlite3.dll": { - "assetType": "native", - "rid": "win-arm64" - }, - "runtimes/win-x64/native/e_sqlite3.dll": { - "assetType": "native", - "rid": "win-x64" - }, - "runtimes/win-x86/native/e_sqlite3.dll": { - "assetType": "native", - "rid": "win-x86" - } - } - }, - "SQLitePCLRaw.provider.e_sqlite3/2.1.10": { - "type": "package", - "dependencies": { - "SQLitePCLRaw.core": "2.1.10" - }, - "compile": { - "lib/net6.0-windows7.0/SQLitePCLRaw.provider.e_sqlite3.dll": {} - }, - "runtime": { - "lib/net6.0-windows7.0/SQLitePCLRaw.provider.e_sqlite3.dll": {} - } - }, - "Swashbuckle.AspNetCore/7.2.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.ApiDescription.Server": "6.0.5", - "Swashbuckle.AspNetCore.Swagger": "7.2.0", - "Swashbuckle.AspNetCore.SwaggerGen": "7.2.0", - "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0" - }, - "build": { - "build/Swashbuckle.AspNetCore.props": {} - }, - "buildMultiTargeting": { - "buildMultiTargeting/Swashbuckle.AspNetCore.props": {} - } - }, - "Swashbuckle.AspNetCore.Swagger/7.2.0": { - "type": "package", - "dependencies": { - "Microsoft.OpenApi": "1.6.22" - }, - "compile": { - "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { - "related": ".pdb;.xml" - } - }, - "frameworkReferences": [ - "Microsoft.AspNetCore.App" - ] - }, - "Swashbuckle.AspNetCore.SwaggerGen/7.2.0": { - "type": "package", - "dependencies": { - "Swashbuckle.AspNetCore.Swagger": "7.2.0" - }, - "compile": { - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { - "related": ".pdb;.xml" - } - } - }, - "Swashbuckle.AspNetCore.SwaggerUI/7.2.0": { - "type": "package", - "compile": { - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { - "related": ".pdb;.xml" - } - }, - "frameworkReferences": [ - "Microsoft.AspNetCore.App" - ] - }, - "System.Diagnostics.DiagnosticSource/9.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "related": ".xml" - } - }, - "contentFiles": { - "contentFiles/any/any/_._": { - "buildAction": "None", - "codeLanguage": "any", - "copyToOutput": false - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "System.IO.Pipelines/9.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.IO.Pipelines.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.IO.Pipelines.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "System.IO.Ports/9.0.0": { - "type": "package", - "dependencies": { - "runtime.native.System.IO.Ports": "9.0.0" - }, - "compile": { - "lib/net8.0/System.IO.Ports.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.IO.Ports.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/net8.0/System.IO.Ports.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/net8.0/System.IO.Ports.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Memory/4.5.3": { - "type": "package", - "compile": { - "ref/netcoreapp2.1/_._": {} - }, - "runtime": { - "lib/netcoreapp2.1/_._": {} - } - }, - "System.Text.Encodings.Web/9.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - }, - "runtimeTargets": { - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { - "assetType": "runtime", - "rid": "browser" - } - } - }, - "System.Text.Json/9.0.0": { - "type": "package", - "dependencies": { - "System.IO.Pipelines": "9.0.0", - "System.Text.Encodings.Web": "9.0.0" - }, - "compile": { - "lib/net8.0/System.Text.Json.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Text.Json.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/System.Text.Json.targets": {} - } - } - } - }, - "libraries": { - "InTheHand.BluetoothLE/4.0.37": { - "sha512": "+Rgh8N9UN0GZntL3ImsR9I4Kr8SH9EVj+q20RAl6IMFE87it652DxGE4iUIYqVbg+a3xDuyhW9CTqNW8v9lYLw==", - "type": "package", - "path": "inthehand.bluetoothle/4.0.37", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "32feet-package-icon.png", - "README.md", - "inthehand.bluetoothle.4.0.37.nupkg.sha512", - "inthehand.bluetoothle.nuspec", - "lib/monoandroid10.0/InTheHand.BluetoothLE.dll", - "lib/monoandroid10.0/InTheHand.BluetoothLE.xml", - "lib/net462/InTheHand.BluetoothLE.dll", - "lib/net462/InTheHand.BluetoothLE.xml", - "lib/net7.0-android33.0/InTheHand.BluetoothLE.aar", - "lib/net7.0-android33.0/InTheHand.BluetoothLE.dll", - "lib/net7.0-android33.0/InTheHand.BluetoothLE.xml", - "lib/net7.0-ios16.1/InTheHand.BluetoothLE.dll", - "lib/net7.0-ios16.1/InTheHand.BluetoothLE.xml", - "lib/net7.0-maccatalyst16.1/InTheHand.BluetoothLE.dll", - "lib/net7.0-maccatalyst16.1/InTheHand.BluetoothLE.xml", - "lib/net7.0-windows10.0.19041/InTheHand.BluetoothLE.dll", - "lib/net7.0-windows10.0.19041/InTheHand.BluetoothLE.xml", - "lib/net7.0/InTheHand.BluetoothLE.dll", - "lib/net7.0/InTheHand.BluetoothLE.xml", - "lib/net8.0-android34.0/InTheHand.BluetoothLE.dll", - "lib/net8.0-android34.0/InTheHand.BluetoothLE.xml", - "lib/net8.0-ios17.2/InTheHand.BluetoothLE.dll", - "lib/net8.0-ios17.2/InTheHand.BluetoothLE.xml", - "lib/net8.0-maccatalyst17.2/InTheHand.BluetoothLE.dll", - "lib/net8.0-maccatalyst17.2/InTheHand.BluetoothLE.xml", - "lib/net8.0-windows10.0.19041/InTheHand.BluetoothLE.dll", - "lib/net8.0-windows10.0.19041/InTheHand.BluetoothLE.xml", - "lib/net8.0/InTheHand.BluetoothLE.dll", - "lib/net8.0/InTheHand.BluetoothLE.xml", - "lib/netstandard2.0/InTheHand.BluetoothLE.dll", - "lib/netstandard2.0/InTheHand.BluetoothLE.xml", - "lib/uap10.0.17763/InTheHand.BluetoothLE.dll", - "lib/uap10.0.17763/InTheHand.BluetoothLE.pri", - "lib/uap10.0.17763/InTheHand.BluetoothLE.xml", - "lib/xamarinios10/InTheHand.BluetoothLE.dll", - "lib/xamarinios10/InTheHand.BluetoothLE.xml", - "lib/xamarintvos10/InTheHand.BluetoothLE.dll", - "lib/xamarintvos10/InTheHand.BluetoothLE.xml", - "lib/xamarinwatchos10/InTheHand.BluetoothLE.dll", - "lib/xamarinwatchos10/InTheHand.BluetoothLE.xml" - ] - }, - "Microsoft.Data.Sqlite.Core/9.0.0": { - "sha512": "cFfZjFL+tqzGYw9lB31EkV1IWF5xRQNk2k+MQd+Cf86Gl6zTeAoiZIFw5sRB1Z8OxpEC7nu+nTDsLSjieBAPTw==", - "type": "package", - "path": "microsoft.data.sqlite.core/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "lib/net6.0/Microsoft.Data.Sqlite.dll", - "lib/net6.0/Microsoft.Data.Sqlite.xml", - "lib/net8.0/Microsoft.Data.Sqlite.dll", - "lib/net8.0/Microsoft.Data.Sqlite.xml", - "lib/netstandard2.0/Microsoft.Data.Sqlite.dll", - "lib/netstandard2.0/Microsoft.Data.Sqlite.xml", - "microsoft.data.sqlite.core.9.0.0.nupkg.sha512", - "microsoft.data.sqlite.core.nuspec" - ] - }, - "Microsoft.EntityFrameworkCore/9.0.0": { - "sha512": "wpG+nfnfDAw87R3ovAsUmjr3MZ4tYXf6bFqEPVAIKE6IfPml3DS//iX0DBnf8kWn5ZHSO5oi1m4d/Jf+1LifJQ==", - "type": "package", - "path": "microsoft.entityframeworkcore/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props", - "lib/net8.0/Microsoft.EntityFrameworkCore.dll", - "lib/net8.0/Microsoft.EntityFrameworkCore.xml", - "microsoft.entityframeworkcore.9.0.0.nupkg.sha512", - "microsoft.entityframeworkcore.nuspec" - ] - }, - "Microsoft.EntityFrameworkCore.Abstractions/9.0.0": { - "sha512": "fnmifFL8KaA4ZNLCVgfjCWhZUFxkrDInx5hR4qG7Q8IEaSiy/6VOSRFyx55oH7MV4y7wM3J3EE90nSpcVBI44Q==", - "type": "package", - "path": "microsoft.entityframeworkcore.abstractions/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll", - "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.xml", - "microsoft.entityframeworkcore.abstractions.9.0.0.nupkg.sha512", - "microsoft.entityframeworkcore.abstractions.nuspec" - ] - }, - "Microsoft.EntityFrameworkCore.Analyzers/9.0.0": { - "sha512": "Qje+DzXJOKiXF72SL0XxNlDtTkvWWvmwknuZtFahY5hIQpRKO59qnGuERIQ3qlzuq5x4bAJ8WMbgU5DLhBgeOQ==", - "type": "package", - "path": "microsoft.entityframeworkcore.analyzers/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll", - "docs/PACKAGE.md", - "microsoft.entityframeworkcore.analyzers.9.0.0.nupkg.sha512", - "microsoft.entityframeworkcore.analyzers.nuspec" - ] - }, - "Microsoft.EntityFrameworkCore.Relational/9.0.0": { - "sha512": "j+msw6fWgAE9M3Q/5B9Uhv7pdAdAQUvFPJAiBJmoy+OXvehVbfbCE8ftMAa51Uo2ZeiqVnHShhnv4Y4UJJmUzA==", - "type": "package", - "path": "microsoft.entityframeworkcore.relational/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll", - "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.xml", - "microsoft.entityframeworkcore.relational.9.0.0.nupkg.sha512", - "microsoft.entityframeworkcore.relational.nuspec" - ] - }, - "Microsoft.EntityFrameworkCore.Sqlite/9.0.0": { - "sha512": "xu6dlgBO9I1WA1WdT+rUvv+ZGQ9aGRn3c246ykyuFzBX02oNYd1lk7LEVGhjBN1T49N3C9yBUHFQY8vY4JZQrw==", - "type": "package", - "path": "microsoft.entityframeworkcore.sqlite/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "lib/net8.0/_._", - "microsoft.entityframeworkcore.sqlite.9.0.0.nupkg.sha512", - "microsoft.entityframeworkcore.sqlite.nuspec" - ] - }, - "Microsoft.EntityFrameworkCore.Sqlite.Core/9.0.0": { - "sha512": "4gmIZli/Na39mck6s/gO2n1NdOHHwNQfSWucpA+bAU5UAEMYFGMXpCR1AHoo/VJuyMkfpBxuHzkj1/xczy2vFg==", - "type": "package", - "path": "microsoft.entityframeworkcore.sqlite.core/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "lib/net8.0/Microsoft.EntityFrameworkCore.Sqlite.dll", - "lib/net8.0/Microsoft.EntityFrameworkCore.Sqlite.xml", - "microsoft.entityframeworkcore.sqlite.core.9.0.0.nupkg.sha512", - "microsoft.entityframeworkcore.sqlite.core.nuspec" - ] - }, - "Microsoft.Extensions.ApiDescription.Server/6.0.5": { - "sha512": "Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==", - "type": "package", - "path": "microsoft.extensions.apidescription.server/6.0.5", - "hasTools": true, - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "build/Microsoft.Extensions.ApiDescription.Server.props", - "build/Microsoft.Extensions.ApiDescription.Server.targets", - "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props", - "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets", - "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", - "microsoft.extensions.apidescription.server.nuspec", - "tools/Newtonsoft.Json.dll", - "tools/dotnet-getdocument.deps.json", - "tools/dotnet-getdocument.dll", - "tools/dotnet-getdocument.runtimeconfig.json", - "tools/net461-x86/GetDocument.Insider.exe", - "tools/net461-x86/GetDocument.Insider.exe.config", - "tools/net461-x86/Microsoft.Win32.Primitives.dll", - "tools/net461-x86/System.AppContext.dll", - "tools/net461-x86/System.Buffers.dll", - "tools/net461-x86/System.Collections.Concurrent.dll", - "tools/net461-x86/System.Collections.NonGeneric.dll", - "tools/net461-x86/System.Collections.Specialized.dll", - "tools/net461-x86/System.Collections.dll", - "tools/net461-x86/System.ComponentModel.EventBasedAsync.dll", - "tools/net461-x86/System.ComponentModel.Primitives.dll", - "tools/net461-x86/System.ComponentModel.TypeConverter.dll", - "tools/net461-x86/System.ComponentModel.dll", - "tools/net461-x86/System.Console.dll", - "tools/net461-x86/System.Data.Common.dll", - "tools/net461-x86/System.Diagnostics.Contracts.dll", - "tools/net461-x86/System.Diagnostics.Debug.dll", - "tools/net461-x86/System.Diagnostics.DiagnosticSource.dll", - "tools/net461-x86/System.Diagnostics.FileVersionInfo.dll", - "tools/net461-x86/System.Diagnostics.Process.dll", - "tools/net461-x86/System.Diagnostics.StackTrace.dll", - "tools/net461-x86/System.Diagnostics.TextWriterTraceListener.dll", - "tools/net461-x86/System.Diagnostics.Tools.dll", - "tools/net461-x86/System.Diagnostics.TraceSource.dll", - "tools/net461-x86/System.Diagnostics.Tracing.dll", - "tools/net461-x86/System.Drawing.Primitives.dll", - "tools/net461-x86/System.Dynamic.Runtime.dll", - "tools/net461-x86/System.Globalization.Calendars.dll", - "tools/net461-x86/System.Globalization.Extensions.dll", - "tools/net461-x86/System.Globalization.dll", - "tools/net461-x86/System.IO.Compression.ZipFile.dll", - "tools/net461-x86/System.IO.Compression.dll", - "tools/net461-x86/System.IO.FileSystem.DriveInfo.dll", - "tools/net461-x86/System.IO.FileSystem.Primitives.dll", - "tools/net461-x86/System.IO.FileSystem.Watcher.dll", - "tools/net461-x86/System.IO.FileSystem.dll", - "tools/net461-x86/System.IO.IsolatedStorage.dll", - "tools/net461-x86/System.IO.MemoryMappedFiles.dll", - "tools/net461-x86/System.IO.Pipes.dll", - "tools/net461-x86/System.IO.UnmanagedMemoryStream.dll", - "tools/net461-x86/System.IO.dll", - "tools/net461-x86/System.Linq.Expressions.dll", - "tools/net461-x86/System.Linq.Parallel.dll", - "tools/net461-x86/System.Linq.Queryable.dll", - "tools/net461-x86/System.Linq.dll", - "tools/net461-x86/System.Memory.dll", - "tools/net461-x86/System.Net.Http.dll", - "tools/net461-x86/System.Net.NameResolution.dll", - "tools/net461-x86/System.Net.NetworkInformation.dll", - "tools/net461-x86/System.Net.Ping.dll", - "tools/net461-x86/System.Net.Primitives.dll", - "tools/net461-x86/System.Net.Requests.dll", - "tools/net461-x86/System.Net.Security.dll", - "tools/net461-x86/System.Net.Sockets.dll", - "tools/net461-x86/System.Net.WebHeaderCollection.dll", - "tools/net461-x86/System.Net.WebSockets.Client.dll", - "tools/net461-x86/System.Net.WebSockets.dll", - "tools/net461-x86/System.Numerics.Vectors.dll", - "tools/net461-x86/System.ObjectModel.dll", - "tools/net461-x86/System.Reflection.Extensions.dll", - "tools/net461-x86/System.Reflection.Primitives.dll", - "tools/net461-x86/System.Reflection.dll", - "tools/net461-x86/System.Resources.Reader.dll", - "tools/net461-x86/System.Resources.ResourceManager.dll", - "tools/net461-x86/System.Resources.Writer.dll", - "tools/net461-x86/System.Runtime.CompilerServices.Unsafe.dll", - "tools/net461-x86/System.Runtime.CompilerServices.VisualC.dll", - "tools/net461-x86/System.Runtime.Extensions.dll", - "tools/net461-x86/System.Runtime.Handles.dll", - "tools/net461-x86/System.Runtime.InteropServices.RuntimeInformation.dll", - "tools/net461-x86/System.Runtime.InteropServices.dll", - "tools/net461-x86/System.Runtime.Numerics.dll", - "tools/net461-x86/System.Runtime.Serialization.Formatters.dll", - "tools/net461-x86/System.Runtime.Serialization.Json.dll", - "tools/net461-x86/System.Runtime.Serialization.Primitives.dll", - "tools/net461-x86/System.Runtime.Serialization.Xml.dll", - "tools/net461-x86/System.Runtime.dll", - "tools/net461-x86/System.Security.Claims.dll", - "tools/net461-x86/System.Security.Cryptography.Algorithms.dll", - "tools/net461-x86/System.Security.Cryptography.Csp.dll", - "tools/net461-x86/System.Security.Cryptography.Encoding.dll", - "tools/net461-x86/System.Security.Cryptography.Primitives.dll", - "tools/net461-x86/System.Security.Cryptography.X509Certificates.dll", - "tools/net461-x86/System.Security.Principal.dll", - "tools/net461-x86/System.Security.SecureString.dll", - "tools/net461-x86/System.Text.Encoding.Extensions.dll", - "tools/net461-x86/System.Text.Encoding.dll", - "tools/net461-x86/System.Text.RegularExpressions.dll", - "tools/net461-x86/System.Threading.Overlapped.dll", - "tools/net461-x86/System.Threading.Tasks.Parallel.dll", - "tools/net461-x86/System.Threading.Tasks.dll", - "tools/net461-x86/System.Threading.Thread.dll", - "tools/net461-x86/System.Threading.ThreadPool.dll", - "tools/net461-x86/System.Threading.Timer.dll", - "tools/net461-x86/System.Threading.dll", - "tools/net461-x86/System.ValueTuple.dll", - "tools/net461-x86/System.Xml.ReaderWriter.dll", - "tools/net461-x86/System.Xml.XDocument.dll", - "tools/net461-x86/System.Xml.XPath.XDocument.dll", - "tools/net461-x86/System.Xml.XPath.dll", - "tools/net461-x86/System.Xml.XmlDocument.dll", - "tools/net461-x86/System.Xml.XmlSerializer.dll", - "tools/net461-x86/netstandard.dll", - "tools/net461/GetDocument.Insider.exe", - "tools/net461/GetDocument.Insider.exe.config", - "tools/net461/Microsoft.Win32.Primitives.dll", - "tools/net461/System.AppContext.dll", - "tools/net461/System.Buffers.dll", - "tools/net461/System.Collections.Concurrent.dll", - "tools/net461/System.Collections.NonGeneric.dll", - "tools/net461/System.Collections.Specialized.dll", - "tools/net461/System.Collections.dll", - "tools/net461/System.ComponentModel.EventBasedAsync.dll", - "tools/net461/System.ComponentModel.Primitives.dll", - "tools/net461/System.ComponentModel.TypeConverter.dll", - "tools/net461/System.ComponentModel.dll", - "tools/net461/System.Console.dll", - "tools/net461/System.Data.Common.dll", - "tools/net461/System.Diagnostics.Contracts.dll", - "tools/net461/System.Diagnostics.Debug.dll", - "tools/net461/System.Diagnostics.DiagnosticSource.dll", - "tools/net461/System.Diagnostics.FileVersionInfo.dll", - "tools/net461/System.Diagnostics.Process.dll", - "tools/net461/System.Diagnostics.StackTrace.dll", - "tools/net461/System.Diagnostics.TextWriterTraceListener.dll", - "tools/net461/System.Diagnostics.Tools.dll", - "tools/net461/System.Diagnostics.TraceSource.dll", - "tools/net461/System.Diagnostics.Tracing.dll", - "tools/net461/System.Drawing.Primitives.dll", - "tools/net461/System.Dynamic.Runtime.dll", - "tools/net461/System.Globalization.Calendars.dll", - "tools/net461/System.Globalization.Extensions.dll", - "tools/net461/System.Globalization.dll", - "tools/net461/System.IO.Compression.ZipFile.dll", - "tools/net461/System.IO.Compression.dll", - "tools/net461/System.IO.FileSystem.DriveInfo.dll", - "tools/net461/System.IO.FileSystem.Primitives.dll", - "tools/net461/System.IO.FileSystem.Watcher.dll", - "tools/net461/System.IO.FileSystem.dll", - "tools/net461/System.IO.IsolatedStorage.dll", - "tools/net461/System.IO.MemoryMappedFiles.dll", - "tools/net461/System.IO.Pipes.dll", - "tools/net461/System.IO.UnmanagedMemoryStream.dll", - "tools/net461/System.IO.dll", - "tools/net461/System.Linq.Expressions.dll", - "tools/net461/System.Linq.Parallel.dll", - "tools/net461/System.Linq.Queryable.dll", - "tools/net461/System.Linq.dll", - "tools/net461/System.Memory.dll", - "tools/net461/System.Net.Http.dll", - "tools/net461/System.Net.NameResolution.dll", - "tools/net461/System.Net.NetworkInformation.dll", - "tools/net461/System.Net.Ping.dll", - "tools/net461/System.Net.Primitives.dll", - "tools/net461/System.Net.Requests.dll", - "tools/net461/System.Net.Security.dll", - "tools/net461/System.Net.Sockets.dll", - "tools/net461/System.Net.WebHeaderCollection.dll", - "tools/net461/System.Net.WebSockets.Client.dll", - "tools/net461/System.Net.WebSockets.dll", - "tools/net461/System.Numerics.Vectors.dll", - "tools/net461/System.ObjectModel.dll", - "tools/net461/System.Reflection.Extensions.dll", - "tools/net461/System.Reflection.Primitives.dll", - "tools/net461/System.Reflection.dll", - "tools/net461/System.Resources.Reader.dll", - "tools/net461/System.Resources.ResourceManager.dll", - "tools/net461/System.Resources.Writer.dll", - "tools/net461/System.Runtime.CompilerServices.Unsafe.dll", - "tools/net461/System.Runtime.CompilerServices.VisualC.dll", - "tools/net461/System.Runtime.Extensions.dll", - "tools/net461/System.Runtime.Handles.dll", - "tools/net461/System.Runtime.InteropServices.RuntimeInformation.dll", - "tools/net461/System.Runtime.InteropServices.dll", - "tools/net461/System.Runtime.Numerics.dll", - "tools/net461/System.Runtime.Serialization.Formatters.dll", - "tools/net461/System.Runtime.Serialization.Json.dll", - "tools/net461/System.Runtime.Serialization.Primitives.dll", - "tools/net461/System.Runtime.Serialization.Xml.dll", - "tools/net461/System.Runtime.dll", - "tools/net461/System.Security.Claims.dll", - "tools/net461/System.Security.Cryptography.Algorithms.dll", - "tools/net461/System.Security.Cryptography.Csp.dll", - "tools/net461/System.Security.Cryptography.Encoding.dll", - "tools/net461/System.Security.Cryptography.Primitives.dll", - "tools/net461/System.Security.Cryptography.X509Certificates.dll", - "tools/net461/System.Security.Principal.dll", - "tools/net461/System.Security.SecureString.dll", - "tools/net461/System.Text.Encoding.Extensions.dll", - "tools/net461/System.Text.Encoding.dll", - "tools/net461/System.Text.RegularExpressions.dll", - "tools/net461/System.Threading.Overlapped.dll", - "tools/net461/System.Threading.Tasks.Parallel.dll", - "tools/net461/System.Threading.Tasks.dll", - "tools/net461/System.Threading.Thread.dll", - "tools/net461/System.Threading.ThreadPool.dll", - "tools/net461/System.Threading.Timer.dll", - "tools/net461/System.Threading.dll", - "tools/net461/System.ValueTuple.dll", - "tools/net461/System.Xml.ReaderWriter.dll", - "tools/net461/System.Xml.XDocument.dll", - "tools/net461/System.Xml.XPath.XDocument.dll", - "tools/net461/System.Xml.XPath.dll", - "tools/net461/System.Xml.XmlDocument.dll", - "tools/net461/System.Xml.XmlSerializer.dll", - "tools/net461/netstandard.dll", - "tools/netcoreapp2.1/GetDocument.Insider.deps.json", - "tools/netcoreapp2.1/GetDocument.Insider.dll", - "tools/netcoreapp2.1/GetDocument.Insider.runtimeconfig.json", - "tools/netcoreapp2.1/System.Diagnostics.DiagnosticSource.dll" - ] - }, - "Microsoft.Extensions.Caching.Abstractions/9.0.0": { - "sha512": "FPWZAa9c0H4dvOj351iR1jkUIs4u9ykL4Bm592yhjDyO5lCoWd+TMAHx2EMbarzUvCvgjWjJIoC6//Q9kH6YhA==", - "type": "package", - "path": "microsoft.extensions.caching.abstractions/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.Caching.Abstractions.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Abstractions.targets", - "lib/net462/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/net462/Microsoft.Extensions.Caching.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.xml", - "lib/net9.0/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/net9.0/Microsoft.Extensions.Caching.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml", - "microsoft.extensions.caching.abstractions.9.0.0.nupkg.sha512", - "microsoft.extensions.caching.abstractions.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Caching.Memory/9.0.0": { - "sha512": "zbnPX/JQ0pETRSUG9fNPBvpIq42Aufvs15gGYyNIMhCun9yhmWihz0WgsI7bSDPjxWTKBf8oX/zv6v2uZ3W9OQ==", - "type": "package", - "path": "microsoft.extensions.caching.memory/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.Caching.Memory.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Memory.targets", - "lib/net462/Microsoft.Extensions.Caching.Memory.dll", - "lib/net462/Microsoft.Extensions.Caching.Memory.xml", - "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll", - "lib/net8.0/Microsoft.Extensions.Caching.Memory.xml", - "lib/net9.0/Microsoft.Extensions.Caching.Memory.dll", - "lib/net9.0/Microsoft.Extensions.Caching.Memory.xml", - "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll", - "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml", - "microsoft.extensions.caching.memory.9.0.0.nupkg.sha512", - "microsoft.extensions.caching.memory.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Configuration.Abstractions/9.0.0": { - "sha512": "lqvd7W3FGKUO1+ZoUEMaZ5XDJeWvjpy2/M/ptCGz3tXLD4HWVaSzjufsAsjemasBEg+2SxXVtYVvGt5r2nKDlg==", - "type": "package", - "path": "microsoft.extensions.configuration.abstractions/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.Configuration.Abstractions.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Abstractions.targets", - "lib/net462/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/net462/Microsoft.Extensions.Configuration.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.xml", - "lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", - "microsoft.extensions.configuration.abstractions.9.0.0.nupkg.sha512", - "microsoft.extensions.configuration.abstractions.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.DependencyInjection/9.0.0": { - "sha512": "MCPrg7v3QgNMr0vX4vzRXvkNGgLg8vKWX0nKCWUxu2uPyMsaRgiRc1tHBnbTcfJMhMKj2slE/j2M9oGkd25DNw==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets", - "lib/net462/Microsoft.Extensions.DependencyInjection.dll", - "lib/net462/Microsoft.Extensions.DependencyInjection.xml", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/net9.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/net9.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", - "microsoft.extensions.dependencyinjection.9.0.0.nupkg.sha512", - "microsoft.extensions.dependencyinjection.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/9.0.0": { - "sha512": "+6f2qv2a3dLwd5w6JanPIPs47CxRbnk+ZocMJUhv9NxP88VlOcJYZs9jY+MYSjxvady08bUZn6qgiNh7DadGgg==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection.abstractions/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", - "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "microsoft.extensions.dependencyinjection.abstractions.9.0.0.nupkg.sha512", - "microsoft.extensions.dependencyinjection.abstractions.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.DependencyModel/9.0.0": { - "sha512": "saxr2XzwgDU77LaQfYFXmddEDRUKHF4DaGMZkNB3qjdVSZlax3//dGJagJkKrGMIPNZs2jVFXITyCCR6UHJNdA==", - "type": "package", - "path": "microsoft.extensions.dependencymodel/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.DependencyModel.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyModel.targets", - "lib/net462/Microsoft.Extensions.DependencyModel.dll", - "lib/net462/Microsoft.Extensions.DependencyModel.xml", - "lib/net8.0/Microsoft.Extensions.DependencyModel.dll", - "lib/net8.0/Microsoft.Extensions.DependencyModel.xml", - "lib/net9.0/Microsoft.Extensions.DependencyModel.dll", - "lib/net9.0/Microsoft.Extensions.DependencyModel.xml", - "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.xml", - "microsoft.extensions.dependencymodel.9.0.0.nupkg.sha512", - "microsoft.extensions.dependencymodel.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Logging/9.0.0": { - "sha512": "crjWyORoug0kK7RSNJBTeSE6VX8IQgLf3nUpTB9m62bPXp/tzbnOsnbe8TXEG0AASNaKZddnpHKw7fET8E++Pg==", - "type": "package", - "path": "microsoft.extensions.logging/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.Logging.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets", - "lib/net462/Microsoft.Extensions.Logging.dll", - "lib/net462/Microsoft.Extensions.Logging.xml", - "lib/net8.0/Microsoft.Extensions.Logging.dll", - "lib/net8.0/Microsoft.Extensions.Logging.xml", - "lib/net9.0/Microsoft.Extensions.Logging.dll", - "lib/net9.0/Microsoft.Extensions.Logging.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", - "lib/netstandard2.1/Microsoft.Extensions.Logging.dll", - "lib/netstandard2.1/Microsoft.Extensions.Logging.xml", - "microsoft.extensions.logging.9.0.0.nupkg.sha512", - "microsoft.extensions.logging.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Logging.Abstractions/9.0.0": { - "sha512": "g0UfujELzlLbHoVG8kPKVBaW470Ewi+jnptGS9KUi6jcb+k2StujtK3m26DFSGGwQ/+bVgZfsWqNzlP6YOejvw==", - "type": "package", - "path": "microsoft.extensions.logging.abstractions/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll", - "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll", - "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll", - "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", - "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", - "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", - "microsoft.extensions.logging.abstractions.9.0.0.nupkg.sha512", - "microsoft.extensions.logging.abstractions.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Options/9.0.0": { - "sha512": "y2146b3jrPI3Q0lokKXdKLpmXqakYbDIPDV6r3M8SqvSf45WwOTzkyfDpxnZXJsJQEpAsAqjUq5Pu8RCJMjubg==", - "type": "package", - "path": "microsoft.extensions.options/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll", - "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "buildTransitive/net461/Microsoft.Extensions.Options.targets", - "buildTransitive/net462/Microsoft.Extensions.Options.targets", - "buildTransitive/net8.0/Microsoft.Extensions.Options.targets", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets", - "buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets", - "lib/net462/Microsoft.Extensions.Options.dll", - "lib/net462/Microsoft.Extensions.Options.xml", - "lib/net8.0/Microsoft.Extensions.Options.dll", - "lib/net8.0/Microsoft.Extensions.Options.xml", - "lib/net9.0/Microsoft.Extensions.Options.dll", - "lib/net9.0/Microsoft.Extensions.Options.xml", - "lib/netstandard2.0/Microsoft.Extensions.Options.dll", - "lib/netstandard2.0/Microsoft.Extensions.Options.xml", - "lib/netstandard2.1/Microsoft.Extensions.Options.dll", - "lib/netstandard2.1/Microsoft.Extensions.Options.xml", - "microsoft.extensions.options.9.0.0.nupkg.sha512", - "microsoft.extensions.options.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Primitives/9.0.0": { - "sha512": "N3qEBzmLMYiASUlKxxFIISP4AiwuPTHF5uCh+2CWSwwzAJiIYx0kBJsS30cp1nvhSySFAVi30jecD307jV+8Kg==", - "type": "package", - "path": "microsoft.extensions.primitives/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.Primitives.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets", - "lib/net462/Microsoft.Extensions.Primitives.dll", - "lib/net462/Microsoft.Extensions.Primitives.xml", - "lib/net8.0/Microsoft.Extensions.Primitives.dll", - "lib/net8.0/Microsoft.Extensions.Primitives.xml", - "lib/net9.0/Microsoft.Extensions.Primitives.dll", - "lib/net9.0/Microsoft.Extensions.Primitives.xml", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", - "microsoft.extensions.primitives.9.0.0.nupkg.sha512", - "microsoft.extensions.primitives.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.OpenApi/1.6.22": { - "sha512": "aBvunmrdu/x+4CaA/UP1Jx4xWGwk4kymhoIRnn2Vp+zi5/KOPQJ9EkSXHRUr01WcGKtYl3Au7XfkPJbU1G2sjQ==", - "type": "package", - "path": "microsoft.openapi/1.6.22", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "lib/netstandard2.0/Microsoft.OpenApi.dll", - "lib/netstandard2.0/Microsoft.OpenApi.pdb", - "lib/netstandard2.0/Microsoft.OpenApi.xml", - "microsoft.openapi.1.6.22.nupkg.sha512", - "microsoft.openapi.nuspec" - ] - }, - "RJCP.Core.Environment/0.3.0": { - "sha512": "LTNnaHJ6bcA698eRVnMwDVlWEv0q3FUKxQ18Dxv5N0ivfJVwM8Bf+QTBsBPoFrowXqvSJ3Of4ZufPoHPauF7FA==", - "type": "package", - "path": "rjcp.core.environment/0.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.md", - "README.md", - "lib/net40/RJCP.Core.Environment.dll", - "lib/net40/RJCP.Core.Environment.pdb", - "lib/net40/RJCP.Core.Environment.xml", - "lib/net40/de/RJCP.Core.Environment.resources.dll", - "lib/net6.0/RJCP.Core.Environment.dll", - "lib/net6.0/RJCP.Core.Environment.pdb", - "lib/net6.0/RJCP.Core.Environment.xml", - "lib/net6.0/de/RJCP.Core.Environment.resources.dll", - "lib/net8.0/RJCP.Core.Environment.dll", - "lib/net8.0/RJCP.Core.Environment.pdb", - "lib/net8.0/RJCP.Core.Environment.xml", - "lib/net8.0/de/RJCP.Core.Environment.resources.dll", - "rjcp.core.environment.0.3.0.nupkg.sha512", - "rjcp.core.environment.nuspec", - "src/Environment/Platform.cs", - "src/Environment/Properties/AssemblyInfo.cs", - "src/Environment/RJCP.Environment.csproj", - "src/Environment/Resources/Messages.Designer.cs", - "src/Environment/Resources/Messages.de.resx", - "src/Environment/Resources/Messages.resx", - "src/Environment/Xdg.IXdgResolver.cs", - "src/Environment/Xdg.SpecialFolder.cs", - "src/Environment/Xdg.XdgUnix.cs", - "src/Environment/Xdg.XdgUnknown.cs", - "src/Environment/Xdg.XdgWindows.cs", - "src/Environment/Xdg.cs" - ] - }, - "RJCP.Core.SysCompat/0.2.0": { - "sha512": "FlMmlbneu3IOtN7oebY3InUbahsMcBfY7Q1+LBxBRJqJKWwT0+ALmshKpqd4ebzB2jItXF5Sgk7OWH47AiSAYQ==", - "type": "package", - "path": "rjcp.core.syscompat/0.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.md", - "README.md", - "lib/net40/RJCP.Core.SysCompat.dll", - "lib/net40/RJCP.Core.SysCompat.pdb", - "lib/net40/RJCP.Core.SysCompat.xml", - "lib/net462/RJCP.Core.SysCompat.dll", - "lib/net462/RJCP.Core.SysCompat.pdb", - "lib/net462/RJCP.Core.SysCompat.xml", - "lib/net6.0/RJCP.Core.SysCompat.dll", - "lib/net6.0/RJCP.Core.SysCompat.pdb", - "lib/net6.0/RJCP.Core.SysCompat.xml", - "lib/net8.0/RJCP.Core.SysCompat.dll", - "lib/net8.0/RJCP.Core.SysCompat.pdb", - "lib/net8.0/RJCP.Core.SysCompat.xml", - "rjcp.core.syscompat.0.2.0.nupkg.sha512", - "rjcp.core.syscompat.nuspec", - "src/SysCompat/Properties/AssemblyInfo.cs", - "src/SysCompat/RJCP.Core.SysCompat.csproj", - "src/SysCompat/System/Diagnostics/CodeAnalysis/DoesNotReturnAttribute.cs", - "src/SysCompat/System/Runtime/CompilerServices/CallerArgumentExpressionAttribute.cs", - "src/SysCompat/System/Runtime/Versioning/OSPlatformAttribute.cs", - "src/SysCompat/System/Runtime/Versioning/SupportedOSPlatformAttribute.cs", - "src/SysCompat/System/ThrowHelper+ArgumentNullException.cs", - "src/SysCompat/System/ThrowHelper+ArgumentOutOfRangeException.cs", - "src/SysCompat/System/ThrowHelper+Array.cs", - "src/SysCompat/System/ThrowHelper+Enum.cs", - "src/SysCompat/System/ThrowHelper+ObjectDisposedException.cs" - ] - }, - "RJCP.Diagnostics.Trace/0.2.1": { - "sha512": "g7572Ox0uNwXQ6LILKSsP/euzZKFmkCIA98qmCrwuchAMr8YbXZd03BGct5j9XCItrY4wcHNRh503DV4uJjt7Q==", - "type": "package", - "path": "rjcp.diagnostics.trace/0.2.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.md", - "README.md", - "lib/net40/RJCP.Diagnostics.Trace.dll", - "lib/net40/RJCP.Diagnostics.Trace.pdb", - "lib/net40/RJCP.Diagnostics.Trace.xml", - "lib/net6.0/RJCP.Diagnostics.Trace.dll", - "lib/net6.0/RJCP.Diagnostics.Trace.pdb", - "lib/net6.0/RJCP.Diagnostics.Trace.xml", - "lib/net8.0/RJCP.Diagnostics.Trace.dll", - "lib/net8.0/RJCP.Diagnostics.Trace.pdb", - "lib/net8.0/RJCP.Diagnostics.Trace.xml", - "rjcp.diagnostics.trace.0.2.1.nupkg.sha512", - "rjcp.diagnostics.trace.nuspec", - "src/Trace/Internal/LineSplitter.cs", - "src/Trace/LogSource.cs", - "src/Trace/LoggerTraceListener.cs", - "src/Trace/Properties/AssemblyInfo.cs", - "src/Trace/RJCP.Diagnostics.Trace.csproj" - ] - }, - "RJCP.IO.Buffer/0.2.1": { - "sha512": "P8k0OTxuzHqe+xaYuhGmmwKeLgkH610UMwSn13cEhrz01s8XY2ibb1pV0Kvkei44fomno8SvbgpuPr0WkW1bzg==", - "type": "package", - "path": "rjcp.io.buffer/0.2.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.md", - "README.md", - "lib/net40/RJCP.IO.Buffer.dll", - "lib/net40/RJCP.IO.Buffer.pdb", - "lib/net40/RJCP.IO.Buffer.xml", - "lib/net462/RJCP.IO.Buffer.dll", - "lib/net462/RJCP.IO.Buffer.pdb", - "lib/net462/RJCP.IO.Buffer.xml", - "lib/net6.0/RJCP.IO.Buffer.dll", - "lib/net6.0/RJCP.IO.Buffer.pdb", - "lib/net6.0/RJCP.IO.Buffer.xml", - "lib/net8.0/RJCP.IO.Buffer.dll", - "lib/net8.0/RJCP.IO.Buffer.pdb", - "lib/net8.0/RJCP.IO.Buffer.xml", - "rjcp.io.buffer.0.2.1.nupkg.sha512", - "rjcp.io.buffer.nuspec", - "src/BufferIO/AsyncResult.cs", - "src/BufferIO/AsyncResultT.cs", - "src/BufferIO/Buffer/CircularBuffer.cs", - "src/BufferIO/Buffer/CircularBufferExtensions.cs", - "src/BufferIO/Buffer/Memory/IReadBuffer.cs", - "src/BufferIO/Buffer/Memory/IReadBufferStream.cs", - "src/BufferIO/Buffer/Memory/IWriteBuffer.cs", - "src/BufferIO/Buffer/Memory/IWriteBufferStream.cs", - "src/BufferIO/Buffer/MemoryReadBuffer.cs", - "src/BufferIO/Buffer/MemoryWriteBuffer.cs", - "src/BufferIO/Properties/AssemblyInfo.cs", - "src/BufferIO/RJCP.IO.Buffer.csproj", - "src/BufferIO/Resources.Designer.cs", - "src/BufferIO/Resources.resx", - "src/BufferIO/Timer/TimerExpiry.cs" - ] - }, - "RJCP.IO.Device/0.8.1": { - "sha512": "WDx+5EJyIUx4tE8pJaXIXBony5GgDlbZUlLDHv4RLlVv62KunuPPImO66YJrKMkCDy5eSsSNVNYNGd0jxwkTLg==", - "type": "package", - "path": "rjcp.io.device/0.8.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.md", - "README.md", - "lib/net40/RJCP.IO.Device.dll", - "lib/net40/RJCP.IO.Device.pdb", - "lib/net40/RJCP.IO.Device.xml", - "lib/net462/RJCP.IO.Device.dll", - "lib/net462/RJCP.IO.Device.pdb", - "lib/net462/RJCP.IO.Device.xml", - "lib/net6.0/RJCP.IO.Device.dll", - "lib/net6.0/RJCP.IO.Device.pdb", - "lib/net6.0/RJCP.IO.Device.xml", - "lib/net8.0/RJCP.IO.Device.dll", - "lib/net8.0/RJCP.IO.Device.pdb", - "lib/net8.0/RJCP.IO.Device.xml", - "rjcp.io.device.0.8.1.nupkg.sha512", - "rjcp.io.device.nuspec", - "src/DeviceMgr/GlobalSuppressions.cs", - "src/DeviceMgr/IO/DeviceMgr/DeviceCapabilities.cs", - "src/DeviceMgr/IO/DeviceMgr/DeviceInstance.cs", - "src/DeviceMgr/IO/DeviceMgr/DeviceProblem.cs", - "src/DeviceMgr/IO/DeviceMgr/DeviceProperty.cs", - "src/DeviceMgr/IO/DeviceMgr/DeviceStatus.cs", - "src/DeviceMgr/IO/DeviceMgr/LocateMode.cs", - "src/DeviceMgr/IO/DeviceMgr/Log.cs", - "src/DeviceMgr/IO/DeviceMgr/ReadOnlyList.cs", - "src/DeviceMgr/Native/Marshalling.cs", - "src/DeviceMgr/Native/Win32/CfgMgr32+CM_DRP.cs", - "src/DeviceMgr/Native/Win32/CfgMgr32+CM_LOCATE_DEVINST.cs", - "src/DeviceMgr/Native/Win32/CfgMgr32+CONFIGRET.cs", - "src/DeviceMgr/Native/Win32/CfgMgr32+DN_STATUS.cs", - "src/DeviceMgr/Native/Win32/CfgMgr32+RegDisposition.cs", - "src/DeviceMgr/Native/Win32/CfgMgr32.Managed.cs", - "src/DeviceMgr/Native/Win32/CfgMgr32.cs", - "src/DeviceMgr/Native/Win32/Kernel32+GetOsVersion.cs", - "src/DeviceMgr/Native/Win32/Kernel32+OSVERSIONINFO.cs", - "src/DeviceMgr/Native/Win32/Kernel32+OSVERSIONINFOEX.cs", - "src/DeviceMgr/Native/Win32/Kernel32+REGSAM.cs", - "src/DeviceMgr/Native/Win32/Kernel32+REG_DATATYPE.cs", - "src/DeviceMgr/Native/Win32/Kernel32+WinPlatformId.cs", - "src/DeviceMgr/Native/Win32/Kernel32.cs", - "src/DeviceMgr/Native/Win32/NtDll.cs", - "src/DeviceMgr/Native/Win32/SafeDevInst.cs", - "src/DeviceMgr/Properties/AssemblyInfo.cs", - "src/DeviceMgr/RJCP.IO.DeviceMgr.csproj" - ] - }, - "RJCP.SerialPortStream/3.0.1": { - "sha512": "CJ9mdcxZ1lfYEO8KJkH2V+9mRZC7J1RDnW8Xzgb+bGtPTEof8stYGbB1GD0MKnQJZRbn8Hrfrpn6r+Dq2LkpCA==", - "type": "package", - "path": "rjcp.serialportstream/3.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.md", - "README.md", - "lib/net40/RJCP.SerialPortStream.dll", - "lib/net40/RJCP.SerialPortStream.pdb", - "lib/net40/RJCP.SerialPortStream.xml", - "lib/net462/RJCP.SerialPortStream.dll", - "lib/net462/RJCP.SerialPortStream.pdb", - "lib/net462/RJCP.SerialPortStream.xml", - "lib/net6.0/RJCP.SerialPortStream.dll", - "lib/net6.0/RJCP.SerialPortStream.pdb", - "lib/net6.0/RJCP.SerialPortStream.xml", - "lib/net8.0/RJCP.SerialPortStream.dll", - "lib/net8.0/RJCP.SerialPortStream.pdb", - "lib/net8.0/RJCP.SerialPortStream.xml", - "rjcp.serialportstream.3.0.1.nupkg.sha512", - "rjcp.serialportstream.nuspec", - "src/code/Datastructures/ReusableList.cs", - "src/code/GlobalSuppressions.cs", - "src/code/HandShake.cs", - "src/code/ISerialPortStreamFactory.cs", - "src/code/InternalApplicationException.cs", - "src/code/Log.cs", - "src/code/Native/Unix/LibNSerial+Dll.cs", - "src/code/Native/Unix/LibNSerial+SafeSerialHandle.cs", - "src/code/Native/Unix/LibNSerial+SerialReadWriteEvent.cs", - "src/code/Native/Unix/LibNSerial+SysErrNo.cs", - "src/code/Native/Unix/LibNSerial+WaitForModemEvent.cs", - "src/code/Native/Unix/LibNSerial.cs", - "src/code/Native/Win32/Kernel32+COMMTIMEOUTS.cs", - "src/code/Native/Win32/Kernel32+COMSTAT.cs", - "src/code/Native/Win32/Kernel32+ComStatErrors.cs", - "src/code/Native/Win32/Kernel32+ComStatFlags.cs", - "src/code/Native/Win32/Kernel32+CommProp.cs", - "src/code/Native/Win32/Kernel32+CreationDisposition.cs", - "src/code/Native/Win32/Kernel32+DCB.cs", - "src/code/Native/Win32/Kernel32+DcbFlags.cs", - "src/code/Native/Win32/Kernel32+ExtendedFunctions.cs", - "src/code/Native/Win32/Kernel32+FileAccess.cs", - "src/code/Native/Win32/Kernel32+FileAttributes.cs", - "src/code/Native/Win32/Kernel32+FileShare.cs", - "src/code/Native/Win32/Kernel32+FileType.cs", - "src/code/Native/Win32/Kernel32+MaxBaud.cs", - "src/code/Native/Win32/Kernel32+ModemStat.cs", - "src/code/Native/Win32/Kernel32+ProvCapabilities.cs", - "src/code/Native/Win32/Kernel32+ProvSubType.cs", - "src/code/Native/Win32/Kernel32+PurgeFlags.cs", - "src/code/Native/Win32/Kernel32+SerialEventMask.cs", - "src/code/Native/Win32/Kernel32+SettableData.cs", - "src/code/Native/Win32/Kernel32+SettableParams.cs", - "src/code/Native/Win32/Kernel32+SettableStopParity.cs", - "src/code/Native/Win32/Kernel32.cs", - "src/code/Native/Win32/WinError.cs", - "src/code/Parity.cs", - "src/code/PortDescription.cs", - "src/code/Properties/AssemblyInfo.cs", - "src/code/Serial/INativeSerial.T.cs", - "src/code/Serial/INativeSerial.cs", - "src/code/Serial/IReadChars.cs", - "src/code/Serial/ISerialReadBuffer.cs", - "src/code/Serial/ISerialWriteBuffer.cs", - "src/code/Serial/IWinNativeSettings.cs", - "src/code/Serial/SerialBuffer.cs", - "src/code/Serial/SerialBufferEventArgs.cs", - "src/code/Serial/SerialReadBuffer.cs", - "src/code/Serial/SerialWriteBuffer.cs", - "src/code/Serial/UnixNativeSerial.cs", - "src/code/Serial/WinNativeSerial.cs", - "src/code/Serial/Windows/CommErrorEventArgs.cs", - "src/code/Serial/Windows/CommEventArgs.cs", - "src/code/Serial/Windows/CommModemStatus.cs", - "src/code/Serial/Windows/CommOverlappedIo.cs", - "src/code/Serial/Windows/CommProperties.cs", - "src/code/Serial/Windows/CommState.cs", - "src/code/Serial/Windows/DtrControl.cs", - "src/code/Serial/Windows/RtsControl.cs", - "src/code/Serial/Windows/WinNativeSettings.cs", - "src/code/SerialData.cs", - "src/code/SerialDataEventArgs.cs", - "src/code/SerialError.cs", - "src/code/SerialErrorReceivedEventArgs.cs", - "src/code/SerialPinChange.cs", - "src/code/SerialPinChangedEventArgs.cs", - "src/code/SerialPortStream.T.cs", - "src/code/SerialPortStream.cs", - "src/code/SerialPortStream.csproj", - "src/code/SerialPortStreamFactory.cs", - "src/code/StopBits.cs", - "src/code/WinSerialPortStream.cs" - ] - }, - "runtime.android-arm.runtime.native.System.IO.Ports/9.0.0": { - "sha512": "zF8HT4aoFZkWF4OxhFLxUNEfoIjyILg0aQhgIR3m+dbLE4yadMd7kdctMvPhYYaVpnilmBCIjiQsrxH4UC/JxQ==", - "type": "package", - "path": "runtime.android-arm.runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.android-arm.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.android-arm.runtime.native.system.io.ports.nuspec", - "runtimes/android-arm/native/libSystem.IO.Ports.Native.so", - "runtimes/android-arm64/native/_._", - "runtimes/android-x64/native/_._", - "runtimes/android-x86/native/_._", - "runtimes/linux-arm/native/_._", - "runtimes/linux-arm64/native/_._", - "runtimes/linux-bionic-arm64/native/_._", - "runtimes/linux-bionic-x64/native/_._", - "runtimes/linux-musl-arm/native/_._", - "runtimes/linux-musl-arm64/native/_._", - "runtimes/linux-musl-x64/native/_._", - "runtimes/linux-x64/native/_._", - "runtimes/maccatalyst-arm64/native/_._", - "runtimes/maccatalyst-x64/native/_._", - "runtimes/osx-arm64/native/_._", - "runtimes/osx-x64/native/_._", - "useSharedDesignerContext.txt" - ] - }, - "runtime.android-arm64.runtime.native.System.IO.Ports/9.0.0": { - "sha512": "JVRoxUTXhyFfDak3GLbZh9oPjz+eVJwiZQWOU/TQ1Nj7us11GMc97IBsRzjGDtGJvFOWhGhEkka8SYmVcwpA2A==", - "type": "package", - "path": "runtime.android-arm64.runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.android-arm64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.android-arm64.runtime.native.system.io.ports.nuspec", - "runtimes/android-arm/native/_._", - "runtimes/android-arm64/native/libSystem.IO.Ports.Native.so", - "runtimes/android-x64/native/_._", - "runtimes/android-x86/native/_._", - "runtimes/linux-arm/native/_._", - "runtimes/linux-arm64/native/_._", - "runtimes/linux-bionic-arm64/native/_._", - "runtimes/linux-bionic-x64/native/_._", - "runtimes/linux-musl-arm/native/_._", - "runtimes/linux-musl-arm64/native/_._", - "runtimes/linux-musl-x64/native/_._", - "runtimes/linux-x64/native/_._", - "runtimes/maccatalyst-arm64/native/_._", - "runtimes/maccatalyst-x64/native/_._", - "runtimes/osx-arm64/native/_._", - "runtimes/osx-x64/native/_._", - "useSharedDesignerContext.txt" - ] - }, - "runtime.android-x64.runtime.native.System.IO.Ports/9.0.0": { - "sha512": "QMWQv8nptbkzEDPUOmVwo3l/ve1pgApqv/eGY/eIJoNCGxUP6MYUu/GHdznRaBlSkuRyhFN8osVyqZMFKlBA7g==", - "type": "package", - "path": "runtime.android-x64.runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.android-x64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.android-x64.runtime.native.system.io.ports.nuspec", - "runtimes/android-arm/native/_._", - "runtimes/android-arm64/native/_._", - "runtimes/android-x64/native/libSystem.IO.Ports.Native.so", - "runtimes/android-x86/native/_._", - "runtimes/linux-arm/native/_._", - "runtimes/linux-arm64/native/_._", - "runtimes/linux-bionic-arm64/native/_._", - "runtimes/linux-bionic-x64/native/_._", - "runtimes/linux-musl-arm/native/_._", - "runtimes/linux-musl-arm64/native/_._", - "runtimes/linux-musl-x64/native/_._", - "runtimes/linux-x64/native/_._", - "runtimes/maccatalyst-arm64/native/_._", - "runtimes/maccatalyst-x64/native/_._", - "runtimes/osx-arm64/native/_._", - "runtimes/osx-x64/native/_._", - "useSharedDesignerContext.txt" - ] - }, - "runtime.android-x86.runtime.native.System.IO.Ports/9.0.0": { - "sha512": "NRuTmUukSfpbv1wdJJXvWE/v1+aRHw5OxEODGeyKuFGy09uZIfFsdU1SPXB1cGPHsUaZRhZfOVel30zEgRQiUw==", - "type": "package", - "path": "runtime.android-x86.runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.android-x86.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.android-x86.runtime.native.system.io.ports.nuspec", - "runtimes/android-arm/native/_._", - "runtimes/android-arm64/native/_._", - "runtimes/android-x64/native/_._", - "runtimes/android-x86/native/libSystem.IO.Ports.Native.so", - "runtimes/linux-arm/native/_._", - "runtimes/linux-arm64/native/_._", - "runtimes/linux-bionic-arm64/native/_._", - "runtimes/linux-bionic-x64/native/_._", - "runtimes/linux-musl-arm/native/_._", - "runtimes/linux-musl-arm64/native/_._", - "runtimes/linux-musl-x64/native/_._", - "runtimes/linux-x64/native/_._", - "runtimes/maccatalyst-arm64/native/_._", - "runtimes/maccatalyst-x64/native/_._", - "runtimes/osx-arm64/native/_._", - "runtimes/osx-x64/native/_._", - "useSharedDesignerContext.txt" - ] - }, - "runtime.linux-arm.runtime.native.System.IO.Ports/9.0.0": { - "sha512": "l5/3/3LfkemzovK66DrxsbGXRXIgmHaqYaYdhFR09lawWbPHhq4HJ0u2FzO+/neidm8bJtJAV6+iixMDuYIBgg==", - "type": "package", - "path": "runtime.linux-arm.runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.linux-arm.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.linux-arm.runtime.native.system.io.ports.nuspec", - "runtimes/android-arm/native/_._", - "runtimes/android-arm64/native/_._", - "runtimes/android-x64/native/_._", - "runtimes/android-x86/native/_._", - "runtimes/linux-arm/native/libSystem.IO.Ports.Native.so", - "runtimes/linux-arm64/native/_._", - "runtimes/linux-bionic-arm64/native/_._", - "runtimes/linux-bionic-x64/native/_._", - "runtimes/linux-musl-arm/native/_._", - "runtimes/linux-musl-arm64/native/_._", - "runtimes/linux-musl-x64/native/_._", - "runtimes/linux-x64/native/_._", - "runtimes/maccatalyst-arm64/native/_._", - "runtimes/maccatalyst-x64/native/_._", - "runtimes/osx-arm64/native/_._", - "runtimes/osx-x64/native/_._", - "useSharedDesignerContext.txt" - ] - }, - "runtime.linux-arm64.runtime.native.System.IO.Ports/9.0.0": { - "sha512": "q69FDpp5XSq3lJUMyMpUXBXTh6ekNM1NCnM5aYYiIx4AY1cH/rgLSwR4n2wQJqC6yuL0Z/epSf3KoYLYT8++Yg==", - "type": "package", - "path": "runtime.linux-arm64.runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.linux-arm64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.linux-arm64.runtime.native.system.io.ports.nuspec", - "runtimes/android-arm/native/_._", - "runtimes/android-arm64/native/_._", - "runtimes/android-x64/native/_._", - "runtimes/android-x86/native/_._", - "runtimes/linux-arm/native/_._", - "runtimes/linux-arm64/native/libSystem.IO.Ports.Native.so", - "runtimes/linux-bionic-arm64/native/_._", - "runtimes/linux-bionic-x64/native/_._", - "runtimes/linux-musl-arm/native/_._", - "runtimes/linux-musl-arm64/native/_._", - "runtimes/linux-musl-x64/native/_._", - "runtimes/linux-x64/native/_._", - "runtimes/maccatalyst-arm64/native/_._", - "runtimes/maccatalyst-x64/native/_._", - "runtimes/osx-arm64/native/_._", - "runtimes/osx-x64/native/_._", - "useSharedDesignerContext.txt" - ] - }, - "runtime.linux-bionic-arm64.runtime.native.System.IO.Ports/9.0.0": { - "sha512": "kAOBq4UnR0B2UirRxLsPx4BIzt61Ydw40FFCe9NcFSncV6q+ikuhgN6eOrcaOcSu5QUiXacQRgFUX1Pux6ckYg==", - "type": "package", - "path": "runtime.linux-bionic-arm64.runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.linux-bionic-arm64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.linux-bionic-arm64.runtime.native.system.io.ports.nuspec", - "runtimes/android-arm/native/_._", - "runtimes/android-arm64/native/_._", - "runtimes/android-x64/native/_._", - "runtimes/android-x86/native/_._", - "runtimes/linux-arm/native/_._", - "runtimes/linux-arm64/native/_._", - "runtimes/linux-bionic-arm64/native/libSystem.IO.Ports.Native.so", - "runtimes/linux-bionic-x64/native/_._", - "runtimes/linux-musl-arm/native/_._", - "runtimes/linux-musl-arm64/native/_._", - "runtimes/linux-musl-x64/native/_._", - "runtimes/linux-x64/native/_._", - "runtimes/maccatalyst-arm64/native/_._", - "runtimes/maccatalyst-x64/native/_._", - "runtimes/osx-arm64/native/_._", - "runtimes/osx-x64/native/_._", - "useSharedDesignerContext.txt" - ] - }, - "runtime.linux-bionic-x64.runtime.native.System.IO.Ports/9.0.0": { - "sha512": "yCpRhte4+7C6ULKGA4qLaXGjQJwoygqyzgUN9u2tkfyGkwBUS66SRr6nNx522+4ATI8ZFkgIIZIkTczY77rcZw==", - "type": "package", - "path": "runtime.linux-bionic-x64.runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.linux-bionic-x64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.linux-bionic-x64.runtime.native.system.io.ports.nuspec", - "runtimes/android-arm/native/_._", - "runtimes/android-arm64/native/_._", - "runtimes/android-x64/native/_._", - "runtimes/android-x86/native/_._", - "runtimes/linux-arm/native/_._", - "runtimes/linux-arm64/native/_._", - "runtimes/linux-bionic-arm64/native/_._", - "runtimes/linux-bionic-x64/native/libSystem.IO.Ports.Native.so", - "runtimes/linux-musl-arm/native/_._", - "runtimes/linux-musl-arm64/native/_._", - "runtimes/linux-musl-x64/native/_._", - "runtimes/linux-x64/native/_._", - "runtimes/maccatalyst-arm64/native/_._", - "runtimes/maccatalyst-x64/native/_._", - "runtimes/osx-arm64/native/_._", - "runtimes/osx-x64/native/_._", - "useSharedDesignerContext.txt" - ] - }, - "runtime.linux-musl-arm.runtime.native.System.IO.Ports/9.0.0": { - "sha512": "isaMOGqA4iIklwMt6wYTuPqj83D8DDUA2wainLqPjXaQ1Ri+5K8A+4J0BonjA/HMWtywBKnt2WGUXZ3DQN18ZA==", - "type": "package", - "path": "runtime.linux-musl-arm.runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.linux-musl-arm.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.linux-musl-arm.runtime.native.system.io.ports.nuspec", - "runtimes/android-arm/native/_._", - "runtimes/android-arm64/native/_._", - "runtimes/android-x64/native/_._", - "runtimes/android-x86/native/_._", - "runtimes/linux-arm/native/_._", - "runtimes/linux-arm64/native/_._", - "runtimes/linux-bionic-arm64/native/_._", - "runtimes/linux-bionic-x64/native/_._", - "runtimes/linux-musl-arm/native/libSystem.IO.Ports.Native.so", - "runtimes/linux-musl-arm64/native/_._", - "runtimes/linux-musl-x64/native/_._", - "runtimes/linux-x64/native/_._", - "runtimes/maccatalyst-arm64/native/_._", - "runtimes/maccatalyst-x64/native/_._", - "runtimes/osx-arm64/native/_._", - "runtimes/osx-x64/native/_._", - "useSharedDesignerContext.txt" - ] - }, - "runtime.linux-musl-arm64.runtime.native.System.IO.Ports/9.0.0": { - "sha512": "yWsWQTf7r1aigde6EeoHzHhldoBw6fJ8AHR2ow4kobNuaS9Z/9rvLUFsGkAAY8GMUZadF5S1OGUsIzUd17RZBg==", - "type": "package", - "path": "runtime.linux-musl-arm64.runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.linux-musl-arm64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.linux-musl-arm64.runtime.native.system.io.ports.nuspec", - "runtimes/android-arm/native/_._", - "runtimes/android-arm64/native/_._", - "runtimes/android-x64/native/_._", - "runtimes/android-x86/native/_._", - "runtimes/linux-arm/native/_._", - "runtimes/linux-arm64/native/_._", - "runtimes/linux-bionic-arm64/native/_._", - "runtimes/linux-bionic-x64/native/_._", - "runtimes/linux-musl-arm/native/_._", - "runtimes/linux-musl-arm64/native/libSystem.IO.Ports.Native.so", - "runtimes/linux-musl-x64/native/_._", - "runtimes/linux-x64/native/_._", - "runtimes/maccatalyst-arm64/native/_._", - "runtimes/maccatalyst-x64/native/_._", - "runtimes/osx-arm64/native/_._", - "runtimes/osx-x64/native/_._", - "useSharedDesignerContext.txt" - ] - }, - "runtime.linux-musl-x64.runtime.native.System.IO.Ports/9.0.0": { - "sha512": "NxST2ZRBRGBjHWUnQwOYoyqFWHH4UcjAeTyjviSTOdwjSqq1JuGdp4sLzPzGDLiu4R7Per3QQ1GxYoLgAlIbOA==", - "type": "package", - "path": "runtime.linux-musl-x64.runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.linux-musl-x64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.linux-musl-x64.runtime.native.system.io.ports.nuspec", - "runtimes/android-arm/native/_._", - "runtimes/android-arm64/native/_._", - "runtimes/android-x64/native/_._", - "runtimes/android-x86/native/_._", - "runtimes/linux-arm/native/_._", - "runtimes/linux-arm64/native/_._", - "runtimes/linux-bionic-arm64/native/_._", - "runtimes/linux-bionic-x64/native/_._", - "runtimes/linux-musl-arm/native/_._", - "runtimes/linux-musl-arm64/native/_._", - "runtimes/linux-musl-x64/native/libSystem.IO.Ports.Native.so", - "runtimes/linux-x64/native/_._", - "runtimes/maccatalyst-arm64/native/_._", - "runtimes/maccatalyst-x64/native/_._", - "runtimes/osx-arm64/native/_._", - "runtimes/osx-x64/native/_._", - "useSharedDesignerContext.txt" - ] - }, - "runtime.linux-x64.runtime.native.System.IO.Ports/9.0.0": { - "sha512": "4bmb9oP1DIu2ArJ2MH2sNGbO5V3VrZ0+8lotr3cQ2G5hh66+0yHiYkwvlwP7gkSOsZPhANeX3cicqHYaDsroQA==", - "type": "package", - "path": "runtime.linux-x64.runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.linux-x64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.linux-x64.runtime.native.system.io.ports.nuspec", - "runtimes/android-arm/native/_._", - "runtimes/android-arm64/native/_._", - "runtimes/android-x64/native/_._", - "runtimes/android-x86/native/_._", - "runtimes/linux-arm/native/_._", - "runtimes/linux-arm64/native/_._", - "runtimes/linux-bionic-arm64/native/_._", - "runtimes/linux-bionic-x64/native/_._", - "runtimes/linux-musl-arm/native/_._", - "runtimes/linux-musl-arm64/native/_._", - "runtimes/linux-musl-x64/native/_._", - "runtimes/linux-x64/native/libSystem.IO.Ports.Native.so", - "runtimes/maccatalyst-arm64/native/_._", - "runtimes/maccatalyst-x64/native/_._", - "runtimes/osx-arm64/native/_._", - "runtimes/osx-x64/native/_._", - "useSharedDesignerContext.txt" - ] - }, - "runtime.maccatalyst-arm64.runtime.native.System.IO.Ports/9.0.0": { - "sha512": "k+VeOPbIx9A1/bmiw5pGBsuALGTA4UoC6SsGhcIMLyS6TMFgsjsOH1bAgim+/W1RdtR7dpPCWHNYhkrM8hXByA==", - "type": "package", - "path": "runtime.maccatalyst-arm64.runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.maccatalyst-arm64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.maccatalyst-arm64.runtime.native.system.io.ports.nuspec", - "runtimes/android-arm/native/_._", - "runtimes/android-arm64/native/_._", - "runtimes/android-x64/native/_._", - "runtimes/android-x86/native/_._", - "runtimes/linux-arm/native/_._", - "runtimes/linux-arm64/native/_._", - "runtimes/linux-bionic-arm64/native/_._", - "runtimes/linux-bionic-x64/native/_._", - "runtimes/linux-musl-arm/native/_._", - "runtimes/linux-musl-arm64/native/_._", - "runtimes/linux-musl-x64/native/_._", - "runtimes/linux-x64/native/_._", - "runtimes/maccatalyst-arm64/native/libSystem.IO.Ports.Native.dylib", - "runtimes/maccatalyst-x64/native/_._", - "runtimes/osx-arm64/native/_._", - "runtimes/osx-x64/native/_._", - "useSharedDesignerContext.txt" - ] - }, - "runtime.maccatalyst-x64.runtime.native.System.IO.Ports/9.0.0": { - "sha512": "k1WC+Y7ht+7Omq5iW1v2Yz5CpaGGlLvlNsGS8cDAG0IN3sXUrPyUkC/40/zTL8g8/c3UFjrW0igXcwKNYa+ZuA==", - "type": "package", - "path": "runtime.maccatalyst-x64.runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.maccatalyst-x64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.maccatalyst-x64.runtime.native.system.io.ports.nuspec", - "runtimes/android-arm/native/_._", - "runtimes/android-arm64/native/_._", - "runtimes/android-x64/native/_._", - "runtimes/android-x86/native/_._", - "runtimes/linux-arm/native/_._", - "runtimes/linux-arm64/native/_._", - "runtimes/linux-bionic-arm64/native/_._", - "runtimes/linux-bionic-x64/native/_._", - "runtimes/linux-musl-arm/native/_._", - "runtimes/linux-musl-arm64/native/_._", - "runtimes/linux-musl-x64/native/_._", - "runtimes/linux-x64/native/_._", - "runtimes/maccatalyst-arm64/native/_._", - "runtimes/maccatalyst-x64/native/libSystem.IO.Ports.Native.dylib", - "runtimes/osx-arm64/native/_._", - "runtimes/osx-x64/native/_._", - "useSharedDesignerContext.txt" - ] - }, - "runtime.native.System.IO.Ports/9.0.0": { - "sha512": "iWyR+xohLUht80x5MREqF7zYD0KqyVpoS9uTg9raG0ddx5pvJkCPC4eS2JdkRYY6AqPjfMiiOEZ02ZWHEBgOvg==", - "type": "package", - "path": "runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.native.system.io.ports.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "runtime.osx-arm64.runtime.native.System.IO.Ports/9.0.0": { - "sha512": "ebr6uFzuICKkw9YePnCo7CdZFKYYhJZOJDJhACAKyzbT5WFvJWMyeACJIWS0uqndGMgWSc+D+UDdBu6CEpUOSg==", - "type": "package", - "path": "runtime.osx-arm64.runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.osx-arm64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.osx-arm64.runtime.native.system.io.ports.nuspec", - "runtimes/android-arm/native/_._", - "runtimes/android-arm64/native/_._", - "runtimes/android-x64/native/_._", - "runtimes/android-x86/native/_._", - "runtimes/linux-arm/native/_._", - "runtimes/linux-arm64/native/_._", - "runtimes/linux-bionic-arm64/native/_._", - "runtimes/linux-bionic-x64/native/_._", - "runtimes/linux-musl-arm/native/_._", - "runtimes/linux-musl-arm64/native/_._", - "runtimes/linux-musl-x64/native/_._", - "runtimes/linux-x64/native/_._", - "runtimes/maccatalyst-arm64/native/_._", - "runtimes/maccatalyst-x64/native/_._", - "runtimes/osx-arm64/native/libSystem.IO.Ports.Native.dylib", - "runtimes/osx-x64/native/_._", - "useSharedDesignerContext.txt" - ] - }, - "runtime.osx-x64.runtime.native.System.IO.Ports/9.0.0": { - "sha512": "66DA4FKnfIdrkyd8Kqym06s+F/U5/7TZdkV1DllGivUNUGkC8TG5W/3D4rhLoGQRjg0uurkPWqrQXWfPEghRpQ==", - "type": "package", - "path": "runtime.osx-x64.runtime.native.system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "runtime.osx-x64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "runtime.osx-x64.runtime.native.system.io.ports.nuspec", - "runtimes/android-arm/native/_._", - "runtimes/android-arm64/native/_._", - "runtimes/android-x64/native/_._", - "runtimes/android-x86/native/_._", - "runtimes/linux-arm/native/_._", - "runtimes/linux-arm64/native/_._", - "runtimes/linux-bionic-arm64/native/_._", - "runtimes/linux-bionic-x64/native/_._", - "runtimes/linux-musl-arm/native/_._", - "runtimes/linux-musl-arm64/native/_._", - "runtimes/linux-musl-x64/native/_._", - "runtimes/linux-x64/native/_._", - "runtimes/maccatalyst-arm64/native/_._", - "runtimes/maccatalyst-x64/native/_._", - "runtimes/osx-arm64/native/_._", - "runtimes/osx-x64/native/libSystem.IO.Ports.Native.dylib", - "useSharedDesignerContext.txt" - ] - }, - "SQLitePCLRaw.bundle_e_sqlite3/2.1.10": { - "sha512": "UxWuisvZ3uVcVOLJQv7urM/JiQH+v3TmaJc1BLKl5Dxfm/nTzTUrqswCqg/INiYLi61AXnHo1M1JPmPqqLnAdg==", - "type": "package", - "path": "sqlitepclraw.bundle_e_sqlite3/2.1.10", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/monoandroid90/SQLitePCLRaw.batteries_v2.dll", - "lib/net461/SQLitePCLRaw.batteries_v2.dll", - "lib/net6.0-android31.0/SQLitePCLRaw.batteries_v2.dll", - "lib/net6.0-android31.0/SQLitePCLRaw.batteries_v2.xml", - "lib/net6.0-ios14.0/SQLitePCLRaw.batteries_v2.dll", - "lib/net6.0-ios14.2/SQLitePCLRaw.batteries_v2.dll", - "lib/net6.0-tvos10.0/SQLitePCLRaw.batteries_v2.dll", - "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll", - "lib/xamarinios10/SQLitePCLRaw.batteries_v2.dll", - "sqlitepclraw.bundle_e_sqlite3.2.1.10.nupkg.sha512", - "sqlitepclraw.bundle_e_sqlite3.nuspec" - ] - }, - "SQLitePCLRaw.core/2.1.10": { - "sha512": "Ii8JCbC7oiVclaE/mbDEK000EFIJ+ShRPwAvvV89GOZhQ+ZLtlnSWl6ksCNMKu/VGXA4Nfi2B7LhN/QFN9oBcw==", - "type": "package", - "path": "sqlitepclraw.core/2.1.10", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/SQLitePCLRaw.core.dll", - "sqlitepclraw.core.2.1.10.nupkg.sha512", - "sqlitepclraw.core.nuspec" - ] - }, - "SQLitePCLRaw.lib.e_sqlite3/2.1.10": { - "sha512": "mAr69tDbnf3QJpRy2nJz8Qdpebdil00fvycyByR58Cn9eARvR+UiG2Vzsp+4q1tV3ikwiYIjlXCQFc12GfebbA==", - "type": "package", - "path": "sqlitepclraw.lib.e_sqlite3/2.1.10", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "buildTransitive/net461/SQLitePCLRaw.lib.e_sqlite3.targets", - "buildTransitive/net6.0/SQLitePCLRaw.lib.e_sqlite3.targets", - "buildTransitive/net7.0/SQLitePCLRaw.lib.e_sqlite3.targets", - "buildTransitive/net8.0/SQLitePCLRaw.lib.e_sqlite3.targets", - "buildTransitive/net9.0/SQLitePCLRaw.lib.e_sqlite3.targets", - "lib/net461/_._", - "lib/netstandard2.0/_._", - "runtimes/browser-wasm/nativeassets/net6.0/e_sqlite3.a", - "runtimes/browser-wasm/nativeassets/net7.0/e_sqlite3.a", - "runtimes/browser-wasm/nativeassets/net8.0/e_sqlite3.a", - "runtimes/browser-wasm/nativeassets/net9.0/e_sqlite3.a", - "runtimes/linux-arm/native/libe_sqlite3.so", - "runtimes/linux-arm64/native/libe_sqlite3.so", - "runtimes/linux-armel/native/libe_sqlite3.so", - "runtimes/linux-mips64/native/libe_sqlite3.so", - "runtimes/linux-musl-arm/native/libe_sqlite3.so", - "runtimes/linux-musl-arm64/native/libe_sqlite3.so", - "runtimes/linux-musl-s390x/native/libe_sqlite3.so", - "runtimes/linux-musl-x64/native/libe_sqlite3.so", - "runtimes/linux-ppc64le/native/libe_sqlite3.so", - "runtimes/linux-s390x/native/libe_sqlite3.so", - "runtimes/linux-x64/native/libe_sqlite3.so", - "runtimes/linux-x86/native/libe_sqlite3.so", - "runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib", - "runtimes/maccatalyst-x64/native/libe_sqlite3.dylib", - "runtimes/osx-arm64/native/libe_sqlite3.dylib", - "runtimes/osx-x64/native/libe_sqlite3.dylib", - "runtimes/win-arm/native/e_sqlite3.dll", - "runtimes/win-arm64/native/e_sqlite3.dll", - "runtimes/win-x64/native/e_sqlite3.dll", - "runtimes/win-x86/native/e_sqlite3.dll", - "runtimes/win10-arm/nativeassets/uap10.0/e_sqlite3.dll", - "runtimes/win10-arm64/nativeassets/uap10.0/e_sqlite3.dll", - "runtimes/win10-x64/nativeassets/uap10.0/e_sqlite3.dll", - "runtimes/win10-x86/nativeassets/uap10.0/e_sqlite3.dll", - "sqlitepclraw.lib.e_sqlite3.2.1.10.nupkg.sha512", - "sqlitepclraw.lib.e_sqlite3.nuspec" - ] - }, - "SQLitePCLRaw.provider.e_sqlite3/2.1.10": { - "sha512": "uZVTi02C1SxqzgT0HqTWatIbWGb40iIkfc3FpFCpE/r7g6K0PqzDUeefL6P6HPhDtc6BacN3yQysfzP7ks+wSQ==", - "type": "package", - "path": "sqlitepclraw.provider.e_sqlite3/2.1.10", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net6.0-windows7.0/SQLitePCLRaw.provider.e_sqlite3.dll", - "lib/net6.0/SQLitePCLRaw.provider.e_sqlite3.dll", - "lib/netstandard2.0/SQLitePCLRaw.provider.e_sqlite3.dll", - "sqlitepclraw.provider.e_sqlite3.2.1.10.nupkg.sha512", - "sqlitepclraw.provider.e_sqlite3.nuspec" - ] - }, - "Swashbuckle.AspNetCore/7.2.0": { - "sha512": "vJv19UpWm6OOgnS9QLDnWARNVasXUfj8SFvlG7UVALm4nBnfwRnEky7C0veSDqMUmBeMPC6Ec3d6G1ts/J04Uw==", - "type": "package", - "path": "swashbuckle.aspnetcore/7.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "build/Swashbuckle.AspNetCore.props", - "buildMultiTargeting/Swashbuckle.AspNetCore.props", - "docs/package-readme.md", - "swashbuckle.aspnetcore.7.2.0.nupkg.sha512", - "swashbuckle.aspnetcore.nuspec" - ] - }, - "Swashbuckle.AspNetCore.Swagger/7.2.0": { - "sha512": "y27fNDfIh1vGhJjXYynLcZjl7DLOW1bSO2MDsY9wB4Zm1fdxpPsuBSiR4U+0acWlAqLmnuOPKr/OeOgwRUkBlw==", - "type": "package", - "path": "swashbuckle.aspnetcore.swagger/7.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net6.0/Swashbuckle.AspNetCore.Swagger.dll", - "lib/net6.0/Swashbuckle.AspNetCore.Swagger.pdb", - "lib/net6.0/Swashbuckle.AspNetCore.Swagger.xml", - "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll", - "lib/net8.0/Swashbuckle.AspNetCore.Swagger.pdb", - "lib/net8.0/Swashbuckle.AspNetCore.Swagger.xml", - "lib/net9.0/Swashbuckle.AspNetCore.Swagger.dll", - "lib/net9.0/Swashbuckle.AspNetCore.Swagger.pdb", - "lib/net9.0/Swashbuckle.AspNetCore.Swagger.xml", - "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.dll", - "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.pdb", - "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.xml", - "package-readme.md", - "swashbuckle.aspnetcore.swagger.7.2.0.nupkg.sha512", - "swashbuckle.aspnetcore.swagger.nuspec" - ] - }, - "Swashbuckle.AspNetCore.SwaggerGen/7.2.0": { - "sha512": "pMrTxGVuXM7t4wqft5CNNU8A0++Yw5kTLmYhB6tbEcyBfO8xEF/Y8pkJhO6BZ/2MYONrRYoQTfPFJqu8fOf5WQ==", - "type": "package", - "path": "swashbuckle.aspnetcore.swaggergen/7.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.dll", - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.xml", - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll", - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.xml", - "lib/net9.0/Swashbuckle.AspNetCore.SwaggerGen.dll", - "lib/net9.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", - "lib/net9.0/Swashbuckle.AspNetCore.SwaggerGen.xml", - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.dll", - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.xml", - "package-readme.md", - "swashbuckle.aspnetcore.swaggergen.7.2.0.nupkg.sha512", - "swashbuckle.aspnetcore.swaggergen.nuspec" - ] - }, - "Swashbuckle.AspNetCore.SwaggerUI/7.2.0": { - "sha512": "hgrXeKzyp5OGN8qVvL7A+vhmU7mDJTfGpiMBRL66IcfLOyna8UTLtn3cC3CghamXpRDufcc9ciklTszUGEQK0w==", - "type": "package", - "path": "swashbuckle.aspnetcore.swaggerui/7.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.dll", - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.xml", - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll", - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.xml", - "lib/net9.0/Swashbuckle.AspNetCore.SwaggerUI.dll", - "lib/net9.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", - "lib/net9.0/Swashbuckle.AspNetCore.SwaggerUI.xml", - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.dll", - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.xml", - "package-readme.md", - "swashbuckle.aspnetcore.swaggerui.7.2.0.nupkg.sha512", - "swashbuckle.aspnetcore.swaggerui.nuspec" - ] - }, - "System.Diagnostics.DiagnosticSource/9.0.0": { - "sha512": "ddppcFpnbohLWdYKr/ZeLZHmmI+DXFgZ3Snq+/E7SwcdW4UnvxmaugkwGywvGVWkHPGCSZjCP+MLzu23AL5SDw==", - "type": "package", - "path": "system.diagnostics.diagnosticsource/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Diagnostics.DiagnosticSource.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/System.Diagnostics.DiagnosticSource.targets", - "content/ILLink/ILLink.Descriptors.LibraryBuild.xml", - "contentFiles/any/net462/ILLink/ILLink.Descriptors.LibraryBuild.xml", - "contentFiles/any/net8.0/ILLink/ILLink.Descriptors.LibraryBuild.xml", - "contentFiles/any/net9.0/ILLink/ILLink.Descriptors.LibraryBuild.xml", - "contentFiles/any/netstandard2.0/ILLink/ILLink.Descriptors.LibraryBuild.xml", - "lib/net462/System.Diagnostics.DiagnosticSource.dll", - "lib/net462/System.Diagnostics.DiagnosticSource.xml", - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll", - "lib/net8.0/System.Diagnostics.DiagnosticSource.xml", - "lib/net9.0/System.Diagnostics.DiagnosticSource.dll", - "lib/net9.0/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.xml", - "system.diagnostics.diagnosticsource.9.0.0.nupkg.sha512", - "system.diagnostics.diagnosticsource.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.IO.Pipelines/9.0.0": { - "sha512": "eA3cinogwaNB4jdjQHOP3Z3EuyiDII7MT35jgtnsA4vkn0LUrrSHsU0nzHTzFzmaFYeKV7MYyMxOocFzsBHpTw==", - "type": "package", - "path": "system.io.pipelines/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.IO.Pipelines.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets", - "lib/net462/System.IO.Pipelines.dll", - "lib/net462/System.IO.Pipelines.xml", - "lib/net8.0/System.IO.Pipelines.dll", - "lib/net8.0/System.IO.Pipelines.xml", - "lib/net9.0/System.IO.Pipelines.dll", - "lib/net9.0/System.IO.Pipelines.xml", - "lib/netstandard2.0/System.IO.Pipelines.dll", - "lib/netstandard2.0/System.IO.Pipelines.xml", - "system.io.pipelines.9.0.0.nupkg.sha512", - "system.io.pipelines.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.IO.Ports/9.0.0": { - "sha512": "NfEWew48r4MxHUnOQL7nw/5JBsz9dli8TJYpXjsAQu8tHH0QCq2ly4QMCc8wS9EAi1jvaFgq7ELdfwxvrKWALQ==", - "type": "package", - "path": "system.io.ports/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.IO.Ports.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/System.IO.Ports.targets", - "lib/net462/System.IO.Ports.dll", - "lib/net462/System.IO.Ports.xml", - "lib/net8.0/System.IO.Ports.dll", - "lib/net8.0/System.IO.Ports.xml", - "lib/net9.0/System.IO.Ports.dll", - "lib/net9.0/System.IO.Ports.xml", - "lib/netstandard2.0/System.IO.Ports.dll", - "lib/netstandard2.0/System.IO.Ports.xml", - "runtimes/unix/lib/net8.0/System.IO.Ports.dll", - "runtimes/unix/lib/net8.0/System.IO.Ports.xml", - "runtimes/unix/lib/net9.0/System.IO.Ports.dll", - "runtimes/unix/lib/net9.0/System.IO.Ports.xml", - "runtimes/win/lib/net8.0/System.IO.Ports.dll", - "runtimes/win/lib/net8.0/System.IO.Ports.xml", - "runtimes/win/lib/net9.0/System.IO.Ports.dll", - "runtimes/win/lib/net9.0/System.IO.Ports.xml", - "system.io.ports.9.0.0.nupkg.sha512", - "system.io.ports.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Memory/4.5.3": { - "sha512": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==", - "type": "package", - "path": "system.memory/4.5.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netcoreapp2.1/_._", - "lib/netstandard1.1/System.Memory.dll", - "lib/netstandard1.1/System.Memory.xml", - "lib/netstandard2.0/System.Memory.dll", - "lib/netstandard2.0/System.Memory.xml", - "ref/netcoreapp2.1/_._", - "system.memory.4.5.3.nupkg.sha512", - "system.memory.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Text.Encodings.Web/9.0.0": { - "sha512": "e2hMgAErLbKyUUwt18qSBf9T5Y+SFAL3ZedM8fLupkVj8Rj2PZ9oxQ37XX2LF8fTO1wNIxvKpihD7Of7D/NxZw==", - "type": "package", - "path": "system.text.encodings.web/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Text.Encodings.Web.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets", - "lib/net462/System.Text.Encodings.Web.dll", - "lib/net462/System.Text.Encodings.Web.xml", - "lib/net8.0/System.Text.Encodings.Web.dll", - "lib/net8.0/System.Text.Encodings.Web.xml", - "lib/net9.0/System.Text.Encodings.Web.dll", - "lib/net9.0/System.Text.Encodings.Web.xml", - "lib/netstandard2.0/System.Text.Encodings.Web.dll", - "lib/netstandard2.0/System.Text.Encodings.Web.xml", - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll", - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml", - "runtimes/browser/lib/net9.0/System.Text.Encodings.Web.dll", - "runtimes/browser/lib/net9.0/System.Text.Encodings.Web.xml", - "system.text.encodings.web.9.0.0.nupkg.sha512", - "system.text.encodings.web.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Text.Json/9.0.0": { - "sha512": "js7+qAu/9mQvnhA4EfGMZNEzXtJCDxgkgj8ohuxq/Qxv+R56G+ljefhiJHOxTNiw54q8vmABCWUwkMulNdlZ4A==", - "type": "package", - "path": "system.text.json/9.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll", - "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll", - "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll", - "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", - "buildTransitive/net461/System.Text.Json.targets", - "buildTransitive/net462/System.Text.Json.targets", - "buildTransitive/net8.0/System.Text.Json.targets", - "buildTransitive/netcoreapp2.0/System.Text.Json.targets", - "buildTransitive/netstandard2.0/System.Text.Json.targets", - "lib/net462/System.Text.Json.dll", - "lib/net462/System.Text.Json.xml", - "lib/net8.0/System.Text.Json.dll", - "lib/net8.0/System.Text.Json.xml", - "lib/net9.0/System.Text.Json.dll", - "lib/net9.0/System.Text.Json.xml", - "lib/netstandard2.0/System.Text.Json.dll", - "lib/netstandard2.0/System.Text.Json.xml", - "system.text.json.9.0.0.nupkg.sha512", - "system.text.json.nuspec", - "useSharedDesignerContext.txt" - ] - } - }, - "projectFileDependencyGroups": { - "net8.0-windows10.0.26100": [ - "InTheHand.BluetoothLE >= 4.0.37", - "Microsoft.EntityFrameworkCore >= 9.0.0", - "Microsoft.EntityFrameworkCore.Sqlite >= 9.0.0", - "RJCP.SerialPortStream >= 3.0.1", - "Swashbuckle.AspNetCore >= 7.2.0", - "System.IO.Ports >= 9.0.0" - ] - }, - "packageFolders": { - "C:\\Users\\ckoch\\.nuget\\packages\\": {}, - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} - }, - "project": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "C:\\Users\\ckoch\\Documents\\GitHub\\houseplant\\house-plant-api\\house-plant-api.csproj", - "projectName": "house-plant-api", - "projectPath": "C:\\Users\\ckoch\\Documents\\GitHub\\houseplant\\house-plant-api\\house-plant-api.csproj", - "packagesPath": "C:\\Users\\ckoch\\.nuget\\packages\\", - "outputPath": "C:\\Users\\ckoch\\Documents\\GitHub\\houseplant\\house-plant-api\\obj\\", - "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configFilePaths": [ - "C:\\Users\\ckoch\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net8.0-windows10.0.26100.0" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net8.0-windows10.0.26100": { - "targetAlias": "net8.0-windows10.0.26100.0", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - }, - "SdkAnalysisLevel": "9.0.100" - }, - "frameworks": { - "net8.0-windows10.0.26100": { - "targetAlias": "net8.0-windows10.0.26100.0", - "dependencies": { - "InTheHand.BluetoothLE": { - "target": "Package", - "version": "[4.0.37, )" - }, - "Microsoft.EntityFrameworkCore": { - "target": "Package", - "version": "[9.0.0, )" - }, - "Microsoft.EntityFrameworkCore.Sqlite": { - "target": "Package", - "version": "[9.0.0, )" - }, - "RJCP.SerialPortStream": { - "target": "Package", - "version": "[3.0.1, )" - }, - "Swashbuckle.AspNetCore": { - "target": "Package", - "version": "[7.2.0, )" - }, - "System.IO.Ports": { - "target": "Package", - "version": "[9.0.0, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "downloadDependencies": [ - { - "name": "Microsoft.Windows.SDK.NET.Ref", - "version": "[10.0.26100.54, 10.0.26100.54]" - } - ], - "frameworkReferences": { - "Microsoft.AspNetCore.App": { - "privateAssets": "none" - }, - "Microsoft.NETCore.App": { - "privateAssets": "all" - }, - "Microsoft.Windows.SDK.NET.Ref.Windows": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.101/PortableRuntimeIdentifierGraph.json" - } - } - } -} \ No newline at end of file diff --git a/house-plant-api/obj/project.nuget.cache b/house-plant-api/obj/project.nuget.cache deleted file mode 100644 index 21dbfbf..0000000 --- a/house-plant-api/obj/project.nuget.cache +++ /dev/null @@ -1,67 +0,0 @@ -{ - "version": 2, - "dgSpecHash": "puDPynTpJjc=", - "success": true, - "projectFilePath": "C:\\Users\\ckoch\\Documents\\GitHub\\houseplant\\house-plant-api\\house-plant-api.csproj", - "expectedPackageFiles": [ - "C:\\Users\\ckoch\\.nuget\\packages\\inthehand.bluetoothle\\4.0.37\\inthehand.bluetoothle.4.0.37.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.data.sqlite.core\\9.0.0\\microsoft.data.sqlite.core.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.entityframeworkcore\\9.0.0\\microsoft.entityframeworkcore.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\9.0.0\\microsoft.entityframeworkcore.abstractions.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\9.0.0\\microsoft.entityframeworkcore.analyzers.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\9.0.0\\microsoft.entityframeworkcore.relational.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.entityframeworkcore.sqlite\\9.0.0\\microsoft.entityframeworkcore.sqlite.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.entityframeworkcore.sqlite.core\\9.0.0\\microsoft.entityframeworkcore.sqlite.core.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.extensions.apidescription.server\\6.0.5\\microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\9.0.0\\microsoft.extensions.caching.abstractions.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.extensions.caching.memory\\9.0.0\\microsoft.extensions.caching.memory.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\9.0.0\\microsoft.extensions.configuration.abstractions.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\9.0.0\\microsoft.extensions.dependencyinjection.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\9.0.0\\microsoft.extensions.dependencyinjection.abstractions.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.extensions.dependencymodel\\9.0.0\\microsoft.extensions.dependencymodel.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.extensions.logging\\9.0.0\\microsoft.extensions.logging.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\9.0.0\\microsoft.extensions.logging.abstractions.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.extensions.options\\9.0.0\\microsoft.extensions.options.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.extensions.primitives\\9.0.0\\microsoft.extensions.primitives.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.openapi\\1.6.22\\microsoft.openapi.1.6.22.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\rjcp.core.environment\\0.3.0\\rjcp.core.environment.0.3.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\rjcp.core.syscompat\\0.2.0\\rjcp.core.syscompat.0.2.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\rjcp.diagnostics.trace\\0.2.1\\rjcp.diagnostics.trace.0.2.1.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\rjcp.io.buffer\\0.2.1\\rjcp.io.buffer.0.2.1.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\rjcp.io.device\\0.8.1\\rjcp.io.device.0.8.1.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\rjcp.serialportstream\\3.0.1\\rjcp.serialportstream.3.0.1.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.android-arm.runtime.native.system.io.ports\\9.0.0\\runtime.android-arm.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.android-arm64.runtime.native.system.io.ports\\9.0.0\\runtime.android-arm64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.android-x64.runtime.native.system.io.ports\\9.0.0\\runtime.android-x64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.android-x86.runtime.native.system.io.ports\\9.0.0\\runtime.android-x86.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.linux-arm.runtime.native.system.io.ports\\9.0.0\\runtime.linux-arm.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.linux-arm64.runtime.native.system.io.ports\\9.0.0\\runtime.linux-arm64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.linux-bionic-arm64.runtime.native.system.io.ports\\9.0.0\\runtime.linux-bionic-arm64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.linux-bionic-x64.runtime.native.system.io.ports\\9.0.0\\runtime.linux-bionic-x64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.linux-musl-arm.runtime.native.system.io.ports\\9.0.0\\runtime.linux-musl-arm.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.linux-musl-arm64.runtime.native.system.io.ports\\9.0.0\\runtime.linux-musl-arm64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.linux-musl-x64.runtime.native.system.io.ports\\9.0.0\\runtime.linux-musl-x64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.linux-x64.runtime.native.system.io.ports\\9.0.0\\runtime.linux-x64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.maccatalyst-arm64.runtime.native.system.io.ports\\9.0.0\\runtime.maccatalyst-arm64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.maccatalyst-x64.runtime.native.system.io.ports\\9.0.0\\runtime.maccatalyst-x64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.native.system.io.ports\\9.0.0\\runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.osx-arm64.runtime.native.system.io.ports\\9.0.0\\runtime.osx-arm64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\runtime.osx-x64.runtime.native.system.io.ports\\9.0.0\\runtime.osx-x64.runtime.native.system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\sqlitepclraw.bundle_e_sqlite3\\2.1.10\\sqlitepclraw.bundle_e_sqlite3.2.1.10.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\sqlitepclraw.core\\2.1.10\\sqlitepclraw.core.2.1.10.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\sqlitepclraw.lib.e_sqlite3\\2.1.10\\sqlitepclraw.lib.e_sqlite3.2.1.10.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\sqlitepclraw.provider.e_sqlite3\\2.1.10\\sqlitepclraw.provider.e_sqlite3.2.1.10.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\swashbuckle.aspnetcore\\7.2.0\\swashbuckle.aspnetcore.7.2.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\7.2.0\\swashbuckle.aspnetcore.swagger.7.2.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\7.2.0\\swashbuckle.aspnetcore.swaggergen.7.2.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\7.2.0\\swashbuckle.aspnetcore.swaggerui.7.2.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\system.diagnostics.diagnosticsource\\9.0.0\\system.diagnostics.diagnosticsource.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\system.io.pipelines\\9.0.0\\system.io.pipelines.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\system.io.ports\\9.0.0\\system.io.ports.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\system.memory\\4.5.3\\system.memory.4.5.3.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\system.text.encodings.web\\9.0.0\\system.text.encodings.web.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\system.text.json\\9.0.0\\system.text.json.9.0.0.nupkg.sha512", - "C:\\Users\\ckoch\\.nuget\\packages\\microsoft.windows.sdk.net.ref\\10.0.26100.54\\microsoft.windows.sdk.net.ref.10.0.26100.54.nupkg.sha512" - ], - "logs": [] -} \ No newline at end of file diff --git a/plant-browser/.vscode/extensions.json b/plant-browser/.vscode/extensions.json deleted file mode 100644 index 77b3745..0000000 --- a/plant-browser/.vscode/extensions.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 - "recommendations": ["angular.ng-template"] -} diff --git a/plant-browser/.vscode/launch.json b/plant-browser/.vscode/launch.json deleted file mode 100644 index 925af83..0000000 --- a/plant-browser/.vscode/launch.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "name": "ng serve", - "type": "chrome", - "request": "launch", - "preLaunchTask": "npm: start", - "url": "http://localhost:4200/" - }, - { - "name": "ng test", - "type": "chrome", - "request": "launch", - "preLaunchTask": "npm: test", - "url": "http://localhost:9876/debug.html" - } - ] -} diff --git a/plant-browser/.vscode/tasks.json b/plant-browser/.vscode/tasks.json deleted file mode 100644 index a298b5b..0000000 --- a/plant-browser/.vscode/tasks.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - // For more information, visit: https://go.microsoft.com/fwlink/?LinkId=733558 - "version": "2.0.0", - "tasks": [ - { - "type": "npm", - "script": "start", - "isBackground": true, - "problemMatcher": { - "owner": "typescript", - "pattern": "$tsc", - "background": { - "activeOnStart": true, - "beginsPattern": { - "regexp": "(.*?)" - }, - "endsPattern": { - "regexp": "bundle generation complete" - } - } - } - }, - { - "type": "npm", - "script": "test", - "isBackground": true, - "problemMatcher": { - "owner": "typescript", - "pattern": "$tsc", - "background": { - "activeOnStart": true, - "beginsPattern": { - "regexp": "(.*?)" - }, - "endsPattern": { - "regexp": "bundle generation complete" - } - } - } - } - ] -} diff --git a/plant-browser/Dockerfile b/plant-browser/Dockerfile new file mode 100644 index 0000000..93af417 --- /dev/null +++ b/plant-browser/Dockerfile @@ -0,0 +1,25 @@ +# Stage 1: Build the Angular application +FROM node:18-alpine AS build + +WORKDIR /app + +COPY package*.json ./ +RUN npm install + +COPY . . +RUN npm run build --prod + +# Stage 2: Serve the Angular app using NGINX +FROM nginx:stable-alpine AS runtime + +COPY --from=build /app/dist/plant-browser/browser /usr/share/nginx/html + +# Remove the default NGINX configuration +RUN rm /etc/nginx/conf.d/default.conf + +# Copy custom NGINX configuration +COPY nginx.conf /etc/nginx/nginx.conf + +EXPOSE 80 + +CMD ["nginx", "-g", "daemon off;"] diff --git a/plant-browser/angular.json b/plant-browser/angular.json index 4b7d7e1..6333dfc 100644 --- a/plant-browser/angular.json +++ b/plant-browser/angular.json @@ -40,6 +40,12 @@ }, "configurations": { "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], "budgets": [ { "type": "initial", @@ -106,4 +112,4 @@ "cli": { "analytics": "2f66f6d5-a013-454e-b4c4-03f39742aa12" } -} +} \ No newline at end of file diff --git a/plant-browser/nginx.conf b/plant-browser/nginx.conf new file mode 100644 index 0000000..9117d0d --- /dev/null +++ b/plant-browser/nginx.conf @@ -0,0 +1,45 @@ +# soilmoisture_client/nginx.conf + +worker_processes 1; + +events { worker_connections 1024; } + +http { + include mime.types; + default_type application/octet-stream; + + sendfile on; + keepalive_timeout 65; + + # Docker's internal DNS resolver + resolver 127.0.0.11 valid=10s; + + server { + listen 80; + server_name localhost; + + root /usr/share/nginx/html; + index index.html index.htm; + + # Serve Angular App with Client-Side Routing + location / { + try_files $uri $uri/ /index.html; + } + + # Proxy API Requests to ASP.NET Core API + location /api/ { + proxy_pass http://soilmoisture_api:80/api/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + + # Optional: Increase timeout settings if necessary + proxy_connect_timeout 600; + proxy_send_timeout 600; + proxy_read_timeout 600; + send_timeout 600; + } + } +} diff --git a/plant-browser/src/app/services/soil-data.service.ts b/plant-browser/src/app/services/soil-data.service.ts index 3193c84..de2dfe0 100644 --- a/plant-browser/src/app/services/soil-data.service.ts +++ b/plant-browser/src/app/services/soil-data.service.ts @@ -2,23 +2,24 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs'; import { SoilData } from '../models/soil-data.model'; +import { environment } from '../../environments/environment'; @Injectable({ providedIn: 'root' }) export class SoilDataService { - private apiUrl = 'http://localhost:5284/api/'; // Replace with your actual API endpoint - - constructor(private http: HttpClient) {} + private baseUrl = environment.apiUrl; + + constructor(private http: HttpClient) { } getPlants(): Observable { - return this.http.get(this.apiUrl + 'devices'); + return this.http.get(`${this.baseUrl}/SoilMoisture`); } - // Update device nickname - updateNickname(name: string, nickname: string): Observable { - const url = `${this.apiUrl}devices/${encodeURIComponent(name)}/nickname`; - return this.http.put(url, { nickname: nickname }); - } + // Update device nickname + updateNickname(name: string, nickname: string): Observable { + const url = `${this.baseUrl}/Device/${encodeURIComponent(name)}/nickname`; + return this.http.put(url, { nickname: nickname }); + } } diff --git a/plant-browser/src/environments/environment.prod.ts b/plant-browser/src/environments/environment.prod.ts new file mode 100644 index 0000000..00cc9a4 --- /dev/null +++ b/plant-browser/src/environments/environment.prod.ts @@ -0,0 +1,4 @@ +export const environment = { + production: true, + apiUrl: '/api' // Relative path for production (handled by NGINX proxy) +}; diff --git a/plant-browser/src/environments/environment.ts b/plant-browser/src/environments/environment.ts new file mode 100644 index 0000000..97f45ea --- /dev/null +++ b/plant-browser/src/environments/environment.ts @@ -0,0 +1,4 @@ +export const environment = { + production: false, + apiUrl: 'http://localhost:8000/api' // For development +};