- Dependencies updated.
- Documentation updated.
- In
utils-db(io.randomseed.utils.db.types), DB type adapters (readers and setters) are now dynamically registered via classpath-scannedadders.ednresources. Hard dependencies onutils-ipandphone-numberremoved fromutils-db. New functions:add-all-readers,add-all-setters,register-reader-adder,register-setter-adder. - In
utils-db, added new namespaceio.randomseed.utils.db.coercionwith extensiblein-coercerandout-coercermultimethods for column-level coercion, plus convenience re-exports of core db abstractions. - In
utils-db, added new namespaceio.randomseed.utils.db.sqlwith SQL-building helpers. - In
utils-identity, added independent DB adapter namespaceio.randomseed.utils.db.types.identitywith anext.jdbcsetter for theIdentitytype, self-registering viaadders.edn. - In
utils-ip, added independent DB adapter namespaceio.randomseed.utils.db.types.ipwithnext.jdbcreader and setter for IP address types (IPAddress,InetAddress,IPv4Address,IPv6Address), self-registering viaadders.edn. - In
utils-crypto(io.randomseed.utils.crypto), hardened memory hygiene: derived key bytes are now zeroed (Arrays/fill) after use inencrypt-keyanddecrypt-key;char[]obtained fromConsole.readPasswordis zeroed after conversion to string inread-pwd. - In
utils-auth(io.randomseed.utils.auth.pwd), re-encrypted password bytes are now zeroed after comparison incheck-pwd. - In
utils-ip(io.randomseed.utils.ip), removed spuriouslockingon locally-constructed Tries inpreprocess-ip-list(they are not shared); improved docstring to clarify idempotency and thread-safety contract. - Dependencies:
phone-numberbumped to9.0.23-4.
- Typo fixed in
deps.edn.
- Added
utils-identitymodule. - Fixed a bug in
utils-dbcausingNOPCacheto be returned. - Dependencies updated (removed redundant dependencies).
- Added
utils-authmodule.
- Clarified and covered with tests that
get-data/get-data!use namespaced extension commands::io.randomseed.utils.bot/dataand:io.randomseed.utils.bot/data!. - In
utils-time(io.randomseed.utils.time), removed a reflection warning in compact duration parsing by makingBigDecimalconstructor dispatch explicit.
- In
utils-bus(io.randomseed.utils.bot), normalized built-in bot control commands to simple keywords::config,:session,:pause,:ping,:stop. - Updated wrappers to use simple control commands (
get-config,get-session,pause,ping,stop!,update-local-config!). - Added regression tests confirming:
- built-in wrappers send simple control keywords,
- qualified custom commands are delegated to bot-specific handlers.
Added io.randomseed.utils.qe with q= macro for safe referential equality.
Tests added to utils-bus.
Package building fixes.
Random Utilities is now distributed as 10 packages:
utils-bus: asynchronous worker busutils-core: helpers for basic type conversions and checksutils-crypto: cryptographic helpersutils-db: database abstractions with cachingutils-ip: IP address support functionsutils-log: opinionated logging facilityutils-reitit: Reitit support abstractionsutils-time: date and time operationsutils-validators: data validation helpersutils: meta-package which holds dependencies for all of the above
- Added to
io.randomseed.utils:plaintext->base64-url-safe,base64-url-safe->plaintext,plaintext->base64,base64->plaintext,base64-url-safe->bin,bin->base64-url-safe,base64->bin,bin->base64,bin->plaintext. - Added to
io.randomseed.utils.crypto:salt-b64->bin,salt-bin->b64,key-b64->bin,key-bin->b64,key-text-bin. - Fixed interactive password and key readers to allow option overrides in
io.randomseed.utils.crypto. - Added tests for
io.randomseed.utils.crypto.
- Improved
io.randomseed.utils.time/parse-duration. - Speed optimizations and specification alignment in
io.randomseed.utils.map/qassoc. - Added
io.randomseed.utils/some-keyword-down,io.randomseed.utils/some-keyword-down-tr. - Added tests for
io.randomseed.utils.mapandio.randomseed.utils.time.
- Fixed logging issues when JAnsi is enabled, added context restoring.
- Added
-simplevariants of string processing functions and macros. - Syntactic cleanups.
- Fixed regions with false assumption that namespace of an identifier cannot be
nil.
qsomenow short-circuits on predicate beingnilorfalse.
- Added
strs-simple,qsome,or-some,some-fn*,qstrband optimizedstrs,strspcandstrspc-squeezedmacros.
- Added
memoize+fast memoization function.
- Fixed binary variants of
strs,strspcandstrspc-squeezed.
- Fixed string conversion in
strsmacro. - Added
strspcandstrspc-squeezedmacros.
- Added
strsmacro andstrbfunction.
- Version bump for core.cache.
- Speed optimizations (referential equality checks, optimistic conversions, type hints).
- Database caching functions are now using a special keyword instead of false to mark and group cache misses.
- Added
defdoc!macro.
- Removed reflection warnings.
- Fixed common validators.
- Improved
db/invalidator. - Added console appenders.
- Added
map/qupdate. - Optimized
map/qassocfornilvalues as source maps.
- Switched to a custom implementation of fast assoc.
- Multiple map transforming functions optimized for speed.
- Multiple database accessing functions optimized for speed.
map/update-missingnow takes only unary functions by default, without shifting the arguments.
map/assoc-ifandmap/assoc-if-notcan now handle multiple pairs.
-
Added
some-str-down. -
Performance improvements in:
empty-string?,not-empty-string?,some-str,some-str-up,some-str-simple,some-str-simple-up,some-str-simple-down,some-string.
- Optimizations in
ip/bytes-to-ipv4andip/bytes-to-ipv6. - Bug fixed in
db/get-cached-prop(list->list*).
- Added
str-squeeze-spc,some-str-squeeze-spc.
- IP predicates improved, safer unsigned bytes support.
- Multiple improvements in IP address conversion functions.
- Added
db.types/add-setter-phone-number.
- Added multary variant of settings getter produced by
db/make-setting-getter. - Added multary variant of
db/cached-setting-get. - Keying improved in cached settings (was vector-based, now it's keyword-based).
- Improved
validators/explainandvalidators/validate. - Introduced 3 operational modes of required parameters validation:
- matching all of the required parameters,
- matching at least 1 required parameter,
- matching at least n required parameters.
- Replaced
whenwithifwhere appropriate.
- Added
validators/explain.
- Added
map/map-values-with-pathandmap/map-values-with-rpath.
- Common validators improved.
- Memoization improved.
- Added
var/update.
- Lazy map support functions added compatible with
com.intuitiveexplanations/lazy-map:map/lazy,map/to-lazy,map/lazy?,map/select-keys-lazy,map/merge-lazy.
- Added
db.types/add-setter-uuid.
- Removed type hints for primitive locals.
- Numeric ID keys support in generic database getters and setters
- Database builders and converters greatly simplified (removed some of the predefined options)
- More verbose error reporting during de-serialization
- Added
io.randomseed.utils.db.typeswith opinionated database readers and writers - Improved
some-str-*functions, added filtering out empty strings insome-str-spc - Added string processing functions:
to-lisp-str,to-snake-str,to-lisp-simple-str,to-snake-simple-strreplace-first,to-lisp-str-replace-first,to-snake-str-replace-first,to-lisp-slashed-str,to-snake-slashed-str.
- Added
some-symbol,some-symbol-up,some-symbol-simple,simple-symbol-up.
- Fixed a bug in
map/nil-keysandmap/nil-existing-keyscausing error when there was no matching key.
- Added console reading functions: read-line-with-prompt, crypto/read-pwd, crypto/read-key.
- Added high-level text getting functions: ask, crypto/ask-pass, crypto/ask-key.
- Database setter generator simplified.
- Removed Clojure 11.1.0 dependency.
- Added backward compatibility with Clojure versions < 11.1.0.
- Dependencies adjusted for Clojure 1.11.0.
- Updated CircleCI image reference.
- Renamed parse-long to some-long.
- Removed random-uuid.
- Renamed uuid to to-uuid.
- Fixed a bug causing empty keywords not being detected by empty-ident?.
- Added not-empty-string? and not-empty-ident?.
- Improved valuable? and not-valuable?.
- Added macros: not-valuable, when-not-valuable.
- Added empty-string? and empty-ident?.
- Improved valence testing.
- Added Reitit support functions.
- Improved valence testing in valuable? and not-valuable?.
- Fixed typo causing db/make-getter to produce unusable ternary function.
- Better handling of sequential collections in time/parse-duration.
- Improvements in time/parse-duration (multiple arguments support).
- Initial release.