Source: tracking/connector/EnableNow.js

(function() {
    /**
     * @typedef {Object} Help4.tracking.connector.EnableNow.Params
     * @property {string} url
     */

    /**
     * @augments Help4.jscore.ControlBase
     * @param {string} url
     * @param {string} xcsrfId
     */
    Help4.tracking.connector.EnableNow = class extends Help4.jscore.ControlBase {
        /**
         * @override
         * @param {Help4.tracking.Tracking.Connector} params
         */
        constructor(params) {
            const {TYPES: T} = Help4.jscore.ControlBase;

            super(params, {
                params: {
                    url:     {type: T.string_null, readonly: true},
                    xcsrfId: {type: T.string, init: Help4.createId(), readonly: true}
                }
            });

            const {url} = params;
            const hostUrl = typeof url === 'string'
                ? url.replace(/\/(pub|wa)\/.*$/, '')
                : null;

            hostUrl && Help4.ajax.Ajax.setXCSRF({id: this.xcsrfId, url: hostUrl + '/self'});
        }

        /**
         * @param {Help4.tracking.Tracking.Data} data
         * @returns {Promise<*>}
         */
        track(data) {
            const {url, xcsrfId} = this;
            if (!url) return Help4.Promise.resolve();

            data.context.app = 'WA';

            return Help4.ajax.Ajax({
                url: `${url}/.record`,
                method: 'POST',
                data,
                saml: true,
                xcsrf: xcsrfId,
                promise: true
            });
        }
    }
})();