@ngxs/store 3.7.6-dev.master-4d7e301 → 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.
@@ -2767,6 +2767,88 @@
2767
2767
  type: i0.NgModule
2768
2768
  }] });
2769
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
+
2770
2852
  /**
2771
2853
  * The public api for consumers of @ngxs/store
2772
2854
  */
@@ -2793,6 +2875,9 @@
2793
2875
  exports.Store = Store;
2794
2876
  exports.UpdateState = UpdateState;
2795
2877
  exports.actionMatcher = actionMatcher;
2878
+ exports.createModelSelector = createModelSelector;
2879
+ exports.createPickSelector = createPickSelector;
2880
+ exports.createPropertySelectors = createPropertySelectors;
2796
2881
  exports.createSelector = createSelector;
2797
2882
  exports.ensureSelectorMetadata = ensureSelectorMetadata;
2798
2883
  exports.ensureStoreMetadata = ensureStoreMetadata;