UNPKG

graphql-modules

Version:

Create reusable, maintainable, testable and extendable GraphQL modules

61 lines (60 loc) 2.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Scope = exports.InjectionToken = exports.Type = void 0; exports.isToken = isToken; exports.isType = isType; exports.onlySingletonProviders = onlySingletonProviders; exports.onlyOperationProviders = onlyOperationProviders; exports.isClassProvider = isClassProvider; exports.isFactoryProvider = isFactoryProvider; const metadata_1 = require("./metadata"); exports.Type = Function; /// @ts-ignore class InjectionToken { constructor(_desc) { this._desc = _desc; } toString() { return `InjectionToken ${this._desc}`; } } exports.InjectionToken = InjectionToken; function isToken(v) { return v && v instanceof InjectionToken; } function isType(v) { return typeof v === 'function' && v !== Object; } var Scope; (function (Scope) { Scope[Scope["Singleton"] = 0] = "Singleton"; Scope[Scope["Operation"] = 1] = "Operation"; })(Scope || (exports.Scope = Scope = {})); function onlySingletonProviders(providers = []) { return providers.filter((provider) => { if (isType(provider)) { const { options } = (0, metadata_1.readInjectableMetadata)(provider, true); return (options === null || options === void 0 ? void 0 : options.scope) !== Scope.Operation; } else { return provider.scope !== Scope.Operation; } }); } function onlyOperationProviders(providers = []) { return providers.filter((provider) => { if (isType(provider)) { const { options } = (0, metadata_1.readInjectableMetadata)(provider, true); return (options === null || options === void 0 ? void 0 : options.scope) === Scope.Operation; } else { return provider.scope === Scope.Operation; } }); } function isClassProvider(provider) { return typeof provider.useClass !== 'undefined'; } function isFactoryProvider(provider) { return typeof provider.useFactory !== 'undefined'; }