UNPKG

@coko/server

Version:

Reusable server for use by Coko's projects

44 lines 1.85 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const config_1 = __importDefault(require("../configManager/config")); const PostgresPubSub_1 = __importDefault(require("./PostgresPubSub")); const connectionConfig_1 = __importDefault(require("../db/connectionConfig")); const GraphQLDisabledError_1 = __importDefault(require("./GraphQLDisabledError")); class PubsubManager { instance; init() { // if (this.instance) return const connectionConfig = (0, connectionConfig_1.default)('subscriptionsDb'); const realInstance = new PostgresPubSub_1.default(connectionConfig); if (config_1.default.get('useGraphQLServer')) { this.instance = realInstance; return; } this.instance = new Proxy(realInstance, { get: (target, property, receiver) => { if (typeof target[property] === 'function' || property in target) { throw new GraphQLDisabledError_1.default(); } // fallback for built-in properties (like toString, etc.) return Reflect.get(target, property, receiver); }, }); } } const manager = new PubsubManager(); const pubsub = new Proxy(manager, { get(target, prop) { if (prop === 'init') return target.init.bind(target); if (!target.instance) { throw new Error('subcriptionManager not initialized. Run subcriptionManager.init() first.'); } const value = target.instance[prop]; return typeof value === 'function' ? value.bind(target.instance) : value; }, }); exports.default = pubsub; //# sourceMappingURL=pubsub.js.map