Browse Source

Converted the remaining source files to TS

develop
Drew Short 5 years ago
parent
commit
51be142c13
  1. 16
      src/bot.ts
  2. 17
      src/engine.ts
  3. 31
      src/utility.ts

16
src/bot.js → src/bot.ts

@ -5,6 +5,12 @@ let utility = require('./utility');
let { logger } = require('./logging'); let { logger } = require('./logging');
class Bot { class Bot {
client: any;
config: any;
buildInfo: string;
connected: boolean;
constructor(config, buildInfo) { constructor(config, buildInfo) {
this.config = config; this.config = config;
this.buildInfo = buildInfo; this.buildInfo = buildInfo;
@ -14,14 +20,14 @@ class Bot {
/** /**
* Initialize the bot connection * Initialize the bot connection
*/ */
init(messageCallback) {
init(messageCallback: any) {
logger.info("Creating Matrix Client") logger.info("Creating Matrix Client")
this.client = sdk.createClient({ this.client = sdk.createClient({
baseUrl: this.config.baseUrl, baseUrl: this.config.baseUrl,
userId: this.config.userId userId: this.config.userId
}); });
this.client.on("sync", async (state, previousState, data) => {
this.client.on("sync", async (state: any, previousState: any, data: any) => {
switch (state) { switch (state) {
case "PREPARED": case "PREPARED":
this.connected = true; this.connected = true;
@ -44,9 +50,9 @@ class Bot {
} }
}); });
this.client.on("RoomMember.membership", (event, member) => {
this.client.on("RoomMember.membership", (event: any, member: any) => {
if (member.membership === "invite" if (member.membership === "invite"
&& this.config.admin.indexOf(ember.userId) >= 0) {
&& this.config.admin.indexOf(member.userId) >= 0) {
this.client.joinRoom(member.roomId).done(() => { this.client.joinRoom(member.roomId).done(() => {
logger.info("Auto-joined %s", member.roomId); logger.info("Auto-joined %s", member.roomId);
}); });
@ -184,4 +190,4 @@ function create(config) {
return new Bot(config, buildInfo); return new Bot(config, buildInfo);
} }
exports.create = create;
export { create };

17
src/engine.js → src/engine.ts

@ -1,3 +1,5 @@
import { AbstractModule } from "./module/abstract";
let { logger } = require('./logging'); let { logger } = require('./logging');
let { modules } = require('./module/index'); let { modules } = require('./module/index');
let trie = require('trie-prefix-tree'); let trie = require('trie-prefix-tree');
@ -11,6 +13,16 @@ let { sanitizeConfig } = require('./config');
let commandPrefix = '!'; let commandPrefix = '!';
class Engine { class Engine {
config: any;
bot: any;
modules: Array<AbstractModule>;
moduleMap: Map<string, AbstractModule>;
commands: Array<string>;
commandMap: Map<string, AbstractModule>;
commandRadixTree: any;
helpModule: any;
constructor(config, bot, modules) { constructor(config, bot, modules) {
this.config = config; this.config = config;
this.bot = bot; this.bot = bot;
@ -92,7 +104,8 @@ class Engine {
/* Capture Exit Conditions */ /* Capture Exit Conditions */
["SIGINT", "SIGTERM"].forEach((signature) => {
let signals: NodeJS.Signals[] = ["SIGINT", "SIGTERM"];
signals.forEach((signature: NodeJS.Signals) => {
process.on(signature, async () => { process.on(signature, async () => {
await this.bot.sendStatusShutdown() await this.bot.sendStatusShutdown()
.then(() => { .then(() => {
@ -156,4 +169,4 @@ function create(config, bot) {
return new Engine(config, bot, modules) return new Engine(config, bot, modules)
} }
exports.create = create;
export { create };

31
src/utility.js → src/utility.ts

@ -1,7 +1,7 @@
let fs = require('fs'); let fs = require('fs');
let { logger } = require('./logging'); let { logger } = require('./logging');
function getShortestPrefix(radixTree, key, sliceSize) {
function getShortestPrefix(radixTree: any, key: string, sliceSize: number) {
let shortKey = key.substring(0, sliceSize); let shortKey = key.substring(0, sliceSize);
let keyCount = radixTree.countPrefix(shortKey); let keyCount = radixTree.countPrefix(shortKey);
if (keyCount < 1) { if (keyCount < 1) {
@ -16,8 +16,8 @@ function getShortestPrefix(radixTree, key, sliceSize) {
return getShortestPrefix(radixTree, key, sliceSize + 1); return getShortestPrefix(radixTree, key, sliceSize + 1);
} }
function toISODateString(d) {
function pad(n) { return n < 10 ? '0' + n : n }
function toISODateString(d: Date) {
function pad(n: number) { return n < 10 ? '0' + n : n }
return d.getUTCFullYear() + '-' return d.getUTCFullYear() + '-'
+ pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCMonth() + 1) + '-'
+ pad(d.getUTCDate()) + 'T' + pad(d.getUTCDate()) + 'T'
@ -39,17 +39,17 @@ function getBuildInfo() {
} }
} }
function sleep(ms) {
function sleep(ms: number) {
return new Promise(resolve => { return new Promise(resolve => {
setTimeout(resolve, ms) setTimeout(resolve, ms)
}) })
} }
function isString(s) {
function isString(s: any) {
return typeof (s) === 'string' || s instanceof String; return typeof (s) === 'string' || s instanceof String;
} }
function isFunction(f) {
function isFunction(f: any) {
return f && {}.toString.call(f) === '[object Function]'; return f && {}.toString.call(f) === '[object Function]';
} }
@ -61,26 +61,25 @@ function isFunction(f) {
* *
* @param {*} initialObj The starting object to derive the from * @param {*} initialObj The starting object to derive the from
* @param {*} sentinelPrototype The prototype that represents the end of the line * @param {*} sentinelPrototype The prototype that represents the end of the line
* @param {*} filterFunc A fioltering function for the return names
* @param {*} filterFunc A filtering function for the return names
*/ */
function getObjectKeysToPrototype(initialObj, sentinelPrototype, filterFunc = (e) => true) {
function getObjectKeysToPrototype(initialObj: any, sentinelPrototype: any, filterFunc: any = (e: any) => true) {
let prototypeChain = [] let prototypeChain = []
var targetPrototype = initialObj; var targetPrototype = initialObj;
while (Object.getPrototypeOf(targetPrototype) && targetPrototype !== sentinelPrototype) { while (Object.getPrototypeOf(targetPrototype) && targetPrototype !== sentinelPrototype) {
targetPrototype = Object.getPrototypeOf(targetPrototype); targetPrototype = Object.getPrototypeOf(targetPrototype);
prototypeChain.push(targetPrototype); prototypeChain.push(targetPrototype);
} }
// console.log("Prototype chain: %s", prototypeChain);
let completePropertyNames = prototypeChain.map((obj) => { let completePropertyNames = prototypeChain.map((obj) => {
return Object.getOwnPropertyNames(obj); return Object.getOwnPropertyNames(obj);
}) })
return [Object.getOwnPropertyNames(initialObj)].concat.apply([], completePropertyNames).filter(filterFunc); return [Object.getOwnPropertyNames(initialObj)].concat.apply([], completePropertyNames).filter(filterFunc);
} }
exports.getShortestPrefix = getShortestPrefix;
exports.toISODateString = toISODateString;
exports.getBuildInfo = getBuildInfo;
exports.sleep = sleep;
exports.isString = isString;
exports.isFunction = isFunction;
exports.getObjectKeysToPrototype = getObjectKeysToPrototype;
export { getShortestPrefix };
export { toISODateString };
export { getBuildInfo };
export { sleep };
export { isString };
export { isFunction };
export { getObjectKeysToPrototype };
Loading…
Cancel
Save