diff --git a/firebase-token-generator/firebase-token-generator-test.ts.tscparams.ts b/firebase-token-generator/firebase-token-generator-test.ts.tscparams.ts new file mode 100644 index 0000000000..155c6fe9e3 --- /dev/null +++ b/firebase-token-generator/firebase-token-generator-test.ts.tscparams.ts @@ -0,0 +1 @@ +--module commonjs \ No newline at end of file diff --git a/firebase-token-generator/firebase-token-generator-tests.ts b/firebase-token-generator/firebase-token-generator-tests.ts new file mode 100644 index 0000000000..7dc25b6a0b --- /dev/null +++ b/firebase-token-generator/firebase-token-generator-tests.ts @@ -0,0 +1,15 @@ +/// +import FirebaseTokenGenerator = require('firebase-token-generator'); + +const tokenGenerator: FirebaseTokenGenerator = new FirebaseTokenGenerator("MY_SECRET"); + +let token: string = tokenGenerator.createToken({blah: 5, uid: "blah"}); +log("Token should not be empty string", (token !== "")); +log("Token should consist of three parts", (token.split(".").length === 3)); + +token = tokenGenerator.createToken({blah: 5}, {expires : 1234, notBefore : 133234, admin : true, debug : false}); +log("Token should take valid options", (token !== "")); + +function log(description: string, statement: boolean) : void { + console.log((statement? "SUCCESS" : "FAIL") + " " + description); +} diff --git a/firebase-token-generator/firebase-token-generator.d.ts b/firebase-token-generator/firebase-token-generator.d.ts new file mode 100644 index 0000000000..ed23625555 --- /dev/null +++ b/firebase-token-generator/firebase-token-generator.d.ts @@ -0,0 +1,47 @@ +// Type definitions for firebase-token-generator v2.0.0 +// Project: https://github.com/firebase/firebase-token-generator-node +// Definitions by: Hans Van den Keybus +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +interface TokenOptions { + expires?: number; + notBefore?: number; + admin?: boolean; + debug?: boolean; + simulate?: boolean; + iat?: number; +} + +declare class FirebaseTokenGenerator { + + /** + * Builds a new object that can generate Firebase authentication tokens. + * @constructor + * @param { String } secret The secret for the Firebase being used (get yours from the Firebase Admin Console). + */ + constructor(secret: string); + + /** + * Creates a token that authenticates a client with arbitrary data "data", and the specified options. + * + * @param { any } data JSON data that will be passed to the Firebase Rules API once a client authenticates. Unless the + * "admin" flag is set, it must contain a "uid" key, and if it does it must be a string of length + * 256 or less. + * @param { TokenOptions } options The developer-supplied options for this token. Supported options are: + * a) "expires" -- A timestamp (as a number of seconds since the epoch) denoting a time after which + * this token should no longer be valid. + * b) "notBefore" -- A timestamp (as a number of seconds since the epoch) denoting a time before + * which this token should be rejected by the server. + * c) "admin" -- Set to true to bypass all security rules (use this for your trusted servers). + * d) "debug" -- Set to true to enable debug mode (so you can see the results of Rules API operations) + * e) "simulate" -- (internal-only for now) Set to true to neuter all API operations (listens / puts + * will run security rules but not actually write or return data) + * f) "iat" -- (Number) (internal-only, for testing) Set the issued at time for the generated token + * @return {String} The authentication token + */ + createToken(data: any, options?: TokenOptions): string; +} + +declare module 'firebase-token-generator' { + export = FirebaseTokenGenerator; +}