baqend
Version:
Baqend JavaScript SDK
138 lines • 10 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Code = void 0;
var message = __importStar(require("../message"));
var connector_1 = require("../connector");
var Validator_1 = require("./Validator");
/**
* Representation of a Code which runs on Baqend.
*/
var Code = /** @class */ (function () {
/**
* @param metamodel
* @param entityManagerFactory
*/
function Code(metamodel, entityManagerFactory) {
this.metamodel = metamodel;
this.entityManagerFactory = entityManagerFactory;
}
/**
* Converts the given function to a string
* @param fn The JavaScript function to serialize
* @return The serialized function
*/
Code.prototype.functionToString = function (fn) {
if (!fn) {
return '';
}
var str = fn.toString();
str = str.substring(str.indexOf('{') + 1, str.lastIndexOf('}'));
if (str.charAt(0) === '\n') {
str = str.substring(1);
}
if (str.charAt(str.length - 1) === '\n') {
str = str.substring(0, str.length - 1);
}
return str;
};
/**
* Converts the given string to a module wrapper function
* @param signature The expected parameters of the function
* @param code The JavaScript function to deserialize
* @return The deserialized function
*/
Code.prototype.stringToFunction = function (signature, code) {
// eslint-disable-next-line @typescript-eslint/no-implied-eval
return new Function(signature /* typings are incorrect here */, code); // eslint-disable-line no-new-func
};
/**
* Loads a list of all available modules without handlers
*
* @return
*/
Code.prototype.loadModules = function () {
var msg = new message.GetAllModules();
return this.entityManagerFactory.send(msg)
.then(function (response) { return response.entity; });
};
Code.prototype.loadCode = function (type, codeType, asFunction) {
var _this = this;
if (asFunction === void 0) { asFunction = false; }
var bucket = typeof type === 'string' ? type : type.name;
var msg = new message.GetBaqendCode(bucket, codeType)
.responseType('text');
return this.entityManagerFactory.send(msg)
.then(function (response) { return _this.parseCode(bucket, codeType, asFunction, response.entity); }, function (e) {
if (e.status === connector_1.StatusCode.OBJECT_NOT_FOUND) {
return null;
}
throw e;
});
};
Code.prototype.saveCode = function (type, codeType, fn) {
var _this = this;
var bucket = typeof type === 'string' ? type : type.name;
var msg = new message.SetBaqendCode(bucket, codeType)
.entity(fn instanceof Function ? this.functionToString(fn) : fn, 'text')
.responseType('text');
return this.entityManagerFactory.send(msg)
.then(function (response) { return _this.parseCode(bucket, codeType, fn instanceof Function, response.entity); });
};
/**
* Deletes Baqend code identified by the given bucket and code type
*
* @param type The entity type for the handler or the Name of the
* Baqend code
* @param codeType The type of the code
* @return succeed if the code was deleted
*/
Code.prototype.deleteCode = function (type, codeType) {
var _this = this;
var bucket = typeof type === 'string' ? type : type.name;
var msg = new message.DeleteBaqendCode(bucket, codeType);
return this.entityManagerFactory.send(msg)
.then(function () { return _this.parseCode(bucket, codeType, false, null); });
};
/**
* @param bucket
* @param codeType
* @param [asFunction=false]
* @param code
* @return
* @private
*/
Code.prototype.parseCode = function (bucket, codeType, asFunction, code) {
if (codeType === 'validate') {
var type = this.metamodel.entity(bucket);
type.validationCode = code === null ? null : Validator_1.Validator.compile(type, code);
return asFunction ? type.validationCode : code;
}
return code && asFunction ? this.stringToFunction(['module', 'exports'], code) : code;
};
return Code;
}());
exports.Code = Code;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9pbnRlcnNlY3Rpb24vQ29kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUFzQztBQUN0QywwQ0FBMEM7QUFJMUMseUNBQXdDO0FBRXhDOztHQUVHO0FBQ0g7SUFLRTs7O09BR0c7SUFDSCxjQUFZLFNBQW9CLEVBQUUsb0JBQTBDO1FBQzFFLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILCtCQUFnQixHQUFoQixVQUFpQixFQUFZO1FBQzNCLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDUCxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hCLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQzFCLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3ZDLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7O09B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