shyft
Version:
Model driven GraphQL API framework
42 lines (41 loc) • 2.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isStorageDataType = exports.StorageDataType = void 0;
var util_1 = require("../util");
var constants_1 = require("../constants");
var StorageDataType = /** @class */ (function () {
function StorageDataType(setup) {
if (setup === void 0) { setup = {}; }
var name = setup.name, description = setup.description, nativeDataType = setup.nativeDataType, isSortable = setup.isSortable, serialize = setup.serialize, enforceSerialize = setup.enforceSerialize, parse = setup.parse, capabilities = setup.capabilities;
util_1.passOrThrow(name, function () { return 'Missing storage data type name'; });
util_1.passOrThrow(description, function () { return "Missing description for storage data type '" + name + "'"; });
util_1.passOrThrow(nativeDataType, function () { return "Missing native data type for storage data type '" + name + "'"; });
util_1.passOrThrow(util_1.isFunction(serialize), function () { return "Storage data type '" + name + "' has an invalid serialize function"; });
util_1.passOrThrow(!parse || util_1.isFunction(parse), function () { return "Storage data type '" + name + "' has an invalid parse function"; });
if (capabilities) {
util_1.passOrThrow(util_1.isArray(capabilities), function () { return "Storage data type '" + name + "' has an invalid list of capabilities"; });
capabilities.map(function (capability) {
util_1.passOrThrow(constants_1.storageDataTypeCapabilities[capability], function () {
return "Storage data type '" + name + "' has an unknown capability '" + capability + "'";
});
});
}
this.name = name;
this.description = description;
this.nativeDataType = nativeDataType;
this.isSortable = !!isSortable;
this.serialize = serialize;
this.enforceSerialize = !!enforceSerialize;
this.parse = parse || (function (value) { return value; });
this.capabilities = capabilities || [];
}
StorageDataType.prototype.toString = function () {
return this.name;
};
return StorageDataType;
}());
exports.StorageDataType = StorageDataType;
var isStorageDataType = function (obj) {
return obj instanceof StorageDataType;
};
exports.isStorageDataType = isStorageDataType;