UNPKG

ember-legacy-class-transform

Version:
96 lines (79 loc) 7.27 kB
'use strict'; 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