diff --git a/assert/assert.d.ts b/assert/assert.d.ts
index bccf4fef9..e334b87e9 100644
--- a/assert/assert.d.ts
+++ b/assert/assert.d.ts
@@ -57,6 +57,7 @@ declare module assert {
// export = assert;
// }
+// move to power-assert.d.ts. do not use this definition file.
declare module "power-assert" {
export = assert;
}
diff --git a/empower/empower-tests.ts b/empower/empower-tests.ts
new file mode 100644
index 000000000..27b1894c6
--- /dev/null
+++ b/empower/empower-tests.ts
@@ -0,0 +1,17 @@
+///
+
+var baseAssert:any;
+var fakeFormatter:any;
+
+()=> {
+ var assert = empower(baseAssert, fakeFormatter);
+};
+
+var option:empower.Options = {
+ modifyMessageOnRethrow: false,
+ saveContextOnRethrow: false
+};
+
+()=> {
+ var assert = empower(baseAssert, fakeFormatter, option);
+};
diff --git a/empower/empower.d.ts b/empower/empower.d.ts
new file mode 100644
index 000000000..bf4f3d687
--- /dev/null
+++ b/empower/empower.d.ts
@@ -0,0 +1,19 @@
+// Type definitions for empower
+// Project: https://github.com/twada/empower
+// Definitions by: vvakame
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare function empower(originalAssert:any, formatter:any, options?:empower.Options):any;
+
+declare module empower {
+ export interface Options {
+ destructive?: boolean;
+ modifyMessageOnRethrow?: boolean;
+ saveContextOnRethrow?: boolean;
+ patterns?: string[];
+ }
+}
+
+declare module "empower" {
+ export = empower;
+}
diff --git a/power-assert-formatter/power-assert-formatter-tests.ts b/power-assert-formatter/power-assert-formatter-tests.ts
new file mode 100644
index 000000000..cd5a2680d
--- /dev/null
+++ b/power-assert-formatter/power-assert-formatter-tests.ts
@@ -0,0 +1,5 @@
+///
+
+powerAssertFormatter();
+
+powerAssertFormatter({lineSeparator: '\n'});
diff --git a/power-assert-formatter/power-assert-formatter.d.ts b/power-assert-formatter/power-assert-formatter.d.ts
new file mode 100644
index 000000000..d3ccb59ab
--- /dev/null
+++ b/power-assert-formatter/power-assert-formatter.d.ts
@@ -0,0 +1,29 @@
+// Type definitions for power-assert-formatter
+// Project: https://github.com/twada/power-assert-formatter
+// Definitions by: vvakame
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare function powerAssertFormatter(options?:powerAssertFormatter.Options):powerAssertFormatter.Formatter;
+
+declare module powerAssertFormatter {
+ export interface Options {
+ lineDiffThreshold?: number;
+ maxDepth?: number;
+ outputOffset?: number;
+ anonymous?: string;
+ circular?: string;
+ lineSeparator?: string;
+ ambiguousEastAsianCharWidth?: number;
+ widthOf?: Function;
+ stringify?: Function;
+ diff?: Function;
+ writerClass?: {new (): any;};
+ renderers?: any[]; // { string | Function }[]
+ }
+
+ export interface Formatter {
+ (powerAssertContext:any): string;
+ }
+
+ export function defaultOptions():Options;
+}
diff --git a/power-assert/power-assert-tests.ts b/power-assert/power-assert-tests.ts
new file mode 100644
index 000000000..f7be7059f
--- /dev/null
+++ b/power-assert/power-assert-tests.ts
@@ -0,0 +1,83 @@
+///
+
+import assert = require("power-assert");
+
+assert(1 + 1 - 2 === 0, "The universe isn't how it should.");
+
+assert.deepEqual({x: {y: 3}}, {x: {y: 3}}, "DEEP WENT DERP");
+
+assert.equal(3, "3", "uses == comparator");
+
+assert.notStrictEqual(2, "2", "uses === comparator");
+
+assert.throws(() => {
+ throw "a hammer at your face";
+}, undefined, "DODGED IT");
+
+assert.doesNotThrow(() => {
+ if (false) {
+ throw "a hammer at your face";
+ }
+}, undefined, "What the...*crunch*");
+
+
+var customizedAssert1 = assert.customize({
+ output: {
+ maxDepth: 2
+ }
+});
+
+customizedAssert1(1 + 1 - 2 === 0, "The universe isn't how it should.");
+
+customizedAssert1.deepEqual({x: {y: 3}}, {x: {y: 3}}, "DEEP WENT DERP");
+
+customizedAssert1.equal(3, "3", "uses == comparator");
+
+customizedAssert1.notStrictEqual(2, "2", "uses === comparator");
+
+customizedAssert1.throws(() => {
+ throw "a hammer at your face";
+}, undefined, "DODGED IT");
+
+customizedAssert1.doesNotThrow(() => {
+ if (false) {
+ throw "a hammer at your face";
+ }
+}, undefined, "What the...*crunch*");
+
+
+var customizedAssert2 = assert.customize({
+ assertion: {
+ destructive: false,
+ modifyMessageOnRethrow: true,
+ saveContextOnRethrow: true,
+ patterns: [
+ 'assert(value, [message])',
+ 'assert.ok(value, [message])',
+ 'assert.equal(actual, expected, [message])',
+ 'assert.notEqual(actual, expected, [message])',
+ 'assert.strictEqual(actual, expected, [message])',
+ 'assert.notStrictEqual(actual, expected, [message])',
+ 'assert.deepEqual(actual, expected, [message])',
+ 'assert.notDeepEqual(actual, expected, [message])'
+ ]
+ },
+ output: {
+ lineDiffThreshold: 5,
+ maxDepth: 1,
+ anonymous: 'Object',
+ circular: '#@Circular#',
+ lineSeparator: '\n',
+ ambiguousEastAsianCharWidth: 2,
+ widthOf: () => null,
+ stringify: () => null,
+ diff: () => null,
+ writerClass: null,
+ renderers: [
+ './built-in/file',
+ './built-in/assertion',
+ './built-in/diagram',
+ './built-in/binary-expression'
+ ]
+ }
+});
diff --git a/power-assert/power-assert.d.ts b/power-assert/power-assert.d.ts
new file mode 100644
index 000000000..203edc052
--- /dev/null
+++ b/power-assert/power-assert.d.ts
@@ -0,0 +1,66 @@
+// Type definitions for power-assert
+// Project: https://github.com/twada/power-assert
+// Definitions by: vvakame
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+// copy from assert external module in node.d.ts
+
+///
+///
+
+declare function assert(value:any, message?:string):void;
+declare module assert {
+ export class AssertionError implements Error {
+ name:string;
+ message:string;
+ actual:any;
+ expected:any;
+ operator:string;
+ generatedMessage:boolean;
+
+ constructor(options?:{message?: string; actual?: any; expected?: any; operator?: string; stackStartFunction?: Function});
+ }
+
+ export function fail(actual?:any, expected?:any, message?:string, operator?:string):void;
+
+ export function ok(value:any, message?:string):void;
+
+ export function equal(actual:any, expected:any, message?:string):void;
+
+ export function notEqual(actual:any, expected:any, message?:string):void;
+
+ export function deepEqual(actual:any, expected:any, message?:string):void;
+
+ export function notDeepEqual(acutal:any, expected:any, message?:string):void;
+
+ export function strictEqual(actual:any, expected:any, message?:string):void;
+
+ export function notStrictEqual(actual:any, expected:any, message?:string):void;
+
+ export var throws:{
+ (block:Function, message?:string): void;
+ (block:Function, error:Function, message?:string): void;
+ (block:Function, error:RegExp, message?:string): void;
+ (block:Function, error:(err:any) => boolean, message?:string): void;
+ };
+
+ export var doesNotThrow:{
+ (block:Function, message?:string): void;
+ (block:Function, error:Function, message?:string): void;
+ (block:Function, error:RegExp, message?:string): void;
+ (block:Function, error:(err:any) => boolean, message?:string): void;
+ };
+
+ export function ifError(value:any):void;
+
+ export interface Options {
+ assertion?: empower.Options;
+ output?: powerAssertFormatter.Options;
+ }
+
+ export function customize(options:Options):typeof assert;
+}
+
+declare module "power-assert" {
+ export = assert;
+}