ember-legacy-class-transform
Version:
The default blueprint for ember-cli addons.
96 lines (79 loc) • 7.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Stack = exports.DictSet = undefined;
exports.dict = dict;
var _guid = require('./guid');
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
var proto = Object.create(null, {
// without this, we will always still end up with (new
// EmptyObject()).constructor === Object
constructor: {
value: undefined,
enumerable: false,
writable: true
}
});
function EmptyObject() {}
EmptyObject.prototype = proto;
function dict() {
// let d = Object.create(null);
// d.x = 1;
// delete d.x;
// return d;
return new EmptyObject();
}
var DictSet = exports.DictSet = function () {
function DictSet() {
_classCallCheck(this, DictSet);
this.dict = dict();
}
DictSet.prototype.add = function add(obj) {
if (typeof obj === 'string') this.dict[obj] = obj;else this.dict[(0, _guid.ensureGuid)(obj)] = obj;
return this;
};
DictSet.prototype.delete = function _delete(obj) {
if (typeof obj === 'string') delete this.dict[obj];else if (obj._guid) delete this.dict[obj._guid];
};
DictSet.prototype.forEach = function forEach(callback) {
var dict = this.dict;
var dictKeys = Object.keys(dict);
for (var i = 0; dictKeys.length; i++) {
callback(dict[dictKeys[i]]);
}
};
DictSet.prototype.toArray = function toArray() {
return Object.keys(this.dict);
};
return DictSet;
}();
var Stack = exports.Stack = function () {
function Stack() {
_classCallCheck(this, Stack);
this.stack = [];
this.current = null;
}
Stack.prototype.toArray = function toArray() {
return this.stack;
};
Stack.prototype.push = function push(item) {
this.current = item;
this.stack.push(item);
};
Stack.prototype.pop = function pop() {
var item = this.stack.pop();
var len = this.stack.length;
this.current = len === 0 ? null : this.stack[len - 1];
return item === undefined ? null : item;
};
Stack.prototype.isEmpty = function isEmpty() {
return this.stack.length === 0;
};
return Stack;
}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb2xsZWN0aW9ucy5qcyJdLCJuYW1lcyI6WyJlbnN1cmVHdWlkIiwicHJvdG8iLCJPYmplY3QiLCJjcmVhdGUiLCJjb25zdHJ1Y3RvciIsInZhbHVlIiwidW5kZWZpbmVkIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiRW1wdHlPYmplY3QiLCJwcm90b3R5cGUiLCJkaWN0IiwiRGljdFNldCIsImFkZCIsIm9iaiIsImRlbGV0ZSIsIl9ndWlkIiwiZm9yRWFjaCIsImNhbGxiYWNrIiwiZGljdEtleXMiLCJrZXlzIiwiaSIsImxlbmd0aCIsInRvQXJyYXkiLCJTdGFjayIsInN0YWNrIiwiY3VycmVudCIsInB1c2giLCJpdGVtIiwicG9wIiwibGVuIiwiaXNFbXB0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBWU8sQUFBUzs7QUFaaEIsQUFBUyxBQUFrQjs7Ozs7Ozs7QUFDM0IsSUFBSSxlQUFRLEFBQU8sT0FBUCxBQUFjO0FBRXRCO0FBQ0E7O2VBQWEsQUFDRixBQUNQO29CQUZTLEFBRUcsQUFDWjtrQkFOUixBQUFZLEFBQW9CLEFBR2YsQUFHQztBQUhELEFBQ1Q7QUFKd0IsQUFDNUIsQ0FEUTtBQVNaLFNBQUEsQUFBUyxjQUFjLEFBQUU7QUFDekIsWUFBQSxBQUFZLFlBQVosQUFBd0IsQUFDeEI7QUFBTyxnQkFBZ0IsQUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtXQUFPLElBQVAsQUFBTyxBQUFJLEFBQ2Q7QUFDRDtJQUFBLEFBQWEsd0NBQ1Q7dUJBQWM7OEJBQ1Y7O2FBQUEsQUFBSyxPQUFMLEFBQVksQUFDZjtBQUhMOztzQkFBQSxBQUlJLG1CQUpKLEFBSVEsS0FBSyxBQUNMO1lBQUksT0FBQSxBQUFPLFFBQVgsQUFBbUIsVUFBVSxLQUFBLEFBQUssS0FBTCxBQUFVLE9BQXZDLEFBQTZCLEFBQWlCLFNBQVMsS0FBQSxBQUFLLEtBQUssc0JBQVYsQUFBVSxBQUFXLFFBQXJCLEFBQTZCLEFBQ3BGO2VBQUEsQUFBTyxBQUNWO0FBUEw7O3NCQUFBLEFBUUksMEJBUkosQUFRVyxLQUFLLEFBQ1I7WUFBSSxPQUFBLEFBQU8sUUFBWCxBQUFtQixVQUFVLE9BQU8sS0FBQSxBQUFLLEtBQXpDLEFBQTZCLEFBQU8sQUFBVSxVQUFVLElBQUksSUFBSixBQUFRLE9BQU8sT0FBTyxLQUFBLEFBQUssS0FBSyxJQUFqQixBQUFPLEFBQWMsQUFDL0Y7QUFWTDs7c0JBQUEsQUFXSSwyQkFYSixBQVdZLFVBQVU7WUFBQSxBQUNSLE9BRFEsQUFDQyxLQURELEFBQ1IsQUFDTjs7WUFBSSxXQUFXLE9BQUEsQUFBTyxLQUF0QixBQUFlLEFBQVksQUFDM0I7YUFBSyxJQUFJLElBQVQsQUFBYSxHQUFHLFNBQWhCLEFBQXlCLFFBQXpCLEFBQWlDLEtBQUssQUFDbEM7cUJBQVMsS0FBSyxTQUFkLEFBQVMsQUFBSyxBQUFTLEFBQzFCO0FBQ0o7QUFqQkw7O3NCQUFBLEFBa0JJLDZCQUFVLEFBQ047ZUFBTyxPQUFBLEFBQU8sS0FBSyxLQUFuQixBQUFPLEFBQWlCLEFBQzNCO0FBcEJMOztXQUFBO0FBc0JBO0lBQUEsQUFBYSxvQ0FDVDtxQkFBYzs4QkFDVjs7YUFBQSxBQUFLLFFBQUwsQUFBYSxBQUNiO2FBQUEsQUFBSyxVQUFMLEFBQWUsQUFDbEI7QUFKTDs7b0JBQUEsQUFLSSw2QkFBVSxBQUNOO2VBQU8sS0FBUCxBQUFZLEFBQ2Y7QUFQTDs7b0JBQUEsQUFRSSxxQkFSSixBQVFTLE1BQU0sQUFDUDthQUFBLEFBQUssVUFBTCxBQUFlLEFBQ2Y7YUFBQSxBQUFLLE1BQUwsQUFBVyxLQUFYLEFBQWdCLEFBQ25CO0FBWEw7O29CQUFBLEFBWUkscUJBQU0sQUFDRjtZQUFJLE9BQU8sS0FBQSxBQUFLLE1BQWhCLEFBQVcsQUFBVyxBQUN0QjtZQUFJLE1BQU0sS0FBQSxBQUFLLE1BQWYsQUFBcUIsQUFDckI7YUFBQSxBQUFLLFVBQVUsUUFBQSxBQUFRLElBQVIsQUFBWSxPQUFPLEtBQUEsQUFBSyxNQUFNLE1BQTdDLEFBQWtDLEFBQWlCLEFBQ25EO2VBQU8sU0FBQSxBQUFTLFlBQVQsQUFBcUIsT0FBNUIsQUFBbUMsQUFDdEM7QUFqQkw7O29CQUFBLEFBa0JJLDZCQUFVLEFBQ047ZUFBTyxLQUFBLEFBQUssTUFBTCxBQUFXLFdBQWxCLEFBQTZCLEFBQ2hDO0FBcEJMOztXQUFBIiwiZmlsZSI6ImxpYi9jb2xsZWN0aW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVuc3VyZUd1aWQgfSBmcm9tICcuL2d1aWQnO1xubGV0IHByb3RvID0gT2JqZWN0LmNyZWF0ZShudWxsLCB7XG4gICAgLy8gd2l0aG91dCB0aGlzLCB3ZSB3aWxsIGFsd2F5cyBzdGlsbCBlbmQgdXAgd2l0aCAobmV3XG4gICAgLy8gRW1wdHlPYmplY3QoKSkuY29uc3RydWN0b3IgPT09IE9iamVjdFxuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH1cbn0pO1xuZnVuY3Rpb24gRW1wdHlPYmplY3QoKSB7fVxuRW1wdHlPYmplY3QucHJvdG90eXBlID0gcHJvdG87XG5leHBvcnQgZnVuY3Rpb24gZGljdCgpIHtcbiAgICAvLyBsZXQgZCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgLy8gZC54ID0gMTtcbiAgICAvLyBkZWxldGUgZC54O1xuICAgIC8vIHJldHVybiBkO1xuICAgIHJldHVybiBuZXcgRW1wdHlPYmplY3QoKTtcbn1cbmV4cG9ydCBjbGFzcyBEaWN0U2V0IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5kaWN0ID0gZGljdCgpO1xuICAgIH1cbiAgICBhZGQob2JqKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykgdGhpcy5kaWN0W29ial0gPSBvYmo7ZWxzZSB0aGlzLmRpY3RbZW5zdXJlR3VpZChvYmopXSA9IG9iajtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGRlbGV0ZShvYmopIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSBkZWxldGUgdGhpcy5kaWN0W29ial07ZWxzZSBpZiAob2JqLl9ndWlkKSBkZWxldGUgdGhpcy5kaWN0W29iai5fZ3VpZF07XG4gICAgfVxuICAgIGZvckVhY2goY2FsbGJhY2spIHtcbiAgICAgICAgbGV0IHsgZGljdCB9ID0gdGhpcztcbiAgICAgICAgbGV0IGRpY3RLZXlzID0gT2JqZWN0LmtleXMoZGljdCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBkaWN0S2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY2FsbGJhY2soZGljdFtkaWN0S2V5c1tpXV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvQXJyYXkoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmRpY3QpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBTdGFjayB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBbXTtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG4gICAgdG9BcnJheSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2s7XG4gICAgfVxuICAgIHB1c2goaXRlbSkge1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSBpdGVtO1xuICAgICAgICB0aGlzLnN0YWNrLnB1c2goaXRlbSk7XG4gICAgfVxuICAgIHBvcCgpIHtcbiAgICAgICAgbGV0IGl0ZW0gPSB0aGlzLnN0YWNrLnBvcCgpO1xuICAgICAgICBsZXQgbGVuID0gdGhpcy5zdGFjay5sZW5ndGg7XG4gICAgICAgIHRoaXMuY3VycmVudCA9IGxlbiA9PT0gMCA/IG51bGwgOiB0aGlzLnN0YWNrW2xlbiAtIDFdO1xuICAgICAgICByZXR1cm4gaXRlbSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGl0ZW07XG4gICAgfVxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLmxlbmd0aCA9PT0gMDtcbiAgICB9XG59Il19