| 15 | /* eslint-disable */ |
| 16 | |
| 17 | export const createSelectors = <S extends UseBoundStore<StoreApi<object>>>(_store: S) => { |
| 18 | const store = _store as WithSelectors<typeof _store>; |
| 19 | store.use = {}; |
| 20 | for (const k of Object.keys(store.getState())) { |
| 21 | // @ts-expect-error black magic |
| 22 | const stateValue = store.getState()[k]; |
| 23 | if (typeof stateValue === "object" && stateValue !== null) { |
| 24 | (store.use as any)[k] = {}; |
| 25 | for (const nestedK of Object.keys(stateValue)) { |
| 26 | // @ts-expect-error black magic |
| 27 | (store.use as any)[k][nestedK] = () => store((s) => s[k][nestedK as keyof (typeof s)[k]]); |
| 28 | } |
| 29 | } else { |
| 30 | (store.use as any)[k] = () => store((s) => s[k as keyof typeof s]); |
| 31 | } |
| 32 | } |
| 33 | |
| 34 | return store; |
| 35 | }; |