UNPKG

@platform/cell.schema

Version:

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

56 lines (55 loc) 2.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.KeyEncoding = void 0; exports.KeyEncoding = { escape: function (input) { var ILLEGAL = [':']; ILLEGAL.forEach(function (char) { if (input.includes(char)) { throw new Error("Link key cannot contain \"".concat(char, "\" character.")); } }); input = trimSlashes(input); var escapeMultiPeriods = function (input) { var regex = new RegExp(/\.{2,}/g); var match = regex.exec(input); if (match && match[0]) { var left = input.substring(0, match.index); var middle = ':'.repeat(match[0].length); var right = input.substring(match.index + match[0].length); input = "".concat(left, "[").concat(middle, "]").concat(right); return escapeMultiPeriods(input); } else { return input; } }; input = escapeMultiPeriods(input) .replace(/\//g, '::') .replace(/\./g, ':'); return input; }, unescape: function (input) { var unescapeMultiPeriods = function (input) { var regex = new RegExp(/\[:{2,}\]/g); var match = regex.exec(input); if (match && match[0]) { var left = input.substring(0, match.index); var middle = '.'.repeat(match[0].length - 2); var right = input.substring(match.index + match[0].length); input = "".concat(left).concat(middle).concat(right); return unescapeMultiPeriods(input); } else { return input; } }; input = unescapeMultiPeriods(input) .replace(/::/g, '/') .replace(/:/g, '.'); return input; }, }; function trimSlashes(input) { return (input || '').replace(/^\/*/, '').replace(/\/*$/, ''); }