@mini-rx/signal-store
Version:
Signal Store for Angular
22 lines • 4.07 kB
JavaScript
import { EnvironmentInjector, inject, isSignal } from '@angular/core';
import { miniRxToObservable } from './mini-rx-to-observable';
import { createSignalStoreSubSink } from './signal-store-sub-sink';
export function createConnectFn(updateStateCallback) {
const subSink = createSignalStoreSubSink();
const injector = inject(EnvironmentInjector);
return (dict) => {
const keys = Object.keys(dict);
keys.forEach((key) => {
const observableOrSignal = dict[key];
const obs$ = isSignal(observableOrSignal)
? miniRxToObservable(observableOrSignal, { injector })
: observableOrSignal;
subSink.sink = obs$.subscribe((v) => {
updateStateCallback({
[key]: v,
}, "connection" /* OperationType.CONNECTION */, key);
});
});
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNvbm5lY3QtZm4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NpZ25hbC1zdG9yZS9zcmMvbGliL2NyZWF0ZS1jb25uZWN0LWZuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5FLE1BQU0sVUFBVSxlQUFlLENBQVksbUJBQW1EO0lBQzFGLE1BQU0sT0FBTyxHQUFHLHdCQUF3QixFQUFFLENBQUM7SUFDM0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFN0MsT0FBTyxDQUNILElBQTBELEVBQzVELEVBQUU7UUFDQSxNQUFNLElBQUksR0FBUSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBUSxDQUFDO1FBRTNDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixNQUFNLGtCQUFrQixHQUE4QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEYsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDO2dCQUNyQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQztnQkFDdEQsQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNoQyxtQkFBbUIsQ0FDZjtvQkFDSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7aUJBQ3NCLCtDQUVsQyxHQUFhLENBQ2hCLENBQUM7WUFDTixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50SW5qZWN0b3IsIGluamVjdCwgaXNTaWduYWwsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3BlcmF0aW9uVHlwZSwgVXBkYXRlU3RhdGVDYWxsYmFjayB9IGZyb20gJ0BtaW5pLXJ4L2NvbW1vbic7XG5pbXBvcnQgeyBtaW5pUnhUb09ic2VydmFibGUgfSBmcm9tICcuL21pbmktcngtdG8tb2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBjcmVhdGVTaWduYWxTdG9yZVN1YlNpbmsgfSBmcm9tICcuL3NpZ25hbC1zdG9yZS1zdWItc2luayc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb25uZWN0Rm48U3RhdGVUeXBlPih1cGRhdGVTdGF0ZUNhbGxiYWNrOiBVcGRhdGVTdGF0ZUNhbGxiYWNrPFN0YXRlVHlwZT4pIHtcbiAgICBjb25zdCBzdWJTaW5rID0gY3JlYXRlU2lnbmFsU3RvcmVTdWJTaW5rKCk7XG4gICAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG5cbiAgICByZXR1cm4gPEsgZXh0ZW5kcyBrZXlvZiBTdGF0ZVR5cGUsIFZhbHVlVHlwZSA9IFN0YXRlVHlwZVtLXT4oXG4gICAgICAgIGRpY3Q6IFJlY29yZDxLLCBPYnNlcnZhYmxlPFZhbHVlVHlwZT4gfCBTaWduYWw8VmFsdWVUeXBlPj5cbiAgICApID0+IHtcbiAgICAgICAgY29uc3Qga2V5czogS1tdID0gT2JqZWN0LmtleXMoZGljdCkgYXMgS1tdO1xuXG4gICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvYnNlcnZhYmxlT3JTaWduYWw6IE9ic2VydmFibGU8VmFsdWVUeXBlPiB8IFNpZ25hbDxWYWx1ZVR5cGU+ID0gZGljdFtrZXldO1xuICAgICAgICAgICAgY29uc3Qgb2JzJCA9IGlzU2lnbmFsKG9ic2VydmFibGVPclNpZ25hbClcbiAgICAgICAgICAgICAgICA/IG1pbmlSeFRvT2JzZXJ2YWJsZShvYnNlcnZhYmxlT3JTaWduYWwsIHsgaW5qZWN0b3IgfSlcbiAgICAgICAgICAgICAgICA6IG9ic2VydmFibGVPclNpZ25hbDtcbiAgICAgICAgICAgIHN1YlNpbmsuc2luayA9IG9icyQuc3Vic2NyaWJlKCh2KSA9PiB7XG4gICAgICAgICAgICAgICAgdXBkYXRlU3RhdGVDYWxsYmFjayhcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgW2tleV06IHYsXG4gICAgICAgICAgICAgICAgICAgIH0gYXMgdW5rbm93biBhcyBQYXJ0aWFsPFN0YXRlVHlwZT4sXG4gICAgICAgICAgICAgICAgICAgIE9wZXJhdGlvblR5cGUuQ09OTkVDVElPTixcbiAgICAgICAgICAgICAgICAgICAga2V5IGFzIHN0cmluZ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbiJdfQ==