Skip to main content

Class: LoaderStrategy<T>

Defined in: projects/pieces/src/lib/strategies/LoaderStrategy.ts:26

A multi-purpose feature-complete loader strategy supporting multi-piece modules as well as supporting both ECMAScript Modules and CommonJS with reloading support.

Type Parameters​

Type Parameter
T extends Piece

Implements​

Constructors​

Constructor​

new LoaderStrategy<T>(): LoaderStrategy<T>

Defined in: projects/pieces/src/lib/strategies/LoaderStrategy.ts:31

Returns​

LoaderStrategy<T>

Properties​

clientUsesESModules​

clientUsesESModules: boolean

Defined in: projects/pieces/src/lib/strategies/LoaderStrategy.ts:27


supportedExtensions​

supportedExtensions: string[]

Defined in: projects/pieces/src/lib/strategies/LoaderStrategy.ts:28

Methods​

filter()​

filter(path: string): FilterResult

Defined in: projects/pieces/src/lib/strategies/LoaderStrategy.ts:38

Retrieves the name and the extension of the specified file path.

Parameters​

ParameterTypeDescription
pathstringThe path of the file to be processed.

Returns​

FilterResult

A ModuleData on success, otherwise null to stop the store from processing the path.

Example​

// ts-node support
class MyStrategy extends LoaderStrategy {
filter(path) {
const extension = extname(path);
if (!['.js', '.ts'].includes(extension)) return null;
const name = basename(path, extension);
return { extension, name };
}
}

Implementation of​

ILoaderStrategy.filter


load()​

load(store: Store<T>, file: HydratedModuleData): ILoaderResult<T>

Defined in: projects/pieces/src/lib/strategies/LoaderStrategy.ts:73

The load hook, use this to override the loader.

Parameters​

ParameterType
storeStore<T>
fileHydratedModuleData

Returns​

ILoaderResult<T>

Example​

class MyStrategy extends LoaderStrategy {
load(store, file) {
// ...
}
}

Implementation of​

ILoaderStrategy.load


onError()​

onError(error: Error, path: string): void

Defined in: projects/pieces/src/lib/strategies/LoaderStrategy.ts:116

Parameters​

ParameterTypeDescription
errorErrorThe error that was thrown.
pathstringThe path of the file that caused the error to be thrown.

Returns​

void

Implementation of​

ILoaderStrategy.onError


onLoad()​

onLoad(store: Store<T>, piece: T): unknown

Defined in: projects/pieces/src/lib/strategies/LoaderStrategy.ts:96

Called after a piece has been loaded, but before Piece.onLoad and Map.set.

Parameters​

ParameterTypeDescription
storeStore<T>The store that holds the piece.
pieceTThe piece that was loaded.

Returns​

unknown

Implementation of​

ILoaderStrategy.onLoad


onLoadAll()​

onLoadAll(store: Store<T>): unknown

Defined in: projects/pieces/src/lib/strategies/LoaderStrategy.ts:101

Called after all pieces have been loaded.

Parameters​

ParameterTypeDescription
storeStore<T>The store that loaded all pieces.

Returns​

unknown

Implementation of​

ILoaderStrategy.onLoadAll


onUnload()​

onUnload(store: Store<T>, piece: T): unknown

Defined in: projects/pieces/src/lib/strategies/LoaderStrategy.ts:106

Called after a piece has been unloaded or overwritten by a newly loaded piece.

Parameters​

ParameterTypeDescription
storeStore<T>The store that held the piece.
pieceTThe piece that was unloaded.

Returns​

unknown

Implementation of​

ILoaderStrategy.onUnload


onUnloadAll()​

onUnloadAll(store: Store<T>): unknown

Defined in: projects/pieces/src/lib/strategies/LoaderStrategy.ts:111

Called after all pieces have been unloaded.

Parameters​

ParameterTypeDescription
storeStore<T>The store that unloaded all pieces.

Returns​

unknown

Implementation of​

ILoaderStrategy.onUnloadAll


preload()​

preload(file: ModuleData): AsyncPreloadResult<T>

Defined in: projects/pieces/src/lib/strategies/LoaderStrategy.ts:53

The pre-load hook, use this to override the loader.

Parameters​

ParameterType
fileModuleData

Returns​

AsyncPreloadResult<T>

Examples​

// CommonJS support:
class MyStrategy extends LoaderStrategy {
preload(path) {
return require(path);
}
}
// ESM support:
class MyStrategy extends LoaderStrategy {
preload(file) {
return import(file.path);
}
}

Implementation of​

ILoaderStrategy.preload


walk()​

walk(store: Store<T>, path: string, logger?: null | StoreLogger): AsyncIterableIterator<string>

Defined in: projects/pieces/src/lib/strategies/LoaderStrategy.ts:120

Walks the specified path and returns an async iterator of all the files' paths.

Parameters​

ParameterTypeDescription
storeStore<T>The store that is walking the path.
pathstringThe path to recursively walk.
logger?null | StoreLoggerThe logger to use when walking the path, if any.

Returns​

AsyncIterableIterator<string>

Implementation of​

ILoaderStrategy.walk