MCPcopy Create free account
hub / github.com/ngrx/platform / createFeature

Function createFeature

modules/store/src/feature_creator.ts:201–236  ·  view source on GitHub ↗
(
  featureConfig: FeatureConfig<FeatureName, FeatureState> & {
    extraSelectors?: ExtraSelectorsFactory<
      FeatureName,
      FeatureState,
      ExtraSelectors
    >;
  }
)

Source from the content-addressed store, hash-verified

199 * ```
200 */
201export function createFeature<
202 FeatureName extends string,
203 FeatureState,
204 ExtraSelectors extends SelectorsDictionary,
205>(
206 featureConfig: FeatureConfig<FeatureName, FeatureState> & {
207 extraSelectors?: ExtraSelectorsFactory<
208 FeatureName,
209 FeatureState,
210 ExtraSelectors
211 >;
212 }
213): Feature<FeatureName, FeatureState> & ExtraSelectors {
214 const {
215 name,
216 reducer,
217 extraSelectors: extraSelectorsFactory,
218 } = featureConfig;
219
220 const featureSelector = createFeatureSelector<FeatureState>(name);
221 const nestedSelectors = createNestedSelectors(featureSelector, reducer);
222 const baseSelectors = {
223 [`select${capitalize(name)}State`]: featureSelector,
224 ...nestedSelectors,
225 } as BaseSelectors<FeatureName, FeatureState>;
226 const extraSelectors = extraSelectorsFactory
227 ? extraSelectorsFactory(baseSelectors)
228 : {};
229
230 return {
231 name,
232 reducer,
233 ...baseSelectors,
234 ...extraSelectors,
235 } as Feature<FeatureName, FeatureState> & ExtraSelectors;
236}
237
238function createNestedSelectors<FeatureState>(
239 featureSelector: MemoizedSelector<Record<string, any>, FeatureState>,

Callers

nothing calls this directly

Calls 3

createFeatureSelectorFunction · 0.90
capitalizeFunction · 0.90
createNestedSelectorsFunction · 0.85

Tested by

no test coverage detected