@ngxs/store 3.7.6-dev.master-5f9405c → 3.7.6-dev.master-5bdcd2a
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/bundles/ngxs-store.umd.js +91 -5
- package/bundles/ngxs-store.umd.js.map +1 -1
- package/esm2015/src/decorators/selector/selector.js +6 -6
- package/esm2015/src/decorators/selector-options.js +2 -1
- package/esm2015/src/public_api.js +5 -4
- package/esm2015/src/selectors/create-model-selector.js +28 -0
- package/esm2015/src/selectors/create-pick-selector.js +14 -0
- package/esm2015/src/selectors/create-property-selectors.js +18 -0
- package/esm2015/src/selectors/index.js +5 -0
- package/esm2015/src/selectors/selector-checks.util.js +18 -0
- package/esm2015/src/selectors/selector-types.util.js +2 -0
- package/fesm2015/ngxs-store.js +78 -6
- package/fesm2015/ngxs-store.js.map +1 -1
- package/package.json +1 -1
- package/src/public_api.d.ts +4 -3
- package/src/selectors/create-model-selector.d.ts +10 -0
- package/src/selectors/create-pick-selector.d.ts +6 -0
- package/src/selectors/create-property-selectors.d.ts +5 -0
- package/src/selectors/index.d.ts +4 -0
- package/src/selectors/selector-checks.util.d.ts +9 -0
- package/src/selectors/selector-types.util.d.ts +7 -0
|
@@ -2668,6 +2668,7 @@
|
|
|
2668
2668
|
function SelectorOptions(options) {
|
|
2669
2669
|
return (function decorate(target, methodName, descriptor) {
|
|
2670
2670
|
if (methodName) {
|
|
2671
|
+
descriptor || (descriptor = Object.getOwnPropertyDescriptor(target, methodName));
|
|
2671
2672
|
// Method Decorator
|
|
2672
2673
|
var originalFn = descriptor.value || descriptor.originalFn;
|
|
2673
2674
|
if (originalFn) {
|
|
@@ -2699,27 +2700,27 @@
|
|
|
2699
2700
|
*/
|
|
2700
2701
|
function Selector(selectors) {
|
|
2701
2702
|
return function (target, key, descriptor) {
|
|
2703
|
+
descriptor || (descriptor = Object.getOwnPropertyDescriptor(target, key));
|
|
2704
|
+
var originalFn = descriptor === null || descriptor === void 0 ? void 0 : descriptor.value;
|
|
2702
2705
|
// Caretaker note: we have still left the `typeof` condition in order to avoid
|
|
2703
2706
|
// creating a breaking change for projects that still use the View Engine.
|
|
2704
2707
|
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
2705
|
-
|
|
2706
|
-
if (isNotMethod) {
|
|
2708
|
+
if (originalFn && typeof originalFn !== 'function') {
|
|
2707
2709
|
throwSelectorDecoratorError();
|
|
2708
2710
|
}
|
|
2709
2711
|
}
|
|
2710
|
-
var originalFn = descriptor.value;
|
|
2711
2712
|
var memoizedFn = createSelector(selectors, originalFn, {
|
|
2712
2713
|
containerClass: target,
|
|
2713
2714
|
selectorName: key.toString(),
|
|
2714
2715
|
getSelectorOptions: function () {
|
|
2715
2716
|
return {};
|
|
2716
|
-
}
|
|
2717
|
+
},
|
|
2717
2718
|
});
|
|
2718
2719
|
var newDescriptor = {
|
|
2719
2720
|
configurable: true,
|
|
2720
2721
|
get: function () {
|
|
2721
2722
|
return memoizedFn;
|
|
2722
|
-
}
|
|
2723
|
+
},
|
|
2723
2724
|
};
|
|
2724
2725
|
// Add hidden property to descriptor
|
|
2725
2726
|
newDescriptor['originalFn'] = originalFn;
|
|
@@ -2766,6 +2767,88 @@
|
|
|
2766
2767
|
type: i0.NgModule
|
|
2767
2768
|
}] });
|
|
2768
2769
|
|
|
2770
|
+
function ensureValidSelector(selector, context) {
|
|
2771
|
+
if (context === void 0) { context = {}; }
|
|
2772
|
+
var noun = context.noun || 'selector';
|
|
2773
|
+
var prefix = context.prefix ? context.prefix + ': ' : '';
|
|
2774
|
+
ensureValueProvided(selector, { noun: noun, prefix: context.prefix });
|
|
2775
|
+
var metadata = getSelectorMetadata$1(selector) || getStoreMetadata$1(selector);
|
|
2776
|
+
if (!metadata) {
|
|
2777
|
+
throw new Error(prefix + "The value provided as the " + noun + " is not a valid selector.");
|
|
2778
|
+
}
|
|
2779
|
+
}
|
|
2780
|
+
function ensureValueProvided(value, context) {
|
|
2781
|
+
if (context === void 0) { context = {}; }
|
|
2782
|
+
var noun = context.noun || 'value';
|
|
2783
|
+
var prefix = context.prefix ? context.prefix + ': ' : '';
|
|
2784
|
+
if (!value) {
|
|
2785
|
+
throw new Error(prefix + "A " + noun + " must be provided.");
|
|
2786
|
+
}
|
|
2787
|
+
}
|
|
2788
|
+
|
|
2789
|
+
function createModelSelector(selectorMap) {
|
|
2790
|
+
var selectorKeys = Object.keys(selectorMap);
|
|
2791
|
+
var selectors = Object.values(selectorMap);
|
|
2792
|
+
ensureValidSelectorMap({
|
|
2793
|
+
prefix: '[createModelSelector]',
|
|
2794
|
+
selectorMap: selectorMap,
|
|
2795
|
+
selectorKeys: selectorKeys,
|
|
2796
|
+
selectors: selectors,
|
|
2797
|
+
});
|
|
2798
|
+
return createSelector(selectors, function () {
|
|
2799
|
+
var args = [];
|
|
2800
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
2801
|
+
args[_i] = arguments[_i];
|
|
2802
|
+
}
|
|
2803
|
+
return selectorKeys.reduce(function (obj, key, index) {
|
|
2804
|
+
obj[key] = args[index];
|
|
2805
|
+
return obj;
|
|
2806
|
+
}, {});
|
|
2807
|
+
});
|
|
2808
|
+
}
|
|
2809
|
+
function ensureValidSelectorMap(_a) {
|
|
2810
|
+
var prefix = _a.prefix, selectorMap = _a.selectorMap, selectorKeys = _a.selectorKeys, selectors = _a.selectors;
|
|
2811
|
+
ensureValueProvided(selectorMap, { prefix: prefix, noun: 'selector map' });
|
|
2812
|
+
ensureValueProvided(typeof selectorMap === 'object', { prefix: prefix, noun: 'valid selector map' });
|
|
2813
|
+
ensureValueProvided(selectorKeys.length, { prefix: prefix, noun: 'non-empty selector map' });
|
|
2814
|
+
selectors.forEach(function (selector, index) { return ensureValidSelector(selector, {
|
|
2815
|
+
prefix: prefix,
|
|
2816
|
+
noun: "selector for the '" + selectorKeys[index] + "' property",
|
|
2817
|
+
}); });
|
|
2818
|
+
}
|
|
2819
|
+
|
|
2820
|
+
function createPickSelector(selector, keys) {
|
|
2821
|
+
ensureValidSelector(selector, { prefix: '[createPickSelector]' });
|
|
2822
|
+
var validKeys = keys.filter(Boolean);
|
|
2823
|
+
var selectors = validKeys.map(function (key) { return createSelector([selector], function (s) { return s[key]; }); });
|
|
2824
|
+
return createSelector(__spreadArray([], __read(selectors)), function () {
|
|
2825
|
+
var props = [];
|
|
2826
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
2827
|
+
props[_i] = arguments[_i];
|
|
2828
|
+
}
|
|
2829
|
+
return validKeys.reduce(function (acc, key, index) {
|
|
2830
|
+
acc[key] = props[index];
|
|
2831
|
+
return acc;
|
|
2832
|
+
}, {});
|
|
2833
|
+
});
|
|
2834
|
+
}
|
|
2835
|
+
|
|
2836
|
+
function createPropertySelectors(parentSelector) {
|
|
2837
|
+
ensureValidSelector(parentSelector, {
|
|
2838
|
+
prefix: '[createPropertySelectors]',
|
|
2839
|
+
noun: 'parent selector',
|
|
2840
|
+
});
|
|
2841
|
+
var cache = {};
|
|
2842
|
+
return new Proxy({}, {
|
|
2843
|
+
get: function (_target, prop) {
|
|
2844
|
+
var selector = cache[prop] ||
|
|
2845
|
+
createSelector([parentSelector], function (s) { return s === null || s === void 0 ? void 0 : s[prop]; });
|
|
2846
|
+
cache[prop] = selector;
|
|
2847
|
+
return selector;
|
|
2848
|
+
},
|
|
2849
|
+
});
|
|
2850
|
+
}
|
|
2851
|
+
|
|
2769
2852
|
/**
|
|
2770
2853
|
* The public api for consumers of @ngxs/store
|
|
2771
2854
|
*/
|
|
@@ -2792,6 +2875,9 @@
|
|
|
2792
2875
|
exports.Store = Store;
|
|
2793
2876
|
exports.UpdateState = UpdateState;
|
|
2794
2877
|
exports.actionMatcher = actionMatcher;
|
|
2878
|
+
exports.createModelSelector = createModelSelector;
|
|
2879
|
+
exports.createPickSelector = createPickSelector;
|
|
2880
|
+
exports.createPropertySelectors = createPropertySelectors;
|
|
2795
2881
|
exports.createSelector = createSelector;
|
|
2796
2882
|
exports.ensureSelectorMetadata = ensureSelectorMetadata;
|
|
2797
2883
|
exports.ensureStoreMetadata = ensureStoreMetadata;
|