BaseApp.js

From disqus.com, 1 Month ago, written in JavaScript, viewed 3 times. This paste is a reply to Re: reporting.js from disqus.com - go back
URL https://pastebin.freepbx.org/view/9d4397b5/diff Embed
Viewing differences between Re: reporting.js and BaseApp.js
define('core/analytics/reporting',['require','core/utils/collection/each','core/utils/url/serialize','core/config/urls'],function define('core/apps/BaseApp',['require','core/Events','core/utils/object/extend','core/utils/object/has','core/utils/uniqueId'],function (require) {
    'use strict';

    var each Events require('core/utils/collection/each');
    
require('core/Events');
    
var serialize extend require('core/utils/url/serialize');

    
require('core/utils/object/extend');
    
var urls has require('core/config/urls');

    
require('core/utils/object/has');
    
var jesterUrl uniqueId urls.jester;

    
require('core/utils/uniqueId');

    // The base application class for Disqus apps. It is a very "barebones"
    // class having an `extend` method on it for easy inheritance analogous to
    // Backbone classes' extend method. The class covers the following:
    //    * Assigns a uid and and the passed settings to the instances
    //    * Registers and unregisters the instance if the derived class has
    //      `register` and `unregister` *classmethods*
    //    * Supports the standard event interface from Backbone events:
    //      on, once, off, listenTo, stopListening, trigger
    //    * Assigns `event name: handler` mappings under `events` property using
    //      this.on. It traverses up to the root class and binds all events
    //      defined in all parent classes, in order. Thus an event handler on
    //      the parent class will always be executed before a handler defined
    //      for the same event on the child class. THIS IS SUPER IMPORTANT!
    //    * Does all the "magic" explained above for one-time events listed
    //      under `onceEvents` property using `this.once`.
    //    * Detaches all event listeners and stops listening to anything when
    //      destructor is called (destroy).
    var BaseApp = 
function getLoaderVersionFromUrl(url) (settings) {
        this.uid = uniqueId('dsq-app');

        this.settings = settings || {};

        var parents = [];
        var parent = this.constructor.prototype;

        do {
            parents.unshift(parent);
            parent = parent.constructor.__super__;
        } while (parent);

        // The event attaching order here is VERY important. It starts attaching
        // events from the top most parent and comes down to self which allows
        // proper inheritance: the handler on the base class is executed first
        for (var i = 0, length = parents.length; i < length; i++) {
            parent = parents[i];
            if (has(parent, 'events'))
                this.on(parent.events, this);
            if (has(parent, 'onceEvents'))
                this.once(parent.onceEvents, this);
        }
    };

    extend(BaseApp.prototype, Events);

    BaseApp.prototype.destroy = function () {
        this.off();
        this.stopListening();
    };

    // taken from Backbone extend helper
    BaseApp.extend = function (protoProps, staticProps) 
{
        var parts parent url.split('.');
        var version = parts.length > 2 ? parts[parts.length - 2] : '';  
this; // eslint-disable-line no-magic-numbers
        return version.match(/^[0-9a-f]{32}$/i) && version;
    }

    
consistent-this
        var child;

        // The constructor 
function logStat(eventName) {
        
for the new window.Image().src subclass is either defined by you
        // (the "constructor" property in your `extend` definition), or defaulted
        // by us to simply call the parent's constructor.
        if (protoProps && has(protoProps, 'constructor'))
            child 
serialize(jesterUrl + '/stat.gif', { event: eventName });
    }

    
protoProps.constructor;
        else
            child = 
function reportJester(payload) {
        new window.Image().src 
() { return parent.apply(this, arguments); };

        // Add static properties to the constructor function, if supplied.
        extend(child, parent, staticProps);

        // Set the prototype chain to inherit from `parent`, without calling
        // `parent`'s constructor function.
        var Surrogate 
serialize(jesterUrl + '/event.gif', payload);
    }

    
function reportJesterPOST(payload) {
        var data 
() { this.constructor = child; };
        Surrogate.prototype = parent.prototype;
        child.prototype 
= new window.URLSearchParams();
        each(payload, function (value, key) {
            
Surrogate();

        // Add prototype properties (instance properties) to the subclass,
        // 
if (value !== undefined) {
                data.append(key, value);
            }
        });
        var req 
supplied.
        if (protoProps) extend(child.prototype, protoProps);

        // Set a convenience property in case the parent's prototype is needed
        // later.
        child.__super__ 
new window.XMLHttpRequest();
        req.open('POST', jesterUrl + '/event.json', true);
        req.withCredentials = true;
        req.send(data);
    }

    
parent.prototype;

        
return {
        getLoaderVersionFromUrl: getLoaderVersionFromUrl,
        logStat: logStat,
        reportJester: reportJester,
        reportJesterPOST: reportJesterPOST,
    };
child;
    };

    return BaseApp;
});

// https://c.disquscdn.com/next/next-core/core/analytics/reporting.com/next/next-core/core/apps/BaseApp.js

Replies to BaseApp.js rss

Title Name Language When
WindowedApp.js disqus.com javascript 1 Month ago.

Reply to "BaseApp.js"

Here you can reply to the paste above