From 6524d47793060e05bb1bba595d427ba80d14a901 Mon Sep 17 00:00:00 2001 From: Markus Peloso Date: Thu, 30 Apr 2015 19:53:48 +0200 Subject: [PATCH] Add type definitions for Egg.js The egg.js-tests are based on the docs from Egg.js. The name is the same as the Egg.js bower project: http://bower.io/search/?q=egg.js (an npm project does not exists). And I run the tsc and npm tests. --- .gitignore | 3 ++ egg.js/egg.js-tests.ts | 27 ++++++++++++ egg.js/egg.js.d.ts | 93 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 egg.js/egg.js-tests.ts create mode 100644 egg.js/egg.js.d.ts diff --git a/.gitignore b/.gitignore index 7bfdb8b535..307e9b7fff 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,9 @@ _infrastructure/tests/build #decimal.js !decimal.js +#egg.js +!egg.js + #rx.js !rx.js diff --git a/egg.js/egg.js-tests.ts b/egg.js/egg.js-tests.ts new file mode 100644 index 0000000000..d9eeefc86e --- /dev/null +++ b/egg.js/egg.js-tests.ts @@ -0,0 +1,27 @@ +/// + +var egg = new Egg(); +egg + .addCode("up,up,down,down,left,right,left,right,b,a", function () { + alert("Konami!"); +}, "konami-code") + .addHook(function () { + console.log("Hook called for: " + this.activeEgg.keys); + console.log(this.activeEgg.metadata); +}) + .listen(); + +var egg = new Egg("up,up,down,down,left,right,left,right,b,a", function () { + alert("Konami!"); +}).listen(); + +// EGGSAMPLE +var egg = new Egg(); +egg + .AddCode("up,up,down,down,left,right,left,right,b,a", function () { + alert("Konami!"); +}, "konami-code") + .AddHook(function () { + console.log("Hook called for: " + this.activeEgg.keys); + console.log(this.activeEgg.metadata); +}).Listen(); \ No newline at end of file diff --git a/egg.js/egg.js.d.ts b/egg.js/egg.js.d.ts new file mode 100644 index 0000000000..14b57ba07a --- /dev/null +++ b/egg.js/egg.js.d.ts @@ -0,0 +1,93 @@ +// Type definitions for Egg.js 0.0.1 +// Project: https://github.com/mikeflynn/egg.js/ +// Definitions by: Markus Peloso +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare var egg: Egg; + +declare module "egg" { + export = egg; +} + +/** + * Egg.js is a simple JS library that has no prerequisites and allows you to easily add web easter + * eggs by watching the user's key strokes. + */ +declare class Egg { + /** + * Egg.js is a simple JS library that has no prerequisites and allows you to easily add web easter + * eggs by watching the user's key strokes. + */ + constructor(); + /** + * Egg.js is a simple JS library that has no prerequisites and allows you to easily add web easter + * eggs by watching the user's key strokes. + * @param keySequence You need to pass it the character sequence to trigger the easter egg + * callback (which can either be in plain English or JavaScript key codes). + * @param fn A function to trigger when it happens. + */ + constructor(keySequence: string, fn: () => any); + /** + * Egg.js is a simple JS library that has no prerequisites and allows you to easily add web easter + * eggs by watching the user's key strokes. + * @param keySequence You need to pass it the character sequence to trigger the easter egg + * callback (which can either be in plain English or JavaScript key codes). + * @param fn A function to trigger when it happens. + * @param metadata An optional set of metadata. + */ + constructor(keySequence: string, fn: () => any, metadata: any); + /** + * Use to add in your easter eggs. + * @param keySequence You need to pass it the character sequence to trigger the easter egg + * callback (which can either be in plain English or JavaScript key codes). + * @param fn A function to trigger when it happens. + */ + AddCode(keySequence: string, fn: () => any): Egg; + /** + * Use to add in your easter eggs. + * @param keySequence You need to pass it the character sequence to trigger the easter egg + * callback (which can either be in plain English or JavaScript key codes). + * @param fn A function to trigger when it happens. + * @param metadata An optional set of metadata. + */ + AddCode(keySequence: string, fn: () => any, metadata: any): Egg; + /** + * Add a hook, that will run after any egg code is triggered. You could use it to fire a Google + * Analytics event or send out a tweet that someone finally found your easter egg. Hooks get + * access to the whole Egg.js object so you can pull information about the easter egg that + * fired via this.activeEgg. + * @param fn A function to trigger when it happens. + */ + AddHook(fn: () => any): Egg; + /** + * Start listening to key codes. + */ + Listen(): Egg; + /** + * Use to add in your easter eggs. + * @param keySequence You need to pass it the character sequence to trigger the easter egg + * callback (which can either be in plain English or JavaScript key codes). + * @param fn A function to trigger when it happens. + */ + addCode(keySequence: string, fn: () => any): Egg; + /** + * Use to add in your easter eggs. + * @param keySequence You need to pass it the character sequence to trigger the easter egg + * callback (which can either be in plain English or JavaScript key codes). + * @param fn A function to trigger when it happens. + * @param metadata An optional set of metadata. + */ + addCode(keySequence: string, fn: () => any, metadata: any): Egg; + /** + * Add a hook, that will run after any egg code is triggered. You could use it to fire a Google + * Analytics event or send out a tweet that someone finally found your easter egg. Hooks get + * access to the whole Egg.js object so you can pull information about the easter egg that + * fired via this.activeEgg. + * @param fn A function to trigger when it happens. + */ + addHook(fn: () => any): Egg; + /** + * Start listening to key codes. + */ + listen(): Egg; +} \ No newline at end of file