Yrkki/cv-generator-fe

View on GitHub
src/app/services/persistence/storage.ts

Summary

Maintainability
A
0 mins
Test Coverage
// SPDX-License-Identifier: Apache-2.0
// Copyright (c) 2018 Georgi Marinov
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import { Injectable } from '@angular/core';
import { Indexable } from '../../classes/indexable';

/**
 * Storage mechanism implementation.
 *
 * This Web Storage API interface provides access to a particular domain's session or local storage.
 * It allows, for example, the addition, modification, or deletion of stored data items.
 *
 * ~extends {@link Indexable}
 * ~implements {@link Storage}
 */
@Injectable({
  providedIn: 'root'
})
export class StorageMechanism extends Indexable implements Storage {
  /**
   * Storage mechanism getter.
   * ~security: codacy: unsafe: ESLint_scanjs-rules_identifier__localStorage
   */
  public get storage() { return localStorage; }

  /**
   * Returns the number of key/value pairs currently present in the list associated with the object.
   * ~override
   */
  public get length(): number { return this.storage.length; }

  /**
   * Empties the list associated with the object of all key/value pairs, if there are any.
   * ~override
   */
  clear(): void {
    this.storage.clear();
  }

  /**
   * Returns the current value associated with the given key, or null if the given key does not exist
   * in the list associated with the object.
   * ~override
   *
   * @param key The item key.
   */
  getItem(key: string): string | null {
    return this.storage.getItem(key);
  }

  /**
   * Returns the name of the nth key in the list, or null if n is greater than or equal to the number of
   * key/value pairs in the object.
   * ~override
   *
   * @param index The item index.
   */
  key(index: number): string | null {
    return this.storage.key(index);
  }

  /**
   * Removes the key/value pair with the given key from the list associated with the object,
   * if a key/value pair with the given key exists.
   * ~override
   *
   * @param key The item key.
   */
  removeItem(key: string): void {
    this.storage.removeItem(key);
  }

  /**
   * Sets the value of the pair identified by key to value, creating a new key/value pair if none existed for key previously.
   *
   * Throws a "QuotaExceededError" DOMException exception if the new value couldn't be set.
   * (Setting could fail if, e.g., the user has disabled storage for the site, or if the quota has been exceeded.)
   *
   * ~override
   *
   * @param key The item key.
   * @param value The item value.
   */
  setItem(key: string, value: string): void {
    this.storage.setItem(key, value);
  }
}