passwordless icon indicating copy to clipboard operation
passwordless copied to clipboard

Typescript support

Open davidsoderberg opened this issue 7 years ago • 2 comments

Hi, it would be great if you implemented typescript support 😄

davidsoderberg avatar Jun 01 '18 05:06 davidsoderberg

I have a basic typescript definition file I'm using internally. I've been meaning to submit it to definitely typed:

/// <reference path="./passwordless-tokenstore.d.ts" />

declare module 'passwordless' {
  import TokenStore from 'passwordless-tokenstore'

  interface InitOptions {
    userProperty?: string;
    allowTokenReuse?: boolean;
    skipForceSessionSave?: boolean;
  }

  interface AcceptTokenOptions {
    successRedirect?: string;
    tokenField?: string;
    uidField?: string;
    allowPost?: boolean;
    failureFlash?: string;
    successFlash?: string;
    enableOriginRedirect?: boolean;
  }

  interface RestrictedMiddlewareOptions {
    failureRedirect?: string;
    failureFlash?: string;
    originField?: string;
  }

  interface RequestTokenOpts extends RestrictedMiddlewareOptions {
    successFlash?: string;
    userField?: string;
    deliveryField?: string;
    allowGet?: boolean;
  }

  interface AddDeliveryOpts {
    ttl?: number;
    tokenAlgorithm?: () => any;
  }

  type RequestHandler = any;
  type Request = any;
  type LazyError = any;

  type SendTokenFunction = (tokenToSend: string, uid: string, recipient: string, callback: (reason?: string) => void, req: Request) => void;
  type GetUserIDFunction = (user: string, delivery: any, callback: (error?: LazyError, user?: any) => void, req: Request) => void;

  export class Passwordless {
      constructor();

      init(tokenStore: TokenStore, options?: InitOptions): Passwordless;
  
      acceptToken(options?: AcceptTokenOptions): RequestHandler;

      /**
       * Middleware that ensures user is authenticated.
       */
      restricted(options: RestrictedMiddlewareOptions): RequestHandler;

      addDelivery(name: string, sendToken?: SendTokenFunction, options?: AddDeliveryOpts): void;
      addDelivery(sendToken: SendTokenFunction, options?: AddDeliveryOpts): void;

      /**
       * Logs out the current user and invalidates any tokens that are still valid for the user
       */
      logout(options: {successFlash?: string}): RequestHandler;

      /**
       * Requests a token from Passwordless for a specific user and calls the delivery strategy 
       * to send the token to the user. Sends back a 401 error message if the user is not valid 
       * or a 400 error message if no user information has been transmitted at all. By default,
       * POST params will be expected
       */
      requestToken(getUserID: GetUserIDFunction, options?: RequestTokenOpts): RequestHandler;

      sessionSupport(): RequestHandler;
  }
  var passwordless: Passwordless;

  export default passwordless
}


ajsharp avatar Mar 03 '19 02:03 ajsharp