@dashkite/joy 0.3.16 → 0.5.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,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QTs7QUFBRSxNQUFJLG9CQUFELE9BQUMsQ0FBRCxJQUF1QixvQkFBMUIsTUFBMEIsQ0FBMUIsRUFBQTtBQUNFLFNBQUEsQ0FBQSxJQUFBLE9BQUEsRUFBQTs7O1VBQXlCLENBQUMsS0FBQSxDQUFBLENBQUEsRUFBUyxNQUFNLENBQWYsQ0FBZSxDQUFmLEMsRUFBQTtBQUN4QixlQUFPLEtBQVA7O0FBREY7O1dBREYsSTtBQUFBLEdBQUEsTUFBQTtXQUtFLGtCQUFBLE9BQUEsRUFMRixNQUtFLEM7O0FBTkksQ0FBQSxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjdXJyeX0gZnJvbSBcIi4vZnVuY3Rpb25cIlxuaW1wb3J0IHtpc09iamVjdCwgaXNBcnJheSwgaXNGdW5jdGlvbiwgaXNSZWdFeHB9IGZyb20gXCIuL3R5cGVcIlxuaW1wb3J0IHsgZXF1YWwsIGNsb25lIH0gZnJvbSBcIi4vdmFsdWVcIlxuXG5rZXlzID0gT2JqZWN0LmtleXNcblxudmFsdWVzID0gKHgpIC0+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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS9qb3kvc3JjL29iamVjdC5jb2ZmZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBQSxNQUFBLEVBQUEsUUFBQSxFQUFBLE9BQUEsRUFBQSxNQUFBLEVBQUEsR0FBQSxFQUFBLElBQUEsRUFBQSxHQUFBLEVBQUEsSUFBQSxFQUFBLElBQUEsRUFBQSxJQUFBLEVBQUEsS0FBQSxFQUFBLEtBQUEsRUFBQSxLQUFBLEVBQUEsR0FBQSxFQUFBLElBQUEsRUFBQSxHQUFBLEVBQUEsTUFBQTtFQUFBOzs7QUFBQSxPQUFBO0VBQVMsS0FBVDtDQUFBLE1BQUE7O0FBQ0EsT0FBQTtFQUFTLFFBQVQ7RUFBbUIsT0FBbkI7RUFBNEIsVUFBNUI7RUFBd0MsUUFBeEM7Q0FBQSxNQUFBOztBQUNBLE9BQUE7RUFBUyxLQUFUO0VBQWdCLEtBQWhCO0NBQUEsTUFBQTs7QUFFQSxJQUFBLEdBQU8sTUFBTSxDQUFDOztBQUVkLE1BQUEsR0FBUyxRQUFBLENBQUUsQ0FBRixDQUFBO0FBQVEsTUFBQSxDQUFBLEVBQUEsT0FBQSxFQUFBO0FBQUM7RUFBQSxLQUFBLE1BQUE7O2lCQUFBO0VBQUEsQ0FBQTs7QUFBVDs7QUFFVCxLQUFBLEdBQVEsUUFBQSxDQUFFLENBQUYsQ0FBQTtBQUFRLE1BQUEsQ0FBQSxFQUFBLE9BQUEsRUFBQTtBQUFDO0VBQUEsS0FBQSxNQUFBOztpQkFBQSxDQUFFLENBQUYsRUFBSyxDQUFMO0VBQUEsQ0FBQTs7QUFBVDs7QUFFUixHQUFBLEdBQU0sS0FBQSxDQUFNLFFBQUEsQ0FBRSxHQUFGLEVBQU8sTUFBUCxDQUFBO1NBQW1CLE1BQU0sQ0FBRSxHQUFGO0FBQXpCLENBQU47O0FBRU4sSUFBQSxHQUFPOztBQUVQLEdBQUEsR0FBTSxLQUFBLENBQU0sUUFBQSxDQUFFLEdBQUYsRUFBTyxLQUFQLEVBQWMsTUFBZCxDQUFBO0VBQ1YsTUFBTSxDQUFFLEdBQUYsQ0FBTixHQUFnQjtTQUNoQjtBQUZVLENBQU47O0FBSU4sR0FBQSxHQUFNLEtBQUEsQ0FBTSxRQUFBLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBQTtTQUFVO0FBQVYsQ0FBTjs7QUFFTixJQUFBLEdBQU8sS0FBQSxDQUFNLFFBQUEsQ0FBRSxJQUFGLEVBQVEsQ0FBUixDQUFBO0FBQ2IsTUFBQSxDQUFBLEVBQUEsQ0FBQSxFQUFBLEdBQUEsRUFBQTtFQUFFLENBQUEsR0FBSSxDQUFBO0VBQ0osS0FBQSxzQ0FBQTs7UUFBeUM7TUFBekMsQ0FBQyxDQUFFLEdBQUYsQ0FBRCxHQUFXLENBQUMsQ0FBRSxHQUFGOztFQUFaO1NBQ0E7QUFIVyxDQUFOOztBQUtQLE9BQUEsR0FBVSxLQUFBLENBQU0sUUFBQSxDQUFFLElBQUYsRUFBUSxDQUFSLENBQUE7QUFDaEIsTUFBQSxDQUFBLEVBQUEsR0FBQSxFQUFBO0VBQUUsQ0FBQSxHQUFJLENBQUE7RUFDSixLQUFBLFFBQUE7O3FCQUFxRCxNQUFYO01BQTFDLENBQUMsQ0FBRSxHQUFGLENBQUQsR0FBVzs7RUFBWDtTQUNBO0FBSGMsQ0FBTjs7QUFLVixNQUFBLEdBQVMsUUFBQSxDQUFFLE1BQUYsRUFBVSxNQUFWLENBQUE7U0FBc0IsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFkLEVBQXNCLE1BQXRCO0FBQXRCOztBQUVULEtBQUEsR0FBUSxRQUFBLENBQUUsTUFBRixFQUFVLE1BQVYsQ0FBQTtTQUFzQixNQUFNLENBQUMsTUFBUCxDQUFjLENBQUEsQ0FBZCxFQUFrQixNQUFsQixFQUEwQixNQUExQjtBQUF0Qjs7QUFFUixLQUFBLEdBQVEsS0FBQSxDQUFNLFFBQUEsQ0FBRSxPQUFGLEVBQVcsTUFBWCxDQUFBO0FBQ2QsTUFBQSxDQUFBLEVBQUE7RUFBRSxJQUFHLENBQUMsUUFBQSxDQUFTLE9BQVQsQ0FBRCxDQUFBLElBQXNCLENBQUMsUUFBQSxDQUFTLE1BQVQsQ0FBRCxDQUF6QjtJQUNFLEtBQUEsWUFBQTs7VUFBeUIsQ0FBQyxLQUFBLENBQU0sQ0FBTixFQUFTLE1BQU0sQ0FBQyxDQUFELENBQWY7QUFDeEIsZUFBTzs7SUFEVDtXQUVBLEtBSEY7R0FBQSxNQUFBO1dBS0UsS0FBQSxDQUFNLE9BQU4sRUFBZSxNQUFmLEVBTEY7O0FBRFksQ0FBTjs7QUFRUixHQUFBLEdBQU0sS0FBQSxDQUFNLFFBQUEsQ0FBRSxHQUFGLEVBQU8sS0FBUCxDQUFBO1NBQWtCO0lBQUEsQ0FBRSxHQUFGLENBQUEsRUFBUztFQUFUO0FBQWxCLENBQU47O0FBRU4sUUFBQSxHQUFXLEtBQUEsQ0FBTSxRQUFBLENBQUMsQ0FBRSxNQUFGLEVBQVUsU0FBVixDQUFELEVBQXdCLE1BQXhCLENBQUE7QUFDakIsTUFBQSxHQUFBLEVBQUEsSUFBQSxFQUFBLE1BQUEsRUFBQTs7SUFBRSxZQUFhOztFQUNiLE1BQUEsR0FBUyxDQUFBO0VBQ1QsS0FBQSxhQUFBOztJQUNFLElBQUEsR0FBVSxjQUFILEdBQWdCLENBQUEsQ0FBQSxDQUFJLE1BQUosQ0FBQSxDQUFBLENBQWUsU0FBZixDQUFBLENBQUEsQ0FBNkIsR0FBN0IsQ0FBQSxDQUFoQixHQUF5RDtJQUNoRSxJQUFHLFFBQUEsQ0FBUyxLQUFULENBQUg7TUFDRSxNQUFNLENBQUMsTUFBUCxDQUFjLE1BQWQsRUFDRSxRQUFBLENBQVM7UUFBRSxNQUFBLEVBQVEsSUFBVjtRQUFnQjtNQUFoQixDQUFULEVBQXNDLEtBQXRDLENBREYsRUFERjtLQUFBLE1BQUE7TUFJRSxNQUFNLENBQUUsSUFBRixDQUFOLEdBQWlCLE1BSm5COztFQUZGO1NBT0E7QUFWZSxDQUFOOztBQVlYLE1BQUEsR0FBUyxLQUFBLENBQU0sUUFBQSxDQUFDLENBQUUsU0FBRixDQUFELEVBQWdCLE1BQWhCLENBQUE7QUFDZixNQUFBLE9BQUEsRUFBQSxDQUFBLEVBQUEsR0FBQSxFQUFBLElBQUEsRUFBQSxHQUFBLEVBQUEsR0FBQSxFQUFBLE1BQUEsRUFBQSxNQUFBLEVBQUE7O0lBQUUsWUFBYTs7RUFDYixNQUFBLEdBQVMsQ0FBQTtFQUNULEtBQUEsYUFBQTs7SUFDRSxNQUFvQixHQUFHLENBQUMsS0FBSixDQUFVLFNBQVYsQ0FBcEIsR0FBRSxHQUFBLFdBQUYsR0FBVyxvQkFBVDtJQUNGLE9BQUEsR0FBVTtJQUNWLEtBQUEsc0NBQUE7O01BQ0UsT0FBQSxHQUFVLDJCQUFFLE9BQU8sQ0FBRSxNQUFGLElBQVAsT0FBTyxDQUFFLE1BQUYsSUFBYyxDQUFBLENBQXZCO0lBRFo7SUFFQSxPQUFPLENBQUUsSUFBRixDQUFQLEdBQWtCO0VBTHBCO1NBTUE7QUFUYSxDQUFOOztBQVdULElBQUEsR0FBTyxLQUFBLENBQU0sUUFBQSxDQUFFLEdBQUYsRUFBTyxNQUFQLENBQUE7RUFDWCxJQUFHLGNBQUg7SUFDRSxJQUFLLE9BQUEsQ0FBUSxHQUFSLENBQUw7YUFDSyxDQUFBLFFBQUEsQ0FBQyxDQUFFLEtBQUYsRUFBUyxJQUFULENBQUQsQ0FBQTtRQUNELENBQUUsS0FBRixFQUFTLEdBQUEsSUFBVCxDQUFBLEdBQXFCO1FBQ3JCLElBQUcsSUFBSSxDQUFDLE1BQUwsR0FBYyxDQUFqQjtVQUNFLElBQUcscUJBQUg7bUJBQ0UsSUFBQSxDQUFLLElBQUwsRUFBVyxNQUFNLENBQUUsS0FBRixDQUFqQixFQURGO1dBREY7U0FBQSxNQUFBO2lCQUlFLE1BQU0sQ0FBRSxLQUFGLEVBSlI7O01BRkMsQ0FBQSxFQUFtQixDQUFBLEdBRHhCO0tBQUEsTUFBQTthQVNFLElBQUEsQ0FBTyxHQUFHLENBQUMsS0FBSixDQUFVLEdBQVYsQ0FBUCxFQUF3QixNQUF4QixFQVRGO0tBREY7O0FBRFcsQ0FBTjs7QUFhUCxJQUFBLEdBQU8sS0FBQSxDQUFNLFFBQUEsQ0FBRSxHQUFGLEVBQU8sS0FBUCxFQUFjLE1BQWQsQ0FBQTtFQUNYLElBQUcsY0FBSDtJQUNFLElBQUssT0FBQSxDQUFRLEdBQVIsQ0FBTDthQUNLLENBQUEsUUFBQSxDQUFDLENBQUUsS0FBRixFQUFTLElBQVQsRUFBZSxNQUFmLENBQUQsQ0FBQTtBQUNULFlBQUE7UUFBUSxDQUFFLEtBQUYsRUFBUyxHQUFBLElBQVQsQ0FBQSxHQUFxQjtRQUNyQixJQUFHLElBQUksQ0FBQyxNQUFMLEdBQWMsQ0FBakI7O1lBQ0UsTUFBTSxDQUFFLEtBQUYsSUFBYSxDQUFBOztpQkFDbkIsSUFBQSxDQUFLLElBQUwsRUFBVyxLQUFYLEVBQWtCLE1BQU0sQ0FBRSxLQUFGLENBQXhCLEVBRkY7U0FBQSxNQUFBO2lCQUlFLE1BQU0sQ0FBRSxLQUFGLENBQU4sR0FBa0IsTUFKcEI7O01BRkMsQ0FBQSxFQUEyQixDQUFBLEdBRGhDO0tBQUEsTUFBQTthQVNFLElBQUEsQ0FBTyxHQUFHLENBQUMsS0FBSixDQUFVLEdBQVYsQ0FBUCxFQUF3QixLQUF4QixFQUErQixNQUEvQixFQVRGO0tBREY7O0FBRFcsQ0FBTjs7QUFhUCxJQUFBLEdBQU8sS0FBQSxDQUFNLFFBQUEsQ0FBRSxHQUFGLEVBQU8sTUFBUCxDQUFBO1NBQ1g7QUFEVyxDQUFOOztBQUdQLE9BQUE7RUFDRSxJQURGO0VBRUUsTUFGRjtFQUdFLEtBSEY7RUFJRSxHQUpGO0VBS0UsR0FMRjtFQU1FLEdBTkY7RUFPRSxJQVBGO0VBUUUsT0FSRjtFQVNFLE1BVEY7RUFVRSxLQVZGO0VBV0UsS0FYRjtFQVlFLEdBWkY7RUFhRSxNQWJGO0VBY0UsUUFkRjtFQWVFLElBZkY7RUFnQkUsSUFoQkY7RUFpQkUsSUFqQkYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjdXJyeSB9IGZyb20gXCIuL2Z1bmN0aW9uXCJcbmltcG9ydCB7IGlzT2JqZWN0LCBpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc1JlZ0V4cCB9IGZyb20gXCIuL3R5cGVcIlxuaW1wb3J0IHsgZXF1YWwsIGNsb25lIH0gZnJvbSBcIi4vdmFsdWVcIlxuXG5rZXlzID0gT2JqZWN0LmtleXNcblxudmFsdWVzID0gKCB4ICkgLT4gdiBmb3IgaywgdiBvZiB4XG5cbnBhaXJzID0gKCB4ICkgLT4gWyBrLCB2IF0gZm9yIGssIHYgb2YgeFxuXG5nZXQgPSBjdXJyeSAoIGtleSwgb2JqZWN0ICkgLT4gb2JqZWN0WyBrZXkgXVxuXG5nZXR4ID0gY3VycnkgXG5cbnNldCA9IGN1cnJ5ICgga2V5LCB2YWx1ZSwgb2JqZWN0ICkgLT5cbiAgb2JqZWN0WyBrZXkgXSA9IHZhbHVlXG4gIG9iamVjdFxuXG5oYXMgPSBjdXJyeSAocCwgeCkgLT4geD9bIHAgXT9cblxubWFzayA9IGN1cnJ5ICgga2V5cywgYSApIC0+XG4gIGIgPSB7fVxuICBiWyBrZXkgXSA9IGFbIGtleSBdIGZvciBrZXkgaW4ga2V5cyB3aGVuIGFbIGtleSBdP1xuICBiXG5cbmV4Y2x1ZGUgPSBjdXJyeSAoIGtleXMsIGEgKSAtPlxuICBiID0ge31cbiAgYlsga2V5IF0gPSB2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBvZiBhIHdoZW4ga2V5IG5vdCBpbiBrZXlzXG4gIGJcblxuYXNzaWduID0gKCB0YXJnZXQsIHNvdXJjZSApIC0+IE9iamVjdC5hc3NpZ24gdGFyZ2V0LCBzb3VyY2VcblxubWVyZ2UgPSAoIHRhcmdldCwgc291cmNlICkgLT4gT2JqZWN0LmFzc2lnbiB7fSwgdGFyZ2V0LCBzb3VyY2VcblxucXVlcnkgPSBjdXJyeSAoIGV4YW1wbGUsIHRhcmdldCApIC0+XG4gIGlmIChpc09iamVjdCBleGFtcGxlKSAmJiAoaXNPYmplY3QgdGFyZ2V0KVxuICAgIGZvciBrLCB2IG9mIGV4YW1wbGUgd2hlbiAhcXVlcnkgdiwgdGFyZ2V0W2tdXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB0cnVlXG4gIGVsc2VcbiAgICBlcXVhbCBleGFtcGxlLCB0YXJnZXRcblxudGFnID0gY3VycnkgKCBrZXksIHZhbHVlICkgLT4gWyBrZXkgXTogdmFsdWVcblxuY29sbGFwc2UgPSBjdXJyeSAoeyBwcmVmaXgsIGRlbGltaXRlciB9LCBvYmplY3QgKSAtPlxuICBkZWxpbWl0ZXIgPz0gXCIuXCJcbiAgcmVzdWx0ID0ge31cbiAgZm9yIGtleSwgdmFsdWUgb2Ygb2JqZWN0XG4gICAgcWtleSA9IGlmIHByZWZpeD8gdGhlbiBcIiN7IHByZWZpeCB9I3sgZGVsaW1pdGVyIH0jeyBrZXkgfVwiIGVsc2Uga2V5XG4gICAgaWYgaXNPYmplY3QgdmFsdWVcbiAgICAgIE9iamVjdC5hc3NpZ24gcmVzdWx0LCBcbiAgICAgICAgY29sbGFwc2UgeyBwcmVmaXg6IHFrZXksIGRlbGltaXRlciB9LCB2YWx1ZVxuICAgIGVsc2VcbiAgICAgIHJlc3VsdFsgcWtleSBdID0gdmFsdWVcbiAgcmVzdWx0XG5cbmV4cGFuZCA9IGN1cnJ5ICh7IGRlbGltaXRlciB9LCBvYmplY3QgKSAtPlxuICBkZWxpbWl0ZXIgPz0gXCIuXCJcbiAgcmVzdWx0ID0ge31cbiAgZm9yIGtleSwgdmFsdWUgb2Ygb2JqZWN0XG4gICAgWyBrZXlzLi4uLCBsYXN0IF0gPSBrZXkuc3BsaXQgZGVsaW1pdGVyXG4gICAgY3VycmVudCA9IHJlc3VsdFxuICAgIGZvciBzdWJrZXkgaW4ga2V5c1xuICAgICAgY3VycmVudCA9ICggY3VycmVudFsgc3Via2V5IF0gPz0ge30gKVxuICAgIGN1cnJlbnRbIGxhc3QgXSA9IHZhbHVlXG4gIHJlc3VsdFxuXG5nZXR4ID0gY3VycnkgKCBrZXksIG9iamVjdCApIC0+XG4gIGlmIG9iamVjdD9cbiAgICBpZiAoIGlzQXJyYXkga2V5IClcbiAgICAgIGRvICh7IGZpcnN0LCByZXN0IH0gPSB7fSkgLT5cbiAgICAgICAgWyBmaXJzdCwgcmVzdC4uLiBdID0ga2V5XG4gICAgICAgIGlmIHJlc3QubGVuZ3RoID4gMFxuICAgICAgICAgIGlmIG9iamVjdFsgZmlyc3QgXT9cbiAgICAgICAgICAgIGdldHggcmVzdCwgb2JqZWN0WyBmaXJzdCBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBvYmplY3RbIGZpcnN0IF1cbiAgICBlbHNlXG4gICAgICBnZXR4ICgga2V5LnNwbGl0IFwiLlwiICksIG9iamVjdFxuXG5zZXR4ID0gY3VycnkgKCBrZXksIHZhbHVlLCBvYmplY3QgKSAtPlxuICBpZiBvYmplY3Q/XG4gICAgaWYgKCBpc0FycmF5IGtleSApXG4gICAgICBkbyAoeyBmaXJzdCwgbGFzdCwgdGFyZ2V0IH0gPSB7fSkgLT5cbiAgICAgICAgWyBmaXJzdCwgcmVzdC4uLiBdID0ga2V5XG4gICAgICAgIGlmIHJlc3QubGVuZ3RoID4gMFxuICAgICAgICAgIG9iamVjdFsgZmlyc3QgXSA/PSB7fVxuICAgICAgICAgIHNldHggcmVzdCwgdmFsdWUsIG9iamVjdFsgZmlyc3QgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgb2JqZWN0WyBmaXJzdCBdID0gdmFsdWVcbiAgICBlbHNlXG4gICAgICBzZXR4ICgga2V5LnNwbGl0IFwiLlwiICksIHZhbHVlLCBvYmplY3RcblxuaGFzeCA9IGN1cnJ5ICgga2V5LCB0YXJnZXQgKSAtPlxuICAoIGdldHgga2V5LCB0YXJnZXQgKT9cblxuZXhwb3J0IHtcbiAga2V5c1xuICB2YWx1ZXNcbiAgcGFpcnNcbiAgZ2V0XG4gIHNldFxuICBoYXNcbiAgbWFza1xuICBleGNsdWRlXG4gIGFzc2lnblxuICBtZXJnZVxuICBxdWVyeVxuICB0YWdcbiAgZXhwYW5kXG4gIGNvbGxhcHNlXG4gIGdldHhcbiAgc2V0eFxuICBoYXN4XG59XG4iXX0=
228
+ //# sourceURL=/@dashkite/joy/src/object.coffee
229
+
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyIvQGRhc2hraXRlL2pveS9zcmMvb2JqZWN0LmNvZmZlZSJdLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3VycnkgfSBmcm9tIFwiLi9mdW5jdGlvblwiXG5pbXBvcnQgeyBpc09iamVjdCwgaXNBcnJheSwgaXNGdW5jdGlvbiwgaXNSZWdFeHAgfSBmcm9tIFwiLi90eXBlXCJcbmltcG9ydCB7IGVxdWFsLCBjbG9uZSB9IGZyb20gXCIuL3ZhbHVlXCJcblxua2V5cyA9IE9iamVjdC5rZXlzXG5cbnZhbHVlcyA9ICggeCApIC0+IHYgZm9yIGssIHYgb2YgeFxuXG5wYWlycyA9ICggeCApIC0+IFsgaywgdiBdIGZvciBrLCB2IG9mIHhcblxuZ2V0ID0gY3VycnkgKCBrZXksIG9iamVjdCApIC0+IG9iamVjdFsga2V5IF1cblxuZ2V0eCA9IGN1cnJ5IFxuXG5zZXQgPSBjdXJyeSAoIGtleSwgdmFsdWUsIG9iamVjdCApIC0+XG4gIG9iamVjdFsga2V5IF0gPSB2YWx1ZVxuICBvYmplY3RcblxuaGFzID0gY3VycnkgKHAsIHgpIC0+IHg/WyBwIF0/XG5cbm1hc2sgPSBjdXJyeSAoIGtleXMsIGEgKSAtPlxuICBiID0ge31cbiAgYlsga2V5IF0gPSBhWyBrZXkgXSBmb3Iga2V5IGluIGtleXMgd2hlbiBhWyBrZXkgXT9cbiAgYlxuXG5leGNsdWRlID0gY3VycnkgKCBrZXlzLCBhICkgLT5cbiAgYiA9IHt9XG4gIGJbIGtleSBdID0gdmFsdWUgZm9yIGtleSwgdmFsdWUgb2YgYSB3aGVuIGtleSBub3QgaW4ga2V5c1xuICBiXG5cbmFzc2lnbiA9ICggdGFyZ2V0LCBzb3VyY2UgKSAtPiBPYmplY3QuYXNzaWduIHRhcmdldCwgc291cmNlXG5cbm1lcmdlID0gKCB0YXJnZXQsIHNvdXJjZSApIC0+IE9iamVjdC5hc3NpZ24ge30sIHRhcmdldCwgc291cmNlXG5cbnF1ZXJ5ID0gY3VycnkgKCBleGFtcGxlLCB0YXJnZXQgKSAtPlxuICBpZiAoaXNPYmplY3QgZXhhbXBsZSkgJiYgKGlzT2JqZWN0IHRhcmdldClcbiAgICBmb3IgaywgdiBvZiBleGFtcGxlIHdoZW4gIXF1ZXJ5IHYsIHRhcmdldFtrXVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgdHJ1ZVxuICBlbHNlXG4gICAgZXF1YWwgZXhhbXBsZSwgdGFyZ2V0XG5cbnRhZyA9IGN1cnJ5ICgga2V5LCB2YWx1ZSApIC0+IFsga2V5IF06IHZhbHVlXG5cbmNvbGxhcHNlID0gY3VycnkgKHsgcHJlZml4LCBkZWxpbWl0ZXIgfSwgb2JqZWN0ICkgLT5cbiAgZGVsaW1pdGVyID89IFwiLlwiXG4gIHJlc3VsdCA9IHt9XG4gIGZvciBrZXksIHZhbHVlIG9mIG9iamVjdFxuICAgIHFrZXkgPSBpZiBwcmVmaXg/IHRoZW4gXCIjeyBwcmVmaXggfSN7IGRlbGltaXRlciB9I3sga2V5IH1cIiBlbHNlIGtleVxuICAgIGlmIGlzT2JqZWN0IHZhbHVlXG4gICAgICBPYmplY3QuYXNzaWduIHJlc3VsdCwgXG4gICAgICAgIGNvbGxhcHNlIHsgcHJlZml4OiBxa2V5LCBkZWxpbWl0ZXIgfSwgdmFsdWVcbiAgICBlbHNlXG4gICAgICByZXN1bHRbIHFrZXkgXSA9IHZhbHVlXG4gIHJlc3VsdFxuXG5leHBhbmQgPSBjdXJyeSAoeyBkZWxpbWl0ZXIgfSwgb2JqZWN0ICkgLT5cbiAgZGVsaW1pdGVyID89IFwiLlwiXG4gIHJlc3VsdCA9IHt9XG4gIGZvciBrZXksIHZhbHVlIG9mIG9iamVjdFxuICAgIFsga2V5cy4uLiwgbGFzdCBdID0ga2V5LnNwbGl0IGRlbGltaXRlclxuICAgIGN1cnJlbnQgPSByZXN1bHRcbiAgICBmb3Igc3Via2V5IGluIGtleXNcbiAgICAgIGN1cnJlbnQgPSAoIGN1cnJlbnRbIHN1YmtleSBdID89IHt9IClcbiAgICBjdXJyZW50WyBsYXN0IF0gPSB2YWx1ZVxuICByZXN1bHRcblxuZ2V0eCA9IGN1cnJ5ICgga2V5LCBvYmplY3QgKSAtPlxuICBpZiBvYmplY3Q/XG4gICAgaWYgKCBpc0FycmF5IGtleSApXG4gICAgICBkbyAoeyBmaXJzdCwgcmVzdCB9ID0ge30pIC0+XG4gICAgICAgIFsgZmlyc3QsIHJlc3QuLi4gXSA9IGtleVxuICAgICAgICBpZiByZXN0Lmxlbmd0aCA+IDBcbiAgICAgICAgICBpZiBvYmplY3RbIGZpcnN0IF0/XG4gICAgICAgICAgICBnZXR4IHJlc3QsIG9iamVjdFsgZmlyc3QgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgb2JqZWN0WyBmaXJzdCBdXG4gICAgZWxzZVxuICAgICAgZ2V0eCAoIGtleS5zcGxpdCBcIi5cIiApLCBvYmplY3Rcblxuc2V0eCA9IGN1cnJ5ICgga2V5LCB2YWx1ZSwgb2JqZWN0ICkgLT5cbiAgaWYgb2JqZWN0P1xuICAgIGlmICggaXNBcnJheSBrZXkgKVxuICAgICAgZG8gKHsgZmlyc3QsIGxhc3QsIHRhcmdldCB9ID0ge30pIC0+XG4gICAgICAgIFsgZmlyc3QsIHJlc3QuLi4gXSA9IGtleVxuICAgICAgICBpZiByZXN0Lmxlbmd0aCA+IDBcbiAgICAgICAgICBvYmplY3RbIGZpcnN0IF0gPz0ge31cbiAgICAgICAgICBzZXR4IHJlc3QsIHZhbHVlLCBvYmplY3RbIGZpcnN0IF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIG9iamVjdFsgZmlyc3QgXSA9IHZhbHVlXG4gICAgZWxzZVxuICAgICAgc2V0eCAoIGtleS5zcGxpdCBcIi5cIiApLCB2YWx1ZSwgb2JqZWN0XG5cbmhhc3ggPSBjdXJyeSAoIGtleSwgdGFyZ2V0ICkgLT5cbiAgKCBnZXR4IGtleSwgdGFyZ2V0ICk/XG5cbmV4cG9ydCB7XG4gIGtleXNcbiAgdmFsdWVzXG4gIHBhaXJzXG4gIGdldFxuICBzZXRcbiAgaGFzXG4gIG1hc2tcbiAgZXhjbHVkZVxuICBhc3NpZ25cbiAgbWVyZ2VcbiAgcXVlcnlcbiAgdGFnXG4gIGV4cGFuZFxuICBjb2xsYXBzZVxuICBnZXR4XG4gIHNldHhcbiAgaGFzeFxufVxuIl0sIm5hbWVzIjpbXSwibWFw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