@platform/cell.schema
Version:
URI and database schemas for the `cell.os`.
82 lines (81 loc) • 2.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var common_1 = require("../common");
var Uri_1 = require("../Uri");
var Links_1 = require("../Links");
var prefix = 'ref';
var ref = Links_1.Links.create(prefix);
var RefLinks = (function () {
function RefLinks() {
}
RefLinks.total = function (links) {
if (links === void 0) { links = {}; }
return ref.total(links);
};
RefLinks.toKey = function (linkName) {
return ref.toKey(linkName);
};
RefLinks.parseKey = function (linkKey) {
return ref.parseKey(linkKey);
};
RefLinks.parseValue = function (linkValue) {
if (!RefLinks.is.refValue(linkValue)) {
throw new Error("Cannot parse '" + linkValue + "' as it is not a supported URI type.");
}
var res = ref.parseValue(linkValue);
var toString = function (options) {
if (options === void 0) { options = {}; }
var hash = res.query.hash;
var query = common_1.queryString
.build({ allowNil: false })
.add('hash', options.hash === null ? null : options.hash || hash)
.toString();
return "" + res.uri.toString() + query;
};
return tslib_1.__assign(tslib_1.__assign({}, res), { toString: toString });
};
RefLinks.parse = function (linkKey, linkValue) {
var key = RefLinks.parseKey(linkKey);
var value = RefLinks.parseValue(linkValue);
var toString = value.toString;
return tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, key), value), { toString: toString });
};
RefLinks.toValue = function (uri, options) {
if (options === void 0) { options = {}; }
var query = common_1.queryString
.build({ allowNil: false })
.add('hash', options.hash)
.toString();
return "" + uri.toString() + query;
};
RefLinks.toList = function (links) {
if (links === void 0) { links = {}; }
return ref.toList(links).map(function (_a) {
var key = _a.key, value = _a.value;
return RefLinks.parse(key, value);
});
};
RefLinks.find = function (links) {
if (links === void 0) { links = {}; }
return {
byName: function (path) {
var match = ref.find(links).byName(path);
return match ? RefLinks.parse(match.key, match.value) : undefined;
},
};
};
RefLinks.prefix = prefix;
RefLinks.is = {
refKey: function (input) {
return ref.isKey(input);
},
refValue: function (input) {
input = (input || '').toString().trim();
var uri = Uri_1.Uri.parse(input);
return ['NS', 'CELL', 'ROW', 'COLUMN'].includes(uri.type);
},
};
return RefLinks;
}());
exports.RefLinks = RefLinks;