Publishes slack.internalSlackChannel.*; null where nothing writes.
Protected ReadonlycacheStaticinstanceThe process service: the shared database, Valkey and the internal bus.
Gives feed its own channel. One live row per feed: replace one with update.
Soft-deletes a feed's row, so the feed falls back to the DEFAULT channel.
The DEFAULT row cannot be deleted: every feed without a row resolves to it.
The channel feed posts to: its own live row, else its fallback feed's live
row (CUSTOMER_EVENTS for a CUSTOMER_* feed, DEFAULT for the rest),
whose feed then reads the fallback. Null when neither exists.
getForFeed for each of feeds, in order, in one cached read,
beside the live DEFAULT row (fallback). A CUSTOMER_* feed inherits
the CUSTOMER_EVENTS row instead, never DEFAULT.
Optionalfeeds?: readonly (Defaults to every feed, the fallback first.
Clear each customer's membership tag and each record tag wherever cached,
and always this namespace's collection tag. keys are exact deletes in this
instance's key space: the only bust a null client honours.
ProtectedinvalidateBust every page a write to channel could have changed: the collection
tag reaches every cached page, and the folded get key covers memory mode.
ProtectedreadRead-through: the cached page for key, else read() stored under the collection tag.
Stored rows only; getForFeeds applies the DEFAULT fallback.
ProtectedsearchTags for a page: the scope its query searched (each customer's membership
tag, else the collection tag), so an empty page is bustable too, plus the
records it projects and the fields that chose or ordered its rows.
Repoints a live row at another Slack channel; its feed is fixed.
StaticadminThe exact key InternalSlackChannelAdminService.get reads through: the
args it passes plus search's defaults. JCS drops the undefined filters.
Writers delete it so read-after-write holds in memory mode.
The channel each internal Slack feed posts to, and the
DEFAULTchannel the rest fall back to. Every caller is CFX's own: the posting apps read through getForFeed, the admin dashboard edits the rows.