@mini-rx/signal-store
Version:
Signal Store for Angular
73 lines • 9.54 kB
JavaScript
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