UNPKG

@glimmer/di

Version:

Dependency injection support for Glimmer applications.

81 lines (80 loc) 8.84 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) { var split = specifier.split(':'); var type = split[0]; var 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) { var type = specifier.type; var path = serializeSpecifierPath(specifier); if (path) { return type + ':' + path; } else { return type; } } 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; } } 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNwZWNpZmllci5qcyJdLCJuYW1lcyI6WyJzcGxpdCIsInNwZWNpZmllciIsInR5cGUiLCJwYXRoIiwic2VyaWFsaXplU3BlY2lmaWVyUGF0aCIsImZ1bGxQYXRoIiwiaXNTcGVjaWZpZXJPYmplY3RBYnNvbHV0ZSIsIm9iaiIsInBhdGhTZWdtZW50cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFBTyx5QixHQUFBLHlCO1FBTUEseUIsR0FBQSx5QjtRQUdBLGtCLEdBQUEsa0I7UUFTQSxzQixHQUFBLHNCO1FBc0JBLG9CLEdBQUEsb0I7QUF4Q0EsU0FBQSx5QkFBQSxDQUFBLFNBQUEsRUFBOEM7QUFDakQsUUFBSUEsUUFBUUMsVUFBQUEsS0FBQUEsQ0FBWixHQUFZQSxDQUFaO0FBQ0EsUUFBSUMsT0FBT0YsTUFBWCxDQUFXQSxDQUFYO0FBQ0EsUUFBSUcsT0FBT0gsTUFBWCxDQUFXQSxDQUFYO0FBQ0EsV0FBTyxDQUFDLEVBQUVFLFFBQUFBLElBQUFBLElBQWdCQyxLQUFBQSxPQUFBQSxDQUFBQSxHQUFBQSxNQUFoQkQsQ0FBQUEsSUFBMkNDLEtBQUFBLEtBQUFBLENBQUFBLEdBQUFBLEVBQUFBLE1BQUFBLEdBQXJELENBQVEsQ0FBUjtBQUNIO0FBQ00sU0FBQSx5QkFBQSxDQUFBLFNBQUEsRUFBOEM7QUFDakQsV0FBT0YsVUFBQUEsUUFBQUEsS0FBQUEsU0FBQUEsSUFBb0NBLFVBQUFBLFVBQUFBLEtBQXBDQSxTQUFBQSxJQUEwRUEsVUFBQUEsSUFBQUEsS0FBMUVBLFNBQUFBLElBQTBHQSxVQUFBQSxJQUFBQSxLQUFqSCxTQUFBO0FBQ0g7QUFDTSxTQUFBLGtCQUFBLENBQUEsU0FBQSxFQUF1QztBQUMxQyxRQUFJQyxPQUFPRCxVQUFYLElBQUE7QUFDQSxRQUFJRSxPQUFPQyx1QkFBWCxTQUFXQSxDQUFYO0FBQ0EsUUFBQSxJQUFBLEVBQVU7QUFDTixlQUFPRixPQUFBQSxHQUFBQSxHQUFQLElBQUE7QUFESixLQUFBLE1BRU87QUFDSCxlQUFBLElBQUE7QUFDSDtBQUNKO0FBQ00sU0FBQSxzQkFBQSxDQUFBLFNBQUEsRUFBMkM7QUFDOUMsUUFBSUMsT0FBSixFQUFBO0FBQ0EsUUFBSUYsVUFBSixRQUFBLEVBQXdCO0FBQ3BCRSxhQUFBQSxJQUFBQSxDQUFVRixVQUFWRSxRQUFBQTtBQUNIO0FBQ0QsUUFBSUYsVUFBSixVQUFBLEVBQTBCO0FBQ3RCRSxhQUFBQSxJQUFBQSxDQUFVRixVQUFWRSxVQUFBQTtBQUNIO0FBQ0QsUUFBSUYsVUFBSixTQUFBLEVBQXlCO0FBQ3JCRSxhQUFBQSxJQUFBQSxDQUFVRixVQUFWRSxTQUFBQTtBQUNIO0FBQ0QsUUFBSUYsVUFBSixJQUFBLEVBQW9CO0FBQ2hCRSxhQUFBQSxJQUFBQSxDQUFVRixVQUFWRSxJQUFBQTtBQUNIO0FBQ0QsUUFBSUEsS0FBQUEsTUFBQUEsR0FBSixDQUFBLEVBQXFCO0FBQ2pCLFlBQUlFLFdBQVdGLEtBQUFBLElBQUFBLENBQWYsR0FBZUEsQ0FBZjtBQUNBLFlBQUlHLDBCQUFKLFNBQUlBLENBQUosRUFBMEM7QUFDdENELHVCQUFXLE1BQVhBLFFBQUFBO0FBQ0g7QUFDRCxlQUFBLFFBQUE7QUFDSDtBQUNKO0FBQ00sU0FBQSxvQkFBQSxDQUFBLFNBQUEsRUFBeUM7QUFDNUMsUUFBSUUsTUFBSixFQUFBO0FBQ0EsUUFBSU4sVUFBQUEsT0FBQUEsQ0FBQUEsR0FBQUEsSUFBeUIsQ0FBN0IsQ0FBQSxFQUFpQztBQUM3QixZQUFJRCxRQUFRQyxVQUFBQSxLQUFBQSxDQUFaLEdBQVlBLENBQVo7QUFDQSxZQUFJQyxPQUFPRixNQUFYLENBQVdBLENBQVg7QUFDQSxZQUFJRyxPQUFPSCxNQUFYLENBQVdBLENBQVg7QUFDQU8sWUFBQUEsSUFBQUEsR0FBQUEsSUFBQUE7QUFDQSxZQUFJQyxlQUFBQSxLQUFKLENBQUE7QUFDQSxZQUFJTCxLQUFBQSxPQUFBQSxDQUFBQSxHQUFBQSxNQUFKLENBQUEsRUFBNkI7QUFDekJLLDJCQUFlTCxLQUFBQSxNQUFBQSxDQUFBQSxDQUFBQSxFQUFBQSxLQUFBQSxDQUFmSyxHQUFlTCxDQUFmSztBQUNBLGdCQUFJTCxLQUFBQSxNQUFBQSxDQUFBQSxDQUFBQSxFQUFBQSxVQUFBQSxDQUFKLEdBQUlBLENBQUosRUFBb0M7QUFDaENJLG9CQUFBQSxRQUFBQSxHQUFlQyxhQUFBQSxLQUFBQSxLQUFBQSxHQUFBQSxHQUE2QkEsYUFBNUNELEtBQTRDQyxFQUE1Q0Q7QUFESixhQUFBLE1BRU87QUFDSEEsb0JBQUFBLFFBQUFBLEdBQWVDLGFBQWZELEtBQWVDLEVBQWZEO0FBQ0g7QUFDREEsZ0JBQUFBLFVBQUFBLEdBQWlCQyxhQUFqQkQsS0FBaUJDLEVBQWpCRDtBQVBKLFNBQUEsTUFRTztBQUNIQywyQkFBZUwsS0FBQUEsS0FBQUEsQ0FBZkssR0FBZUwsQ0FBZks7QUFDSDtBQUNELFlBQUlBLGFBQUFBLE1BQUFBLEdBQUosQ0FBQSxFQUE2QjtBQUN6QkQsZ0JBQUFBLElBQUFBLEdBQVdDLGFBQVhELEdBQVdDLEVBQVhEO0FBQ0EsZ0JBQUlDLGFBQUFBLE1BQUFBLEdBQUosQ0FBQSxFQUE2QjtBQUN6QkQsb0JBQUFBLFNBQUFBLEdBQWdCQyxhQUFBQSxJQUFBQSxDQUFoQkQsR0FBZ0JDLENBQWhCRDtBQUNIO0FBQ0o7QUF0QkwsS0FBQSxNQXVCTztBQUNIQSxZQUFBQSxJQUFBQSxHQUFBQSxTQUFBQTtBQUNIO0FBQ0QsV0FBQSxHQUFBO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNTcGVjaWZpZXJTdHJpbmdBYnNvbHV0ZShzcGVjaWZpZXIpIHtcbiAgICBsZXQgc3BsaXQgPSBzcGVjaWZpZXIuc3BsaXQoJzonKTtcbiAgICBsZXQgdHlwZSA9IHNwbGl0WzBdO1xuICAgIGxldCBwYXRoID0gc3BsaXRbMV07XG4gICAgcmV0dXJuICEhKHR5cGUgJiYgcGF0aCAmJiBwYXRoLmluZGV4T2YoJy8nKSA9PT0gMCAmJiBwYXRoLnNwbGl0KCcvJykubGVuZ3RoID4gMyk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTcGVjaWZpZXJPYmplY3RBYnNvbHV0ZShzcGVjaWZpZXIpIHtcbiAgICByZXR1cm4gc3BlY2lmaWVyLnJvb3ROYW1lICE9PSB1bmRlZmluZWQgJiYgc3BlY2lmaWVyLmNvbGxlY3Rpb24gIT09IHVuZGVmaW5lZCAmJiBzcGVjaWZpZXIubmFtZSAhPT0gdW5kZWZpbmVkICYmIHNwZWNpZmllci50eXBlICE9PSB1bmRlZmluZWQ7XG59XG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplU3BlY2lmaWVyKHNwZWNpZmllcikge1xuICAgIGxldCB0eXBlID0gc3BlY2lmaWVyLnR5cGU7XG4gICAgbGV0IHBhdGggPSBzZXJpYWxpemVTcGVjaWZpZXJQYXRoKHNwZWNpZmllcik7XG4gICAgaWYgKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHR5cGUgKyAnOicgKyBwYXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVTcGVjaWZpZXJQYXRoKHNwZWNpZmllcikge1xuICAgIGxldCBwYXRoID0gW107XG4gICAgaWYgKHNwZWNpZmllci5yb290TmFtZSkge1xuICAgICAgICBwYXRoLnB1c2goc3BlY2lmaWVyLnJvb3ROYW1lKTtcbiAgICB9XG4gICAgaWYgKHNwZWNpZmllci5jb2xsZWN0aW9uKSB7XG4gICAgICAgIHBhdGgucHVzaChzcGVjaWZpZXIuY29sbGVjdGlvbik7XG4gICAgfVxuICAgIGlmIChzcGVjaWZpZXIubmFtZXNwYWNlKSB7XG4gICAgICAgIHBhdGgucHVzaChzcGVjaWZpZXIubmFtZXNwYWNlKTtcbiAgICB9XG4gICAgaWYgKHNwZWNpZmllci5uYW1lKSB7XG4gICAgICAgIHBhdGgucHVzaChzcGVjaWZpZXIubmFtZSk7XG4gICAgfVxuICAgIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGZ1bGxQYXRoID0gcGF0aC5qb2luKCcvJyk7XG4gICAgICAgIGlmIChpc1NwZWNpZmllck9iamVjdEFic29sdXRlKHNwZWNpZmllcikpIHtcbiAgICAgICAgICAgIGZ1bGxQYXRoID0gJy8nICsgZnVsbFBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bGxQYXRoO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZVNwZWNpZmllcihzcGVjaWZpZXIpIHtcbiAgICBsZXQgb2JqID0ge307XG4gICAgaWYgKHNwZWNpZmllci5pbmRleE9mKCc6JykgPiAtMSkge1xuICAgICAgICBsZXQgc3BsaXQgPSBzcGVjaWZpZXIuc3BsaXQoJzonKTtcbiAgICAgICAgbGV0IHR5cGUgPSBzcGxpdFswXTtcbiAgICAgICAgbGV0IHBhdGggPSBzcGxpdFsxXTtcbiAgICAgICAgb2JqLnR5cGUgPSB0eXBlO1xuICAgICAgICBsZXQgcGF0aFNlZ21lbnRzO1xuICAgICAgICBpZiAocGF0aC5pbmRleE9mKCcvJykgPT09IDApIHtcbiAgICAgICAgICAgIHBhdGhTZWdtZW50cyA9IHBhdGguc3Vic3RyKDEpLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICBpZiAocGF0aC5zdWJzdHIoMSkuc3RhcnRzV2l0aCgnQCcpKSB7XG4gICAgICAgICAgICAgICAgb2JqLnJvb3ROYW1lID0gcGF0aFNlZ21lbnRzLnNoaWZ0KCkgKyAnLycgKyBwYXRoU2VnbWVudHMuc2hpZnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb2JqLnJvb3ROYW1lID0gcGF0aFNlZ21lbnRzLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvYmouY29sbGVjdGlvbiA9IHBhdGhTZWdtZW50cy5zaGlmdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGF0aFNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLycpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoU2VnbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgb2JqLm5hbWUgPSBwYXRoU2VnbWVudHMucG9wKCk7XG4gICAgICAgICAgICBpZiAocGF0aFNlZ21lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBvYmoubmFtZXNwYWNlID0gcGF0aFNlZ21lbnRzLmpvaW4oJy8nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIG9iai50eXBlID0gc3BlY2lmaWVyO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xufSJdfQ==