Options
All
  • Public
  • Public/Protected
  • All
Menu

Module callables/src

Index

Type aliases

CallableFunction

CallableFunction: (input: unknown, context?: EventContext) => PromiseLike<unknown> | unknown

Type declaration

    • (input: unknown, context?: EventContext): PromiseLike<unknown> | unknown
    • Parameters

      • input: unknown
      • Optional context: EventContext

      Returns PromiseLike<unknown> | unknown

CallableMiddleware

CallableMiddleware: (next: CallableFunction) => CallableFunction

Type declaration

ErrorHandler

ErrorHandler: (input: unknown, context?: EventContext) => HttpsError

Type declaration

    • (input: unknown, context?: EventContext): HttpsError
    • Parameters

      • input: unknown
      • Optional context: EventContext

      Returns HttpsError

Functions

composeMiddlewares

  • Description

    The compose function is a middleware generator. This allows you to compose several simple callable middleware to make up a heavier one. Use compose to integrate various functionalities into a more complex one.

    Usage

    import { compose, isAuth, hasResourceAccess } from '@rainbow-cloud-functions/callables';
    
    const callableFunctionFoo = (data, context) => {
         // callable function code here.
    };
    
    exports.callableFunctionFoo = compose(isAuth(), hasResourceAccess('users'))(callableFunctionFoo);
    

    Parameters

    Returns CallableMiddleware

Const hasOneOfPermissions

  • hasOneOfPermissions(permissions: string[], errorHandler?: ErrorHandler): (next: CallableFunction) => (data: unknown, context: EventContext) => unknown
  • hasOneOfPermissions is a middleware generator. It allows you to check on permissions attached in customClaims.

    Usage

    import { isAuth, hasOneOfPermissions, composeMiddlewares } from '@rainbow-cloud-functions/callables';
    
    const callableFunctionFoo = (data, context) => {
         // callable function code here.
    };
    
    exports.callableFunctionFoo = composeMiddlewares(
        isAuth(),
        hasOneOfPermissions(['read:book', 'write:book'])
    )(callableFunctionFoo);
    

    What do you need to know:

    • permissions should be an array of string e.g. { permissions: ['read:book'] }
    • it will throw an error with code: 'permission-denied'

    Parameters

    Returns (next: CallableFunction) => (data: unknown, context: EventContext) => unknown

      • Parameters

        Returns (data: unknown, context: EventContext) => unknown

          • (data: unknown, context: EventContext): unknown
          • Parameters

            • data: unknown
            • context: EventContext

            Returns unknown

Const hasOneOfRoles

  • hasOneOfRoles(roles: string[], errorHandler?: ErrorHandler): (next: CallableFunction) => (data: unknown, context: EventContext) => unknown
  • hasOneOfRoles is a middleware generator. It allows you to check on roles attached in customClaims.

    Usage

    import { isAuth, hasOneOfRoles, composeMiddlewares } from '@rainbow-cloud-functions/callables';
    
    const callableFunctionFoo = (data, context) => {
         // callable function code here.
    };
    
    exports.callableFunctionFoo = composeMiddlewares(
        isAuth(),
        hasOneOfRoles(['admin', 'reseller'])
    )(callableFunctionFoo);
    

    What do you need to know:

    • roles should be an array of string e.g. { roles: ['admin'] }
    • it will throw an error with code: 'permission-denied'

    Parameters

    Returns (next: CallableFunction) => (data: unknown, context: EventContext) => unknown

      • Parameters

        Returns (data: unknown, context: EventContext) => unknown

          • (data: unknown, context: EventContext): unknown
          • Parameters

            • data: unknown
            • context: EventContext

            Returns unknown

Const isAuth

Const isValidData

  • isValidData is a middleware generator. It allows you to validate the data object param of a callable function using JSON Schema Validator(Ajv).

    Usage

    import { isValidData } from '@rainbow-cloud-functions/callables';
    
    const callableFunctionFoo = (data, context) => {
         // callable function code here.
    };
    const schema = {
         type: 'object',
         properties: {
             name: { type: 'string' },
         },
         required: ['name'],
    };
    exports.callableFunctionFoo = isValidData({ schema })(callableFunctionFoo);
    

    Usage with custom keywords

    import { isValidData } from '@rainbow-cloud-functions/callables';
    
    const callableFunctionFoo = (data, context) => {
         // callable function code here.
    };
    
    const keywords = [
         {
             keyword: "isUppercase",
             validate: (schema, data) => data.toUpperCase() === data,
         }
    ]
    
    const schema = {
         type: 'object',
         properties: {
             name: {
                 type: 'string',
                 isUppercase: true,
             },
         },
         required: ['name'],
    };
    
    

    Parameters

    Returns CallableMiddleware

Generated using TypeDoc