UNPKG

shyft

Version:

Model driven GraphQL API framework

42 lines (41 loc) 2.43 kB
"use strict"; 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;