UNPKG

9.09 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.isSpecifierStringAbsolute = isSpecifierStringAbsolute;
7exports.isSpecifierObjectAbsolute = isSpecifierObjectAbsolute;
8exports.serializeSpecifier = serializeSpecifier;
9exports.serializeSpecifierPath = serializeSpecifierPath;
10exports.deserializeSpecifier = deserializeSpecifier;
11function isSpecifierStringAbsolute(specifier) {
12 let split = specifier.split(':');
13 let type = split[0];
14 let path = split[1];
15 return !!(type && path && path.indexOf('/') === 0 && path.split('/').length > 3);
16}
17function isSpecifierObjectAbsolute(specifier) {
18 return specifier.rootName !== undefined && specifier.collection !== undefined && specifier.name !== undefined && specifier.type !== undefined;
19}
20function serializeSpecifier(specifier) {
21 let type = specifier.type;
22 let path = serializeSpecifierPath(specifier);
23 if (path) {
24 return type + ':' + path;
25 } else {
26 return type;
27 }
28}
29function serializeSpecifierPath(specifier) {
30 let path = [];
31 if (specifier.rootName) {
32 path.push(specifier.rootName);
33 }
34 if (specifier.collection) {
35 path.push(specifier.collection);
36 }
37 if (specifier.namespace) {
38 path.push(specifier.namespace);
39 }
40 if (specifier.name) {
41 path.push(specifier.name);
42 }
43 if (path.length > 0) {
44 let fullPath = path.join('/');
45 if (isSpecifierObjectAbsolute(specifier)) {
46 fullPath = '/' + fullPath;
47 }
48 return fullPath;
49 }
50}
51function deserializeSpecifier(specifier) {
52 let obj = {};
53 if (specifier.indexOf(':') > -1) {
54 let split = specifier.split(':');
55 let type = split[0];
56 let path = split[1];
57 obj.type = type;
58 let pathSegments;
59 if (path.indexOf('/') === 0) {
60 pathSegments = path.substr(1).split('/');
61 if (path.substr(1).startsWith('@')) {
62 obj.rootName = pathSegments.shift() + '/' + pathSegments.shift();
63 } else {
64 obj.rootName = pathSegments.shift();
65 }
66 obj.collection = pathSegments.shift();
67 } else {
68 pathSegments = path.split('/');
69 }
70 if (pathSegments.length > 0) {
71 obj.name = pathSegments.pop();
72 if (pathSegments.length > 0) {
73 obj.namespace = pathSegments.join('/');
74 }
75 }
76 } else {
77 obj.type = specifier;
78 }
79 return obj;
80}
81//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNwZWNpZmllci5qcyJdLCJuYW1lcyI6WyJpc1NwZWNpZmllclN0cmluZ0Fic29sdXRlIiwiaXNTcGVjaWZpZXJPYmplY3RBYnNvbHV0ZSIsInNlcmlhbGl6ZVNwZWNpZmllciIsInNlcmlhbGl6ZVNwZWNpZmllclBhdGgiLCJkZXNlcmlhbGl6ZVNwZWNpZmllciIsInNwZWNpZmllciIsInNwbGl0IiwidHlwZSIsInBhdGgiLCJpbmRleE9mIiwibGVuZ3RoIiwicm9vdE5hbWUiLCJ1bmRlZmluZWQiLCJjb2xsZWN0aW9uIiwibmFtZSIsInB1c2giLCJuYW1lc3BhY2UiLCJmdWxsUGF0aCIsImpvaW4iLCJvYmoiLCJwYXRoU2VnbWVudHMiLCJzdWJzdHIiLCJzdGFydHNXaXRoIiwic2hpZnQiLCJwb3AiXSwibWFwcGluZ3MiOiI7Ozs7O1FBQWdCQSx5QixHQUFBQSx5QjtRQU1BQyx5QixHQUFBQSx5QjtRQUdBQyxrQixHQUFBQSxrQjtRQVNBQyxzQixHQUFBQSxzQjtRQXNCQUMsb0IsR0FBQUEsb0I7QUF4Q1QsU0FBU0oseUJBQVQsQ0FBbUNLLFNBQW5DLEVBQThDO0FBQ2pELFFBQUlDLFFBQVFELFVBQVVDLEtBQVYsQ0FBZ0IsR0FBaEIsQ0FBWjtBQUNBLFFBQUlDLE9BQU9ELE1BQU0sQ0FBTixDQUFYO0FBQ0EsUUFBSUUsT0FBT0YsTUFBTSxDQUFOLENBQVg7QUFDQSxXQUFPLENBQUMsRUFBRUMsUUFBUUMsSUFBUixJQUFnQkEsS0FBS0MsT0FBTCxDQUFhLEdBQWIsTUFBc0IsQ0FBdEMsSUFBMkNELEtBQUtGLEtBQUwsQ0FBVyxHQUFYLEVBQWdCSSxNQUFoQixHQUF5QixDQUF0RSxDQUFSO0FBQ0g7QUFDTSxTQUFTVCx5QkFBVCxDQUFtQ0ksU0FBbkMsRUFBOEM7QUFDakQsV0FBT0EsVUFBVU0sUUFBVixLQUF1QkMsU0FBdkIsSUFBb0NQLFVBQVVRLFVBQVYsS0FBeUJELFNBQTdELElBQTBFUCxVQUFVUyxJQUFWLEtBQW1CRixTQUE3RixJQUEwR1AsVUFBVUUsSUFBVixLQUFtQkssU0FBcEk7QUFDSDtBQUNNLFNBQVNWLGtCQUFULENBQTRCRyxTQUE1QixFQUF1QztBQUMxQyxRQUFJRSxPQUFPRixVQUFVRSxJQUFyQjtBQUNBLFFBQUlDLE9BQU9MLHVCQUF1QkUsU0FBdkIsQ0FBWDtBQUNBLFFBQUlHLElBQUosRUFBVTtBQUNOLGVBQU9ELE9BQU8sR0FBUCxHQUFhQyxJQUFwQjtBQUNILEtBRkQsTUFFTztBQUNILGVBQU9ELElBQVA7QUFDSDtBQUNKO0FBQ00sU0FBU0osc0JBQVQsQ0FBZ0NFLFNBQWhDLEVBQTJDO0FBQzlDLFFBQUlHLE9BQU8sRUFBWDtBQUNBLFFBQUlILFVBQVVNLFFBQWQsRUFBd0I7QUFDcEJILGFBQUtPLElBQUwsQ0FBVVYsVUFBVU0sUUFBcEI7QUFDSDtBQUNELFFBQUlOLFVBQVVRLFVBQWQsRUFBMEI7QUFDdEJMLGFBQUtPLElBQUwsQ0FBVVYsVUFBVVEsVUFBcEI7QUFDSDtBQUNELFFBQUlSLFVBQVVXLFNBQWQsRUFBeUI7QUFDckJSLGFBQUtPLElBQUwsQ0FBVVYsVUFBVVcsU0FBcEI7QUFDSDtBQUNELFFBQUlYLFVBQVVTLElBQWQsRUFBb0I7QUFDaEJOLGFBQUtPLElBQUwsQ0FBVVYsVUFBVVMsSUFBcEI7QUFDSDtBQUNELFFBQUlOLEtBQUtFLE1BQUwsR0FBYyxDQUFsQixFQUFxQjtBQUNqQixZQUFJTyxXQUFXVCxLQUFLVSxJQUFMLENBQVUsR0FBVixDQUFmO0FBQ0EsWUFBSWpCLDBCQUEwQkksU0FBMUIsQ0FBSixFQUEwQztBQUN0Q1ksdUJBQVcsTUFBTUEsUUFBakI7QUFDSDtBQUNELGVBQU9BLFFBQVA7QUFDSDtBQUNKO0FBQ00sU0FBU2Isb0JBQVQsQ0FBOEJDLFNBQTlCLEVBQXlDO0FBQzVDLFFBQUljLE1BQU0sRUFBVjtBQUNBLFFBQUlkLFVBQVVJLE9BQVYsQ0FBa0IsR0FBbEIsSUFBeUIsQ0FBQyxDQUE5QixFQUFpQztBQUM3QixZQUFJSCxRQUFRRCxVQUFVQyxLQUFWLENBQWdCLEdBQWhCLENBQVo7QUFDQSxZQUFJQyxPQUFPRCxNQUFNLENBQU4sQ0FBWDtBQUNBLFlBQUlFLE9BQU9GLE1BQU0sQ0FBTixDQUFYO0FBQ0FhLFlBQUlaLElBQUosR0FBV0EsSUFBWDtBQUNBLFlBQUlhLFlBQUo7QUFDQSxZQUFJWixLQUFLQyxPQUFMLENBQWEsR0FBYixNQUFzQixDQUExQixFQUE2QjtBQUN6QlcsMkJBQWVaLEtBQUthLE1BQUwsQ0FBWSxDQUFaLEVBQWVmLEtBQWYsQ0FBcUIsR0FBckIsQ0FBZjtBQUNBLGdCQUFJRSxLQUFLYSxNQUFMLENBQVksQ0FBWixFQUFlQyxVQUFmLENBQTBCLEdBQTFCLENBQUosRUFBb0M7QUFDaENILG9CQUFJUixRQUFKLEdBQWVTLGFBQWFHLEtBQWIsS0FBdUIsR0FBdkIsR0FBNkJILGFBQWFHLEtBQWIsRUFBNUM7QUFDSCxhQUZELE1BRU87QUFDSEosb0JBQUlSLFFBQUosR0FBZVMsYUFBYUcsS0FBYixFQUFmO0FBQ0g7QUFDREosZ0JBQUlOLFVBQUosR0FBaUJPLGFBQWFHLEtBQWIsRUFBakI7QUFDSCxTQVJELE1BUU87QUFDSEgsMkJBQWVaLEtBQUtGLEtBQUwsQ0FBVyxHQUFYLENBQWY7QUFDSDtBQUNELFlBQUljLGFBQWFWLE1BQWIsR0FBc0IsQ0FBMUIsRUFBNkI7QUFDekJTLGdCQUFJTCxJQUFKLEdBQVdNLGFBQWFJLEdBQWIsRUFBWDtBQUNBLGdCQUFJSixhQUFhVixNQUFiLEdBQXNCLENBQTFCLEVBQTZCO0FBQ3pCUyxvQkFBSUgsU0FBSixHQUFnQkksYUFBYUYsSUFBYixDQUFrQixHQUFsQixDQUFoQjtBQUNIO0FBQ0o7QUFDSixLQXZCRCxNQXVCTztBQUNIQyxZQUFJWixJQUFKLEdBQVdGLFNBQVg7QUFDSDtBQUNELFdBQU9jLEdBQVA7QUFDSCIsImZpbGUiOiJzcGVjaWZpZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNTcGVjaWZpZXJTdHJpbmdBYnNvbHV0ZShzcGVjaWZpZXIpIHtcbiAgICBsZXQgc3BsaXQgPSBzcGVjaWZpZXIuc3BsaXQoJzonKTtcbiAgICBsZXQgdHlwZSA9IHNwbGl0WzBdO1xuICAgIGxldCBwYXRoID0gc3BsaXRbMV07XG4gICAgcmV0dXJuICEhKHR5cGUgJiYgcGF0aCAmJiBwYXRoLmluZGV4T2YoJy8nKSA9PT0gMCAmJiBwYXRoLnNwbGl0KCcvJykubGVuZ3RoID4gMyk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTcGVjaWZpZXJPYmplY3RBYnNvbHV0ZShzcGVjaWZpZXIpIHtcbiAgICByZXR1cm4gc3BlY2lmaWVyLnJvb3ROYW1lICE9PSB1bmRlZmluZWQgJiYgc3BlY2lmaWVyLmNvbGxlY3Rpb24gIT09IHVuZGVmaW5lZCAmJiBzcGVjaWZpZXIubmFtZSAhPT0gdW5kZWZpbmVkICYmIHNwZWNpZmllci50eXBlICE9PSB1bmRlZmluZWQ7XG59XG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplU3BlY2lmaWVyKHNwZWNpZmllcikge1xuICAgIGxldCB0eXBlID0gc3BlY2lmaWVyLnR5cGU7XG4gICAgbGV0IHBhdGggPSBzZXJpYWxpemVTcGVjaWZpZXJQYXRoKHNwZWNpZmllcik7XG4gICAgaWYgKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHR5cGUgKyAnOicgKyBwYXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVTcGVjaWZpZXJQYXRoKHNwZWNpZmllcikge1xuICAgIGxldCBwYXRoID0gW107XG4gICAgaWYgKHNwZWNpZmllci5yb290TmFtZSkge1xuICAgICAgICBwYXRoLnB1c2goc3BlY2lmaWVyLnJvb3ROYW1lKTtcbiAgICB9XG4gICAgaWYgKHNwZWNpZmllci5jb2xsZWN0aW9uKSB7XG4gICAgICAgIHBhdGgucHVzaChzcGVjaWZpZXIuY29sbGVjdGlvbik7XG4gICAgfVxuICAgIGlmIChzcGVjaWZpZXIubmFtZXNwYWNlKSB7XG4gICAgICAgIHBhdGgucHVzaChzcGVjaWZpZXIubmFtZXNwYWNlKTtcbiAgICB9XG4gICAgaWYgKHNwZWNpZmllci5uYW1lKSB7XG4gICAgICAgIHBhdGgucHVzaChzcGVjaWZpZXIubmFtZSk7XG4gICAgfVxuICAgIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGZ1bGxQYXRoID0gcGF0aC5qb2luKCcvJyk7XG4gICAgICAgIGlmIChpc1NwZWNpZmllck9iamVjdEFic29sdXRlKHNwZWNpZmllcikpIHtcbiAgICAgICAgICAgIGZ1bGxQYXRoID0gJy8nICsgZnVsbFBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bGxQYXRoO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZVNwZWNpZmllcihzcGVjaWZpZXIpIHtcbiAgICBsZXQgb2JqID0ge307XG4gICAgaWYgKHNwZWNpZmllci5pbmRleE9mKCc6JykgPiAtMSkge1xuICAgICAgICBsZXQgc3BsaXQgPSBzcGVjaWZpZXIuc3BsaXQoJzonKTtcbiAgICAgICAgbGV0IHR5cGUgPSBzcGxpdFswXTtcbiAgICAgICAgbGV0IHBhdGggPSBzcGxpdFsxXTtcbiAgICAgICAgb2JqLnR5cGUgPSB0eXBlO1xuICAgICAgICBsZXQgcGF0aFNlZ21lbnRzO1xuICAgICAgICBpZiAocGF0aC5pbmRleE9mKCcvJykgPT09IDApIHtcbiAgICAgICAgICAgIHBhdGhTZWdtZW50cyA9IHBhdGguc3Vic3RyKDEpLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICBpZiAocGF0aC5zdWJzdHIoMSkuc3RhcnRzV2l0aCgnQCcpKSB7XG4gICAgICAgICAgICAgICAgb2JqLnJvb3ROYW1lID0gcGF0aFNlZ21lbnRzLnNoaWZ0KCkgKyAnLycgKyBwYXRoU2VnbWVudHMuc2hpZnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb2JqLnJvb3ROYW1lID0gcGF0aFNlZ21lbnRzLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvYmouY29sbGVjdGlvbiA9IHBhdGhTZWdtZW50cy5zaGlmdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGF0aFNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLycpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoU2VnbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgb2JqLm5hbWUgPSBwYXRoU2VnbWVudHMucG9wKCk7XG4gICAgICAgICAgICBpZiAocGF0aFNlZ21lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBvYmoubmFtZXNwYWNlID0gcGF0aFNlZ21lbnRzLmpvaW4oJy8nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIG9iai50eXBlID0gc3BlY2lmaWVyO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xufSJdfQ==
\No newline at end of file