@glimmer/di
Version:
Dependency injection support for Glimmer applications.
71 lines • 8.69 kB
JavaScript
export function isSpecifierStringAbsolute(specifier) {
var split = specifier.split(':');
var type = split[0];
var path = split[1];
return !!(type && path && path.indexOf('/') === 0 && path.split('/').length > 3);
}
export function isSpecifierObjectAbsolute(specifier) {
return specifier.rootName !== undefined && specifier.collection !== undefined && specifier.name !== undefined && specifier.type !== undefined;
}
export function serializeSpecifier(specifier) {
var type = specifier.type;
var path = serializeSpecifierPath(specifier);
if (path) {
return type + ':' + path;
} else {
return type;
}
}
export function serializeSpecifierPath(specifier) {
var path = [];
if (specifier.rootName) {
path.push(specifier.rootName);
}
if (specifier.collection) {
path.push(specifier.collection);
}
if (specifier.namespace) {
path.push(specifier.namespace);
}
if (specifier.name) {
path.push(specifier.name);
}
if (path.length > 0) {
var fullPath = path.join('/');
if (isSpecifierObjectAbsolute(specifier)) {
fullPath = '/' + fullPath;
}
return fullPath;
}
}
export function deserializeSpecifier(specifier) {
var obj = {};
if (specifier.indexOf(':') > -1) {
var split = specifier.split(':');
var type = split[0];
var path = split[1];
obj.type = type;
var pathSegments = void 0;
if (path.indexOf('/') === 0) {
pathSegments = path.substr(1).split('/');
if (path.substr(1).startsWith('@')) {
obj.rootName = pathSegments.shift() + '/' + pathSegments.shift();
} else {
obj.rootName = pathSegments.shift();
}
obj.collection = pathSegments.shift();
} else {
pathSegments = path.split('/');
}
if (pathSegments.length > 0) {
obj.name = pathSegments.pop();
if (pathSegments.length > 0) {
obj.namespace = pathSegments.join('/');
}
}
} else {
obj.type = specifier;
}
return obj;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNwZWNpZmllci5qcyJdLCJuYW1lcyI6WyJpc1NwZWNpZmllclN0cmluZ0Fic29sdXRlIiwic3BlY2lmaWVyIiwic3BsaXQiLCJ0eXBlIiwicGF0aCIsImluZGV4T2YiLCJsZW5ndGgiLCJpc1NwZWNpZmllck9iamVjdEFic29sdXRlIiwicm9vdE5hbWUiLCJ1bmRlZmluZWQiLCJjb2xsZWN0aW9uIiwibmFtZSIsInNlcmlhbGl6ZVNwZWNpZmllciIsInNlcmlhbGl6ZVNwZWNpZmllclBhdGgiLCJwdXNoIiwibmFtZXNwYWNlIiwiZnVsbFBhdGgiLCJqb2luIiwiZGVzZXJpYWxpemVTcGVjaWZpZXIiLCJvYmoiLCJwYXRoU2VnbWVudHMiLCJzdWJzdHIiLCJzdGFydHNXaXRoIiwic2hpZnQiLCJwb3AiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sU0FBU0EseUJBQVQsQ0FBbUNDLFNBQW5DLEVBQThDO0FBQ2pELFFBQUlDLFFBQVFELFVBQVVDLEtBQVYsQ0FBZ0IsR0FBaEIsQ0FBWjtBQUNBLFFBQUlDLE9BQU9ELE1BQU0sQ0FBTixDQUFYO0FBQ0EsUUFBSUUsT0FBT0YsTUFBTSxDQUFOLENBQVg7QUFDQSxXQUFPLENBQUMsRUFBRUMsUUFBUUMsSUFBUixJQUFnQkEsS0FBS0MsT0FBTCxDQUFhLEdBQWIsTUFBc0IsQ0FBdEMsSUFBMkNELEtBQUtGLEtBQUwsQ0FBVyxHQUFYLEVBQWdCSSxNQUFoQixHQUF5QixDQUF0RSxDQUFSO0FBQ0g7QUFDRCxPQUFPLFNBQVNDLHlCQUFULENBQW1DTixTQUFuQyxFQUE4QztBQUNqRCxXQUFPQSxVQUFVTyxRQUFWLEtBQXVCQyxTQUF2QixJQUFvQ1IsVUFBVVMsVUFBVixLQUF5QkQsU0FBN0QsSUFBMEVSLFVBQVVVLElBQVYsS0FBbUJGLFNBQTdGLElBQTBHUixVQUFVRSxJQUFWLEtBQW1CTSxTQUFwSTtBQUNIO0FBQ0QsT0FBTyxTQUFTRyxrQkFBVCxDQUE0QlgsU0FBNUIsRUFBdUM7QUFDMUMsUUFBSUUsT0FBT0YsVUFBVUUsSUFBckI7QUFDQSxRQUFJQyxPQUFPUyx1QkFBdUJaLFNBQXZCLENBQVg7QUFDQSxRQUFJRyxJQUFKLEVBQVU7QUFDTixlQUFPRCxPQUFPLEdBQVAsR0FBYUMsSUFBcEI7QUFDSCxLQUZELE1BRU87QUFDSCxlQUFPRCxJQUFQO0FBQ0g7QUFDSjtBQUNELE9BQU8sU0FBU1Usc0JBQVQsQ0FBZ0NaLFNBQWhDLEVBQTJDO0FBQzlDLFFBQUlHLE9BQU8sRUFBWDtBQUNBLFFBQUlILFVBQVVPLFFBQWQsRUFBd0I7QUFDcEJKLGFBQUtVLElBQUwsQ0FBVWIsVUFBVU8sUUFBcEI7QUFDSDtBQUNELFFBQUlQLFVBQVVTLFVBQWQsRUFBMEI7QUFDdEJOLGFBQUtVLElBQUwsQ0FBVWIsVUFBVVMsVUFBcEI7QUFDSDtBQUNELFFBQUlULFVBQVVjLFNBQWQsRUFBeUI7QUFDckJYLGFBQUtVLElBQUwsQ0FBVWIsVUFBVWMsU0FBcEI7QUFDSDtBQUNELFFBQUlkLFVBQVVVLElBQWQsRUFBb0I7QUFDaEJQLGFBQUtVLElBQUwsQ0FBVWIsVUFBVVUsSUFBcEI7QUFDSDtBQUNELFFBQUlQLEtBQUtFLE1BQUwsR0FBYyxDQUFsQixFQUFxQjtBQUNqQixZQUFJVSxXQUFXWixLQUFLYSxJQUFMLENBQVUsR0FBVixDQUFmO0FBQ0EsWUFBSVYsMEJBQTBCTixTQUExQixDQUFKLEVBQTBDO0FBQ3RDZSx1QkFBVyxNQUFNQSxRQUFqQjtBQUNIO0FBQ0QsZUFBT0EsUUFBUDtBQUNIO0FBQ0o7QUFDRCxPQUFPLFNBQVNFLG9CQUFULENBQThCakIsU0FBOUIsRUFBeUM7QUFDNUMsUUFBSWtCLE1BQU0sRUFBVjtBQUNBLFFBQUlsQixVQUFVSSxPQUFWLENBQWtCLEdBQWxCLElBQXlCLENBQUMsQ0FBOUIsRUFBaUM7QUFDN0IsWUFBSUgsUUFBUUQsVUFBVUMsS0FBVixDQUFnQixHQUFoQixDQUFaO0FBQ0EsWUFBSUMsT0FBT0QsTUFBTSxDQUFOLENBQVg7QUFDQSxZQUFJRSxPQUFPRixNQUFNLENBQU4sQ0FBWDtBQUNBaUIsWUFBSWhCLElBQUosR0FBV0EsSUFBWDtBQUNBLFlBQUlpQixxQkFBSjtBQUNBLFlBQUloQixLQUFLQyxPQUFMLENBQWEsR0FBYixNQUFzQixDQUExQixFQUE2QjtBQUN6QmUsMkJBQWVoQixLQUFLaUIsTUFBTCxDQUFZLENBQVosRUFBZW5CLEtBQWYsQ0FBcUIsR0FBckIsQ0FBZjtBQUNBLGdCQUFJRSxLQUFLaUIsTUFBTCxDQUFZLENBQVosRUFBZUMsVUFBZixDQUEwQixHQUExQixDQUFKLEVBQW9DO0FBQ2hDSCxvQkFBSVgsUUFBSixHQUFlWSxhQUFhRyxLQUFiLEtBQXVCLEdBQXZCLEdBQTZCSCxhQUFhRyxLQUFiLEVBQTVDO0FBQ0gsYUFGRCxNQUVPO0FBQ0hKLG9CQUFJWCxRQUFKLEdBQWVZLGFBQWFHLEtBQWIsRUFBZjtBQUNIO0FBQ0RKLGdCQUFJVCxVQUFKLEdBQWlCVSxhQUFhRyxLQUFiLEVBQWpCO0FBQ0gsU0FSRCxNQVFPO0FBQ0hILDJCQUFlaEIsS0FBS0YsS0FBTCxDQUFXLEdBQVgsQ0FBZjtBQUNIO0FBQ0QsWUFBSWtCLGFBQWFkLE1BQWIsR0FBc0IsQ0FBMUIsRUFBNkI7QUFDekJhLGdCQUFJUixJQUFKLEdBQVdTLGFBQWFJLEdBQWIsRUFBWDtBQUNBLGdCQUFJSixhQUFhZCxNQUFiLEdBQXNCLENBQTFCLEVBQTZCO0FBQ3pCYSxvQkFBSUosU0FBSixHQUFnQkssYUFBYUgsSUFBYixDQUFrQixHQUFsQixDQUFoQjtBQUNIO0FBQ0o7QUFDSixLQXZCRCxNQXVCTztBQUNIRSxZQUFJaEIsSUFBSixHQUFXRixTQUFYO0FBQ0g7QUFDRCxXQUFPa0IsR0FBUDtBQUNIIiwiZmlsZSI6InNwZWNpZmllci5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc1NwZWNpZmllclN0cmluZ0Fic29sdXRlKHNwZWNpZmllcikge1xuICAgIGxldCBzcGxpdCA9IHNwZWNpZmllci5zcGxpdCgnOicpO1xuICAgIGxldCB0eXBlID0gc3BsaXRbMF07XG4gICAgbGV0IHBhdGggPSBzcGxpdFsxXTtcbiAgICByZXR1cm4gISEodHlwZSAmJiBwYXRoICYmIHBhdGguaW5kZXhPZignLycpID09PSAwICYmIHBhdGguc3BsaXQoJy8nKS5sZW5ndGggPiAzKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1NwZWNpZmllck9iamVjdEFic29sdXRlKHNwZWNpZmllcikge1xuICAgIHJldHVybiBzcGVjaWZpZXIucm9vdE5hbWUgIT09IHVuZGVmaW5lZCAmJiBzcGVjaWZpZXIuY29sbGVjdGlvbiAhPT0gdW5kZWZpbmVkICYmIHNwZWNpZmllci5uYW1lICE9PSB1bmRlZmluZWQgJiYgc3BlY2lmaWVyLnR5cGUgIT09IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVTcGVjaWZpZXIoc3BlY2lmaWVyKSB7XG4gICAgbGV0IHR5cGUgPSBzcGVjaWZpZXIudHlwZTtcbiAgICBsZXQgcGF0aCA9IHNlcmlhbGl6ZVNwZWNpZmllclBhdGgoc3BlY2lmaWVyKTtcbiAgICBpZiAocGF0aCkge1xuICAgICAgICByZXR1cm4gdHlwZSArICc6JyArIHBhdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZVNwZWNpZmllclBhdGgoc3BlY2lmaWVyKSB7XG4gICAgbGV0IHBhdGggPSBbXTtcbiAgICBpZiAoc3BlY2lmaWVyLnJvb3ROYW1lKSB7XG4gICAgICAgIHBhdGgucHVzaChzcGVjaWZpZXIucm9vdE5hbWUpO1xuICAgIH1cbiAgICBpZiAoc3BlY2lmaWVyLmNvbGxlY3Rpb24pIHtcbiAgICAgICAgcGF0aC5wdXNoKHNwZWNpZmllci5jb2xsZWN0aW9uKTtcbiAgICB9XG4gICAgaWYgKHNwZWNpZmllci5uYW1lc3BhY2UpIHtcbiAgICAgICAgcGF0aC5wdXNoKHNwZWNpZmllci5uYW1lc3BhY2UpO1xuICAgIH1cbiAgICBpZiAoc3BlY2lmaWVyLm5hbWUpIHtcbiAgICAgICAgcGF0aC5wdXNoKHNwZWNpZmllci5uYW1lKTtcbiAgICB9XG4gICAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgICBsZXQgZnVsbFBhdGggPSBwYXRoLmpvaW4oJy8nKTtcbiAgICAgICAgaWYgKGlzU3BlY2lmaWVyT2JqZWN0QWJzb2x1dGUoc3BlY2lmaWVyKSkge1xuICAgICAgICAgICAgZnVsbFBhdGggPSAnLycgKyBmdWxsUGF0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVsbFBhdGg7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplU3BlY2lmaWVyKHNwZWNpZmllcikge1xuICAgIGxldCBvYmogPSB7fTtcbiAgICBpZiAoc3BlY2lmaWVyLmluZGV4T2YoJzonKSA+IC0xKSB7XG4gICAgICAgIGxldCBzcGxpdCA9IHNwZWNpZmllci5zcGxpdCgnOicpO1xuICAgICAgICBsZXQgdHlwZSA9IHNwbGl0WzBdO1xuICAgICAgICBsZXQgcGF0aCA9IHNwbGl0WzFdO1xuICAgICAgICBvYmoudHlwZSA9IHR5cGU7XG4gICAgICAgIGxldCBwYXRoU2VnbWVudHM7XG4gICAgICAgIGlmIChwYXRoLmluZGV4T2YoJy8nKSA9PT0gMCkge1xuICAgICAgICAgICAgcGF0aFNlZ21lbnRzID0gcGF0aC5zdWJzdHIoMSkuc3BsaXQoJy8nKTtcbiAgICAgICAgICAgIGlmIChwYXRoLnN1YnN0cigxKS5zdGFydHNXaXRoKCdAJykpIHtcbiAgICAgICAgICAgICAgICBvYmoucm9vdE5hbWUgPSBwYXRoU2VnbWVudHMuc2hpZnQoKSArICcvJyArIHBhdGhTZWdtZW50cy5zaGlmdCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvYmoucm9vdE5hbWUgPSBwYXRoU2VnbWVudHMuc2hpZnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9iai5jb2xsZWN0aW9uID0gcGF0aFNlZ21lbnRzLnNoaWZ0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXRoU2VnbWVudHMgPSBwYXRoLnNwbGl0KCcvJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGhTZWdtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBvYmoubmFtZSA9IHBhdGhTZWdtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIGlmIChwYXRoU2VnbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIG9iai5uYW1lc3BhY2UgPSBwYXRoU2VnbWVudHMuam9pbignLycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgb2JqLnR5cGUgPSBzcGVjaWZpZXI7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG59Il19