vamtiger-require
v0.0.9
Published
A parameterised module loader.
Downloads
5
Maintainers
Readme
VAMTIGER Require
A parameterised module loader.
Installation
VAMTIGER Require can be installed using npm or yarn:
npm i --save vamtiger-require
or
yarn add vamtiger-require
Usage
Import or require a referece to VAMTIGER Require:
import vamtigerRequire, { Params as RequireParams } from 'vamtiger-require';;
or
const vamtigerRequire = require('vamtiger-require');
VAMTIGER Require can import a module for a defined path.
const importedModule = vamtigerRequire({
path: mockDataPath
});
An attribute or method can be referenced by appending an object path.
// path/to/module.js
/*
module.exports = {
test: {
attribute: 'test attribute',
method: () => 'test method,
sum: (numbers) => numbers.reduce((sum, number) => sum + number, 0),
sumAsync: (number1, number2, callback) => callback(null, [number1, number2].reduce((sum, number) => sum + number, 0)),
argument1: 1,
argument2: 2,
argument3: 3,
callback: function (error: Error, result: number) {
if (error)
throw error;
return result;
}
}
}
*/
const attribute = vamtigerRequire({
path: 'path/to/module.test.attribute'
}); // 'test attribute'
const method = vamtigerRequire({
path: 'path/to/module.test.method'
});
method(); // 'test method'
const sum = vamtigerRequire({
path: 'path/to/module.test.sum',
arguments: [1, 2, 3, 4, 5]
}); // 15
const sumRequiredArgs = vamtigerRequire({
path: 'path/to/module.test.sum',
requireArguments: [
'path/to/module.test.argument1',
'path/to/module.test.argument2',
'path/to/module.test.argument3'
]
}); // 6
const attribute = vamtigerRequire({
path: 'path/to/module.test.attribute'
});
const sumAsync = vamtigerRequire({
path: 'path/to/module.test.sumAsync',
arguments: [1, 2, handleResult]
});
function handleResult(error, result) {
console.log(result); // 3
}
const sumAsyncRequiredArguments = vamtigerRequire({
path: 'path/to/module.test.sumAsync',
requireArguments: [
'path/to/module.test.argument1',
'path/to/module.test.argument2',
'path/to/module.test.callback'
]
});
Classes can be referenced by specifying constructorParams and arguments.
// path/to/module.js
/*
module.exports = class TestClass {
private params: Params;
constructor(params) {
this.params = params;
}
get test() {
return this.params.booya;
}
sum(...numbers) {
return numbers.reduce((sum, number) => sum + number, 0);
}
sumAsync(number1, number2, callback) {
callback(null, [number1, number2].reduce((sum, number) => sum + number, 0));
}
}
*/
const testClass = vamtigerRequire({ // instance of TestClass
path: 'path/to/module',
constructorParams: {
booya: 'kasha'
}
});
testClass.test; // 'kasha'
const test = vamtigerRequire({ // instance of TestClass
path: 'path/to/module',
constructorParams: {
booya: 'kasha'
},
instanceAttribute: 'test'
}); // 'kasha'
const sum = vamtigerRequire({
path: 'path/to/module',
instanceMethod: 'sum',
constructorParams: {},
arguments: [1, 2, 3, 4, 5]
}); // 15
const sumAsync = vamtigerRequire({
path: 'path/to/module',
instanceMethod: 'sumAsync',
constructorParams: {},
arguments: [1, 2, handleResult]
});
function handleResult(error, result) {
console.log(result); // 3
}