factory.js 938 B

123456789101112131415161718192021222324252627
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.Attribute = exports.registerAttribute = exports.getAttribute = void 0;
  4. var tslib_1 = require("tslib");
  5. var base_1 = require("./attributes/base");
  6. exports.Attribute = base_1.default;
  7. // 所有的 attribute map
  8. var ATTRIBUTE_MAP = {};
  9. /**
  10. * 通过类型获得 Attribute 类
  11. * @param type
  12. */
  13. var getAttribute = function (type) {
  14. return ATTRIBUTE_MAP[type.toLowerCase()];
  15. };
  16. exports.getAttribute = getAttribute;
  17. var registerAttribute = function (type, ctor) {
  18. // 注册的时候,需要校验 type 重名,不区分大小写
  19. if (getAttribute(type)) {
  20. throw new Error("Attribute type '".concat(type, "' existed."));
  21. }
  22. // 存储到 map 中
  23. ATTRIBUTE_MAP[type.toLowerCase()] = ctor;
  24. };
  25. exports.registerAttribute = registerAttribute;
  26. tslib_1.__exportStar(require("./interface"), exports);
  27. //# sourceMappingURL=factory.js.map