cloudcmd/lib/client/cloudcmd.js
2016-07-28 13:06:03 +03:00

96 lines
2.5 KiB
JavaScript

var CloudCmd;
(function() {
'use strict';
CloudCmd = load;
function load(prefix) {
var urlFiles,
modules = '/modules/',
lib = 'lib/',
client = 'client/',
files = [
'util',
'cloudfunc',
client + 'dom',
client + 'events',
client + 'rest',
client + 'load',
client + 'notify',
client + 'storage',
client + 'files',
client + 'dialog',
'client',
client + 'buffer',
client + 'listeners',
client + 'key',
client + 'directory'
].map(function(name) {
return lib + name;
}),
moduleFiles = [
window.Promise ? '' : 'promise-polyfill/promise.min',
libDir('format', 'format-io'),
libDir('rendy'),
libDir('emitify', '', 'dist'),
libDir('exec', 'execon'),
libDir('jonny')
].filter(function(name) {
return name;
}).map(function(name) {
return modules + name;
});
files = moduleFiles
.concat(files)
.concat('/join/join')
.map(function(name) {
return name + '.js';
});
urlFiles = getJoinURL(files);
if (!prefix)
prefix = '';
createScript(prefix + urlFiles, function() {
CloudCmd.init(prefix);
});
}
function libDir(name, dir, lib) {
if (!dir)
dir = name;
if (lib)
lib = '/' + lib + '/';
else
lib = '/lib/';
return dir + lib + name;
}
function createScript(url, callback) {
var script = document.createElement('script');
script.src = url;
script.async = true;
script.addEventListener('load', function load(event) {
callback(event);
script.removeEventListener('load', load);
});
document.body.appendChild(script);
}
function getJoinURL(names) {
var prefix = '/join:',
url = prefix + names.join(':');
return url;
}
})();