UNPKG

isa-auth-core

Version:
83 lines (82 loc) 2.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: Object.getOwnPropertyDescriptor(all, name).get }); } _export(exports, { get clearState () { return clearState; }, get deleteState () { return deleteState; }, get getState () { return getState; }, get hasState () { return hasState; }, get initState () { return initState; }, get setState () { return setState; }, get subscribe () { return subscribe; } }); const _isautil = require("isa-util"); const _error = require("../console/error"); const store = new Map(); const listeners = new Map(); function initState(id, value) { if ((0, _isautil.isUndefined)(value) || (0, _isautil.isFalsy)(id)) return (0, _error.storeError)('wrong', id); store.set(id, value); listeners.set(id, new Set()); } function getState(id) { const state = store.get(id); if ((0, _isautil.isUndefined)(state)) { (0, _error.storeError)('wrong', id); return undefined; } return state; } function setState(id, value) { const state = store.get(id); if ((0, _isautil.isUndefined)(state) || (0, _isautil.isUndefined)(value)) return (0, _error.storeError)('wrong', id); store.set(id, value); const idListeners = listeners.get(id); idListeners === null || idListeners === void 0 ? void 0 : idListeners.forEach((listener)=>listener(value)); } function clearState(id) { if (!store.has(id)) return (0, _error.storeError)('wrong', id); store.set(id, null); } function deleteState(id) { if (!store.has(id)) return (0, _error.storeError)('wrong', id); store.delete(id); listeners.delete(id); } function hasState(id) { return store.has(id); } function subscribe(id, listener) { if (!store.has(id)) return (0, _error.storeError)('wrong', id); var _listeners_get; const idListeners = (_listeners_get = listeners.get(id)) !== null && _listeners_get !== void 0 ? _listeners_get : new Set(); idListeners.add(listener); listeners.set(id, idListeners); listener(getState(id)); // 초기 상태도 전달 return ()=>{ idListeners.delete(listener); if (idListeners.size === 0) listeners.delete(id); }; } //# sourceMappingURL=store.js.map