As a wrapper for browser storage (localStorage and sessionStorage), i45 allows you to store any collection of data in the form of an array.
npm i i45- Default Storage Settings
- Custom Storage Settings
- Retrieving Data
- Retrieving Data from Custom Data Stores
- Removing Items and Clearing the Data Store
- Storage Locations
- Using Sample Data
- Logging
import { DataContext, SampleData } from "i45"; // Create an instance of the datacontext. // The default storage location is local storage using a default key. var dataContext = new DataContext(); // Create an array of objects or values. This is a sample collection of astronomical terms. var terms = SampleData.Lists.Astronomy; // Save the collection to localStorage, passing in array of objects. dataContext.store(terms);import { DataContext, StorageLocations, SampleData } from "i45"; // This creates a dataset with the name Books stored in sessionStorage. var context = new DataContext("Books", StorageLocations.SessionStorage); // create an array of objects. This is a sample collection of books using the SampleData module. var books = SampleData.JsonData.Books; // save the collection to session storage. dataContext.store(books);The example below demonstrates how to retrieve data using default database settings.
import { DataContext, SampleData } from "i45"; // create an instance of data context. var context = new DataContext(); // store the data, in this case, in local storage. context.store(SampleData.JsonData.States); // retrieve the data and log it to the console. context.retrieve().then((data) => console.log("State data:", data));To retrieve data using customized settings, call the retrieve() method passing in the DataStoreName(key).
import { DataContext, StorageLocations, SampleData } from "i45"; // This creates a dataset with the name Quiz stored in sessionStorage. var context = new DataContext("Quiz", StorageLocations.SessionStorage); // create an array of objects. This is a sample collection of trivia questions. dataContext.store("Questions", SampleData.JsonData.TriviaQuestions); // retrieve the data. datacontext.retrieve("Questions");In the case of multiple datasets in multiple locations, pass in both the data store name and the location, in order to retrieve the correct data.
var data = context.retrieve("MyItems", StorageLocations.LocalStorage);To delete an entry, call the remove() method on the data context passing in the DataStoreName(key).
To clear all entries in all storage locations, call the clear() method.
Warning: Calling the clear() method will clear all entries in all storage locations.
import { DataContext } from "i45"; var dataContext = new DataContext(); // create an array of countries using sample data. var countries = SampleData.KeyValueLists.Countries; // save the collection dataContext.store("Countries", countries); // removes the item from storage. dataContext.remove("Countries"); // removes all items from all storage locations. datacontext.clear();StorageLocations is an enum of the available storage options. Currently, those are LocalStorage and SessionStorage.
LocalStorage is used by default, and can be changed by calling the StoreLocation() method.
StorageLocations.LocalStorage; // uses window.localStorage to persist data. StorageLocations.SessionStorage; // uses window.sessionStorage to persist data. // change the storage location to session storage. context.StorageLocation(StorageLocations.SessionStorage); // or when creating a new instance of a data context. var context = new DataContext("MyItems", StorageLocations.SessionStorage);The i45-Sample-Data package is a library of sample datasets that can be used during development.
The package has been merged for convenience.
Full usage details can be found at i45-Sample-Data
import { SampleData } from "i45"; var books = SampleData.JsonData.Books; console.log(books);The i45-jslogging package is integrated for data context logging. The enableLogging() method, which accepts true or false, will turn logging on or off.
import { DataContext } from "i45"; var context = new DataContext(); context.enableLogging(true);When enabled, messages are written both to the console as well as to localStorage as"eventLog".
See i45-jsLogger for full details on how the module works. The logger is not exposed in this module.
The DataContext can accept a custom logger which implements the ILogger Interface:
export const ILogger = { info: (message) => {}, warn: (message) => {}, error: (message) => {}, getEvents: () => {}, };Upon succesfull registration, messages (info, warnings, errors) from the DataContext will be sent to the custom logger.
import { DataContext } from "i45"; // get an instance of the custom logger. This example assumes the use of a class. var myLogger = new CustomLogger(); // create an instance of the datacontext. const context = new DataContext(); // Register the custom logger. context.registerLogger(myLogger); // Enable logging. context.enableLogging(true);