@platform/cell.schema
Version:
URI and database schemas for the `cell.os`.
78 lines (77 loc) • 2.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FileLinks = void 0;
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);
exports.FileLinks = {
prefix: prefix,
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 (!exports.FileLinks.is.fileValue(value)) {
return false;
}
value = (value || '').toString().trim();
var query = (value.split('?')[1] || '').toLowerCase();
return query.includes('status=uploading');
},
},
total: function (links) {
if (links === void 0) { links = {}; }
return fs.total(links);
},
toKey: function (filename) {
return fs.toKey(filename);
},
parseKey: function (linkKey) {
return fs.parseKey(linkKey);
},
parseValue: function (linkValue) {
if (!exports.FileLinks.is.fileValue(linkValue)) {
throw new Error("Cannot parse '".concat(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 "".concat(res.uri.toString()).concat(query);
};
return tslib_1.__assign(tslib_1.__assign({}, res), { toString: toString });
},
parse: function (linkKey, linkValue) {
var key = exports.FileLinks.parseKey(linkKey);
var value = exports.FileLinks.parseValue(linkValue);
var toString = value.toString;
return tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, key), value), { toString: toString });
},
toList: function (links) {
if (links === void 0) { links = {}; }
return fs.toList(links).map(function (_a) {
var key = _a.key, value = _a.value;
return exports.FileLinks.parse(key, value);
});
},
find: function (links) {
if (links === void 0) { links = {}; }
return {
byName: function (path) {
var match = fs.find(links).byName(path);
return match ? exports.FileLinks.parse(match.key, match.value) : undefined;
},
};
},
};