diff --git a/types/shimmer/index.d.ts b/types/shimmer/index.d.ts index fd62f8074c..ceb4117ae9 100644 --- a/types/shimmer/index.d.ts +++ b/types/shimmer/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/othiym23/shimmer // Definitions by: Kelvin Jin // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.4 +// TypeScript Version: 2.2 declare global { interface Function { @@ -12,23 +12,23 @@ declare global { declare const shimmer: { (options: { logger?(msg: string): void }): void; - wrap any>( - nodule: object, - name: string, - wrapper: (original: T) => T + wrap( + nodule: Nodule, + name: FieldName, + wrapper: (original: Nodule[FieldName]) => Nodule[FieldName] ): void; - massWrap any>( - nodules: object[], - names: string[], - wrapper: (original: T) => T + massWrap( + nodules: Nodule[], + names: FieldName[], + wrapper: (original: Nodule[FieldName]) => Nodule[FieldName] ): void; - unwrap( - nodule: object, - name: string + unwrap( + nodule: Nodule, + name: keyof Nodule ): void; - massUnwrap( - nodules: object[], - names: string[] + massUnwrap( + nodules: Nodule[], + names: Array ): void; }; diff --git a/types/shimmer/shimmer-tests.ts b/types/shimmer/shimmer-tests.ts index c7b51debe2..4cdeb2a507 100644 --- a/types/shimmer/shimmer-tests.ts +++ b/types/shimmer/shimmer-tests.ts @@ -1,23 +1,24 @@ import * as shimmer from 'shimmer'; -const isWrapped: boolean = [].forEach.__wrapped || false; +const fish = { + name: 'shimmer', + age: 1, + getMotto: () => 'safer monkeypatching for Node.js' +}; -shimmer.wrap(Array.prototype, 'forEach', (forEach) => { - return (...args: any[]) => { - forEach(...args); - }; +const turtle = { + name: 'node', + age: 9 +}; + +shimmer.wrap(fish, 'name', (originalName) => { + return originalName + originalName; }); -shimmer.unwrap(Array.prototype, 'forEach'); - -shimmer.massWrap([Map.prototype, Set.prototype], ['clear', 'forEach'], (fn) => { - return (...args: any[]) => { - const result = fn(...args); - if (result) { - throw new Error(); - } - return result; - }; +shimmer.massWrap([fish, turtle], ['age'], (originalAge) => { + return Math.pow(originalAge, 2); }); -shimmer.massUnwrap([Map.prototype, Set.prototype], ['clear', 'forEach']); +shimmer.unwrap(fish, 'name'); + +shimmer.massUnwrap([fish, turtle], ['age']); diff --git a/types/shimmer/tslint.json b/types/shimmer/tslint.json index 3db14f85ea..4c4fc86ace 100644 --- a/types/shimmer/tslint.json +++ b/types/shimmer/tslint.json @@ -1 +1,6 @@ -{ "extends": "dtslint/dt.json" } +{ + "extends": "dtslint/dt.json", + "rules": { + "strict-export-declare-modifiers": false + } +}