ngrx-immer
Version:
Immer wrappers around NgRx methods createReducer, on, and ComponentStore
31 lines • 4.11 kB
JavaScript
import { Inject, Injectable, Optional } from '@angular/core';
import { ComponentStore, INITIAL_STATE_TOKEN } from '@ngrx/component-store';
import { immerReducer } from 'ngrx-immer/shared';
import { produce } from 'immer';
import * as i0 from "@angular/core";
/**
* Immer wrapper around `ImmerComponentStore` to mutate state
* with `updater` and `setState`
*/
export class ImmerComponentStore extends ComponentStore {
constructor(defaultState) {
super(produce(defaultState, s => s));
}
updater(updaterFn) {
return super.updater(immerReducer(updaterFn));
}
setState(stateOrUpdaterFn) {
super.setState(stateOrUpdaterFn);
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ImmerComponentStore, deps: [{ token: INITIAL_STATE_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ImmerComponentStore });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ImmerComponentStore, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [INITIAL_STATE_TOKEN]
}] }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1tZXItY29tcG9uZW50LXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudC1zdG9yZS9pbW1lci1jb21wb25lbnQtc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFFaEM7OztHQUdHO0FBRUgsTUFBTSxPQUFPLG1CQUVYLFNBQVEsY0FBcUI7SUFDOUIsWUFBcUQsWUFBb0I7UUFDeEUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxPQUFPLENBT0wsU0FBNEQ7UUFDN0QsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxRQUFRLENBQUMsZ0JBQTBEO1FBQ2xFLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQXFELENBQUMsQ0FBQztJQUN2RSxDQUFDO3VHQXBCVyxtQkFBbUIsa0JBR0MsbUJBQW1COzJHQUh2QyxtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVU7OzBCQUlHLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21wb25lbnRTdG9yZSwgSU5JVElBTF9TVEFURV9UT0tFTiB9IGZyb20gJ0BuZ3J4L2NvbXBvbmVudC1zdG9yZSc7XG5cbmltcG9ydCB7IGltbWVyUmVkdWNlciB9IGZyb20gJ25ncngtaW1tZXIvc2hhcmVkJztcbmltcG9ydCB7IHByb2R1Y2UgfSBmcm9tICdpbW1lcic7XG5cbi8qKlxuICogSW1tZXIgd3JhcHBlciBhcm91bmQgYEltbWVyQ29tcG9uZW50U3RvcmVgIHRvIG11dGF0ZSBzdGF0ZVxuICogd2l0aCBgdXBkYXRlcmAgYW5kIGBzZXRTdGF0ZWBcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEltbWVyQ29tcG9uZW50U3RvcmU8XG5cdFN0YXRlIGV4dGVuZHMgb2JqZWN0XG4+IGV4dGVuZHMgQ29tcG9uZW50U3RvcmU8U3RhdGU+IHtcblx0Y29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChJTklUSUFMX1NUQVRFX1RPS0VOKSBkZWZhdWx0U3RhdGU/OiBTdGF0ZSkge1xuXHRcdHN1cGVyKHByb2R1Y2UoZGVmYXVsdFN0YXRlLCBzID0+IHMpKTtcblx0fVxuXG5cdHVwZGF0ZXI8XG5cdFx0UHJvdmlkZWRUeXBlID0gdm9pZCxcblx0XHRPcmlnaW5UeXBlID0gUHJvdmlkZWRUeXBlLFxuXHRcdFZhbHVlVHlwZSA9IE9yaWdpblR5cGUsXG5cdFx0UmV0dXJuVHlwZSA9IE9yaWdpblR5cGUgZXh0ZW5kcyB2b2lkXG5cdFx0XHQ/ICgpID0+IHZvaWRcblx0XHRcdDogKG9ic2VydmFibGVPclZhbHVlOiBWYWx1ZVR5cGUgfCBPYnNlcnZhYmxlPFZhbHVlVHlwZT4pID0+IFN1YnNjcmlwdGlvblxuXHQ+KHVwZGF0ZXJGbjogKHN0YXRlOiBTdGF0ZSwgdmFsdWU6IE9yaWdpblR5cGUpID0+IHZvaWQgfCBTdGF0ZSk6IFJldHVyblR5cGUge1xuXHRcdHJldHVybiBzdXBlci51cGRhdGVyKGltbWVyUmVkdWNlcih1cGRhdGVyRm4pKTtcblx0fVxuXG5cdHNldFN0YXRlKHN0YXRlT3JVcGRhdGVyRm46IFN0YXRlIHwgKChzdGF0ZTogU3RhdGUpID0+IHZvaWQgfCBTdGF0ZSkpOiB2b2lkIHtcblx0XHRzdXBlci5zZXRTdGF0ZShzdGF0ZU9yVXBkYXRlckZuIGFzIFN0YXRlIHwgKChzdGF0ZTogU3RhdGUpID0+IFN0YXRlKSk7XG5cdH1cbn1cbiJdfQ==