Atlas 0.5.2
Released 2026-10-28 · v0.5.2 on GitHub · install with "atlas": "github:AndreyDAraya/atlas#v0.5.2"
Security hardening at the query cursor, shape, Atlas-Await and Express boundaries.
- Bounded records:
t.record(of, { max?, key? }).maxlimits the number of entries (maxPropertiesin JSON Schema);keyvalidates each property name against a string/enum shape (propertyNamesin JSON Schema) and rejects reserved keys (__proto__,constructor,prototype) both before and after any key normalization.satisfiesandATLAS028check recordmaxandkeybounds. - Express:
bodyLimitandallowAwait: 'views'/ predicate.atlasRouter(runtime, { bodyLimit })passes a custom size limit toexpress.json({ limit }).allowAwait: 'views'honors view awaits (viewsor a view list) for identified callers while ignoring'all'cascade awaits;allowAwait: (actor, wait, req) => booleangates awaits per request; and repeated view names inAtlas-Awaitare deduplicated.
- Typed keyset cursors.
decodeCursor(cursor, spec, order)validates the cursor length and checks that each element matches the scalar type of itsorderorkeycolumn (text, safe-integerbigint, finitedouble,boolean), so a forged cursor with mismatched element types is rejected with400 invalid-inputbefore reaching Postgres instead of triggering a22P02cast failure (503 store-failed). Atlas-Awaitpolling.caughtUpandcascadeDoneskip empty roots/consumers and remember(consumer, id)pairs that already passed, avoiding redundantstore.passedqueries on every 15 ms poll tick while waiting on slower consumers.
From CHANGELOG.md. All versions: Releases.