UNPKG

@platform/cell.schema

Version:

URI and database schemas for the `cell.os`.

82 lines (81 loc) 2.96 kB
"use strict"; 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;