Skip to content

Latest commit

 

History

History
71 lines (60 loc) · 3.89 KB

File metadata and controls

71 lines (60 loc) · 3.89 KB

Changelog

All notable changes to this project are documented here.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning. The NeoReports.Abstractions contract follows SemVer strictly.

1.1.0 - 2026-07-01

The dynamic (config-driven) path: define and run reports from JSON with no compile-time POCO, reusing the exact v1 pipeline. Additive and SemVer-minor — v1 code is unchanged.

Added

  • NeoReports.Abstractions — positional ReportRecord (object?[] + ReportSchema) as the dynamic row type (not a dictionary); serializer-agnostic config model (ReportConfig, SourceConfig, ColumnConfig, OutputConfig, DestinationConfig); IReportConfigParser and IConfigSourceProvider contracts.
  • NeoReports.CoreJsonReportConfigParser (System.Text.Json) and ReportConfigCompiler that compile a config into the same runnable report the fluent builder produces (source, format and destination resolved from DI by stable id); ReportColumns.Positional(...) for dynamic columns; JsonLogicFilter (a lean JsonLogic evaluator: var, ==/===/!=/!==, >/>=/</<=, and/or/!/!!, in); DI helpers AddReportFromConfig, AddReportFromConfigFile and AddReportsFromConfigDirectory (config reports compile lazily and run by name through the standard runner and endpoints).
  • NeoReports.Sources.SqlSqlConfigSourceProvider (type: "sql") and AddSqlConfigSource(): config-driven SQL Server source materializing ReportRecords by schema-column name, reusing the v1 keyset engine.
  • Samples 04-dynamic-config-csv (in-memory) and 05-dynamic-config-sql (SQL Server).

1.0.0 - 2026-06-30

First public release.

Added

  • NeoReports.Abstractions — frozen, typed-only public contract (schema, data, sources, formats, destinations, resilience, jobs, extensibility, exceptions).
  • NeoReports.Core — fluent ReportBuilder<TRow>, report registry and DI (AddReport<TRow>), batch pipeline with compiled T → object?[] projection at the writer edge, Polly v8 resilience, and IFailureStrategy (abort / skip-and-log) with escalation thresholds.
  • NeoReports.Sources.Sql — SQL Server source with keyset pagination (Source.Sql(...).Keyset(...)), opaque string cursor, per-page connections.
  • NeoReports.Formats.Csv — streaming CSV writer (RFC 4180, culture/format, configurable delimiter/encoding/header).
  • NeoReports.Formats.Xlsx — XLSX writer (ClosedXML) with native types, named sheet, and auto-filter.
  • NeoReports.Destinations.Local — local filesystem destination with path templating and atomic publish.
  • NeoReports.Destinations.S3 — Amazon S3 destination with all-or-nothing upload.
  • NeoReports.Jobs — single-worker job execution: shared ReportJobWorker, in-memory store and scheduler, no-op checkpoint store; cooperative cancellation and idempotent restart.
  • NeoReports.Jobs.Hangfire — Hangfire single-server job backend.
  • NeoReports.AspNetCore — Minimal API endpoints to trigger (async/sync), list, query, cancel and download reports/jobs; artifact store for download/sync.
  • Multi-output in a single source pass (e.g. CSV + XLSX read once); same-extension outputs are disambiguated and can be downloaded together as a zip.
  • Constant-memory validation via NeoReports.Benchmarks (MemoryDiagnoser).
  • Samples 01-sql-to-csv-local, 02-sql-to-xlsx-s3, and 03-async-job-hangfire.

Packaging

  • All library projects ship as NuGet packages with symbols (snupkg), source-link, and a per-package README. Tests, samples and benchmarks are not packable.