Skip to main content

Class: Store<T, StoreName>

Defined in: projects/pieces/src/lib/structures/Store.ts:55

The store class which contains Pieces.

Extends​

  • Collection<string, T>

Extended by​

Type Parameters​

Type ParameterDefault type
T extends Piece-
StoreName extends StoreRegistryKeyStoreRegistryKey

Constructors​

Constructor​

new Store<T, StoreName>(constructor: AbstractConstructor<T>, options: StoreOptions<T, StoreName>): Store<T, StoreName>

Defined in: projects/pieces/src/lib/structures/Store.ts:80

Parameters​

ParameterTypeDescription
constructorAbstractConstructor<T>The piece constructor this store loads.
optionsStoreOptions<T, StoreName>The options for the store.

Returns​

Store<T, StoreName>

Overrides​

Collection<string, T>.constructor

Properties​

Constructor​

readonly Constructor: AbstractConstructor<T>

Defined in: projects/pieces/src/lib/structures/Store.ts:56


name​

readonly name: StoreName

Defined in: projects/pieces/src/lib/structures/Store.ts:57


paths​

readonly paths: Set<string>

Defined in: projects/pieces/src/lib/structures/Store.ts:58


strategy​

readonly strategy: ILoaderStrategy<T>

Defined in: projects/pieces/src/lib/structures/Store.ts:59


defaultStrategy​

static defaultStrategy: ILoaderStrategy<any>

Defined in: projects/pieces/src/lib/structures/Store.ts:377

The default strategy, defaults to LoaderStrategy, which is constructed on demand when a store is constructed, when none was set beforehand.


logger​

static logger: null | StoreLogger = null

Defined in: projects/pieces/src/lib/structures/Store.ts:382

The default logger, defaults to null.

Accessors​

container​

Get Signature​

get container(): Container

Defined in: projects/pieces/src/lib/structures/Store.ts:97

A reference to the Container object for ease of use.

See​

container

Returns​

Container

Methods​

construct()​

construct(Ctor: ILoaderResultEntry<T>, data: HydratedModuleData): T

Defined in: projects/pieces/src/lib/structures/Store.ts:335

Constructs a Piece instance.

Parameters​

ParameterTypeDescription
CtorILoaderResultEntry<T>The Piece's constructor used to build the instance.
dataHydratedModuleDataThe module's information

Returns​

T

An instance of the constructed piece.


insert()​

insert(piece: T): Promise<T>

Defined in: projects/pieces/src/lib/structures/Store.ts:298

Inserts a piece into the store.

Parameters​

ParameterTypeDescription
pieceTThe piece to be inserted into the store.

Returns​

Promise<T>

The inserted piece.


load()​

load(root: string, path: string): Promise<T[]>

Defined in: projects/pieces/src/lib/structures/Store.ts:182

Loads one or more pieces from a path.

Parameters​

ParameterTypeDescription
rootstringThe root directory the file is from.
pathstringThe path of the file to load, relative to the root.

Returns​

Promise<T[]>

All the loaded pieces.


loadAll()​

loadAll(): Promise<void>

Defined in: projects/pieces/src/lib/structures/Store.ts:241

Loads all pieces from all directories specified by paths.

Returns​

Promise<void>


loadPiece()​

loadPiece(entry: StoreManuallyRegisteredPiece<StoreName>): Promise<void>

Defined in: projects/pieces/src/lib/structures/Store.ts:154

Adds a piece into the store's list of manually registered pieces. If () was called, the piece will be loaded immediately, otherwise it will be queued until () is called.

All manually registered pieces will be kept even after they are loaded to ensure they can be loaded again if () is called again.

Parameters​

ParameterTypeDescription
entryStoreManuallyRegisteredPiece<StoreName>The entry to load.

Returns​

Promise<void>

Remarks​

  • Pieces loaded this way will have their root and path set to VirtualPath, and as such, cannot be reloaded.
  • This method is useful in environments where file system access is limited or unavailable, such as when using Serverless Computing.
  • This method will always throw a TypeError if entry.piece is not a class.
  • This method will always throw a LoaderError if the piece does not extend the store's piece constructor.
  • This operation is atomic, if any of the above errors are thrown, the piece will not be loaded.

Seealso​

()

Since​

3.8.0

Example​

import { container } from '@sapphire/pieces';

class PingCommand extends Command {
// ...
}

container.stores.get('commands').loadPiece({
name: 'ping',
piece: PingCommand
});

registerPath()​

registerPath(path: Path): this

Defined in: projects/pieces/src/lib/structures/Store.ts:111

Registers a directory into the store.

Parameters​

ParameterTypeDescription
pathPathThe path to be added.

Returns​

this

Example​

store
.registerPath(resolve('commands'))
.registerPath(resolve('third-party', 'commands'));

resolve()​

resolve(name: string | T): T

Defined in: projects/pieces/src/lib/structures/Store.ts:282

Resolves a piece by its name or its instance.

Parameters​

ParameterTypeDescription
namestring | TThe name of the piece or the instance itself.

Returns​

T

The resolved piece.


unload()​

unload(name: string | T): Promise<T>

Defined in: projects/pieces/src/lib/structures/Store.ts:208

Unloads a piece given its instance or its name.

Parameters​

ParameterTypeDescription
namestring | TThe name of the file to load.

Returns​

Promise<T>

Returns the piece that was unloaded.


unloadAll()​

unloadAll(): Promise<T[]>

Defined in: projects/pieces/src/lib/structures/Store.ts:225

Unloads all pieces from the store.

Returns​

Promise<T[]>