diff --git a/mw/html.d.ts b/mw/html.d.ts
new file mode 100644
index 0000000..674d210
--- /dev/null
+++ b/mw/html.d.ts
@@ -0,0 +1,36 @@
+declare global {
+ namespace mw {
+ namespace html {
+ /**
+ * Escape a string for HTML.
+ * Converts special characters to HTML entities.
+ * @param {string} s The string to escape
+ * @returns {string} HTML
+ */
+ function escape(s: string): string;
+
+ /**
+ * Create an HTML element string, with safe escaping.
+ * @param {string} name The tag name
+ * @param {{ [key: string]: string }} attrs An object with members mapping element names to values
+ * @param {string | html.Raw} contents The contents of the element
+ * @returns {string} HTML
+ */
+ function element(
+ name: string,
+ attrs?: Record,
+ contents?: string | mw.html.Raw
+ ): string;
+
+ /**
+ * Wrapper object for raw HTML passed to mw.html.element().
+ */
+ class Raw {
+ constructor(value: V);
+ private value: V;
+ }
+ }
+ }
+}
+
+export {};
diff --git a/mw/index.d.ts b/mw/index.d.ts
index b96ee32..2422292 100644
--- a/mw/index.d.ts
+++ b/mw/index.d.ts
@@ -1,15 +1,17 @@
import "./Api";
+import "./hook";
+import "./html";
import "./language";
-import "./util";
-import "./user";
import "./loader";
+import "./log";
import "./Map";
+import "./message";
+import "./notification";
+import "./storage";
import "./Title";
import "./Uri";
-import "./hook";
-import "./storage";
-import "./notification";
-import "./message";
+import "./user";
+import "./util";
declare global {
/**
@@ -85,26 +87,6 @@ declare global {
[key: string]: unknown; // more config keys can be added by extensions
}>;
- namespace html {
- function escape(s: string): string;
-
- function element(name: string, attrs?: any, contents?: string): string;
- }
-
- namespace log {
- function deprecate(
- obj: any,
- key: string,
- val: any,
- msg?: string,
- logName?: string
- ): void;
-
- function error(...msg: any[]): void;
-
- function warn(...msg: string[]): void;
- }
-
// types for mw.widgets are out of scope!
const widgets: any;
}
diff --git a/mw/log.d.ts b/mw/log.d.ts
new file mode 100644
index 0000000..e51ed55
--- /dev/null
+++ b/mw/log.d.ts
@@ -0,0 +1,44 @@
+declare global {
+ namespace mw {
+ namespace log {
+ /**
+ * Create a property on a host object that, when accessed, will produce a deprecation warning in the console.
+ * @param {*} obj Host object of deprecated property
+ * @param {string} key Name of property to create in `obj`
+ * @param {*} val The value this property should return when accessed
+ * @param {string?} msg Optional text to include in the deprecation message
+ * @param {string?} logName Name for the feature for logging and tracking purposes. Except for properties of the window object, tracking is only enabled if logName is set
+ * @returns {void}
+ */
+ function deprecate(
+ obj: any,
+ key: string,
+ val: any,
+ msg?: string,
+ logName?: string
+ ): void;
+
+ /**
+ * Write a message to the browser console's error channel.
+ *
+ * Most browsers also print a stacktrace when calling this method if the argument is an Error object.
+ *
+ * This method is a no-op in browsers that don't implement the Console API.
+ * @param {Array<*>} msg Messages to output to console
+ * @returns {void}
+ */
+ function error(...msg: any[]): void;
+
+ /**
+ * Write a message to the browser console's warning channel.
+ *
+ * This method is a no-op in browsers that don't implement the Console API.
+ * @param msg Messages to output to console
+ * @returns {void}
+ */
+ function warn(...msg: any[]): void;
+ }
+ }
+}
+
+export {};