Current state of the project. (For how it works / how to work here see CLAUDE.md; for the full improvement history see PLAN.md.)
3.1 — done and published to MyGet. Tests green (380, xUnit v3 on Jint). Docs build clean.
- Migration to xUnit v3. The whole test suite runs on
xunit.v3(net8.0), executing emitted JavaScript in-process with Jint. - Test coverage. A comprehensive
Complete/differential suite — each case checked three ways (compiled C# delegate, emitted JS in Jint, and the two against each other), organised by area (operators, math, strings, LINQ, enums, XOR, constant folding, dates, the registries, a realistic profile scenario). Earlier correctness/parity fixes from PLAN.md §1 are locked in by it. - Extensibility refactor.
AddCall/AddMemberAccess/EmitConstantbecame thin dispatch loops over translator pipelines, exposed as flat registries on the compiler:Methods(IJsMethodRegistry),Constants(IJsConstantRegistry),Members(IJsMemberRegistry).Parameters(IJsParameterRegistry) — the new form-binding registry:MapReference(Func<Type,bool>)turns on the built-inreference()/reference('path')/jsv_indexrendering (off by default);Map(...)emits any custom shape; publicExpressionCompiler.ParameterAccessPath(Expression)builds the dotted path. This makes the form-validationreference()/valuebinding a built-in feature — no subclassing needed.
- Documentation. A full docgen site under
help/(build:dotnet build help/project.proj /t:MakeDoc): landing page, namespace overview, and nine how-to/reference guides insrc/articles.ds— walkthrough, model-object rules, client frameworks, supported features, dates & time zones, extending the translator, unit-testing. Every emitted-JS example is pinned by a test. - Packaging. NuGet package (
nuget/,nuget packfrom the nuspec) now ships a packageREADME.md(with docs/source links and an ASP.NET client example) and an embedded consumer skill (skills/SKILL.md, delivered vianuget-skills). Metadata carriesprojectUrl(docs),repository, andreadme.
- Publish the docs to
https://docs.gehtsoftusa.com/Gehtsoft.Expression.ToJs/(uploadhelp/dst/; the URL is already referenced from the nuspec and README, so it 404s until then). - Downstream refactor of Gehtsoft.EF.Toolbox
ValidationExpressionCompileronto theParametersregistry (bump its dependency to 3.1+) — see REFERENCE_REFACTOR.md. - Feature stragglers (PLAN.md §4):
Average, predicate-lessFirstOrDefault/LastOrDefault, bit shifts,int.TryParse/double.TryParse, string+concat,DateTime.AddMonths/AddYears. - Optional: per-
DateTimeKindconstant normalization; global enum name-mode; packaging/CI refresh and nullable reference types (PLAN.md §5).