Neurotic Programmer Masquerade

    kopi-locator

    1.0.2 • Public • Published

    Kopi Locator

    This library is used for implementing service locator pattern in Node.js applications

    Installation

    Using npm: npm install --save kopi-locator

    Usage

    Getting the locator

    const locator = require('kopi-locator');
    

    Create a new instance of locator

    const locator = require('kopi-locator');
    const newLocator = locator.instantiate();
    

    Registering a Service (factory)

    To register a service, provide the following:

    • name: [string] this name will be used as the key to locate the required service/dependency
    • factory: [function] this will be a constructor/function to create an instance of the service
    • dependencies: [array] this will be a list of dependency names as registered in the locator. The names should be in the order of what the factory constructor/function expects to receive in its parameters
    const locator = require('kopi-locator');
    
    // Creating the service, with dependencies as the constructor
    const serviceA = (dependencyB) => ({
      doSomethingInA: () => dependencyB.doSomethingInB() + 20,
    });
    
    const serviceB = () => ({
      doSomethingInB: () => 10,
    });
    
    // Register in Locator
    const run = async () => {
      try {
        // Register service factories and instances
        await locator.register('serviceA', serviceA, ['serviceB']);
        await locator.register('serviceB', serviceB);
    
        return Promise.resolve();
      } catch (error) {
        return Promise.reject(error);
      }
    };
    
    run()
      .then(() => console.log('completed'))
      .catch(error => console.error(error));
    

    Setting an Instance or Value

    When a value or an already available instance is expected to be injected or added to the locator, use the set method.

    These fields are required:

    • name: [string] this name will be used as the key to locate the required service/dependency
    • value: [object/value/instance] this will be the instance associated with the given name
    const locator = require('kopi-locator');
    
    // Creating the service, with dependencies as the constructor
    const instanceA = ({
      data: 123,
    });
    
    const valueB = 456;
    
    // Register in Locator
    const run = async () => {
      try {
        // Register service factories and instances
        await locator.set('instanceA', instanceA);
        await locator.set('valueB', valueB);
    
        return Promise.resolve();
      } catch (error) {
        return Promise.reject(error);
      }
    };
    
    run()
      .then(() => console.log('completed'))
      .catch(error => console.error(error));
    

    Getting Instance/Value/Service

    When getting an instance, if an instance is already present, the same instance will be returned.

    If the instance has yet to be created, the locator will attempt to create an instance of the service using the registered factory. This includes nested creation of the dependencies required for the service, as specified during registration.

    const locator = require('kopi-locator');
    
    const run = async () => {
      try {
        /* Not showing code for registering/setting */
    
        // Getting Service
        const instanceA = await locator.get('instanceA');
        const valueB = await locator.get('valueB');
        const serviceC = await locator.get('serviceC');
    
        return Promise.resolve();
      } catch (error) {
        return Promise.reject(error);
      }
    };
    
    run()
      .then(() => console.log('completed'))
      .catch(error => console.error(error));
    

    Install

    npm i kopi-locator

    DownloadsWeekly Downloads

    19

    Version

    1.0.2

    License

    ISC

    Unpacked Size

    6.55 kB

    Total Files

    5

    Last publish

    Collaborators

    • yeehuipoh