diff --git a/SupCore/Data/Base/index.ts b/SupCore/Data/Base/index.ts index 68d62eff..78fb2c49 100644 --- a/SupCore/Data/Base/index.ts +++ b/SupCore/Data/Base/index.ts @@ -71,7 +71,7 @@ export function getRuleViolation(value: any, rule: Rule, create = false): Violat case "enum": { if (typeof value !== "string") return { message: "Expected string for enum" }; - let items = rule.items; + let items = rule.items as string[]; if (items.indexOf(value) === -1) return { message: `Invalid enum value: ${value}` }; } break; @@ -130,7 +130,7 @@ export function getRuleViolation(value: any, rule: Rule, create = false): Violat if (rule.items != null) { for (let index = 0; index < value.length; index++) { let item: any = value[index]; - let violation = getRuleViolation(item, rule.items, true); + let violation = getRuleViolation(item, rule.items as Rule, true); if (violation != null) { let violationPath = (violation.path != null) ? `[${index}].${violation.path}` : `[${index}]`; return { message: violation.message, path: violationPath }; diff --git a/SupCore/Data/Entries.ts b/SupCore/Data/Entries.ts index aca551ba..6a670da5 100644 --- a/SupCore/Data/Entries.ts +++ b/SupCore/Data/Entries.ts @@ -80,7 +80,7 @@ export default class Entries extends SupData.Base.TreeById { } remove(id: string, callback: (err: string) => any) { - let node = this.byId[id]; + let node = this.byId[id] as EntryNode; if (node == null) { callback(`Invalid node id: ${id}`); return; } if (node.type == null && node.children.length !== 0) { callback("The folder must be empty"); return; } diff --git a/client/src/dialogs/CreateOrEditProjectDialog.ts b/client/src/dialogs/CreateOrEditProjectDialog.ts index 4e54e4f0..8703a25d 100644 --- a/client/src/dialogs/CreateOrEditProjectDialog.ts +++ b/client/src/dialogs/CreateOrEditProjectDialog.ts @@ -107,7 +107,7 @@ export default class CreateOrEditProjectDialog extends SupClient.dialogs.BaseDia // Description this.descriptionInputElt = document.createElement("textarea"); this.descriptionInputElt.style.flex = "1"; - (this.descriptionInputElt.style).resize = "none"; + (this.descriptionInputElt.style as any).resize = "none"; this.descriptionInputElt.placeholder = SupClient.i18n.t("hub:newProject.descriptionPlaceholder"); this.descriptionInputElt.addEventListener("keypress", this.onFieldKeyDown); textContainerElt.appendChild(this.descriptionInputElt); @@ -247,7 +247,7 @@ export default class CreateOrEditProjectDialog extends SupClient.dialogs.BaseDia } else { this.iconFile = this.iconInputElt.files[0]; let reader = new FileReader(); - reader.addEventListener("load", (event) => { this.iconElt.src = (event.target).result; }); + reader.addEventListener("load", (event) => { this.iconElt.src = (event.target as any).result; }); reader.readAsDataURL(this.iconFile); } }; diff --git a/client/src/project/index.ts b/client/src/project/index.ts index afdbf74e..62acce7c 100644 --- a/client/src/project/index.ts +++ b/client/src/project/index.ts @@ -55,7 +55,7 @@ function start() { // Development mode if (localStorage.getItem("superpowers-dev-mode") != null) { - let projectManagementDiv = document.querySelector(".project-management"); + let projectManagementDiv = document.querySelector(".project-management") as HTMLDivElement; projectManagementDiv.style.backgroundColor = "#37d"; // According to http://stackoverflow.com/a/12747364/915914, window.onerror @@ -96,9 +96,9 @@ function start() { document.querySelector(".project-buttons .stop").addEventListener("click", () => { stopProject(); }); if (!SupClient.isApp) { - (document.querySelector(".project-buttons .publish")).title = SupClient.i18n.t("project:header.publishDisabled"); - (document.querySelector(".project-buttons .debug")).hidden = true; - (document.querySelector(".project-buttons .stop")).hidden = true; + (document.querySelector(".project-buttons .publish") as HTMLButtonElement).title = SupClient.i18n.t("project:header.publishDisabled"); + (document.querySelector(".project-buttons .debug") as HTMLButtonElement).hidden = true; + (document.querySelector(".project-buttons .stop") as HTMLButtonElement).hidden = true; } // Entries tree view @@ -136,7 +136,7 @@ function start() { }); // Global controls - let toggleNotificationsButton = document.querySelector(".top .controls button.toggle-notifications"); + let toggleNotificationsButton = document.querySelector(".top .controls button.toggle-notifications") as HTMLButtonElement; toggleNotificationsButton.addEventListener("click", onClickToggleNotifications); if (localStorage.getItem("superpowers-disable-notifications") != null) { @@ -148,8 +148,8 @@ function start() { } // Panes and tools - ui.panesElt = document.querySelector(".main .panes"); - ui.toolsElt = document.querySelector(".sidebar .tools ul"); + ui.panesElt = document.querySelector(".main .panes") as HTMLDivElement; + ui.toolsElt = document.querySelector(".sidebar .tools ul") as HTMLUListElement; // Messaging window.addEventListener("message", onMessage); @@ -293,14 +293,14 @@ function onDisconnected() { ui.entriesTreeView.treeRoot.innerHTML = ""; updateSelectedEntry(); - (document.querySelector(".project-buttons .run")).disabled = true; - (document.querySelector(".project-buttons .debug")).disabled = true; - (document.querySelector(".project-buttons .stop")).disabled = true; - (document.querySelector(".project-buttons .publish")).disabled = true; - (document.querySelector(".entries-buttons .new-asset")).disabled = true; - (document.querySelector(".entries-buttons .new-folder")).disabled = true; - (document.querySelector(".entries-buttons .search")).disabled = true; - (document.querySelector(".connecting")).hidden = false; + (document.querySelector(".project-buttons .run") as HTMLButtonElement).disabled = true; + (document.querySelector(".project-buttons .debug") as HTMLButtonElement).disabled = true; + (document.querySelector(".project-buttons .stop") as HTMLButtonElement).disabled = true; + (document.querySelector(".project-buttons .publish") as HTMLButtonElement).disabled = true; + (document.querySelector(".entries-buttons .new-asset") as HTMLButtonElement).disabled = true; + (document.querySelector(".entries-buttons .new-folder") as HTMLButtonElement).disabled = true; + (document.querySelector(".entries-buttons .search") as HTMLButtonElement).disabled = true; + (document.querySelector(".connecting") as HTMLDivElement).hidden = false; } function onWelcome(clientId: number, config: { buildPort: number; systemName: string; }) { @@ -336,14 +336,14 @@ function onEntriesReceived(err: string, entries: SupCore.Data.EntryNode[]) { ui.entriesTreeView.clearSelection(); ui.entriesTreeView.treeRoot.innerHTML = ""; - (document.querySelector(".connecting")).hidden = true; + (document.querySelector(".connecting") as HTMLDivElement).hidden = true; - if (SupClient.isApp) (document.querySelector(".project-buttons .publish")).disabled = false; - (document.querySelector(".project-buttons .run")).disabled = false; - (document.querySelector(".project-buttons .debug")).disabled = false; - (document.querySelector(".entries-buttons .new-asset")).disabled = false; - (document.querySelector(".entries-buttons .new-folder")).disabled = false; - (document.querySelector(".entries-buttons .search")).disabled = false; + if (SupClient.isApp) (document.querySelector(".project-buttons .publish") as HTMLButtonElement).disabled = false; + (document.querySelector(".project-buttons .run") as HTMLButtonElement).disabled = false; + (document.querySelector(".project-buttons .debug") as HTMLButtonElement).disabled = false; + (document.querySelector(".entries-buttons .new-asset") as HTMLButtonElement).disabled = false; + (document.querySelector(".entries-buttons .new-folder") as HTMLButtonElement).disabled = false; + (document.querySelector(".entries-buttons .search") as HTMLButtonElement).disabled = false; function walk(entry: SupCore.Data.EntryNode, parentEntry: SupCore.Data.EntryNode, parentElt: HTMLLIElement) { let liElt = createEntryElement(entry); @@ -402,11 +402,11 @@ function onEntryAddedAck(err: string, id: string) { function onEntryMoved(id: string, parentId: string, index: number) { data.entries.client_move(id, parentId, index); - let entryElt = ui.entriesTreeView.treeRoot.querySelector(`[data-id='${id}']`); + let entryElt = ui.entriesTreeView.treeRoot.querySelector(`[data-id='${id}']`) as HTMLLIElement; let oldParentId: string = entryElt.dataset["parentId"]; if (oldParentId != null) { - let oldParentElt = ui.entriesTreeView.treeRoot.querySelector(`[data-id='${oldParentId}']`); + let oldParentElt = ui.entriesTreeView.treeRoot.querySelector(`[data-id='${oldParentId}']`) as HTMLLIElement; let parentEntry = data.entries.byId[oldParentId]; let childrenElt = oldParentElt.querySelector("span.children"); childrenElt.textContent = `(${parentEntry.children.length})`; @@ -447,7 +447,7 @@ function onEntryTrashed(id: string) { let oldParentId: string = entryElt.dataset["parentId"]; if (oldParentId != null) { - let oldParentElt = ui.entriesTreeView.treeRoot.querySelector(`[data-id='${oldParentId}']`); + let oldParentElt = ui.entriesTreeView.treeRoot.querySelector(`[data-id='${oldParentId}']`) as HTMLLIElement; let parentEntry = data.entries.byId[oldParentId]; let childrenElt = oldParentElt.querySelector("span.children"); childrenElt.textContent = `(${parentEntry.children.length})`; @@ -645,7 +645,7 @@ function onEntryDrop(dropInfo: any, orderedNodes: any) { function updateSelectedEntry() { let allButtons = document.querySelectorAll(".entries-buttons button.edit"); for (let index = 0; index < allButtons.length; index++) { - let button = allButtons.item(index); + let button = allButtons.item(index) as HTMLButtonElement; let disabled = (ui.entriesTreeView.selectedNodes.length === 0 || (button.classList.contains("single") && ui.entriesTreeView.selectedNodes.length !== 1) || (button.classList.contains("asset-only") && ui.entriesTreeView.selectedNodes[0].classList.contains("group"))); @@ -670,7 +670,7 @@ function onMessage(event: any) { } function onWindowDevError() { - let projectManagementDiv = document.querySelector(".project-management"); + let projectManagementDiv = document.querySelector(".project-management") as HTMLDivElement; projectManagementDiv.style.backgroundColor = "#c42"; return false; } @@ -685,7 +685,7 @@ function onMessageChat(message: string) { function doNotification() { let title = SupClient.i18n.t("project:header.notifications.new", { projectName: data.manifest.pub.name }); - let notification = new (window).Notification(title, { icon: "/images/icon.png", body: message }); + let notification = new (window as any).Notification(title, { icon: "/images/icon.png", body: message }); let closeTimeoutId = setTimeout(() => { notification.close(); }, 5000); @@ -697,11 +697,11 @@ function onMessageChat(message: string) { }); } - if ((window).Notification.permission === "granted") doNotification(); - else if ((window).Notification.permission !== "denied") { - (window).Notification.requestPermission((status: string) => { - (window).Notification.permission = status; - if ((window).Notification.permission === "granted") doNotification(); + if ((window as any).Notification.permission === "granted") doNotification(); + else if ((window as any).Notification.permission !== "denied") { + (window as any).Notification.requestPermission((status: string) => { + (window as any).Notification.permission = status; + if ((window as any).Notification.permission === "granted") doNotification(); }); } } @@ -753,7 +753,7 @@ function openEntry(id: string, state?: {[name: string]: any}) { if (entry.type == null) { ui.entriesTreeView.selectedNodes[0].classList.toggle("collapsed"); return; } let tab = ui.tabStrip.tabsRoot.querySelector(`li[data-asset-id='${id}']`); - let iframe = ui.panesElt.querySelector(`iframe[data-asset-id='${id}']`); + let iframe = ui.panesElt.querySelector(`iframe[data-asset-id='${id}']`) as HTMLIFrameElement; if (tab == null) { tab = createAssetTabElement(entry); @@ -772,7 +772,7 @@ function openEntry(id: string, state?: {[name: string]: any}) { function openTool(name: string, state?: {[name: string]: any}) { let tab = ui.tabStrip.tabsRoot.querySelector(`li[data-pane='${name}']`); - let iframe = ui.panesElt.querySelector(`iframe[data-name='${name}']`); + let iframe = ui.panesElt.querySelector(`iframe[data-name='${name}']`) as HTMLIFrameElement; if (tab == null) { let tool = data.toolsByName[name]; @@ -1031,7 +1031,7 @@ function onTabActivate(tabElement: any) { if (activeTab != null) { activeTab.classList.remove("active"); - let activeIframe = (ui.panesElt.querySelector("iframe.active")); + let activeIframe = (ui.panesElt.querySelector("iframe.active") as HTMLIFrameElement); activeIframe.contentWindow.postMessage({ type: "deactivate" }, window.location.origin); activeIframe.classList.remove("active"); } @@ -1041,8 +1041,8 @@ function onTabActivate(tabElement: any) { let assetId = tabElement.dataset["assetId"]; let tabIframe: HTMLIFrameElement; - if (assetId != null) tabIframe = ui.panesElt.querySelector(`iframe[data-asset-id='${assetId}']`); - else tabIframe = ui.panesElt.querySelector(`iframe[data-name='${tabElement.dataset.pane}']`); + if (assetId != null) tabIframe = ui.panesElt.querySelector(`iframe[data-asset-id='${assetId}']`) as HTMLIFrameElement; + else tabIframe = ui.panesElt.querySelector(`iframe[data-name='${tabElement.dataset.pane}']`) as HTMLIFrameElement; tabIframe.classList.add("active"); tabIframe.contentWindow.focus(); @@ -1052,12 +1052,12 @@ function onTabActivate(tabElement: any) { function onTabClose(tabElement: HTMLLIElement) { let assetId = tabElement.dataset["assetId"]; let frameElt: HTMLIFrameElement; - if (assetId != null) frameElt = ui.panesElt.querySelector(`iframe[data-asset-id='${assetId}']`); + if (assetId != null) frameElt = ui.panesElt.querySelector(`iframe[data-asset-id='${assetId}']`) as HTMLIFrameElement; else { let toolName = tabElement.dataset["pane"]; if (toolName === "main") return; - frameElt = ui.panesElt.querySelector(`iframe[data-name='${toolName}']`); + frameElt = ui.panesElt.querySelector(`iframe[data-name='${toolName}']`) as HTMLIFrameElement; } if (tabElement.classList.contains("active")) { diff --git a/launcher/src/myServer.ts b/launcher/src/myServer.ts index 15a4cf12..329910b7 100644 --- a/launcher/src/myServer.ts +++ b/launcher/src/myServer.ts @@ -8,17 +8,17 @@ let childProcess = nodeRequire("child_process"); let myServerElt = document.querySelector(".my-server"); -let myServerTextarea = myServerElt.querySelector("textarea"); +let myServerTextarea = myServerElt.querySelector("textarea") as HTMLTextAreaElement; export let serverProcess: dummy_childProcess.ChildProcess = null; -let autoStartServerCheckbox = document.getElementById("auto-start-server"); +let autoStartServerCheckbox = document.getElementById("auto-start-server") as HTMLInputElement; autoStartServerCheckbox.checked = config.autoStartServer; autoStartServerCheckbox.addEventListener("change", (event) => { config.autoStartServer = autoStartServerCheckbox.checked; }); -let startStopServerButton = myServerElt.querySelector("button.start-stop-server"); +let startStopServerButton = myServerElt.querySelector("button.start-stop-server") as HTMLButtonElement; startStopServerButton.addEventListener("click", () => { if (serverProcess != null) { startStopServerButton.textContent = "Start"; diff --git a/launcher/src/panes/community.ts b/launcher/src/panes/community.ts index 2f05f300..b7c3cc0d 100644 --- a/launcher/src/panes/community.ts +++ b/launcher/src/panes/community.ts @@ -3,8 +3,8 @@ export {}; let electron: GitHubElectron.Electron = nodeRequire("electron"); document.querySelector(".panes .community").addEventListener("click", (event) => { - if ((event.target).tagName !== "A") return; + if ((event.target as Element).tagName !== "A") return; event.preventDefault(); - electron.shell.openExternal((event.target).href); + electron.shell.openExternal((event.target as HTMLAnchorElement).href); }); diff --git a/launcher/src/panes/index.ts b/launcher/src/panes/index.ts index 6baf1b25..aeaddcd8 100644 --- a/launcher/src/panes/index.ts +++ b/launcher/src/panes/index.ts @@ -3,19 +3,19 @@ import "./settings"; import "./community"; // Panes -let paneButtonsContainer = document.querySelector(".pane-buttons"); -let panesContainer = document.querySelector(".panes"); +let paneButtonsContainer = document.querySelector(".pane-buttons") as HTMLDivElement; +let panesContainer = document.querySelector(".panes") as HTMLDivElement; for (let i = 0; i < paneButtonsContainer.children.length; i++) { ((button: HTMLButtonElement, i: number) => { button.addEventListener("click", (event) => { - (paneButtonsContainer.querySelector("button.active")).classList.remove("active"); - (panesContainer.querySelector(".active")).classList.remove("active"); - (event.target).classList.add("active"); - (panesContainer.children[i]).classList.add("active"); + (paneButtonsContainer.querySelector("button.active") as HTMLButtonElement).classList.remove("active"); + (panesContainer.querySelector(".active") as HTMLDivElement).classList.remove("active"); + (event.target as HTMLButtonElement).classList.add("active"); + (panesContainer.children[i] as HTMLDivElement).classList.add("active"); }); - })(paneButtonsContainer.children[i], i); + })(paneButtonsContainer.children[i] as HTMLButtonElement, i); } -(paneButtonsContainer.children[0]).classList.add("active"); -(panesContainer.children[0]).classList.add("active"); +(paneButtonsContainer.children[0] as HTMLButtonElement).classList.add("active"); +(panesContainer.children[0] as HTMLDivElement).classList.add("active"); diff --git a/launcher/src/panes/servers.ts b/launcher/src/panes/servers.ts index 71ade08f..4f9def8f 100644 --- a/launcher/src/panes/servers.ts +++ b/launcher/src/panes/servers.ts @@ -23,11 +23,11 @@ function start() { } function createServerElement(entry: { name: string; address: string; }) { - let liElt = document.createElement("li"); + let liElt = document.createElement("li") as HTMLLIElement; liElt.dataset["name"] = entry.name; liElt.dataset["address"] = entry.address; - let nameSpan = document.createElement("span"); + let nameSpan = document.createElement("span") as HTMLSpanElement; nameSpan.className = "name"; nameSpan.textContent = entry.name; liElt.appendChild(nameSpan); diff --git a/launcher/src/panes/settings.ts b/launcher/src/panes/settings.ts index d7dda44d..e3430174 100644 --- a/launcher/src/panes/settings.ts +++ b/launcher/src/panes/settings.ts @@ -21,10 +21,10 @@ if (fs.existsSync(serverPaths.config)) { _.merge(config, userConfig); } -let mainPortInput = document.querySelector("input.main-server-port"); -let buildPortInput = document.querySelector("input.build-server-port"); -let passwordInput = document.querySelector("input.server-password"); -let maxRecentBuildsInput = document.querySelector("input.max-recent-builds"); +let mainPortInput = document.querySelector("input.main-server-port") as HTMLInputElement; +let buildPortInput = document.querySelector("input.build-server-port") as HTMLInputElement; +let passwordInput = document.querySelector("input.server-password") as HTMLInputElement; +let maxRecentBuildsInput = document.querySelector("input.max-recent-builds") as HTMLInputElement; mainPortInput.value = config.mainPort.toString(); buildPortInput.value = config.buildPort.toString(); diff --git a/launcher/src/splash/index.ts b/launcher/src/splash/index.ts index 3e3f3a1b..a32eff3b 100644 --- a/launcher/src/splash/index.ts +++ b/launcher/src/splash/index.ts @@ -7,12 +7,12 @@ let electron: GitHubElectron.Electron = nodeRequire("electron"); let packageInfo = require("../../../package.json"); /* tslint:enable */ -let splash = document.querySelector(".splash"); +let splash = document.querySelector(".splash") as HTMLDivElement; splash.addEventListener("click", (event) => { - if ((event.target).tagName === "A") { + if ((event.target as Element).tagName === "A") { event.preventDefault(); - electron.shell.openExternal((event.target).href); + electron.shell.openExternal((event.target as HTMLAnchorElement).href); return; } @@ -22,7 +22,7 @@ splash.addEventListener("click", (event) => { // Check for new releases document.querySelector(".splash .version").textContent = `v${packageInfo.version}`; -let updateStatus = document.querySelector(".splash .update-status"); +let updateStatus = document.querySelector(".splash .update-status") as HTMLDivElement; supFetch("https://api.github.com/repos/superpowers/superpowers/releases/latest", "json", (err, lastRelease) => { if (err != null) { diff --git a/server/BaseRemoteClient.ts b/server/BaseRemoteClient.ts index b3eda096..3b27a6b6 100644 --- a/server/BaseRemoteClient.ts +++ b/server/BaseRemoteClient.ts @@ -2,7 +2,7 @@ export default class BaseRemoteClient { subscriptions: string[] = []; constructor(public server: BaseServer, public socket: SocketIO.Socket) { - this.socket.on("error", (err: Error) => { SupCore.log((err).stack); }); + this.socket.on("error", (err: Error) => { SupCore.log((err as any).stack); }); this.socket.on("disconnect", this.onDisconnect); this.socket.on("sub", this.onSubscribe); @@ -32,7 +32,7 @@ export default class BaseRemoteClient { let [ , endpoint, id ] = subscription.split(":"); if (id == null) continue; - (this.server.data[endpoint]).release(id, this); + (this.server.data[endpoint] as SupCore.Data.Base.Dictionary).release(id, this); } this.server.removeRemoteClient(this.socket.id); @@ -49,11 +49,11 @@ export default class BaseRemoteClient { if (id == null) { this.socket.join(roomName); this.subscriptions.push(roomName); - callback(null, (data).pub); + callback(null, (data as SupCore.Data.Base.Hash).pub); return; } - (data).acquire(id, this, (err: Error, item: any) => { + (data as SupCore.Data.Base.Dictionary).acquire(id, this, (err: Error, item: any) => { if (err != null) { callback(`Could not acquire asset: ${err}`, null); return; } this.socket.join(roomName); @@ -73,7 +73,7 @@ export default class BaseRemoteClient { let index = this.subscriptions.indexOf(roomName); if (index === -1) return; - if (id != null) { (data).release(id, this); } + if (id != null) { (data as SupCore.Data.Base.Dictionary).release(id, this); } this.socket.leave(roomName); this.subscriptions.splice(index, 1); diff --git a/server/ProjectServer.ts b/server/ProjectServer.ts index 3fdc3dd0..3c102379 100644 --- a/server/ProjectServer.ts +++ b/server/ProjectServer.ts @@ -237,7 +237,7 @@ export default class ProjectServer { if (item == null) { SupCore.log(`Tried to schedule an asset save for item with id ${id} but the asset is not loaded.`); SupCore.log(JSON.stringify(this.data.entries.byId[id], null, 2)); - SupCore.log((new Error()).stack); + SupCore.log((new Error() as any).stack); return; } let assetPath = path.join(this.projectPath, `assets/${this.data.entries.getStoragePathFromId(id)}`); diff --git a/server/RemoteProjectClient.ts b/server/RemoteProjectClient.ts index f6bd8dde..68596b18 100644 --- a/server/RemoteProjectClient.ts +++ b/server/RemoteProjectClient.ts @@ -208,7 +208,7 @@ export default class RemoteProjectClient extends BaseRemoteClient { // NOTE: "SocketIO.Namespace.adapter" is not part of the official documented API // It does exist though: https://github.com/Automattic/socket.io/blob/3f72dd3322bcefff07b5976ab817766e421d237b/lib/namespace.js#L89 - for (let socketId in (this.server.io).adapter.rooms[roomName]) { + for (let socketId in (this.server.io as any).adapter.rooms[roomName]) { let remoteClient = this.server.clientsBySocketId[socketId]; remoteClient.socket.leave(roomName); remoteClient.subscriptions.splice(remoteClient.subscriptions.indexOf(roomName), 1); @@ -503,7 +503,7 @@ export default class RemoteProjectClient extends BaseRemoteClient { async.each(trashedAssetFolders, (trashedAssetFolder, cb) => { let folderPath = path.join(trashedAssetsPath, trashedAssetFolder); rimraf(folderPath, (err) => { - if (err != null) SupCore.log(`Could not delete ${folderPath}.\n${(err).stack}`); + if (err != null) SupCore.log(`Could not delete ${folderPath}.\n${(err as any).stack}`); else removedFolderCount++; cb(); }); diff --git a/server/authenticate.ts b/server/authenticate.ts index 485bdfe2..76f7452d 100644 --- a/server/authenticate.ts +++ b/server/authenticate.ts @@ -10,10 +10,10 @@ export default function(socket: SocketIO.Socket, next: Function) { } if (auth != null && (auth.serverPassword === config.password || config.password.length === 0) && typeof auth.username === "string" && usernameRegex.test(auth.username)) { - (socket).username = auth.username; + (socket as any).username = auth.username; } - if ((socket).username == null) { + if ((socket as any).username == null) { if (config.password.length > 0) { next(new Error("invalidCredentials")); return; } else { next(new Error("invalidUsername")); return; } } diff --git a/server/index.ts b/server/index.ts index 847c4b82..b32f86a9 100644 --- a/server/index.ts +++ b/server/index.ts @@ -14,7 +14,7 @@ import loadSystems from "./loadSystems"; import ProjectHub from "./ProjectHub"; // Globals -(global).SupCore = SupCore; +(global as any).SupCore = SupCore; let { version, superpowers: { appApiVersion: appApiVersion } } = JSON.parse(fs.readFileSync(`${__dirname}/../package.json`, { encoding: "utf8" })); SupCore.log(`Server v${version} starting...`); @@ -28,9 +28,9 @@ let hub: ProjectHub = null; process.on("uncaughtException", (err: Error) => { if (hub != null && hub.loadingProjectFolderName != null) { - SupCore.log(`The server crashed while loading project "${hub.loadingProjectFolderName}".\n${(err).stack}`); + SupCore.log(`The server crashed while loading project "${hub.loadingProjectFolderName}".\n${(err as any).stack}`); } else { - SupCore.log(`The server crashed.\n${(err).stack}`); + SupCore.log(`The server crashed.\n${(err as any).stack}`); } process.exit(1); }); @@ -131,7 +131,7 @@ loadSystems(mainApp, buildApp, () => { // Project hub hub = new ProjectHub(io, (err: Error) => { - if (err != null) { SupCore.log(`Failed to start server:\n${(err).stack}`); return; } + if (err != null) { SupCore.log(`Failed to start server:\n${(err as any).stack}`); return; } SupCore.log(`Loaded ${Object.keys(hub.serversById).length} projects from ${paths.projects}.`); @@ -158,7 +158,7 @@ function onExit() { SupCore.log("Saving all projects..."); hub.saveAll((err: Error) => { - if (err != null) SupCore.log(`Error while exiting:\n${(err).stack}`); + if (err != null) SupCore.log(`Error while exiting:\n${(err as any).stack}`); else SupCore.log("Exited cleanly."); process.exit(0); });