This package has been deprecated

    Author message:

    This component is deprecated

    TypeScript icon, indicating that this package has built-in type declarations

    3.0.0 • Public • Published

    Published on NPM

    Build Status

    Published on


    Package containing a logic for creating HTTP request / response hooks for Advanced REST Client.

    The documentation for request actions (including data model) can be found in ARC electron wiki page.


      const actions = [{
        source: 'response.value',
        action: 'assign-variable',
        destination: 'itemId',
        hasIterator: true,
        iterator: {
          source: 'json.*.id',
          operator: 'equal',
          condition: 'id2'
        conditions: [{
          enabled: true,
          source: 'response.status',
          operator: 'equal',
          condition: '200'
      const request = {};
      const response = {
        url: '...',
        headers: 'content-type: application/json',
        payload: '{"json": [{"id": "id1", "value": "v1"}, {"id": "id2", "value": "v2"}]}'
      const logic = document.querySelector('request-hooks-logic');
      logic.processActions(actions, request, response)
      .then(() => {
        // done, variables are set, if any

    When this action is executed it informs variables-manager to set in-memory variable called itemId and it's value to be set to v2. The logic runner iterates over the response in a path defined as json.*.id. When the right object is found by the iterator then the value is set from source property.

    API components

    This components is a part of API components ecosystem

    Jexl dependency

    Previous versions of this component included Jexl library. This version do not have Jexl as a dependency but it is required to run the component.

    You must install Jexl on your project, and build it for browser. See dev-lib/ folder for an example of such build.

    Finally you have to either pass the pointer to Jexl library to jexl property or point to a pointer relative to the window object.

    Setting Jexl pointer:

    const eval = document.querySelector('request-hooks-logic');
    eval.jexl = myJexlVariable;

    Setting path to Jexl:

    <request-hooks-logic jexlpath="ArcVariables.JexlDev"></request-hooks-logic>

    This expects the Jexl library to be under window.ArcVariables.JexlDev variable.



    npm install --save @advanced-rest-client/request-hooks-logic

    In a LitElement template

    import { LitElement, html } from 'lit-element';
    import '@advanced-rest-client/request-hooks-logic/request-hooks-logic.js';
    class SampleElement extends LitElement {
      render() {
        return html`
        <request-hooks-logic jexl="${this.jexlRef}"></request-hooks-logic>
      async processResponse(request, response) {
        const node = this.shadowRoot.querySelector('request-hooks-logic');
        const actions = await getActions();
        await logic.processActions(actions, request, response);
    customElements.define('sample-element', SampleElement);


    git clone
    cd request-hooks-logic
    npm install

    Running the tests

    npm test


    npm i @advanced-rest-client/request-hooks-logic

    DownloadsWeekly Downloads






    Unpacked Size

    244 kB

    Total Files


    Last publish


    • carowright
    • jarrodek
    • twoplustwoone
    • lbauret