UNPKG

@platform/cell.schema

Version:

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

78 lines (77 loc) 2.92 kB
"use strict"; 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; }, }; }, };