diff --git a/jsoneditoronline/jsoneditoronline-tests.ts b/jsoneditoronline/jsoneditoronline-tests.ts
new file mode 100644
index 0000000000..d2196e1bcd
--- /dev/null
+++ b/jsoneditoronline/jsoneditoronline-tests.ts
@@ -0,0 +1,38 @@
+// Tests for JSONEditorOnline type definitions
+///
+
+var container: HTMLElement;
+
+var options:JSONEditorOptions = {
+ "search": true
+};
+var editor:JSONEditor = new JSONEditor(container, options);
+var json = {
+ "Array": [1, 2, 3],
+ "Boolean": true,
+ "Null": null,
+ "Number": 123,
+ "Object": {"a": "b", "c": "d"},
+ "String": "Hello World"
+};
+editor.set(json);
+editor.expandAll();
+console.log(JSONEditor.getInternetExplorerVersion());
+
+var jsonResult:any = editor.get();
+
+var options2: JSONFormatterOptions = {
+ indentation: 2
+};
+var formatter: JSONFormatter = new JSONFormatter(container, options);
+var json2 = {
+ "Array": [1, 2, 3],
+ "Boolean": true,
+ "Null": null,
+ "Number": 123,
+ "Object": {"a": "b", "c": "d"},
+ "String": "Hello World"
+};
+formatter.set(json2);
+
+var jsonResult2:any = formatter.get();
\ No newline at end of file
diff --git a/jsoneditoronline/jsoneditoronline.d.ts b/jsoneditoronline/jsoneditoronline.d.ts
new file mode 100644
index 0000000000..7bdacf0ac7
--- /dev/null
+++ b/jsoneditoronline/jsoneditoronline.d.ts
@@ -0,0 +1,180 @@
+// Type definitions for JSONEditorOnline
+// JSON Editor Online is a tool to easily edit and format JSON online. JSON is displayed in a clear, editable treeview and in formatted plain text.
+// Project: https://github.com/josdejong/jsoneditoronline
+// Definitions by: Vincent Bortone
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+interface JSONEditorOptions {
+ change?: () => void;
+ history?: bool;
+ mode?: string;
+ name?: string;
+ search?: bool;
+}
+
+class JSONEditorHistory {
+ constructor(editor: JSONEditor);
+ onChange(): void;
+ add(action: string, params: Object);
+ clear(): void;
+ canUndo(): bool;
+ canRedo(): bool;
+ undo(): void;
+ redo(): void;
+}
+
+interface JSONEditorNodeUpdateDomOptions {
+ recurse?: bool;
+ updateIndexes?: bool;
+}
+
+interface JSONEditorNodeType {
+ value: string;
+ className: string;
+ title: string;
+}
+
+interface JSONEditorConstructorParams {
+ field?: string;
+ fieldEditable?: bool;
+ value?: any;
+}
+
+class JSONEditorNode {
+ constructor(editor: JSONEditor, params: JSONEditorConstructorParams);
+ setParent(parent: JSONEditorNode): void;
+ getParent(): JSONEditorNode;
+ setField(field: string, fieldEditable: bool): void;
+ getField(): string;
+ setValue(value: any): void;
+ getValue(): any;
+ getLevel(): number;
+ clone(): JSONEditorNode;
+ expand(recurse: bool): void;
+ collapse(recurse: bool): void;
+ showChilds(): void;
+ hide(): void;
+ hideChilds(): void;
+ appendChild(node: JSONEditorNode): void;
+ moveBefore(node: JSONEditorNode, beforeNode: JSONEditorNode): void;
+ moveTo(node: JSONEditorNode, index: number): void;
+ insertBefore(node: JSONEditorNode, beforeNode: JSONEditorNode): void;
+ search(text: string): JSONEditorNode[];
+ scrollTo(): void;
+ focus(): void;
+ blur(): void;
+ containsNode(node: JSONEditorNode): bool;
+ removeChild(node: JSONEditorNode): JSONEditorNode;
+ changeType(newType: string): void;
+ clearDom(): void;
+ getDom(): HTMLElement;
+ setHighlight(highlight: bool): void;
+ updateValue(value: any): void;
+ updateField(field: string): void;
+ updateDom(options): void;
+ onEvent(event: Event): void;
+ types: JSONEditorNodeType[];
+ getAppend(): HTMLElement;
+}
+
+class JSONEditorAppendNode extends JSONEditorNode {
+ constructor(editor: JSONEditor);
+}
+
+interface JSONEditorShowDropDownListParams {
+ x: number;
+ y: number;
+ node: JSONEditorNode;
+ value: string;
+ values: Object[];
+ optionSelectedClassName: string;
+ optionClassName: string;
+ callback: (value: any) => void;
+}
+
+class JSONEditorSearchBox {
+ constructor(editor: JSONEditor, container: HTMLElement);
+ next(): void;
+ previous(): void;
+ setActiveResult(index: number): void;
+ focusActiveResult(): void;
+ clearDelay(): void;
+ onDelayedSearch(event: Event): void;
+ onSearch(event: Event, forcedSearch: bool): void;
+ onKeyDown(event: Event): void;
+ onKeyUp(event: Event): void;
+}
+
+interface JSONEditorBuffer {
+ text: string;
+ flush(): string;
+ set(text: string): void;
+}
+
+interface JSONEditorActionParams {
+ node?: JSONEditorNode;
+ oldValue?: string;
+ newValue?: string;
+ startParent?: JSONEditorNode;
+ endParent?: JSONEditorNode;
+ startIndex?: number;
+ endIndex?: number;
+ clone?: JSONEditorNode;
+ parent?: JSONEditorNode;
+ index?: number;
+ oldType?: JSONEditorNodeType;
+ newType?: JSONEditorNodeType;
+}
+
+class JSONEditor {
+ constructor(container: HTMLElement, options?: JSONEditorOptions, json?: any);
+ set(json: Object, name?: string): void;
+ setName(name?: string): void;
+ get(): Object;
+ getName(): string;
+ clear(): void;
+ search(text: string): any[];
+ expandAll(): void;
+ collapseAll(): void;
+ onAction(action: string, params: JSONEditorActionParams);
+ focus(): void;
+ scrollTo(top: number): void;
+ History: JSONEditorHistory;
+ Node: JSONEditorNode;
+ SearchBox: JSONEditorSearchBox;
+ static focusNode: JSONEditorNode;
+ static freezeHighlight: bool;
+ static showDropDownList(params): void;
+ static getNodeFromTarget(target: HTMLElement): JSONEditorNode;
+ static getAbsoluteLeft(elem: HTMLElement): number;
+ static getAbsoluteTop(elem: HTMLElement); number;
+ static addClassName(elem: HTMLElement, className: string): void;
+ static removeClassName(elem: HTMLElement, className: string): void;
+ static stripFormatting(divElement: HTMLElement): void;
+ static setEndOfContentEditable(contentEditableElement: HTMLElement): void;
+ static getInnerText(element: HTMLElement, buffer: JSONEditorBuffer): string;
+ static getInternetExplorerVersion(): number;
+ Events: {
+ addEventListener(element: HTMLElement, action: string, listener:(event?: Event) => void, useCapture:bool): (event?: Event) => void;
+ removeEventListener(element: HTMLElement, action: string, listener:(event?: Event) => void, useCapture:bool): void;
+ stopPropagation(event: Event): void;
+ preventDefault(event:Event): void;
+
+ };
+ static parse(jsonString: string): Object;
+ static validate(jsonString: string): string;
+}
+
+interface JSONFormatterOptions {
+ change?: () => void;
+ indentation?: number;
+}
+
+class JSONFormatter {
+ constructor(container: HTMLElement, options?: JSONFormatterOptions, json?: any);
+ set(json: Object);
+ get(): Object;
+ setText(jsonString: string): void;
+ getText(): string;
+ onError(err: string): void;
+}
\ No newline at end of file