@coko/server
Version:
Reusable server for use by Coko's projects
44 lines • 1.85 kB
JavaScript
;
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