Skip to content

ChainGraph API Documentation / @badaitech/chaingraph-types / ObjectPort

Class: ObjectPort<S>

Defined in: packages/chaingraph-types/src/port/instances/ObjectPort.ts:79

Concrete implementation of an Object Port.

This class extends BasePort using ObjectPortConfig<S> and ObjectPortValue<S>. It leverages the ObjectPortPlugin to handle default value resolution, validation, serialization, and deserialization.

The port is generic over S (which extends ObjectSchema) so that the types of nested properties can be inferred. When using the helper functions below, your IDE will provide full autocompletion for the nested values.

Example usage:

// Using the helper functions to build a schema and config: const userSchema = createObjectSchema({ name: { type: 'string', minLength: 2 }, age: { type: 'number', min: 21 }, address: { type: 'object', schema: createObjectSchema({ street: { type: 'string' }, city: { type: 'string' }, state: { type: 'string' }, }), }, })

const userConfig = createObjectPortConfig({ type: 'object', schema: userSchema, defaultValue: { type: 'object', value: { name: { type: 'string', value: 'Alice' }, age: { type: 'number', value: 30 }, address: { type: 'object', value: { street: { type: 'string', value: '123 Main St' }, city: { type: 'string', value: 'Springfield' }, state: { type: 'string', value: 'IL' }, }, }, }, }, })

const userPort = new ObjectPort(userConfig) // The IDE now knows that userPort.getValue() returns an object // whose "value" property has both "name" and "age" with proper types. console.log(userPort.getValue()?.value.name.value) // 'Alice' console.log(userPort.getValue()?.value.address.value.state.value) // 'IL'

Extends

Type Parameters

S

S extends IObjectSchema = IObjectSchema

The object schema type (extending ObjectSchema) used in the configuration.

Implements

Constructors

Constructor

new ObjectPort<S>(config): ObjectPort<S>

Defined in: packages/chaingraph-types/src/port/instances/ObjectPort.ts:82

Parameters

config

ObjectPortConfig<S>

Returns

ObjectPort<S>

Overrides

BasePort.constructor

Properties

config

protected config: ObjectPortConfig

Defined in: packages/chaingraph-types/src/port/base/BasePort.ts:16

Inherited from

BasePort.config


value?

protected optional value: ObjectPortValue<S>

Defined in: packages/chaingraph-types/src/port/base/BasePort.ts:17

Inherited from

BasePort.value

Accessors

id

Get Signature

get id(): string

Defined in: packages/chaingraph-types/src/port/base/BasePort.ts:25

The unique identifier of the port.

Returns

string

Implementation of

IPort.id

Inherited from

BasePort.id


key

Get Signature

get key(): string

Defined in: packages/chaingraph-types/src/port/base/BasePort.ts:29

The key of the port.

Returns

string

Implementation of

IPort.key

Inherited from

BasePort.key

Methods

addConnection()

addConnection(nodeId, portId): void

Defined in: packages/chaingraph-types/src/port/base/BasePort.ts:153

Adds a connection to the port metadata.

Parameters

nodeId

string

The ID of the node to connect to.

portId

string

The ID of the port to connect to.

Returns

void

Implementation of

IPort.addConnection

Inherited from

BasePort.addConnection


addField()

addField(field, config): void

Defined in: packages/chaingraph-types/src/port/instances/ObjectPort.ts:268

Adds a new field to the object schema and updates the default and current values.

Parameters

field

string

config

IPortConfig

Returns

void


clone()

clone(): IPort<ObjectPortConfig<S>>

Defined in: packages/chaingraph-types/src/port/base/BasePort.ts:130

Clones the port instance.

Returns

IPort<ObjectPortConfig<S>>

A new port instance with the same configuration and value.

Implementation of

IPort.clone

Inherited from

BasePort.clone


cloneWithNewId()

cloneWithNewId(): IPort<ObjectPortConfig<S>>

Defined in: packages/chaingraph-types/src/port/instances/ObjectPort.ts:328

Clones the port with a new ID. Useful for creating copies of the port with a unique identifier.

Returns

IPort<ObjectPortConfig<S>>

Implementation of

IPort.cloneWithNewId

Overrides

BasePort.cloneWithNewId


deserialize()

deserialize(data): IPort<ObjectPortConfig<S>>

Defined in: packages/chaingraph-types/src/port/base/BasePort.ts:79

Deserializes the given JSONValue (expected to hold { config, value }) and updates both the config and current value.

Parameters

data

unknown

Returns

IPort<ObjectPortConfig<S>>

Implementation of

IPort.deserialize

Inherited from

BasePort.deserialize


deserializeConfig()

deserializeConfig(data): ObjectPortConfig<S>

Defined in: packages/chaingraph-types/src/port/instances/ObjectPort.ts:249

Deserializes JSON data into an ObjectPortConfig. Delegates to ObjectPortPlugin.deserializeConfig.

Parameters

data

unknown

The JSON data.

Returns

ObjectPortConfig<S>

The deserialized configuration.

Implementation of

IPort.deserializeConfig

Overrides

BasePort.deserializeConfig


deserializeValue()

deserializeValue(data): ObjectPortValue<S>

Defined in: packages/chaingraph-types/src/port/instances/ObjectPort.ts:259

Deserializes JSON data into an ObjectPortValue. Delegates to ObjectPortPlugin.deserializeValue.

Parameters

data

unknown

The JSON data.

Returns

ObjectPortValue<S>

The deserialized port value.

Implementation of

IPort.deserializeValue

Overrides

BasePort.deserializeValue


getConfig()

getConfig(): ObjectPortConfig

Defined in: packages/chaingraph-types/src/port/base/BasePort.ts:33

Retrieves the current port configuration.

Returns

ObjectPortConfig

The port configuration of type C.

Implementation of

IPort.getConfig

Inherited from

BasePort.getConfig


getDefaultValue()

getDefaultValue(): ObjectPortValue<S>

Defined in: packages/chaingraph-types/src/port/instances/ObjectPort.ts:96

Retrieves the default value from the configuration.

Returns

ObjectPortValue<S>

The default ObjectPortValue if specified; otherwise undefined.

Implementation of

IPort.getDefaultValue

Overrides

BasePort.getDefaultValue


getValue()

getValue(): ObjectPortValue<S>

Defined in: packages/chaingraph-types/src/port/instances/ObjectPort.ts:104

Optionally, override getValue() to indicate that it returns a fully typed ObjectPortValue.

Returns

ObjectPortValue<S>

The current port value.

Implementation of

IPort.getValue

Overrides

BasePort.getValue


isSystem()

isSystem(): boolean

Defined in: packages/chaingraph-types/src/port/base/BasePort.ts:138

Check if the port is a system port.

Returns

boolean

True if the port is a system port, otherwise false.

Implementation of

IPort.isSystem

Inherited from

BasePort.isSystem


isSystemError()

isSystemError(): boolean

Defined in: packages/chaingraph-types/src/port/base/BasePort.ts:142

Check if the port is a system error port.

Returns

boolean

True if the port is a system error port, otherwise false.

Implementation of

IPort.isSystemError

Inherited from

BasePort.isSystemError


removeConnection()

removeConnection(nodeId, portId): void

Defined in: packages/chaingraph-types/src/port/base/BasePort.ts:179

Removes a connection from the port metadata.

Parameters

nodeId

string

The ID of the node to disconnect from.

portId

string

The ID of the port to disconnect from.

Returns

void

Implementation of

IPort.removeConnection

Inherited from

BasePort.removeConnection


removeField()

removeField(field): void

Defined in: packages/chaingraph-types/src/port/instances/ObjectPort.ts:307

Remove a field from the object schema and updates the default and current values.

Parameters

field

string

Returns

void


reset()

reset(): void

Defined in: packages/chaingraph-types/src/port/base/BasePort.ts:50

Resets the port’s current value.

In typical implementations, this resets the value to a default (if available).

Returns

void

Implementation of

IPort.reset

Inherited from

BasePort.reset


serialize()

serialize(): unknown

Defined in: packages/chaingraph-types/src/port/base/BasePort.ts:59

Serializes both config and value into a JSONValue–compatible object. It calls the abstract serializeConfig and serializeValue methods.

Returns

unknown

Implementation of

IPort.serialize

Inherited from

BasePort.serialize


serializeConfig()

serializeConfig(config): unknown

Defined in: packages/chaingraph-types/src/port/instances/ObjectPort.ts:229

Serializes the object port configuration. Delegates to ObjectPortPlugin.serializeConfig.

Parameters

config

ObjectPortConfig<S>

The object port configuration.

Returns

unknown

The serialized configuration.

Implementation of

IPort.serializeConfig

Overrides

BasePort.serializeConfig


serializeValue()

serializeValue(value): unknown

Defined in: packages/chaingraph-types/src/port/instances/ObjectPort.ts:239

Serializes the object port value. Delegates to ObjectPortPlugin.serializeValue.

Parameters

value

ObjectPortValue<S>

The object port value.

Returns

unknown

The serialized value.

Implementation of

IPort.serializeValue

Overrides

BasePort.serializeValue


setConfig()

setConfig(newConfig): void

Defined in: packages/chaingraph-types/src/port/base/BasePort.ts:37

Updates the port configuration with a new configuration object.

Parameters

newConfig

ObjectPortConfig

New configuration of type C.

Returns

void

Implementation of

IPort.setConfig

Inherited from

BasePort.setConfig


setValue()

setValue(newValue): void

Defined in: packages/chaingraph-types/src/port/instances/ObjectPort.ts:108

Sets or updates the port value. The value must be validated before being accepted.

Parameters

newValue

ObjectPortValue<S>

The new value to set for the port.

Returns

void

Implementation of

IPort.setValue

Overrides

BasePort.setValue


unwrap()

unwrap(): IPort<ObjectPortConfig<S>>

Defined in: packages/chaingraph-types/src/port/base/BasePort.ts:237

Unwrap to get underlying port instance For regular ports, returns this (already unwrapped)

Returns

IPort<ObjectPortConfig<S>>

Implementation of

IPort.unwrap

Inherited from

BasePort.unwrap


validate()

validate(): boolean

Defined in: packages/chaingraph-types/src/port/base/BasePort.ts:118

Validates both the current configuration and value. It defers to the abstract validateConfig and validateValue methods.

Returns

boolean

Implementation of

IPort.validate

Inherited from

BasePort.validate


validateConfig()

validateConfig(config): boolean

Defined in: packages/chaingraph-types/src/port/instances/ObjectPort.ts:218

Validates the object port configuration. Delegates to ObjectPortPlugin.validateConfig.

Parameters

config

ObjectPortConfig<S>

The object port configuration.

Returns

boolean

True if valid; otherwise false.

Implementation of

IPort.validateConfig

Overrides

BasePort.validateConfig


validateValue()

validateValue(value): boolean

Defined in: packages/chaingraph-types/src/port/instances/ObjectPort.ts:207

Validates the object port value. Delegates to ObjectPortPlugin.validateValue.

Parameters

value

ObjectPortValue<S>

The object port value.

Returns

boolean

True if valid; otherwise false.

Implementation of

IPort.validateValue

Overrides

BasePort.validateValue

Licensed under BUSL-1.1