@result/hasura-parser
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.1 • Public • Published

    RESULT d.o.o.

    Hasura Parser

    npm version Coverage Dependencies License

    An easy utility library for parsing data from Hasura events and actions.

    Made with ❤️ at RESULT d.o.o.

    Getting started

    First install the package.

    yarn add @result/hasura-parser
    npm install @result/hasura-parser

    Actions

    To use the Action Parser you can either import ActionParser or require the whole package.

    import { ActionParser } from '@result/hasura-parser'
     
    // Data is from your request body
    const actionParser = new ActionParser( data )

    Parsing data

    To get the data you need, just pass in the keys of the arguments you want:

    const data = actionParser.getData( "id", "type", "user" )

    This will give you the following response:

    {
        "id": <data>,
        "type": <data>,
        "user": null
    }

    If the value is not found a null will be returned in its place.

    If you want to get all the data in its raw form, you can issue the following call:

    const data = actionParser.getRawData()

    This will give you all the values that were passed in by Hasura.

    Getting session variables

    Single session variable:

    const userId = actionParser.getSessionVariable( "x-hasura-user-id" )

    This will either give you the value of the session variable or just null if it is not set.

    All session variables:

    const sessionVariables = actionParser.getSessionVariables()

    Other data

    Action name:

    const sessionVariables = actionParser.getActionName()

    Events

    To use the Events Parser you can either import EventParser or require the whole package.

    import { EventParser } from '@result/hasura-parser'
     
    // Data is from your request body
    const eventParser = new EventParser( data )

    Parsing data

    To get the data you need, just pass in the keys of the arguments you want:

    const data = eventParser.getData( "id", "type", "user" )

    The response depends on the event type, if it is an INSERT, DELETE or MANUAL operation you will receive the following response:

    {
        "id": <data>,
        "type": <data>,
        "user": null
    }

    If the value is not found a null will be returned in its place.

    If it is an UPDATE operation, the object will contain the old and new values:

    {
        "old": {
            "id": <data>,
            "type": <data>,
            "user": null
        },
        "new": {
            "id": <data>,
            "type": <data>,
            "user": null
        }
    }

    If you want to get all the data in its raw form, you can issue the following calls:

    const oldData = eventParser.getOldData()
    const newData = eventParser.getNewData()

    Depending on the event type, old or new can be null.

    This will give you all the values that were passed in by Hasura.

    Getting session variables

    Single session variable:

    const userId = eventParser.getSessionVariable( "x-hasura-user-id" )

    This will either give you the value of the session variable or just null if it is not set.

    All session variables:

    const sessionVariables = eventParser.getSessionVariables()

    Other data

    Get ID of event:

    const eventID = eventParser.getID()

    Get trigger name (set in Hasura Console):

    const triggerName = eventParser.getTriggerName()

    Get schema name (the name of the schema that was affected by the event):

    const schemaName = eventParser.getSchemaName()

    Get table name (name of affected table by the event):

    const tableName = eventParser.getTableName()

    Get current retries and max retries (if this is set in the event in Hasura):

    const currentRetry = eventParser.getCurrentRetry()
    const maxRetries = eventParser.getMaxRetries()

    Operation type checking (INSERT, UPDATE, DELETE, MANUAL):

    const isInsert = eventParser.isInsertOperation() // The following operations return a boolean value
    const isUpdate = eventParser.isUpdateOperation()
    const isDelete = eventParser.isDeleteOperation()
    const isManual = eventParser.isManualOperation()
    const operationType = eventParser.getOperationType() // Returns INSERT, UPDATE, DELETE or MANUAL

    Timestamp of operation:

    const timestamp = eventParser.getTimestamp()

    Trace context:

    const traceContextID = eventParser.getTraceContextID()
    const traceContextSpanID = eventParser.getTraceContextSpanID()

    Contributions

    If you would like to make any contribution you are welcome to do so.

    Install

    npm i @result/hasura-parser

    DownloadsWeekly Downloads

    3

    Version

    1.0.1

    License

    Apache-2.0

    Unpacked Size

    47.7 kB

    Total Files

    18

    Last publish

    Collaborators

    • divjaklab
    • bostjan-cigan