1 | ;
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.DynamicValueCounter = exports.DynamicValue = undefined;
|
7 |
|
8 | var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
9 |
|
10 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
11 |
|
12 | var _defined = require('defined');
|
13 |
|
14 | var _defined2 = _interopRequireDefault(_defined);
|
15 |
|
16 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
17 |
|
18 | function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
19 |
|
20 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
21 |
|
22 | var DynamicValue = exports.DynamicValue = function () {
|
23 | _createClass(DynamicValue, null, [{
|
24 | key: 'createCounter',
|
25 | value: function createCounter() {
|
26 | return new DynamicValueCounter();
|
27 | }
|
28 | }, {
|
29 | key: 'pluck',
|
30 | value: function pluck(scope, property, key) {
|
31 | var value = undefined;
|
32 | if (scope && null != scope[property]) {
|
33 | value = null != key ? scope[property][key] : scope[property];
|
34 | }
|
35 |
|
36 | for (var _len = arguments.length, defaultValues = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
|
37 | defaultValues[_key - 3] = arguments[_key];
|
38 | }
|
39 |
|
40 | return DynamicValue.primitive(_defined2.default.apply(undefined, [value].concat(defaultValues)));
|
41 | }
|
42 | }, {
|
43 | key: 'primitive',
|
44 | value: function primitive(v) {
|
45 | var value = v;
|
46 | if (null == v) {
|
47 | value = undefined;
|
48 | }
|
49 | if ('object' == (typeof v === 'undefined' ? 'undefined' : _typeof(v))) {
|
50 | var hasLength = 'number' == typeof v.length;
|
51 | var hasIterator = 'function' == typeof v[Symbol.iterator];
|
52 | // array
|
53 | if (hasLength) {
|
54 | if (hasIterator) {
|
55 | value = [].concat(_toConsumableArray(v));
|
56 | } else {
|
57 | value = Array(v.length).fill(0).map(function (_, i) {
|
58 | return v[i];
|
59 | });
|
60 | }
|
61 | }
|
62 | // object
|
63 | else {
|
64 | value = Object.assign({}, v);
|
65 | }
|
66 | }
|
67 | return value;
|
68 | }
|
69 | }]);
|
70 |
|
71 | function DynamicValue(ctx) {
|
72 | var _this = this;
|
73 |
|
74 | var initialState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
75 | var props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
76 |
|
77 | _classCallCheck(this, DynamicValue);
|
78 |
|
79 | var define = function define(k, v, def) {
|
80 | return Object.defineProperty(_this, k, {
|
81 | enumerable: false, get: function get() {
|
82 | return v || def;
|
83 | }
|
84 | });
|
85 | };
|
86 | define('ctx', ctx, {});
|
87 | define('initialState', initialState, {});
|
88 | if ('object' == (typeof props === 'undefined' ? 'undefined' : _typeof(props))) {
|
89 | this.set(props);
|
90 | }
|
91 | }
|
92 |
|
93 | _createClass(DynamicValue, [{
|
94 | key: 'set',
|
95 | value: function set(name, value) {
|
96 | var _initialState$prefix = this.initialState.prefix,
|
97 | prefix = _initialState$prefix === undefined ? '' : _initialState$prefix;
|
98 |
|
99 | if (name && 'object' == (typeof name === 'undefined' ? 'undefined' : _typeof(name))) {
|
100 | var descriptors = Object.getOwnPropertyDescriptors(name);
|
101 | for (var key in descriptors) {
|
102 | try {
|
103 | Object.defineProperty(this, '' + prefix + key, descriptors[key]);
|
104 | } catch (e) {}
|
105 | }
|
106 | } else if ('string' == typeof name && null != value) {
|
107 | this['' + prefix + name] = DynamicValue.primitive(value);
|
108 | }
|
109 | this.purge();
|
110 | return this;
|
111 | }
|
112 | }, {
|
113 | key: 'unset',
|
114 | value: function unset(name) {
|
115 | var _initialState$prefix2 = this.initialState.prefix,
|
116 | prefix = _initialState$prefix2 === undefined ? '' : _initialState$prefix2;
|
117 |
|
118 | if ('string' == typeof name) {
|
119 | delete this['' + prefix + name];
|
120 | }
|
121 | return this;
|
122 | }
|
123 | }, {
|
124 | key: 'purge',
|
125 | value: function purge() {
|
126 | for (var key in this) {
|
127 | if (null == this[key]) {
|
128 | delete this[key];
|
129 | }
|
130 | }
|
131 | return this;
|
132 | }
|
133 | }]);
|
134 |
|
135 | return DynamicValue;
|
136 | }();
|
137 |
|
138 | var DynamicValueCounter = exports.DynamicValueCounter = function () {
|
139 | function DynamicValueCounter() {
|
140 | _classCallCheck(this, DynamicValueCounter);
|
141 |
|
142 | Object.defineProperties(this, {
|
143 | contexts: { enumerable: false, value: new Set() },
|
144 | map: { enumerable: false, value: new WeakMap() }
|
145 | });
|
146 | }
|
147 |
|
148 | _createClass(DynamicValueCounter, [{
|
149 | key: 'setContext',
|
150 | value: function setContext(ctx) {
|
151 | var set = this.map.get(ctx) || new Set();
|
152 | this.map.set(ctx, set);
|
153 | if (false == this.contexts.has(ctx)) {
|
154 | this.contexts.add(ctx);
|
155 | }
|
156 | return this;
|
157 | }
|
158 | }, {
|
159 | key: 'getSetForContext',
|
160 | value: function getSetForContext(ctx) {
|
161 | this.setContext(ctx);
|
162 | return this.map.get(ctx);
|
163 | }
|
164 | }, {
|
165 | key: 'addValueForContext',
|
166 | value: function addValueForContext(ctx, dynamicValue) {
|
167 | var set = this.getSetForContext(ctx);
|
168 | if (false == set.has(dynamicValue)) {
|
169 | set.add(dynamicValue);
|
170 | }
|
171 | return this;
|
172 | }
|
173 | }, {
|
174 | key: 'sumSetForContext',
|
175 | value: function sumSetForContext(ctx) {
|
176 | return this.getSetForContext(ctx).size();
|
177 | }
|
178 | }, {
|
179 | key: 'listSetForContext',
|
180 | value: function listSetForContext(ctx) {
|
181 | return [].concat(_toConsumableArray(this.getSetForContext(ctx)));
|
182 | }
|
183 | }, {
|
184 | key: 'list',
|
185 | value: function list() {
|
186 | return [].concat(_toConsumableArray(this.contexts));
|
187 | }
|
188 | }]);
|
189 |
|
190 | return DynamicValueCounter;
|
191 | }();
|
192 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL2R5bmFtaWMuanMiXSwibmFtZXMiOlsiRHluYW1pY1ZhbHVlIiwiRHluYW1pY1ZhbHVlQ291bnRlciIsInNjb3BlIiwicHJvcGVydHkiLCJrZXkiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImRlZmF1bHRWYWx1ZXMiLCJwcmltaXRpdmUiLCJ2IiwiaGFzTGVuZ3RoIiwibGVuZ3RoIiwiaGFzSXRlcmF0b3IiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiZmlsbCIsIm1hcCIsIl8iLCJpIiwiT2JqZWN0IiwiYXNzaWduIiwiY3R4IiwiaW5pdGlhbFN0YXRlIiwicHJvcHMiLCJkZWZpbmUiLCJrIiwiZGVmIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwic2V0IiwibmFtZSIsInByZWZpeCIsImRlc2NyaXB0b3JzIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImUiLCJwdXJnZSIsImRlZmluZVByb3BlcnRpZXMiLCJjb250ZXh0cyIsIlNldCIsIldlYWtNYXAiLCJoYXMiLCJhZGQiLCJzZXRDb250ZXh0IiwiZHluYW1pY1ZhbHVlIiwiZ2V0U2V0Rm9yQ29udGV4dCIsInNpemUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7SUFFYUEsWSxXQUFBQSxZOzs7b0NBQ1k7QUFDckIsYUFBTyxJQUFJQyxtQkFBSixFQUFQO0FBQ0Q7OzswQkFFWUMsSyxFQUFPQyxRLEVBQVVDLEcsRUFBdUI7QUFDbkQsVUFBSUMsUUFBUUMsU0FBWjtBQUNBLFVBQUlKLFNBQVMsUUFBUUEsTUFBTUMsUUFBTixDQUFyQixFQUFzQztBQUNwQ0UsZ0JBQVEsUUFBUUQsR0FBUixHQUFjRixNQUFNQyxRQUFOLEVBQWdCQyxHQUFoQixDQUFkLEdBQXFDRixNQUFNQyxRQUFOLENBQTdDO0FBQ0Q7O0FBSmtELHdDQUFmSSxhQUFlO0FBQWZBLHFCQUFlO0FBQUE7O0FBS25ELGFBQU9QLGFBQWFRLFNBQWIsQ0FBdUIs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O3FDQUVnQnZCLEcsRUFBSztBQUNwQixhQUFPLEtBQUt3QixnQkFBTCxDQUFzQnhCLEdBQXRCLEVBQTJCeUIsSUFBM0IsRUFBUDtBQUNEOzs7c0NBRWlCekIsRyxFQUFLO0FBQ3JCLDBDQUFZLEtBQUt3QixnQkFBTCxDQUFzQnhCLEdBQXRCLENBQVo7QUFDRDs7OzJCQUVNO0FBQ0wsMENBQVksS0FBS2lCLFFBQWpCO0FBQ0QiLCJmaWxlIjoiZHluYW1pYy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2FsZXNjZSBmcm9tICdkZWZpbmVkJ1xuXG5leHBvcnQgY2xhc3MgRHluYW1pY1ZhbHVlIHtcbiAgc3RhdGljIGNyZWF0ZUNvdW50ZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljVmFsdWVDb3VudGVyKClcbiAgfVxuXG4gIHN0YXRpYyBwbHVjayhzY29wZSwgcHJvcGVydHksIGtleSwgLi4uZGVmYXVsdFZhbHVlcykge1xuICAgIGxldCB2YWx1ZSA9IHVuZGVmaW5lZFxuICAgIGlmIChzY29wZSAmJiBudWxsICE9IHNjb3BlW3Byb3BlcnR5XSkge1xuICAgICAgdmFsdWUgPSBudWxsICE9IGtleSA/IHNjb3BlW3Byb3BlcnR5XVtrZXldIDogc2NvcGVbcHJvcGVydHldXG4gICAgfVxuICAgIHJldHVybiBEeW5hbWljVmFsdWUucHJpbWl0aXZlKGNvYWxlc2NlKHZhbHVlLCAuLi5kZWZhdWx0VmFsdWVzKSlcbiAgfVxuXG4gIHN0YXRpYyBwcmltaXRpdmUodikge1xuICAgIGxldCB2YWx1ZSA9IHZcbiAgICBpZiAobnVsbCA9PSB2KSB7IHZhbHVlID0gdW5kZWZpbmVkIH1cbiAgICBpZiAoJ29iamVjdCcgPT0gdHlwZW9mIHYpIHtcbiAgICAgIGNvbnN0IGhhc0xlbmd0aCA9ICdudW1iZXInID09IHR5cGVvZiB2Lmxlbmd0aFxuICAgICAgY29uc3QgaGFzSXRlcmF0b3IgPSAnZnVuY3Rpb24nID09IHR5cGVvZiB2W1N5bWJvbC5pdGVyYXRvcl1cbiAgICAgIC8vIGFycmF5XG4gICAgICBpZiAoaGFzTGVuZ3RoKSB7XG4gICAgICAgIGlmIChoYXNJdGVyYXRvcikgeyB2YWx1ZSA9IFsuLi52XSB9XG4gICAgICAgIGVsc2UgeyB2YWx1ZSA9IEFycmF5KHYubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaSkgPT4gdltpXSkgfVxuICAgICAgfVxuICAgICAgLy8gb2JqZWN0XG4gICAgICBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSBPYmplY3QuYXNzaWduKHt9LCB2KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGN0eCwgaW5pdGlhbFN0YXRlID0ge30sIHByb3BzID0ge30pIHtcbiAgICBjb25zdCBkZWZpbmUgPSAoaywgdiwgZGVmKSA9PiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgaywge1xuICAgICAgZW51bWVyYWJsZTogZmFsc2UsIGdldDogKCkgPT4gdiB8fCBkZWZcbiAgICB9KVxuICAgIGRlZmluZSgnY3R4JywgY3R4LCB7fSlcbiAgICBkZWZpbmUoJ2luaXRpYWxTdGF0ZScsIGluaXRpYWxTdGF0ZSwge30pXG4gICAgaWYgKCdvYmplY3QnID09IHR5cGVvZiBwcm9wcykge1xuICAgICAgdGhpcy5zZXQocHJvcHMpXG4gICAgfVxuICB9XG5cbiAgc2V0KG5hbWUsIHZhbHVlKSB7XG4gICAgY29uc3Qge3ByZWZpeCA9ICcnfSA9IHRoaXMuaW5pdGlhbFN0YXRlXG4gICAgaWYgKG5hbWUgJiYgJ29iamVjdCcgPT0gdHlwZW9mIG5hbWUpIHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3JzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobmFtZSlcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGRlc2NyaXB0b3JzKSB7XG4gICAgICAgIHRyeSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBgJHtwcmVmaXh9JHtrZXl9YCwgZGVzY3JpcHRvcnNba2V5XSkgfVxuICAgICAgICBjYXRjaCAoZSkge31cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCdzdHJpbmcnID09IHR5cGVvZiBuYW1lICYmIG51bGwgIT0gdmFsdWUpIHtcbiAgICAgIHRoaXNbYCR7cHJlZml4fSR7bmFtZX1gXSA9IER5bmFtaWNWYWx1ZS5wcmltaXRpdmUodmFsdWUpXG4gICAgfVxuICAgIHRoaXMucHVyZ2UoKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICB1bnNldChuYW1lKSB7XG4gICAgY29uc3Qge3ByZWZpeCA9ICcnfSA9IHRoaXMuaW5pdGlhbFN0YXRlXG4gICAgaWYgKCdzdHJpbmcnID09IHR5cGVvZiBuYW1lKSB7XG4gICAgICBkZWxldGUgdGhpc1tgJHtwcmVmaXh9JHtuYW1lfWBdXG4gICAgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBwdXJnZSgpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzKSB7XG4gICAgICBpZiAobnVsbCA9PSB0aGlzW2tleV0pIHtcbiAgICAgICAgZGVsZXRlIHRoaXNba2V5XVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpc1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljVmFsdWVDb3VudGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcywge1xuICAgICAgY29udGV4dHM6IHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiBuZXcgU2V0KCkgfSxcbiAgICAgIG1hcDogeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IG5ldyBXZWFrTWFwKCkgfSxcbiAgICB9KVxuICB9XG5cbiAgc2V0Q29udGV4dChjdHgpIHtcbiAgICBjb25zdCBzZXQgPSB0aGlzLm1hcC5nZXQoY3R4KSB8fCBuZXcgU2V0KClcbiAgICB0aGlzLm1hcC5zZXQoY3R4LCBzZXQpXG4gICAgaWYgKGZhbHNlID09IHRoaXMuY29udGV4dHMuaGFzKGN0eCkpIHtcbiAgICAgIHRoaXMuY29udGV4dHMuYWRkKGN0eClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGdldFNldEZvckNvbnRleHQoY3R4KSB7XG4gICAgdGhpcy5zZXRDb250ZXh0KGN0eClcbiAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KGN0eClcbiAgfVxuXG4gIGFkZFZhbHVlRm9yQ29udGV4dChjdHgsIGR5bmFtaWNWYWx1ZSkge1xuICAgIGNvbnN0IHNldCA9IHRoaXMuZ2V0U2V0Rm9yQ29udGV4dChjdHgpXG4gICAgaWYgKGZhbHNlID09IHNldC5oYXMoZHluYW1pY1ZhbHVlKSkge1xuICAgICAgc2V0LmFkZChkeW5hbWljVmFsdWUpXG4gICAgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzdW1TZXRGb3JDb250ZXh0KGN0eCkge1xuICAgIHJldHVybiB0aGlzLmdldFNldEZvckNvbnRleHQoY3R4KS5zaXplKClcbiAgfVxuXG4gIGxpc3RTZXRGb3JDb250ZXh0KGN0eCkge1xuICAgIHJldHVybiBbIC4uLnRoaXMuZ2V0U2V0Rm9yQ29udGV4dChjdHgpIF1cbiAgfVxuXG4gIGxpc3QoKSB7XG4gICAgcmV0dXJuIFsgLi4udGhpcy5jb250ZXh0cyBdXG4gIH1cbn1cbiJdfQ== |
\ | No newline at end of file |