New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

frontal-data-manager

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

frontal-data-manager

A lightweight and powerful service for frontend oriented data retrieval & management.

latest
Source
npmnpm
Version
1.0.14
Version published
Maintainers
1
Created
Source

Frontal Data Manager

A lightweight and powerful service for frontend oriented data retrieval & management.

Build & Test Status Coverage Status

This package simplified the process of fetching data once and using it all over the application components without requiring a complex injection library such as MobX, Redux, etc.

Although it's a very lightweight package with a very simple API, it's still powerful and gives the ability for data updating from one place to all application components, which is a very common requirement in every front application implementation.

All this includes the ability for clearing cache, force re-fetch, and much more.

See below in the example section how easy it is.

The package also has a built-in React (v17.0.2) hook for easy-to-use React components.

Install via NPM / Yarn:


npm install frontal-data-manager

yarn add frontal-data-manager

Using Example

import { DataService } from 'frontal-data-manager';

// Declare a service
class MyService extends DataService<string> { // Set the service Type by the Generic type on declaration
	constructor() {
		super(''); // Set the service default value
	}

    // The abstract fetch-data function to implement
	async fetchData(): Promise<string> {
		// Do the fetch and return the wanted data
		const response = await fetch('https://api.chucknorris.io/jokes/random');
		const body = await response.json();
		return body.value;
	}
}
export const myService = new MyService();

// Get the date, if it's not fetched yet it will be fetch
const data = await myService.getData();
// Force data hard-refresh and return the new value
const newData = await myService.forceFetchData();
// Publish and update a new data
await myService.postNewData('A new value to set');
// Add subscriber to the data feed
const dispatcher = myService.attachDataSubs((value: string) => {
	console.log(`The data is now ${value}`)
});

Once the service is defined, you can use it extremely easily by the data hook, the first component loading will trigger data fetch if not been fetched yet, and will re-render the component with each data update from anywhere, with the new value.

React 17 Hook Example

import { useData } from "frontal-data-manager"
import { myService } from "./my-service";

export function MyComponent() {

    // Pass the service to the useData hook, that's it
    const [ data, loading, error] = useData(myService);

    return (<div>
        <span>Is Loading? {loading}</span>
        <span>Is Loading failed? {error}</span>
        <span>The Data: {data}</span>
    </div>)
}

FAQs

Package last updated on 17 May 2023

Related posts