@platform/cell.schema
Version:
URI and database schemas for the `cell.os`.
82 lines (81 loc) • 3.04 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 = '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;