@absolunet/ioc2.1.0

View on GitHub

file/FileServiceProvider.js

//--------------------------------------------------------
//-- Node IoC - Config - Config Service Provider
//--------------------------------------------------------

import ServiceProvider from '../foundation/ServiceProvider';
import FileEngine      from './services/FileEngine';
import FileManager     from './services/FileManager';
import Async           from './systems/Async';
import Sync            from './systems/Sync';


// eslint-disable-next-line jsdoc/require-description-complete-sentence
/**
 * The file service provider.
 * It bind these following services:
 * <ul>
 *     <li><a href="file.services.FileManager.html">file</a></li>
 *     <li><a href="file.services.FileEngine.html">file.engine</a></li>
 *     <li><a href="file.systems.Async.html">file.system.async</a></li>
 *     <li><a href="file.systems.Sync.html">file.system.sync</a></li>
 * </ul>
 *
 * @memberof file
 * @augments foundation.ServiceProvider
 * @hideconstructor
 */
class FileServiceProvider extends ServiceProvider {

	/**
	 * @inheritdoc
	 */
	get name() {
		return 'Node IoC - File';
	}

	/**
	 * Register the service provider.
	 */
	register() {
		this.bindFileManager();
		this.bindFileEngine();
		this.bindAsyncFileSystem();
		this.bindSyncFileSystem();
	}

	/**
	 * Bind file manager service.
	 */
	bindFileManager() {
		this.app.singleton('file', FileManager);
	}

	/**
	 * Bind file engine service.
	 */
	bindFileEngine() {
		this.app.singleton('file.engine', FileEngine);
	}

	/**
	 * Bind async file system.
	 */
	bindAsyncFileSystem() {
		this.app.singleton('file.system.async', Async);
	}

	/**
	 * Bind sync file system.
	 */
	bindSyncFileSystem() {
		this.app.singleton('file.system.sync', Sync);
	}

}


export default FileServiceProvider;