From fa252a44edefb83d201361f8134f1fa1f417b710 Mon Sep 17 00:00:00 2001
From: ezsh <ezsh.junk@gmail.com>
Date: Fri, 29 May 2020 14:39:29 +0200
Subject: [PATCH] Fix co-existance of TypeScript and JavaScript declarations

Rename the FC.d.ts to FC.ts to move it from the ambient to normal
context, thus making namespace declarations from the FC.ts to extend but
not overwrite "namespace" declarations from .js files in the TypeScript
AST.
---
 devTools/{FC.d.ts => FC.ts} | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)
 rename devTools/{FC.d.ts => FC.ts} (96%)

diff --git a/devTools/FC.d.ts b/devTools/FC.ts
similarity index 96%
rename from devTools/FC.d.ts
rename to devTools/FC.ts
index bbaee44babb..fd4791e0d7b 100644
--- a/devTools/FC.d.ts
+++ b/devTools/FC.ts
@@ -1,4 +1,5 @@
-declare namespace App {
+/// <reference path="../js/002-config/fc-js-init.js" />
+namespace App {
 	namespace Art {}
 
 	namespace Corporate {}
@@ -262,7 +263,7 @@ declare namespace App {
 			labelTagsClear: boolean;
 		}
 
-		class Rule {
+		declare interface Rule {
 			ID: string;
 			name: string;
 			condition: RuleConditions;
@@ -277,12 +278,12 @@ declare namespace App {
 		namespace DOM {
 			namespace Widgets { }
 
-			function makeElement<K extends keyof HTMLElementTagNameMap>(tag: K, content: string | Node, classNames: string | string[]): HTMLElementTagNameMap[K];
-			function appendNewElement<K extends keyof HTMLElementTagNameMap>(tag: K, parent: ParentNode, content?: string | Node, classNames?: string | string[]): HTMLElementTagNameMap[K];
+			declare function makeElement<K extends keyof HTMLElementTagNameMap>(tag: K, content: string | Node, classNames: string | string[]): HTMLElementTagNameMap[K];
+			declare function appendNewElement<K extends keyof HTMLElementTagNameMap>(tag: K, parent: ParentNode, content?: string | Node, classNames?: string | string[]): HTMLElementTagNameMap[K];
 		}
 		namespace View { }
 		namespace SlaveSummary {
-			type AppendRenderer = (slave: App.Entity.SlaveState, parentNode: Node) => void;
+			type AppendRenderer = (slave: FC.SlaveState, parentNode: Node) => void;
 
 			class AbbreviationState {
 				clothes: number;
@@ -561,7 +562,7 @@ declare namespace FC {
 
 	enum NoObject {
 		Value = 0
-	};
+	}
 
 	type SlaveStateOrZero = SlaveState | NoObject;
 
@@ -570,4 +571,4 @@ declare namespace FC {
 	interface GameVariables extends DefaultGameStateVariables, ResetOnNGPVariables {}
 }
 
-const V: FC.GameVariables;
+declare const V: FC.GameVariables;
-- 
GitLab