import { DataSource } from 'apollo-datasource'; import { PasswordStrategy, AnonymousStrategy } from './strategies'; export default class AuthProvider extends DataSource { private _anonymousStrategy?: AnonymousStrategy; get anonymousStrategy(): AnonymousStrategy { return ( this._anonymousStrategy ?? (this._anonymousStrategy = new AnonymousStrategy()) ); } private _passwordStrategy?: PasswordStrategy; get passwordStrategy(): PasswordStrategy { return ( this._passwordStrategy ?? (this._passwordStrategy = new PasswordStrategy()) ); } }