UNPKG

@platform/cell.schema

Version:

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

82 lines (81 loc) 3.04 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 = 'fs'; var fs = Links_1.Links.create(prefix); var FileLinks = (function () { function FileLinks() { } FileLinks.total = function (links) { if (links === void 0) { links = {}; } return fs.total(links); }; FileLinks.toKey = function (filename) { return fs.toKey(filename); }; FileLinks.parseKey = function (linkKey) { return fs.parseKey(linkKey); }; FileLinks.parseValue = function (linkValue) { if (!FileLinks.is.fileValue(linkValue)) { throw new Error("Cannot parse '" + linkValue + "' as it is not a file URI."); } var res = fs.parseValue(linkValue); var toString = function (options) { if (options === void 0) { options = {}; } var _a = res.query, status = _a.status, hash = _a.hash; var query = common_1.queryString .build({ allowNil: false }) .add('status', options.status === null ? null : options.status || status) .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 }); }; FileLinks.parse = function (linkKey, linkValue) { var key = FileLinks.parseKey(linkKey); var value = FileLinks.parseValue(linkValue); var toString = value.toString; return tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, key), value), { toString: toString }); }; FileLinks.toList = function (links) { if (links === void 0) { links = {}; } return fs.toList(links).map(function (_a) { var key = _a.key, value = _a.value; return FileLinks.parse(key, value); }); }; FileLinks.find = function (links) { if (links === void 0) { links = {}; } return { byName: function (path) { var match = fs.find(links).byName(path); return match ? FileLinks.parse(match.key, match.value) : undefined; }, }; }; FileLinks.prefix = prefix; FileLinks.is = { fileKey: function (input) { return fs.isKey(input); }, fileValue: function (input) { input = (input || '').toString().trim(); return Uri_1.Uri.is.file(input); }, fileUploading: function (value) { if (!FileLinks.is.fileValue(value)) { return false; } value = (value || '').toString().trim(); var query = (value.split('?')[1] || '').toLowerCase(); return query.includes('status=uploading'); }, }; return FileLinks; }()); exports.FileLinks = FileLinks;