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
transformis provided, raw API results are mapped through it. - If
transformis omitted, API responses must already conform to typeT.
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