src/cm/media/js/lib/yui/yui3-3.15.0/build/get-nodejs/get-nodejs.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 602 e16a97fb364a
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('get', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
    * NodeJS specific Get module used to load remote resources.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
    * It contains the same signature as the default Get module so there is no code change needed.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
    * @module get-nodejs
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
    * @class GetNodeJS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
    var Module = require('module'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
        path = require('path'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
        fs = require('fs'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
        request = require('request'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
        end = function(cb, msg, result) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
            if (Y.Lang.isFunction(cb.onEnd)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
                cb.onEnd.call(Y, msg, result);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
        }, pass = function(cb) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
            if (Y.Lang.isFunction(cb.onSuccess)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
                cb.onSuccess.call(Y, cb);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
            end(cb, 'success', 'success');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
        }, fail = function(cb, er) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
            er.errors = [er];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
            if (Y.Lang.isFunction(cb.onFailure)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
                cb.onFailure.call(Y, er, cb);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
            end(cb, er, 'fail');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
    Y.Get = function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
    //Setup the default config base path
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
    Y.config.base = path.join(__dirname, '../');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
    YUI.require = require;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
    YUI.process = process;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
    * Takes the raw JS files and wraps them to be executed in the YUI context so they can be loaded
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
    * into the YUI object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
    * @method _exec
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
    * @param {String} data The JS to execute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
    * @param {String} url The path to the file that was parsed
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
    * @param {Function} cb The callback to execute when this is completed
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
    * @param {Error} cb.err=null Error object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
    * @param {String} cb.url The URL that was just parsed
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
    Y.Get._exec = function(data, url, cb) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
        if (data.charCodeAt(0) === 0xFEFF) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
            data = data.slice(1);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
        var mod = new Module(url, module);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
        mod.filename = url;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
        mod.paths = Module._nodeModulePaths(path.dirname(url));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
        if (typeof YUI._getLoadHook === 'function') {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
            data = YUI._getLoadHook(data, url);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
        mod._compile('module.exports = function (YUI) {' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
            'return (function () {'+ data + '\n;return YUI;}).apply(global);' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
        '};', url);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
        /*global YUI:true */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
        YUI = mod.exports(YUI);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
        mod.loaded = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
        cb(null, url);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
    * Fetches the content from a remote URL or a file from disc and passes the content
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
    * off to `_exec` for parsing
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
    * @method _include
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
    * @param {String} url The URL/File path to fetch the content from
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
    * @param {Function} cb The callback to fire once the content has been executed via `_exec`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
    Y.Get._include = function (url, cb) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
        var cfg,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
            mod,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
            self = this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
        if (url.match(/^https?:\/\//)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
            cfg = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
                url: url,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
                timeout: self.timeout
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
            request(cfg, function (err, response, body) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
                if (err) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
                    cb(err, url);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
                } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
                    Y.Get._exec(body, url, cb);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
            try {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
                // Try to resolve paths relative to the module that required yui.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
                url = Module._findPath(url, Module._resolveLookupPaths(url, module.parent.parent)[1]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
                if (Y.config.useSync) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
                    //Needs to be in useSync
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
                    mod = fs.readFileSync(url,'utf8');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
                } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
                    fs.readFile(url, 'utf8', function (err, mod) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
                        if (err) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
                            cb(err, url);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
                        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
                            Y.Get._exec(mod, url, cb);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
                    });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
                    return;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
            } catch (err) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
                cb(err, url);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
                return;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
            Y.Get._exec(mod, url, cb);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
    * Override for Get.script for loading local or remote YUI modules.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
    * @method js
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
    * @param {Array|String} s The URL's to load into this context
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
    * @param {Object} options Transaction options
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
    Y.Get.js = function(s, options) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
        var urls = Y.Array(s), url, i, l = urls.length, c= 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
            check = function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
                if (c === l) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
                    pass(options);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
        /*jshint loopfunc: true */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
        for (i=0; i<l; i++) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
            url = urls[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
            if (Y.Lang.isObject(url)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
                url = url.url;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
            url = url.replace(/'/g, '%27');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
            Y.Get._include(url, function(err, url) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
                if (!Y.config) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
                    Y.config = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
                        debug: true
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
                    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
                if (options.onProgress) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
                    options.onProgress.call(options.context || Y, url);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
                if (err) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
                    fail(options, err);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
                } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
                    c++;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
                    check();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
        //Keeping Signature in the browser.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
        return {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
            execute: function() {}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
    * Alias for `Y.Get.js`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
    * @method script
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
    Y.Get.script = Y.Get.js;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
    //Place holder for SS Dom access
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
    Y.Get.css = function(s, cb) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
        pass(cb);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
}, '@VERSION@');