Skip to main content

DomainCollection

Defined in: domain/DomainCollection.ts:30

Represents a collection of domain entities. Provides methods for managing and manipulating a collection of items.

Remarks

Use getCollection() to instantiate a proxied, array-like collection for a specific entity type.

Example

const organisations = Organisations.create();
await organisations.refresh();

console.log(organisations.length); // array-like length
console.log(organisations[0]); // indexer access

for (const org of organisations) {
console.log(org); // iterable
}

organisations.forEach((org, idx) => console.log(idx, org));

Extended by

Type Parameters

T

T extends Id<U>

The entity type, which must extend Id.

U

U

The type of the entity's unique identifier.

Accessors

length

Get Signature

get length(): number;

Defined in: domain/DomainCollection.ts:214

The number of items in the collection.

Returns

number

The item count.

Methods

[iterator]()

iterator: Iterator<T>;

Defined in: domain/DomainCollection.ts:228

Iterator support for for...of loops.

Returns

Iterator<T>

Example

for (const item of collection) {
console.log(item);
}

findById()

findById(id): undefined | T;

Defined in: domain/DomainCollection.ts:186

Finds an item in the collection by its ID.

Parameters

id

U

The unique identifier of the item.

Returns

undefined | T

The found item, or undefined if not found.


forEach()

forEach(callback): void;

Defined in: domain/DomainCollection.ts:244

Executes a provided function once for each item in the collection.

Parameters

callback

(item, index, collection) => void

Function to execute for each item.

Returns

void

Example

collection.forEach((item, idx) => {
console.log(idx, item);
});

get()

get(index): undefined | T;

Defined in: domain/DomainCollection.ts:205

Gets the item at the specified index.

Parameters

index

number

The zero-based index of the item.

Returns

undefined | T

The item at the given index, or undefined if out of bounds.


getItems()

getItems(): T[];

Defined in: domain/DomainCollection.ts:195

Gets all items in the collection.

Returns

T[]

A shallow copy of the array of items.


map()

map<R>(fn): R[];

Defined in: domain/DomainCollection.ts:254

Creates a new array populated with the results of calling a provided function on every item.

Type Parameters

R

R

Parameters

fn

(item, index, collection) => R

Function that produces an element of the new array.

Returns

R[]

A new array with each element being the result of the callback function.


refresh()

refresh(): Promise<void>;

Defined in: domain/DomainCollection.ts:174

Refreshes the collection by fetching items from the API.

Returns

Promise<void>

A promise that resolves when the items are refreshed.

Remarks

  • If transform is provided, raw API results are mapped through it.
  • If transform is omitted, API responses must already conform to type T.

Throws

If the API response is not an array.


toArray()

toArray(): T[];

Defined in: domain/DomainCollection.ts:263

Returns a shallow copy of all items as a plain array.

Returns

T[]

A new array containing the same items.


getCollection()

static getCollection<T, U, Self>(this, transform): Self & {
[n: number]: undefined | T;
length: number;
};

Defined in: domain/DomainCollection.ts:83

Static factory to create a proxied, array-like collection instance.

The returned proxy enables:

  • Numeric index access (collection[0])
  • Iteration (for...of)
  • Length property (collection.length)

Type Parameters

T

T extends Id<U>

U

U

Self

Self extends DomainCollection<T, U>

Parameters

this

(transform) => Self

The concrete subclass constructor.

transform

Optional function to transform raw API data into entities.

null | (data) => T

Returns

Self & { [n: number]: undefined | T; length: number; }

A proxied DomainCollection with array-like behavior.

Example

const orgs = Organisations.create();
console.log(orgs.length); // behaves like an array
console.log(orgs[0]); // index access