webgme-engine
Version:
WebGME server and Client API without a GUI
110 lines (84 loc) • 3.8 kB
JavaScript
/*globals define*/
/*eslint-env node, browser*/
/**
* @author mmaroti / https://github.com/mmaroti
*/
define(['common/core/CoreAssert', 'common/core/tasync'], function (ASSERT, TASYNC) {
'use strict';
// ----------------- CoreUnwrap -----------------
var CoreUnwrap = function (innercore, options) {
ASSERT(typeof options === 'object');
ASSERT(typeof options.globConf === 'object');
ASSERT(typeof options.logger !== 'undefined');
var logger = options.logger.fork('coreunwrap');
function checkNode(node) {
if (node === null || innercore.isValidNode(node)) {
return node;
} else {
throw new Error('Invalid result node');
}
}
function checkNodes(nodes) {
ASSERT(nodes instanceof Array);
var i;
for (i = 0; i < nodes.length; ++i) {
if (!innercore.isValidNode(nodes[i])) {
throw new Error('Invalid result node array');
}
}
return nodes;
}
// copy all operations
var core = {};
for (var key in innercore) {
core[key] = innercore[key];
}
logger.debug('initialized');
core.loadRoot = TASYNC.unwrap(innercore.loadRoot);
//core.persist = TASYNC.unwrap(oldcore.persist);
// core.loadChild = TASYNC.unwrap(oldcore.loadChild);
core.loadChild = TASYNC.unwrap(function (node, relid) {
return TASYNC.call(checkNode, innercore.loadChild(node, relid));
});
// core.loadByPath = TASYNC.unwrap(oldcore.loadByPath);
core.loadByPath = TASYNC.unwrap(function (node, path) {
return TASYNC.call(checkNode, innercore.loadByPath(node, path));
});
// core.loadChildren = TASYNC.unwrap(oldcore.loadChildren);
core.loadChildren = TASYNC.unwrap(function (node) {
return TASYNC.call(checkNodes, innercore.loadChildren(node));
});
// core.loadOwnChildren = TASYNC.unwrap(oldcore.loadOwnChildren);
core.loadOwnChildren = TASYNC.unwrap(function (node) {
return TASYNC.call(checkNodes, innercore.loadOwnChildren(node));
});
core.loadPointer = TASYNC.unwrap(innercore.loadPointer);
core.loadCollection = TASYNC.unwrap(innercore.loadCollection);
core.loadSubTree = TASYNC.unwrap(innercore.loadSubTree);
core.loadOwnSubTree = TASYNC.unwrap(innercore.loadOwnSubTree);
core.loadTree = TASYNC.unwrap(innercore.loadTree);
core.traverse = TASYNC.unwrap(innercore.traverse);
core.setGuid = TASYNC.unwrap(innercore.setGuid);
//core diff async functions
if (typeof innercore.generateTreeDiff === 'function') {
core.generateTreeDiff = TASYNC.unwrap(innercore.generateTreeDiff);
}
if (typeof innercore.generateLightTreeDiff === 'function') {
core.generateLightTreeDiff = TASYNC.unwrap(innercore.generateLightTreeDiff);
}
if (typeof innercore.applyTreeDiff === 'function') {
core.applyTreeDiff = TASYNC.unwrap(innercore.applyTreeDiff);
}
//library functions
core.addLibrary = TASYNC.unwrap(innercore.addLibrary);
core.updateLibrary = TASYNC.unwrap(innercore.updateLibrary);
// core.loadInstances = TASYNC.unwrap(oldcore.loadInstances);
core.loadInstances = TASYNC.unwrap(function (node) {
return TASYNC.call(checkNodes, innercore.loadInstances(node));
});
core.loadMembers = TASYNC.unwrap(innercore.loadMembers);
core.loadOwnMembers = TASYNC.unwrap(innercore.loadOwnMembers);
return core;
};
return CoreUnwrap;
});