UNPKG

@mini-rx/signal-store

Version:
73 lines 9.54 kB
import { inject, NgModule } from '@angular/core'; import { Actions } from '@mini-rx/common'; import { Store } from '../store'; import { storeCore } from '../store-core'; import { FEATURE_CONFIGS, FEATURE_NAMES, FEATURE_REDUCERS, STORE_CONFIG, } from '../injection-tokens'; import * as i0 from "@angular/core"; export function storeFactory(config) { return new Store(config); } export class StoreRootModule { constructor() { this.store = inject(Store); // Make sure store is initialized also if it is NOT injected in other services/components } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: StoreRootModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); } static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: StoreRootModule }); } static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: StoreRootModule }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: StoreRootModule, decorators: [{ type: NgModule }] }); export class StoreFeatureModule { constructor() { const storeRootModule = inject(StoreRootModule); // Prevent feature states to be initialized before root state const featureNames = inject(FEATURE_NAMES); const reducers = inject(FEATURE_REDUCERS); const configs = inject(FEATURE_CONFIGS); featureNames.forEach((featureName, index) => { storeCore.addFeature(featureName, reducers[index], configs[index]); }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: StoreFeatureModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); } static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: StoreFeatureModule }); } static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: StoreFeatureModule }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: StoreFeatureModule, decorators: [{ type: NgModule }], ctorParameters: () => [] }); export class StoreModule { static forRoot(config) { return { ngModule: StoreRootModule, providers: [ { provide: STORE_CONFIG, useValue: config }, { provide: Store, useFactory: storeFactory, deps: [STORE_CONFIG], }, { provide: Actions, useValue: storeCore.actions$, }, ], }; } static forFeature(featureName, reducer, config) { return { ngModule: StoreFeatureModule, providers: [ { provide: FEATURE_NAMES, multi: true, useValue: featureName }, { provide: FEATURE_REDUCERS, multi: true, useValue: reducer }, { provide: FEATURE_CONFIGS, multi: true, useValue: config }, ], }; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: StoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); } static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: StoreModule }); } static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: StoreModule }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: StoreModule, decorators: [{ type: NgModule }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zaWduYWwtc3RvcmUvc3JjL2xpYi9tb2R1bGVzL3N0b3JlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBaUQsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUNILGVBQWUsRUFDZixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLFlBQVksR0FDZixNQUFNLHFCQUFxQixDQUFDOztBQUU3QixNQUFNLFVBQVUsWUFBWSxDQUFDLE1BQTZCO0lBQ3RELE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUdELE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRVksVUFBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHlGQUF5RjtLQUMzSDs4R0FGWSxlQUFlOytHQUFmLGVBQWU7K0dBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEM0IsUUFBUTs7QUFNVCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCO1FBQ0ksTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsNkRBQTZEO1FBQzlHLE1BQU0sWUFBWSxHQUFhLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRCxNQUFNLFFBQVEsR0FBbUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDMUQsTUFBTSxPQUFPLEdBQXlCLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUU5RCxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3hDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBVlEsa0JBQWtCOytHQUFsQixrQkFBa0I7K0dBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsUUFBUTs7QUFlVCxNQUFNLE9BQU8sV0FBVztJQUNwQixNQUFNLENBQUMsT0FBTyxDQUFJLE1BQXNCO1FBQ3BDLE9BQU87WUFDSCxRQUFRLEVBQUUsZUFBZTtZQUN6QixTQUFTLEVBQUU7Z0JBQ1AsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7Z0JBQzNDO29CQUNJLE9BQU8sRUFBRSxLQUFLO29CQUNkLFVBQVUsRUFBRSxZQUFZO29CQUN4QixJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3ZCO2dCQUNEO29CQUNJLE9BQU8sRUFBRSxPQUFPO29CQUNoQixRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7aUJBQy9CO2FBQ0o7U0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQ2IsV0FBbUIsRUFDbkIsT0FBbUIsRUFDbkIsTUFBa0M7UUFFbEMsT0FBTztZQUNILFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsU0FBUyxFQUFFO2dCQUNQLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7Z0JBQzlELEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtnQkFDN0QsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTthQUM5RDtTQUNKLENBQUM7SUFDTixDQUFDOzhHQWhDUSxXQUFXOytHQUFYLFdBQVc7K0dBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbnMsIEFwcFN0YXRlLCBGZWF0dXJlQ29uZmlnLCBSZWR1Y2VyLCBTdG9yZUNvbmZpZyB9IGZyb20gJ0BtaW5pLXJ4L2NvbW1vbic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJy4uL3N0b3JlJztcbmltcG9ydCB7IHN0b3JlQ29yZSB9IGZyb20gJy4uL3N0b3JlLWNvcmUnO1xuaW1wb3J0IHtcbiAgICBGRUFUVVJFX0NPTkZJR1MsXG4gICAgRkVBVFVSRV9OQU1FUyxcbiAgICBGRUFUVVJFX1JFRFVDRVJTLFxuICAgIFNUT1JFX0NPTkZJRyxcbn0gZnJvbSAnLi4vaW5qZWN0aW9uLXRva2Vucyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdG9yZUZhY3RvcnkoY29uZmlnOiBTdG9yZUNvbmZpZzxBcHBTdGF0ZT4pIHtcbiAgICByZXR1cm4gbmV3IFN0b3JlKGNvbmZpZyk7XG59XG5cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgU3RvcmVSb290TW9kdWxlIHtcbiAgICBwcml2YXRlIHN0b3JlID0gaW5qZWN0KFN0b3JlKTsgLy8gTWFrZSBzdXJlIHN0b3JlIGlzIGluaXRpYWxpemVkIGFsc28gaWYgaXQgaXMgTk9UIGluamVjdGVkIGluIG90aGVyIHNlcnZpY2VzL2NvbXBvbmVudHNcbn1cblxuQE5nTW9kdWxlKClcbmV4cG9ydCBjbGFzcyBTdG9yZUZlYXR1cmVNb2R1bGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb25zdCBzdG9yZVJvb3RNb2R1bGUgPSBpbmplY3QoU3RvcmVSb290TW9kdWxlKTsgLy8gUHJldmVudCBmZWF0dXJlIHN0YXRlcyB0byBiZSBpbml0aWFsaXplZCBiZWZvcmUgcm9vdCBzdGF0ZVxuICAgICAgICBjb25zdCBmZWF0dXJlTmFtZXM6IHN0cmluZ1tdID0gaW5qZWN0KEZFQVRVUkVfTkFNRVMpO1xuICAgICAgICBjb25zdCByZWR1Y2VyczogUmVkdWNlcjxhbnk+W10gPSBpbmplY3QoRkVBVFVSRV9SRURVQ0VSUyk7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3M6IEZlYXR1cmVDb25maWc8YW55PltdID0gaW5qZWN0KEZFQVRVUkVfQ09ORklHUyk7XG5cbiAgICAgICAgZmVhdHVyZU5hbWVzLmZvckVhY2goKGZlYXR1cmVOYW1lLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgc3RvcmVDb3JlLmFkZEZlYXR1cmUoZmVhdHVyZU5hbWUsIHJlZHVjZXJzW2luZGV4XSwgY29uZmlnc1tpbmRleF0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgU3RvcmVNb2R1bGUge1xuICAgIHN0YXRpYyBmb3JSb290PFQ+KGNvbmZpZzogU3RvcmVDb25maWc8VD4pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFN0b3JlUm9vdE1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IFN0b3JlUm9vdE1vZHVsZSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogU1RPUkVfQ09ORklHLCB1c2VWYWx1ZTogY29uZmlnIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBTdG9yZSxcbiAgICAgICAgICAgICAgICAgICAgdXNlRmFjdG9yeTogc3RvcmVGYWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICBkZXBzOiBbU1RPUkVfQ09ORklHXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogQWN0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgdXNlVmFsdWU6IHN0b3JlQ29yZS5hY3Rpb25zJCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZm9yRmVhdHVyZTxUPihcbiAgICAgICAgZmVhdHVyZU5hbWU6IHN0cmluZyxcbiAgICAgICAgcmVkdWNlcjogUmVkdWNlcjxUPixcbiAgICAgICAgY29uZmlnPzogUGFydGlhbDxGZWF0dXJlQ29uZmlnPFQ+PlxuICAgICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8U3RvcmVGZWF0dXJlTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogU3RvcmVGZWF0dXJlTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBGRUFUVVJFX05BTUVTLCBtdWx0aTogdHJ1ZSwgdXNlVmFsdWU6IGZlYXR1cmVOYW1lIH0sXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBGRUFUVVJFX1JFRFVDRVJTLCBtdWx0aTogdHJ1ZSwgdXNlVmFsdWU6IHJlZHVjZXIgfSxcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IEZFQVRVUkVfQ09ORklHUywgbXVsdGk6IHRydWUsIHVzZVZhbHVlOiBjb25maWcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19