Skip to content

v1.0.0

Choose a tag to compare

@windischb windischb released this 15 Apr 21:12
· 51 commits to develop since this release

Cocoar.JsEval v1.0.0

JavaScript/TypeScript execution library for .NET, built on Jint.

Highlights

  • JavaScript execution via Jint 4.8 (ES2025 support)
  • TypeScript 6.0 transpilation with embedded compiler
  • Four execution methods — from full-featured (ExecuteAsync) to high-performance (Evaluate with pre-parsed scripts, < 1 µs per call)
  • Built-in globals — console, setTimeout/setInterval, fetch(), structuredClone, atob/btoa, performance.now(), TextEncoder/TextDecoder
  • Automatic .NET Task → JS Promise interop
  • 8 extensible modules — HTTP, Database, SMTP, Template, AngleSharp, Logging, Common, VirtualFileSystem
  • Expression Tree helpers — FilterBuilder<T>, enum-as-string comparison, closure-pattern Contains/IN, nested property paths, collection navigation (Any)
  • .d.ts generation from C# types for Monaco Editor IntelliSense
  • IJsEngine interface for testability and mocking
  • Fluent DI registration — services.AddJsEval(b => b.EnableFetch().AddModule<T>())

Quick Start

dotnet add package Cocoar.JsEval.Engine
services.AddJsEval();

var engine = sp.GetRequiredService<IJsEngine>();
await engine.ExecuteAsync("export const x = 2 + 3;");

Expression Helpers

dotnet add package Cocoar.JsEval.Expressions
var filter = new FilterBuilder<TodoView>()
    .Where("IsArchived", false)
    .WhereIf(customerIds.Count > 0, b => b.Contains("Customer.Id", customerIds))
    .WhereAny<ResponsibleView, Guid>("Responsibles", "Id", userId)
    .WhereEnumAsString("Status", "Active")
    .Build();

var results = await session.Query<TodoView>().Where(filter).ToListAsync();

Packages

Package Description
Cocoar.JsEval Core interfaces and helpers
Cocoar.JsEval.Engine JsEngine + fetch() + DI
Cocoar.JsEval.TypeScript TypeScript 6.0 transpiler
Cocoar.JsEval.TsDefinition .d.ts generation for IntelliSense
Cocoar.JsEval.Expressions Expression Tree helpers (FilterBuilder, enum comparison, Contains/IN)
Cocoar.JsEval.Module.Common Guid, Sleep, Random
Cocoar.JsEval.Module.Http Fluent HTTP client
Cocoar.JsEval.Module.Database SQL Server + PostgreSQL
Cocoar.JsEval.Module.Smtp Email via MailKit
Cocoar.JsEval.Module.Template Scriban templates
Cocoar.JsEval.Module.AngleSharp HTML parsing
Cocoar.JsEval.Module.Logging Microsoft.Extensions.Logging
Cocoar.JsEval.Module.VirtualFileSystem Zio VFS