UNPKG

ember-legacy-class-transform

Version:
75 lines (72 loc) 6.65 kB
'use strict'; 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