UNPKG

@mini-rx/signal-store

Version:
62 lines 8.78 kB
// 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.module.ts // MIT License // // Copyright (c) 2020 Marko Stanimirović // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. import { Inject, NgModule, Optional } from '@angular/core'; import { fromClassesWithEffectsToClassProviders, fromObjectsWithEffectsToEffects, } from '../effects-mapper'; import { StoreFeatureModule, StoreRootModule } from './store.module'; import { rxEffect } from '../store-core'; import { OBJECTS_WITH_EFFECTS } from '../injection-tokens'; import * as i0 from "@angular/core"; import * as i1 from "./store.module"; export class EffectsModule { constructor(objectsWithEffects, // Make sure effects can select state from store, also if EffectsModule is registered before Store.forFeature storeRootModule, storeFeatureModule) { const effects = fromObjectsWithEffectsToEffects(objectsWithEffects); effects.forEach((effect) => { rxEffect(effect); }); } static register(classesWithEffects) { return { ngModule: EffectsModule, providers: [ ...fromClassesWithEffectsToClassProviders(OBJECTS_WITH_EFFECTS, classesWithEffects), ], }; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: EffectsModule, deps: [{ token: OBJECTS_WITH_EFFECTS }, { token: i1.StoreRootModule, optional: true }, { token: i1.StoreFeatureModule, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); } static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: EffectsModule }); } static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: EffectsModule }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: EffectsModule, decorators: [{ type: NgModule }], ctorParameters: () => [{ type: undefined, decorators: [{ type: Inject, args: [OBJECTS_WITH_EFFECTS] }] }, { type: i1.StoreRootModule, decorators: [{ type: Optional }] }, { type: i1.StoreFeatureModule, decorators: [{ type: Optional }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NpZ25hbC1zdG9yZS9zcmMvbGliL21vZHVsZXMvZWZmZWN0cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUNBQW1DO0FBQ25DLGdKQUFnSjtBQUVoSixjQUFjO0FBQ2QsRUFBRTtBQUNGLHdDQUF3QztBQUN4QyxFQUFFO0FBQ0YsK0VBQStFO0FBQy9FLGdGQUFnRjtBQUNoRiwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLHdFQUF3RTtBQUN4RSwyREFBMkQ7QUFDM0QsRUFBRTtBQUNGLGlGQUFpRjtBQUNqRixrREFBa0Q7QUFDbEQsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSwyRUFBMkU7QUFDM0UsOEVBQThFO0FBQzlFLHlFQUF5RTtBQUN6RSxnRkFBZ0Y7QUFDaEYsZ0ZBQWdGO0FBQ2hGLFlBQVk7QUFFWixPQUFPLEVBQUUsTUFBTSxFQUF1QixRQUFRLEVBQUUsUUFBUSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBR3RGLE9BQU8sRUFDSCxzQ0FBc0MsRUFDdEMsK0JBQStCLEdBQ2xDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUczRCxNQUFNLE9BQU8sYUFBYTtJQUN0QixZQUNrQyxrQkFBeUI7SUFDdkQsNkdBQTZHO0lBQ2pHLGVBQWdDLEVBQ2hDLGtCQUFzQztRQUVsRCxNQUFNLE9BQU8sR0FBRywrQkFBK0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUEwQixFQUFFLEVBQUU7WUFDM0MsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsa0JBQStCO1FBQzNDLE9BQU87WUFDSCxRQUFRLEVBQUUsYUFBYTtZQUN2QixTQUFTLEVBQUU7Z0JBQ1AsR0FBRyxzQ0FBc0MsQ0FBQyxvQkFBb0IsRUFBRSxrQkFBa0IsQ0FBQzthQUN0RjtTQUNKLENBQUM7SUFDTixDQUFDOzhHQXBCUSxhQUFhLGtCQUVWLG9CQUFvQjsrR0FGdkIsYUFBYTsrR0FBYixhQUFhOzsyRkFBYixhQUFhO2tCQUR6QixRQUFROzswQkFHQSxNQUFNOzJCQUFDLG9CQUFvQjs7MEJBRTNCLFFBQVE7OzBCQUNSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDcmVkaXRzIGdvIHRvIE1hcmtvIFN0YW5pbWlyb3ZpxIdcbi8vIENvcGllZCBmcm9tIHdpdGggc21hbGwgbW9kaWZpY2F0aW9uczogaHR0cHM6Ly9naXRodWIuY29tL21hcmtvc3RhbmltaXJvdmljL2p1bGlldHRlL2Jsb2IvMS4yLjAvcHJvamVjdHMvanVsaWV0dGUtbmcvc3JjL2xpYi9lZmZlY3RzLm1vZHVsZS50c1xuXG4vLyBNSVQgTGljZW5zZVxuLy9cbi8vIENvcHlyaWdodCAoYykgMjAyMCBNYXJrbyBTdGFuaW1pcm92acSHXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuLy8gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4vLyBTT0ZUV0FSRS5cblxuaW1wb3J0IHsgSW5qZWN0LCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgT3B0aW9uYWwsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJ0BtaW5pLXJ4L2NvbW1vbic7XG5pbXBvcnQge1xuICAgIGZyb21DbGFzc2VzV2l0aEVmZmVjdHNUb0NsYXNzUHJvdmlkZXJzLFxuICAgIGZyb21PYmplY3RzV2l0aEVmZmVjdHNUb0VmZmVjdHMsXG59IGZyb20gJy4uL2VmZmVjdHMtbWFwcGVyJztcbmltcG9ydCB7IFN0b3JlRmVhdHVyZU1vZHVsZSwgU3RvcmVSb290TW9kdWxlIH0gZnJvbSAnLi9zdG9yZS5tb2R1bGUnO1xuaW1wb3J0IHsgcnhFZmZlY3QgfSBmcm9tICcuLi9zdG9yZS1jb3JlJztcbmltcG9ydCB7IE9CSkVDVFNfV0lUSF9FRkZFQ1RTIH0gZnJvbSAnLi4vaW5qZWN0aW9uLXRva2Vucyc7XG5cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgRWZmZWN0c01vZHVsZSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoT0JKRUNUU19XSVRIX0VGRkVDVFMpIG9iamVjdHNXaXRoRWZmZWN0czogYW55W10sXG4gICAgICAgIC8vIE1ha2Ugc3VyZSBlZmZlY3RzIGNhbiBzZWxlY3Qgc3RhdGUgZnJvbSBzdG9yZSwgYWxzbyBpZiBFZmZlY3RzTW9kdWxlIGlzIHJlZ2lzdGVyZWQgYmVmb3JlIFN0b3JlLmZvckZlYXR1cmVcbiAgICAgICAgQE9wdGlvbmFsKCkgc3RvcmVSb290TW9kdWxlOiBTdG9yZVJvb3RNb2R1bGUsXG4gICAgICAgIEBPcHRpb25hbCgpIHN0b3JlRmVhdHVyZU1vZHVsZTogU3RvcmVGZWF0dXJlTW9kdWxlXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGVmZmVjdHMgPSBmcm9tT2JqZWN0c1dpdGhFZmZlY3RzVG9FZmZlY3RzKG9iamVjdHNXaXRoRWZmZWN0cyk7XG4gICAgICAgIGVmZmVjdHMuZm9yRWFjaCgoZWZmZWN0OiBPYnNlcnZhYmxlPEFjdGlvbj4pID0+IHtcbiAgICAgICAgICAgIHJ4RWZmZWN0KGVmZmVjdCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyByZWdpc3RlcihjbGFzc2VzV2l0aEVmZmVjdHM6IFR5cGU8YW55PltdKTogTW9kdWxlV2l0aFByb3ZpZGVyczxFZmZlY3RzTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogRWZmZWN0c01vZHVsZSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAgICAgIC4uLmZyb21DbGFzc2VzV2l0aEVmZmVjdHNUb0NsYXNzUHJvdmlkZXJzKE9CSkVDVFNfV0lUSF9FRkZFQ1RTLCBjbGFzc2VzV2l0aEVmZmVjdHMpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=