Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
@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 1 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
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.