Class: Store<T, StoreName>
The store class which contains Pieces.
Extends
Collection
<string
,T
>
Extended by
Type parameters
Type parameter | Value |
---|---|
T extends Piece | - |
StoreName extends StoreRegistryKey | StoreRegistryKey |
Constructors
new Store()
new Store<
T
,StoreName
>(constructor
:AbstractConstructor
<T
>,options
:StoreOptions
<T
,StoreName
>):Store
<T
,StoreName
>
Parameters
Parameter | Type | Description |
---|---|---|
constructor | AbstractConstructor <T > | The piece constructor this store loads. |
options | StoreOptions <T , StoreName > | The options for the store. |
Returns
Store
<T
, StoreName
>
Overrides
Collection<string, T>.constructor
Source
projects/pieces/src/lib/structures/Store.ts:80
Properties
#calledLoadAll
private
#calledLoadAll:boolean
=false
Whether or not the store has called loadAll
at least once.
Source
projects/pieces/src/lib/structures/Store.ts:69
#walk()
private
#walk: (store
:Store
<T
,never
>,path
:string
,logger
?:null
|StoreLogger
) =>AsyncIterableIterator
<string
>
The walk function for the store.
Parameters
Parameter | Type |
---|---|
store | Store <T , never > |
path | string |
logger ? | null | StoreLogger |
Returns
AsyncIterableIterator
<string
>
Source
projects/pieces/src/lib/structures/Store.ts:74
Constructor
readonly
Constructor:AbstractConstructor
<T
>
Source
projects/pieces/src/lib/structures/Store.ts:56
[ManuallyRegisteredPiecesSymbol]
private
readonly
[ManuallyRegisteredPiecesSymbol]:Map
<string
,StoreManuallyRegisteredPiece
<StoreName
>>
The queue of manually registered pieces to load.
Source
projects/pieces/src/lib/structures/Store.ts:64
name
readonly
name:StoreName
Source
projects/pieces/src/lib/structures/Store.ts:57
paths
readonly
paths:Set
<string
>
Source
projects/pieces/src/lib/structures/Store.ts:58
strategy
readonly
strategy:ILoaderStrategy
<T
>
Source
projects/pieces/src/lib/structures/Store.ts:59
defaultStrategy
static
defaultStrategy:ILoaderStrategy
<any
>
The default strategy, defaults to LoaderStrategy, which is constructed on demand when a store is constructed, when none was set beforehand.
Source
projects/pieces/src/lib/structures/Store.ts:377
logger
static
logger:null
|StoreLogger
=null
The default logger, defaults to null
.
Source
projects/pieces/src/lib/structures/Store.ts:382
Accessors
container
get
container():Container
A reference to the Container object for ease of use.
See
container
Returns
Source
projects/pieces/src/lib/structures/Store.ts:97
Methods
construct()
construct(
Ctor
:ILoaderResultEntry
<T
>,data
:HydratedModuleData
):T
Constructs a Piece instance.
Parameters
Parameter | Type | Description |
---|---|---|
Ctor | ILoaderResultEntry <T > | The Piece's constructor used to build the instance. |
data | HydratedModuleData | The module's information |
Returns
T
An instance of the constructed piece.
Source
projects/pieces/src/lib/structures/Store.ts:335
hydrateModuleData()
private
hydrateModuleData(root
:string
,data
:ModuleData
):HydratedModuleData
Adds the final module data properties.
Parameters
Parameter | Type | Description |
---|---|---|
root | string | The root directory to add. |
data | ModuleData | The module data returned from ILoaderStrategy.filter. |
Returns
The finished module data.
Source
projects/pieces/src/lib/structures/Store.ts:345
insert()
insert(
piece
:T
):Promise
<T
>
Inserts a piece into the store.
Parameters
Parameter | Type | Description |
---|---|---|
piece | T | The piece to be inserted into the store. |
Returns
Promise
<T
>
The inserted piece.
Source
projects/pieces/src/lib/structures/Store.ts:298
load()
load(
root
:string
,path
:string
):Promise
<T
[]>
Loads one or more pieces from a path.
Parameters
Parameter | Type | Description |
---|---|---|
root | string | The root directory the file is from. |
path | string | The path of the file to load, relative to the root . |
Returns
Promise
<T
[]>
All the loaded pieces.
Source
projects/pieces/src/lib/structures/Store.ts:182
loadAll()
loadAll():
Promise
<void
>
Loads all pieces from all directories specified by paths.
Returns
Promise
<void
>
Source
projects/pieces/src/lib/structures/Store.ts:241
loadPath()
private
loadPath(root
:string
):AsyncIterableIterator
<T
>
Loads a directory into the store.
Parameters
Parameter | Type | Description |
---|---|---|
root | string | The directory to load the pieces from. |
Returns
AsyncIterableIterator
<T
>
An async iterator that yields the pieces to be loaded into the store.
Source
projects/pieces/src/lib/structures/Store.ts:354
loadPiece()
loadPiece(
entry
:StoreManuallyRegisteredPiece
<StoreName
>):Promise
<void
>
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
Parameter | Type | Description |
---|---|---|
entry | StoreManuallyRegisteredPiece <StoreName > | The entry to load. |
Returns
Promise
<void
>
Remarks
- Pieces loaded this way will have their
root
andpath
set toVirtualPath
, 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 thestore'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
});
Source
projects/pieces/src/lib/structures/Store.ts:154
registerPath()
registerPath(
path
:Path
):this
Registers a directory into the store.
Parameters
Parameter | Type | Description |
---|---|---|
path | Path | The path to be added. |
Returns
this
Example
store
.registerPath(resolve('commands'))
.registerPath(resolve('third-party', 'commands'));
Source
projects/pieces/src/lib/structures/Store.ts:111
resolve()
resolve(
name
:string
|T
):T
Resolves a piece by its name or its instance.
Parameters
Parameter | Type | Description |
---|---|---|
name | string | T | The name of the piece or the instance itself. |
Returns
T
The resolved piece.
Source
projects/pieces/src/lib/structures/Store.ts:282
unload()
unload(
name
:string
|T
):Promise
<T
>
Unloads a piece given its instance or its name.
Parameters
Parameter | Type | Description |
---|---|---|
name | string | T | The name of the file to load. |
Returns
Promise
<T
>
Returns the piece that was unloaded.
Source
projects/pieces/src/lib/structures/Store.ts:208
unloadAll()
unloadAll():
Promise
<T
[]>
Unloads all pieces from the store.
Returns
Promise
<T
[]>