All files / src/utils LocalConfigurationDecorator.ts

100% Statements 13/13
100% Branches 2/2
100% Functions 3/3
100% Lines 13/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54  5x 5x     5x       8x           8x 8x                 2x 2x 1x                     1x                   3x 3x 3x      
import { WellKnownConfigurationKeys } from '../types/ConfigurationTypes';
import { getEditorResponseData } from './EditorResponseData';
import { ConfigurationController } from '../controllers/ConfigurationController';
import { EditorAPI } from '../types/CommonTypes';
 
export class LocalConfigurationDecorator extends ConfigurationController {
    /**
     * @ignore
     */
    #localConfig: Map<string, string>;
 
    /**
     * @ignore
     */
    constructor(editorAPI: EditorAPI, localConfig: Map<string, string>) {
        super(editorAPI);
        this.#localConfig = localConfig;
    }
 
    /**
     * This method returns the value for a given configuration key. If a value was not found in the configuration store,
     * this method returns an error. The key cannot be null.
     * @returns value for a given configuration key
     */
    async getValue(key: WellKnownConfigurationKeys | string) {
        const value = this.#localConfig.get(key);
        if (value != null) {
            return getEditorResponseData<string>(
                {
                    status: 200,
                    success: true,
                    parsedData: value,
                    data: value,
                },
                false,
            );
        }
 
        return super.getValue(key);
    }
 
    /**
     * This method sets or overrides the value for a given key.
     * Null values are not allowed for both key and value,
     * using them will result in an error.
     * @returns
     */
    async setValue(key: WellKnownConfigurationKeys | string, value: string) {
        const res = super.setValue(key, value);
        this.#localConfig.set(key, value);
        return res;
    }
}