Security News
JavaScript Leaders Demand Oracle Release the JavaScript Trademark
In an open letter, JavaScript community leaders urge Oracle to give up the JavaScript trademark, arguing that it has been effectively abandoned through nonuse.
@bigab/simple-store
Advanced tools
A library for creating simple stores to be used in front-end web applications
Sometimes, you just need a simple store.
This library let's you create a flux-like store out of just a function, and use that store in your React or Svelte apps.
import { createSimpleStoreHook } from '@bigab/simple-store';
const store = createSimpleStoreHook(async (state, action, deps, resolve) => {
// if the store is being subscribed to, or the action is 'reset'
if ((!state && !action) || action.type === 'reset') {
// early sync resolve so you can show a spinner or something
resolve({ loading: true });
// then fetch the data for your store
const response = await deps.fetch('https://example.com/api/things');
const { data: things } = await resonse.json();
// then return to set new state again
return { things, loading: false }; // turn off spinner and show data
}
// if a filter action is dipatched fetch only things for that category
if (action.type === 'filter') {
const category = action.payload.category.id;
// still show the current items, along with the spinner
resolve({ ...state, loading: true });
// until the filter request resolves
const response = await deps.fetch(
`https://example.com/api/things/${category}`
);
const { data: things } = await resonse.json();
return { things, loading: false, category };
}
// by default, jsut return the same state and nothing happens
return state;
});
React
// could be in another file
const useThings = createSimpleStoreHook(thingsStoreFn); // see example above
const ThingList = ({ category }) => {
const [{ things, loading }, dispatch] = useThings();
if (loading) {
return <Spinner />;
}
return (
<>
{things.map(thing => (
<Thing
key={thing.id}
thing={thing}
onSelectCategory={() => {
dispatch(createCategoryFilterAction(category));
}}
/>
))}
</>
);
};
// coming soon
npm install @bigab/simple-store
yarn add @bigab/simple-store
createSimpleStore(storeFn, deps)
storeFn: (state[, action, deps, resolve]) => {}
npm test
Let people know how they can contribute into your project. A contributing guideline will be a big plus.
MIT © Adam L Barrett
FAQs
A library for creating simple stores to be used in front-end web applications
The npm package @bigab/simple-store receives a total of 4 weekly downloads. As such, @bigab/simple-store popularity was classified as not popular.
We found that @bigab/simple-store demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
In an open letter, JavaScript community leaders urge Oracle to give up the JavaScript trademark, arguing that it has been effectively abandoned through nonuse.
Security News
The initial version of the Socket Python SDK is now on PyPI, enabling developers to more easily interact with the Socket REST API in Python projects.
Security News
Floating dependency ranges in npm can introduce instability and security risks into your project by allowing unverified or incompatible versions to be installed automatically, leading to unpredictable behavior and potential conflicts.