PackageTrack
Sign in Get early access

analytics_toolkit

A pure-Dart in-memory query engine for dashboard-style analytics over normalized record collections. Renderer-agnostic.

0.2.1 resengi/analytics_toolkit

What this package is like to depend on

Last release 1 months ago

19 Jul 2026

Too new to tell

only 2 release windows

Nearly every release is documented

notes for 4 of 4 stable releases

Nothing withdrawn

no release was ever pulled

2 months old

4 releases · first in 2026

4 releases in the last 12 months

see the full history below

Release timeline

4 releases · May 2026 to Jul 2026
Release Pre-release

Releases

latest 4
  1. 0.2.1 19 Jul 2026
    Release notes
    • FIX: Small patch to filtering in streak tables (#3). (172c226f)
    Open source →
  2. 0.2.0 02 Jun 2026
    Release notes

    Note: This release has breaking changes.

    • BREAKING FEAT: Adding new series computation functionality (#2). (215e6544)
    Open source →
  3. 0.1.1 28 May 2026
    Release notes
    • FEAT: Publishing initial version of analytics package (#1). (c3f53193)

    Changelog

    Open source →
  4. 0.1.0 28 May 2026
    Release notes

    Initial release.

    analytics_toolkit is a pure-Dart in-memory query engine for dashboard-style analytics over normalized record collections. Hosts declare data sources, build typed queries with measures and group-bys, and read back typed results — no chart library, no UI toolkit, no Flutter dependency. The host streams SourceRecords in; the executor returns AnalyticsResult out.

    This release establishes the foundational API surface:

    • Schema and valuesSourceDef and FieldDef for declaring sources, with a sealed TypedValue family (StringValue, IntValue, DoubleValue, BoolValue, EnumValue, DateTimeValue, DurationValue, list variants, NullValue) and a single canonical ordering via TypedValueOrdering.
    • Queries — up to five measures per query from a sealed measure family (CountMeasure, FieldMeasure with a sealed FieldAggregation family — SumAgg, AverageAgg, MinAgg, MaxAgg, DistinctCountAgg, PercentileAgg — and StreakMeasure); up to three group-bys from a sealed group-by family (FieldGroupBy, TimeGroupBy); AND-combined record-level filters; bucket-level filtering via HavingClause; sorts with SQL-style null ordering; and derived operations (CumulativeSumOp, DeltaOp, MovingAverageOp) applied after aggregation.
    • Results — sealed result family (ScalarResult, SeriesResult, MultiSeriesResult, MultiMeasureSeriesResult, TableResult) with a unified BucketKey family and BucketKeyOrdering as the single source of truth for ordering.
    • ValidationQueryValidator returns Result<Unit, AnalyticsError> with a closed AnalyticsErrorKind enum. The executor never throws for validation failures.
    • ExecutionAnalyticsExecutor.execute is a pure function: (query, records, sources) -> Result<AnalyticsResult, AnalyticsError>. Deterministic, no wall-clock reads, no hidden state.
    • Time series — calendar-aligned date-range presets via DatePresetResolver, configurable week-start and quarter-start, half-open [start, end) ranges, date-range projection via DateRangeProjector, and time-bucket densification so charts render without gaps.
    • Paired queriesPairedQuerySpec for cohort comparison and rate displays, with alignability validation across sources.
    • PersistenceAnalyticsWidgetSpec plus WidgetPayloadCodec round-trip user-built widget specs to JSON with a schema-version guard for forward compatibility.
    • Caching and change eventsSourceSnapshotCache for records-layer caching (in-flight dedup, scoped invalidation, discard-on-completion for stale fetches) and AnalyticsChange / AnalyticsChangeKind for typed listener invalidation.
    • Zero external dependencies — only dart:core and dart:convert.nd AnalyticsChange / AnalyticsChangeKind for typed listener invalidation.
    • Zero external dependencies — only dart:core and dart:convert.dart:convert.nd AnalyticsChange / AnalyticsChangeKind for typed listener invalidation.
    • Zero external dependencies — only dart:core and dart:convert.dart:convert.nd AnalyticsChange / AnalyticsChangeKind for typed listener invalidation.
    • Zero external dependencies — only dart:core and dart:convert.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive