ember-legacy-class-transform
Version:
The default blueprint for ember-cli addons.
75 lines (72 loc) • 6.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Stack = exports.DictSet = undefined;
exports.dict = dict;
var _guid = require('./guid');
let 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();
}
class DictSet {
constructor() {
this.dict = dict();
}
add(obj) {
if (typeof obj === 'string') this.dict[obj] = obj;else this.dict[(0, _guid.ensureGuid)(obj)] = obj;
return this;
}
delete(obj) {
if (typeof obj === 'string') delete this.dict[obj];else if (obj._guid) delete this.dict[obj._guid];
}
forEach(callback) {
let { dict } = this;
let dictKeys = Object.keys(dict);
for (let i = 0; dictKeys.length; i++) {
callback(dict[dictKeys[i]]);
}
}
toArray() {
return Object.keys(this.dict);
}
}
exports.DictSet = DictSet;
class Stack {
constructor() {
this.stack = [];
this.current = null;
}
toArray() {
return this.stack;
}
push(item) {
this.current = item;
this.stack.push(item);
}
pop() {
let item = this.stack.pop();
let len = this.stack.length;
this.current = len === 0 ? null : this.stack[len - 1];
return item === undefined ? null : item;
}
isEmpty() {
return this.stack.length === 0;
}
}
exports.Stack = Stack;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb2xsZWN0aW9ucy5qcyJdLCJuYW1lcyI6WyJkaWN0IiwicHJvdG8iLCJPYmplY3QiLCJjcmVhdGUiLCJjb25zdHJ1Y3RvciIsInZhbHVlIiwidW5kZWZpbmVkIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiRW1wdHlPYmplY3QiLCJwcm90b3R5cGUiLCJEaWN0U2V0IiwiYWRkIiwib2JqIiwiZGVsZXRlIiwiX2d1aWQiLCJmb3JFYWNoIiwiY2FsbGJhY2siLCJkaWN0S2V5cyIsImtleXMiLCJpIiwibGVuZ3RoIiwidG9BcnJheSIsIlN0YWNrIiwic3RhY2siLCJjdXJyZW50IiwicHVzaCIsIml0ZW0iLCJwb3AiLCJsZW4iLCJpc0VtcHR5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7UUFZZ0JBLEksR0FBQUEsSTs7QUFaaEI7O0FBQ0EsSUFBSUMsUUFBUUMsT0FBT0MsTUFBUCxDQUFjLElBQWQsRUFBb0I7QUFDNUI7QUFDQTtBQUNBQyxpQkFBYTtBQUNUQyxlQUFPQyxTQURFO0FBRVRDLG9CQUFZLEtBRkg7QUFHVEMsa0JBQVU7QUFIRDtBQUhlLENBQXBCLENBQVo7QUFTQSxTQUFTQyxXQUFULEdBQXVCLENBQUU7QUFDekJBLFlBQVlDLFNBQVosR0FBd0JULEtBQXhCO0FBQ08sU0FBU0QsSUFBVCxHQUFnQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQU8sSUFBSVMsV0FBSixFQUFQO0FBQ0g7QUFDTSxNQUFNRSxPQUFOLENBQWM7QUFDakJQLGtCQUFjO0FBQ1YsYUFBS0osSUFBTCxHQUFZQSxNQUFaO0FBQ0g7QUFDRFksUUFBSUMsR0FBSixFQUFTO0FBQ0wsWUFBSSxPQUFPQSxHQUFQLEtBQWUsUUFBbkIsRUFBNkIsS0FBS2IsSUFBTCxDQUFVYSxHQUFWLElBQWlCQSxHQUFqQixDQUE3QixLQUF1RCxLQUFLYixJQUFMLENBQVUsc0JBQVdhLEdBQVgsQ0FBVixJQUE2QkEsR0FBN0I7QUFDdkQsZUFBTyxJQUFQO0FBQ0g7QUFDREMsV0FBT0QsR0FBUCxFQUFZO0FBQ1IsWUFBSSxPQUFPQSxHQUFQLEtBQWUsUUFBbkIsRUFBNkIsT0FBTyxLQUFLYixJQUFMLENBQVVhLEdBQVYsQ0FBUCxDQUE3QixLQUF3RCxJQUFJQSxJQUFJRSxLQUFSLEVBQWUsT0FBTyxLQUFLZixJQUFMLENBQVVhLElBQUlFLEtBQWQsQ0FBUDtBQUMxRTtBQUNEQyxZQUFRQyxRQUFSLEVBQWtCO0FBQ2QsWUFBSSxFQUFFakIsSUFBRixLQUFXLElBQWY7QUFDQSxZQUFJa0IsV0FBV2hCLE9BQU9pQixJQUFQLENBQVluQixJQUFaLENBQWY7QUFDQSxhQUFLLElBQUlvQixJQUFJLENBQWIsRUFBZ0JGLFNBQVNHLE1BQXpCLEVBQWlDRCxHQUFqQyxFQUFzQztBQUNsQ0gscUJBQVNqQixLQUFLa0IsU0FBU0UsQ0FBVCxDQUFMLENBQVQ7QUFDSDtBQUNKO0FBQ0RFLGNBQVU7QUFDTixlQUFPcEIsT0FBT2lCLElBQVAsQ0FBWSxLQUFLbkIsSUFBakIsQ0FBUDtBQUNIO0FBcEJnQjtRQUFSVyxPLEdBQUFBLE87QUFzQk4sTUFBTVksS0FBTixDQUFZO0FBQ2ZuQixrQkFBYztBQUNWLGFBQUtvQixLQUFMLEdBQWEsRUFBYjtBQUNBLGFBQUtDLE9BQUwsR0FBZSxJQUFmO0FBQ0g7QUFDREgsY0FBVTtBQUNOLGVBQU8sS0FBS0UsS0FBWjtBQUNIO0FBQ0RFLFNBQUtDLElBQUwsRUFBVztBQUNQLGFBQUtGLE9BQUwsR0FBZUUsSUFBZjtBQUNBLGFBQUtILEtBQUwsQ0FBV0UsSUFBWCxDQUFnQkMsSUFBaEI7QUFDSDtBQUNEQyxVQUFNO0FBQ0YsWUFBSUQsT0FBTyxLQUFLSCxLQUFMLENBQVdJLEdBQVgsRUFBWDtBQUNBLFlBQUlDLE1BQU0sS0FBS0wsS0FBTCxDQUFXSCxNQUFyQjtBQUNBLGFBQUtJLE9BQUwsR0FBZUksUUFBUSxDQUFSLEdBQVksSUFBWixHQUFtQixLQUFLTCxLQUFMLENBQVdLLE1BQU0sQ0FBakIsQ0FBbEM7QUFDQSxlQUFPRixTQUFTckIsU0FBVCxHQUFxQixJQUFyQixHQUE0QnFCLElBQW5DO0FBQ0g7QUFDREcsY0FBVTtBQUNOLGVBQU8sS0FBS04sS0FBTCxDQUFXSCxNQUFYLEtBQXNCLENBQTdCO0FBQ0g7QUFwQmM7UUFBTkUsSyxHQUFBQSxLIiwiZmlsZSI6ImxpYi9jb2xsZWN0aW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVuc3VyZUd1aWQgfSBmcm9tICcuL2d1aWQnO1xubGV0IHByb3RvID0gT2JqZWN0LmNyZWF0ZShudWxsLCB7XG4gICAgLy8gd2l0aG91dCB0aGlzLCB3ZSB3aWxsIGFsd2F5cyBzdGlsbCBlbmQgdXAgd2l0aCAobmV3XG4gICAgLy8gRW1wdHlPYmplY3QoKSkuY29uc3RydWN0b3IgPT09IE9iamVjdFxuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH1cbn0pO1xuZnVuY3Rpb24gRW1wdHlPYmplY3QoKSB7fVxuRW1wdHlPYmplY3QucHJvdG90eXBlID0gcHJvdG87XG5leHBvcnQgZnVuY3Rpb24gZGljdCgpIHtcbiAgICAvLyBsZXQgZCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgLy8gZC54ID0gMTtcbiAgICAvLyBkZWxldGUgZC54O1xuICAgIC8vIHJldHVybiBkO1xuICAgIHJldHVybiBuZXcgRW1wdHlPYmplY3QoKTtcbn1cbmV4cG9ydCBjbGFzcyBEaWN0U2V0IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5kaWN0ID0gZGljdCgpO1xuICAgIH1cbiAgICBhZGQob2JqKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykgdGhpcy5kaWN0W29ial0gPSBvYmo7ZWxzZSB0aGlzLmRpY3RbZW5zdXJlR3VpZChvYmopXSA9IG9iajtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGRlbGV0ZShvYmopIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSBkZWxldGUgdGhpcy5kaWN0W29ial07ZWxzZSBpZiAob2JqLl9ndWlkKSBkZWxldGUgdGhpcy5kaWN0W29iai5fZ3VpZF07XG4gICAgfVxuICAgIGZvckVhY2goY2FsbGJhY2spIHtcbiAgICAgICAgbGV0IHsgZGljdCB9ID0gdGhpcztcbiAgICAgICAgbGV0IGRpY3RLZXlzID0gT2JqZWN0LmtleXMoZGljdCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBkaWN0S2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY2FsbGJhY2soZGljdFtkaWN0S2V5c1tpXV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvQXJyYXkoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmRpY3QpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBTdGFjayB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBbXTtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG4gICAgdG9BcnJheSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2s7XG4gICAgfVxuICAgIHB1c2goaXRlbSkge1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSBpdGVtO1xuICAgICAgICB0aGlzLnN0YWNrLnB1c2goaXRlbSk7XG4gICAgfVxuICAgIHBvcCgpIHtcbiAgICAgICAgbGV0IGl0ZW0gPSB0aGlzLnN0YWNrLnBvcCgpO1xuICAgICAgICBsZXQgbGVuID0gdGhpcy5zdGFjay5sZW5ndGg7XG4gICAgICAgIHRoaXMuY3VycmVudCA9IGxlbiA9PT0gMCA/IG51bGwgOiB0aGlzLnN0YWNrW2xlbiAtIDFdO1xuICAgICAgICByZXR1cm4gaXRlbSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGl0ZW07XG4gICAgfVxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLmxlbmd0aCA9PT0gMDtcbiAgICB9XG59Il19