nope-js-node
Version:
NoPE Runtime for Nodejs. For Browser-Support please use nope-browser
54 lines (53 loc) • 2.15 kB
JavaScript
;
/**
* @author Martin Karkowski
* @email m.karkowski@zema.de
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPackageLoader = void 0;
const singletonMethod_1 = require("../helpers/singletonMethod");
const generateNopeBasicPackage_1 = require("./generateNopeBasicPackage");
const nopePackageLoader_1 = require("./nopePackageLoader");
/**
* Function to extract the Package-Loader. This Package-Loader omits methods, that depends on a file-system.
*
* This method should be used in a browser enviroment, otherwise use the function created for the Backend.
*
* @param {INopeDispatcherOptions} dispatcherOptions The provided options for the Dispatcher
* @param options Settings for the creation of the Dispatcher etc.
* @returns {INopePackageLoader} The Package loader.
*/
function getPackageLoader(dispatcherOptions, options = {}) {
if (options.packageLoaderConstructorClass === null ||
options.packageLoaderConstructorClass === undefined) {
options.packageLoaderConstructorClass = nopePackageLoader_1.NopePackageLoader;
}
options = Object.assign({
packageLoaderConstructorClass: null,
dispatcherConstructorClass: null,
singleton: true,
useBaseServices: true,
}, options);
const create = () => {
// Create a loader
const loader = new options.packageLoaderConstructorClass();
// load the default Package:
loader
.addPackage((0, generateNopeBasicPackage_1.generateNopeBasicPackage)(dispatcherOptions, options.singleton))
.catch((e) => {
throw e;
});
return loader;
};
if (options.singleton) {
// Create a singaleton if required.
// use the container to receive the
// singleton object
const container = (0, singletonMethod_1.getSingleton)("nopeBackendPackageLoader.instance", create);
return container.instance;
}
// No singleton is required =>
// create a new instance.
return create();
}
exports.getPackageLoader = getPackageLoader;