twitch-graphql
Version:
A graphql wrapper for the Twitch API.
92 lines (91 loc) • 5.12 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var _a, _b, _c, _d, _e, _f;
Object.defineProperty(exports, "__esModule", { value: true });
var express_1 = __importDefault(require("express"));
var cors_1 = __importDefault(require("cors"));
var http_1 = __importDefault(require("http"));
var query_type_schema_1 = require("./schema/query-type-schema");
var subscriber_type_schema_1 = require("./schema/subscriber-type-schema");
var user_type_schema_1 = require("./schema/user-type-schema");
var stream_type_schema_1 = require("./schema/stream-type-schema");
var game_type_schema_1 = require("./schema/game-type-schema");
var graphql_modules_1 = require("graphql-modules");
var user_subscriber_link_type_schema_1 = require("./schema/user-subscriber-link-type-schema");
var game_stream_link_type_schema_1 = require("./schema/game-stream-link-type-schema");
var redemption_pubsub_type_schema_1 = require("./schema/redemption-pubsub-type-schema");
var stream_user_link_type_schema_1 = require("./schema/stream-user-link-type-schema");
var redemption_pubsub_user_link_type_schema_1 = require("./schema/redemption-pubsub-user-link-type-schema");
var chat_pubsub_type_schema_1 = require("./schema/chat-pubsub-type-schema");
var apollo_server_express_1 = require("apollo-server-express");
var chat_pubsub_user_link_schema_1 = require("./schema/chat-pubsub-user-link-schema");
var bit_pubsub_type_schema_1 = require("./schema/bit-pubsub-type-schema");
var bit_pubsub_user_link_schema_1 = require("./schema/bit-pubsub-user-link-schema");
var subscription_pubsub_type_schema_1 = require("./schema/subscription-pubsub-type-schema");
var subscription_pubsub_user_link_schema_1 = require("./schema/subscription-pubsub-user-link-schema");
var subscription_pubsub_chat_link_schema_1 = require("./schema/subscription-pubsub-chat-link-schema");
var ServerSetup_1 = require("./helpers/ServerSetup");
var follow_pubsub_type_schema_1 = require("./schema/follow-pubsub-type-schema");
require('dotenv').config();
var port = 5555;
var portEnv = parseInt(((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.PORT) || '');
if (portEnv) {
port = portEnv;
}
var portIndex = ((_b = process === null || process === void 0 ? void 0 : process.argv) === null || _b === void 0 ? void 0 : _b.findIndex(function (arg) { return arg === '--port' || arg === '-p'; })) + 1;
var portCmdNum = parseInt((_c = process === null || process === void 0 ? void 0 : process.argv) === null || _c === void 0 ? void 0 : _c[portIndex]);
if (portCmdNum) {
port = portCmdNum;
}
var useGraphiql = false;
if (((_e = (_d = process === null || process === void 0 ? void 0 : process.env) === null || _d === void 0 ? void 0 : _d.GRAPHIQL) === null || _e === void 0 ? void 0 : _e.toLowerCase()) === 'true') {
useGraphiql = true;
}
if ((_f = process === null || process === void 0 ? void 0 : process.argv) === null || _f === void 0 ? void 0 : _f.some(function (arg) { return arg.toLowerCase() === '--graphiql' || arg.toLowerCase() === '-g'; })) {
useGraphiql = true;
}
var app = graphql_modules_1.createApplication({
modules: [
query_type_schema_1.QueryModule,
subscriber_type_schema_1.SubscriberModule,
user_type_schema_1.UserModule,
stream_type_schema_1.StreamModule,
user_subscriber_link_type_schema_1.UserSubscriberLinkModule,
game_stream_link_type_schema_1.GameStreamLinkModule,
game_type_schema_1.GameModule,
stream_user_link_type_schema_1.StreamUserLinkModule,
redemption_pubsub_type_schema_1.RedemptionPubSubModule,
redemption_pubsub_user_link_type_schema_1.RedemptionUserLinkModule,
chat_pubsub_type_schema_1.ChatPubSubModule,
chat_pubsub_user_link_schema_1.ChatUserLinkModule,
bit_pubsub_type_schema_1.BitPubSubModule,
bit_pubsub_user_link_schema_1.BitUserLinkModule,
subscription_pubsub_type_schema_1.SubscriptionPubSubModule,
subscription_pubsub_user_link_schema_1.SubscriptionPubSubUserLinkModule,
subscription_pubsub_chat_link_schema_1.SubscriptionPubSubChatLinkModule,
follow_pubsub_type_schema_1.FollowPubSubModule,
],
});
app.createSubscription();
var schema = app.createSchemaForApollo();
var server = new apollo_server_express_1.ApolloServer({
schema: schema,
introspection: useGraphiql,
subscriptions: {
path: "/subscriptions",
onConnect: ServerSetup_1.onConnect,
},
context: ServerSetup_1.context,
playground: useGraphiql,
});
var expressApp = express_1.default();
expressApp.use(cors_1.default());
server.applyMiddleware({ app: expressApp });
var httpServer = http_1.default.createServer(expressApp);
server.installSubscriptionHandlers(httpServer);
httpServer.listen(port, function () {
console.log("\uD83D\uDE80 Server ready at http://localhost:" + port + server.graphqlPath);
console.log("\uD83D\uDE80 Subscriptions ready at ws://localhost:" + port + server.subscriptionsPath);
});