Code cleanup

This commit is contained in:
Laura Hausmann 2022-11-20 17:00:51 +01:00
parent 11dc5352cb
commit 46cca10f2e
Signed by: zotan
GPG key ID: D044E84C5BE01605
25 changed files with 6905 additions and 2577 deletions

View file

@ -8,8 +8,7 @@ namespace zotanpw_web;
public static class Migrations {
private const int DbVer = 1;
private static readonly List<Migration> _migrations = new() {
};
private static readonly List<Migration> _migrations = new();
public static void RunMigrations() {
using var db = new Database.DbConn();
@ -88,4 +87,4 @@ public static class Migrations {
db.Execute(_sql);
}
}
}
}

View file

@ -22,4 +22,4 @@
It can result in displaying sensitive information from exceptions to end users.
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
and restarting the app.
</p>
</p>

View file

@ -4,19 +4,16 @@ using Microsoft.AspNetCore.Mvc.RazorPages;
namespace zotanpw_web.Pages;
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
[IgnoreAntiforgeryToken]
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true), IgnoreAntiforgeryToken]
public class ErrorModel : PageModel {
private readonly ILogger<ErrorModel> _logger;
public ErrorModel(ILogger<ErrorModel> logger) => _logger = logger;
public string? RequestId { get; set; }
public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
private readonly ILogger<ErrorModel> _logger;
public ErrorModel(ILogger<ErrorModel> logger) {
_logger = logger;
}
public void OnGet() {
RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
}

View file

@ -158,5 +158,5 @@
</ul>
@section postfooter {
<img src="/files/help.svg" height=450rem title="Designed by someone I love, ~fr2">
}
<img src="/files/help.svg" height="450rem" title="Designed by someone I love, ~fr2">
}

View file

@ -1,14 +1,11 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace zotanpw_web.Pages;
public class IndexModel : PageModel {
private readonly ILogger<IndexModel> _logger;
public IndexModel(ILogger<IndexModel> logger) {
_logger = logger;
}
public IndexModel(ILogger<IndexModel> logger) => _logger = logger;
public void OnGet() { }
}

View file

@ -1,9 +1,7 @@
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace zotanpw_web.Pages;
namespace zotanpw_web.Pages;
public class NowPlayingModel : PageModel {
public void OnGet() {
}
}
public void OnGet() { }
}

View file

@ -16,7 +16,7 @@
<h1>
<a href="/">zotan.pw >> @ViewData["Title"]</a>
</h1>
@await RenderSectionAsync("head", required: false)
@await RenderSectionAsync("head", false)
</div>
</nav>
</header>
@ -26,10 +26,10 @@
</section>
</div>
<div style="text-align: center;" >
@await RenderSectionAsync("prefooter", required: false)
<div style="text-align: center;">
@await RenderSectionAsync("prefooter", false)
<p style="color: #666666">--- Served by @Environment.MachineName running <a class="footerlink" href="https://git.ztn.sh/zotan/zotan.pw-web/commit/@Utils.LinkVersion" target="_blank">zotan.pw-web @Utils.Version</a> on .NET @Environment.Version ---</p>
@await RenderSectionAsync("postfooter", required: false)
@await RenderSectionAsync("postfooter", false)
</div>
<script src="~/js/site.js"></script>
</body>

View file

@ -1,3 +1,3 @@
@using zotanpw_web
@namespace zotanpw_web.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

View file

@ -9,6 +9,8 @@
<h1 id="posts">Posts</h1>
<ul>
@foreach (var post in BlogModel.Posts) {
<li><strong>@post.PublishedOn.ToString("yyyy-MM-dd")</strong> <a href="/blog/@post.Shorthand">@post.Title</a></li>
<li>
<strong>@post.PublishedOn.ToString("yyyy-MM-dd")</strong> <a href="/blog/@post.Shorthand">@post.Title</a>
</li>
}
</ul>
</ul>

View file

@ -7,7 +7,7 @@ namespace zotanpw_web.Pages.blog;
public class BlogModel : PageModel {
public static readonly List<BlogPost> Posts = new() {
new BlogPost("adhd-and-notes", "ADHD & Notetaking: an autistic perspective", DateOnly.Parse("2021-08-07")),
new BlogPost("ipv6-networking", "IPv6-native networking: a project report", DateOnly.Parse("2021-08-23")),
new BlogPost("ipv6-networking", "IPv6-native networking: a project report", DateOnly.Parse("2021-08-23"))
};
static BlogModel() {
@ -17,11 +17,11 @@ public class BlogModel : PageModel {
public void OnGet() { }
public class BlogPost {
public readonly string Title;
public readonly string Shorthand;
public readonly DateOnly PublishedOn;
public int ReadTimeMinutes;
public readonly string Shorthand;
public readonly string Title;
public string Content = "";
public int ReadTimeMinutes;
public BlogPost(string shorthand, string title, DateOnly publishedOn) {
Title = title;
@ -37,4 +37,4 @@ public class BlogModel : PageModel {
ReadTimeMinutes = Regex.Matches(markdownText, @"\b\w+\b").Count / 150;
}
}
}
}

View file

@ -19,4 +19,4 @@
<h1 id="post">IPv6-native networking: a project report</h1>
<div align="justify">
@Html.Raw(post.Content)
</div>
</div>

View file

@ -7,7 +7,8 @@ probably give you answers ranging from "Oh I just have it all in my
head" to "Just use a todo list / GTD system / bullet journal", both
equally unhelpful to most neurodiverse folks I know.
Reading [this article](https://xeiaso.net/blog/gtd-on-paper-2021-06-13){target="_blank"} by Xe inspired me to tackle this
Reading [this article](https://xeiaso.net/blog/gtd-on-paper-2021-06-13){target="_blank"} by Xe inspired me to tackle
this
problem for myself. (I highly encourage you to read the linked post
along with the rest of their blog)
@ -82,6 +83,7 @@ project, to get something that offers creative freedom close to physical
paper, without being convoluted to use.
### Putting it all together
So how does my setup look like exactly? Like
[this](/files/blog/adhd-and-notes.png){target="_blank"}. Let me
explain what you are looking at here. On the left there is a tree view

View file

@ -1,11 +1,13 @@
If you have reached this post, chances are you already know my [AS211579](https://zotan.network){target="_blank"} project.
If you have reached this post, chances are you already know my [AS211579](https://zotan.network){target="_blank"}
project.
This post serves as a summary of the things I learnt and the roadblocks
I had to overcome on the way to get the network to its current state.
### Goals and setup
For those who don't know the project, here's a quick recap. After having
dabbled a bit with [DN42](https://dn42.eu){target="_blank"} last year during the first lockdown, I wanted to do the real thing, in
dabbled a bit with [DN42](https://dn42.eu){target="_blank"} last year during the first lockdown, I wanted to do the real
thing, in
the same global routing system your ISP is using to reach this very web
server. While this sounds unnecessarily convoluted and complicated to
accomplish, it was actually pretty easy and not that expensive. The easy
@ -167,4 +169,4 @@ maybe with a few exceptions for critical services used by friends from
Austria where major telcos still don't support IPv6.
Maybe the end of IPv4 is actually near, at least in my small corner of
the internet. Thanks for reading, and have a wonderful day.
the internet. Thanks for reading, and have a wonderful day.

View file

@ -5,8 +5,7 @@ using zotanpw_web.database.Tables;
namespace zotanpw_web.PlaybackHistory;
[ApiController]
[Route("/np/log")]
[ApiController, Route("/np/log")]
public class LogPlayback : Controller {
private static readonly string Token = System.IO.File.ReadAllLines(".bearer_token")[0];
@ -15,7 +14,7 @@ public class LogPlayback : Controller {
var token = Request.Headers.Authorization;
if (token == Token) {
var db = new Database.DbConn();
if (!db.AlbumHistory.Any(p => p.Title == rq.Title && p.Artist == rq.Artist && p.DateTime.Between(DateTime.Now - TimeSpan.FromHours(8), DateTime.Now))) {
if (!db.AlbumHistory.Any(p => p.Title == rq.Title && p.Artist == rq.Artist && p.DateTime.Between(DateTime.Now - TimeSpan.FromHours(8), DateTime.Now)))
if (!db.AlbumHistory.Any()
|| !(db.AlbumHistory.OrderByDescending(p => p.EntryId).First().Artist == rq.Artist
&& db.AlbumHistory.OrderByDescending(p => p.EntryId).First().Title == rq.Title)) {
@ -31,7 +30,6 @@ public class LogPlayback : Controller {
Response.StatusCode = 201;
return entry;
}
}
Response.StatusCode = 202;
return null!;

View file

@ -1,4 +1,3 @@
using System.Reflection;
using LinqToDB.Data;
using zotanpw_web;
using zotanpw_web.database;
@ -41,4 +40,4 @@ app.UseAuthorization();
app.MapRazorPages();
app.MapControllers();
app.Run();
app.Run();

View file

@ -1,5 +1,4 @@
{
"profiles": {
"http": {
"commandName": "Project",

View file

@ -5,8 +5,7 @@ using zotanpw_web.database.Tables;
namespace zotanpw_web.Travelynx;
[ApiController]
[Route("/travelynx")]
[ApiController, Route("/travelynx")]
public class Travelynx : Controller {
private static readonly string TravelynxSecret = System.IO.File.ReadAllLines(".bearer_token")[0];
@ -15,9 +14,8 @@ public class Travelynx : Controller {
var token = Request.Headers.Authorization;
if (token == TravelynxSecret) {
var db = new Database.DbConn();
if (!db.TravelynxInfo.Any()) {
if (!db.TravelynxInfo.Any())
db.InsertWithIdentity(new TravelynxInfo { CheckedIn = false });
}
var status = db.TravelynxInfo.First();
status.CheckedIn = rq.Status.CheckedIn;

View file

@ -1,43 +1,41 @@
namespace zotanpw_web.Travelynx {
using System.Collections.Generic;
namespace zotanpw_web.Travelynx;
public class WebhookRequest {
public string Reason { get; set; }
public Status Status { get; set; }
}
public class Status {
public bool Deprecated { get; set; }
public bool CheckedIn { get; set; }
public Station? FromStation { get; set; }
public Station? ToStation { get; set; }
public List<IntermediateStop>? IntermediateStops { get; set; }
public Train? Train { get; set; }
public long ActionTime { get; set; }
}
public class Station {
public string? Name { get; set; }
public string? Ds100 { get; set; }
public long Uic { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
public long ScheduledTime { get; set; }
public long RealTime { get; set; }
}
public class IntermediateStop {
public string? Name { get; set; }
public long ScheduledArrival { get; set; }
public long RealArrival { get; set; }
public long ScheduledDeparture { get; set; }
public long RealDeparture { get; set; }
}
public class Train {
public string? Type { get; set; }
public string? Line { get; set; }
public string? No { get; set; }
public string? Id { get; set; }
}
public class WebhookRequest {
public string Reason { get; set; }
public Status Status { get; set; }
}
public class Status {
public bool Deprecated { get; set; }
public bool CheckedIn { get; set; }
public Station? FromStation { get; set; }
public Station? ToStation { get; set; }
public List<IntermediateStop>? IntermediateStops { get; set; }
public Train? Train { get; set; }
public long ActionTime { get; set; }
}
public class Station {
public string? Name { get; set; }
public string? Ds100 { get; set; }
public long Uic { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
public long ScheduledTime { get; set; }
public long RealTime { get; set; }
}
public class IntermediateStop {
public string? Name { get; set; }
public long ScheduledArrival { get; set; }
public long RealArrival { get; set; }
public long ScheduledDeparture { get; set; }
public long RealDeparture { get; set; }
}
public class Train {
public string? Type { get; set; }
public string? Line { get; set; }
public string? No { get; set; }
public string? Id { get; set; }
}

View file

@ -21,4 +21,4 @@ public static class Utils {
_ => "a"
};
}
}
}

View file

@ -27,8 +27,8 @@ public class Database {
public class DbConn : DataConnection {
public DbConn() : base("db") { }
public ITable<DbInfo> DbInfo => this.GetTable<DbInfo>();
public ITable<TravelynxInfo> TravelynxInfo => this.GetTable<TravelynxInfo>();
public ITable<TravelynxInfo> TravelynxInfo => this.GetTable<TravelynxInfo>();
public ITable<AlbumHistoryEntry> AlbumHistory => this.GetTable<AlbumHistoryEntry>();
public ITable<PlaylistHistoryEntry> PlaylistHistory => this.GetTable<PlaylistHistoryEntry>();
}
}
}

View file

@ -1,4 +1,5 @@
using LinqToDB.Mapping;
#pragma warning disable CS8618
namespace zotanpw_web.database.Tables;

View file

@ -6,4 +6,4 @@ namespace zotanpw_web.database.Tables;
public class DbInfo {
[Column(Name = "ID"), PrimaryKey, Identity, NotNull] public int Id { get; set; }
[Column(Name = "DbVer"), NotNull] public int DbVer { get; set; }
}
}

View file

@ -1,4 +1,5 @@
using LinqToDB.Mapping;
#pragma warning disable CS8618
namespace zotanpw_web.database.Tables;

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 2 MiB

After

Width:  |  Height:  |  Size: 2.1 MiB

View file

@ -8,74 +8,74 @@
</PropertyGroup>
<ItemGroup>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.css" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.css.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.min.css" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.min.css.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.rtl.css" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.rtl.css.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.rtl.min.css" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.rtl.min.css.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.css" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.css.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.min.css" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.min.css.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.rtl.css" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.rtl.css.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.rtl.min.css" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.rtl.min.css.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.css" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.css.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.min.css" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.min.css.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.rtl.css" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.rtl.css.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.rtl.min.css" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.rtl.min.css.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.css" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.css.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.min.css" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.min.css.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.rtl.css" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.rtl.css.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.rtl.min.css" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.rtl.min.css.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.js" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.min.js" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.min.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.esm.js" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.esm.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.esm.min.js" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.esm.min.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.js" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.min.js" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.min.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\LICENSE" />
<_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\dist\additional-methods.js" />
<_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\dist\additional-methods.min.js" />
<_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\dist\jquery.validate.js" />
<_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\dist\jquery.validate.min.js" />
<_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\LICENSE.md" />
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.css"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.css.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.min.css"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.min.css.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.rtl.css"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.rtl.css.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.rtl.min.css"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.rtl.min.css.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.css"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.css.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.min.css"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.min.css.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.rtl.css"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.rtl.css.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.rtl.min.css"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.rtl.min.css.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.css"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.css.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.min.css"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.min.css.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.rtl.css"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.rtl.css.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.rtl.min.css"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.rtl.min.css.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.css"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.css.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.min.css"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.min.css.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.rtl.css"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.rtl.css.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.rtl.min.css"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.rtl.min.css.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.js"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.js.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.min.js"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.min.js.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.esm.js"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.esm.js.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.esm.min.js"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.esm.min.js.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.js"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.js.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.min.js"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.min.js.map"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\LICENSE"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\dist\additional-methods.js"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\dist\additional-methods.min.js"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\dist\jquery.validate.js"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\dist\jquery.validate.min.js"/>
<_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\LICENSE.md"/>
</ItemGroup>
<ItemGroup>
<PackageReference Include="linq2db" Version="4.3.0" />
<PackageReference Include="Markdig" Version="0.30.4" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="7.0.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="7.0.0" />
<PackageReference Include="System.Data.SQLite" Version="1.0.115" />
<PackageReference Include="linq2db" Version="4.3.0"/>
<PackageReference Include="Markdig" Version="0.30.4"/>
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="7.0.0"/>
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="7.0.0"/>
<PackageReference Include="System.Data.SQLite" Version="1.0.115"/>
</ItemGroup>
<ItemGroup>
<Folder Include="Pages\blog\posts" />
<Folder Include="Pages\blog\posts"/>
</ItemGroup>
<Target Name="SetSourceRevisionId" BeforeTargets="InitializeSourceControlInformation">
<Exec Command="git describe --long --always --dirty --exclude=* --abbrev=8" ConsoleToMSBuild="True" IgnoreExitCode="False">
<Output PropertyName="SourceRevisionId" TaskParameter="ConsoleOutput" />
</Exec>
</Target>
<Target Name="SetSourceRevisionId" BeforeTargets="InitializeSourceControlInformation">
<Exec Command="git describe --long --always --dirty --exclude=* --abbrev=8" ConsoleToMSBuild="True" IgnoreExitCode="False">
<Output PropertyName="SourceRevisionId" TaskParameter="ConsoleOutput"/>
</Exec>
</Target>
</Project>