@dashkite/joy 0.3.16 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,125 +1,230 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.values = exports.set = exports.query = exports.pairs = exports.merge = exports.mask = exports.keys = exports.has = exports.get = exports.exclude = exports.assign = void 0;
7
-
8
- var _function = require("./function.js");
9
-
10
- var _type = require("./type.js");
11
-
12
- var _value = require("./value.js");
13
-
14
- var assign,
15
- exclude,
16
- get,
17
- has,
18
- keys,
19
- mask,
20
- merge,
21
- pairs,
22
- query,
23
- set,
24
- values,
25
- indexOf = [].indexOf;
26
- exports.values = values;
27
- exports.set = set;
28
- exports.query = query;
29
- exports.pairs = pairs;
30
- exports.merge = merge;
31
- exports.mask = mask;
32
- exports.keys = keys;
33
- exports.has = has;
34
- exports.get = get;
35
- exports.exclude = exclude;
36
- exports.assign = assign;
37
- exports.keys = keys = Object.keys;
38
-
39
- exports.values = values = function (x) {
40
- var k, results, v;
41
- results = [];
42
-
43
- for (k in x) {
44
- v = x[k];
45
- results.push(v);
46
- }
47
-
48
- return results;
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ assign: function() {
13
+ return assign;
14
+ },
15
+ collapse: function() {
16
+ return collapse;
17
+ },
18
+ exclude: function() {
19
+ return exclude;
20
+ },
21
+ expand: function() {
22
+ return expand;
23
+ },
24
+ get: function() {
25
+ return get;
26
+ },
27
+ getx: function() {
28
+ return getx;
29
+ },
30
+ has: function() {
31
+ return has;
32
+ },
33
+ hasx: function() {
34
+ return hasx;
35
+ },
36
+ keys: function() {
37
+ return keys;
38
+ },
39
+ mask: function() {
40
+ return mask;
41
+ },
42
+ merge: function() {
43
+ return merge;
44
+ },
45
+ pairs: function() {
46
+ return pairs;
47
+ },
48
+ query: function() {
49
+ return query;
50
+ },
51
+ set: function() {
52
+ return set;
53
+ },
54
+ setx: function() {
55
+ return setx;
56
+ },
57
+ tag: function() {
58
+ return tag;
59
+ },
60
+ values: function() {
61
+ return values;
62
+ }
63
+ });
64
+ const _function = require("./function");
65
+ const _type = require("./type");
66
+ const _value = require("./value");
67
+ var assign, collapse, exclude, expand, get, getx, has, hasx, keys, mask, merge, pairs, query, set, setx, tag, values, indexOf = [].indexOf, splice = [].splice;
68
+ keys = Object.keys;
69
+ values = function(x) {
70
+ var k, results, v;
71
+ results = [];
72
+ for(k in x){
73
+ v = x[k];
74
+ results.push(v);
75
+ }
76
+ return results;
49
77
  };
50
-
51
- exports.pairs = pairs = function (x) {
52
- var k, results, v;
53
- results = [];
54
-
55
- for (k in x) {
56
- v = x[k];
57
- results.push([k, v]);
58
- }
59
-
60
- return results;
78
+ pairs = function(x) {
79
+ var k, results, v;
80
+ results = [];
81
+ for(k in x){
82
+ v = x[k];
83
+ results.push([
84
+ k,
85
+ v
86
+ ]);
87
+ }
88
+ return results;
61
89
  };
62
-
63
- exports.get = get = (0, _function.curry)(function (key, object) {
64
- return object[key];
90
+ get = (0, _function.curry)(function(key, object) {
91
+ return object[key];
65
92
  });
66
- exports.set = set = (0, _function.curry)(function (key, value, object) {
67
- object[key] = value;
68
- return object;
93
+ getx = _function.curry;
94
+ set = (0, _function.curry)(function(key, value, object) {
95
+ object[key] = value;
96
+ return object;
69
97
  });
70
- exports.has = has = (0, _function.curry)(function (p, x) {
71
- return x[p] != null;
98
+ has = (0, _function.curry)(function(p, x) {
99
+ return (x != null ? x[p] : void 0) != null;
72
100
  });
73
- exports.mask = mask = (0, _function.curry)(function (keys, a) {
74
- var b, i, key, len;
75
- b = {};
76
-
77
- for (i = 0, len = keys.length; i < len; i++) {
78
- key = keys[i];
79
- b[key] = a[key];
80
- }
81
-
82
- return b;
101
+ mask = (0, _function.curry)(function(keys, a) {
102
+ var b, i, key, len;
103
+ b = {};
104
+ for(i = 0, len = keys.length; i < len; i++){
105
+ key = keys[i];
106
+ if (a[key] != null) {
107
+ b[key] = a[key];
108
+ }
109
+ }
110
+ return b;
83
111
  });
84
- exports.exclude = exclude = (0, _function.curry)(function (keys, a) {
85
- var b, key, value;
86
- b = {};
87
-
88
- for (key in a) {
89
- value = a[key];
90
-
91
- if (indexOf.call(keys, key) < 0) {
92
- b[key] = value;
112
+ exclude = (0, _function.curry)(function(keys, a) {
113
+ var b, key, value;
114
+ b = {};
115
+ for(key in a){
116
+ value = a[key];
117
+ if (indexOf.call(keys, key) < 0) {
118
+ b[key] = value;
119
+ }
93
120
  }
94
- }
95
-
96
- return b;
121
+ return b;
97
122
  });
98
-
99
- exports.assign = assign = function (target, ...sources) {
100
- return Object.assign(target, ...sources);
123
+ assign = function(target, source) {
124
+ return Object.assign(target, source);
101
125
  };
102
-
103
- exports.merge = merge = function (...objects) {
104
- return Object.assign({}, ...objects);
126
+ merge = function(target, source) {
127
+ return Object.assign({}, target, source);
105
128
  };
106
-
107
- exports.query = query = (0, _function.curry)(function (example, target) {
108
- var k, v;
109
-
110
- if ((0, _type.isObject)(example) && (0, _type.isObject)(target)) {
111
- for (k in example) {
112
- v = example[k];
113
-
114
- if (!query(v, target[k])) {
115
- return false;
116
- }
129
+ query = (0, _function.curry)(function(example, target) {
130
+ var k, v;
131
+ if ((0, _type.isObject)(example) && (0, _type.isObject)(target)) {
132
+ for(k in example){
133
+ v = example[k];
134
+ if (!query(v, target[k])) {
135
+ return false;
136
+ }
137
+ }
138
+ return true;
139
+ } else {
140
+ return (0, _value.equal)(example, target);
141
+ }
142
+ });
143
+ tag = (0, _function.curry)(function(key, value) {
144
+ return {
145
+ [key]: value
146
+ };
147
+ });
148
+ collapse = (0, _function.curry)(function({ prefix, delimiter }, object) {
149
+ var key, qkey, result, value;
150
+ if (delimiter == null) {
151
+ delimiter = ".";
152
+ }
153
+ result = {};
154
+ for(key in object){
155
+ value = object[key];
156
+ qkey = prefix != null ? `${prefix}${delimiter}${key}` : key;
157
+ if ((0, _type.isObject)(value)) {
158
+ Object.assign(result, collapse({
159
+ prefix: qkey,
160
+ delimiter
161
+ }, value));
162
+ } else {
163
+ result[qkey] = value;
164
+ }
165
+ }
166
+ return result;
167
+ });
168
+ expand = (0, _function.curry)(function({ delimiter }, object) {
169
+ var current, i, key, last, len, ref, result, subkey, value;
170
+ if (delimiter == null) {
171
+ delimiter = ".";
172
+ }
173
+ result = {};
174
+ for(key in object){
175
+ value = object[key];
176
+ ref = key.split(delimiter), [...keys] = ref, [last] = splice.call(keys, -1);
177
+ current = result;
178
+ for(i = 0, len = keys.length; i < len; i++){
179
+ subkey = keys[i];
180
+ current = current[subkey] != null ? current[subkey] : current[subkey] = {};
181
+ }
182
+ current[last] = value;
183
+ }
184
+ return result;
185
+ });
186
+ getx = (0, _function.curry)(function(key, object) {
187
+ if (object != null) {
188
+ if ((0, _type.isArray)(key)) {
189
+ return function({ first, rest }) {
190
+ [first, ...rest] = key;
191
+ if (rest.length > 0) {
192
+ if (object[first] != null) {
193
+ return getx(rest, object[first]);
194
+ }
195
+ } else {
196
+ return object[first];
197
+ }
198
+ }({});
199
+ } else {
200
+ return getx(key.split("."), object);
201
+ }
202
+ }
203
+ });
204
+ setx = (0, _function.curry)(function(key, value, object) {
205
+ if (object != null) {
206
+ if ((0, _type.isArray)(key)) {
207
+ return function({ first, last, target }) {
208
+ var rest;
209
+ [first, ...rest] = key;
210
+ if (rest.length > 0) {
211
+ if (object[first] == null) {
212
+ object[first] = {};
213
+ }
214
+ return setx(rest, value, object[first]);
215
+ } else {
216
+ return object[first] = value;
217
+ }
218
+ }({});
219
+ } else {
220
+ return setx(key.split("."), value, object);
221
+ }
117
222
  }
118
-
119
- return true;
120
- } else {
121
- return (0, _value.equal)(example, target);
122
- }
123
223
  });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9vYmplY3QuY29mZmVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBLE1BQUE7QUFBQSxJQUFBLE9BQUE7QUFBQSxJQUFBLEdBQUE7QUFBQSxJQUFBLEdBQUE7QUFBQSxJQUFBLElBQUE7QUFBQSxJQUFBLElBQUE7QUFBQSxJQUFBLEtBQUE7QUFBQSxJQUFBLEtBQUE7QUFBQSxJQUFBLEtBQUE7QUFBQSxJQUFBLEdBQUE7QUFBQSxJQUFBLE1BQUE7QUFBQSxJQUFBLE9BQUEsR0FBQSxHQUFBLE9BQUE7Ozs7Ozs7Ozs7OztBQUlBLGVBQUEsSUFBQSxHQUFPLE1BQU0sQ0FBQyxJQUFkOztBQUVBLGlCQUFBLE1BQUEsR0FBUyxVQUFBLENBQUEsRUFBQTtBQUFNLE1BQUEsQ0FBQSxFQUFBLE9BQUEsRUFBQSxDQUFBO0FBQUMsRUFBQSxPQUFBLEdBQUEsRUFBQTs7QUFBQSxPQUFBLENBQUEsSUFBQSxDQUFBLEVBQUE7O2lCQUFBLEM7QUFBQTs7O0FBQVAsQ0FBVDs7QUFFQSxnQkFBQSxLQUFBLEdBQVEsVUFBQSxDQUFBLEVBQUE7QUFBTSxNQUFBLENBQUEsRUFBQSxPQUFBLEVBQUEsQ0FBQTtBQUFDLEVBQUEsT0FBQSxHQUFBLEVBQUE7O0FBQUEsT0FBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOztpQkFBQSxDQUFBLENBQUEsRUFBQSxDQUFBLEM7QUFBQTs7O0FBQVAsQ0FBUjs7QUFFQSxjQUFBLEdBQUEsR0FBTSxxQkFBTSxVQUFBLEdBQUEsRUFBQSxNQUFBLEVBQUE7U0FBaUIsTUFBTSxDQUFBLEdBQUEsQztBQUE3QixDQUFBLENBQU47QUFFQSxjQUFBLEdBQUEsR0FBTSxxQkFBTSxVQUFBLEdBQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxFQUFBO0FBQ1YsRUFBQSxNQUFNLENBQU4sR0FBTSxDQUFOLEdBQWMsS0FBZDtTQUNBLE07QUFGSSxDQUFBLENBQU47QUFJQSxjQUFBLEdBQUEsR0FBTSxxQkFBTSxVQUFBLENBQUEsRUFBQSxDQUFBLEVBQUE7U0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLElBQUEsSTtBQUFoQixDQUFBLENBQU47QUFFQSxlQUFBLElBQUEsR0FBTyxxQkFBTSxVQUFBLElBQUEsRUFBQSxDQUFBLEVBQUE7QUFDYixNQUFBLENBQUEsRUFBQSxDQUFBLEVBQUEsR0FBQSxFQUFBLEdBQUE7QUFBRSxFQUFBLENBQUEsR0FBSSxFQUFKOztBQUNBLE9BQUEsQ0FBQSxHQUFBLENBQUEsRUFBQSxHQUFBLEdBQUEsSUFBQSxDQUFBLE1BQUEsRUFBQSxDQUFBLEdBQUEsR0FBQSxFQUFBLENBQUEsRUFBQSxFQUFBOztBQUFBLElBQUEsQ0FBQyxDQUFELEdBQUMsQ0FBRCxHQUFTLENBQUMsQ0FBQSxHQUFBLENBQVY7QUFBQTs7U0FDQSxDO0FBSEssQ0FBQSxDQUFQO0FBS0Esa0JBQUEsT0FBQSxHQUFVLHFCQUFNLFVBQUEsSUFBQSxFQUFBLENBQUEsRUFBQTtBQUNoQixNQUFBLENBQUEsRUFBQSxHQUFBLEVBQUEsS0FBQTtBQUFFLEVBQUEsQ0FBQSxHQUFJLEVBQUo7O0FBQ0EsT0FBQSxHQUFBLElBQUEsQ0FBQSxFQUFBOzs7cUJBQW1ELEksRUFBWCxHLElBQUEsQyxFQUFBO0FBQXhDLE1BQUEsQ0FBQyxDQUFELEdBQUMsQ0FBRCxHQUFTLEtBQVQ7O0FBQUE7O1NBQ0EsQztBQUhRLENBQUEsQ0FBVjs7QUFLQSxpQkFBQSxNQUFBLEdBQVMsVUFBQSxNQUFBLEVBQUEsR0FBQSxPQUFBLEVBQUE7U0FBd0IsTUFBTSxDQUFOLE1BQUEsQ0FBQSxNQUFBLEVBQXNCLEdBQXRCLE9BQUEsQztBQUF4QixDQUFUOztBQUVBLGdCQUFBLEtBQUEsR0FBUSxVQUFBLEdBQUEsT0FBQSxFQUFBO1NBQWdCLE1BQU0sQ0FBTixNQUFBLENBQUEsRUFBQSxFQUFrQixHQUFsQixPQUFBLEM7QUFBaEIsQ0FBUjs7QUFFQSxnQkFBQSxLQUFBLEdBQVEscUJBQU0sVUFBQSxPQUFBLEVBQUEsTUFBQSxFQUFBO0FBQ2QsTUFBQSxDQUFBLEVBQUEsQ0FBQTs7QUFBRSxNQUFJLG9CQUFELE9BQUMsQ0FBRCxJQUF1QixvQkFBMUIsTUFBMEIsQ0FBMUIsRUFBQTtBQUNFLFNBQUEsQ0FBQSxJQUFBLE9BQUEsRUFBQTs7O1VBQXlCLENBQUMsS0FBQSxDQUFBLENBQUEsRUFBUyxNQUFNLENBQWYsQ0FBZSxDQUFmLEMsRUFBQTtBQUN4QixlQUFPLEtBQVA7O0FBREY7O1dBREYsSTtBQUFBLEdBQUEsTUFBQTtXQUtFLGtCQUFBLE9BQUEsRUFMRixNQUtFLEM7O0FBTkksQ0FBQSxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjdXJyeX0gZnJvbSBcIi4vZnVuY3Rpb25cIlxuaW1wb3J0IHtpc09iamVjdCwgaXNBcnJheSwgaXNGdW5jdGlvbiwgaXNSZWdFeHB9IGZyb20gXCIuL3R5cGVcIlxuaW1wb3J0IHsgZXF1YWwsIGNsb25lIH0gZnJvbSBcIi4vdmFsdWVcIlxuXG5rZXlzID0gT2JqZWN0LmtleXNcblxudmFsdWVzID0gKHgpIC0+IHYgZm9yIGssIHYgb2YgeFxuXG5wYWlycyA9ICh4KSAtPiBbaywgdl0gZm9yIGssIHYgb2YgeFxuXG5nZXQgPSBjdXJyeSAoa2V5LCBvYmplY3QpIC0+IG9iamVjdFtrZXldXG5cbnNldCA9IGN1cnJ5IChrZXksIHZhbHVlLCBvYmplY3QpIC0+XG4gIG9iamVjdFtrZXldID0gdmFsdWVcbiAgb2JqZWN0XG5cbmhhcyA9IGN1cnJ5IChwLCB4KSAtPiB4W3BdP1xuXG5tYXNrID0gY3VycnkgKGtleXMsIGEpIC0+XG4gIGIgPSB7fVxuICBiW2tleV0gPSBhW2tleV0gZm9yIGtleSBpbiBrZXlzXG4gIGJcblxuZXhjbHVkZSA9IGN1cnJ5IChrZXlzLCBhKSAtPlxuICBiID0ge31cbiAgYltrZXldID0gdmFsdWUgZm9yIGtleSwgdmFsdWUgb2YgYSB3aGVuIGtleSBub3QgaW4ga2V5c1xuICBiXG5cbmFzc2lnbiA9ICh0YXJnZXQsIHNvdXJjZXMuLi4pIC0+IE9iamVjdC5hc3NpZ24gdGFyZ2V0LCBzb3VyY2VzLi4uXG5cbm1lcmdlID0gKG9iamVjdHMuLi4pIC0+IE9iamVjdC5hc3NpZ24ge30sIG9iamVjdHMuLi5cblxucXVlcnkgPSBjdXJyeSAoZXhhbXBsZSwgdGFyZ2V0KSAtPlxuICBpZiAoaXNPYmplY3QgZXhhbXBsZSkgJiYgKGlzT2JqZWN0IHRhcmdldClcbiAgICBmb3IgaywgdiBvZiBleGFtcGxlIHdoZW4gIXF1ZXJ5IHYsIHRhcmdldFtrXVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgdHJ1ZVxuICBlbHNlXG4gICAgZXF1YWwgZXhhbXBsZSwgdGFyZ2V0XG5cbmV4cG9ydCB7XG4gIGtleXNcbiAgdmFsdWVzXG4gIHBhaXJzXG4gIGdldFxuICBzZXRcbiAgaGFzXG4gIG1hc2tcbiAgZXhjbHVkZVxuICBhc3NpZ25cbiAgbWVyZ2VcbiAgcXVlcnlcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
125
- //# sourceURL=src/object.coffee
224
+ hasx = (0, _function.curry)(function(key, target) {
225
+ return getx(key, target) != null;
226
+ });
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS9qb3kvc3JjL29iamVjdC5jb2ZmZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBQSxNQUFBLEVBQUEsUUFBQSxFQUFBLE9BQUEsRUFBQSxNQUFBLEVBQUEsR0FBQSxFQUFBLElBQUEsRUFBQSxHQUFBLEVBQUEsSUFBQSxFQUFBLElBQUEsRUFBQSxJQUFBLEVBQUEsS0FBQSxFQUFBLEtBQUEsRUFBQSxLQUFBLEVBQUEsR0FBQSxFQUFBLElBQUEsRUFBQSxHQUFBLEVBQUEsTUFBQTtFQUFBOzs7QUFBQSxPQUFBO0VBQVMsS0FBVDtDQUFBLE1BQUE7O0FBQ0EsT0FBQTtFQUFTLFFBQVQ7RUFBbUIsT0FBbkI7RUFBNEIsVUFBNUI7RUFBd0MsUUFBeEM7Q0FBQSxNQUFBOztBQUNBLE9BQUE7RUFBUyxLQUFUO0VBQWdCLEtBQWhCO0NBQUEsTUFBQTs7QUFFQSxJQUFBLEdBQU8sTUFBTSxDQUFDOztBQUVkLE1BQUEsR0FBUyxRQUFBLENBQUUsQ0FBRixDQUFBO0FBQVEsTUFBQSxDQUFBLEVBQUEsT0FBQSxFQUFBO0FBQUM7RUFBQSxLQUFBLE1BQUE7O2lCQUFBO0VBQUEsQ0FBQTs7QUFBVDs7QUFFVCxLQUFBLEdBQVEsUUFBQSxDQUFFLENBQUYsQ0FBQTtBQUFRLE1BQUEsQ0FBQSxFQUFBLE9BQUEsRUFBQTtBQUFDO0VBQUEsS0FBQSxNQUFBOztpQkFBQSxDQUFFLENBQUYsRUFBSyxDQUFMO0VBQUEsQ0FBQTs7QUFBVDs7QUFFUixHQUFBLEdBQU0sS0FBQSxDQUFNLFFBQUEsQ0FBRSxHQUFGLEVBQU8sTUFBUCxDQUFBO1NBQW1CLE1BQU0sQ0FBRSxHQUFGO0FBQXpCLENBQU47O0FBRU4sSUFBQSxHQUFPOztBQUVQLEdBQUEsR0FBTSxLQUFBLENBQU0sUUFBQSxDQUFFLEdBQUYsRUFBTyxLQUFQLEVBQWMsTUFBZCxDQUFBO0VBQ1YsTUFBTSxDQUFFLEdBQUYsQ0FBTixHQUFnQjtTQUNo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LEdBQWMsQ0FBakI7O1lBQ0UsTUFBTSxDQUFFLEtBQUYsSUFBYSxDQUFBOztpQkFDbkIsSUFBQSxDQUFLLElBQUwsRUFBVyxLQUFYLEVBQWtCLE1BQU0sQ0FBRSxLQUFGLENBQXhCLEVBRkY7U0FBQSxNQUFBO2lCQUlFLE1BQU0sQ0FBRSxLQUFGLENBQU4sR0FBa0IsTUFKcEI7O01BRkMsQ0FBQSxFQUEyQixDQUFBLEdBRGhDO0tBQUEsTUFBQTthQVNFLElBQUEsQ0FBTyxHQUFHLENBQUMsS0FBSixDQUFVLEdBQVYsQ0FBUCxFQUF3QixLQUF4QixFQUErQixNQUEvQixFQVRGO0tBREY7O0FBRFcsQ0FBTjs7QUFhUCxJQUFBLEdBQU8sS0FBQSxDQUFNLFFBQUEsQ0FBRSxHQUFGLEVBQU8sTUFBUCxDQUFBO1NBQ1g7QUFEVyxDQUFOOztBQUdQLE9BQUE7RUFDRSxJQURGO0VBRUUsTUFGRjtFQUdFLEtBSEY7RUFJRSxHQUpGO0VBS0UsR0FMRjtFQU1FLEdBTkY7RUFPRSxJQVBGO0VBUUUsT0FSRjtFQVNFLE1BVEY7RUFVRSxLQVZGO0VBV0UsS0FYRjtFQVlFLEdBWkY7RUFhRSxNQWJGO0VBY0UsUUFkRjtFQWVFLElBZkY7RUFnQkUsSUFoQkY7RUFpQkUsSUFqQkYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjdXJyeSB9IGZyb20gXCIuL2Z1bmN0aW9uXCJcbmltcG9ydCB7IGlzT2JqZWN0LCBpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc1JlZ0V4cCB9IGZyb20gXCIuL3R5cGVcIlxuaW1wb3J0IHsgZXF1YWwsIGNsb25lIH0gZnJvbSBcIi4vdmFsdWVcIlxuXG5rZXlzID0gT2JqZWN0LmtleXNcblxudmFsdWVzID0gKCB4ICkgLT4gdiBmb3IgaywgdiBvZiB4XG5cbnBhaXJzID0gKCB4ICkgLT4gWyBrLCB2IF0gZm9yIGssIHYgb2YgeFxuXG5nZXQgPSBjdXJyeSAoIGtleSwgb2JqZWN0ICkgLT4gb2JqZWN0WyBrZXkgXVxuXG5nZXR4ID0gY3VycnkgXG5cbnNldCA9IGN1cnJ5ICgga2V5LCB2YWx1ZSwgb2JqZWN0ICkgLT5cbiAgb2JqZWN0WyBrZXkgXSA9IHZhbHVlXG4gIG9iamVjdFxuXG5oYXMgPSBjdXJyeSAocCwgeCkgLT4geD9bIHAgXT9cblxubWFzayA9IGN1cnJ5ICgga2V5cywgYSApIC0+XG4gIGIgPSB7fVxuICBiWyBrZXkgXSA9IGFbIGtleSBdIGZvciBrZXkgaW4ga2V5cyB3aGVuIGFbIGtleSBdP1xuICBiXG5cbmV4Y2x1ZGUgPSBjdXJyeSAoIGtleXMsIGEgKSAtPlxuICBiID0ge31cbiAgYlsga2V5IF0gPSB2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBvZiBhIHdoZW4ga2V5IG5vdCBpbiBrZXlzXG4gIGJcblxuYXNzaWduID0gKCB0YXJnZXQsIHNvdXJjZSApIC0+IE9iamVjdC5hc3NpZ24gdGFyZ2V0LCBzb3VyY2VcblxubWVyZ2UgPSAoIHRhcmdldCwgc291cmNlICkgLT4gT2JqZWN0LmFzc2lnbiB7fSwgdGFyZ2V0LCBzb3VyY2VcblxucXVlcnkgPSBjdXJyeSAoIGV4YW1wbGUsIHRhcmdldCApIC0+XG4gIGlmIChpc09iamVjdCBleGFtcGxlKSAmJiAoaXNPYmplY3QgdGFyZ2V0KVxuICAgIGZvciBrLCB2IG9mIGV4YW1wbGUgd2hlbiAhcXVlcnkgdiwgdGFyZ2V0W2tdXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB0cnVlXG4gIGVsc2VcbiAgICBlcXVhbCBleGFtcGxlLCB0YXJnZXRcblxudGFnID0gY3VycnkgKCBrZXksIHZhbHVlICkgLT4gWyBrZXkgXTogdmFsdWVcblxuY29sbGFwc2UgPSBjdXJyeSAoeyBwcmVmaXgsIGRlbGltaXRlciB9LCBvYmplY3QgKSAtPlxuICBkZWxpbWl0ZXIgPz0gXCIuXCJcbiAgcmVzdWx0ID0ge31cbiAgZm9yIGtleSwgdmFsdWUgb2Ygb2JqZWN0XG4gICAgcWtleSA9IGlmIHByZWZpeD8gdGhlbiBcIiN7IHByZWZpeCB9I3sgZGVsaW1pdGVyIH0jeyBrZXkgfVwiIGVsc2Uga2V5XG4gICAgaWYgaXNPYmplY3QgdmFsdWVcbiAgICAgIE9iamVjdC5hc3NpZ24gcmVzdWx0LCBcbiAgICAgICAgY29sbGFwc2UgeyBwcmVmaXg6IHFrZXksIGRlbGltaXRlciB9LCB2YWx1ZVxuICAgIGVsc2VcbiAgICAgIHJlc3VsdFsgcWtleSBdID0gdmFsdWVcbiAgcmVzdWx0XG5cbmV4cGFuZCA9IGN1cnJ5ICh7IGRlbGltaXRlciB9LCBvYmplY3QgKSAtPlxuICBkZWxpbWl0ZXIgPz0gXCIuXCJcbiAgcmVzdWx0ID0ge31cbiAgZm9yIGtleSwgdmFsdWUgb2Ygb2JqZWN0XG4gICAgWyBrZXlzLi4uLCBsYXN0IF0gPSBrZXkuc3BsaXQgZGVsaW1pdGVyXG4gICAgY3VycmVudCA9IHJlc3VsdFxuICAgIGZvciBzdWJrZXkgaW4ga2V5c1xuICAgICAgY3VycmVudCA9ICggY3VycmVudFsgc3Via2V5IF0gPz0ge30gKVxuICAgIGN1cnJlbnRbIGxhc3QgXSA9IHZhbHVlXG4gIHJlc3VsdFxuXG5nZXR4ID0gY3VycnkgKCBrZXksIG9iamVjdCApIC0+XG4gIGlmIG9iamVjdD9cbiAgICBpZiAoIGlzQXJyYXkga2V5IClcbiAgICAgIGRvICh7IGZpcnN0LCByZXN0IH0gPSB7fSkgLT5cbiAgICAgICAgWyBmaXJzdCwgcmVzdC4uLiBdID0ga2V5XG4gICAgICAgIGlmIHJlc3QubGVuZ3RoID4gMFxuICAgICAgICAgIGlmIG9iamVjdFsgZmlyc3QgXT9cbiAgICAgICAgICAgIGdldHggcmVzdCwgb2JqZWN0WyBmaXJzdCBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBvYmplY3RbIGZpcnN0IF1cbiAgICBlbHNlXG4gICAgICBnZXR4ICgga2V5LnNwbGl0IFwiLlwiICksIG9iamVjdFxuXG5zZXR4ID0gY3VycnkgKCBrZXksIHZhbHVlLCBvYmplY3QgKSAtPlxuICBpZiBvYmplY3Q/XG4gICAgaWYgKCBpc0FycmF5IGtleSApXG4gICAgICBkbyAoeyBmaXJzdCwgbGFzdCwgdGFyZ2V0IH0gPSB7fSkgLT5cbiAgICAgICAgWyBmaXJzdCwgcmVzdC4uLiBdID0ga2V5XG4gICAgICAgIGlmIHJlc3QubGVuZ3RoID4gMFxuICAgICAgICAgIG9iamVjdFsgZmlyc3QgXSA/PSB7fVxuICAgICAgICAgIHNldHggcmVzdCwgdmFsdWUsIG9iamVjdFsgZmlyc3QgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgb2JqZWN0WyBmaXJzdCBdID0gdmFsdWVcbiAgICBlbHNlXG4gICAgICBzZXR4ICgga2V5LnNwbGl0IFwiLlwiICksIHZhbHVlLCBvYmplY3RcblxuaGFzeCA9IGN1cnJ5ICgga2V5LCB0YXJnZXQgKSAtPlxuICAoIGdldHgga2V5LCB0YXJnZXQgKT9cblxuZXhwb3J0IHtcbiAga2V5c1xuICB2YWx1ZXNcbiAgcGFpcnNcbiAgZ2V0XG4gIHNldFxuICBoYXNcbiAgbWFza1xuICBleGNsdWRlXG4gIGFzc2lnblxuICBtZXJnZVxuICBxdWVyeVxuICB0YWdcbiAgZXhwYW5kXG4gIGNvbGxhcHNlXG4gIGdldHhcbiAgc2V0eFxuICBoYXN4XG59XG4iXX0=
228
+ //# sourceURL=/@dashkite/joy/src/object.coffee
229
+
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9AZGFzaGtpdGUvam95L3NyYy9vYmplY3QuY29mZmVlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGN1cnJ5IH0gZnJvbSBcIi4vZnVuY3Rpb25cIlxuaW1wb3J0IHsgaXNPYmplY3QsIGlzQXJyYXksIGlzRnVuY3Rpb24sIGlzUmVnRXhwIH0gZnJvbSBcIi4vdHlwZVwiXG5pbXBvcnQgeyBlcXVhbCwgY2xvbmUgfSBmcm9tIFwiLi92YWx1ZVwiXG5cbmtleXMgPSBPYmplY3Qua2V5c1xuXG52YWx1ZXMgPSAoIHggKSAtPiB2IGZvciBrLCB2IG9mIHhcblxucGFpcnMgPSAoIHggKSAtPiBbIGssIHYgXSBmb3IgaywgdiBvZiB4XG5cbmdldCA9IGN1cnJ5ICgga2V5LCBvYmplY3QgKSAtPiBvYmplY3RbIGtleSBdXG5cbmdldHggPSBjdXJyeSBcblxuc2V0ID0gY3VycnkgKCBrZXksIHZhbHVlLCBvYmplY3QgKSAtPlxuICBvYmplY3RbIGtleSBdID0gdmFsdWVcbiAgb2JqZWN0XG5cbmhhcyA9IGN1cnJ5IChwLCB4KSAtPiB4P1sgcCBdP1xuXG5tYXNrID0gY3VycnkgKCBrZXlzLCBhICkgLT5cbiAgYiA9IHt9XG4gIGJbIGtleSBdID0gYVsga2V5IF0gZm9yIGtleSBpbiBrZXlzIHdoZW4gYVsga2V5IF0/XG4gIGJcblxuZXhjbHVkZSA9IGN1cnJ5ICgga2V5cywgYSApIC0+XG4gIGIgPSB7fVxuICBiWyBrZXkgXSA9IHZhbHVlIGZvciBrZXksIHZhbHVlIG9mIGEgd2hlbiBrZXkgbm90IGluIGtleXNcbiAgYlxuXG5hc3NpZ24gPSAoIHRhcmdldCwgc291cmNlICkgLT4gT2JqZWN0LmFzc2lnbiB0YXJnZXQsIHNvdXJjZVxuXG5tZXJnZSA9ICggdGFyZ2V0LCBzb3VyY2UgKSAtPiBPYmplY3QuYXNzaWduIHt9LCB0YXJnZXQsIHNvdXJjZVxuXG5xdWVyeSA9IGN1cnJ5ICggZXhhbXBsZSwgdGFyZ2V0ICkgLT5cbiAgaWYgKGlzT2JqZWN0IGV4YW1wbGUpICYmIChpc09iamVjdCB0YXJnZXQpXG4gICAgZm9yIGssIHYgb2YgZXhhbXBsZSB3aGVuICFxdWVyeSB2LCB0YXJnZXRba11cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIHRydWVcbiAgZWxzZVxuICAgIGVxdWFsIGV4YW1wbGUsIHRhcmdldFxuXG50YWcgPSBjdXJyeSAoIGtleSwgdmFsdWUgKSAtPiBbIGtleSBdOiB2YWx1ZVxuXG5jb2xsYXBzZSA9IGN1cnJ5ICh7IHByZWZpeCwgZGVsaW1pdGVyIH0sIG9iamVjdCApIC0+XG4gIGRlbGltaXRlciA/PSBcIi5cIlxuICByZXN1bHQgPSB7fVxuICBmb3Iga2V5LCB2YWx1ZSBvZiBvYmplY3RcbiAgICBxa2V5ID0gaWYgcHJlZml4PyB0aGVuIFwiI3sgcHJlZml4IH0jeyBkZWxpbWl0ZXIgfSN7IGtleSB9XCIgZWxzZSBrZXlcbiAgICBpZiBpc09iamVjdCB2YWx1ZVxuICAgICAgT2JqZWN0LmFzc2lnbiByZXN1bHQsIFxuICAgICAgICBjb2xsYXBzZSB7IHByZWZpeDogcWtleSwgZGVsaW1pdGVyIH0sIHZhbHVlXG4gICAgZWxzZVxuICAgICAgcmVzdWx0WyBxa2V5IF0gPSB2YWx1ZVxuICByZXN1bHRcblxuZXhwYW5kID0gY3VycnkgKHsgZGVsaW1pdGVyIH0sIG9iamVjdCApIC0+XG4gIGRlbGltaXRlciA/PSBcIi5cIlxuICByZXN1bHQgPSB7fVxuICBmb3Iga2V5LCB2YWx1ZSBvZiBvYmplY3RcbiAgICBbIGtleXMuLi4sIGxhc3QgXSA9IGtleS5zcGxpdCBkZWxpbWl0ZXJcbiAgICBjdXJyZW50ID0gcmVzdWx0XG4gICAgZm9yIHN1YmtleSBpbiBrZXlzXG4gICAgICBjdXJyZW50ID0gKCBjdXJyZW50WyBzdWJrZXkgXSA/PSB7fSApXG4gICAgY3VycmVudFsgbGFzdCBdID0gdmFsdWVcbiAgcmVzdWx0XG5cbmdldHggPSBjdXJyeSAoIGtleSwgb2JqZWN0ICkgLT5cbiAgaWYgb2JqZWN0P1xuICAgIGlmICggaXNBcnJheSBrZXkgKVxuICAgICAgZG8gKHsgZmlyc3QsIHJlc3QgfSA9IHt9KSAtPlxuICAgICAgICBbIGZpcnN0LCByZXN0Li4uIF0gPSBrZXlcbiAgICAgICAgaWYgcmVzdC5sZW5ndGggPiAwXG4gICAgICAgICAgaWYgb2JqZWN0WyBmaXJzdCBdP1xuICAgICAgICAgICAgZ2V0eCByZXN0LCBvYmplY3RbIGZpcnN0IF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIG9iamVjdFsgZmlyc3QgXVxuICAgIGVsc2VcbiAgICAgIGdldHggKCBrZXkuc3BsaXQgXCIuXCIgKSwgb2JqZWN0XG5cbnNldHggPSBjdXJyeSAoIGtleSwgdmFsdWUsIG9iamVjdCApIC0+XG4gIGlmIG9iamVjdD9cbiAgICBpZiAoIGlzQXJyYXkga2V5IClcbiAgICAgIGRvICh7IGZpcnN0LCBsYXN0LCB0YXJnZXQgfSA9IHt9KSAtPlxuICAgICAgICBbIGZpcnN0LCByZXN0Li4uIF0gPSBrZXlcbiAgICAgICAgaWYgcmVzdC5sZW5ndGggPiAwXG4gICAgICAgICAgb2JqZWN0WyBmaXJzdCBdID89IHt9XG4gICAgICAgICAgc2V0eCByZXN0LCB2YWx1ZSwgb2JqZWN0WyBmaXJzdCBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBvYmplY3RbIGZpcnN0IF0gPSB2YWx1ZVxuICAgIGVsc2VcbiAgICAgIHNldHggKCBrZXkuc3BsaXQgXCIuXCIgKSwgdmFsdWUsIG9iamVjdFxuXG5oYXN4ID0gY3VycnkgKCBrZXksIHRhcmdldCApIC0+XG4gICggZ2V0eCBrZXksIHRhcmdldCApP1xuXG5leHBvcnQge1xuICBrZXlzXG4gIHZhbHVlc1xuICBwYWlyc1xuICBnZXRcbiAgc2V0XG4gIGhhc1xuICBtYXNrXG4gIGV4Y2x1ZGVcbiAgYXNzaWduXG4gIG1lcmdlXG4gIHF1ZXJ5XG4gIHRhZ1xuICBleHBhbmRcbiAgY29sbGFwc2VcbiAgZ2V0eFxuICBzZXR4XG4gIGhhc3hcbn1cbiJdLCJuYW1lcyI6WyJhc3NpZ24iLCJjb2xsYXBzZSIsImV4Y2x1ZGUiLCJleHBhbmQiLCJnZXQiLCJnZXR4IiwiaGFzIiwiaGFzeCIsImtleXMiLCJtYXNrIiwibWVyZ2UiLCJwYWlycyIsInF1ZXJ5Iiwic2V0Iiwic2V0eCIsInRhZyIsInZhbHVlcyIsImluZGV4T2YiLCJPYmplY3QiLCJ4IiwiayIsInJlc3VsdHMiLCJ2IiwiY3VycnkiLCJrZXkiLCJvYmplY3QiLCJ2YWx1ZSIsInAiLCJhIiwiYiIsImkiLCJsZW4iLCJsZW5ndGgiLCJ0YXJnZXQiLCJzb3VyY2UiLCJleGFtcGxlIiwiaXNPYmplY3QiLCJlcXVhbCIsInByZWZpeCIsImRlbGltaXRlciIsInFrZXkiLCJyZXN1bHQiLCJjdXJyZW50IiwibGFzdCIsInJlZiIsInN1YmtleSIsInNwbGl0Iiwic3BsaWNlIiwiY2FsbCIsImlzQXJyYXkiLCJmaXJzdCIsInJlc3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBeUdFQSxNQVRGO2VBU0VBOztJQUtBQyxRQWRGO2VBY0VBOztJQU5BQyxPQVJGO2VBUUVBOztJQUtBQyxNQWJGO2VBYUVBOztJQVRBQyxHQUpGO2VBSUVBOztJQVdBQyxJQWZGO2VBZUVBOztJQVRBQyxHQU5GO2VBTUVBOztJQVdBQyxJQWpCRjtlQWlCRUE7O0lBaEJBQyxJQURGO2VBQ0VBOztJQU1BQyxJQVBGO2VBT0VBOztJQUdBQyxLQVZGO2VBVUVBOztJQVBBQyxLQUhGO2VBR0VBOztJQVFBQyxLQVhGO2VBV0VBOztJQU5BQyxHQUxGO2VBS0VBOztJQVdBQyxJQWhCRjtlQWdCRUE7O0lBSkFDLEdBWkY7ZUFZRUE7O0lBVkFDLE1BRkY7ZUFFRUE7OzswQkFsR0Y7c0JBQ0E7dUJBQ0E7QUFGQSxJQUFBaEIsUUFBQUMsVUFBQUMsU0FBQUMsUUFBQUMsS0FBQUMsTUFBQUMsS0FBQUMsTUFBQUMsTUFBQUMsTUFBQUMsT0FBQUMsT0FBQUMsT0FBQUMsS0FBQUMsTUFBQUMsS0FBQUMsUUFBQUMsVUFBQSxFQUFBLENBQUFBLE9BQUE7QUFJQVQsT0FBT1UsT0FBT1YsSUFBQTtBQUVkUSxTQUFTLFNBQUVHLENB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