From b13a5ac3928d5a1935212155c0ce70e59ff64d7c Mon Sep 17 00:00:00 2001 From: CodeLiturgy Date: Sat, 20 Aug 2022 03:47:32 +0100 Subject: [PATCH] Add BlueWest.Frontend as submodule --- .gitmodules | 3 + BlueWest.Api/BlueWest.Api.csproj | 4 - BlueWest.Api/Context/CountryDbContext.cs | 71 +- BlueWest.Api/Context/FinanceDbContext.cs | 6 +- .../Context/Interfaces/ExchangeInterface.cs | 19 +- .../Context/MySQL/ModelBuilderExtensions.cs | 63 -- BlueWest.Api/Context/UserDbContext.cs | 6 +- BlueWest.Api/Controllers/CountryController.cs | 2 +- .../Controllers/CurrencyController.cs | 1 + .../Extensions/ModelBuilderExtensions.cs | 92 ++ .../{ => Extensions}/StartupExtensions.cs | 10 +- BlueWest.Api/Extensions/SwaggerExtensions.cs | 46 + BlueWest.Api/Program.cs | 22 +- BlueWest.Api/Startup.cs | 84 +- BlueWest.Data/Transaction/FinanceOp.cs | 10 +- .../{Finance => Transaction}/MathOperation.cs | 0 BlueWest.Data/User/User.cs | 4 +- BlueWest.Frontend | 1 + BlueWest.Frontend/.gitignore | 6 - BlueWest.Frontend/README.md | 38 - BlueWest.Frontend/jsconfig.json | 10 - BlueWest.Frontend/package-lock.json | 987 ------------------ BlueWest.Frontend/package.json | 17 - BlueWest.Frontend/src/app.html | 14 - BlueWest.Frontend/src/components/Chart.svelte | 21 - BlueWest.Frontend/src/components/Menu.svelte | 15 - BlueWest.Frontend/src/global.d.ts | 1 - BlueWest.Frontend/src/routes/binance.svelte | 50 - BlueWest.Frontend/src/routes/index.svelte | 9 - BlueWest.Frontend/src/routes/users.svelte | 170 --- BlueWest.Frontend/src/tools/Dtos.js | 14 - BlueWest.Frontend/src/tools/RestExtensions.js | 50 - BlueWest.Frontend/static/favicon.png | Bin 1571 -> 0 bytes BlueWest.Frontend/svelte.config.js | 9 - 34 files changed, 233 insertions(+), 1622 deletions(-) delete mode 100644 BlueWest.Api/Context/MySQL/ModelBuilderExtensions.cs create mode 100644 BlueWest.Api/Extensions/ModelBuilderExtensions.cs rename BlueWest.Api/{ => Extensions}/StartupExtensions.cs (90%) create mode 100644 BlueWest.Api/Extensions/SwaggerExtensions.cs rename BlueWest.Data/{Finance => Transaction}/MathOperation.cs (100%) create mode 160000 BlueWest.Frontend delete mode 100644 BlueWest.Frontend/.gitignore delete mode 100644 BlueWest.Frontend/README.md delete mode 100644 BlueWest.Frontend/jsconfig.json delete mode 100644 BlueWest.Frontend/package-lock.json delete mode 100644 BlueWest.Frontend/package.json delete mode 100644 BlueWest.Frontend/src/app.html delete mode 100644 BlueWest.Frontend/src/components/Chart.svelte delete mode 100644 BlueWest.Frontend/src/components/Menu.svelte delete mode 100644 BlueWest.Frontend/src/global.d.ts delete mode 100644 BlueWest.Frontend/src/routes/binance.svelte delete mode 100644 BlueWest.Frontend/src/routes/index.svelte delete mode 100644 BlueWest.Frontend/src/routes/users.svelte delete mode 100644 BlueWest.Frontend/src/tools/Dtos.js delete mode 100644 BlueWest.Frontend/src/tools/RestExtensions.js delete mode 100644 BlueWest.Frontend/static/favicon.png delete mode 100644 BlueWest.Frontend/svelte.config.js diff --git a/.gitmodules b/.gitmodules index 7dd25db..69221fa 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "include/Math-Expression-Evaluator"] path = include/Math-Expression-Evaluator url = git@git.codeliturgy.com:CodeLiturgy/Math-Expression-Evaluator.git +[submodule "BlueWest.Frontend"] + path = BlueWest.Frontend + url = git@git.codeliturgy.com:P0/BlueWest.Frontend.git diff --git a/BlueWest.Api/BlueWest.Api.csproj b/BlueWest.Api/BlueWest.Api.csproj index e2b7653..3c6f711 100644 --- a/BlueWest.Api/BlueWest.Api.csproj +++ b/BlueWest.Api/BlueWest.Api.csproj @@ -25,8 +25,4 @@ - - - - diff --git a/BlueWest.Api/Context/CountryDbContext.cs b/BlueWest.Api/Context/CountryDbContext.cs index f8a16b8..f3a4310 100644 --- a/BlueWest.Api/Context/CountryDbContext.cs +++ b/BlueWest.Api/Context/CountryDbContext.cs @@ -1,50 +1,43 @@ using BlueWest.Data; +using BlueWest.WebApi.MySQL.Model; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; -namespace BlueWest.WebApi.MySQL; - -/// -/// Countries and Currencies -/// -public class CountryDbContext : DbContext +namespace BlueWest.WebApi.MySQL { - - public DbSet Countries { get; set; } - - public DbSet Currencies { get; set; } - public DbSet Users { get; set; } - - - public IConfiguration Configuration; - - + /// - /// Options to be injected in the app + /// Countries and Currencies /// - /// - public CountryDbContext(DbContextOptions options) : base(options) + public sealed class CountryDbContext : DbContext { - Database.EnsureCreated(); + + public DbSet Countries { get; set; } + + public DbSet Currencies { get; set; } - } + public IConfiguration Configuration; - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - /*optionsBuilder.UseMySql( - Configuration.GetConnectionString("LocalMySQL"), - new MySqlServerVersion(new Version(8, 0, 11)) - );*/ - } + + /// + /// Options to be injected in the app + /// + /// + public CountryDbContext(DbContextOptions options) : base(options) + { + Database.EnsureCreated(); + + } - /// - /// The country number is the primary key - /// The currency code is the primary key - /// - /// - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - base.OnModelCreating(modelBuilder); - modelBuilder.ProjectDatabaseModel(); - } -} \ No newline at end of file + /// + /// The country number is the primary key + /// The currency code is the primary key + /// + /// + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); + modelBuilder.ConfigureCurrentDbModel(); + } + } +} diff --git a/BlueWest.Api/Context/FinanceDbContext.cs b/BlueWest.Api/Context/FinanceDbContext.cs index 6cbec24..f080167 100644 --- a/BlueWest.Api/Context/FinanceDbContext.cs +++ b/BlueWest.Api/Context/FinanceDbContext.cs @@ -1,4 +1,5 @@ using BlueWest.Data; +using BlueWest.WebApi.MySQL.Model; using Microsoft.EntityFrameworkCore; namespace BlueWest.WebApi.MySQL @@ -6,9 +7,10 @@ namespace BlueWest.WebApi.MySQL /// /// Finance operations table /// - public class FinanceDbContext : DbContext + public sealed class FinanceDbContext : DbContext { public DbSet Transactions { get; set; } + public DbSet TransactionTypes { get; set; } /// @@ -23,7 +25,7 @@ namespace BlueWest.WebApi.MySQL protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); - modelBuilder.ProjectDatabaseModel(); + modelBuilder.ConfigureCurrentDbModel(); } } } diff --git a/BlueWest.Api/Context/Interfaces/ExchangeInterface.cs b/BlueWest.Api/Context/Interfaces/ExchangeInterface.cs index d933525..11bb333 100644 --- a/BlueWest.Api/Context/Interfaces/ExchangeInterface.cs +++ b/BlueWest.Api/Context/Interfaces/ExchangeInterface.cs @@ -6,15 +6,18 @@ using BlueWest.WebApi.MySQL; namespace BlueWest.WebApi.Interfaces { public struct ExchangeEvent { } - public class ExchangeInterface : EventListener, IDisposable, IAsyncDisposable - + /// + /// Interface for getting and storing exchange rates data + /// + /// + public sealed class ExchangeInterface : EventListener, IDisposable, IAsyncDisposable { private readonly EventManager _eventManager; private readonly CountryDbContext _countryDbContext; private readonly FinanceDbContext _financeDbContext; private readonly UserDbContext _userDbContext; - - + + #region Initialization public ExchangeInterface( CountryDbContext countryDbContext, FinanceDbContext financeDbContext, @@ -33,11 +36,15 @@ namespace BlueWest.WebApi.Interfaces private void Init() { _eventManager.EventStartListening(this); - _eventManager.TriggerEvent(new ExchangeEvent()); Console.WriteLine($"{nameof(ExchangeInterface)} Just started!"); } + + #endregion - + /// + /// On Exchange Event + /// + /// public void OnEvent(ExchangeEvent eventType) { Console.WriteLine($"Service received exchange {nameof(ExchangeEvent)}"); diff --git a/BlueWest.Api/Context/MySQL/ModelBuilderExtensions.cs b/BlueWest.Api/Context/MySQL/ModelBuilderExtensions.cs deleted file mode 100644 index 71ccde3..0000000 --- a/BlueWest.Api/Context/MySQL/ModelBuilderExtensions.cs +++ /dev/null @@ -1,63 +0,0 @@ -using BlueWest.Data; -using Microsoft.EntityFrameworkCore; - -namespace BlueWest.WebApi.MySQL -{ - public static class ModelBuilderExtensions - { - public static void ProjectDatabaseModel(this ModelBuilder modelBuilder) - { - // Keys - CountryCurrencyModel(modelBuilder); - UserModel(modelBuilder); - - } - - private static void CountryCurrencyModel(ModelBuilder modelBuilder) - { - modelBuilder.Entity(builder => - { - builder.HasKey(x => x.Code); - }); - modelBuilder.Entity(builder => - { - builder.HasKey(x => x.Num); - }); - - // Relationships - modelBuilder.Entity() - .HasMany(ub => ub.Countries) - .WithMany(au => au.Currencies); - - modelBuilder.Entity() - .HasMany(ub => ub.Currencies) - .WithMany(au => au.Countries); - - } - - private static ModelBuilder UserModel(ModelBuilder modelBuilder) - { - - modelBuilder - .Entity(builder => builder - .HasOne() - .WithMany(co => co.Users)); - - modelBuilder.Entity(builder => builder - .HasMany() - .WithOne(co => co.Country) - .HasForeignKey(x => x.CountryId)); - - - modelBuilder.Entity(builder => - { - builder.HasOne() - .WithMany(x => x.FinanceTransactions) - .HasForeignKey(x => x.UserId); - }); - - return modelBuilder; - } - } -} - diff --git a/BlueWest.Api/Context/UserDbContext.cs b/BlueWest.Api/Context/UserDbContext.cs index f8be873..655b9a4 100644 --- a/BlueWest.Api/Context/UserDbContext.cs +++ b/BlueWest.Api/Context/UserDbContext.cs @@ -1,12 +1,12 @@ -using System; using BlueWest.Data; +using BlueWest.WebApi.MySQL.Model; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; namespace BlueWest.WebApi.MySQL { - public class UserDbContext : DbContext + public sealed class UserDbContext : DbContext { public DbSet Users { get; set; } @@ -34,7 +34,7 @@ namespace BlueWest.WebApi.MySQL protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); - modelBuilder.ProjectDatabaseModel(); + modelBuilder.ConfigureCurrentDbModel(); } } } diff --git a/BlueWest.Api/Controllers/CountryController.cs b/BlueWest.Api/Controllers/CountryController.cs index b122d01..c371720 100644 --- a/BlueWest.Api/Controllers/CountryController.cs +++ b/BlueWest.Api/Controllers/CountryController.cs @@ -71,7 +71,7 @@ namespace BlueWest.WebApi.Controllers if (country != null) { - var updatedCountry = new Country(countryToUpdate, countryCode, null, null); + var updatedCountry = new Country(countryToUpdate, countryCode, country.Currencies, country.Users); _dbContext.Countries.Update(updatedCountry); return Ok(updatedCountry); } diff --git a/BlueWest.Api/Controllers/CurrencyController.cs b/BlueWest.Api/Controllers/CurrencyController.cs index f4ed915..8842190 100644 --- a/BlueWest.Api/Controllers/CurrencyController.cs +++ b/BlueWest.Api/Controllers/CurrencyController.cs @@ -16,6 +16,7 @@ namespace BlueWest.WebApi.Controllers public class CurrencyController : ControllerBase { private readonly CountryDbContext _dbContext; + public CurrencyController(CountryDbContext dbContext) { diff --git a/BlueWest.Api/Extensions/ModelBuilderExtensions.cs b/BlueWest.Api/Extensions/ModelBuilderExtensions.cs new file mode 100644 index 0000000..1662892 --- /dev/null +++ b/BlueWest.Api/Extensions/ModelBuilderExtensions.cs @@ -0,0 +1,92 @@ +using BlueWest.Data; +using Microsoft.EntityFrameworkCore; + +namespace BlueWest.WebApi.MySQL.Model +{ + /// + /// Database model configuration extensions + /// + public static class ModelBuilderExtensions + { + /// + /// Setup the database model + /// + /// + public static void ConfigureCurrentDbModel(this ModelBuilder modelBuilder) + { + modelBuilder + .ConfigureDatabaseKeys() + .CountryCurrencyModel() + .ConfigureUserModel(); + } + + private static ModelBuilder ConfigureDatabaseKeys(this ModelBuilder modelBuilder) + { + // User PK + modelBuilder.Entity(builder => builder + .HasKey(user => user.Id)); + + // Country PK + modelBuilder.Entity(builder => builder + .HasKey(country => country.Code)); + + // Currency PK + modelBuilder.Entity(builder => builder + .HasKey(currency => currency.Num)); + + // FinanceOp PK + return + modelBuilder.Entity(builder => builder + .HasKey(financeOp => financeOp.Id)); + + + } + + private static ModelBuilder CountryCurrencyModel(this ModelBuilder modelBuilder) + { + + // Relationships + modelBuilder + .Entity() + .HasMany(ub => ub.Countries) + .WithMany(au => au.Currencies); + + modelBuilder.Entity() + .HasMany(ub => ub.Currencies) + .WithMany(au => au.Countries); + + return modelBuilder; + + } + + private static ModelBuilder ConfigureUserModel(this ModelBuilder modelBuilder) + { + + // User => Country + modelBuilder + .Entity(builder => builder + .HasOne() + .WithMany(co => co.Users)); + + + // Country => User + modelBuilder + .Entity(builder => builder + .HasMany() + .WithOne(u => u.Country) + .HasForeignKey(x => x.CountryId)); + + + // FinanceOp => User + modelBuilder + .Entity(builder => builder + .HasOne() + .WithMany(ft => ft.FinanceTransactions) + .HasForeignKey(x => x.UserId)); + + + return modelBuilder; + } + } +} + diff --git a/BlueWest.Api/StartupExtensions.cs b/BlueWest.Api/Extensions/StartupExtensions.cs similarity index 90% rename from BlueWest.Api/StartupExtensions.cs rename to BlueWest.Api/Extensions/StartupExtensions.cs index c886303..350a418 100644 --- a/BlueWest.Api/StartupExtensions.cs +++ b/BlueWest.Api/Extensions/StartupExtensions.cs @@ -19,13 +19,15 @@ namespace BlueWest.WebApi /// /// /// - public static void GetMySqlSettings( + /// + private static DbContextOptionsBuilder GetMySqlSettings( this DbContextOptionsBuilder optionsBuilder, IConfiguration configuration, IWebHostEnvironment environment) { var optionsBuilderRef = optionsBuilder.UseMySql(configuration.GetConnectionString("LocalMySQL"), new MySqlServerVersion(new Version(8, 0, 11))); + // The following three options help with debugging, but should // be changed or removed for production. if (environment.IsDevelopment()) @@ -35,6 +37,8 @@ namespace BlueWest.WebApi .EnableSensitiveDataLogging() .EnableDetailedErrors(); } + + return optionsBuilderRef; } /// @@ -42,13 +46,15 @@ namespace BlueWest.WebApi /// /// /// + /// /// public static IServiceCollection PrepareDatabasePool(this IServiceCollection serviceCollection, IConfiguration configuration, IWebHostEnvironment environment) { + return serviceCollection - .AddDbContextPool(options => options.GetMySqlSettings(configuration, environment)) .AddDbContextPool(options => options.GetMySqlSettings(configuration, environment)) + .AddDbContextPool(options => options.GetMySqlSettings(configuration, environment)) .AddDbContextPool(options => options.GetMySqlSettings(configuration, environment)); } } diff --git a/BlueWest.Api/Extensions/SwaggerExtensions.cs b/BlueWest.Api/Extensions/SwaggerExtensions.cs new file mode 100644 index 0000000..ddc4922 --- /dev/null +++ b/BlueWest.Api/Extensions/SwaggerExtensions.cs @@ -0,0 +1,46 @@ +using System; +using System.IO; +using System.Reflection; +using BlueWest.WebApi.Tools; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; + +namespace BlueWest.WebApi.Extensions +{ + public static class SwaggerExtensions + { + /// + /// Swagger documentation provider options + /// + /// + public static void ConfigureSwaggerOptions(this SwaggerGenOptions swaggerGenOptions) + { + swaggerGenOptions.SchemaFilter(); + swaggerGenOptions.SwaggerDoc("v1", new OpenApiInfo + { + Title = "BlueWest.Api.App", + Version = "v1", + Description = "BlueWest.Api.App", + TermsOfService = new Uri("https://git.codeliturgy.com/terms-of-service"), + Contact = new OpenApiContact + { + Name = "Benny", + Email = string.Empty, + Url = new Uri("https://git.codeliturgy.com"), + }, + License = new OpenApiLicense + { + Name = "Use under LICX", + Url = new Uri("https://git.codeliturgy.com/license"), + } + }); + + // Set the comments path for the Swagger JSON and UI. + var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; + var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); + swaggerGenOptions.IncludeXmlComments(xmlPath); + } + } +} + diff --git a/BlueWest.Api/Program.cs b/BlueWest.Api/Program.cs index 0a83f98..c7ef863 100644 --- a/BlueWest.Api/Program.cs +++ b/BlueWest.Api/Program.cs @@ -15,6 +15,9 @@ namespace BlueWest.WebApi { public class Program { + /// + /// Event Manager class + /// public static EventManager EventManager { get; set; } private static ThreadServer _threadServer; @@ -43,25 +46,8 @@ namespace BlueWest.WebApi var tryGetEventManager = Host1.Services.GetService(typeof(EventManager)); + _ = Host1.Services.GetService(typeof(ExchangeInterface)); - try - { - _ = Host1.Services.GetService(typeof(ExchangeInterface)); - - } - catch (Exception e) - { - if (e is InvalidOperationException exception) - { - if (e.Source == "Pomelo.EntityFrameworkCore.MySql") - { - throw new InvalidOperationException("MySQL Error"); - } - } - - throw; - - } if(tryGetEventManager == null) Console.WriteLine($"Failed to get {nameof(EventManager)} Service."); diff --git a/BlueWest.Api/Startup.cs b/BlueWest.Api/Startup.cs index d045d06..54acbd4 100644 --- a/BlueWest.Api/Startup.cs +++ b/BlueWest.Api/Startup.cs @@ -1,43 +1,29 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.HttpsPolicy; -using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Logging; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; using System.Text.Json.Serialization; -using System.Threading.Tasks; using BlueWest.Tools; +using BlueWest.WebApi.Extensions; using BlueWest.WebApi.Interfaces; -using BlueWest.WebApi.MySQL; -using BlueWest.WebApi.Tools; -using Microsoft.EntityFrameworkCore; -using Microsoft.OpenApi.Models; namespace BlueWest.WebApi { + /// + /// Startup class for the API. + /// public class Startup { - - public IConfiguration Configuration { get; } - + private readonly IConfiguration _configuration; private readonly IWebHostEnvironment _environment; - private readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins"; - /// /// Startup configuration of the API /// public Startup(IConfiguration configuration, IWebHostEnvironment hostEnvironment) { - Configuration = configuration; + _configuration = configuration; _environment = hostEnvironment; } @@ -59,56 +45,26 @@ namespace BlueWest.WebApi });*/ }); - services.AddControllers() - .AddJsonOptions(options => - { - options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.Preserve; - }); - /*services - .AddNewtonsoftJson(options => - options.SerializerSettings.Converters.Add(new StringEnumConverter())); -// order is vital, this *must* be called *after* AddNewtonsoftJson() - services.AddSwaggerGenNewtonsoftSupport();*/ - - services.AddSwaggerGen(options => - { - options.SchemaFilter(); - options.SwaggerDoc("v1", new OpenApiInfo - { - Title = "BlueWest.Api Documentation", - Version = "v1", - Description = "A simple example ASP.NET Core Web API", - TermsOfService = new Uri("https://example.com/terms"), - Contact = new OpenApiContact - { - Name = "Benny", - Email = string.Empty, - Url = new Uri("https://git.codeliturgy.com"), - }, - License = new OpenApiLicense - { - Name = "Use under LICX", - Url = new Uri("https://git.codeliturgy.com/license"), - } - }); - // Set the comments path for the Swagger JSON and UI. - var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; - var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); - options.IncludeXmlComments(xmlPath); - }); - + services + .AddControllers() + .AddJsonOptions(options => options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.Preserve); + services + .AddSwaggerGen(options => options.ConfigureSwaggerOptions()); services .AddSingleton() - .PrepareDatabasePool(Configuration, _environment) - .AddSingleton(); + .PrepareDatabasePool(_configuration, _environment) + .AddScoped(); // services.AddGrpc(); } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + /// + /// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + /// + /// Object with the necessary data to configure an application's request pipeline + /// Provides information about the web hosting environment an application is running in. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { @@ -120,21 +76,17 @@ namespace BlueWest.WebApi { c.RoutePrefix = "swagger"; c.SwaggerEndpoint("/swagger/v1/swagger.json", "BlueWest.Api v1"); - }); //app.UseHttpsRedirection(); app.UseRouting(); app.UseCors(MyAllowSpecificOrigins); - app.UseAuthorization(); - app.UseEndpoints(endpoints => { endpoints.MapControllers(); // endpoints.MapGrpcService(); - }); } } diff --git a/BlueWest.Data/Transaction/FinanceOp.cs b/BlueWest.Data/Transaction/FinanceOp.cs index a4a8147..e2542e3 100644 --- a/BlueWest.Data/Transaction/FinanceOp.cs +++ b/BlueWest.Data/Transaction/FinanceOp.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using MapTo; @@ -8,15 +9,16 @@ namespace BlueWest.Data public partial class FinanceOp { public int UserId { get; set; } - - [Key] public TimeSpan CreationDate { get; set; } - public Currency Currency { get; } + [Key] public int Id; + public TimeSpan CreationDate { get; set; } + + [Required] public Currency Currency { get; } public FinanceOpType Type {get;} private string Description {get;} - + public FinanceOp() { } diff --git a/BlueWest.Data/Finance/MathOperation.cs b/BlueWest.Data/Transaction/MathOperation.cs similarity index 100% rename from BlueWest.Data/Finance/MathOperation.cs rename to BlueWest.Data/Transaction/MathOperation.cs diff --git a/BlueWest.Data/User/User.cs b/BlueWest.Data/User/User.cs index 3e61a87..5f5e358 100644 --- a/BlueWest.Data/User/User.cs +++ b/BlueWest.Data/User/User.cs @@ -7,9 +7,7 @@ using MapTo; namespace BlueWest.Data { [MapFrom( typeof(UserCreate))] - /* [UseUpdate] - */ public partial class User { public int Id { get; set; } @@ -19,7 +17,7 @@ namespace BlueWest.Data public Country Country { get; set; } - [ForeignKey("Country")] + [ForeignKey("Countries")] public int CountryId { get; set; } public User(int id, string name) diff --git a/BlueWest.Frontend b/BlueWest.Frontend new file mode 160000 index 0000000..8f656cb --- /dev/null +++ b/BlueWest.Frontend @@ -0,0 +1 @@ +Subproject commit 8f656cbcc1c5782b1c5983600568704b6244b1ef diff --git a/BlueWest.Frontend/.gitignore b/BlueWest.Frontend/.gitignore deleted file mode 100644 index 75631d2..0000000 --- a/BlueWest.Frontend/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -.DS_Store -node_modules -/build -/.svelte-kit -/package -.env diff --git a/BlueWest.Frontend/README.md b/BlueWest.Frontend/README.md deleted file mode 100644 index 82510ca..0000000 --- a/BlueWest.Frontend/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# create-svelte - -Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte); - -## Creating a project - -If you're seeing this, you've probably already done this step. Congrats! - -```bash -# create a new project in the current directory -npm init svelte@next - -# create a new project in my-app -npm init svelte@next my-app -``` - -> Note: the `@next` is temporary - -## Developing - -Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: - -```bash -npm run dev - -# or start the server and open the app in a new browser tab -npm run dev -- --open -``` - -## Building - -Before creating a production version of your app, install an [adapter](https://kit.svelte.dev/docs#adapters) for your target environment. Then: - -```bash -npm run build -``` - -> You can preview the built app with `npm run preview`, regardless of whether you installed an adapter. This should _not_ be used to serve your app in production. diff --git a/BlueWest.Frontend/jsconfig.json b/BlueWest.Frontend/jsconfig.json deleted file mode 100644 index 3757b0e..0000000 --- a/BlueWest.Frontend/jsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": ".", - "paths": { - "$lib": ["src/lib"], - "$lib/*": ["src/lib/*"] - } - }, - "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"] -} diff --git a/BlueWest.Frontend/package-lock.json b/BlueWest.Frontend/package-lock.json deleted file mode 100644 index 95190fc..0000000 --- a/BlueWest.Frontend/package-lock.json +++ /dev/null @@ -1,987 +0,0 @@ -{ - "name": "bluewest.frontend", - "version": "0.0.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "bluewest.frontend", - "version": "0.0.1", - "dependencies": { - "klinecharts": "^8.1.0" - }, - "devDependencies": { - "@sveltejs/kit": "next", - "svelte": "^3.42.6" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz", - "integrity": "sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ==", - "dev": true, - "dependencies": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/@sveltejs/kit": { - "version": "1.0.0-next.198", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.198.tgz", - "integrity": "sha512-BgXVrCOn0sYNAvmSIXxfztntGzb4ZhaO3KSmJzkSeQQg20+aQGqyOJnhTQ+wDX+YhyKURxVOhjTWHjeO6d7gdw==", - "dev": true, - "dependencies": { - "@sveltejs/vite-plugin-svelte": "^1.0.0-next.30", - "cheap-watch": "^1.0.4", - "sade": "^1.7.4", - "vite": "^2.6.12" - }, - "bin": { - "svelte-kit": "svelte-kit.js" - }, - "engines": { - "node": ">=14.13" - }, - "peerDependencies": { - "svelte": "^3.44.0" - } - }, - "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "1.0.0-next.30", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.30.tgz", - "integrity": "sha512-YQqdMxjL1VgSFk4/+IY3yLwuRRapPafPiZTiaGEq1psbJYSNYUWx9F1zMm32GMsnogg3zn99mGJOqe3ld3HZSg==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^4.1.1", - "debug": "^4.3.2", - "kleur": "^4.1.4", - "magic-string": "^0.25.7", - "require-relative": "^0.8.7", - "svelte-hmr": "^0.14.7" - }, - "engines": { - "node": "^14.13.1 || >= 16" - }, - "peerDependencies": { - "diff-match-patch": "^1.0.5", - "svelte": "^3.44.0", - "vite": "^2.6.0" - }, - "peerDependenciesMeta": { - "diff-match-patch": { - "optional": true - } - } - }, - "node_modules/cheap-watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cheap-watch/-/cheap-watch-1.0.4.tgz", - "integrity": "sha512-QR/9FrtRL5fjfUJBhAKCdi0lSRQ3rVRRum3GF9wDKp2TJbEIMGhUEr2yU8lORzm9Isdjx7/k9S0DFDx+z5VGtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/esbuild": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.15.tgz", - "integrity": "sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "optionalDependencies": { - "esbuild-android-arm64": "0.13.15", - "esbuild-darwin-64": "0.13.15", - "esbuild-darwin-arm64": "0.13.15", - "esbuild-freebsd-64": "0.13.15", - "esbuild-freebsd-arm64": "0.13.15", - "esbuild-linux-32": "0.13.15", - "esbuild-linux-64": "0.13.15", - "esbuild-linux-arm": "0.13.15", - "esbuild-linux-arm64": "0.13.15", - "esbuild-linux-mips64le": "0.13.15", - "esbuild-linux-ppc64le": "0.13.15", - "esbuild-netbsd-64": "0.13.15", - "esbuild-openbsd-64": "0.13.15", - "esbuild-sunos-64": "0.13.15", - "esbuild-windows-32": "0.13.15", - "esbuild-windows-64": "0.13.15", - "esbuild-windows-arm64": "0.13.15" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz", - "integrity": "sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/esbuild-darwin-64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz", - "integrity": "sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz", - "integrity": "sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz", - "integrity": "sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz", - "integrity": "sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/esbuild-linux-32": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz", - "integrity": "sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz", - "integrity": "sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-arm": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz", - "integrity": "sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz", - "integrity": "sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz", - "integrity": "sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz", - "integrity": "sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz", - "integrity": "sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ] - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz", - "integrity": "sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ] - }, - "node_modules/esbuild-sunos-64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz", - "integrity": "sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ] - }, - "node_modules/esbuild-windows-32": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz", - "integrity": "sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/esbuild-windows-64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz", - "integrity": "sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz", - "integrity": "sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/kleur": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/klinecharts": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/klinecharts/-/klinecharts-8.1.0.tgz", - "integrity": "sha512-LNRa3eRs81nmhuepLxsnDj1s2uj/17Ta4rA71SlMApu1YHGjs4LBcNSwuNRRCLpdCfHi2LQ3KWSpVwrBHoDTUQ==" - }, - "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/postcss": { - "version": "8.3.11", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", - "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", - "dev": true, - "dependencies": { - "nanoid": "^3.1.30", - "picocolors": "^1.0.0", - "source-map-js": "^0.6.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/require-relative": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", - "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", - "dev": true - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rollup": { - "version": "2.60.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.60.1.tgz", - "integrity": "sha512-akwfnpjY0rXEDSn1UTVfKXJhPsEBu+imi1gqBA1ZkHGydUnkV/fWCC90P7rDaLEW8KTwBcS1G3N4893Ndz+jwg==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/sade": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", - "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", - "dev": true, - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/svelte": { - "version": "3.44.2", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.44.2.tgz", - "integrity": "sha512-jrZhZtmH3ZMweXg1Q15onb8QlWD+a5T5Oca4C1jYvSURp2oD35h4A5TV6t6MEa93K4LlX6BkafZPdQoFjw/ylA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/svelte-hmr": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.7.tgz", - "integrity": "sha512-pDrzgcWSoMaK6AJkBWkmgIsecW0GChxYZSZieIYfCP0v2oPyx2CYU/zm7TBIcjLVUPP714WxmViE9Thht4etog==", - "dev": true, - "peerDependencies": { - "svelte": ">=3.19.0" - } - }, - "node_modules/vite": { - "version": "2.6.14", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.6.14.tgz", - "integrity": "sha512-2HA9xGyi+EhY2MXo0+A2dRsqsAG3eFNEVIo12olkWhOmc8LfiM+eMdrXf+Ruje9gdXgvSqjLI9freec1RUM5EA==", - "dev": true, - "dependencies": { - "esbuild": "^0.13.2", - "postcss": "^8.3.8", - "resolve": "^1.20.0", - "rollup": "^2.57.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": ">=12.2.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "less": "*", - "sass": "*", - "stylus": "*" - }, - "peerDependenciesMeta": { - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - } - } - } - }, - "dependencies": { - "@rollup/pluginutils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz", - "integrity": "sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ==", - "dev": true, - "requires": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - } - }, - "@sveltejs/kit": { - "version": "1.0.0-next.198", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.198.tgz", - "integrity": "sha512-BgXVrCOn0sYNAvmSIXxfztntGzb4ZhaO3KSmJzkSeQQg20+aQGqyOJnhTQ+wDX+YhyKURxVOhjTWHjeO6d7gdw==", - "dev": true, - "requires": { - "@sveltejs/vite-plugin-svelte": "^1.0.0-next.30", - "cheap-watch": "^1.0.4", - "sade": "^1.7.4", - "vite": "^2.6.12" - } - }, - "@sveltejs/vite-plugin-svelte": { - "version": "1.0.0-next.30", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.30.tgz", - "integrity": "sha512-YQqdMxjL1VgSFk4/+IY3yLwuRRapPafPiZTiaGEq1psbJYSNYUWx9F1zMm32GMsnogg3zn99mGJOqe3ld3HZSg==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^4.1.1", - "debug": "^4.3.2", - "kleur": "^4.1.4", - "magic-string": "^0.25.7", - "require-relative": "^0.8.7", - "svelte-hmr": "^0.14.7" - } - }, - "cheap-watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cheap-watch/-/cheap-watch-1.0.4.tgz", - "integrity": "sha512-QR/9FrtRL5fjfUJBhAKCdi0lSRQ3rVRRum3GF9wDKp2TJbEIMGhUEr2yU8lORzm9Isdjx7/k9S0DFDx+z5VGtw==", - "dev": true - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "esbuild": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.15.tgz", - "integrity": "sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==", - "dev": true, - "requires": { - "esbuild-android-arm64": "0.13.15", - "esbuild-darwin-64": "0.13.15", - "esbuild-darwin-arm64": "0.13.15", - "esbuild-freebsd-64": "0.13.15", - "esbuild-freebsd-arm64": "0.13.15", - "esbuild-linux-32": "0.13.15", - "esbuild-linux-64": "0.13.15", - "esbuild-linux-arm": "0.13.15", - "esbuild-linux-arm64": "0.13.15", - "esbuild-linux-mips64le": "0.13.15", - "esbuild-linux-ppc64le": "0.13.15", - "esbuild-netbsd-64": "0.13.15", - "esbuild-openbsd-64": "0.13.15", - "esbuild-sunos-64": "0.13.15", - "esbuild-windows-32": "0.13.15", - "esbuild-windows-64": "0.13.15", - "esbuild-windows-arm64": "0.13.15" - } - }, - "esbuild-android-arm64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz", - "integrity": "sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz", - "integrity": "sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz", - "integrity": "sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz", - "integrity": "sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz", - "integrity": "sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz", - "integrity": "sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz", - "integrity": "sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz", - "integrity": "sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz", - "integrity": "sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz", - "integrity": "sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz", - "integrity": "sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz", - "integrity": "sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz", - "integrity": "sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz", - "integrity": "sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz", - "integrity": "sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz", - "integrity": "sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz", - "integrity": "sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==", - "dev": true, - "optional": true - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "kleur": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", - "dev": true - }, - "klinecharts": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/klinecharts/-/klinecharts-8.1.0.tgz", - "integrity": "sha512-LNRa3eRs81nmhuepLxsnDj1s2uj/17Ta4rA71SlMApu1YHGjs4LBcNSwuNRRCLpdCfHi2LQ3KWSpVwrBHoDTUQ==" - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "postcss": { - "version": "8.3.11", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", - "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", - "dev": true, - "requires": { - "nanoid": "^3.1.30", - "picocolors": "^1.0.0", - "source-map-js": "^0.6.2" - } - }, - "require-relative": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", - "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", - "dev": true - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "rollup": { - "version": "2.60.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.60.1.tgz", - "integrity": "sha512-akwfnpjY0rXEDSn1UTVfKXJhPsEBu+imi1gqBA1ZkHGydUnkV/fWCC90P7rDaLEW8KTwBcS1G3N4893Ndz+jwg==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "sade": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", - "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", - "dev": true, - "requires": { - "mri": "^1.1.0" - } - }, - "source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", - "dev": true - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "svelte": { - "version": "3.44.2", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.44.2.tgz", - "integrity": "sha512-jrZhZtmH3ZMweXg1Q15onb8QlWD+a5T5Oca4C1jYvSURp2oD35h4A5TV6t6MEa93K4LlX6BkafZPdQoFjw/ylA==", - "dev": true - }, - "svelte-hmr": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.7.tgz", - "integrity": "sha512-pDrzgcWSoMaK6AJkBWkmgIsecW0GChxYZSZieIYfCP0v2oPyx2CYU/zm7TBIcjLVUPP714WxmViE9Thht4etog==", - "dev": true, - "requires": {} - }, - "vite": { - "version": "2.6.14", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.6.14.tgz", - "integrity": "sha512-2HA9xGyi+EhY2MXo0+A2dRsqsAG3eFNEVIo12olkWhOmc8LfiM+eMdrXf+Ruje9gdXgvSqjLI9freec1RUM5EA==", - "dev": true, - "requires": { - "esbuild": "^0.13.2", - "fsevents": "~2.3.2", - "postcss": "^8.3.8", - "resolve": "^1.20.0", - "rollup": "^2.57.0" - } - } - } -} diff --git a/BlueWest.Frontend/package.json b/BlueWest.Frontend/package.json deleted file mode 100644 index ddc4ea8..0000000 --- a/BlueWest.Frontend/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "bluewest.frontend", - "version": "0.0.1", - "scripts": { - "dev": "svelte-kit dev", - "build": "svelte-kit build", - "preview": "svelte-kit preview" - }, - "devDependencies": { - "@sveltejs/kit": "next", - "svelte": "^3.42.6" - }, - "type": "module", - "dependencies": { - "klinecharts": "^8.1.0" - } -} diff --git a/BlueWest.Frontend/src/app.html b/BlueWest.Frontend/src/app.html deleted file mode 100644 index 096eb27..0000000 --- a/BlueWest.Frontend/src/app.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - %svelte.head% - - -
%svelte.body%
- - diff --git a/BlueWest.Frontend/src/components/Chart.svelte b/BlueWest.Frontend/src/components/Chart.svelte deleted file mode 100644 index c44bab6..0000000 --- a/BlueWest.Frontend/src/components/Chart.svelte +++ /dev/null @@ -1,21 +0,0 @@ - \ No newline at end of file diff --git a/BlueWest.Frontend/src/components/Menu.svelte b/BlueWest.Frontend/src/components/Menu.svelte deleted file mode 100644 index c0f0081..0000000 --- a/BlueWest.Frontend/src/components/Menu.svelte +++ /dev/null @@ -1,15 +0,0 @@ - \ No newline at end of file diff --git a/BlueWest.Frontend/src/global.d.ts b/BlueWest.Frontend/src/global.d.ts deleted file mode 100644 index 63908c6..0000000 --- a/BlueWest.Frontend/src/global.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/BlueWest.Frontend/src/routes/binance.svelte b/BlueWest.Frontend/src/routes/binance.svelte deleted file mode 100644 index 8b40b8e..0000000 --- a/BlueWest.Frontend/src/routes/binance.svelte +++ /dev/null @@ -1,50 +0,0 @@ - - - - - \ No newline at end of file diff --git a/BlueWest.Frontend/src/routes/index.svelte b/BlueWest.Frontend/src/routes/index.svelte deleted file mode 100644 index ef12c39..0000000 --- a/BlueWest.Frontend/src/routes/index.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - Blue West - Start - - - \ No newline at end of file diff --git a/BlueWest.Frontend/src/routes/users.svelte b/BlueWest.Frontend/src/routes/users.svelte deleted file mode 100644 index 566ecab..0000000 --- a/BlueWest.Frontend/src/routes/users.svelte +++ /dev/null @@ -1,170 +0,0 @@ - - Blue West - Users - - - - -
- {#if !loaded} - - {/if} - {#if loaded} - - - - - - - - - - - - {#each users as user} - {#if userEditTemp !== undefined && userEditTemp.id === user.id && !addUserEnabled} - - - - - - - - - - - - {:else} - - - - - - - - - - - - {/if} - - {/each} - - {#if addUserEnabled} - - - - - - - - - - - - {/if} -
IDNameAddressBTC AddressBTC AmountLTC AddressLTC Amount
{user.id} - - - -
{user.id}{user.name}{user.address}{user.btcAddress}{user.btcAmount}{user.ltcAddress}{user.ltcAmount} -
-
onEditUserClicked(user)}> - edit -
-
onRemoveUserClicked(user.id)}> - remove -
-
- - -
- - -
- {/if} -
- - \ No newline at end of file diff --git a/BlueWest.Frontend/src/tools/Dtos.js b/BlueWest.Frontend/src/tools/Dtos.js deleted file mode 100644 index d003941..0000000 --- a/BlueWest.Frontend/src/tools/Dtos.js +++ /dev/null @@ -1,14 +0,0 @@ -export class UserUpdateDto{ - constructor(name='', address='', btcAddress='', ltcAddress='', btcAmount='', ltcAmount='') { - this.name = name; - this.address = address; - this.btcAddress = btcAddress; - this.ltcAddress = ltcAddress; - this.btcAmount = btcAmount; - this.ltcAmount = ltcAmount; - } - - static ConvertFromUser(user) { - return new UserUpdateDto(user.name, user.address, user.btcAddress, user.ltcAddress, user.btcAmount, user.ltcAmount); - } -} \ No newline at end of file diff --git a/BlueWest.Frontend/src/tools/RestExtensions.js b/BlueWest.Frontend/src/tools/RestExtensions.js deleted file mode 100644 index f17e121..0000000 --- a/BlueWest.Frontend/src/tools/RestExtensions.js +++ /dev/null @@ -1,50 +0,0 @@ -async function RestRequest(url = '', type = 'get', data = {}) { - - let answerData = - { - "credentials": "omit", - "headers": { - "Sec-Fetch-Dest": "empty", - "Sec-Fetch-Mode": "no-cors", - "Sec-Fetch-Site": "cross-site", - "Pragma": "no-cache", - "Cache-Control": "no-cache" - } - } - - if (type.toLowerCase() === 'post' || type.toLowerCase() === 'put') { - answerData['headers']['Content-Type'] = "application/json-patch+json"; - answerData['body'] = JSON.stringify(data); - } - - answerData['method'] = type.toUpperCase(); - - let response = await fetch(url, answerData); - - return response.json(); -} - -export function UpdateUser(userId, userData) { - return RestRequest(`https://localhost:5001/User/${userId}`, 'put', userData); -} - -export function DeleteUser(userId) { - return RestRequest(`https://localhost:5001/User/${userId}`, 'delete'); -} - -export function AddUser(userData) { - console.log(userData) - return RestRequest(`https://localhost:5001/User`, 'post', userData); -} - -export function GetUsers() { - return RestRequest("https://localhost:5001/User"); -} - -export function GetUserById(id) { - RestRequest(`http://localhost:5000/User/${id}`).then((res) => { - return res; - }); -} - - \ No newline at end of file diff --git a/BlueWest.Frontend/static/favicon.png b/BlueWest.Frontend/static/favicon.png deleted file mode 100644 index 825b9e65af7c104cfb07089bb28659393b4f2097..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1571 zcmV+;2Hg3HP)Px)-AP12RCwC$UE6KzI1p6{F2N z1VK2vi|pOpn{~#djwYcWXTI_im_u^TJgMZ4JMOsSj!0ma>B?-(Hr@X&W@|R-$}W@Z zgj#$x=!~7LGqHW?IO8+*oE1MyDp!G=L0#^lUx?;!fXv@l^6SvTnf^ac{5OurzC#ZMYc20lI%HhX816AYVs1T3heS1*WaWH z%;x>)-J}YB5#CLzU@GBR6sXYrD>Vw(Fmt#|JP;+}<#6b63Ike{Fuo!?M{yEffez;| zp!PfsuaC)>h>-AdbnwN13g*1LowNjT5?+lFVd#9$!8Z9HA|$*6dQ8EHLu}U|obW6f z2%uGv?vr=KNq7YYa2Roj;|zooo<)lf=&2yxM@e`kM$CmCR#x>gI>I|*Ubr({5Y^rb zghxQU22N}F51}^yfDSt786oMTc!W&V;d?76)9KXX1 z+6Okem(d}YXmmOiZq$!IPk5t8nnS{%?+vDFz3BevmFNgpIod~R{>@#@5x9zJKEHLHv!gHeK~n)Ld!M8DB|Kfe%~123&Hz1Z(86nU7*G5chmyDe ziV7$pB7pJ=96hpxHv9rCR29%bLOXlKU<_13_M8x)6;P8E1Kz6G<&P?$P^%c!M5`2` zfY2zg;VK5~^>TJGQzc+33-n~gKt{{of8GzUkWmU110IgI0DLxRIM>0US|TsM=L|@F z0Bun8U!cRB7-2apz=y-7*UxOxz@Z0)@QM)9wSGki1AZ38ceG7Q72z5`i;i=J`ILzL z@iUO?SBBG-0cQuo+an4TsLy-g-x;8P4UVwk|D8{W@U1Zi z!M)+jqy@nQ$p?5tsHp-6J304Q={v-B>66$P0IDx&YT(`IcZ~bZfmn11#rXd7<5s}y zBi9eim&zQc0Dk|2>$bs0PnLmDfMP5lcXRY&cvJ=zKxI^f0%-d$tD!`LBf9^jMSYUA zI8U?CWdY@}cRq6{5~y+)#h1!*-HcGW@+gZ4B};0OnC~`xQOyH19z*TA!!BJ%9s0V3F?CAJ{hTd#*tf+ur-W9MOURF-@B77_-OshsY}6 zOXRY=5%C^*26z?l)1=$bz30!so5tfABdSYzO+H=CpV~aaUefmjvfZ3Ttu9W&W3Iu6 zROlh0MFA5h;my}8lB0tAV-Rvc2Zs_CCSJnx@d`**$idgy-iMob4dJWWw|21b4NB=LfsYp0Aeh{Ov)yztQi;eL4y5 zMi>8^SzKqk8~k?UiQK^^-5d8c%bV?$F8%X~czyiaKCI2=UH element in src/app.html - target: '#svelte' - } -}; - -export default config;