@angular-architects/ngrx-toolkit 0.1.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/index.mjs +2 -2
- package/esm2022/lib/with-call-state.mjs +1 -1
- package/esm2022/lib/with-devtools.mjs +15 -2
- package/esm2022/lib/with-redux.mjs +11 -6
- package/fesm2022/angular-architects-ngrx-toolkit.mjs +25 -7
- package/fesm2022/angular-architects-ngrx-toolkit.mjs.map +1 -1
- package/index.d.ts +1 -1
- package/lib/with-call-state.d.ts +5 -9
- package/lib/with-devtools.d.ts +11 -0
- package/lib/with-redux.d.ts +3 -1
- package/package.json +1 -1
package/esm2022/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { withDevtools, patchState } from './lib/with-devtools';
|
|
1
|
+
export { withDevtools, patchState, updateState, } from './lib/with-devtools';
|
|
2
2
|
export * from './lib/with-redux';
|
|
3
3
|
export * from './lib/with-call-state';
|
|
4
4
|
export * from './lib/with-undo-redo';
|
|
@@ -6,4 +6,4 @@ export * from './lib/with-data-service';
|
|
|
6
6
|
export { withStorageSync } from './lib/with-storage-sync';
|
|
7
7
|
export * from './lib/redux-connector';
|
|
8
8
|
export * from './lib/redux-connector/rxjs-interop';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxHQUVaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0seUJBQXlCLENBQUM7QUFDdEUsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgd2l0aERldnRvb2xzLFxuICBwYXRjaFN0YXRlLFxuICB1cGRhdGVTdGF0ZSxcbiAgQWN0aW9uLFxufSBmcm9tICcuL2xpYi93aXRoLWRldnRvb2xzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dpdGgtcmVkdXgnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi93aXRoLWNhbGwtc3RhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd2l0aC11bmRvLXJlZG8nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd2l0aC1kYXRhLXNlcnZpY2UnO1xuZXhwb3J0IHsgd2l0aFN0b3JhZ2VTeW5jLCBTeW5jQ29uZmlnIH0gZnJvbSAnLi9saWIvd2l0aC1zdG9yYWdlLXN5bmMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVkdXgtY29ubmVjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlZHV4LWNvbm5lY3Rvci9yeGpzLWludGVyb3AnO1xuIl19
|
|
@@ -55,4 +55,4 @@ export function setError(error, prop) {
|
|
|
55
55
|
return { callState: { error: errorMessage } };
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jYWxsLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi93aXRoLWNhbGwtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUEyQnZCLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxNQUFnQztJQUMvRCxNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsVUFBVSxDQUFDO0lBQ2hDLE9BQU87UUFDTCxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVztRQUNuRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM1RCxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUTtRQUN6RCxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTztLQUN2RCxDQUFDO0FBQ0osQ0FBQztBQW9CRCxNQUFNLFVBQVUsYUFBYSxDQUE0QixNQUV4RDtJQUNDLE1BQU0sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsR0FDckQsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFM0IsT0FBTyxrQkFBa0IsQ0FDdkIsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUNyQyxZQUFZLENBQUMsQ0FBQyxLQUFzQyxFQUFFLEVBQUU7UUFFdEQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBc0IsQ0FBQztRQUUzRCxPQUFPO1lBQ0wsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssU0FBUyxDQUFDO1lBQ3ZELENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLFFBQVEsQ0FBQztZQUNyRCxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hCLE1BQU0sQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDO2dCQUN0QixPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2hELENBQUMsQ0FBQztTQUNILENBQUE7SUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQ3hCLElBQVc7SUFFWCxJQUFJLElBQUksRUFBRTtRQUNSLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxTQUFTLEVBQXdCLENBQUM7S0FDbEU7SUFFRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBd0IsQ0FBQztBQUN4RCxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FDdkIsSUFBVztJQUdYLElBQUksSUFBSSxFQUFFO1FBQ1IsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBd0IsQ0FBQztLQUNqRTtTQUNJO1FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQXdCLENBQUM7S0FDdEQ7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsS0FBYyxFQUNkLElBQVc7SUFHVCxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7SUFFdEIsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLFlBQVksR0FBRyxFQUFFLENBQUM7S0FDbkI7U0FDSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxTQUFTLElBQUksS0FBSyxFQUFFO1FBQ3hELFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3RDO1NBQ0k7UUFDSCxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzlCO0lBR0QsSUFBSSxJQUFJLEVBQUU7UUFDUixPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQXdCLENBQUM7S0FDaEY7U0FDSTtRQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQXdCLENBQUM7S0FDckU7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2lnbmFsU3RvcmVGZWF0dXJlLFxuICBzaWduYWxTdG9yZUZlYXR1cmUsXG4gIHdpdGhDb21wdXRlZCxcbiAgd2l0aFN0YXRlLFxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IEVtdHB5IH0gZnJvbSAnLi9zaGFyZWQvZW1wdHknO1xuXG5leHBvcnQgdHlwZSBDYWxsU3RhdGUgPSAnaW5pdCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJyB8IHsgZXJyb3I6IHN0cmluZyB9O1xuXG5leHBvcnQgdHlwZSBDYWxsU3RhdGVTbGljZSA9IHtcbiAgY2FsbFN0YXRlOiBDYWxsU3RhdGVcbn1cblxuZXhwb3J0IHR5cGUgTmFtZWRDYWxsU3RhdGVTbGljZTxDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nPiA9IHtcbiAgW0sgaW4ga2V5b2YgQ2FsbFN0YXRlU2xpY2UgYXMgYCR7Q29sbGVjdGlvbn0ke0NhcGl0YWxpemU8Sz59YF06IENhbGxTdGF0ZVNsaWNlW0tdO1xufVxuXG5leHBvcnQgdHlwZSBDYWxsU3RhdGVTaWduYWxzID0ge1xuICBsb2FkaW5nOiBTaWduYWw8Ym9vbGVhbj47XG4gIGxvYWRlZDogU2lnbmFsPGJvb2xlYW4+O1xuICBlcnJvcjogU2lnbmFsPHN0cmluZyB8IG51bGw+XG59XG5cbmV4cG9ydCB0eXBlIE5hbWVkQ2FsbFN0YXRlU2lnbmFsczxQcm9wIGV4dGVuZHMgc3RyaW5nPiA9IHtcbiAgW0sgaW4ga2V5b2YgQ2FsbFN0YXRlU2lnbmFscyBhcyBgJHtQcm9wfSR7Q2FwaXRhbGl6ZTxLPn1gXTogQ2FsbFN0YXRlU2lnbmFsc1tLXTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0Q2FsbFN0YXRlPFByb3AgZXh0ZW5kcyBzdHJpbmcgfCB1bmRlZmluZWQ+ID0gUHJvcCBleHRlbmRzIHN0cmluZ1xuICA/IE5hbWVkQ2FsbFN0YXRlU2xpY2U8UHJvcD5cbiAgOiBDYWxsU3RhdGVTbGljZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENhbGxTdGF0ZUtleXMoY29uZmlnPzogeyBjb2xsZWN0aW9uPzogc3RyaW5nIH0pIHtcbiAgY29uc3QgcHJvcCA9IGNvbmZpZz8uY29sbGVjdGlvbjtcbiAgcmV0dXJuIHtcbiAgICBjYWxsU3RhdGVLZXk6IHByb3AgPyAgYCR7Y29uZmlnLmNvbGxlY3Rpb259Q2FsbFN0YXRlYCA6ICdjYWxsU3RhdGUnLFxuICAgIGxvYWRpbmdLZXk6IHByb3AgPyBgJHtjb25maWcuY29sbGVjdGlvbn1Mb2FkaW5nYCA6ICdsb2FkaW5nJyxcbiAgICBsb2FkZWRLZXk6IHByb3AgPyBgJHtjb25maWcuY29sbGVjdGlvbn1Mb2FkZWRgIDogJ2xvYWRlZCcsXG4gICAgZXJyb3JLZXk6IHByb3AgPyBgJHtjb25maWcuY29sbGVjdGlvbn1FcnJvcmAgOiAnZXJyb3InLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aENhbGxTdGF0ZTxDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nPihjb25maWc6IHtcbiAgY29sbGVjdGlvbjogQ29sbGVjdGlvbjtcbn0pOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gIHsgc3RhdGU6IEVtdHB5LCBzaWduYWxzOiBFbXRweSwgbWV0aG9kczogRW10cHkgfSxcbiAge1xuICAgIHN0YXRlOiBOYW1lZENhbGxTdGF0ZVNsaWNlPENvbGxlY3Rpb24+LFxuICAgIHNpZ25hbHM6IE5hbWVkQ2FsbFN0YXRlU2lnbmFsczxDb2xsZWN0aW9uPixcbiAgICBtZXRob2RzOiBFbXRweVxuICB9XG4+O1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhDYWxsU3RhdGUoKTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICB7IHN0YXRlOiBFbXRweSwgc2lnbmFsczogRW10cHksIG1ldGhvZHM6IEVtdHB5IH0sXG4gIHtcbiAgICBzdGF0ZTogQ2FsbFN0YXRlU2xpY2UsXG4gICAgc2lnbmFsczogQ2FsbFN0YXRlU2lnbmFscyxcbiAgICBtZXRob2RzOiBFbXRweVxuICB9XG4+O1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhDYWxsU3RhdGU8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4oY29uZmlnPzoge1xuICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uO1xufSk6IFNpZ25hbFN0b3JlRmVhdHVyZSB7XG4gIGNvbnN0IHsgY2FsbFN0YXRlS2V5LCBlcnJvcktleSwgbG9hZGVkS2V5LCBsb2FkaW5nS2V5IH0gPVxuICAgIGdldENhbGxTdGF0ZUtleXMoY29uZmlnKTtcblxuICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxuICAgIHdpdGhTdGF0ZSh7IFtjYWxsU3RhdGVLZXldOiAnaW5pdCcgfSksXG4gICAgd2l0aENvbXB1dGVkKChzdGF0ZTogUmVjb3JkPHN0cmluZywgU2lnbmFsPHVua25vd24+PikgPT4ge1xuXG4gICAgICBjb25zdCBjYWxsU3RhdGUgPSBzdGF0ZVtjYWxsU3RhdGVLZXldIGFzIFNpZ25hbDxDYWxsU3RhdGU+O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBbbG9hZGluZ0tleV06IGNvbXB1dGVkKCgpID0+IGNhbGxTdGF0ZSgpID09PSAnbG9hZGluZycpLFxuICAgICAgICBbbG9hZGVkS2V5XTogY29tcHV0ZWQoKCkgPT4gY2FsbFN0YXRlKCkgPT09ICdsb2FkZWQnKSxcbiAgICAgICAgW2Vycm9yS2V5XTogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHYgPSBjYWxsU3RhdGUoKTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIHYgPT09ICdvYmplY3QnID8gdi5lcnJvciA6IG51bGw7XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldExvYWRpbmc8UHJvcCBleHRlbmRzIHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4oXG4gIHByb3A/OiBQcm9wXG4pOiBTZXRDYWxsU3RhdGU8UHJvcD4ge1xuICBpZiAocHJvcCkge1xuICAgIHJldHVybiB7IFtgJHtwcm9wfUNhbGxTdGF0ZWBdOiAnbG9hZGluZycgfSBhcyBTZXRDYWxsU3RhdGU8UHJvcD47XG4gIH1cblxuICByZXR1cm4geyBjYWxsU3RhdGU6ICdsb2FkaW5nJyB9IGFzIFNldENhbGxTdGF0ZTxQcm9wPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldExvYWRlZDxQcm9wIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgcHJvcD86IFByb3Bcbik6IFNldENhbGxTdGF0ZTxQcm9wPiB7XG5cbiAgaWYgKHByb3ApIHtcbiAgICByZXR1cm4geyBbYCR7cHJvcH1DYWxsU3RhdGVgXTogJ2xvYWRlZCcgfSBhcyBTZXRDYWxsU3RhdGU8UHJvcD47XG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIHsgY2FsbFN0YXRlOiAnbG9hZGVkJyB9IGFzIFNldENhbGxTdGF0ZTxQcm9wPjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RXJyb3I8UHJvcCBleHRlbmRzIHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4oXG4gIGVycm9yOiB1bmtub3duLFxuICBwcm9wPzogUHJvcCxcbiAgKTogU2V0Q2FsbFN0YXRlPFByb3A+IHtcblxuICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJztcblxuICAgIGlmICghZXJyb3IpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9ICcnO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmICdtZXNzYWdlJyBpbiBlcnJvcikge1xuICAgICAgZXJyb3JNZXNzYWdlID0gU3RyaW5nKGVycm9yLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9IFN0cmluZyhlcnJvcik7XG4gICAgfVxuICAgIFxuXG4gICAgaWYgKHByb3ApIHtcbiAgICAgIHJldHVybiB7IFtgJHtwcm9wfUNhbGxTdGF0ZWBdOiB7IGVycm9yOiBlcnJvck1lc3NhZ2UgfSB9IGFzIFNldENhbGxTdGF0ZTxQcm9wPjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4geyBjYWxsU3RhdGU6IHsgZXJyb3I6IGVycm9yTWVzc2FnZSB9IH0gYXMgU2V0Q2FsbFN0YXRlPFByb3A+O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -72,8 +72,21 @@ export function withDevtools(name) {
|
|
|
72
72
|
return store;
|
|
73
73
|
};
|
|
74
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* @deprecated Has been renamed to `updateState`
|
|
77
|
+
*/
|
|
75
78
|
export const patchState = (state, action, ...rest) => {
|
|
79
|
+
updateState(state, action, ...rest);
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Wrapper of `patchState` for DevTools integration. Next to updating the state,
|
|
83
|
+
* it also sends the action to the DevTools.
|
|
84
|
+
* @param state state of Signal Store
|
|
85
|
+
* @param action name of action how it will show in DevTools
|
|
86
|
+
* @param updaters updater functions or objects
|
|
87
|
+
*/
|
|
88
|
+
export const updateState = (state, action, ...updaters) => {
|
|
76
89
|
currentActionNames.add(action);
|
|
77
|
-
return originalPatchState(state, ...
|
|
90
|
+
return originalPatchState(state, ...updaters);
|
|
78
91
|
};
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kZXZ0b29scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1kZXZ0b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxJQUFJLGtCQUFrQixHQUVqQyxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBaUJuRCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQWtDLEVBQUUsQ0FBQyxDQUFDO0FBRWxFLElBQUksa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztBQUUzQyxJQUFJLDBCQUEwQixHQUFHLEtBQUssQ0FBQztBQUV2QyxTQUFTLG1CQUFtQjtJQUMxQixNQUFNLENBQUMsR0FBRyxFQUFFO1FBQ1YsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLE9BQU87U0FDUjtRQUVELE1BQU0sTUFBTSxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBQy9CLE1BQU0sU0FBUyxHQUE0QixFQUFFLENBQUM7UUFDOUMsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLEVBQUU7WUFDekIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQztTQUMzQjtRQUVELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDOUQsa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUV2QyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxHQUFZLEVBQUUsTUFBYztJQUN0RCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRTtRQUNuRCxPQUFRLEdBQThCLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDaEQ7QUFDSCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsS0FBYztJQUNwQyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELElBQUksQ0FBQyxjQUFjLEVBQUU7UUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0tBQzdDO0lBRUQsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUtELElBQUksVUFBdUMsQ0FBQztBQUU1Qzs7R0FFRztBQUNILE1BQU0sVUFBVSxLQUFLO0lBQ25CLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDdkIsMEJBQTBCLEdBQUcsS0FBSyxDQUFDO0lBQ25DLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsSUFBWTtJQUVaLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNmLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksUUFBUSxFQUFFO1lBQ1osT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQztRQUN2RCxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztnQkFDOUIsSUFBSSxFQUFFLG1CQUFtQjthQUMxQixDQUFDLENBQUM7U0FDSjtRQUVELE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQy9CLEdBQUcsS0FBSztZQUNSLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVztTQUNwQixDQUFDLENBQUMsQ0FBQztRQUVKLElBQUksQ0FBQywwQkFBMEIsRUFBRTtZQUMvQixtQkFBbUIsRUFBRSxDQUFDO1lBQ3RCLDBCQUEwQixHQUFHLElBQUksQ0FBQztTQUNuQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQVNEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFO0lBQzVELFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLFFBQVEsRUFBRSxFQUFFO0lBQ2pFLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixPQUFPLGtCQUFrQixDQUFDLEtBQUssRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHBhdGNoU3RhdGUgYXMgb3JpZ2luYWxQYXRjaFN0YXRlLFxuICBTaWduYWxTdG9yZUZlYXR1cmUsXG59IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHsgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0IH0gZnJvbSAnQG5ncngvc2lnbmFscy9zcmMvc2lnbmFsLXN0b3JlLW1vZGVscyc7XG5pbXBvcnQgeyBlZmZlY3QsIGluamVjdCwgUExBVEZPUk1fSUQsIHNpZ25hbCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBfX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fOlxuICAgICAgfCB7XG4gICAgICAgICAgY29ubmVjdDogKG9wdGlvbnM6IHsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgIHNlbmQ6IChhY3Rpb246IEFjdGlvbiwgc3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIHwgdW5kZWZpbmVkO1xuICB9XG59XG5cbnR5cGUgRW1wdHlGZWF0dXJlUmVzdWx0ID0geyBzdGF0ZToge307IHNpZ25hbHM6IHt9OyBtZXRob2RzOiB7fSB9O1xuZXhwb3J0IHR5cGUgQWN0aW9uID0geyB0eXBlOiBzdHJpbmcgfTtcblxuY29uc3Qgc3RvcmVSZWdpc3RyeSA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBTaWduYWw8dW5rbm93bj4+Pih7fSk7XG5cbmxldCBjdXJyZW50QWN0aW9uTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxubGV0IHN5bmNocm9uaXphdGlvbkluaXRpYWxpemVkID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGluaXRTeW5jaHJvbml6YXRpb24oKSB7XG4gIGVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjb25uZWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RvcmVzID0gc3RvcmVSZWdpc3RyeSgpO1xuICAgIGNvbnN0IHJvb3RTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgaW4gc3RvcmVzKSB7XG4gICAgICBjb25zdCBzdG9yZSA9IHN0b3Jlc1tuYW1lXTtcbiAgICAgIHJvb3RTdGF0ZVtuYW1lXSA9IHN0b3JlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgbmFtZXMgPSBBcnJheS5mcm9tKGN1cnJlbnRBY3Rpb25OYW1lcyk7XG4gICAgY29uc3QgdHlwZSA9IG5hbWVzLmxlbmd0aCA/IG5hbWVzLmpvaW4oJywgJykgOiAnU3RvcmUgVXBkYXRlJztcbiAgICBjdXJyZW50QWN0aW9uTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGNvbm5lY3Rpb24uc2VuZCh7IHR5cGUgfSwgcm9vdFN0YXRlKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRnJvbVN5bWJvbChvYmo6IHVua25vd24sIHN5bWJvbDogc3ltYm9sKSB7XG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogJiYgc3ltYm9sIGluIG9iaikge1xuICAgIHJldHVybiAob2JqIGFzIHsgW2tleTogc3ltYm9sXTogYW55IH0pW3N5bWJvbF07XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U3RvcmVTaWduYWwoc3RvcmU6IHVua25vd24pOiBTaWduYWw8dW5rbm93bj4ge1xuICBjb25zdCBbc2lnbmFsU3RhdGVLZXldID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzdG9yZSk7XG4gIGlmICghc2lnbmFsU3RhdGVLZXkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIFN0YXRlIFNpZ25hbCcpO1xuICB9XG5cbiAgcmV0dXJuIGdldFZhbHVlRnJvbVN5bWJvbChzdG9yZSwgc2lnbmFsU3RhdGVLZXkpO1xufVxuXG50eXBlIENvbm5lY3RSZXNwb25zZSA9IHtcbiAgc2VuZDogKGFjdGlvbjogQWN0aW9uLCBzdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHZvaWQ7XG59O1xubGV0IGNvbm5lY3Rpb246IENvbm5lY3RSZXNwb25zZSB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiByZXF1aXJlZCBmb3IgdGVzdGluZy4gaXMgbm90IGV4cG9ydGVkIGR1cmluZyBidWlsZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXQoKSB7XG4gIGNvbm5lY3Rpb24gPSB1bmRlZmluZWQ7XG4gIHN5bmNocm9uaXphdGlvbkluaXRpYWxpemVkID0gZmFsc2U7XG4gIHN0b3JlUmVnaXN0cnkuc2V0KHt9KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gbmFtZSBzdG9yZSdzIG5hbWUgYXMgaXQgc2hvdWxkIGFwcGVhciBpbiB0aGUgRGV2VG9vbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhEZXZ0b29sczxJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4oXG4gIG5hbWU6IHN0cmluZ1xuKTogU2lnbmFsU3RvcmVGZWF0dXJlPElucHV0LCBFbXB0eUZlYXR1cmVSZXN1bHQ+IHtcbiAgcmV0dXJuIChzdG9yZSkgPT4ge1xuICAgIGNvbnN0IGlzU2VydmVyID0gaXNQbGF0Zm9ybVNlcnZlcihpbmplY3QoUExBVEZPUk1fSUQpKTtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybiBzdG9yZTtcbiAgICB9XG5cbiAgICBjb25zdCBleHRlbnNpb25zID0gd2luZG93Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX187XG4gICAgaWYgKCFleHRlbnNpb25zKSB7XG4gICAgICByZXR1cm4gc3RvcmU7XG4gICAgfVxuXG4gICAgaWYgKCFjb25uZWN0aW9uKSB7XG4gICAgICBjb25uZWN0aW9uID0gZXh0ZW5zaW9ucy5jb25uZWN0KHtcbiAgICAgICAgbmFtZTogJ05nUnggU2lnbmFsIFN0b3JlJyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHN0b3JlU2lnbmFsID0gZ2V0U3RvcmVTaWduYWwoc3RvcmUpO1xuICAgIHN0b3JlUmVnaXN0cnkudXBkYXRlKCh2YWx1ZSkgPT4gKHtcbiAgICAgIC4uLnZhbHVlLFxuICAgICAgW25hbWVdOiBzdG9yZVNpZ25hbCxcbiAgICB9KSk7XG5cbiAgICBpZiAoIXN5bmNocm9uaXphdGlvbkluaXRpYWxpemVkKSB7XG4gICAgICBpbml0U3luY2hyb25pemF0aW9uKCk7XG4gICAgICBzeW5jaHJvbml6YXRpb25Jbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0b3JlO1xuICB9O1xufVxuXG50eXBlIFBhdGNoRm4gPSB0eXBlb2Ygb3JpZ2luYWxQYXRjaFN0YXRlIGV4dGVuZHMgKFxuICBhcmcxOiBpbmZlciBGaXJzdCxcbiAgLi4uYXJnczogaW5mZXIgUmVzdFxuKSA9PiBpbmZlciBSZXR1cm5lclxuICA/IChzdGF0ZTogRmlyc3QsIGFjdGlvbjogc3RyaW5nLCAuLi5yZXN0OiBSZXN0KSA9PiBSZXR1cm5lclxuICA6IG5ldmVyO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIEhhcyBiZWVuIHJlbmFtZWQgdG8gYHVwZGF0ZVN0YXRlYFxuICovXG5leHBvcnQgY29uc3QgcGF0Y2hTdGF0ZTogUGF0Y2hGbiA9IChzdGF0ZSwgYWN0aW9uLCAuLi5yZXN0KSA9PiB7XG4gIHVwZGF0ZVN0YXRlKHN0YXRlLCBhY3Rpb24sIC4uLnJlc3QpO1xufTtcblxuLyoqXG4gKiBXcmFwcGVyIG9mIGBwYXRjaFN0YXRlYCBmb3IgRGV2VG9vbHMgaW50ZWdyYXRpb24uIE5leHQgdG8gdXBkYXRpbmcgdGhlIHN0YXRlLFxuICogaXQgYWxzbyBzZW5kcyB0aGUgYWN0aW9uIHRvIHRoZSBEZXZUb29scy5cbiAqIEBwYXJhbSBzdGF0ZSBzdGF0ZSBvZiBTaWduYWwgU3RvcmVcbiAqIEBwYXJhbSBhY3Rpb24gbmFtZSBvZiBhY3Rpb24gaG93IGl0IHdpbGwgc2hvdyBpbiBEZXZUb29sc1xuICogQHBhcmFtIHVwZGF0ZXJzIHVwZGF0ZXIgZnVuY3Rpb25zIG9yIG9iamVjdHNcbiAqL1xuZXhwb3J0IGNvbnN0IHVwZGF0ZVN0YXRlOiBQYXRjaEZuID0gKHN0YXRlLCBhY3Rpb24sIC4uLnVwZGF0ZXJzKSA9PiB7XG4gIGN1cnJlbnRBY3Rpb25OYW1lcy5hZGQoYWN0aW9uKTtcbiAgcmV0dXJuIG9yaWdpbmFsUGF0Y2hTdGF0ZShzdGF0ZSwgLi4udXBkYXRlcnMpO1xufTtcbiJdfQ==
|
|
@@ -13,9 +13,11 @@ function createActionFns(actionFnSpecs, reducerRegistry, effectsRegistry, state)
|
|
|
13
13
|
if (reducer) {
|
|
14
14
|
reducer(state, fullPayload);
|
|
15
15
|
}
|
|
16
|
-
const
|
|
17
|
-
if (
|
|
18
|
-
effectSubject
|
|
16
|
+
const effectSubjects = effectsRegistry[type];
|
|
17
|
+
if (effectSubjects?.length) {
|
|
18
|
+
for (const effectSubject of effectSubjects) {
|
|
19
|
+
effectSubject.next(fullPayload);
|
|
20
|
+
}
|
|
19
21
|
}
|
|
20
22
|
return fullPayload;
|
|
21
23
|
};
|
|
@@ -50,7 +52,10 @@ function fillReducerRegistry(reducer, actionFns, reducerRegistry) {
|
|
|
50
52
|
function fillEffects(effects, actionFns, effectsRegistry = {}) {
|
|
51
53
|
function create(action) {
|
|
52
54
|
const subject = new Subject();
|
|
53
|
-
|
|
55
|
+
if (!(action.type in effectsRegistry)) {
|
|
56
|
+
effectsRegistry[action.type] = [];
|
|
57
|
+
}
|
|
58
|
+
effectsRegistry[action.type].push(subject);
|
|
54
59
|
return subject.asObservable();
|
|
55
60
|
}
|
|
56
61
|
const effectObservables = effects(actionFns, create);
|
|
@@ -85,11 +90,11 @@ function processRedux(actionFnSpecs, reducer, effects, store) {
|
|
|
85
90
|
*/
|
|
86
91
|
export function withRedux(redux) {
|
|
87
92
|
return (store) => {
|
|
88
|
-
const { methods
|
|
93
|
+
const { methods } = processRedux(redux.actions, redux.reducer, redux.effects, store);
|
|
89
94
|
return {
|
|
90
95
|
...store,
|
|
91
96
|
methods,
|
|
92
97
|
};
|
|
93
98
|
};
|
|
94
99
|
}
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZWR1eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1yZWR1eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBd0M5RCxNQUFNLFVBQVUsT0FBTztJQUNyQixPQUFPLEVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztBQTBCNUIsU0FBUyxlQUFlLENBQ3RCLGFBQW1CLEVBQ25CLGVBR0MsRUFDRCxlQUFrRSxFQUNsRSxLQUFjO0lBRWQsTUFBTSxTQUFTLEdBQTZCLEVBQUUsQ0FBQztJQUUvQyxLQUFLLE1BQU0sSUFBSSxJQUFJLGFBQWEsRUFBRTtRQUNoQyxNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUNwQyxNQUFNLFdBQVcsR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QyxJQUFJLE9BQU8sRUFBRTtnQkFDVixPQUFzRCxDQUNyRCxLQUFLLEVBQ0wsV0FBc0IsQ0FDdkIsQ0FBQzthQUNIO1lBQ0QsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVDLElBQUksYUFBYSxFQUFFO2dCQUNoQixhQUE2QyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNsRTtZQUNELE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQUNGLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxR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QU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDM0UsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUU1RCxPQUFPO1FBQ0wsT0FBTyxFQUFFLGdCQUE4QjtRQUN2QyxhQUFhLEVBQUUsYUFBYTtLQUM3QixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxTQUFTLENBS3ZCLEtBSUQ7SUFJQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDZixNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLFlBQVksQ0FDN0MsS0FBSyxDQUFDLE9BQU8sRUFDYixLQUFLLENBQUMsT0FBNkMsRUFDbkQsS0FBSyxDQUFDLE9BQW9DLEVBQzFDLEtBQUssQ0FDTixDQUFDO1FBQ0YsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLE9BQU87U0FDUixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNpZ25hbFN0b3JlRmVhdHVyZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHtcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG59IGZyb20gJ0BuZ3J4L3NpZ25hbHMvc3JjL3NpZ25hbC1zdG9yZS1tb2RlbHMnO1xuaW1wb3J0IHsgU3RhdGVTaWduYWwgfSBmcm9tICdAbmdyeC9zaWduYWxzL3NyYy9zdGF0ZS1zaWduYWwnO1xuaW1wb3J0IHsgYXNzZXJ0QWN0aW9uRm5TcGVjcyB9IGZyb20gJy4vYXNzZXJ0aW9ucy9hc3NlcnRpb25zJztcblxuLyoqIEFjdGlvbnMgKiovXG5cbnR5cGUgUGF5bG9hZCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG50eXBlIEFjdGlvbkZuPFxuICBUeXBlIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLFxuICBBY3Rpb25QYXlsb2FkIGV4dGVuZHMgUGF5bG9hZCA9IFBheWxvYWRcbj4gPSAoKHBheWxvYWQ6IEFjdGlvblBheWxvYWQpID0+IEFjdGlvblBheWxvYWQgJiB7IHR5cGU6IFR5cGUgfSkgJiB7XG4gIHR5cGU6IFR5cGU7XG59O1xuXG50eXBlIEFjdGlvbkZucyA9IFJlY29yZDxzdHJpbmcsIEFjdGlvbkZuPjtcblxuZXhwb3J0IHR5cGUgQWN0aW9uc0ZuU3BlY3MgPSBSZWNvcmQ8c3RyaW5nLCBQYXlsb2FkPjtcblxudHlwZSBBY3Rpb25GbkNyZWF0b3I8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPiA9IHtcbiAgW0FjdGlvbk5hbWUgaW4ga2V5b2YgU3BlY106ICgoXG4gICAgcGF5bG9hZDogU3BlY1tBY3Rpb25OYW1lXVxuICApID0+IFNwZWNbQWN0aW9uTmFtZV0gJiB7IHR5cGU6IEFjdGlvbk5hbWUgfSkgJiB7IHR5cGU6IEFjdGlvbk5hbWUgJiBzdHJpbmcgfTtcbn07XG5cbnR5cGUgQWN0aW9uRm5QYXlsb2FkPEFjdGlvbj4gPSBBY3Rpb24gZXh0ZW5kcyAocGF5bG9hZDogaW5mZXIgUGF5bG9hZCkgPT4gdm9pZFxuICA/IFBheWxvYWRcbiAgOiBuZXZlcjtcblxudHlwZSBBY3Rpb25GbnNDcmVhdG9yPFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcz4gPSBTcGVjIGV4dGVuZHMge1xuICBwcml2YXRlOiBSZWNvcmQ8c3RyaW5nLCBQYXlsb2FkPjtcbiAgcHVibGljOiBSZWNvcmQ8c3RyaW5nLCBQYXlsb2FkPjtcbn1cbiAgPyBBY3Rpb25GbkNyZWF0b3I8U3BlY1sncHJpdmF0ZSddPiAmIEFjdGlvbkZuQ3JlYXRvcjxTcGVjWydwdWJsaWMnXT5cbiAgOiBBY3Rpb25GbkNyZWF0b3I8U3BlYz47XG5cbnR5cGUgUHVibGljQWN0aW9uRm5zPFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcz4gPSBTcGVjIGV4dGVuZHMge1xuICBwdWJsaWM6IFJlY29yZDxzdHJpbmcsIFBheWxvYWQ+O1xufVxuICA/IEFjdGlvbkZuQ3JlYXRvcjxTcGVjWydwdWJsaWMnXT5cbiAgOiBBY3Rpb25GbkNyZWF0b3I8U3BlYz47XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXlsb2FkPFR5cGUgZXh0ZW5kcyBQYXlsb2FkPigpOiBUeXBlIHtcbiAgcmV0dXJuIHt9IGFzIFR5cGU7XG59XG5cbmV4cG9ydCBjb25zdCBub1BheWxvYWQgPSB7fTtcblxuLyoqIFJlZHVjZXIgKiovXG5cbnR5cGUgUmVkdWNlckZ1bmN0aW9uPFJlZHVjZXJBY3Rpb24sIFN0YXRlPiA9IChcbiAgc3RhdGU6IFN0YXRlLFxuICBhY3Rpb246IEFjdGlvbkZuUGF5bG9hZDxSZWR1Y2VyQWN0aW9uPlxuKSA9PiB2b2lkO1xuXG50eXBlIFJlZHVjZXJGYWN0b3J5PFN0YXRlQWN0aW9uRm5zIGV4dGVuZHMgQWN0aW9uRm5zLCBTdGF0ZT4gPSAoXG4gIGFjdGlvbnM6IFN0YXRlQWN0aW9uRm5zLFxuICBvbjogPFJlZHVjZXJBY3Rpb24gZXh0ZW5kcyB7IHR5cGU6IHN0cmluZyB9PihcbiAgICBhY3Rpb246IFJlZHVjZXJBY3Rpb24sXG4gICAgcmVkdWNlckZuOiBSZWR1Y2VyRnVuY3Rpb248UmVkdWNlckFjdGlvbiwgU3RhdGU+XG4gICkgPT4gdm9pZFxuKSA9PiB2b2lkO1xuXG4vKiogRWZmZWN0ICoqL1xuXG50eXBlIEVmZmVjdHNGYWN0b3J5PFN0YXRlQWN0aW9uRm5zIGV4dGVuZHMgQWN0aW9uRm5zPiA9IChcbiAgYWN0aW9uczogU3RhdGVBY3Rpb25GbnMsXG4gIGNyZWF0ZTogPEVmZmVjdEFjdGlvbiBleHRlbmRzIHsgdHlwZTogc3RyaW5nIH0+KFxuICAgIGFjdGlvbjogRWZmZWN0QWN0aW9uXG4gICkgPT4gT2JzZXJ2YWJsZTxBY3Rpb25GblBheWxvYWQ8RWZmZWN0QWN0aW9uPj5cbikgPT4gUmVjb3JkPHN0cmluZywgT2JzZXJ2YWJsZTx1bmtub3duPj47XG5cbmZ1bmN0aW9uIGNyZWF0ZUFjdGlvbkZuczxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3M+KFxuICBhY3Rpb25GblNwZWNzOiBTcGVjLFxuICByZWR1Y2VyUmVnaXN0cnk6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgKHN0YXRlOiB1bmtub3duLCBwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4pID0+IHZvaWRcbiAgPixcbiAgZWZmZWN0c1JlZ2lzdHJ5OiBSZWNvcmQ8c3RyaW5nLCBTdWJqZWN0PEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPj4+LFxuICBzdGF0ZTogdW5rbm93blxuKSB7XG4gIGNvbnN0IGFjdGlvbkZuczogUmVjb3JkPHN0cmluZywgQWN0aW9uRm4+ID0ge307XG5cbiAgZm9yIChjb25zdCB0eXBlIGluIGFjdGlvbkZuU3BlY3MpIHtcbiAgICBjb25zdCBhY3Rpb25GbiA9IChwYXlsb2FkOiBQYXlsb2FkKSA9PiB7XG4gICAgICBjb25zdCBmdWxsUGF5bG9hZCA9IHsgLi4ucGF5bG9hZCwgdHlwZSB9O1xuICAgICAgY29uc3QgcmVkdWNlciA9IHJlZHVjZXJSZWdpc3RyeVt0eXBlXTtcbiAgICAgIGlmIChyZWR1Y2VyKSB7XG4gICAgICAgIChyZWR1Y2VyIGFzIChzdGF0ZTogdW5rbm93biwgcGF5bG9hZDogdW5rbm93bikgPT4gdm9pZCkoXG4gICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgZnVsbFBheWxvYWQgYXMgdW5rbm93blxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgZWZmZWN0U3ViamVjdCA9IGVmZmVjdHNSZWdpc3RyeVt0eXBlXTtcbiAgICAgIGlmIChlZmZlY3RTdWJqZWN0KSB7XG4gICAgICAgIChlZmZlY3RTdWJqZWN0IGFzIHVua25vd24gYXMgU3ViamVjdDx1bmtub3duPikubmV4dChmdWxsUGF5bG9hZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVsbFBheWxvYWQ7XG4gICAgfTtcbiAgICBhY3Rpb25Gbi50eXBlID0gdHlwZS50b1N0cmluZygpO1xuICAgIGFjdGlvbkZuc1t0eXBlXSA9IGFjdGlvbkZuO1xuICB9XG5cbiAgcmV0dXJuIGFjdGlvbkZucztcbn1cblxuZnVuY3Rpb24gY3JlYXRlUHVibGljQW5kQWxsQWN0aW9uc0ZuczxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3M+KFxuICBhY3Rpb25GblNwZWNzOiBTcGVjLFxuICByZWR1Y2VyUmVnaXN0cnk6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgKHN0YXRlOiB1bmtub3duLCBwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4pID0+IHZvaWRcbiAgPixcbiAgZWZmZWN0c1JlZ2lzdHJ5OiBSZWNvcmQ8c3RyaW5nLCBTdWJqZWN0PEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPj4+LFxuICBzdGF0ZTogdW5rbm93blxuKTogeyBhbGw6IEFjdGlvbkZuczsgcHVibGljczogQWN0aW9uRm5zIH0ge1xuICBpZiAoJ3B1YmxpYycgaW4gYWN0aW9uRm5TcGVjcyB8fCAncHJpdmF0ZScgaW4gYWN0aW9uRm5TcGVjcykge1xuICAgIGNvbnN0IHByaXZhdGVzID0gYWN0aW9uRm5TcGVjc1sncHJpdmF0ZSddIHx8IHt9O1xuICAgIGNvbnN0IHB1YmxpY3MgPSBhY3Rpb25GblNwZWNzWydwdWJsaWMnXSB8fCB7fTtcblxuICAgIGFzc2VydEFjdGlvbkZuU3BlY3MocHJpdmF0ZXMpO1xuICAgIGFzc2VydEFjdGlvbkZuU3BlY3MocHVibGljcyk7XG5cbiAgICBjb25zdCBwcml2YXRlQWN0aW9uRm5zID0gY3JlYXRlQWN0aW9uRm5zKFxuICAgICAgcHJpdmF0ZXMsXG4gICAgICByZWR1Y2VyUmVnaXN0cnksXG4gICAgICBlZmZlY3RzUmVnaXN0cnksXG4gICAgICBzdGF0ZVxuICAgICk7XG4gICAgY29uc3QgcHVibGljQWN0aW9uRm5zID0gY3JlYXRlQWN0aW9uRm5zKFxuICAgICAgcHVibGljcyxcbiAgICAgIHJlZHVjZXJSZWdpc3RyeSxcbiAgICAgIGVmZmVjdHNSZWdpc3RyeSxcbiAgICAgIHN0YXRlXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBhbGw6IHsgLi4ucHJpdmF0ZUFjdGlvbkZucywgLi4ucHVibGljQWN0aW9uRm5zIH0sXG4gICAgICBwdWJsaWNzOiBwdWJsaWNBY3Rpb25GbnMsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGFjdGlvbkZucyA9IGNyZWF0ZUFjdGlvbkZucyhcbiAgICBhY3Rpb25GblNwZWNzLFxuICAgIHJlZHVjZXJSZWdpc3RyeSxcbiAgICBlZmZlY3RzUmVnaXN0cnksXG4gICAgc3RhdGVcbiAgKTtcblxuICByZXR1cm4geyBhbGw6IGFjdGlvbkZucywgcHVibGljczogYWN0aW9uRm5zIH07XG59XG5cbmZ1bmN0aW9uIGZpbGxSZWR1Y2VyUmVnaXN0cnkoXG4gIHJlZHVjZXI6IFJlZHVjZXJGYWN0b3J5PEFjdGlvbkZucywgdW5rbm93bj4sXG4gIGFjdGlvbkZuczogQWN0aW9uRm5zLFxuICByZWR1Y2VyUmVnaXN0cnk6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgKHN0YXRlOiB1bmtub3duLCBwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4pID0+IHZvaWRcbiAgPlxuKSB7XG4gIGZ1bmN0aW9uIG9uKFxuICAgIGFjdGlvbjogeyB0eXBlOiBzdHJpbmcgfSxcbiAgICByZWR1Y2VyRm46IChzdGF0ZTogdW5rbm93biwgcGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+KSA9PiB2b2lkXG4gICkge1xuICAgIHJlZHVjZXJSZWdpc3RyeVthY3Rpb24udHlwZV0gPSByZWR1Y2VyRm47XG4gIH1cblxuICByZWR1Y2VyKGFjdGlvbkZucywgb24pO1xuXG4gIHJldHVybiByZWR1Y2VyUmVnaXN0cnk7XG59XG5cbmZ1bmN0aW9uIGZpbGxFZmZlY3RzKFxuICBlZmZlY3RzOiBFZmZlY3RzRmFjdG9yeTxBY3Rpb25GbnM+LFxuICBhY3Rpb25GbnM6IEFjdGlvbkZucyxcbiAgZWZmZWN0c1JlZ2lzdHJ5OiBSZWNvcmQ8c3RyaW5nLCBTdWJqZWN0PEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPj4+ID0ge31cbik6IE9ic2VydmFibGU8dW5rbm93bj5bXSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZShhY3Rpb246IHsgdHlwZTogc3RyaW5nIH0pIHtcbiAgICBjb25zdCBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8QWN0aW9uRm5QYXlsb2FkPHVua25vd24+PigpO1xuICAgIGVmZmVjdHNSZWdpc3RyeVthY3Rpb24udHlwZV0gPSBzdWJqZWN0O1xuICAgIHJldHVybiBzdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgY29uc3QgZWZmZWN0T2JzZXJ2YWJsZXMgPSBlZmZlY3RzKGFjdGlvbkZucywgY3JlYXRlKTtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZWZmZWN0T2JzZXJ2YWJsZXMpO1xufVxuXG5mdW5jdGlvbiBzdGFydFN1YnNjcmlwdGlvbnMob2JzZXJ2YWJsZXM6IE9ic2VydmFibGU8dW5rbm93bj5bXSkge1xuICByZXR1cm4gb2JzZXJ2YWJsZXMubWFwKChvYnNlcnZhYmxlKSA9PiBvYnNlcnZhYmxlLnN1YnNjcmliZSgpKTtcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1JlZHV4PFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcywgUmV0dXJuVHlwZT4oXG4gIGFjdGlvbkZuU3BlY3M6IFNwZWMsXG4gIHJlZHVjZXI6IFJlZHVjZXJGYWN0b3J5PEFjdGlvbkZucywgdW5rbm93bj4sXG4gIGVmZmVjdHM6IEVmZmVjdHNGYWN0b3J5PEFjdGlvbkZucz4sXG4gIHN0b3JlOiB1bmtub3duXG4pIHtcbiAgY29uc3QgcmVkdWNlclJlZ2lzdHJ5OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIChzdGF0ZTogdW5rbm93biwgcGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+KSA9PiB2b2lkXG4gID4gPSB7fTtcbiAgY29uc3QgZWZmZWN0c1JlZ2lzdHJ5OiBSZWNvcmQ8c3RyaW5nLCBTdWJqZWN0PEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPj4+ID0ge307XG4gIGNvbnN0IGFjdGlvbnNNYXAgPSBjcmVhdGVQdWJsaWNBbmRBbGxBY3Rpb25zRm5zKFxuICAgIGFjdGlvbkZuU3BlY3MsXG4gICAgcmVkdWNlclJlZ2lzdHJ5LFxuICAgIGVmZmVjdHNSZWdpc3RyeSxcbiAgICBzdG9yZVxuICApO1xuICBjb25zdCBhY3Rpb25GbnMgPSBhY3Rpb25zTWFwLmFsbDtcbiAgY29uc3QgcHVibGljQWN0aW9uc0ZucyA9IGFjdGlvbnNNYXAucHVibGljcztcblxuICBmaWxsUmVkdWNlclJlZ2lzdHJ5KHJlZHVjZXIsIGFjdGlvbkZucywgcmVkdWNlclJlZ2lzdHJ5KTtcbiAgY29uc3QgZWZmZWN0T2JzZXJ2YWJsZXMgPSBmaWxsRWZmZWN0cyhlZmZlY3RzLCBhY3Rpb25GbnMsIGVmZmVjdHNSZWdpc3RyeSk7XG4gIGNvbnN0IHN1YnNjcmlwdGlvbnMgPSBzdGFydFN1YnNjcmlwdGlvbnMoZWZmZWN0T2JzZXJ2YWJsZXMpO1xuXG4gIHJldHVybiB7XG4gICAgbWV0aG9kczogcHVibGljQWN0aW9uc0ZucyBhcyBSZXR1cm5UeXBlLFxuICAgIHN1YnNjcmlwdGlvbnM6IHN1YnNjcmlwdGlvbnMsXG4gIH07XG59XG5cbi8qKlxuICogQHBhcmFtIHJlZHV4IHJlZHV4XG4gKlxuICogcHJvcGVydGllcyBkbyBub3Qgc3RhcnQgd2l0aCBgd2l0aGAgc2luY2UgdGhleSBhcmUgbm90IGV4dGVuc2lvbiBmdW5jdGlvbnMgb24gdGhlaXIgb3duLlxuICpcbiAqIG5vIGRlcGVuZGVuY3kgdG8gTmdSeFxuICpcbiAqIGFjdGlvbnMgYXJlIHBhc3NlZCB0byByZWR1Y2VyIGFuZCBlZmZlY3RzLCBidXQgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1c2Ugb3RoZXIgYWN0aW9ucy5cbiAqIGVmZmVjdHMgcHJvdmlkZSBmb3JBY3Rpb24gYW5kIGRvIG5vdCByZXR1cm4gYW55dGhpbmcuIHRoYXQgaXMgaW1wb3J0YW50IGJlY2F1c2UgZWZmZWN0cyBzaG91bGQgc3RheSBpbmFjY2Vzc2libGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhSZWR1eDxcbiAgU3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzLFxuICBJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgU3RhdGVBY3Rpb25GbnMgZXh0ZW5kcyBBY3Rpb25GbnNDcmVhdG9yPFNwZWM+ID0gQWN0aW9uRm5zQ3JlYXRvcjxTcGVjPixcbiAgUHVibGljU3RvcmVBY3Rpb25GbnMgZXh0ZW5kcyBQdWJsaWNBY3Rpb25GbnM8U3BlYz4gPSBQdWJsaWNBY3Rpb25GbnM8U3BlYz5cbj4ocmVkdXg6IHtcbiAgYWN0aW9uczogU3BlYztcbiAgcmVkdWNlcjogUmVkdWNlckZhY3Rvcnk8U3RhdGVBY3Rpb25GbnMsIFN0YXRlU2lnbmFsPElucHV0WydzdGF0ZSddPj47XG4gIGVmZmVjdHM6IEVmZmVjdHNGYWN0b3J5PFN0YXRlQWN0aW9uRm5zPjtcbn0pOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gIElucHV0LFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7IG1ldGhvZHM6IFB1YmxpY1N0b3JlQWN0aW9uRm5zIH1cbj4ge1xuICByZXR1cm4gKHN0b3JlKSA9PiB7XG4gICAgY29uc3QgeyBtZXRob2RzLCBzdWJzY3JpcHRpb25zIH0gPSBwcm9jZXNzUmVkdXg8U3BlYywgUHVibGljU3RvcmVBY3Rpb25GbnM+KFxuICAgICAgcmVkdXguYWN0aW9ucyxcbiAgICAgIHJlZHV4LnJlZHVjZXIgYXMgUmVkdWNlckZhY3Rvcnk8QWN0aW9uRm5zLCB1bmtub3duPixcbiAgICAgIHJlZHV4LmVmZmVjdHMgYXMgRWZmZWN0c0ZhY3Rvcnk8QWN0aW9uRm5zPixcbiAgICAgIHN0b3JlXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RvcmUsXG4gICAgICBtZXRob2RzLFxuICAgIH07XG4gIH07XG59XG4iXX0=
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZWR1eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1yZWR1eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBNEM5RCxNQUFNLFVBQVUsT0FBTztJQUNyQixPQUFPLEVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztBQW1DNUIsU0FBUyxlQUFlLENBQ3RCLGFBQW1CLEVBQ25CLGVBR0MsRUFDRCxlQUFnQyxFQUNoQyxLQUFjO0lBRWQsTUFBTSxTQUFTLEdBQTZCLEVBQUUsQ0FBQztJQUUvQyxLQUFLLE1BQU0sSUFBSSxJQUFJLGFBQWEsRUFBRTtRQUNoQyxNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUNwQyxNQUFNLFdBQVcsR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QyxJQUFJLE9BQU8sRUFBRTtnQkFDVixPQUFzRCxDQUNyRCxLQUFLLEVBQ0wsV0FBc0IsQ0FDdkIsQ0FBQzthQUNIO1lBQ0QsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLElBQUksY0FBYyxFQUFFLE1BQU0sRUFBRTtnQkFDMUIsS0FBSyxNQUFNLGFBQWEsSUFBSSxjQUFjLEVBQUU7b0JBQ3pDLGFBQTZDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUNsRTthQUNGO1lBQ0QsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQyxDQUFDO1FBQ0YsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQztLQUM1QjtJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTLDRCQUE0QixDQUNuQyxhQUFtQixFQUNuQixlQUdDLEVBQ0QsZUFBZ0MsRUFDaEMsS0FBYztJQUVkLElBQUksUUFBUSxJQUFJLGFBQWEsSUFBSSxTQUFTLElBQUksYUFBYSxFQUFFO1FBQzNELE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEQsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU5QyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU3QixNQUFNLGdCQUFnQixHQUFHLGVBQWUsQ0FDdEMsUUFBUSxFQUNSLGVBQWUsRUFDZixlQUFlLEVBQ2YsS0FBSyxDQUNOLENBQUM7UUFDRixNQUFNLGVBQWUsR0FBRyxlQUFlLENBQ3JDLE9BQU8sRUFDUCxlQUFlLEVBQ2YsZUFBZSxFQUNmLEtBQUssQ0FDTixDQUFDO1FBRUYsT0FBTztZQUNMLEdBQUcsRUFBRSxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxlQUFlLEVBQUU7WUFDaEQsT0FBTyxFQUFFLGVBQWU7U0FDekIsQ0FBQztLQUNIO0lBRUQsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUMvQixhQUFhLEVBQ2IsZUFBZSxFQUNmLGVBQWUsRUFDZixLQUFLLENBQ04sQ0FBQztJQUVGLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUNoRCxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FDMUIsT0FBMkMsRUFDM0MsU0FBb0IsRUFDcEIsZUFHQztJQUVELFNBQVMsRUFBRSxDQUNULE1BQXdCLEVBQ3hCLFNBQXNFO1FBRXRFLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQzNDLENBQUM7SUFFRCxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRXZCLE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FDbEIsT0FBa0MsRUFDbEMsU0FBb0IsRUFDcEIsa0JBQW1DLEVBQUU7SUFFckMsU0FBUyxNQUFNLENBQUMsTUFBd0I7UUFDdEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQTRCLENBQUM7UUFDeEQsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxlQUFlLENBQUMsRUFBRTtZQUNyQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUNuQztRQUNELGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLE9BQU8sT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsV0FBa0M7SUFDNUQsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQ25CLGFBQW1CLEVBQ25CLE9BQTJDLEVBQzNDLE9BQWtDLEVBQ2xDLEtBQWM7SUFFZCxNQUFNLGVBQWUsR0FHakIsRUFBRSxDQUFDO0lBQ1AsTUFBTSxlQUFlLEdBQ25CLEVBQUUsQ0FBQztJQUNMLE1BQU0sVUFBVSxHQUFHLDRCQUE0QixDQUM3QyxhQUFhLEVBQ2IsZUFBZSxFQUNmLGVBQWUsRUFDZixLQUFLLENBQ04sQ0FBQztJQUNGLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDakMsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO0lBRTVDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDekQsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUMzRSxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTVELE9BQU87UUFDTCxPQUFPLEVBQUUsZ0JBQThCO1FBQ3ZDLGFBQWEsRUFBRSxhQUFhO0tBQzdCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FLdkIsS0FJRDtJQUlDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNmLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxZQUFZLENBQzlCLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLE9BQTZDLEVBQ25ELEtBQUssQ0FBQyxPQUFvQyxFQUMxQyxLQUFLLENBQ04sQ0FBQztRQUNGLE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTaWduYWxTdG9yZUZlYXR1cmUgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7XG4gIEVtcHR5RmVhdHVyZVJlc3VsdCxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxufSBmcm9tICdAbmdyeC9zaWduYWxzL3NyYy9zaWduYWwtc3RvcmUtbW9kZWxzJztcbmltcG9ydCB7IFN0YXRlU2lnbmFsIH0gZnJvbSAnQG5ncngvc2lnbmFscy9zcmMvc3RhdGUtc2lnbmFsJztcbmltcG9ydCB7IGFzc2VydEFjdGlvbkZuU3BlY3MgfSBmcm9tICcuL2Fzc2VydGlvbnMvYXNzZXJ0aW9ucyc7XG5cbi8qKiBBY3Rpb25zICoqL1xuXG50eXBlIFBheWxvYWQgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxudHlwZSBBY3Rpb25GbjxcbiAgVHlwZSBleHRlbmRzIHN0cmluZyA9IHN0cmluZyxcbiAgQWN0aW9uUGF5bG9hZCBleHRlbmRzIFBheWxvYWQgPSBQYXlsb2FkLFxuPiA9ICgocGF5bG9hZDogQWN0aW9uUGF5bG9hZCkgPT4gQWN0aW9uUGF5bG9hZCAmIHsgdHlwZTogVHlwZSB9KSAmIHtcbiAgdHlwZTogVHlwZTtcbn07XG5cbnR5cGUgQWN0aW9uRm5zID0gUmVjb3JkPHN0cmluZywgQWN0aW9uRm4+O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25zRm5TcGVjcyA9IFJlY29yZDxzdHJpbmcsIFBheWxvYWQ+O1xuXG50eXBlIEFjdGlvbkZuQ3JlYXRvcjxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3M+ID0ge1xuICBbQWN0aW9uTmFtZSBpbiBrZXlvZiBTcGVjXTogKFJlY29yZDxuZXZlciwgbmV2ZXI+IGV4dGVuZHMgU3BlY1tBY3Rpb25OYW1lXVxuICAgID8gKCkgPT4gU3BlY1tBY3Rpb25OYW1lXSAmIHsgdHlwZTogQWN0aW9uTmFtZSB9XG4gICAgOiAoXG4gICAgICAgIHBheWxvYWQ6IFNwZWNbQWN0aW9uTmFtZV0sXG4gICAgICApID0+IFNwZWNbQWN0aW9uTmFtZV0gJiB7IHR5cGU6IEFjdGlvbk5hbWUgfSkgJiB7XG4gICAgdHlwZTogQWN0aW9uTmFtZSAmIHN0cmluZztcbiAgfTtcbn07XG5cbnR5cGUgQWN0aW9uRm5QYXlsb2FkPEFjdGlvbj4gPSBBY3Rpb24gZXh0ZW5kcyAocGF5bG9hZDogaW5mZXIgUGF5bG9hZCkgPT4gdm9pZFxuICA/IFBheWxvYWRcbiAgOiBuZXZlcjtcblxudHlwZSBBY3Rpb25GbnNDcmVhdG9yPFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcz4gPSBTcGVjIGV4dGVuZHMge1xuICBwcml2YXRlOiBSZWNvcmQ8c3RyaW5nLCBQYXlsb2FkPjtcbiAgcHVibGljOiBSZWNvcmQ8c3RyaW5nLCBQYXlsb2FkPjtcbn1cbiAgPyBBY3Rpb25GbkNyZWF0b3I8U3BlY1sncHJpdmF0ZSddPiAmIEFjdGlvbkZuQ3JlYXRvcjxTcGVjWydwdWJsaWMnXT5cbiAgOiBBY3Rpb25GbkNyZWF0b3I8U3BlYz47XG5cbnR5cGUgUHVibGljQWN0aW9uRm5zPFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcz4gPSBTcGVjIGV4dGVuZHMge1xuICBwdWJsaWM6IFJlY29yZDxzdHJpbmcsIFBheWxvYWQ+O1xufVxuICA/IEFjdGlvbkZuQ3JlYXRvcjxTcGVjWydwdWJsaWMnXT5cbiAgOiBBY3Rpb25GbkNyZWF0b3I8U3BlYz47XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXlsb2FkPFR5cGUgZXh0ZW5kcyBQYXlsb2FkPigpOiBUeXBlIHtcbiAgcmV0dXJuIHt9IGFzIFR5cGU7XG59XG5cbmV4cG9ydCBjb25zdCBub1BheWxvYWQgPSB7fTtcblxuLyoqIFJlZHVjZXIgKiovXG5cbnR5cGUgUmVkdWNlckZ1bmN0aW9uPFJlZHVjZXJBY3Rpb24sIFN0YXRlPiA9IChcbiAgc3RhdGU6IFN0YXRlLFxuICBhY3Rpb246IEFjdGlvbkZuUGF5bG9hZDxSZWR1Y2VyQWN0aW9uPixcbikgPT4gdm9pZDtcblxudHlwZSBSZWR1Y2VyRmFjdG9yeTxTdGF0ZUFjdGlvbkZucyBleHRlbmRzIEFjdGlvbkZucywgU3RhdGU+ID0gKFxuICBhY3Rpb25zOiBTdGF0ZUFjdGlvbkZucyxcbiAgb246IDxSZWR1Y2VyQWN0aW9uIGV4dGVuZHMgeyB0eXBlOiBzdHJpbmcgfT4oXG4gICAgYWN0aW9uOiBSZWR1Y2VyQWN0aW9uLFxuICAgIHJlZHVjZXJGbjogUmVkdWNlckZ1bmN0aW9uPFJlZHVjZXJBY3Rpb24sIFN0YXRlPixcbiAgKSA9PiB2b2lkLFxuKSA9PiB2b2lkO1xuXG4vKiogRWZmZWN0ICoqL1xuXG50eXBlIEVmZmVjdHNGYWN0b3J5PFN0YXRlQWN0aW9uRm5zIGV4dGVuZHMgQWN0aW9uRm5zPiA9IChcbiAgYWN0aW9uczogU3RhdGVBY3Rpb25GbnMsXG4gIGNyZWF0ZTogPEVmZmVjdEFjdGlvbiBleHRlbmRzIHsgdHlwZTogc3RyaW5nIH0+KFxuICAgIGFjdGlvbjogRWZmZWN0QWN0aW9uLFxuICApID0+IE9ic2VydmFibGU8QWN0aW9uRm5QYXlsb2FkPEVmZmVjdEFjdGlvbj4+LFxuKSA9PiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPHVua25vd24+PjtcblxuLy8gaW50ZXJuYWwgdHlwZXNcblxuLyoqXG4gKiBSZWNvcmQgd2hpY2ggaG9sZHMgYWxsIGVmZmVjdHMgZm9yIGEgc3BlY2lmaWMgYWN0aW9uIHR5cGUuXG4gKiBUaGUgdmFsdWVzIGFyZSBTdWJqZWN0IHdoaWNoIHRoZSBlZmZlY3QgYXJlIHN1YnNjcmliZWQgdG8uXG4gKiBgY3JlYXRlQWN0aW9uRm5zYCB3aWxsIGNhbGwgbmV4dCBvbiB0aGVzZSBzdWJqZWN0cy5cbiAqL1xudHlwZSBFZmZlY3RzUmVnaXN0cnkgPSBSZWNvcmQ8c3RyaW5nLCBTdWJqZWN0PEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPj5bXT47XG5cbmZ1bmN0aW9uIGNyZWF0ZUFjdGlvbkZuczxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3M+KFxuICBhY3Rpb25GblNwZWNzOiBTcGVjLFxuICByZWR1Y2VyUmVnaXN0cnk6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgKHN0YXRlOiB1bmtub3duLCBwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4pID0+IHZvaWRcbiAgPixcbiAgZWZmZWN0c1JlZ2lzdHJ5OiBFZmZlY3RzUmVnaXN0cnksXG4gIHN0YXRlOiB1bmtub3duLFxuKSB7XG4gIGNvbnN0IGFjdGlvbkZuczogUmVjb3JkPHN0cmluZywgQWN0aW9uRm4+ID0ge307XG5cbiAgZm9yIChjb25zdCB0eXBlIGluIGFjdGlvbkZuU3BlY3MpIHtcbiAgICBjb25zdCBhY3Rpb25GbiA9IChwYXlsb2FkOiBQYXlsb2FkKSA9PiB7XG4gICAgICBjb25zdCBmdWxsUGF5bG9hZCA9IHsgLi4ucGF5bG9hZCwgdHlwZSB9O1xuICAgICAgY29uc3QgcmVkdWNlciA9IHJlZHVjZXJSZWdpc3RyeVt0eXBlXTtcbiAgICAgIGlmIChyZWR1Y2VyKSB7XG4gICAgICAgIChyZWR1Y2VyIGFzIChzdGF0ZTogdW5rbm93biwgcGF5bG9hZDogdW5rbm93bikgPT4gdm9pZCkoXG4gICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgZnVsbFBheWxvYWQgYXMgdW5rbm93bixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVmZmVjdFN1YmplY3RzID0gZWZmZWN0c1JlZ2lzdHJ5W3R5cGVdO1xuICAgICAgaWYgKGVmZmVjdFN1YmplY3RzPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCBlZmZlY3RTdWJqZWN0IG9mIGVmZmVjdFN1YmplY3RzKSB7XG4gICAgICAgICAgKGVmZmVjdFN1YmplY3QgYXMgdW5rbm93biBhcyBTdWJqZWN0PHVua25vd24+KS5uZXh0KGZ1bGxQYXlsb2FkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bGxQYXlsb2FkO1xuICAgIH07XG4gICAgYWN0aW9uRm4udHlwZSA9IHR5cGUudG9TdHJpbmcoKTtcbiAgICBhY3Rpb25GbnNbdHlwZV0gPSBhY3Rpb25GbjtcbiAgfVxuXG4gIHJldHVybiBhY3Rpb25GbnM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVB1YmxpY0FuZEFsbEFjdGlvbnNGbnM8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPihcbiAgYWN0aW9uRm5TcGVjczogU3BlYyxcbiAgcmVkdWNlclJlZ2lzdHJ5OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIChzdGF0ZTogdW5rbm93biwgcGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+KSA9PiB2b2lkXG4gID4sXG4gIGVmZmVjdHNSZWdpc3RyeTogRWZmZWN0c1JlZ2lzdHJ5LFxuICBzdGF0ZTogdW5rbm93bixcbik6IHsgYWxsOiBBY3Rpb25GbnM7IHB1YmxpY3M6IEFjdGlvbkZucyB9IHtcbiAgaWYgKCdwdWJsaWMnIGluIGFjdGlvbkZuU3BlY3MgfHwgJ3ByaXZhdGUnIGluIGFjdGlvbkZuU3BlY3MpIHtcbiAgICBjb25zdCBwcml2YXRlcyA9IGFjdGlvbkZuU3BlY3NbJ3ByaXZhdGUnXSB8fCB7fTtcbiAgICBjb25zdCBwdWJsaWNzID0gYWN0aW9uRm5TcGVjc1sncHVibGljJ10gfHwge307XG5cbiAgICBhc3NlcnRBY3Rpb25GblNwZWNzKHByaXZhdGVzKTtcbiAgICBhc3NlcnRBY3Rpb25GblNwZWNzKHB1YmxpY3MpO1xuXG4gICAgY29uc3QgcHJpdmF0ZUFjdGlvbkZucyA9IGNyZWF0ZUFjdGlvbkZucyhcbiAgICAgIHByaXZhdGVzLFxuICAgICAgcmVkdWNlclJlZ2lzdHJ5LFxuICAgICAgZWZmZWN0c1JlZ2lzdHJ5LFxuICAgICAgc3RhdGUsXG4gICAgKTtcbiAgICBjb25zdCBwdWJsaWNBY3Rpb25GbnMgPSBjcmVhdGVBY3Rpb25GbnMoXG4gICAgICBwdWJsaWNzLFxuICAgICAgcmVkdWNlclJlZ2lzdHJ5LFxuICAgICAgZWZmZWN0c1JlZ2lzdHJ5LFxuICAgICAgc3RhdGUsXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBhbGw6IHsgLi4ucHJpdmF0ZUFjdGlvbkZucywgLi4ucHVibGljQWN0aW9uRm5zIH0sXG4gICAgICBwdWJsaWNzOiBwdWJsaWNBY3Rpb25GbnMsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGFjdGlvbkZucyA9IGNyZWF0ZUFjdGlvbkZucyhcbiAgICBhY3Rpb25GblNwZWNzLFxuICAgIHJlZHVjZXJSZWdpc3RyeSxcbiAgICBlZmZlY3RzUmVnaXN0cnksXG4gICAgc3RhdGUsXG4gICk7XG5cbiAgcmV0dXJuIHsgYWxsOiBhY3Rpb25GbnMsIHB1YmxpY3M6IGFjdGlvbkZucyB9O1xufVxuXG5mdW5jdGlvbiBmaWxsUmVkdWNlclJlZ2lzdHJ5KFxuICByZWR1Y2VyOiBSZWR1Y2VyRmFjdG9yeTxBY3Rpb25GbnMsIHVua25vd24+LFxuICBhY3Rpb25GbnM6IEFjdGlvbkZucyxcbiAgcmVkdWNlclJlZ2lzdHJ5OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIChzdGF0ZTogdW5rbm93biwgcGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+KSA9PiB2b2lkXG4gID4sXG4pIHtcbiAgZnVuY3Rpb24gb24oXG4gICAgYWN0aW9uOiB7IHR5cGU6IHN0cmluZyB9LFxuICAgIHJlZHVjZXJGbjogKHN0YXRlOiB1bmtub3duLCBwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4pID0+IHZvaWQsXG4gICkge1xuICAgIHJlZHVjZXJSZWdpc3RyeVthY3Rpb24udHlwZV0gPSByZWR1Y2VyRm47XG4gIH1cblxuICByZWR1Y2VyKGFjdGlvbkZucywgb24pO1xuXG4gIHJldHVybiByZWR1Y2VyUmVnaXN0cnk7XG59XG5cbmZ1bmN0aW9uIGZpbGxFZmZlY3RzKFxuICBlZmZlY3RzOiBFZmZlY3RzRmFjdG9yeTxBY3Rpb25GbnM+LFxuICBhY3Rpb25GbnM6IEFjdGlvbkZucyxcbiAgZWZmZWN0c1JlZ2lzdHJ5OiBFZmZlY3RzUmVnaXN0cnkgPSB7fSxcbik6IE9ic2VydmFibGU8dW5rbm93bj5bXSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZShhY3Rpb246IHsgdHlwZTogc3RyaW5nIH0pIHtcbiAgICBjb25zdCBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8QWN0aW9uRm5QYXlsb2FkPHVua25vd24+PigpO1xuICAgIGlmICghKGFjdGlvbi50eXBlIGluIGVmZmVjdHNSZWdpc3RyeSkpIHtcbiAgICAgIGVmZmVjdHNSZWdpc3RyeVthY3Rpb24udHlwZV0gPSBbXTtcbiAgICB9XG4gICAgZWZmZWN0c1JlZ2lzdHJ5W2FjdGlvbi50eXBlXS5wdXNoKHN1YmplY3QpO1xuICAgIHJldHVybiBzdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgY29uc3QgZWZmZWN0T2JzZXJ2YWJsZXMgPSBlZmZlY3RzKGFjdGlvbkZucywgY3JlYXRlKTtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZWZmZWN0T2JzZXJ2YWJsZXMpO1xufVxuXG5mdW5jdGlvbiBzdGFydFN1YnNjcmlwdGlvbnMob2JzZXJ2YWJsZXM6IE9ic2VydmFibGU8dW5rbm93bj5bXSkge1xuICByZXR1cm4gb2JzZXJ2YWJsZXMubWFwKChvYnNlcnZhYmxlKSA9PiBvYnNlcnZhYmxlLnN1YnNjcmliZSgpKTtcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1JlZHV4PFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcywgUmV0dXJuVHlwZT4oXG4gIGFjdGlvbkZuU3BlY3M6IFNwZWMsXG4gIHJlZHVjZXI6IFJlZHVjZXJGYWN0b3J5PEFjdGlvbkZucywgdW5rbm93bj4sXG4gIGVmZmVjdHM6IEVmZmVjdHNGYWN0b3J5PEFjdGlvbkZucz4sXG4gIHN0b3JlOiB1bmtub3duLFxuKSB7XG4gIGNvbnN0IHJlZHVjZXJSZWdpc3RyeTogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICAoc3RhdGU6IHVua25vd24sIHBheWxvYWQ6IEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPikgPT4gdm9pZFxuICA+ID0ge307XG4gIGNvbnN0IGVmZmVjdHNSZWdpc3RyeTogUmVjb3JkPHN0cmluZywgU3ViamVjdDxBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4+W10+ID1cbiAgICB7fTtcbiAgY29uc3QgYWN0aW9uc01hcCA9IGNyZWF0ZVB1YmxpY0FuZEFsbEFjdGlvbnNGbnMoXG4gICAgYWN0aW9uRm5TcGVjcyxcbiAgICByZWR1Y2VyUmVnaXN0cnksXG4gICAgZWZmZWN0c1JlZ2lzdHJ5LFxuICAgIHN0b3JlLFxuICApO1xuICBjb25zdCBhY3Rpb25GbnMgPSBhY3Rpb25zTWFwLmFsbDtcbiAgY29uc3QgcHVibGljQWN0aW9uc0ZucyA9IGFjdGlvbnNNYXAucHVibGljcztcblxuICBmaWxsUmVkdWNlclJlZ2lzdHJ5KHJlZHVjZXIsIGFjdGlvbkZucywgcmVkdWNlclJlZ2lzdHJ5KTtcbiAgY29uc3QgZWZmZWN0T2JzZXJ2YWJsZXMgPSBmaWxsRWZmZWN0cyhlZmZlY3RzLCBhY3Rpb25GbnMsIGVmZmVjdHNSZWdpc3RyeSk7XG4gIGNvbnN0IHN1YnNjcmlwdGlvbnMgPSBzdGFydFN1YnNjcmlwdGlvbnMoZWZmZWN0T2JzZXJ2YWJsZXMpO1xuXG4gIHJldHVybiB7XG4gICAgbWV0aG9kczogcHVibGljQWN0aW9uc0ZucyBhcyBSZXR1cm5UeXBlLFxuICAgIHN1YnNjcmlwdGlvbnM6IHN1YnNjcmlwdGlvbnMsXG4gIH07XG59XG5cbi8qKlxuICogQHBhcmFtIHJlZHV4IHJlZHV4XG4gKlxuICogcHJvcGVydGllcyBkbyBub3Qgc3RhcnQgd2l0aCBgd2l0aGAgc2luY2UgdGhleSBhcmUgbm90IGV4dGVuc2lvbiBmdW5jdGlvbnMgb24gdGhlaXIgb3duLlxuICpcbiAqIG5vIGRlcGVuZGVuY3kgdG8gTmdSeFxuICpcbiAqIGFjdGlvbnMgYXJlIHBhc3NlZCB0byByZWR1Y2VyIGFuZCBlZmZlY3RzLCBidXQgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1c2Ugb3RoZXIgYWN0aW9ucy5cbiAqIGVmZmVjdHMgcHJvdmlkZSBmb3JBY3Rpb24gYW5kIGRvIG5vdCByZXR1cm4gYW55dGhpbmcuIHRoYXQgaXMgaW1wb3J0YW50IGJlY2F1c2UgZWZmZWN0cyBzaG91bGQgc3RheSBpbmFjY2Vzc2libGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhSZWR1eDxcbiAgU3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzLFxuICBJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgU3RhdGVBY3Rpb25GbnMgZXh0ZW5kcyBBY3Rpb25GbnNDcmVhdG9yPFNwZWM+ID0gQWN0aW9uRm5zQ3JlYXRvcjxTcGVjPixcbiAgUHVibGljU3RvcmVBY3Rpb25GbnMgZXh0ZW5kcyBQdWJsaWNBY3Rpb25GbnM8U3BlYz4gPSBQdWJsaWNBY3Rpb25GbnM8U3BlYz4sXG4+KHJlZHV4OiB7XG4gIGFjdGlvbnM6IFNwZWM7XG4gIHJlZHVjZXI6IFJlZHVjZXJGYWN0b3J5PFN0YXRlQWN0aW9uRm5zLCBTdGF0ZVNpZ25hbDxJbnB1dFsnc3RhdGUnXT4+O1xuICBlZmZlY3RzOiBFZmZlY3RzRmFjdG9yeTxTdGF0ZUFjdGlvbkZucz47XG59KTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBJbnB1dCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYgeyBtZXRob2RzOiBQdWJsaWNTdG9yZUFjdGlvbkZucyB9XG4+IHtcbiAgcmV0dXJuIChzdG9yZSkgPT4ge1xuICAgIGNvbnN0IHsgbWV0aG9kcyB9ID0gcHJvY2Vzc1JlZHV4PFNwZWMsIFB1YmxpY1N0b3JlQWN0aW9uRm5zPihcbiAgICAgIHJlZHV4LmFjdGlvbnMsXG4gICAgICByZWR1eC5yZWR1Y2VyIGFzIFJlZHVjZXJGYWN0b3J5PEFjdGlvbkZucywgdW5rbm93bj4sXG4gICAgICByZWR1eC5lZmZlY3RzIGFzIEVmZmVjdHNGYWN0b3J5PEFjdGlvbkZucz4sXG4gICAgICBzdG9yZSxcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdG9yZSxcbiAgICAgIG1ldGhvZHMsXG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -77,9 +77,22 @@ function withDevtools(name) {
|
|
|
77
77
|
return store;
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* @deprecated Has been renamed to `updateState`
|
|
82
|
+
*/
|
|
80
83
|
const patchState = (state, action, ...rest) => {
|
|
84
|
+
updateState(state, action, ...rest);
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Wrapper of `patchState` for DevTools integration. Next to updating the state,
|
|
88
|
+
* it also sends the action to the DevTools.
|
|
89
|
+
* @param state state of Signal Store
|
|
90
|
+
* @param action name of action how it will show in DevTools
|
|
91
|
+
* @param updaters updater functions or objects
|
|
92
|
+
*/
|
|
93
|
+
const updateState = (state, action, ...updaters) => {
|
|
81
94
|
currentActionNames.add(action);
|
|
82
|
-
return patchState$1(state, ...
|
|
95
|
+
return patchState$1(state, ...updaters);
|
|
83
96
|
};
|
|
84
97
|
|
|
85
98
|
function assertActionFnSpecs(obj) {
|
|
@@ -101,9 +114,11 @@ function createActionFns(actionFnSpecs, reducerRegistry, effectsRegistry, state)
|
|
|
101
114
|
if (reducer) {
|
|
102
115
|
reducer(state, fullPayload);
|
|
103
116
|
}
|
|
104
|
-
const
|
|
105
|
-
if (
|
|
106
|
-
effectSubject
|
|
117
|
+
const effectSubjects = effectsRegistry[type];
|
|
118
|
+
if (effectSubjects?.length) {
|
|
119
|
+
for (const effectSubject of effectSubjects) {
|
|
120
|
+
effectSubject.next(fullPayload);
|
|
121
|
+
}
|
|
107
122
|
}
|
|
108
123
|
return fullPayload;
|
|
109
124
|
};
|
|
@@ -138,7 +153,10 @@ function fillReducerRegistry(reducer, actionFns, reducerRegistry) {
|
|
|
138
153
|
function fillEffects(effects, actionFns, effectsRegistry = {}) {
|
|
139
154
|
function create(action) {
|
|
140
155
|
const subject = new Subject();
|
|
141
|
-
|
|
156
|
+
if (!(action.type in effectsRegistry)) {
|
|
157
|
+
effectsRegistry[action.type] = [];
|
|
158
|
+
}
|
|
159
|
+
effectsRegistry[action.type].push(subject);
|
|
142
160
|
return subject.asObservable();
|
|
143
161
|
}
|
|
144
162
|
const effectObservables = effects(actionFns, create);
|
|
@@ -173,7 +191,7 @@ function processRedux(actionFnSpecs, reducer, effects, store) {
|
|
|
173
191
|
*/
|
|
174
192
|
function withRedux(redux) {
|
|
175
193
|
return (store) => {
|
|
176
|
-
const { methods
|
|
194
|
+
const { methods } = processRedux(redux.actions, redux.reducer, redux.effects, store);
|
|
177
195
|
return {
|
|
178
196
|
...store,
|
|
179
197
|
methods,
|
|
@@ -649,5 +667,5 @@ function reduxMethod(generator, resultMethodOrConfig, config) {
|
|
|
649
667
|
* Generated bundle index. Do not edit.
|
|
650
668
|
*/
|
|
651
669
|
|
|
652
|
-
export { capitalize$1 as capitalize, createReduxState, getCallStateKeys, getDataServiceKeys, getUndoRedoKeys, mapAction, noPayload, patchState, payload, reduxMethod, setError, setLoaded, setLoading, withActionMappers, withCallState, withDataService, withDevtools, withRedux, withStorageSync, withUndoRedo };
|
|
670
|
+
export { capitalize$1 as capitalize, createReduxState, getCallStateKeys, getDataServiceKeys, getUndoRedoKeys, mapAction, noPayload, patchState, payload, reduxMethod, setError, setLoaded, setLoading, updateState, withActionMappers, withCallState, withDataService, withDevtools, withRedux, withStorageSync, withUndoRedo };
|
|
653
671
|
//# sourceMappingURL=angular-architects-ngrx-toolkit.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-architects-ngrx-toolkit.mjs","sources":["../../../../libs/ngrx-toolkit/src/lib/with-devtools.ts","../../../../libs/ngrx-toolkit/src/lib/assertions/assertions.ts","../../../../libs/ngrx-toolkit/src/lib/with-redux.ts","../../../../libs/ngrx-toolkit/src/lib/with-call-state.ts","../../../../libs/ngrx-toolkit/src/lib/with-data-service.ts","../../../../libs/ngrx-toolkit/src/lib/with-undo-redo.ts","../../../../libs/ngrx-toolkit/src/lib/with-storage-sync.ts","../../../../libs/ngrx-toolkit/src/lib/redux-connector/util.ts","../../../../libs/ngrx-toolkit/src/lib/redux-connector/signal-redux-store.ts","../../../../libs/ngrx-toolkit/src/lib/redux-connector/create-redux.ts","../../../../libs/ngrx-toolkit/src/lib/redux-connector/rxjs-interop/redux-method.ts","../../../../libs/ngrx-toolkit/src/angular-architects-ngrx-toolkit.ts"],"sourcesContent":["import {\n patchState as originalPatchState,\n SignalStoreFeature,\n} from '@ngrx/signals';\nimport { SignalStoreFeatureResult } from '@ngrx/signals/src/signal-store-models';\nimport { effect, inject, PLATFORM_ID, signal, Signal } from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\n\ndeclare global {\n interface Window {\n __REDUX_DEVTOOLS_EXTENSION__:\n | {\n connect: (options: { name: string }) => {\n send: (action: Action, state: Record<string, unknown>) => void;\n };\n }\n | undefined;\n }\n}\n\ntype EmptyFeatureResult = { state: {}; signals: {}; methods: {} };\nexport type Action = { type: string };\n\nconst storeRegistry = signal<Record<string, Signal<unknown>>>({});\n\nlet currentActionNames = new Set<string>();\n\nlet synchronizationInitialized = false;\n\nfunction initSynchronization() {\n effect(() => {\n if (!connection) {\n return;\n }\n\n const stores = storeRegistry();\n const rootState: Record<string, unknown> = {};\n for (const name in stores) {\n const store = stores[name];\n rootState[name] = store();\n }\n\n const names = Array.from(currentActionNames);\n const type = names.length ? names.join(', ') : 'Store Update';\n currentActionNames = new Set<string>();\n\n connection.send({ type }, rootState);\n });\n}\n\nfunction getValueFromSymbol(obj: unknown, symbol: symbol) {\n if (typeof obj === 'object' && obj && symbol in obj) {\n return (obj as { [key: symbol]: any })[symbol];\n }\n}\n\nfunction getStoreSignal(store: unknown): Signal<unknown> {\n const [signalStateKey] = Object.getOwnPropertySymbols(store);\n if (!signalStateKey) {\n throw new Error('Cannot find State Signal');\n }\n\n return getValueFromSymbol(store, signalStateKey);\n}\n\ntype ConnectResponse = {\n send: (action: Action, state: Record<string, unknown>) => void;\n};\nlet connection: ConnectResponse | undefined;\n\n/**\n * required for testing. is not exported during build\n */\nexport function reset() {\n connection = undefined;\n synchronizationInitialized = false;\n storeRegistry.set({});\n}\n\n/**\n * @param name store's name as it should appear in the DevTools\n */\nexport function withDevtools<Input extends SignalStoreFeatureResult>(\n name: string\n): SignalStoreFeature<Input, EmptyFeatureResult> {\n return (store) => {\n const isServer = isPlatformServer(inject(PLATFORM_ID));\n if (isServer) {\n return store;\n }\n\n const extensions = window.__REDUX_DEVTOOLS_EXTENSION__;\n if (!extensions) {\n return store;\n }\n\n if (!connection) {\n connection = extensions.connect({\n name: 'NgRx Signal Store',\n });\n }\n\n const storeSignal = getStoreSignal(store);\n storeRegistry.update((value) => ({\n ...value,\n [name]: storeSignal,\n }));\n\n if (!synchronizationInitialized) {\n initSynchronization();\n synchronizationInitialized = true;\n }\n\n return store;\n };\n}\n\ntype PatchFn = typeof originalPatchState extends (\n arg1: infer First,\n ...args: infer Rest\n) => infer Returner\n ? (state: First, action: string, ...rest: Rest) => Returner\n : never;\n\nexport const patchState: PatchFn = (state, action, ...rest) => {\n currentActionNames.add(action);\n return originalPatchState(state, ...rest);\n};\n","import { ActionsFnSpecs } from '../with-redux';\n\nexport function assertActionFnSpecs(\n obj: unknown\n): asserts obj is ActionsFnSpecs {\n if (!obj || typeof obj !== 'object') {\n throw new Error('%o is not an Action Specification');\n }\n}\n","import { Observable, Subject } from 'rxjs';\nimport { SignalStoreFeature } from '@ngrx/signals';\nimport {\n EmptyFeatureResult,\n SignalStoreFeatureResult,\n} from '@ngrx/signals/src/signal-store-models';\nimport { StateSignal } from '@ngrx/signals/src/state-signal';\nimport { assertActionFnSpecs } from './assertions/assertions';\n\n/** Actions **/\n\ntype Payload = Record<string, unknown>;\n\ntype ActionFn<\n Type extends string = string,\n ActionPayload extends Payload = Payload\n> = ((payload: ActionPayload) => ActionPayload & { type: Type }) & {\n type: Type;\n};\n\ntype ActionFns = Record<string, ActionFn>;\n\nexport type ActionsFnSpecs = Record<string, Payload>;\n\ntype ActionFnCreator<Spec extends ActionsFnSpecs> = {\n [ActionName in keyof Spec]: ((\n payload: Spec[ActionName]\n ) => Spec[ActionName] & { type: ActionName }) & { type: ActionName & string };\n};\n\ntype ActionFnPayload<Action> = Action extends (payload: infer Payload) => void\n ? Payload\n : never;\n\ntype ActionFnsCreator<Spec extends ActionsFnSpecs> = Spec extends {\n private: Record<string, Payload>;\n public: Record<string, Payload>;\n}\n ? ActionFnCreator<Spec['private']> & ActionFnCreator<Spec['public']>\n : ActionFnCreator<Spec>;\n\ntype PublicActionFns<Spec extends ActionsFnSpecs> = Spec extends {\n public: Record<string, Payload>;\n}\n ? ActionFnCreator<Spec['public']>\n : ActionFnCreator<Spec>;\n\nexport function payload<Type extends Payload>(): Type {\n return {} as Type;\n}\n\nexport const noPayload = {};\n\n/** Reducer **/\n\ntype ReducerFunction<ReducerAction, State> = (\n state: State,\n action: ActionFnPayload<ReducerAction>\n) => void;\n\ntype ReducerFactory<StateActionFns extends ActionFns, State> = (\n actions: StateActionFns,\n on: <ReducerAction extends { type: string }>(\n action: ReducerAction,\n reducerFn: ReducerFunction<ReducerAction, State>\n ) => void\n) => void;\n\n/** Effect **/\n\ntype EffectsFactory<StateActionFns extends ActionFns> = (\n actions: StateActionFns,\n create: <EffectAction extends { type: string }>(\n action: EffectAction\n ) => Observable<ActionFnPayload<EffectAction>>\n) => Record<string, Observable<unknown>>;\n\nfunction createActionFns<Spec extends ActionsFnSpecs>(\n actionFnSpecs: Spec,\n reducerRegistry: Record<\n string,\n (state: unknown, payload: ActionFnPayload<unknown>) => void\n >,\n effectsRegistry: Record<string, Subject<ActionFnPayload<unknown>>>,\n state: unknown\n) {\n const actionFns: Record<string, ActionFn> = {};\n\n for (const type in actionFnSpecs) {\n const actionFn = (payload: Payload) => {\n const fullPayload = { ...payload, type };\n const reducer = reducerRegistry[type];\n if (reducer) {\n (reducer as (state: unknown, payload: unknown) => void)(\n state,\n fullPayload as unknown\n );\n }\n const effectSubject = effectsRegistry[type];\n if (effectSubject) {\n (effectSubject as unknown as Subject<unknown>).next(fullPayload);\n }\n return fullPayload;\n };\n actionFn.type = type.toString();\n actionFns[type] = actionFn;\n }\n\n return actionFns;\n}\n\nfunction createPublicAndAllActionsFns<Spec extends ActionsFnSpecs>(\n actionFnSpecs: Spec,\n reducerRegistry: Record<\n string,\n (state: unknown, payload: ActionFnPayload<unknown>) => void\n >,\n effectsRegistry: Record<string, Subject<ActionFnPayload<unknown>>>,\n state: unknown\n): { all: ActionFns; publics: ActionFns } {\n if ('public' in actionFnSpecs || 'private' in actionFnSpecs) {\n const privates = actionFnSpecs['private'] || {};\n const publics = actionFnSpecs['public'] || {};\n\n assertActionFnSpecs(privates);\n assertActionFnSpecs(publics);\n\n const privateActionFns = createActionFns(\n privates,\n reducerRegistry,\n effectsRegistry,\n state\n );\n const publicActionFns = createActionFns(\n publics,\n reducerRegistry,\n effectsRegistry,\n state\n );\n\n return {\n all: { ...privateActionFns, ...publicActionFns },\n publics: publicActionFns,\n };\n }\n\n const actionFns = createActionFns(\n actionFnSpecs,\n reducerRegistry,\n effectsRegistry,\n state\n );\n\n return { all: actionFns, publics: actionFns };\n}\n\nfunction fillReducerRegistry(\n reducer: ReducerFactory<ActionFns, unknown>,\n actionFns: ActionFns,\n reducerRegistry: Record<\n string,\n (state: unknown, payload: ActionFnPayload<unknown>) => void\n >\n) {\n function on(\n action: { type: string },\n reducerFn: (state: unknown, payload: ActionFnPayload<unknown>) => void\n ) {\n reducerRegistry[action.type] = reducerFn;\n }\n\n reducer(actionFns, on);\n\n return reducerRegistry;\n}\n\nfunction fillEffects(\n effects: EffectsFactory<ActionFns>,\n actionFns: ActionFns,\n effectsRegistry: Record<string, Subject<ActionFnPayload<unknown>>> = {}\n): Observable<unknown>[] {\n function create(action: { type: string }) {\n const subject = new Subject<ActionFnPayload<unknown>>();\n effectsRegistry[action.type] = subject;\n return subject.asObservable();\n }\n\n const effectObservables = effects(actionFns, create);\n return Object.values(effectObservables);\n}\n\nfunction startSubscriptions(observables: Observable<unknown>[]) {\n return observables.map((observable) => observable.subscribe());\n}\n\nfunction processRedux<Spec extends ActionsFnSpecs, ReturnType>(\n actionFnSpecs: Spec,\n reducer: ReducerFactory<ActionFns, unknown>,\n effects: EffectsFactory<ActionFns>,\n store: unknown\n) {\n const reducerRegistry: Record<\n string,\n (state: unknown, payload: ActionFnPayload<unknown>) => void\n > = {};\n const effectsRegistry: Record<string, Subject<ActionFnPayload<unknown>>> = {};\n const actionsMap = createPublicAndAllActionsFns(\n actionFnSpecs,\n reducerRegistry,\n effectsRegistry,\n store\n );\n const actionFns = actionsMap.all;\n const publicActionsFns = actionsMap.publics;\n\n fillReducerRegistry(reducer, actionFns, reducerRegistry);\n const effectObservables = fillEffects(effects, actionFns, effectsRegistry);\n const subscriptions = startSubscriptions(effectObservables);\n\n return {\n methods: publicActionsFns as ReturnType,\n subscriptions: subscriptions,\n };\n}\n\n/**\n * @param redux redux\n *\n * properties do not start with `with` since they are not extension functions on their own.\n *\n * no dependency to NgRx\n *\n * actions are passed to reducer and effects, but it is also possible to use other actions.\n * effects provide forAction and do not return anything. that is important because effects should stay inaccessible\n */\nexport function withRedux<\n Spec extends ActionsFnSpecs,\n Input extends SignalStoreFeatureResult,\n StateActionFns extends ActionFnsCreator<Spec> = ActionFnsCreator<Spec>,\n PublicStoreActionFns extends PublicActionFns<Spec> = PublicActionFns<Spec>\n>(redux: {\n actions: Spec;\n reducer: ReducerFactory<StateActionFns, StateSignal<Input['state']>>;\n effects: EffectsFactory<StateActionFns>;\n}): SignalStoreFeature<\n Input,\n EmptyFeatureResult & { methods: PublicStoreActionFns }\n> {\n return (store) => {\n const { methods, subscriptions } = processRedux<Spec, PublicStoreActionFns>(\n redux.actions,\n redux.reducer as ReducerFactory<ActionFns, unknown>,\n redux.effects as EffectsFactory<ActionFns>,\n store\n );\n return {\n ...store,\n methods,\n };\n };\n}\n","import { Signal, computed } from '@angular/core';\nimport {\n SignalStoreFeature,\n signalStoreFeature,\n withComputed,\n withState,\n} from '@ngrx/signals';\nimport { Emtpy } from './shared/empty';\n\nexport type CallState = 'init' | 'loading' | 'loaded' | { error: string };\n\nexport type NamedCallStateSlice<Collection extends string> = {\n [K in Collection as `${K}CallState`]: CallState;\n};\n\nexport type CallStateSlice = {\n callState: CallState\n}\n\nexport type NamedCallStateSignals<Prop extends string> = {\n [K in Prop as `${K}Loading`]: Signal<boolean>;\n} & {\n [K in Prop as `${K}Loaded`]: Signal<boolean>;\n } & {\n [K in Prop as `${K}Error`]: Signal<string | null>;\n }\n\nexport type CallStateSignals = {\n loading: Signal<boolean>;\n loaded: Signal<boolean>;\n error: Signal<string | null>\n}\n\nexport type SetCallState<Prop extends string | undefined> = Prop extends string\n ? NamedCallStateSlice<Prop>\n : CallStateSlice;\n\nexport function getCallStateKeys(config?: { collection?: string }) {\n const prop = config?.collection;\n return {\n callStateKey: prop ? `${config.collection}CallState` : 'callState',\n loadingKey: prop ? `${config.collection}Loading` : 'loading',\n loadedKey: prop ? `${config.collection}Loaded` : 'loaded',\n errorKey: prop ? `${config.collection}Error` : 'error',\n };\n}\n\nexport function withCallState<Collection extends string>(config: {\n collection: Collection;\n}): SignalStoreFeature<\n { state: Emtpy, signals: Emtpy, methods: Emtpy },\n {\n state: NamedCallStateSlice<Collection>,\n signals: NamedCallStateSignals<Collection>,\n methods: Emtpy\n }\n>;\nexport function withCallState(): SignalStoreFeature<\n { state: Emtpy, signals: Emtpy, methods: Emtpy },\n {\n state: CallStateSlice,\n signals: CallStateSignals,\n methods: Emtpy\n }\n>;\nexport function withCallState<Collection extends string>(config?: {\n collection: Collection;\n}): SignalStoreFeature {\n const { callStateKey, errorKey, loadedKey, loadingKey } =\n getCallStateKeys(config);\n\n return signalStoreFeature(\n withState({ [callStateKey]: 'init' }),\n withComputed((state: Record<string, Signal<unknown>>) => {\n\n const callState = state[callStateKey] as Signal<CallState>;\n\n return {\n [loadingKey]: computed(() => callState() === 'loading'),\n [loadedKey]: computed(() => callState() === 'loaded'),\n [errorKey]: computed(() => {\n const v = callState();\n return typeof v === 'object' ? v.error : null;\n })\n }\n })\n );\n}\n\nexport function setLoading<Prop extends string | undefined = undefined>(\n prop?: Prop\n): SetCallState<Prop> {\n if (prop) {\n return { [`${prop}CallState`]: 'loading' } as SetCallState<Prop>;\n }\n\n return { callState: 'loading' } as SetCallState<Prop>;\n}\n\nexport function setLoaded<Prop extends string | undefined = undefined>(\n prop?: Prop\n): SetCallState<Prop> {\n\n if (prop) {\n return { [`${prop}CallState`]: 'loaded' } as SetCallState<Prop>;\n }\n else {\n return { callState: 'loaded' } as SetCallState<Prop>;\n }\n}\n\nexport function setError<Prop extends string | undefined = undefined>(\n error: unknown,\n prop?: Prop,\n ): SetCallState<Prop> {\n\n let errorMessage = '';\n\n if (!error) {\n errorMessage = '';\n }\n else if (typeof error === 'object' && 'message' in error) {\n errorMessage = String(error.message);\n }\n else {\n errorMessage = String(error);\n }\n \n\n if (prop) {\n return { [`${prop}CallState`]: { error: errorMessage } } as SetCallState<Prop>;\n }\n else {\n return { callState: { error: errorMessage } } as SetCallState<Prop>;\n }\n}\n","import { ProviderToken, Signal, computed, inject } from \"@angular/core\";\nimport { SignalStoreFeature, patchState, signalStoreFeature, withComputed, withMethods, withState } from \"@ngrx/signals\";\nimport { CallState, getCallStateKeys, setError, setLoaded, setLoading } from \"./with-call-state\";\nimport { setAllEntities, EntityId, addEntity, updateEntity, removeEntity } from \"@ngrx/signals/entities\";\nimport { EntityState, NamedEntitySignals } from \"@ngrx/signals/entities/src/models\";\nimport { StateSignal } from \"@ngrx/signals/src/state-signal\";\nimport { Emtpy } from \"./shared/empty\";\n\nexport type Filter = Record<string, unknown>;\nexport type Entity = { id: EntityId };\n\nexport interface DataService<E extends Entity, F extends Filter> {\n load(filter: F): Promise<E[]>;\n loadById(id: EntityId): Promise<E>;\n create(entity: E): Promise<E>;\n update(entity: E): Promise<E>;\n updateAll(entity: E[]): Promise<E[]>;\n delete(entity: E): Promise<void>;\n}\n\nexport function capitalize(str: string): string {\n return str ? str[0].toUpperCase() + str.substring(1) : str;\n}\n\nexport function getDataServiceKeys(options: { collection?: string }) {\n const filterKey = options.collection ? `${options.collection}Filter` : 'filter';\n const selectedIdsKey = options.collection ? `selected${capitalize(options.collection)}Ids` : 'selectedIds';\n const selectedEntitiesKey = options.collection ? `selected${capitalize(options.collection)}Entities` : 'selectedEntities';\n\n const updateFilterKey = options.collection ? `update${capitalize(options.collection)}Filter` : 'updateFilter';\n const updateSelectedKey = options.collection ? `updateSelected${capitalize(options.collection)}Entities` : 'updateSelected';\n const loadKey = options.collection ? `load${capitalize(options.collection)}Entities` : 'load';\n\n const currentKey = options.collection ? `current${capitalize(options.collection)}` : 'current';\n const loadByIdKey = options.collection ? `load${capitalize(options.collection)}ById` : 'loadById';\n const setCurrentKey = options.collection ? `setCurrent${capitalize(options.collection)}` : 'setCurrent';\n const createKey = options.collection ? `create${capitalize(options.collection)}` : 'create';\n const updateKey = options.collection ? `update${capitalize(options.collection)}` : 'update';\n const updateAllKey = options.collection ? `updateAll${capitalize(options.collection)}` : 'updateAll';\n const deleteKey = options.collection ? `delete${capitalize(options.collection)}` : 'delete';\n\n // TODO: Take these from @ngrx/signals/entities, when they are exported\n const entitiesKey = options.collection ? `${options.collection}Entities` : 'entities';\n const entityMapKey = options.collection ? `${options.collection}EntityMap` : 'entityMap';\n const idsKey = options.collection ? `${options.collection}Ids` : 'ids';\n\n return {\n filterKey,\n selectedIdsKey,\n selectedEntitiesKey,\n updateFilterKey,\n updateSelectedKey,\n loadKey,\n entitiesKey,\n entityMapKey,\n idsKey,\n\n currentKey,\n loadByIdKey,\n setCurrentKey,\n createKey,\n updateKey,\n updateAllKey,\n deleteKey\n };\n}\n\nexport type NamedDataServiceState<E extends Entity, F extends Filter, Collection extends string> =\n {\n [K in Collection as `${K}Filter`]: F;\n } & {\n [K in Collection as `selected${Capitalize<K>}Ids`]: Record<EntityId, boolean>;\n } & {\n [K in Collection as `current${Capitalize<K>}`]: E;\n }\n\nexport type DataServiceState<E extends Entity, F extends Filter> = {\n filter: F;\n selectedIds: Record<EntityId, boolean>;\n current: E;\n}\n\nexport type NamedDataServiceSignals<E extends Entity, Collection extends string> =\n {\n [K in Collection as `selected${Capitalize<K>}Entities`]: Signal<E[]>;\n }\n\nexport type DataServiceSignals<E extends Entity> =\n {\n selectedEntities: Signal<E[]>;\n }\n\nexport type NamedDataServiceMethods<E extends Entity, F extends Filter, Collection extends string> =\n {\n [K in Collection as `update${Capitalize<K>}Filter`]: (filter: F) => void;\n } &\n {\n [K in Collection as `updateSelected${Capitalize<K>}Entities`]: (id: EntityId, selected: boolean) => void;\n } &\n {\n [K in Collection as `load${Capitalize<K>}Entities`]: () => Promise<void>;\n } &\n\n {\n [K in Collection as `setCurrent${Capitalize<K>}`]: (entity: E) => void;\n } &\n {\n [K in Collection as `load${Capitalize<K>}ById`]: (id: EntityId) => Promise<void>;\n } &\n {\n [K in Collection as `create${Capitalize<K>}`]: (entity: E) => Promise<void>;\n } &\n {\n [K in Collection as `update${Capitalize<K>}`]: (entity: E) => Promise<void>;\n } &\n {\n [K in Collection as `updateAll${Capitalize<K>}`]: (entity: E[]) => Promise<void>;\n } &\n {\n [K in Collection as `delete${Capitalize<K>}`]: (entity: E) => Promise<void>;\n };\n\n\nexport type DataServiceMethods<E extends Entity, F extends Filter> =\n {\n updateFilter: (filter: F) => void;\n updateSelected: (id: EntityId, selected: boolean) => void;\n load: () => Promise<void>;\n\n setCurrent(entity: E): void;\n loadById(id: EntityId): Promise<void>;\n create(entity: E): Promise<void>;\n update(entity: E): Promise<void>;\n updateAll(entities: E[]): Promise<void>;\n delete(entity: E): Promise<void>;\n }\n\nexport type Empty = Record<string, never>\n\nexport function withDataService<E extends Entity, F extends Filter, Collection extends string>(options: { dataServiceType: ProviderToken<DataService<E, F>>, filter: F, collection: Collection }): SignalStoreFeature<\n {\n state: Emtpy,\n // These alternatives break type inference:\n // state: { callState: CallState } & NamedEntityState<E, Collection>,\n // state: NamedEntityState<E, Collection>,\n\n signals: NamedEntitySignals<E, Collection>,\n methods: Emtpy,\n },\n {\n state: NamedDataServiceState<E, F, Collection>\n signals: NamedDataServiceSignals<E, Collection>\n methods: NamedDataServiceMethods<E, F, Collection>\n }\n>;\nexport function withDataService<E extends Entity, F extends Filter>(options: { dataServiceType: ProviderToken<DataService<E, F>>, filter: F }): SignalStoreFeature<\n {\n state: { callState: CallState } & EntityState<E>\n signals: Emtpy,\n methods: Emtpy,\n },\n {\n state: DataServiceState<E, F>\n signals: DataServiceSignals<E>\n methods: DataServiceMethods<E, F>\n }>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withDataService<E extends Entity, F extends Filter, Collection extends string>(options: { dataServiceType: ProviderToken<DataService<E, F>>, filter: F, collection?: Collection }): SignalStoreFeature<any, any> {\n const { dataServiceType, filter, collection: prefix } = options;\n const {\n entitiesKey,\n filterKey,\n loadKey,\n selectedEntitiesKey,\n selectedIdsKey,\n updateFilterKey,\n updateSelectedKey,\n\n currentKey,\n createKey,\n updateKey,\n updateAllKey,\n deleteKey,\n loadByIdKey,\n setCurrentKey\n } = getDataServiceKeys(options);\n\n const { callStateKey } = getCallStateKeys({ collection: prefix });\n\n return signalStoreFeature(\n withState(() => ({\n [filterKey]: filter,\n [selectedIdsKey]: {} as Record<EntityId, boolean>,\n [currentKey]: undefined as E | undefined\n })),\n withComputed((store: Record<string, unknown>) => {\n const entities = store[entitiesKey] as Signal<E[]>;\n const selectedIds = store[selectedIdsKey] as Signal<Record<EntityId, boolean>>;\n\n return {\n [selectedEntitiesKey]: computed(() => entities().filter(e => selectedIds()[e.id]))\n }\n }),\n withMethods((store: Record<string, unknown> & StateSignal<object>) => {\n const dataService = inject(dataServiceType)\n return {\n [updateFilterKey]: (filter: F): void => {\n patchState(store, { [filterKey]: filter });\n },\n [updateSelectedKey]: (id: EntityId, selected: boolean): void => {\n patchState(store, (state: Record<string, unknown>) => ({\n [selectedIdsKey]: {\n ...state[selectedIdsKey] as Record<EntityId, boolean>,\n [id]: selected,\n }\n }));\n },\n [loadKey]: async (): Promise<void> => {\n const filter = store[filterKey] as Signal<F>;\n store[callStateKey] && patchState(store, setLoading(prefix));\n\n try {\n const result = await dataService.load(filter());\n patchState(store, prefix ? setAllEntities(result, { collection: prefix }) : setAllEntities(result));\n store[callStateKey] && patchState(store, setLoaded(prefix));\n }\n catch (e) {\n store[callStateKey] && patchState(store, setError(e, prefix));\n throw e;\n }\n },\n [loadByIdKey]: async (id: EntityId): Promise<void> => {\n store[callStateKey] && patchState(store, setLoading(prefix));\n\n try {\n const current = await dataService.loadById(id);\n store[callStateKey] && patchState(store, setLoaded(prefix));\n patchState(store, { [currentKey]: current });\n }\n catch (e) {\n store[callStateKey] && patchState(store, setError(e, prefix));\n throw e;\n }\n },\n [setCurrentKey]: (current: E): void => {\n patchState(store, { [currentKey]: current });\n },\n [createKey]: async (entity: E): Promise<void> => {\n patchState(store, { [currentKey]: entity });\n store[callStateKey] && patchState(store, setLoading(prefix));\n\n try {\n const created = await dataService.create(entity);\n patchState(store, { [currentKey]: created });\n patchState(store, prefix ? addEntity(created, { collection: prefix }) : addEntity(created));\n store[callStateKey] && patchState(store, setLoaded(prefix));\n }\n catch (e) {\n store[callStateKey] && patchState(store, setError(e, prefix));\n throw e;\n }\n },\n [updateKey]: async (entity: E): Promise<void> => {\n patchState(store, { [currentKey]: entity });\n store[callStateKey] && patchState(store, setLoading(prefix));\n\n try {\n const updated = await dataService.update(entity);\n patchState(store, { [currentKey]: updated });\n // Why do we need this cast to Partial<Entity>?\n const updateArg = { id: updated.id, changes: updated as Partial<Entity> };\n patchState(store, prefix ? updateEntity(updateArg, { collection: prefix }) : updateEntity(updateArg));\n store[callStateKey] && patchState(store, setLoaded(prefix));\n }\n catch (e) {\n store[callStateKey] && patchState(store, setError(e, prefix));\n throw e;\n }\n },\n [updateAllKey]: async (entities: E[]): Promise<void> => {\n store[callStateKey] && patchState(store, setLoading(prefix));\n\n try {\n const result = await dataService.updateAll(entities);\n patchState(store, prefix ? setAllEntities(result, { collection: prefix }) : setAllEntities(result));\n store[callStateKey] && patchState(store, setLoaded(prefix));\n }\n catch (e) {\n store[callStateKey] && patchState(store, setError(e, prefix));\n throw e;\n }\n },\n [deleteKey]: async (entity: E): Promise<void> => {\n patchState(store, { [currentKey]: entity });\n store[callStateKey] && patchState(store, setLoading(prefix));\n\n try {\n await dataService.delete(entity);\n patchState(store, { [currentKey]: undefined });\n patchState(store, prefix ? removeEntity(entity.id, { collection: prefix }) : removeEntity(entity.id));\n store[callStateKey] && patchState(store, setLoaded(prefix));\n }\n catch (e) {\n store[callStateKey] && patchState(store, setError(e, prefix));\n throw e;\n }\n },\n };\n })\n );\n}\n","import { SignalStoreFeature, patchState, signalStoreFeature, withComputed, withHooks, withMethods } from \"@ngrx/signals\";\nimport { EntityId, EntityMap, EntityState } from \"@ngrx/signals/entities\";\nimport { Signal, effect, signal, untracked, isSignal } from \"@angular/core\";\nimport { EntitySignals, NamedEntitySignals } from \"@ngrx/signals/entities/src/models\";\nimport { Entity, capitalize } from \"./with-data-service\";\nimport { Emtpy } from \"./shared/empty\";\n\nexport type StackItem = Record<string, unknown>;\n\nexport type NormalizedUndoRedoOptions = {\n maxStackSize: number;\n collections?: string[]\n}\n\nconst defaultOptions: NormalizedUndoRedoOptions = {\n maxStackSize: 100\n};\n\nexport type NamedUndoRedoState<Collection extends string> = {\n [K in Collection as `${K}EntityMap`]: EntityMap<Entity>;\n} & {\n [K in Collection as `${K}Ids`]: EntityId[];\n }\n\nexport type NamedUndoRedoSignals<Collection extends string> = {\n [K in Collection as `${K}Entities`]: Signal<Entity[]>\n}\n\nexport function getUndoRedoKeys(collections?: string[]): string[] {\n if (collections) {\n return collections.flatMap(c => [`${c}EntityMap`, `${c}Ids`, `selected${capitalize(c)}Ids`, `${c}Filter`])\n }\n return ['entityMap', 'ids', 'selectedIds', 'filter'];\n}\n\nexport function withUndoRedo<Collection extends string>(options?: { maxStackSize?: number; collections: Collection[] }): SignalStoreFeature<\n {\n state: Emtpy,\n // This alternative breaks type inference:\n // state: NamedEntityState<Entity, Collection>\n signals: NamedEntitySignals<Entity, Collection>,\n methods: Emtpy\n },\n {\n state: Emtpy,\n signals: {\n canUndo: Signal<boolean>,\n canRedo: Signal<boolean>\n },\n methods: {\n undo: () => void,\n redo: () => void\n }\n }>;\n\nexport function withUndoRedo(options?: { maxStackSize?: number }): SignalStoreFeature<\n {\n state: EntityState<Entity>,\n signals: EntitySignals<Entity>,\n methods: Emtpy\n },\n {\n state: Emtpy,\n signals: {\n canUndo: Signal<boolean>,\n canRedo: Signal<boolean>\n },\n methods: {\n undo: () => void,\n redo: () => void\n }\n }>;\n\nexport function withUndoRedo<Collection extends string>(options: {\n maxStackSize?: number;\n collections?: Collection[]\n} = {}): \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nSignalStoreFeature<any, any> {\n let previous: StackItem | null = null;\n let skipOnce = false;\n\n const normalized = {\n ...defaultOptions,\n ...options\n };\n\n //\n // Design Decision: This feature has its own\n // internal state.\n //\n\n const undoStack: StackItem[] = [];\n const redoStack: StackItem[] = [];\n\n const canUndo = signal(false);\n const canRedo = signal(false);\n\n const updateInternal = () => {\n canUndo.set(undoStack.length !== 0);\n canRedo.set(redoStack.length !== 0);\n };\n\n const keys = getUndoRedoKeys(normalized?.collections);\n\n return signalStoreFeature(\n\n withComputed(() => ({\n canUndo: canUndo.asReadonly(),\n canRedo: canRedo.asReadonly()\n })),\n withMethods((store) => ({\n undo(): void {\n const item = undoStack.pop();\n\n if (item && previous) {\n redoStack.push(previous);\n }\n\n if (item) {\n skipOnce = true;\n patchState(store, item);\n previous = item;\n }\n\n updateInternal();\n },\n redo(): void {\n const item = redoStack.pop();\n\n if (item && previous) {\n undoStack.push(previous);\n }\n\n if (item) {\n skipOnce = true;\n patchState(store, item);\n previous = item;\n }\n\n updateInternal();\n }\n })),\n withHooks({\n onInit(store: Record<string, unknown>) {\n effect(() => {\n\n const cand = keys.reduce((acc, key) => {\n const s = store[key];\n if (s && isSignal(s)) {\n return {\n ...acc,\n [key]: s()\n }\n }\n return acc;\n }, {});\n\n if (skipOnce) {\n skipOnce = false;\n return;\n }\n\n // Clear redoStack after recorded action\n redoStack.splice(0);\n\n if (previous) {\n undoStack.push(previous);\n }\n\n if (redoStack.length > normalized.maxStackSize) {\n undoStack.unshift();\n }\n\n previous = cand;\n\n // Don't propogate current reactive context\n untracked(() => updateInternal());\n })\n }\n })\n\n )\n}\n","import { isPlatformServer } from '@angular/common';\nimport { PLATFORM_ID, effect, inject } from '@angular/core';\nimport {\n SignalStoreFeature,\n getState,\n patchState,\n signalStoreFeature,\n withHooks,\n withMethods,\n} from '@ngrx/signals';\nimport { Emtpy } from './shared/empty';\n\ntype SignalStoreFeatureInput<State> = Pick<\n Parameters<SignalStoreFeature>[0],\n 'signals' | 'methods'\n> & {\n state: State;\n};\n\nconst NOOP = () => {};\n\ntype WithStorageSyncFeatureResult = {\n state: Emtpy;\n signals: Emtpy;\n methods: {\n clearStorage(): void;\n readFromStorage(): void;\n writeToStorage(): void;\n };\n};\n\nconst StorageSyncStub: Pick<\n WithStorageSyncFeatureResult,\n 'methods'\n>['methods'] = {\n clearStorage: NOOP,\n readFromStorage: NOOP,\n writeToStorage: NOOP,\n};\n\nexport type SyncConfig<State> = {\n /**\n * The key which is used to access the storage.\n */\n key: string;\n /**\n * Flag indicating if the store should read from storage on init and write to storage on every state change.\n *\n * `true` by default\n */\n autoSync?: boolean;\n /**\n * Function to select that portion of the state which should be stored.\n *\n * Returns the whole state object by default\n */\n select?: (state: State) => Partial<State>;\n /**\n * Function used to parse the state coming from storage.\n *\n * `JSON.parse()` by default\n */\n parse?: (stateString: string) => State;\n /**\n * Function used to tranform the state into a string representation.\n *\n * `JSON.stringify()` by default\n */\n stringify?: (state: State) => string;\n /**\n * Factory function used to select the storage.\n *\n * `localstorage` by default\n */\n storage?: () => Storage;\n};\n\n/**\n * Enables store synchronization with storage.\n *\n * Only works on browser platform.\n */\nexport function withStorageSync<\n State extends object,\n Input extends SignalStoreFeatureInput<State>\n>(key: string): SignalStoreFeature<Input, WithStorageSyncFeatureResult>;\nexport function withStorageSync<\n State extends object,\n Input extends SignalStoreFeatureInput<State>\n>(\n config: SyncConfig<Input['state']>\n): SignalStoreFeature<Input, WithStorageSyncFeatureResult>;\nexport function withStorageSync<\n State extends object,\n Input extends SignalStoreFeatureInput<State>\n>(\n configOrKey: SyncConfig<Input['state']> | string\n): SignalStoreFeature<Input, WithStorageSyncFeatureResult> {\n const {\n key,\n autoSync = true,\n select = (state: State) => state,\n parse = JSON.parse,\n stringify = JSON.stringify,\n storage: storageFactory = () => localStorage,\n } = typeof configOrKey === 'string' ? { key: configOrKey } : configOrKey;\n\n return signalStoreFeature(\n withMethods((store, platformId = inject(PLATFORM_ID)) => {\n if (isPlatformServer(platformId)) {\n console.warn(\n `'withStorageSync' provides non-functional implementation due to server-side execution`\n );\n return StorageSyncStub;\n }\n\n const storage = storageFactory();\n\n return {\n /**\n * Removes the item stored in storage.\n */\n clearStorage(): void {\n storage.removeItem(key);\n },\n /**\n * Reads item from storage and patches the state.\n */\n readFromStorage(): void {\n const stateString = storage.getItem(key);\n if (stateString) {\n patchState(store, parse(stateString));\n }\n },\n /**\n * Writes selected portion to storage.\n */\n writeToStorage(): void {\n const slicedState = select(getState(store) as State);\n storage.setItem(key, stringify(slicedState));\n },\n };\n }),\n withHooks({\n onInit(store, platformId = inject(PLATFORM_ID)) {\n if (isPlatformServer(platformId)) {\n return;\n }\n\n if (autoSync) {\n store.readFromStorage();\n\n effect(() => {\n store.writeToStorage();\n });\n }\n },\n })\n );\n}\n","import { Action } from '@ngrx/store';\nimport { Unsubscribable } from 'rxjs';\n\n\nexport function isUnsubscribable<F extends (...args: unknown[]) => unknown>(\n fn: F | (F & Unsubscribable)\n): fn is F & Unsubscribable {\n return !!(fn as any as F & Unsubscribable)?.unsubscribe;\n}\n\nexport function capitalize(str: string): string {\n return str ? str[0].toUpperCase() + str.substring(1) : str;\n}\n\nexport function isActionCreator(action: any): action is Action {\n return (\n typeof action === 'function' &&\n action &&\n action.type &&\n typeof action.type === 'string'\n );\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { rxMethod } from \"@ngrx/signals/rxjs-interop\";\nimport { Action, ActionCreator } from \"@ngrx/store\";\nimport { pipe, tap } from \"rxjs\";\nimport { MapperTypes } from \"./model\";\nimport { isUnsubscribable } from \"./util\";\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SignalReduxStore {\n private mapperDict: Record<string, {\n storeMethod: (...args: unknown[]) => unknown,\n resultMethod?: (...args: unknown[]) => unknown,\n }> = {};\n\n dispatch = rxMethod<Action>(pipe(\n tap((action: Action) => {\n const callbacks = this.mapperDict[action.type];\n if (callbacks?.storeMethod) {\n if (\n isUnsubscribable(callbacks.storeMethod) &&\n callbacks.resultMethod\n ) {\n return callbacks.storeMethod(action, (a: Action) => {\n const resultAction = callbacks.resultMethod?.(a) as Action;\n this.dispatch(resultAction);\n });\n }\n\n return callbacks?.storeMethod(action);\n }\n\n return;\n })\n ));\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n connectFeatureStore(mappers: MapperTypes<ActionCreator<any, any>[]>[]): void {\n mappers.forEach(\n mapper => mapper.types.forEach(\n action => this.mapperDict[action] = {\n storeMethod: mapper.storeMethod,\n resultMethod: mapper.resultMethod\n }\n )\n );\n }\n}\n\nexport function injectReduxDispatch() {\n return inject(SignalReduxStore).dispatch;\n}\n","import { ENVIRONMENT_INITIALIZER, inject, makeEnvironmentProviders } from \"@angular/core\";\nimport { ActionCreator, ActionType } from \"@ngrx/store/src/models\";\nimport { CreateReduxState, ExtractActionTypes, MapperTypes, Store } from \"./model\";\nimport { SignalReduxStore, injectReduxDispatch } from \"./signal-redux-store\";\nimport { capitalize, isActionCreator } from \"./util\";\n\n\nexport function mapAction<\n Creators extends readonly ActionCreator[]\n>(\n ...args: [\n ...creators: Creators,\n storeMethod: (action: ActionType<Creators[number]>) => unknown\n ]\n): MapperTypes<Creators>;\nexport function mapAction<\n Creators extends readonly ActionCreator[],\n T\n>(\n ...args: [\n ...creators: Creators,\n storeMethod: (action: ActionType<Creators[number]>, resultMethod: (input: T) => unknown) => unknown,\n resultMethod: (input: T) => unknown\n ]\n): MapperTypes<Creators>;\nexport function mapAction<\n Creators extends readonly ActionCreator[]\n>(\n ...args: [\n ...creators: Creators,\n storeMethod: (action: ActionType<Creators[number]>) => unknown,\n resultMethod?: (input: unknown) => unknown\n ]\n): MapperTypes<Creators> {\n let resultMethod = args.pop() as unknown as ((input: unknown) => unknown ) | undefined;\n let storeMethod = args.pop() as unknown as (action: ActionType<Creators[number]>) => unknown;\n\n if (isActionCreator(storeMethod)) {\n args.push(storeMethod);\n storeMethod = resultMethod || storeMethod;\n resultMethod = undefined;\n }\n\n const types = (args as unknown as Creators).map(\n (creator) => creator.type\n ) as unknown as ExtractActionTypes<Creators>;\n\n return {\n types,\n storeMethod,\n resultMethod\n };\n}\n\nexport function withActionMappers(\n ...mappers: MapperTypes<ActionCreator<any, any>[]>[]\n): MapperTypes<ActionCreator<any, any>[]>[] {\n return mappers;\n}\n\nexport function createReduxState<\n StoreName extends string,\n STORE extends Store\n>(\n storeName: StoreName,\n signalStore: STORE,\n withActionMappers: (store: InstanceType<STORE>) => MapperTypes<ActionCreator<any, any>[]>[],\n): CreateReduxState<StoreName, STORE> {\n const isRootProvider = (signalStore as any)?.ɵprov?.providedIn === 'root';\n return {\n [`provide${capitalize(storeName)}Store`]: (connectReduxDevtools = false) => makeEnvironmentProviders([\n isRootProvider? [] : signalStore,\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: (\n signalReduxStore = inject(SignalReduxStore),\n store = inject(signalStore)\n ) => () => {\n if (connectReduxDevtools) {\n // addStoreToReduxDevtools(store, storeName, false);\n }\n signalReduxStore.connectFeatureStore(\n withActionMappers(store)\n );\n }\n }\n ]),\n [`inject${capitalize(storeName)}Store`]: () => Object.assign(\n inject(signalStore),\n { dispatch: injectReduxDispatch() }\n )\n } as CreateReduxState<StoreName, STORE>;\n}\n","import { Injector, Signal, inject } from \"@angular/core\";\nimport { rxMethod } from \"@ngrx/signals/rxjs-interop\";\nimport { Observable, Unsubscribable, map, pipe } from \"rxjs\";\n\n\ntype RxMethodInput<Input> = Input | Observable<Input> | Signal<Input>;\n\ntype RxMethod<Input, MethodInput = Input, MethodResult = unknown> = ((\n input: RxMethodInput<Input>,\n resultMethod: (input: MethodInput) => MethodResult\n) => Unsubscribable) & Unsubscribable;\n\nexport function reduxMethod<Input, MethodInput = Input>(\n generator: (source$: Observable<Input>) => Observable<MethodInput>,\n config?: { injector?: Injector }\n): RxMethod<Input, MethodInput>;\nexport function reduxMethod<Input, MethodInput = Input, MethodResult = unknown>(\n generator: (source$: Observable<Input>) => Observable<MethodInput>,\n resultMethod: (input: MethodInput) => MethodResult,\n config?: {\n injector?: Injector\n }\n): RxMethod<Input, MethodInput, MethodResult>;\nexport function reduxMethod<Input, MethodInput = Input, MethodResult = unknown>(\n generator: (source$: Observable<Input>) => Observable<MethodInput>,\n resultMethodOrConfig?: ((input: MethodInput) => MethodResult) | {\n injector?: Injector\n },\n config?: {\n injector?: Injector\n }\n): RxMethod<Input, MethodInput, MethodResult> {\n const injector = inject(Injector);\n\n if (typeof resultMethodOrConfig === 'function') {\n let unsubscribable: Unsubscribable;\n const inputResultFn = ((\n input: RxMethodInput<Input>,\n resultMethod = resultMethodOrConfig\n ) => {\n\n const rxMethodWithResult = rxMethod<Input>(pipe(\n generator,\n map(resultMethod)\n ), {\n ...(config || {}),\n injector: config?.injector || injector\n });\n const rxWithInput = rxMethodWithResult(input);\n unsubscribable = { unsubscribe: rxWithInput.unsubscribe.bind(rxWithInput) };\n\n return rxWithInput;\n }) as RxMethod<Input, MethodInput, MethodResult>;\n\n inputResultFn.unsubscribe = () => unsubscribable?.unsubscribe();\n\n return inputResultFn;\n }\n\n return rxMethod<Input>(generator, resultMethodOrConfig);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["originalPatchState","capitalize","patchState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-architects-ngrx-toolkit.mjs","sources":["../../../../libs/ngrx-toolkit/src/lib/with-devtools.ts","../../../../libs/ngrx-toolkit/src/lib/assertions/assertions.ts","../../../../libs/ngrx-toolkit/src/lib/with-redux.ts","../../../../libs/ngrx-toolkit/src/lib/with-call-state.ts","../../../../libs/ngrx-toolkit/src/lib/with-data-service.ts","../../../../libs/ngrx-toolkit/src/lib/with-undo-redo.ts","../../../../libs/ngrx-toolkit/src/lib/with-storage-sync.ts","../../../../libs/ngrx-toolkit/src/lib/redux-connector/util.ts","../../../../libs/ngrx-toolkit/src/lib/redux-connector/signal-redux-store.ts","../../../../libs/ngrx-toolkit/src/lib/redux-connector/create-redux.ts","../../../../libs/ngrx-toolkit/src/lib/redux-connector/rxjs-interop/redux-method.ts","../../../../libs/ngrx-toolkit/src/angular-architects-ngrx-toolkit.ts"],"sourcesContent":["import {\n patchState as originalPatchState,\n SignalStoreFeature,\n} from '@ngrx/signals';\nimport { SignalStoreFeatureResult } from '@ngrx/signals/src/signal-store-models';\nimport { effect, inject, PLATFORM_ID, signal, Signal } from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\n\ndeclare global {\n interface Window {\n __REDUX_DEVTOOLS_EXTENSION__:\n | {\n connect: (options: { name: string }) => {\n send: (action: Action, state: Record<string, unknown>) => void;\n };\n }\n | undefined;\n }\n}\n\ntype EmptyFeatureResult = { state: {}; signals: {}; methods: {} };\nexport type Action = { type: string };\n\nconst storeRegistry = signal<Record<string, Signal<unknown>>>({});\n\nlet currentActionNames = new Set<string>();\n\nlet synchronizationInitialized = false;\n\nfunction initSynchronization() {\n effect(() => {\n if (!connection) {\n return;\n }\n\n const stores = storeRegistry();\n const rootState: Record<string, unknown> = {};\n for (const name in stores) {\n const store = stores[name];\n rootState[name] = store();\n }\n\n const names = Array.from(currentActionNames);\n const type = names.length ? names.join(', ') : 'Store Update';\n currentActionNames = new Set<string>();\n\n connection.send({ type }, rootState);\n });\n}\n\nfunction getValueFromSymbol(obj: unknown, symbol: symbol) {\n if (typeof obj === 'object' && obj && symbol in obj) {\n return (obj as { [key: symbol]: any })[symbol];\n }\n}\n\nfunction getStoreSignal(store: unknown): Signal<unknown> {\n const [signalStateKey] = Object.getOwnPropertySymbols(store);\n if (!signalStateKey) {\n throw new Error('Cannot find State Signal');\n }\n\n return getValueFromSymbol(store, signalStateKey);\n}\n\ntype ConnectResponse = {\n send: (action: Action, state: Record<string, unknown>) => void;\n};\nlet connection: ConnectResponse | undefined;\n\n/**\n * required for testing. is not exported during build\n */\nexport function reset() {\n connection = undefined;\n synchronizationInitialized = false;\n storeRegistry.set({});\n}\n\n/**\n * @param name store's name as it should appear in the DevTools\n */\nexport function withDevtools<Input extends SignalStoreFeatureResult>(\n name: string\n): SignalStoreFeature<Input, EmptyFeatureResult> {\n return (store) => {\n const isServer = isPlatformServer(inject(PLATFORM_ID));\n if (isServer) {\n return store;\n }\n\n const extensions = window.__REDUX_DEVTOOLS_EXTENSION__;\n if (!extensions) {\n return store;\n }\n\n if (!connection) {\n connection = extensions.connect({\n name: 'NgRx Signal Store',\n });\n }\n\n const storeSignal = getStoreSignal(store);\n storeRegistry.update((value) => ({\n ...value,\n [name]: storeSignal,\n }));\n\n if (!synchronizationInitialized) {\n initSynchronization();\n synchronizationInitialized = true;\n }\n\n return store;\n };\n}\n\ntype PatchFn = typeof originalPatchState extends (\n arg1: infer First,\n ...args: infer Rest\n) => infer Returner\n ? (state: First, action: string, ...rest: Rest) => Returner\n : never;\n\n/**\n * @deprecated Has been renamed to `updateState`\n */\nexport const patchState: PatchFn = (state, action, ...rest) => {\n updateState(state, action, ...rest);\n};\n\n/**\n * Wrapper of `patchState` for DevTools integration. Next to updating the state,\n * it also sends the action to the DevTools.\n * @param state state of Signal Store\n * @param action name of action how it will show in DevTools\n * @param updaters updater functions or objects\n */\nexport const updateState: PatchFn = (state, action, ...updaters) => {\n currentActionNames.add(action);\n return originalPatchState(state, ...updaters);\n};\n","import { ActionsFnSpecs } from '../with-redux';\n\nexport function assertActionFnSpecs(\n obj: unknown\n): asserts obj is ActionsFnSpecs {\n if (!obj || typeof obj !== 'object') {\n throw new Error('%o is not an Action Specification');\n }\n}\n","import { Observable, Subject } from 'rxjs';\nimport { SignalStoreFeature } from '@ngrx/signals';\nimport {\n EmptyFeatureResult,\n SignalStoreFeatureResult,\n} from '@ngrx/signals/src/signal-store-models';\nimport { StateSignal } from '@ngrx/signals/src/state-signal';\nimport { assertActionFnSpecs } from './assertions/assertions';\n\n/** Actions **/\n\ntype Payload = Record<string, unknown>;\n\ntype ActionFn<\n Type extends string = string,\n ActionPayload extends Payload = Payload,\n> = ((payload: ActionPayload) => ActionPayload & { type: Type }) & {\n type: Type;\n};\n\ntype ActionFns = Record<string, ActionFn>;\n\nexport type ActionsFnSpecs = Record<string, Payload>;\n\ntype ActionFnCreator<Spec extends ActionsFnSpecs> = {\n [ActionName in keyof Spec]: (Record<never, never> extends Spec[ActionName]\n ? () => Spec[ActionName] & { type: ActionName }\n : (\n payload: Spec[ActionName],\n ) => Spec[ActionName] & { type: ActionName }) & {\n type: ActionName & string;\n };\n};\n\ntype ActionFnPayload<Action> = Action extends (payload: infer Payload) => void\n ? Payload\n : never;\n\ntype ActionFnsCreator<Spec extends ActionsFnSpecs> = Spec extends {\n private: Record<string, Payload>;\n public: Record<string, Payload>;\n}\n ? ActionFnCreator<Spec['private']> & ActionFnCreator<Spec['public']>\n : ActionFnCreator<Spec>;\n\ntype PublicActionFns<Spec extends ActionsFnSpecs> = Spec extends {\n public: Record<string, Payload>;\n}\n ? ActionFnCreator<Spec['public']>\n : ActionFnCreator<Spec>;\n\nexport function payload<Type extends Payload>(): Type {\n return {} as Type;\n}\n\nexport const noPayload = {};\n\n/** Reducer **/\n\ntype ReducerFunction<ReducerAction, State> = (\n state: State,\n action: ActionFnPayload<ReducerAction>,\n) => void;\n\ntype ReducerFactory<StateActionFns extends ActionFns, State> = (\n actions: StateActionFns,\n on: <ReducerAction extends { type: string }>(\n action: ReducerAction,\n reducerFn: ReducerFunction<ReducerAction, State>,\n ) => void,\n) => void;\n\n/** Effect **/\n\ntype EffectsFactory<StateActionFns extends ActionFns> = (\n actions: StateActionFns,\n create: <EffectAction extends { type: string }>(\n action: EffectAction,\n ) => Observable<ActionFnPayload<EffectAction>>,\n) => Record<string, Observable<unknown>>;\n\n// internal types\n\n/**\n * Record which holds all effects for a specific action type.\n * The values are Subject which the effect are subscribed to.\n * `createActionFns` will call next on these subjects.\n */\ntype EffectsRegistry = Record<string, Subject<ActionFnPayload<unknown>>[]>;\n\nfunction createActionFns<Spec extends ActionsFnSpecs>(\n actionFnSpecs: Spec,\n reducerRegistry: Record<\n string,\n (state: unknown, payload: ActionFnPayload<unknown>) => void\n >,\n effectsRegistry: EffectsRegistry,\n state: unknown,\n) {\n const actionFns: Record<string, ActionFn> = {};\n\n for (const type in actionFnSpecs) {\n const actionFn = (payload: Payload) => {\n const fullPayload = { ...payload, type };\n const reducer = reducerRegistry[type];\n if (reducer) {\n (reducer as (state: unknown, payload: unknown) => void)(\n state,\n fullPayload as unknown,\n );\n }\n const effectSubjects = effectsRegistry[type];\n if (effectSubjects?.length) {\n for (const effectSubject of effectSubjects) {\n (effectSubject as unknown as Subject<unknown>).next(fullPayload);\n }\n }\n return fullPayload;\n };\n actionFn.type = type.toString();\n actionFns[type] = actionFn;\n }\n\n return actionFns;\n}\n\nfunction createPublicAndAllActionsFns<Spec extends ActionsFnSpecs>(\n actionFnSpecs: Spec,\n reducerRegistry: Record<\n string,\n (state: unknown, payload: ActionFnPayload<unknown>) => void\n >,\n effectsRegistry: EffectsRegistry,\n state: unknown,\n): { all: ActionFns; publics: ActionFns } {\n if ('public' in actionFnSpecs || 'private' in actionFnSpecs) {\n const privates = actionFnSpecs['private'] || {};\n const publics = actionFnSpecs['public'] || {};\n\n assertActionFnSpecs(privates);\n assertActionFnSpecs(publics);\n\n const privateActionFns = createActionFns(\n privates,\n reducerRegistry,\n effectsRegistry,\n state,\n );\n const publicActionFns = createActionFns(\n publics,\n reducerRegistry,\n effectsRegistry,\n state,\n );\n\n return {\n all: { ...privateActionFns, ...publicActionFns },\n publics: publicActionFns,\n };\n }\n\n const actionFns = createActionFns(\n actionFnSpecs,\n reducerRegistry,\n effectsRegistry,\n state,\n );\n\n return { all: actionFns, publics: actionFns };\n}\n\nfunction fillReducerRegistry(\n reducer: ReducerFactory<ActionFns, unknown>,\n actionFns: ActionFns,\n reducerRegistry: Record<\n string,\n (state: unknown, payload: ActionFnPayload<unknown>) => void\n >,\n) {\n function on(\n action: { type: string },\n reducerFn: (state: unknown, payload: ActionFnPayload<unknown>) => void,\n ) {\n reducerRegistry[action.type] = reducerFn;\n }\n\n reducer(actionFns, on);\n\n return reducerRegistry;\n}\n\nfunction fillEffects(\n effects: EffectsFactory<ActionFns>,\n actionFns: ActionFns,\n effectsRegistry: EffectsRegistry = {},\n): Observable<unknown>[] {\n function create(action: { type: string }) {\n const subject = new Subject<ActionFnPayload<unknown>>();\n if (!(action.type in effectsRegistry)) {\n effectsRegistry[action.type] = [];\n }\n effectsRegistry[action.type].push(subject);\n return subject.asObservable();\n }\n\n const effectObservables = effects(actionFns, create);\n return Object.values(effectObservables);\n}\n\nfunction startSubscriptions(observables: Observable<unknown>[]) {\n return observables.map((observable) => observable.subscribe());\n}\n\nfunction processRedux<Spec extends ActionsFnSpecs, ReturnType>(\n actionFnSpecs: Spec,\n reducer: ReducerFactory<ActionFns, unknown>,\n effects: EffectsFactory<ActionFns>,\n store: unknown,\n) {\n const reducerRegistry: Record<\n string,\n (state: unknown, payload: ActionFnPayload<unknown>) => void\n > = {};\n const effectsRegistry: Record<string, Subject<ActionFnPayload<unknown>>[]> =\n {};\n const actionsMap = createPublicAndAllActionsFns(\n actionFnSpecs,\n reducerRegistry,\n effectsRegistry,\n store,\n );\n const actionFns = actionsMap.all;\n const publicActionsFns = actionsMap.publics;\n\n fillReducerRegistry(reducer, actionFns, reducerRegistry);\n const effectObservables = fillEffects(effects, actionFns, effectsRegistry);\n const subscriptions = startSubscriptions(effectObservables);\n\n return {\n methods: publicActionsFns as ReturnType,\n subscriptions: subscriptions,\n };\n}\n\n/**\n * @param redux redux\n *\n * properties do not start with `with` since they are not extension functions on their own.\n *\n * no dependency to NgRx\n *\n * actions are passed to reducer and effects, but it is also possible to use other actions.\n * effects provide forAction and do not return anything. that is important because effects should stay inaccessible\n */\nexport function withRedux<\n Spec extends ActionsFnSpecs,\n Input extends SignalStoreFeatureResult,\n StateActionFns extends ActionFnsCreator<Spec> = ActionFnsCreator<Spec>,\n PublicStoreActionFns extends PublicActionFns<Spec> = PublicActionFns<Spec>,\n>(redux: {\n actions: Spec;\n reducer: ReducerFactory<StateActionFns, StateSignal<Input['state']>>;\n effects: EffectsFactory<StateActionFns>;\n}): SignalStoreFeature<\n Input,\n EmptyFeatureResult & { methods: PublicStoreActionFns }\n> {\n return (store) => {\n const { methods } = processRedux<Spec, PublicStoreActionFns>(\n redux.actions,\n redux.reducer as ReducerFactory<ActionFns, unknown>,\n redux.effects as EffectsFactory<ActionFns>,\n store,\n );\n return {\n ...store,\n methods,\n };\n };\n}\n","import { Signal, computed } from '@angular/core';\nimport {\n SignalStoreFeature,\n signalStoreFeature,\n withComputed,\n withState,\n} from '@ngrx/signals';\nimport { Emtpy } from './shared/empty';\n\nexport type CallState = 'init' | 'loading' | 'loaded' | { error: string };\n\nexport type CallStateSlice = {\n callState: CallState\n}\n\nexport type NamedCallStateSlice<Collection extends string> = {\n [K in keyof CallStateSlice as `${Collection}${Capitalize<K>}`]: CallStateSlice[K];\n}\n\nexport type CallStateSignals = {\n loading: Signal<boolean>;\n loaded: Signal<boolean>;\n error: Signal<string | null>\n}\n\nexport type NamedCallStateSignals<Prop extends string> = {\n [K in keyof CallStateSignals as `${Prop}${Capitalize<K>}`]: CallStateSignals[K];\n}\n\nexport type SetCallState<Prop extends string | undefined> = Prop extends string\n ? NamedCallStateSlice<Prop>\n : CallStateSlice;\n\nexport function getCallStateKeys(config?: { collection?: string }) {\n const prop = config?.collection;\n return {\n callStateKey: prop ? `${config.collection}CallState` : 'callState',\n loadingKey: prop ? `${config.collection}Loading` : 'loading',\n loadedKey: prop ? `${config.collection}Loaded` : 'loaded',\n errorKey: prop ? `${config.collection}Error` : 'error',\n };\n}\n\nexport function withCallState<Collection extends string>(config: {\n collection: Collection;\n}): SignalStoreFeature<\n { state: Emtpy, signals: Emtpy, methods: Emtpy },\n {\n state: NamedCallStateSlice<Collection>,\n signals: NamedCallStateSignals<Collection>,\n methods: Emtpy\n }\n>;\nexport function withCallState(): SignalStoreFeature<\n { state: Emtpy, signals: Emtpy, methods: Emtpy },\n {\n state: CallStateSlice,\n signals: CallStateSignals,\n methods: Emtpy\n }\n>;\nexport function withCallState<Collection extends string>(config?: {\n collection: Collection;\n}): SignalStoreFeature {\n const { callStateKey, errorKey, loadedKey, loadingKey } =\n getCallStateKeys(config);\n\n return signalStoreFeature(\n withState({ [callStateKey]: 'init' }),\n withComputed((state: Record<string, Signal<unknown>>) => {\n\n const callState = state[callStateKey] as Signal<CallState>;\n\n return {\n [loadingKey]: computed(() => callState() === 'loading'),\n [loadedKey]: computed(() => callState() === 'loaded'),\n [errorKey]: computed(() => {\n const v = callState();\n return typeof v === 'object' ? v.error : null;\n })\n }\n })\n );\n}\n\nexport function setLoading<Prop extends string | undefined = undefined>(\n prop?: Prop\n): SetCallState<Prop> {\n if (prop) {\n return { [`${prop}CallState`]: 'loading' } as SetCallState<Prop>;\n }\n\n return { callState: 'loading' } as SetCallState<Prop>;\n}\n\nexport function setLoaded<Prop extends string | undefined = undefined>(\n prop?: Prop\n): SetCallState<Prop> {\n\n if (prop) {\n return { [`${prop}CallState`]: 'loaded' } as SetCallState<Prop>;\n }\n else {\n return { callState: 'loaded' } as SetCallState<Prop>;\n }\n}\n\nexport function setError<Prop extends string | undefined = undefined>(\n error: unknown,\n prop?: Prop,\n ): SetCallState<Prop> {\n\n let errorMessage = '';\n\n if (!error) {\n errorMessage = '';\n }\n else if (typeof error === 'object' && 'message' in error) {\n errorMessage = String(error.message);\n }\n else {\n errorMessage = String(error);\n }\n \n\n if (prop) {\n return { [`${prop}CallState`]: { error: errorMessage } } as SetCallState<Prop>;\n }\n else {\n return { callState: { error: errorMessage } } as SetCallState<Prop>;\n }\n}\n","import { ProviderToken, Signal, computed, inject } from \"@angular/core\";\nimport { SignalStoreFeature, patchState, signalStoreFeature, withComputed, withMethods, withState } from \"@ngrx/signals\";\nimport { CallState, getCallStateKeys, setError, setLoaded, setLoading } from \"./with-call-state\";\nimport { setAllEntities, EntityId, addEntity, updateEntity, removeEntity } from \"@ngrx/signals/entities\";\nimport { EntityState, NamedEntitySignals } from \"@ngrx/signals/entities/src/models\";\nimport { StateSignal } from \"@ngrx/signals/src/state-signal\";\nimport { Emtpy } from \"./shared/empty\";\n\nexport type Filter = Record<string, unknown>;\nexport type Entity = { id: EntityId };\n\nexport interface DataService<E extends Entity, F extends Filter> {\n load(filter: F): Promise<E[]>;\n loadById(id: EntityId): Promise<E>;\n create(entity: E): Promise<E>;\n update(entity: E): Promise<E>;\n updateAll(entity: E[]): Promise<E[]>;\n delete(entity: E): Promise<void>;\n}\n\nexport function capitalize(str: string): string {\n return str ? str[0].toUpperCase() + str.substring(1) : str;\n}\n\nexport function getDataServiceKeys(options: { collection?: string }) {\n const filterKey = options.collection ? `${options.collection}Filter` : 'filter';\n const selectedIdsKey = options.collection ? `selected${capitalize(options.collection)}Ids` : 'selectedIds';\n const selectedEntitiesKey = options.collection ? `selected${capitalize(options.collection)}Entities` : 'selectedEntities';\n\n const updateFilterKey = options.collection ? `update${capitalize(options.collection)}Filter` : 'updateFilter';\n const updateSelectedKey = options.collection ? `updateSelected${capitalize(options.collection)}Entities` : 'updateSelected';\n const loadKey = options.collection ? `load${capitalize(options.collection)}Entities` : 'load';\n\n const currentKey = options.collection ? `current${capitalize(options.collection)}` : 'current';\n const loadByIdKey = options.collection ? `load${capitalize(options.collection)}ById` : 'loadById';\n const setCurrentKey = options.collection ? `setCurrent${capitalize(options.collection)}` : 'setCurrent';\n const createKey = options.collection ? `create${capitalize(options.collection)}` : 'create';\n const updateKey = options.collection ? `update${capitalize(options.collection)}` : 'update';\n const updateAllKey = options.collection ? `updateAll${capitalize(options.collection)}` : 'updateAll';\n const deleteKey = options.collection ? `delete${capitalize(options.collection)}` : 'delete';\n\n // TODO: Take these from @ngrx/signals/entities, when they are exported\n const entitiesKey = options.collection ? `${options.collection}Entities` : 'entities';\n const entityMapKey = options.collection ? `${options.collection}EntityMap` : 'entityMap';\n const idsKey = options.collection ? `${options.collection}Ids` : 'ids';\n\n return {\n filterKey,\n selectedIdsKey,\n selectedEntitiesKey,\n updateFilterKey,\n updateSelectedKey,\n loadKey,\n entitiesKey,\n entityMapKey,\n idsKey,\n\n currentKey,\n loadByIdKey,\n setCurrentKey,\n createKey,\n updateKey,\n updateAllKey,\n deleteKey\n };\n}\n\nexport type NamedDataServiceState<E extends Entity, F extends Filter, Collection extends string> =\n {\n [K in Collection as `${K}Filter`]: F;\n } & {\n [K in Collection as `selected${Capitalize<K>}Ids`]: Record<EntityId, boolean>;\n } & {\n [K in Collection as `current${Capitalize<K>}`]: E;\n }\n\nexport type DataServiceState<E extends Entity, F extends Filter> = {\n filter: F;\n selectedIds: Record<EntityId, boolean>;\n current: E;\n}\n\nexport type NamedDataServiceSignals<E extends Entity, Collection extends string> =\n {\n [K in Collection as `selected${Capitalize<K>}Entities`]: Signal<E[]>;\n }\n\nexport type DataServiceSignals<E extends Entity> =\n {\n selectedEntities: Signal<E[]>;\n }\n\nexport type NamedDataServiceMethods<E extends Entity, F extends Filter, Collection extends string> =\n {\n [K in Collection as `update${Capitalize<K>}Filter`]: (filter: F) => void;\n } &\n {\n [K in Collection as `updateSelected${Capitalize<K>}Entities`]: (id: EntityId, selected: boolean) => void;\n } &\n {\n [K in Collection as `load${Capitalize<K>}Entities`]: () => Promise<void>;\n } &\n\n {\n [K in Collection as `setCurrent${Capitalize<K>}`]: (entity: E) => void;\n } &\n {\n [K in Collection as `load${Capitalize<K>}ById`]: (id: EntityId) => Promise<void>;\n } &\n {\n [K in Collection as `create${Capitalize<K>}`]: (entity: E) => Promise<void>;\n } &\n {\n [K in Collection as `update${Capitalize<K>}`]: (entity: E) => Promise<void>;\n } &\n {\n [K in Collection as `updateAll${Capitalize<K>}`]: (entity: E[]) => Promise<void>;\n } &\n {\n [K in Collection as `delete${Capitalize<K>}`]: (entity: E) => Promise<void>;\n };\n\n\nexport type DataServiceMethods<E extends Entity, F extends Filter> =\n {\n updateFilter: (filter: F) => void;\n updateSelected: (id: EntityId, selected: boolean) => void;\n load: () => Promise<void>;\n\n setCurrent(entity: E): void;\n loadById(id: EntityId): Promise<void>;\n create(entity: E): Promise<void>;\n update(entity: E): Promise<void>;\n updateAll(entities: E[]): Promise<void>;\n delete(entity: E): Promise<void>;\n }\n\nexport type Empty = Record<string, never>\n\nexport function withDataService<E extends Entity, F extends Filter, Collection extends string>(options: { dataServiceType: ProviderToken<DataService<E, F>>, filter: F, collection: Collection }): SignalStoreFeature<\n {\n state: Emtpy,\n // These alternatives break type inference:\n // state: { callState: CallState } & NamedEntityState<E, Collection>,\n // state: NamedEntityState<E, Collection>,\n\n signals: NamedEntitySignals<E, Collection>,\n methods: Emtpy,\n },\n {\n state: NamedDataServiceState<E, F, Collection>\n signals: NamedDataServiceSignals<E, Collection>\n methods: NamedDataServiceMethods<E, F, Collection>\n }\n>;\nexport function withDataService<E extends Entity, F extends Filter>(options: { dataServiceType: ProviderToken<DataService<E, F>>, filter: F }): SignalStoreFeature<\n {\n state: { callState: CallState } & EntityState<E>\n signals: Emtpy,\n methods: Emtpy,\n },\n {\n state: DataServiceState<E, F>\n signals: DataServiceSignals<E>\n methods: DataServiceMethods<E, F>\n }>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withDataService<E extends Entity, F extends Filter, Collection extends string>(options: { dataServiceType: ProviderToken<DataService<E, F>>, filter: F, collection?: Collection }): SignalStoreFeature<any, any> {\n const { dataServiceType, filter, collection: prefix } = options;\n const {\n entitiesKey,\n filterKey,\n loadKey,\n selectedEntitiesKey,\n selectedIdsKey,\n updateFilterKey,\n updateSelectedKey,\n\n currentKey,\n createKey,\n updateKey,\n updateAllKey,\n deleteKey,\n loadByIdKey,\n setCurrentKey\n } = getDataServiceKeys(options);\n\n const { callStateKey } = getCallStateKeys({ collection: prefix });\n\n return signalStoreFeature(\n withState(() => ({\n [filterKey]: filter,\n [selectedIdsKey]: {} as Record<EntityId, boolean>,\n [currentKey]: undefined as E | undefined\n })),\n withComputed((store: Record<string, unknown>) => {\n const entities = store[entitiesKey] as Signal<E[]>;\n const selectedIds = store[selectedIdsKey] as Signal<Record<EntityId, boolean>>;\n\n return {\n [selectedEntitiesKey]: computed(() => entities().filter(e => selectedIds()[e.id]))\n }\n }),\n withMethods((store: Record<string, unknown> & StateSignal<object>) => {\n const dataService = inject(dataServiceType)\n return {\n [updateFilterKey]: (filter: F): void => {\n patchState(store, { [filterKey]: filter });\n },\n [updateSelectedKey]: (id: EntityId, selected: boolean): void => {\n patchState(store, (state: Record<string, unknown>) => ({\n [selectedIdsKey]: {\n ...state[selectedIdsKey] as Record<EntityId, boolean>,\n [id]: selected,\n }\n }));\n },\n [loadKey]: async (): Promise<void> => {\n const filter = store[filterKey] as Signal<F>;\n store[callStateKey] && patchState(store, setLoading(prefix));\n\n try {\n const result = await dataService.load(filter());\n patchState(store, prefix ? setAllEntities(result, { collection: prefix }) : setAllEntities(result));\n store[callStateKey] && patchState(store, setLoaded(prefix));\n }\n catch (e) {\n store[callStateKey] && patchState(store, setError(e, prefix));\n throw e;\n }\n },\n [loadByIdKey]: async (id: EntityId): Promise<void> => {\n store[callStateKey] && patchState(store, setLoading(prefix));\n\n try {\n const current = await dataService.loadById(id);\n store[callStateKey] && patchState(store, setLoaded(prefix));\n patchState(store, { [currentKey]: current });\n }\n catch (e) {\n store[callStateKey] && patchState(store, setError(e, prefix));\n throw e;\n }\n },\n [setCurrentKey]: (current: E): void => {\n patchState(store, { [currentKey]: current });\n },\n [createKey]: async (entity: E): Promise<void> => {\n patchState(store, { [currentKey]: entity });\n store[callStateKey] && patchState(store, setLoading(prefix));\n\n try {\n const created = await dataService.create(entity);\n patchState(store, { [currentKey]: created });\n patchState(store, prefix ? addEntity(created, { collection: prefix }) : addEntity(created));\n store[callStateKey] && patchState(store, setLoaded(prefix));\n }\n catch (e) {\n store[callStateKey] && patchState(store, setError(e, prefix));\n throw e;\n }\n },\n [updateKey]: async (entity: E): Promise<void> => {\n patchState(store, { [currentKey]: entity });\n store[callStateKey] && patchState(store, setLoading(prefix));\n\n try {\n const updated = await dataService.update(entity);\n patchState(store, { [currentKey]: updated });\n // Why do we need this cast to Partial<Entity>?\n const updateArg = { id: updated.id, changes: updated as Partial<Entity> };\n patchState(store, prefix ? updateEntity(updateArg, { collection: prefix }) : updateEntity(updateArg));\n store[callStateKey] && patchState(store, setLoaded(prefix));\n }\n catch (e) {\n store[callStateKey] && patchState(store, setError(e, prefix));\n throw e;\n }\n },\n [updateAllKey]: async (entities: E[]): Promise<void> => {\n store[callStateKey] && patchState(store, setLoading(prefix));\n\n try {\n const result = await dataService.updateAll(entities);\n patchState(store, prefix ? setAllEntities(result, { collection: prefix }) : setAllEntities(result));\n store[callStateKey] && patchState(store, setLoaded(prefix));\n }\n catch (e) {\n store[callStateKey] && patchState(store, setError(e, prefix));\n throw e;\n }\n },\n [deleteKey]: async (entity: E): Promise<void> => {\n patchState(store, { [currentKey]: entity });\n store[callStateKey] && patchState(store, setLoading(prefix));\n\n try {\n await dataService.delete(entity);\n patchState(store, { [currentKey]: undefined });\n patchState(store, prefix ? removeEntity(entity.id, { collection: prefix }) : removeEntity(entity.id));\n store[callStateKey] && patchState(store, setLoaded(prefix));\n }\n catch (e) {\n store[callStateKey] && patchState(store, setError(e, prefix));\n throw e;\n }\n },\n };\n })\n );\n}\n","import { SignalStoreFeature, patchState, signalStoreFeature, withComputed, withHooks, withMethods } from \"@ngrx/signals\";\nimport { EntityId, EntityMap, EntityState } from \"@ngrx/signals/entities\";\nimport { Signal, effect, signal, untracked, isSignal } from \"@angular/core\";\nimport { EntitySignals, NamedEntitySignals } from \"@ngrx/signals/entities/src/models\";\nimport { Entity, capitalize } from \"./with-data-service\";\nimport { Emtpy } from \"./shared/empty\";\n\nexport type StackItem = Record<string, unknown>;\n\nexport type NormalizedUndoRedoOptions = {\n maxStackSize: number;\n collections?: string[]\n}\n\nconst defaultOptions: NormalizedUndoRedoOptions = {\n maxStackSize: 100\n};\n\nexport type NamedUndoRedoState<Collection extends string> = {\n [K in Collection as `${K}EntityMap`]: EntityMap<Entity>;\n} & {\n [K in Collection as `${K}Ids`]: EntityId[];\n }\n\nexport type NamedUndoRedoSignals<Collection extends string> = {\n [K in Collection as `${K}Entities`]: Signal<Entity[]>\n}\n\nexport function getUndoRedoKeys(collections?: string[]): string[] {\n if (collections) {\n return collections.flatMap(c => [`${c}EntityMap`, `${c}Ids`, `selected${capitalize(c)}Ids`, `${c}Filter`])\n }\n return ['entityMap', 'ids', 'selectedIds', 'filter'];\n}\n\nexport function withUndoRedo<Collection extends string>(options?: { maxStackSize?: number; collections: Collection[] }): SignalStoreFeature<\n {\n state: Emtpy,\n // This alternative breaks type inference:\n // state: NamedEntityState<Entity, Collection>\n signals: NamedEntitySignals<Entity, Collection>,\n methods: Emtpy\n },\n {\n state: Emtpy,\n signals: {\n canUndo: Signal<boolean>,\n canRedo: Signal<boolean>\n },\n methods: {\n undo: () => void,\n redo: () => void\n }\n }>;\n\nexport function withUndoRedo(options?: { maxStackSize?: number }): SignalStoreFeature<\n {\n state: EntityState<Entity>,\n signals: EntitySignals<Entity>,\n methods: Emtpy\n },\n {\n state: Emtpy,\n signals: {\n canUndo: Signal<boolean>,\n canRedo: Signal<boolean>\n },\n methods: {\n undo: () => void,\n redo: () => void\n }\n }>;\n\nexport function withUndoRedo<Collection extends string>(options: {\n maxStackSize?: number;\n collections?: Collection[]\n} = {}): \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nSignalStoreFeature<any, any> {\n let previous: StackItem | null = null;\n let skipOnce = false;\n\n const normalized = {\n ...defaultOptions,\n ...options\n };\n\n //\n // Design Decision: This feature has its own\n // internal state.\n //\n\n const undoStack: StackItem[] = [];\n const redoStack: StackItem[] = [];\n\n const canUndo = signal(false);\n const canRedo = signal(false);\n\n const updateInternal = () => {\n canUndo.set(undoStack.length !== 0);\n canRedo.set(redoStack.length !== 0);\n };\n\n const keys = getUndoRedoKeys(normalized?.collections);\n\n return signalStoreFeature(\n\n withComputed(() => ({\n canUndo: canUndo.asReadonly(),\n canRedo: canRedo.asReadonly()\n })),\n withMethods((store) => ({\n undo(): void {\n const item = undoStack.pop();\n\n if (item && previous) {\n redoStack.push(previous);\n }\n\n if (item) {\n skipOnce = true;\n patchState(store, item);\n previous = item;\n }\n\n updateInternal();\n },\n redo(): void {\n const item = redoStack.pop();\n\n if (item && previous) {\n undoStack.push(previous);\n }\n\n if (item) {\n skipOnce = true;\n patchState(store, item);\n previous = item;\n }\n\n updateInternal();\n }\n })),\n withHooks({\n onInit(store: Record<string, unknown>) {\n effect(() => {\n\n const cand = keys.reduce((acc, key) => {\n const s = store[key];\n if (s && isSignal(s)) {\n return {\n ...acc,\n [key]: s()\n }\n }\n return acc;\n }, {});\n\n if (skipOnce) {\n skipOnce = false;\n return;\n }\n\n // Clear redoStack after recorded action\n redoStack.splice(0);\n\n if (previous) {\n undoStack.push(previous);\n }\n\n if (redoStack.length > normalized.maxStackSize) {\n undoStack.unshift();\n }\n\n previous = cand;\n\n // Don't propogate current reactive context\n untracked(() => updateInternal());\n })\n }\n })\n\n )\n}\n","import { isPlatformServer } from '@angular/common';\nimport { PLATFORM_ID, effect, inject } from '@angular/core';\nimport {\n SignalStoreFeature,\n getState,\n patchState,\n signalStoreFeature,\n withHooks,\n withMethods,\n} from '@ngrx/signals';\nimport { Emtpy } from './shared/empty';\n\ntype SignalStoreFeatureInput<State> = Pick<\n Parameters<SignalStoreFeature>[0],\n 'signals' | 'methods'\n> & {\n state: State;\n};\n\nconst NOOP = () => {};\n\ntype WithStorageSyncFeatureResult = {\n state: Emtpy;\n signals: Emtpy;\n methods: {\n clearStorage(): void;\n readFromStorage(): void;\n writeToStorage(): void;\n };\n};\n\nconst StorageSyncStub: Pick<\n WithStorageSyncFeatureResult,\n 'methods'\n>['methods'] = {\n clearStorage: NOOP,\n readFromStorage: NOOP,\n writeToStorage: NOOP,\n};\n\nexport type SyncConfig<State> = {\n /**\n * The key which is used to access the storage.\n */\n key: string;\n /**\n * Flag indicating if the store should read from storage on init and write to storage on every state change.\n *\n * `true` by default\n */\n autoSync?: boolean;\n /**\n * Function to select that portion of the state which should be stored.\n *\n * Returns the whole state object by default\n */\n select?: (state: State) => Partial<State>;\n /**\n * Function used to parse the state coming from storage.\n *\n * `JSON.parse()` by default\n */\n parse?: (stateString: string) => State;\n /**\n * Function used to tranform the state into a string representation.\n *\n * `JSON.stringify()` by default\n */\n stringify?: (state: State) => string;\n /**\n * Factory function used to select the storage.\n *\n * `localstorage` by default\n */\n storage?: () => Storage;\n};\n\n/**\n * Enables store synchronization with storage.\n *\n * Only works on browser platform.\n */\nexport function withStorageSync<\n State extends object,\n Input extends SignalStoreFeatureInput<State>\n>(key: string): SignalStoreFeature<Input, WithStorageSyncFeatureResult>;\nexport function withStorageSync<\n State extends object,\n Input extends SignalStoreFeatureInput<State>\n>(\n config: SyncConfig<Input['state']>\n): SignalStoreFeature<Input, WithStorageSyncFeatureResult>;\nexport function withStorageSync<\n State extends object,\n Input extends SignalStoreFeatureInput<State>\n>(\n configOrKey: SyncConfig<Input['state']> | string\n): SignalStoreFeature<Input, WithStorageSyncFeatureResult> {\n const {\n key,\n autoSync = true,\n select = (state: State) => state,\n parse = JSON.parse,\n stringify = JSON.stringify,\n storage: storageFactory = () => localStorage,\n } = typeof configOrKey === 'string' ? { key: configOrKey } : configOrKey;\n\n return signalStoreFeature(\n withMethods((store, platformId = inject(PLATFORM_ID)) => {\n if (isPlatformServer(platformId)) {\n console.warn(\n `'withStorageSync' provides non-functional implementation due to server-side execution`\n );\n return StorageSyncStub;\n }\n\n const storage = storageFactory();\n\n return {\n /**\n * Removes the item stored in storage.\n */\n clearStorage(): void {\n storage.removeItem(key);\n },\n /**\n * Reads item from storage and patches the state.\n */\n readFromStorage(): void {\n const stateString = storage.getItem(key);\n if (stateString) {\n patchState(store, parse(stateString));\n }\n },\n /**\n * Writes selected portion to storage.\n */\n writeToStorage(): void {\n const slicedState = select(getState(store) as State);\n storage.setItem(key, stringify(slicedState));\n },\n };\n }),\n withHooks({\n onInit(store, platformId = inject(PLATFORM_ID)) {\n if (isPlatformServer(platformId)) {\n return;\n }\n\n if (autoSync) {\n store.readFromStorage();\n\n effect(() => {\n store.writeToStorage();\n });\n }\n },\n })\n );\n}\n","import { Action } from '@ngrx/store';\nimport { Unsubscribable } from 'rxjs';\n\n\nexport function isUnsubscribable<F extends (...args: unknown[]) => unknown>(\n fn: F | (F & Unsubscribable)\n): fn is F & Unsubscribable {\n return !!(fn as any as F & Unsubscribable)?.unsubscribe;\n}\n\nexport function capitalize(str: string): string {\n return str ? str[0].toUpperCase() + str.substring(1) : str;\n}\n\nexport function isActionCreator(action: any): action is Action {\n return (\n typeof action === 'function' &&\n action &&\n action.type &&\n typeof action.type === 'string'\n );\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { rxMethod } from \"@ngrx/signals/rxjs-interop\";\nimport { Action, ActionCreator } from \"@ngrx/store\";\nimport { pipe, tap } from \"rxjs\";\nimport { MapperTypes } from \"./model\";\nimport { isUnsubscribable } from \"./util\";\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SignalReduxStore {\n private mapperDict: Record<string, {\n storeMethod: (...args: unknown[]) => unknown,\n resultMethod?: (...args: unknown[]) => unknown,\n }> = {};\n\n dispatch = rxMethod<Action>(pipe(\n tap((action: Action) => {\n const callbacks = this.mapperDict[action.type];\n if (callbacks?.storeMethod) {\n if (\n isUnsubscribable(callbacks.storeMethod) &&\n callbacks.resultMethod\n ) {\n return callbacks.storeMethod(action, (a: Action) => {\n const resultAction = callbacks.resultMethod?.(a) as Action;\n this.dispatch(resultAction);\n });\n }\n\n return callbacks?.storeMethod(action);\n }\n\n return;\n })\n ));\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n connectFeatureStore(mappers: MapperTypes<ActionCreator<any, any>[]>[]): void {\n mappers.forEach(\n mapper => mapper.types.forEach(\n action => this.mapperDict[action] = {\n storeMethod: mapper.storeMethod,\n resultMethod: mapper.resultMethod\n }\n )\n );\n }\n}\n\nexport function injectReduxDispatch() {\n return inject(SignalReduxStore).dispatch;\n}\n","import { ENVIRONMENT_INITIALIZER, inject, makeEnvironmentProviders } from \"@angular/core\";\nimport { ActionCreator, ActionType } from \"@ngrx/store/src/models\";\nimport { CreateReduxState, ExtractActionTypes, MapperTypes, Store } from \"./model\";\nimport { SignalReduxStore, injectReduxDispatch } from \"./signal-redux-store\";\nimport { capitalize, isActionCreator } from \"./util\";\n\n\nexport function mapAction<\n Creators extends readonly ActionCreator[]\n>(\n ...args: [\n ...creators: Creators,\n storeMethod: (action: ActionType<Creators[number]>) => unknown\n ]\n): MapperTypes<Creators>;\nexport function mapAction<\n Creators extends readonly ActionCreator[],\n T\n>(\n ...args: [\n ...creators: Creators,\n storeMethod: (action: ActionType<Creators[number]>, resultMethod: (input: T) => unknown) => unknown,\n resultMethod: (input: T) => unknown\n ]\n): MapperTypes<Creators>;\nexport function mapAction<\n Creators extends readonly ActionCreator[]\n>(\n ...args: [\n ...creators: Creators,\n storeMethod: (action: ActionType<Creators[number]>) => unknown,\n resultMethod?: (input: unknown) => unknown\n ]\n): MapperTypes<Creators> {\n let resultMethod = args.pop() as unknown as ((input: unknown) => unknown ) | undefined;\n let storeMethod = args.pop() as unknown as (action: ActionType<Creators[number]>) => unknown;\n\n if (isActionCreator(storeMethod)) {\n args.push(storeMethod);\n storeMethod = resultMethod || storeMethod;\n resultMethod = undefined;\n }\n\n const types = (args as unknown as Creators).map(\n (creator) => creator.type\n ) as unknown as ExtractActionTypes<Creators>;\n\n return {\n types,\n storeMethod,\n resultMethod\n };\n}\n\nexport function withActionMappers(\n ...mappers: MapperTypes<ActionCreator<any, any>[]>[]\n): MapperTypes<ActionCreator<any, any>[]>[] {\n return mappers;\n}\n\nexport function createReduxState<\n StoreName extends string,\n STORE extends Store\n>(\n storeName: StoreName,\n signalStore: STORE,\n withActionMappers: (store: InstanceType<STORE>) => MapperTypes<ActionCreator<any, any>[]>[],\n): CreateReduxState<StoreName, STORE> {\n const isRootProvider = (signalStore as any)?.ɵprov?.providedIn === 'root';\n return {\n [`provide${capitalize(storeName)}Store`]: (connectReduxDevtools = false) => makeEnvironmentProviders([\n isRootProvider? [] : signalStore,\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: (\n signalReduxStore = inject(SignalReduxStore),\n store = inject(signalStore)\n ) => () => {\n if (connectReduxDevtools) {\n // addStoreToReduxDevtools(store, storeName, false);\n }\n signalReduxStore.connectFeatureStore(\n withActionMappers(store)\n );\n }\n }\n ]),\n [`inject${capitalize(storeName)}Store`]: () => Object.assign(\n inject(signalStore),\n { dispatch: injectReduxDispatch() }\n )\n } as CreateReduxState<StoreName, STORE>;\n}\n","import { Injector, Signal, inject } from \"@angular/core\";\nimport { rxMethod } from \"@ngrx/signals/rxjs-interop\";\nimport { Observable, Unsubscribable, map, pipe } from \"rxjs\";\n\n\ntype RxMethodInput<Input> = Input | Observable<Input> | Signal<Input>;\n\ntype RxMethod<Input, MethodInput = Input, MethodResult = unknown> = ((\n input: RxMethodInput<Input>,\n resultMethod: (input: MethodInput) => MethodResult\n) => Unsubscribable) & Unsubscribable;\n\nexport function reduxMethod<Input, MethodInput = Input>(\n generator: (source$: Observable<Input>) => Observable<MethodInput>,\n config?: { injector?: Injector }\n): RxMethod<Input, MethodInput>;\nexport function reduxMethod<Input, MethodInput = Input, MethodResult = unknown>(\n generator: (source$: Observable<Input>) => Observable<MethodInput>,\n resultMethod: (input: MethodInput) => MethodResult,\n config?: {\n injector?: Injector\n }\n): RxMethod<Input, MethodInput, MethodResult>;\nexport function reduxMethod<Input, MethodInput = Input, MethodResult = unknown>(\n generator: (source$: Observable<Input>) => Observable<MethodInput>,\n resultMethodOrConfig?: ((input: MethodInput) => MethodResult) | {\n injector?: Injector\n },\n config?: {\n injector?: Injector\n }\n): RxMethod<Input, MethodInput, MethodResult> {\n const injector = inject(Injector);\n\n if (typeof resultMethodOrConfig === 'function') {\n let unsubscribable: Unsubscribable;\n const inputResultFn = ((\n input: RxMethodInput<Input>,\n resultMethod = resultMethodOrConfig\n ) => {\n\n const rxMethodWithResult = rxMethod<Input>(pipe(\n generator,\n map(resultMethod)\n ), {\n ...(config || {}),\n injector: config?.injector || injector\n });\n const rxWithInput = rxMethodWithResult(input);\n unsubscribable = { unsubscribe: rxWithInput.unsubscribe.bind(rxWithInput) };\n\n return rxWithInput;\n }) as RxMethod<Input, MethodInput, MethodResult>;\n\n inputResultFn.unsubscribe = () => unsubscribable?.unsubscribe();\n\n return inputResultFn;\n }\n\n return rxMethod<Input>(generator, resultMethodOrConfig);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["originalPatchState","capitalize","patchState"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { withDevtools, patchState, Action } from './lib/with-devtools';
|
|
1
|
+
export { withDevtools, patchState, updateState, Action, } from './lib/with-devtools';
|
|
2
2
|
export * from './lib/with-redux';
|
|
3
3
|
export * from './lib/with-call-state';
|
|
4
4
|
export * from './lib/with-undo-redo';
|
package/lib/with-call-state.d.ts
CHANGED
|
@@ -4,24 +4,20 @@ import { Emtpy } from './shared/empty';
|
|
|
4
4
|
export type CallState = 'init' | 'loading' | 'loaded' | {
|
|
5
5
|
error: string;
|
|
6
6
|
};
|
|
7
|
-
export type NamedCallStateSlice<Collection extends string> = {
|
|
8
|
-
[K in Collection as `${K}CallState`]: CallState;
|
|
9
|
-
};
|
|
10
7
|
export type CallStateSlice = {
|
|
11
8
|
callState: CallState;
|
|
12
9
|
};
|
|
13
|
-
export type
|
|
14
|
-
[K in
|
|
15
|
-
} & {
|
|
16
|
-
[K in Prop as `${K}Loaded`]: Signal<boolean>;
|
|
17
|
-
} & {
|
|
18
|
-
[K in Prop as `${K}Error`]: Signal<string | null>;
|
|
10
|
+
export type NamedCallStateSlice<Collection extends string> = {
|
|
11
|
+
[K in keyof CallStateSlice as `${Collection}${Capitalize<K>}`]: CallStateSlice[K];
|
|
19
12
|
};
|
|
20
13
|
export type CallStateSignals = {
|
|
21
14
|
loading: Signal<boolean>;
|
|
22
15
|
loaded: Signal<boolean>;
|
|
23
16
|
error: Signal<string | null>;
|
|
24
17
|
};
|
|
18
|
+
export type NamedCallStateSignals<Prop extends string> = {
|
|
19
|
+
[K in keyof CallStateSignals as `${Prop}${Capitalize<K>}`]: CallStateSignals[K];
|
|
20
|
+
};
|
|
25
21
|
export type SetCallState<Prop extends string | undefined> = Prop extends string ? NamedCallStateSlice<Prop> : CallStateSlice;
|
|
26
22
|
export declare function getCallStateKeys(config?: {
|
|
27
23
|
collection?: string;
|
package/lib/with-devtools.d.ts
CHANGED
|
@@ -28,5 +28,16 @@ export declare function reset(): void;
|
|
|
28
28
|
*/
|
|
29
29
|
export declare function withDevtools<Input extends SignalStoreFeatureResult>(name: string): SignalStoreFeature<Input, EmptyFeatureResult>;
|
|
30
30
|
type PatchFn = typeof originalPatchState extends (arg1: infer First, ...args: infer Rest) => infer Returner ? (state: First, action: string, ...rest: Rest) => Returner : never;
|
|
31
|
+
/**
|
|
32
|
+
* @deprecated Has been renamed to `updateState`
|
|
33
|
+
*/
|
|
31
34
|
export declare const patchState: PatchFn;
|
|
35
|
+
/**
|
|
36
|
+
* Wrapper of `patchState` for DevTools integration. Next to updating the state,
|
|
37
|
+
* it also sends the action to the DevTools.
|
|
38
|
+
* @param state state of Signal Store
|
|
39
|
+
* @param action name of action how it will show in DevTools
|
|
40
|
+
* @param updaters updater functions or objects
|
|
41
|
+
*/
|
|
42
|
+
export declare const updateState: PatchFn;
|
|
32
43
|
export {};
|
package/lib/with-redux.d.ts
CHANGED
|
@@ -12,7 +12,9 @@ type ActionFn<Type extends string = string, ActionPayload extends Payload = Payl
|
|
|
12
12
|
type ActionFns = Record<string, ActionFn>;
|
|
13
13
|
export type ActionsFnSpecs = Record<string, Payload>;
|
|
14
14
|
type ActionFnCreator<Spec extends ActionsFnSpecs> = {
|
|
15
|
-
[ActionName in keyof Spec]: (
|
|
15
|
+
[ActionName in keyof Spec]: (Record<never, never> extends Spec[ActionName] ? () => Spec[ActionName] & {
|
|
16
|
+
type: ActionName;
|
|
17
|
+
} : (payload: Spec[ActionName]) => Spec[ActionName] & {
|
|
16
18
|
type: ActionName;
|
|
17
19
|
}) & {
|
|
18
20
|
type: ActionName & string;
|