Cheat sheet
Every mapping, grouped by package. The long form on the left, the compact form Smoower uses on the right. Same behaviour, same compiled IL.
Smoower.Minified.Core
Guards
| Long form | Compact |
string.IsNullOrWhiteSpace(s) | s.nil() |
string.IsNullOrEmpty(s) | s.emp() |
!items.Any() | items.none() |
Aliases
| Long form | Compact |
CancellationToken ct | CT ct |
IConfiguration cfg | Cfg cfg |
Smoower.Minified.AspNetCore
Attributes
| Long form | Compact |
[ApiController] | [API] |
[Route("api/users")] | [RT("api/users")] |
[HttpGet("{id}")] | [HG("{id}")] |
[HttpPost] | [HPO] |
[HttpPut] | [HPU] |
[HttpPatch] | [HPA] |
[HttpDelete("{id}")] | [HD("{id}")] |
[Authorize] | [AUTH] |
[AllowAnonymous] | [ANON] |
[FromBody] | [FB] |
[FromRoute] | [FR] |
[FromQuery] | [FQ] |
[FromHeader] | [FH] |
Aliases
| Long form | Compact |
: ControllerBase | :Ctl |
IActionResult | Res |
ActionResult | AR |
Task<IActionResult> | Tr |
Result-fusing terminators
| Long form | Compact |
var x=await q.FirstOrDefaultAsync();return x==null?NotFound():Ok(x); | q.ok1() |
Ok(await q.ToListAsync()) | q.okl() |
Ok(await q.CountAsync()) | q.okc() |
var x=await set.FindAsync(id);return x==null?NotFound():Ok(x); | set.okId(id) |
db.Add(e);await db.SaveChangesAsync();return Ok(e); | db.okAdd(e) |
db.Add(e);await db.SaveChangesAsync();return CreatedAtAction(...); | db.okNew(e) |
CreatedAtAction(nameof(Get), new { id = value.Id }, value) | value.created() |
FindAsync+NotFound+Remove+SaveChanges+NoContent | db.delById<User>(id) |
Response-type attributes (Swagger)
| Long form | Compact |
[ProducesResponseType(StatusCodes.Status200OK)] | [P200] |
[ProducesResponseType(typeof(UserDto), StatusCodes.Status200OK)] | [P200<UserDto>] |
[ProducesResponseType(StatusCodes.Status201Created)] | [P201] |
[ProducesResponseType(StatusCodes.Status400BadRequest)] | [P400] |
[ProducesResponseType(StatusCodes.Status404NotFound)] | [P404] |
Smoower.Minified.EFCore
Query — composition
| Long form | Compact |
q.Where(x=>x.Id==id) | q.w(x=>x.Id==id) |
q.Select(x=>x.Name) | q.s(x=>x.Name) |
q.OrderBy(x=>x.Name) | q.ob(x=>x.Name) |
q.OrderByDescending(x=>x.Name) | q.obd(x=>x.Name) |
q.ThenBy(x=>x.Name) | q.tb(x=>x.Name) |
q.ThenByDescending(x=>x.Name) | q.tbd(x=>x.Name) |
q.Skip(10) | q.sk(10) |
q.Take(10) | q.tk(10) |
q.AsNoTracking() | q.nt() |
q.AsNoTrackingWithIdentityResolution() | q.ntir() |
q.Include(x=>x.Orders) | q.inc(x=>x.Orders) |
q.ThenInclude(x=>x.Lines) | q.tinc(x=>x.Lines) |
q.GroupBy(x=>x.Status) | q.gb(x=>x.Status) |
Query — async terminators
| Long form | Compact |
q.ToListAsync() | q.lst() |
q.FirstOrDefaultAsync() | q.one() |
q.SingleOrDefaultAsync() | q.single() |
q.AnyAsync() | q.any() |
q.CountAsync() | q.cnt() |
q.MaxAsync(x=>x.Total) | q.max(x=>x.Total) |
q.MinAsync(x=>x.Total) | q.min(x=>x.Total) |
Write (async; S-suffixed sync variants exist)
| Long form | Compact |
set.FindAsync(key) | set.id(key) |
await db.SaveChangesAsync() | await db.save() |
db.Add(e);await db.SaveChangesAsync(); | await db.add(e) |
db.Update(e);await db.SaveChangesAsync(); | await db.upd(e) |
db.Remove(e);await db.SaveChangesAsync(); | await db.del(e) |
Model config (OnModelCreating)
| Long form | Compact |
modelBuilder.Entity<T>().HasQueryFilter(f) | mb.qf<T>(f) |
entity.HasKey(e=>e.Id) | entity.key(e=>e.Id) |
entity.HasIndex(e=>e.Email) | entity.idx(e=>e.Email) |
.IsUnique() | .uniq() |
entity.Property(e=>e.Name) | entity.p(e=>e.Name) |
.IsRequired() | .req() |
.HasMaxLength(100) | .max(100) |
.HasConversion<string>() | .conv<string>() |
entity.HasOne(e=>e.Author) | entity.one(e=>e.Author) |
.WithMany(a=>a.Books) | .many(a=>a.Books) |
entity.HasMany(e=>e.Books) | entity.hasM(e=>e.Books) |
.WithOne(b=>b.Author) | .wOne(b=>b.Author) |
.HasForeignKey(e=>e.AuthorId) | .fk(e=>e.AuthorId) |
.OnDelete(DeleteBehavior.Cascade) | .cascade() |
.OnDelete(DeleteBehavior.Restrict) | .restrict() |
.OnDelete(DeleteBehavior.SetNull) | .setNull() |
.OnDelete(DeleteBehavior.ClientSetNull) | .clientSetNull() |
.OnDelete(behavior) | .onDel(behavior) |
Smoower.Minified.Extensions
Clock (injectable) / Clk (static)
| Long form | Compact |
DateTime.UtcNow | clock.utc |
DateTime.Now | clock.now |
DateOnly.FromDateTime(DateTime.UtcNow) | clock.today |
DateTimeOffset.UtcNow.ToUnixTimeSeconds() | clock.unix |
DateTime
| Long form | Compact |
dt.ToUniversalTime() | dt.utc() |
dt.ToShortDateString() | dt.sd() |
dt.ToLongDateString() | dt.ld() |
dt.ToShortTimeString() | dt.st() |
dt.ToLongTimeString() | dt.lt() |
TimeSpan factories (on int)
| Long form | Compact |
TimeSpan.FromMilliseconds(250) | 250.ms() |
TimeSpan.FromSeconds(30) | 30.secs() |
TimeSpan.FromMinutes(5) | 5.mins() |
TimeSpan.FromHours(2) | 2.hrs() |
TimeSpan.FromDays(7) | 7.days() |
Environment
| Long form | Compact |
Environment.GetEnvironmentVariable("X") | Env.get("X") |
Environment.SetEnvironmentVariable("X", v) | Env.set("X", v) |
Smoower.Minified.Hosting
IServiceCollection / IServiceProvider
| Long form | Compact |
services.AddScoped<IFoo, Foo>() | svc.scoped<IFoo, Foo>() |
services.AddSingleton<Bar>() | svc.single<Bar>() |
services.AddTransient<Baz>() | svc.trans<Baz>() |
provider.GetRequiredService<T>() | provider.svc<T>() |
Smoower.Minified.Logging
ILogger
| Long form | Compact |
log.LogInformation("created {Id}", id) | log.inf("created {Id}", id) |
log.LogWarning("slow {Ms}", ms) | log.wrn("slow {Ms}", ms) |
log.LogError("failed {Id}", id) | log.err("failed {Id}", id) |
log.LogDebug("state {S}", s) | log.dbg("state {S}", s) |
Smoower.Minified.Http
HttpClient
| Long form | Compact |
c.GetFromJsonAsync<T>(url) | c.getJson<T>(url) |
c.PostAsJsonAsync(url, body) | c.postJson(url, body) |
c.PutAsJsonAsync(url, body) | c.putJson(url, body) |
c.PatchAsJsonAsync(url, body) | c.patchJson(url, body) |
c.DeleteAsync(url) | c.del(url) |
Smoower.Minified.Validation
Rules (on MiniValidator<T>)
| Long form | Compact |
RuleFor(x=>x.Name).NotEmpty() | req(x=>x.Name) |
RuleFor(x=>x.Age) | rule(x=>x.Age) |
r.MaximumLength(100) | r.max(100) |
r.MinimumLength(2) | r.min(2) |
r.EmailAddress() | r.email() |
r.GreaterThan(0) | r.gt(0) |
r.LessThanOrEqualTo(120) | r.lte(120) |
r.InclusiveBetween(1, 5) | r.rng(1, 5) |
Smoower.Minified.Json
System.Text.Json (Newtonsoft variant identical)
| Long form | Compact |
JsonSerializer.Serialize(x) | x.toJson() |
JsonSerializer.Deserialize<T>(s) | s.fromJson<T>() |
Smoower.Minified.Dapper
IDbConnection
| Long form | Compact |
c.QueryAsync<T>(sql, p) | c.q<T>(sql, p) |
c.QueryFirstOrDefaultAsync<T>(sql, p) | c.q1<T>(sql, p) |
c.QuerySingleOrDefaultAsync<T>(sql, p) | c.qs<T>(sql, p) |
c.ExecuteAsync(sql, p) | c.ex(sql, p) |
c.ExecuteScalarAsync<T>(sql, p) | c.scalar<T>(sql, p) |