packages/store/internals/src/state-token.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import { ɵensureSelectorMetadata } from './metadata';
import type { ɵTokenName, ɵSelectFromRootState, ɵRuntimeSelectorContext } from './symbols';

export class StateToken<T = void> {
  constructor(private readonly _name: ɵTokenName<T>) {
    const selectorMetadata = ɵensureSelectorMetadata(<any>this);
    selectorMetadata.makeRootSelector = (
      runtimeContext: ɵRuntimeSelectorContext
    ): ɵSelectFromRootState => {
      return runtimeContext.getStateGetter(this._name);
    };
  }

  getName(): string {
    return this._name;
  }

  toString(): string {
    return `StateToken[${this._name}]`;
  }
}