Skip to main content

Class: LoaderStrategy<T>

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

NameType
Textends Piece

Implements

Constructors

constructor

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

Type parameters

NameType
Textends Piece<PieceOptions, never>

Returns

LoaderStrategy<T>

Defined in

projects/pieces/src/lib/strategies/LoaderStrategy.ts:30

Properties

clientUsesESModules

clientUsesESModules: boolean

Defined in

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


filterDtsFiles

Private Readonly filterDtsFiles: boolean = false

Defined in

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


supportedExtensions

supportedExtensions: string[]

Defined in

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

Methods

filter

filter(path): FilterResult

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

Parameters

NameTypeDescription
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

Defined in

projects/pieces/src/lib/strategies/LoaderStrategy.ts:55


load

load(store, file): ILoaderResult<T>

The load hook, use this to override the loader.

Parameters

NameType
storeStore<T, never>
fileHydratedModuleData

Returns

ILoaderResult<T>

Example

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

Implementation of

ILoaderStrategy.load

Defined in

projects/pieces/src/lib/strategies/LoaderStrategy.ts:86


onError

onError(error, path): void

Parameters

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

Returns

void

Implementation of

ILoaderStrategy.onError

Defined in

projects/pieces/src/lib/strategies/LoaderStrategy.ts:129


onLoad

onLoad(store, piece): unknown

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

Parameters

NameTypeDescription
storeStore<T, never>The store that holds the piece.
pieceTThe piece that was loaded.

Returns

unknown

Implementation of

ILoaderStrategy.onLoad

Defined in

projects/pieces/src/lib/strategies/LoaderStrategy.ts:109


onLoadAll

onLoadAll(store): unknown

Called after all pieces have been loaded.

Parameters

NameTypeDescription
storeStore<T, never>The store that loaded all pieces.

Returns

unknown

Implementation of

ILoaderStrategy.onLoadAll

Defined in

projects/pieces/src/lib/strategies/LoaderStrategy.ts:114


onUnload

onUnload(store, piece): unknown

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

Parameters

NameTypeDescription
storeStore<T, never>The store that held the piece.
pieceTThe piece that was unloaded.

Returns

unknown

Implementation of

ILoaderStrategy.onUnload

Defined in

projects/pieces/src/lib/strategies/LoaderStrategy.ts:119


onUnloadAll

onUnloadAll(store): unknown

Called after all pieces have been unloaded.

Parameters

NameTypeDescription
storeStore<T, never>The store that unloaded all pieces.

Returns

unknown

Implementation of

ILoaderStrategy.onUnloadAll

Defined in

projects/pieces/src/lib/strategies/LoaderStrategy.ts:124


preload

preload(file): AsyncPreloadResult<T>

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

Parameters

NameType
fileModuleData

Returns

AsyncPreloadResult<T>

Example

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

Example

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

Implementation of

ILoaderStrategy.preload

Defined in

projects/pieces/src/lib/strategies/LoaderStrategy.ts:70


walk

walk(store, path, logger?): AsyncIterableIterator<string>

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

Parameters

NameTypeDescription
storeStore<T, never>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

Defined in

projects/pieces/src/lib/strategies/LoaderStrategy.ts:133