InspectableA base prototype object that implements the Inspectable interface.
When to use
Use as a prototype for plain objects that should share standard inspectable behavior.
Details
This object provides default implementations for the Inspectable methods. It can be used as a prototype for objects that want to be inspectable, or as a mixin to add inspection capabilities to existing objects.
Example (Using the base inspectable prototype)
import { Inspectable } from "effect"
// Use as prototype
const myObject = Object.create(Inspectable.BaseProto)
myObject.name = "example"
myObject.value = 42
console.log(myObject.toString()) // Pretty printed representation
// Or extend in a constructor
function MyClass(this: any, name: string) {
this.name = name
}
MyClass.prototype = Object.create(Inspectable.BaseProto)
MyClass.prototype.constructor = MyClassexport const const BaseProto: Inspectableconst BaseProto: {
toString: () => string;
toJSON: () => unknown;
}
A base prototype object that implements the
Inspectable
interface.
When to use
Use as a prototype for plain objects that should share standard inspectable behavior.
Details
This object provides default implementations for the
Inspectable
methods.
It can be used as a prototype for objects that want to be inspectable,
or as a mixin to add inspection capabilities to existing objects.
Example (Using the base inspectable prototype)
import { Inspectable } from "effect"
// Use as prototype
const myObject = Object.create(Inspectable.BaseProto)
myObject.name = "example"
myObject.value = 42
console.log(myObject.toString()) // Pretty printed representation
// Or extend in a constructor
function MyClass(this: any, name: string) {
this.name = name
}
MyClass.prototype = Object.create(Inspectable.BaseProto)
MyClass.prototype.constructor = MyClass
BaseProto: Inspectable = {
Inspectable.toJSON(): unknowntoJSON() {
return const toJson: (input: unknown) => unknownConverts a value to a JSON-serializable representation safely.
When to use
Use when you need a safe, JSON-serializable representation of a value
without risking unhandled errors.
Details
This function attempts to extract JSON data from objects that implement the
toJSON method, recursively processes arrays, and handles errors gracefully.
For objects that don't have a toJSON method, it applies redaction to
protect sensitive information.
toJson(this)
},
[const NodeInspectSymbol: typeof NodeInspectSymbolDefines the symbol used by Node.js for custom object inspection.
When to use
Use to implement Node.js custom inspection for a value.
Details
This symbol is recognized by Node.js's util.inspect() function and the REPL
for custom object representation. When an object has a method with this symbol,
it will be called to determine how the object should be displayed.
Example (Defining custom Node inspection)
import { Inspectable } from "effect"
class CustomObject {
constructor(private value: string) {}
[Inspectable.NodeInspectSymbol]() {
return `CustomObject(${this.value})`
}
}
const obj = new CustomObject("hello")
console.log(obj) // Displays: CustomObject(hello)
The type of the Node.js inspection symbol used for custom object inspection.
This symbol type is used to implement custom inspection behavior in Node.js
environments.
When to use
Use to type methods keyed by the Node.js custom inspection symbol.
Example (Typing custom Node inspection)
import { Inspectable } from "effect"
class CustomObject {
constructor(private value: string) {}
[Inspectable.NodeInspectSymbol]() {
return `CustomObject(${this.value})`
}
}
const obj = new CustomObject("test")
console.log(obj) // CustomObject(test)
NodeInspectSymbol]() {
return this.Inspectable.toJSON(): unknowntoJSON()
},
Inspectable.toString(): stringtoString() {
return import formatformat(this.Inspectable.toJSON(): unknowntoJSON())
}
}