@mini-rx/signal-store
Version:
Signal Store for Angular
19 lines • 5.44 kB
JavaScript
// Credits go to Marko Stanimirović
// Copied from with small modifications: https://github.com/markostanimirovic/juliette/blob/1.2.0/projects/juliette-ng/src/lib/effects.mapper.ts
import { hasEffectMetaData } from '@mini-rx/common';
export const fromClassesWithEffectsToClassProviders = (injectionToken, classesWithEffects) => classesWithEffects.map((classWithEffects) => ({
provide: injectionToken,
useClass: classWithEffects,
multi: true,
}));
export const fromObjectsWithEffectsToEffects = (objectsWithEffects) => objectsWithEffects.reduce((acc, objectWithEffects) => {
const effectsFromCurrentObject = Object.getOwnPropertyNames(objectWithEffects).reduce((acc, prop) => {
const effect = objectWithEffects[prop];
if (hasEffectMetaData(effect)) {
acc.push(effect);
}
return acc;
}, []);
return [...acc, ...effectsFromCurrentObject];
}, []);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0cy1tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NpZ25hbC1zdG9yZS9zcmMvbGliL2VmZmVjdHMtbWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1DQUFtQztBQUNuQyxnSkFBZ0o7QUEwQmhKLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBELE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLENBQ2xELGNBQW1DLEVBQ25DLGtCQUErQixFQUNoQixFQUFFLENBQ2pCLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU8sRUFBRSxjQUFjO0lBQ3ZCLFFBQVEsRUFBRSxnQkFBZ0I7SUFDMUIsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDLENBQUMsQ0FBQztBQUVSLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQUMsa0JBQXlCLEVBQXFCLEVBQUUsQ0FDNUYsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLGlCQUFpQixFQUFFLEVBQUU7SUFDakQsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBRW5GLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ1osTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzVCLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1AsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsd0JBQXdCLENBQUMsQ0FBQztBQUNqRCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDcmVkaXRzIGdvIHRvIE1hcmtvIFN0YW5pbWlyb3ZpxIdcbi8vIENvcGllZCBmcm9tIHdpdGggc21hbGwgbW9kaWZpY2F0aW9uczogaHR0cHM6Ly9naXRodWIuY29tL21hcmtvc3RhbmltaXJvdmljL2p1bGlldHRlL2Jsb2IvMS4yLjAvcHJvamVjdHMvanVsaWV0dGUtbmcvc3JjL2xpYi9lZmZlY3RzLm1hcHBlci50c1xuXG4vLyBNSVQgTGljZW5zZVxuLy9cbi8vIENvcHlyaWdodCAoYykgMjAyMCBNYXJrbyBTdGFuaW1pcm92acSHXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuLy8gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4vLyBTT0ZUV0FSRS5cblxuaW1wb3J0IHsgQ2xhc3NQcm92aWRlciwgSW5qZWN0aW9uVG9rZW4sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGhhc0VmZmVjdE1ldGFEYXRhIH0gZnJvbSAnQG1pbmktcngvY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IGZyb21DbGFzc2VzV2l0aEVmZmVjdHNUb0NsYXNzUHJvdmlkZXJzID0gKFxuICAgIGluamVjdGlvblRva2VuOiBJbmplY3Rpb25Ub2tlbjxhbnk+LFxuICAgIGNsYXNzZXNXaXRoRWZmZWN0czogVHlwZTxhbnk+W11cbik6IENsYXNzUHJvdmlkZXJbXSA9PlxuICAgIGNsYXNzZXNXaXRoRWZmZWN0cy5tYXAoKGNsYXNzV2l0aEVmZmVjdHMpID0+ICh7XG4gICAgICAgIHByb3ZpZGU6IGluamVjdGlvblRva2VuLFxuICAgICAgICB1c2VDbGFzczogY2xhc3NXaXRoRWZmZWN0cyxcbiAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSkpO1xuXG5leHBvcnQgY29uc3QgZnJvbU9iamVjdHNXaXRoRWZmZWN0c1RvRWZmZWN0cyA9IChvYmplY3RzV2l0aEVmZmVjdHM6IGFueVtdKTogT2JzZXJ2YWJsZTxhbnk+W10gPT5cbiAgICBvYmplY3RzV2l0aEVmZmVjdHMucmVkdWNlKChhY2MsIG9iamVjdFdpdGhFZmZlY3RzKSA9PiB7XG4gICAgICAgIGNvbnN0IGVmZmVjdHNGcm9tQ3VycmVudE9iamVjdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdFdpdGhFZmZlY3RzKS5yZWR1Y2U8XG4gICAgICAgICAgICBBcnJheTxPYnNlcnZhYmxlPGFueT4+XG4gICAgICAgID4oKGFjYywgcHJvcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWZmZWN0ID0gb2JqZWN0V2l0aEVmZmVjdHNbcHJvcF07XG4gICAgICAgICAgICBpZiAoaGFzRWZmZWN0TWV0YURhdGEoZWZmZWN0KSkge1xuICAgICAgICAgICAgICAgIGFjYy5wdXNoKGVmZmVjdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCBbXSk7XG4gICAgICAgIHJldHVybiBbLi4uYWNjLCAuLi5lZmZlY3RzRnJvbUN1cnJlbnRPYmplY3RdO1xuICAgIH0sIFtdKTtcbiJdfQ==