UNPKG

@glimmer/di

Version:

Dependency injection support for Glimmer applications.

81 lines (80 loc) 9.09 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.isSpecifierStringAbsolute = isSpecifierStringAbsolute; exports.isSpecifierObjectAbsolute = isSpecifierObjectAbsolute; exports.serializeSpecifier = serializeSpecifier; exports.serializeSpecifierPath = serializeSpecifierPath; exports.deserializeSpecifier = deserializeSpecifier; function isSpecifierStringAbsolute(specifier) { let split = specifier.split(':'); let type = split[0]; let path = split[1]; return !!(type && path && path.indexOf('/') === 0 && path.split('/').length > 3); } function isSpecifierObjectAbsolute(specifier) { return specifier.rootName !== undefined && specifier.collection !== undefined && specifier.name !== undefined && specifier.type !== undefined; } function serializeSpecifier(specifier) { let type = specifier.type; let path = serializeSpecifierPath(specifier); if (path) { return type + ':' + path; } else { return type; } } function serializeSpecifierPath(specifier) { let 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) { let fullPath = path.join('/'); if (isSpecifierObjectAbsolute(specifier)) { fullPath = '/' + fullPath; } return fullPath; } } function deserializeSpecifier(specifier) { let obj = {}; if (specifier.indexOf(':') > -1) { let split = specifier.split(':'); let type = split[0]; let path = split[1]; obj.type = type; let pathSegments; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNwZWNpZmllci5qcyJdLCJuYW1lcyI6WyJpc1NwZWNpZmllclN0cmluZ0Fic29sdXRlIiwiaXNTcGVjaWZpZXJPYmplY3RBYnNvbHV0ZSIsInNlcmlhbGl6ZVNwZWNpZmllciIsInNlcmlhbGl6ZVNwZWNpZmllclBhdGgiLCJkZXNlcmlhbGl6ZVNwZWNpZmllciIsInNwZWNpZmllciIsInNwbGl0IiwidHlwZSIsInBhdGgiLCJpbmRleE9mIiwibGVuZ3RoIiwicm9vdE5hbWUiLCJ1bmRlZmluZWQiLCJjb2xsZWN0aW9uIiwibmFtZSIsInB1c2giLCJuYW1lc3BhY2UiLCJmdWxsUGF0aCIsImpvaW4iLCJvYmoiLCJwYXRoU2VnbWVudHMiLCJzdWJzdHIiLCJzdGFydHNXaXRoIiwic2hpZnQiLCJwb3AiXSwibWFwcGluZ3MiOiI7Ozs7O1FBQWdCQSx5QixHQUFBQSx5QjtRQU1BQyx5QixHQUFBQSx5QjtRQUdBQyxrQixHQUFBQSxrQjtRQVNBQyxzQixHQUFBQSxzQjtRQXNCQUMsb0IsR0FBQUEsb0I7QUF4Q1QsU0FBU0oseUJBQVQsQ0FBbUNLLFNBQW5DLEVBQThDO0FBQ2pELFFBQUlDLFFBQVFELFVBQVVDLEtBQVYsQ0FBZ0IsR0FBaEIsQ0FBWjtBQUNBLFFBQUlDLE9BQU9ELE1BQU0sQ0FBTixDQUFYO0FBQ0EsUUFBSUUsT0FBT0YsTUFBTSxDQUFOLENBQVg7QUFDQSxXQUFPLENBQUMsRUFBRUMsUUFBUUMsSUFBUixJQUFnQkEsS0FBS0MsT0FBTCxDQUFhLEdBQWIsTUFBc0IsQ0FBdEMsSUFBMkNELEtBQUtGLEtBQUwsQ0FBVyxHQUFYLEVBQWdCSSxNQUFoQixHQUF5QixDQUF0RSxDQUFSO0FBQ0g7QUFDTSxTQUFTVCx5QkFBVCxDQUFtQ0ksU0FBbkMsRUFBOEM7QUFDakQsV0FBT0EsVUFBVU0sUUFBVixLQUF1QkMsU0FBdkIsSUFBb0NQLFVBQVVRLFVBQVYsS0FBeUJELFNBQTdELElBQTBFUCxVQUFVUyxJQUFWLEtBQW1CRixTQUE3RixJQUEwR1AsVUFBVUUsSUFBVixLQUFtQkssU0FBcEk7QUFDSDtBQUNNLFNBQVNWLGtCQUFULENBQTRCRyxTQUE1QixFQUF1QztBQUMxQyxRQUFJRSxPQUFPRixVQUFVRSxJQUFyQjtBQUNBLFFBQUlDLE9BQU9MLHVCQUF1QkUsU0FBdkIsQ0FBWDtBQUNBLFFBQUlHLElBQUosRUFBVTtBQUNOLGVBQU9ELE9BQU8sR0FBUCxHQUFhQyxJQUFwQjtBQUNILEtBRkQsTUFFTztBQUNILGVBQU9ELElBQVA7QUFDSDtBQUNKO0FBQ00sU0FBU0osc0JBQVQsQ0FBZ0NFLFNBQWhDLEVBQTJDO0FBQzlDLFFBQUlHLE9BQU8sRUFBWDtBQUNBLFFBQUlILFVBQVVNLFFBQWQsRUFBd0I7QUFDcEJILGFBQUtPLElBQUwsQ0FBVVYsVUFBVU0sUUFBcEI7QUFDSDtBQUNELFFBQUlOLFVBQVVRLFVBQWQsRUFBMEI7QUFDdEJMLGFBQUtPLElBQUwsQ0FBVVYsVUFBVVEsVUFBcEI7QUFDSDtBQUNELFFBQUlSLFVBQVVXLFNBQWQsRUFBeUI7QUFDckJSLGFBQUtPLElBQUwsQ0FBVVYsVUFBVVcsU0FBcEI7QUFDSDtBQUNELFFBQUlYLFVBQVVTLElBQWQsRUFBb0I7QUFDaEJOLGFBQUtPLElBQUwsQ0FBVVYsVUFBVVMsSUFBcEI7QUFDSDtBQUNELFFBQUlOLEtBQUtFLE1BQUwsR0FBYyxDQUFsQixFQUFxQjtBQUNqQixZQUFJTyxXQUFXVCxLQUFLVSxJQUFMLENBQVUsR0FBVixDQUFmO0FBQ0EsWUFBSWpCLDBCQUEwQkksU0FBMUIsQ0FBSixFQUEwQztBQUN0Q1ksdUJBQVcsTUFBTUEsUUFBakI7QUFDSDtBQUNELGVBQU9BLFFBQVA7QUFDSDtBQUNKO0FBQ00sU0FBU2Isb0JBQVQsQ0FBOEJDLFNBQTlCLEVBQXlDO0FBQzVDLFFBQUljLE1BQU0sRUFBVjtBQUNBLFFBQUlkLFVBQVVJLE9BQVYsQ0FBa0IsR0FBbEIsSUFBeUIsQ0FBQyxDQUE5QixFQUFpQztBQUM3QixZQUFJSCxRQUFRRCxVQUFVQyxLQUFWLENBQWdCLEdBQWhCLENBQVo7QUFDQSxZQUFJQyxPQUFPRCxNQUFNLENBQU4sQ0FBWDtBQUNBLFlBQUlFLE9BQU9GLE1BQU0sQ0FBTixDQUFYO0FBQ0FhLFlBQUlaLElBQUosR0FBV0EsSUFBWDtBQUNBLFlBQUlhLFlBQUo7QUFDQSxZQUFJWixLQUFLQyxPQUFMLENBQWEsR0FBYixNQUFzQixDQUExQixFQUE2QjtBQUN6QlcsMkJBQWVaLEtBQUthLE1BQUwsQ0FBWSxDQUFaLEVBQWVmLEtBQWYsQ0FBcUIsR0FBckIsQ0FBZjtBQUNBLGdCQUFJRSxLQUFLYSxNQUFMLENBQVksQ0FBWixFQUFlQyxVQUFmLENBQTBCLEdBQTFCLENBQUosRUFBb0M7QUFDaENILG9CQUFJUixRQUFKLEdBQWVTLGFBQWFHLEtBQWIsS0FBdUIsR0FBdkIsR0FBNkJILGFBQWFHLEtBQWIsRUFBNUM7QUFDSCxhQUZELE1BRU87QUFDSEosb0JBQUlSLFFBQUosR0FBZVMsYUFBYUcsS0FBYixFQUFmO0FBQ0g7QUFDREosZ0JBQUlOLFVBQUosR0FBaUJPLGFBQWFHLEtBQWIsRUFBakI7QUFDSCxTQVJELE1BUU87QUFDSEgsMkJBQWVaLEtBQUtGLEtBQUwsQ0FBVyxHQUFYLENBQWY7QUFDSDtBQUNELFlBQUljLGFBQWFWLE1BQWIsR0FBc0IsQ0FBMUIsRUFBNkI7QUFDekJTLGdCQUFJTCxJQUFKLEdBQVdNLGFBQWFJLEdBQWIsRUFBWDtBQUNBLGdCQUFJSixhQUFhVixNQUFiLEdBQXNCLENBQTFCLEVBQTZCO0FBQ3pCUyxvQkFBSUgsU0FBSixHQUFnQkksYUFBYUYsSUFBYixDQUFrQixHQUFsQixDQUFoQjtBQUNIO0FBQ0o7QUFDSixLQXZCRCxNQXVCTztBQUNIQyxZQUFJWixJQUFKLEdBQVdGLFNBQVg7QUFDSDtBQUNELFdBQU9jLEdBQVA7QUFDSCIsImZpbGUiOiJzcGVjaWZpZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNTcGVjaWZpZXJTdHJpbmdBYnNvbHV0ZShzcGVjaWZpZXIpIHtcbiAgICBsZXQgc3BsaXQgPSBzcGVjaWZpZXIuc3BsaXQoJzonKTtcbiAgICBsZXQgdHlwZSA9IHNwbGl0WzBdO1xuICAgIGxldCBwYXRoID0gc3BsaXRbMV07XG4gICAgcmV0dXJuICEhKHR5cGUgJiYgcGF0aCAmJiBwYXRoLmluZGV4T2YoJy8nKSA9PT0gMCAmJiBwYXRoLnNwbGl0KCcvJykubGVuZ3RoID4gMyk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTcGVjaWZpZXJPYmplY3RBYnNvbHV0ZShzcGVjaWZpZXIpIHtcbiAgICByZXR1cm4gc3BlY2lmaWVyLnJvb3ROYW1lICE9PSB1bmRlZmluZWQgJiYgc3BlY2lmaWVyLmNvbGxlY3Rpb24gIT09IHVuZGVmaW5lZCAmJiBzcGVjaWZpZXIubmFtZSAhPT0gdW5kZWZpbmVkICYmIHNwZWNpZmllci50eXBlICE9PSB1bmRlZmluZWQ7XG59XG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplU3BlY2lmaWVyKHNwZWNpZmllcikge1xuICAgIGxldCB0eXBlID0gc3BlY2lmaWVyLnR5cGU7XG4gICAgbGV0IHBhdGggPSBzZXJpYWxpemVTcGVjaWZpZXJQYXRoKHNwZWNpZmllcik7XG4gICAgaWYgKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHR5cGUgKyAnOicgKyBwYXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVTcGVjaWZpZXJQYXRoKHNwZWNpZmllcikge1xuICAgIGxldCBwYXRoID0gW107XG4gICAgaWYgKHNwZWNpZmllci5yb290TmFtZSkge1xuICAgICAgICBwYXRoLnB1c2goc3BlY2lmaWVyLnJvb3ROYW1lKTtcbiAgICB9XG4gICAgaWYgKHNwZWNpZmllci5jb2xsZWN0aW9uKSB7XG4gICAgICAgIHBhdGgucHVzaChzcGVjaWZpZXIuY29sbGVjdGlvbik7XG4gICAgfVxuICAgIGlmIChzcGVjaWZpZXIubmFtZXNwYWNlKSB7XG4gICAgICAgIHBhdGgucHVzaChzcGVjaWZpZXIubmFtZXNwYWNlKTtcbiAgICB9XG4gICAgaWYgKHNwZWNpZmllci5uYW1lKSB7XG4gICAgICAgIHBhdGgucHVzaChzcGVjaWZpZXIubmFtZSk7XG4gICAgfVxuICAgIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGZ1bGxQYXRoID0gcGF0aC5qb2luKCcvJyk7XG4gICAgICAgIGlmIChpc1NwZWNpZmllck9iamVjdEFic29sdXRlKHNwZWNpZmllcikpIHtcbiAgICAgICAgICAgIGZ1bGxQYXRoID0gJy8nICsgZnVsbFBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bGxQYXRoO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZVNwZWNpZmllcihzcGVjaWZpZXIpIHtcbiAgICBsZXQgb2JqID0ge307XG4gICAgaWYgKHNwZWNpZmllci5pbmRleE9mKCc6JykgPiAtMSkge1xuICAgICAgICBsZXQgc3BsaXQgPSBzcGVjaWZpZXIuc3BsaXQoJzonKTtcbiAgICAgICAgbGV0IHR5cGUgPSBzcGxpdFswXTtcbiAgICAgICAgbGV0IHBhdGggPSBzcGxpdFsxXTtcbiAgICAgICAgb2JqLnR5cGUgPSB0eXBlO1xuICAgICAgICBsZXQgcGF0aFNlZ21lbnRzO1xuICAgICAgICBpZiAocGF0aC5pbmRleE9mKCcvJykgPT09IDApIHtcbiAgICAgICAgICAgIHBhdGhTZWdtZW50cyA9IHBhdGguc3Vic3RyKDEpLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICBpZiAocGF0aC5zdWJzdHIoMSkuc3RhcnRzV2l0aCgnQCcpKSB7XG4gICAgICAgICAgICAgICAgb2JqLnJvb3ROYW1lID0gcGF0aFNlZ21lbnRzLnNoaWZ0KCkgKyAnLycgKyBwYXRoU2VnbWVudHMuc2hpZnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb2JqLnJvb3ROYW1lID0gcGF0aFNlZ21lbnRzLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvYmouY29sbGVjdGlvbiA9IHBhdGhTZWdtZW50cy5zaGlmdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGF0aFNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLycpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoU2VnbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgb2JqLm5hbWUgPSBwYXRoU2VnbWVudHMucG9wKCk7XG4gICAgICAgICAgICBpZiAocGF0aFNlZ21lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBvYmoubmFtZXNwYWNlID0gcGF0aFNlZ21lbnRzLmpvaW4oJy8nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIG9iai50eXBlID0gc3BlY2lmaWVyO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xufSJdfQ==