@roadiehq/backstage-plugin-github-insights
Version:
66 lines (63 loc) • 1.5 kB
JavaScript
import create from 'zustand';
import produce from 'immer';
class DefaultDict {
constructor(defaultVal) {
return new Proxy(
{},
{
get: (target, name) => name in target ? target[name] : defaultVal
}
);
}
}
const initialState = { etag: "", data: [] };
const createLicenseSlice = (set) => ({
license: {
state: initialState,
setState: (next) => set(
produce((draft) => {
draft.license.state = next;
})
)
}
});
const createBranchesSlice = (set) => ({
branches: {
state: initialState,
setState: (next) => set(
produce((draft) => {
draft.branches.state = next;
})
)
}
});
const createContributorSlice = (set) => ({
contributor: {
state: new DefaultDict(initialState),
setState: (key, value) => set((prev) => {
prev.contributor.state[key] = value;
return produce((draft) => {
draft.contributor.state = prev.contributor.state;
});
})
}
});
const createRequestSlice = (set) => ({
request: {
state: new DefaultDict(initialState),
setState: (key, value) => set((prev) => {
prev.request.state[key] = value;
return produce((draft) => {
draft.requesst.state = prev.request.state;
});
})
}
});
const useStore = create((set) => ({
...createLicenseSlice(set),
...createContributorSlice(set),
...createBranchesSlice(set),
...createRequestSlice(set)
}));
export { useStore };
//# sourceMappingURL=store.esm.js.map