diene_core_utils 1.0.1
diene_core_utils: ^1.0.1 copied to clipboard
Pure Dart utilities for slugs, namespaced keys, layered configuration merges, environment coercions, and C0 ISO 8601 / RFC 3339 / IANA wire forms.
1.0.1 - 2026-07-26 #
1.0.0 - 2026-07-26 #
✨ Features ✨ #
- diene_core_utils: seed the public mirror from diene.all (c164b9c)
Changelog #
All notable changes to this package are documented here. Releases are managed from conventional commits by the repository release workflow.
1.0.0 #
- Add the identity surface:
slugify(NFKD, combining-mark removal, ASCII kebab, total and idempotent),namespacedKey(Result<String>, naming the offendingNamespacedKeyFieldon failure), andfuzzyIncludes. - Add the C0 §3 layered-configuration mechanics:
JsonObject,deepClone,deepMerge,deepMergeAll,canonicalConfigKey,configKeysMatch,coerceEnvironmentScalar, andenvironmentToNestedMap. Key matching is case- and separator-insensitive (including the environment prefix), the base layer's key spelling wins,__splits paths, all-digit components build lists, blank values mean UNSET, and neither JSON nor comma-separated strings are ever decoded into collections. - Add deterministic config projection:
isJsonObject,stableConfig, andstableConfigObject, sorting keys at every depth while preserving list order, and reporting circular input asrecord_unprojectableinstead of recursing. - Add the C0 §1 temporal wire forms:
WireDate,WireTime,IsoDuration, andIanaTimezonevalue types withResult-returningparse/ofmembers;formatRfc3339Utc; the STRICTparseRfc3339Utc(only theZdesignator, so one canonical spelling exists); thenormalizeRfc3339ToUtcboundary ingress for offset-carrying instants; and theWireCodecfacade. - Validate timezone identifiers by exact membership in a vendored, digest-pinned
official IANA release (
2026b, 598 identifiers) rather than a lexical shape check or host/usr/share/zoneinfodata, so the answer is reproducible. - Export the shared, version-pinned C0 §1 temporal contract as the
c0_temporal.dartsub-library, so every Diene Dart package drives its temporal conformance from onec0TemporalContractvalue instead of restating cases. - Add
Vfs-seam helpers over the publisheddiene_interfacesinterface type:readVfsText,writeVfsText,readOptionalVfsText,ConfigLayer, andloadConfigLayers. The package imports neitherdart:ionor Flutter, so it runs on the VM, on the web, and in Flutter, and a seam failure is propagated unchanged with its own status andrecoverableflag intact. - Add
sleepandmapWithConcurrency, the latter preserving input order, holding a real concurrency bound, and resolving to the lowest failing index so the outcome never depends on completion order. - Report every expected failure as a
Resultvalue carrying the canonical RFC 9457Problemfromdiene_problems, with thetypeURI minted only by the single C0 §2 builder (UtilName,UtilErrorCode,utilProblem,utilFailure,invalidUtilInput,invalidWireFormat). - Ship no
test_helper.dart: every member is a pure function or a pass-through over an injected seam, so there is nothing to fake and no assertion a consumer would repeat. The shippeddiene-core-utils-usageskill carries the meta convention and explains how to add one should that change.