Redactable
Context-aware redaction for sensitive values.
The Redactable module provides a protocol for objects that need to present alternative representations of themselves depending on the runtime context. Typical use cases include masking secrets, tokens, or personal data in logs, traces, and serialized output.
Destructors
getRedacted
Signature
declare function getRedacted(redactable: Redactable): unknown;Returns a redacted value if it implements Redactable, otherwise returns it unchanged.
When to use
Use as the general-purpose entry point for redaction when the input may or may not implement the redaction protocol.
Details
This function calls isRedactable and, when it returns true, delegates to getRedacted.
Gotchas
Redaction is not recursive. Nested redactable values inside the returned object are not automatically redacted.
See
isRedactableto check before redactinggetRedactedfor the lower-level variant for known redactables
Signature
declare function redact(u: unknown): unknown;Guards
isRedactable
Type guard that checks whether a value implements the Redactable interface.
When to use
Use to narrow an unknown value before calling redaction-specific helpers.
See
Redactablefor the interface being checkedredactto apply redaction if the value is redactable
Signature
declare function isRedactable(u: unknown): u is Redactable;Models
Redactable interface
Interface for objects that provide context-aware redacted representations.
When to use
Use to define classes or objects that hold sensitive data and should present a sanitized form when inspected or logged.
Details
The [symbolRedactable] method receives the current fiber's Context. If no fiber is active, an empty Context is provided.
See
symbolRedactablefor the symbol key to implementredactto apply redaction to any valueisRedactablefor the type guard for this interface
Signature
interface Redactable {
readonly [symbolRedactable]: (context: Context<never>) => unknown;
}Symbols
symbolRedactable
Defines the symbol used to identify objects that implement the Redactable protocol.
When to use
Use as the property key when implementing the Redactable protocol.
Details
Add a method under this key to make an object redactable. The method receives the current Context and must return the replacement value. The symbol is registered globally via Symbol.for("~effect/Redactable"), so it is identical across multiple copies of the library at runtime.
See
Redactablefor the interface this symbol belongs toisRedactableto check whether a value has this symbol
Signature
declare const symbolRedactable: unique symbol;
Returns the result of calling
[symbolRedactable]on a value that is already known to be Redactable.When to use
Use when you need to read the redacted representation from a value already verified as
Redactable.Details
This function reads the current fiber's
Contextfrom the global fiber reference and passes it to the redaction method.Gotchas
If no fiber is active, an empty
Contextis passed to the redaction method.See
redactfor the higher-level variant that handles non-redactable valuesisRedactablefor the type guard to verify before calling this