Nomenclature Predictably Misunderstood

    @fvlab/configurationstore
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.6 • Public • Published

    configurationStore

    Simple interface for storing settings or document storage using your whatever backend you want to implement. Global configurations will be stored under /internal/global/ and user-specific configurations will be stored under /internal/user/<userId>. The paths can be configured by passing optional arguments to the constructor.

    There is a MockConfigurationStore class to use as placeholder until you get the intended configuration store setup. It stores configuration in memory.

    Implementing a configuration store

    Implement the IConfigurationStore or extend the BaseConfigurationStore class. Implement at least the following:

    1. setData<T>(settingsPath: string, value: T): Promise<T>

      Overwrites the endpoint in the database. If path does not exist it should be created.

    2. updateData<T>(settingsPath: string, value: T): Promise<T>

      Adds the value to the endpoint without overwriting existing data. If path does not exist it should be created

    3. getData<T>(settingsPath: string, defaultValue?: T): Promise<T>

      Gets the value of the specified endpoint. If endpoint does not exist, it should be created with the defaultValue

    class YourConfigurationStore extends BaseConfigurationStore {
      ...
    }
    
    const settings = new YourConfigurationStore(...);
    ...

    Retrieve values by key or get it's default value if a value doesn't exist for the key.

    return settings.getGlobalData('someKey', 'default value')
    .then(globalValue => ...);
    return settings.getUserData('someOtherKey', 'default value')
    .then(userValue => ...);

    Set the key-value pair, overwriting the endpoint.

    return settings.setGlobalData('someKey', 'some value')
    .then(globalValue => ...);
    return settings.setUserData('someOtherKey', 'some value')
    .then(userValue => ...);

    Update the endpoint with some value, without overwriting existing data

    return settings.updateGlobalData('someKey', 'some value')
    .then(globalValue => ...);
    return settings.updateUserData('someKey', 'some value')
    .then(userValue => ...);

    Keywords

    none

    Install

    npm i @fvlab/configurationstore

    DownloadsWeekly Downloads

    3

    Version

    1.0.6

    License

    Apache-2.0

    Unpacked Size

    29.3 kB

    Total Files

    7

    Last publish

    Collaborators

    • fvllam
    • smorrisfv