ende 0.5.6 → 0.5.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/component.json +2 -2
  3. data/components/component/bind/{0.0.1 → 1.0.0}/component.json +1 -1
  4. data/components/component/bind/{0.0.1 → 1.0.0}/index.js +1 -2
  5. data/components/component/jquery/1.0.0/component.json +10 -0
  6. data/components/component/jquery/1.0.0/index.js +10308 -0
  7. data/components/component/matches-selector/{0.1.2 → 0.1.4}/component.json +1 -1
  8. data/components/component/matches-selector/{0.1.2 → 0.1.4}/index.js +0 -0
  9. data/components/indefinido/advisable/master/component.json +1 -1
  10. data/components/indefinido/indemma/master/component.json +4 -7
  11. data/components/indefinido/indemma/master/lib/record.js +7 -2
  12. data/components/indefinido/indemma/master/lib/record/dirtyable.js +15 -6
  13. data/components/indefinido/indemma/master/lib/record/scopable.js +1 -1
  14. data/components/indefinido/observable/es6-modules/component.json +1 -1
  15. data/components/indefinido/observable/es6-modules/lib/legacy/schedulerable.js +8 -3
  16. data/components/indefinido/observable/es6-modules/lib/observable.js +0 -1
  17. data/components/indefinido/observable/es6-modules/lib/observable/observation.js +2 -2
  18. data/components/paulmillr/es6-shim/{0.10.1 → 0.14.0}/component.json +1 -1
  19. data/components/paulmillr/es6-shim/{0.10.1 → 0.14.0}/es6-shim.js +151 -102
  20. data/components/pluma/assimilate/{0.3.0 → 0.4.0}/component.json +2 -2
  21. data/components/pluma/assimilate/{0.3.0 → 0.4.0}/dist/assimilate.js +1 -1
  22. data/lib/assets/javascripts/aura/extensions/rivets.js.coffee +12 -6
  23. data/lib/assets/javascripts/config/load_components.js.coffee +1 -1
  24. data/lib/assets/javascripts/ende.js.coffee +1 -1
  25. data/lib/ende/version.rb +1 -1
  26. data/vendor/assets/component/build.css +112 -0
  27. data/vendor/assets/components/ende_build.js +20357 -19584
  28. metadata +13 -84
  29. data/components/chaijs/assertion-error/1.0.0/component.json +0 -18
  30. data/components/chaijs/assertion-error/1.0.0/index.js +0 -110
  31. data/components/chaijs/chai/1.9.1/.gitignore +0 -22
  32. data/components/chaijs/chai/1.9.1/.mailmap +0 -1
  33. data/components/chaijs/chai/1.9.1/.npmignore +0 -14
  34. data/components/chaijs/chai/1.9.1/.travis.yml +0 -14
  35. data/components/chaijs/chai/1.9.1/CONTRIBUTING.md +0 -173
  36. data/components/chaijs/chai/1.9.1/History.md +0 -895
  37. data/components/chaijs/chai/1.9.1/Makefile +0 -93
  38. data/components/chaijs/chai/1.9.1/README.md +0 -99
  39. data/components/chaijs/chai/1.9.1/ReleaseNotes.md +0 -482
  40. data/components/chaijs/chai/1.9.1/bower.json +0 -27
  41. data/components/chaijs/chai/1.9.1/chai.js +0 -4782
  42. data/components/chaijs/chai/1.9.1/component.json +0 -50
  43. data/components/chaijs/chai/1.9.1/index.js +0 -1
  44. data/components/chaijs/chai/1.9.1/karma.conf.js +0 -28
  45. data/components/chaijs/chai/1.9.1/karma.sauce.js +0 -41
  46. data/components/chaijs/chai/1.9.1/lib/chai.js +0 -87
  47. data/components/chaijs/chai/1.9.1/lib/chai/assertion.js +0 -130
  48. data/components/chaijs/chai/1.9.1/lib/chai/config.js +0 -50
  49. data/components/chaijs/chai/1.9.1/lib/chai/core/assertions.js +0 -1314
  50. data/components/chaijs/chai/1.9.1/lib/chai/interface/assert.js +0 -1056
  51. data/components/chaijs/chai/1.9.1/lib/chai/interface/expect.js +0 -12
  52. data/components/chaijs/chai/1.9.1/lib/chai/interface/should.js +0 -78
  53. data/components/chaijs/chai/1.9.1/lib/chai/utils/addChainableMethod.js +0 -111
  54. data/components/chaijs/chai/1.9.1/lib/chai/utils/addMethod.js +0 -43
  55. data/components/chaijs/chai/1.9.1/lib/chai/utils/addProperty.js +0 -40
  56. data/components/chaijs/chai/1.9.1/lib/chai/utils/flag.js +0 -32
  57. data/components/chaijs/chai/1.9.1/lib/chai/utils/getActual.js +0 -18
  58. data/components/chaijs/chai/1.9.1/lib/chai/utils/getEnumerableProperties.js +0 -25
  59. data/components/chaijs/chai/1.9.1/lib/chai/utils/getMessage.js +0 -49
  60. data/components/chaijs/chai/1.9.1/lib/chai/utils/getName.js +0 -20
  61. data/components/chaijs/chai/1.9.1/lib/chai/utils/getPathValue.js +0 -102
  62. data/components/chaijs/chai/1.9.1/lib/chai/utils/getProperties.js +0 -35
  63. data/components/chaijs/chai/1.9.1/lib/chai/utils/index.js +0 -114
  64. data/components/chaijs/chai/1.9.1/lib/chai/utils/inspect.js +0 -320
  65. data/components/chaijs/chai/1.9.1/lib/chai/utils/objDisplay.js +0 -49
  66. data/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteChainableMethod.js +0 -53
  67. data/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteMethod.js +0 -51
  68. data/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteProperty.js +0 -54
  69. data/components/chaijs/chai/1.9.1/lib/chai/utils/test.js +0 -26
  70. data/components/chaijs/chai/1.9.1/lib/chai/utils/transferFlags.js +0 -44
  71. data/components/chaijs/chai/1.9.1/lib/chai/utils/type.js +0 -45
  72. data/components/chaijs/chai/1.9.1/package.json +0 -42
  73. data/components/chaijs/chai/1.9.1/sauce.browsers.js +0 -128
  74. data/components/chaijs/chai/1.9.1/support/sauce/sauce_connect_block.sh +0 -7
  75. data/components/chaijs/chai/1.9.1/support/sauce/sauce_connect_setup.sh +0 -53
  76. data/components/chaijs/chai/1.9.1/test/assert.js +0 -638
  77. data/components/chaijs/chai/1.9.1/test/auth/.gitkeep +0 -0
  78. data/components/chaijs/chai/1.9.1/test/bootstrap/index.js +0 -22
  79. data/components/chaijs/chai/1.9.1/test/bootstrap/karma.js +0 -22
  80. data/components/chaijs/chai/1.9.1/test/configuration.js +0 -133
  81. data/components/chaijs/chai/1.9.1/test/display/errors.js +0 -14
  82. data/components/chaijs/chai/1.9.1/test/display/message.js +0 -47
  83. data/components/chaijs/chai/1.9.1/test/expect.js +0 -814
  84. data/components/chaijs/chai/1.9.1/test/globalShould.js +0 -15
  85. data/components/chaijs/chai/1.9.1/test/plugins.js +0 -24
  86. data/components/chaijs/chai/1.9.1/test/should.js +0 -744
  87. data/components/chaijs/chai/1.9.1/test/utilities.js +0 -309
  88. data/components/chaijs/deep-eql/0.1.3/component.json +0 -20
  89. data/components/chaijs/deep-eql/0.1.3/lib/eql.js +0 -257
  90. data/components/chaijs/type-detect/0.1.1/component.json +0 -18
  91. data/components/chaijs/type-detect/0.1.1/lib/type.js +0 -142
  92. data/components/component/classes/1.2.1/component.json +0 -19
  93. data/components/component/classes/1.2.1/index.js +0 -184
  94. data/components/component/domify/1.2.2/component.json +0 -22
  95. data/components/component/domify/1.2.2/index.js +0 -87
  96. data/components/component/event/0.1.3/component.json +0 -13
  97. data/components/component/event/0.1.3/index.js +0 -35
  98. data/components/component/jquery/1.9.1/component.json +0 -14
  99. data/components/component/jquery/1.9.1/index.js +0 -9601
  100. data/components/component/query/0.0.3/component.json +0 -23
  101. data/components/component/query/0.0.3/index.js +0 -21
  102. data/lib/tasks/.gitkeep +0 -0
@@ -1,309 +0,0 @@
1
- describe('utilities', function () {
2
- var expect = chai.expect;
3
-
4
- after(function() {
5
- // Some clean-up so we can run tests in a --watch
6
- delete chai.Assertion.prototype.eqqqual;
7
- delete chai.Assertion.prototype.result;
8
- delete chai.Assertion.prototype.doesnotexist;
9
- });
10
-
11
- it('_obj', function () {
12
- var foo = 'bar'
13
- , test = expect(foo);
14
-
15
- expect(test).to.have.property('_obj', foo);
16
-
17
- var bar = 'baz';
18
- test._obj = bar;
19
-
20
- expect(test).to.have.property('_obj', bar);
21
- test.equal(bar);
22
- });
23
-
24
- it('transferFlags', function () {
25
- var foo = 'bar'
26
- , test = expect(foo).not;
27
-
28
- chai.use(function (_chai, utils) {
29
- var obj = {};
30
- utils.transferFlags(test, obj);
31
- expect(utils.flag(obj, 'object')).to.equal(foo);
32
- expect(utils.flag(obj, 'negate')).to.equal(true);
33
- });
34
- });
35
-
36
- it('transferFlags, includeAll = false', function () {
37
- var foo = 'bar';
38
-
39
- chai.use(function (_chai, utils) {
40
- var obj = {};
41
- var test = function() {};
42
-
43
- var assertion = new chai.Assertion({}, "message", test);
44
- var flag = {};
45
- utils.flag(obj, 'flagMe', flag);
46
- utils.flag(obj, 'negate', true);
47
- utils.transferFlags(test, obj, false);
48
-
49
- expect(utils.flag(obj, 'object')).to.equal(undefined);
50
- expect(utils.flag(obj, 'message')).to.equal(undefined);
51
- expect(utils.flag(obj, 'ssfi')).to.equal(undefined);
52
- expect(utils.flag(obj, 'negate')).to.equal(true);
53
- expect(utils.flag(obj, 'flagMe')).to.equal(flag);
54
- });
55
- });
56
-
57
-
58
- it('getPathValue', function () {
59
- var object = {
60
- hello: 'universe'
61
- , universe: {
62
- hello: 'world'
63
- }
64
- , world: [ 'hello', 'universe' ]
65
- , complex: [
66
- { hello: 'universe' }
67
- , { universe: 'world' }
68
- , [ { hello: 'world' } ]
69
- ]
70
- }
71
-
72
- var arr = [ [ true ] ];
73
-
74
- chai.use(function (_chai, utils) {
75
- var gpv = utils.getPathValue;
76
- expect(gpv('hello', object)).to.equal('universe');
77
- expect(gpv('universe.hello', object)).to.equal('world');
78
- expect(gpv('world[1]', object)).to.equal('universe');
79
- expect(gpv('complex[1].universe', object)).to.equal('world');
80
- expect(gpv('complex[2][0].hello', object)).to.equal('world');
81
- expect(gpv('[0][0]', arr)).to.be.true;
82
- });
83
- });
84
-
85
- it('addMethod', function () {
86
- chai.use(function(_chai, utils) {
87
- expect(_chai.Assertion).to.not.respondTo('eqqqual');
88
- _chai.Assertion.addMethod('eqqqual', function (str) {
89
- var object = utils.flag(this, 'object');
90
- new _chai.Assertion(object).to.be.eql(str);
91
- });
92
- expect(_chai.Assertion).to.respondTo('eqqqual');
93
- });
94
-
95
- expect('spec').to.eqqqual('spec');
96
- });
97
-
98
- it('addMethod returning result', function () {
99
- chai.use(function(_chai, utils) {
100
- _chai.Assertion.addMethod('result', function () {
101
- return 'result';
102
- })
103
- });
104
-
105
- expect(expect('foo').result()).to.equal('result');
106
- });
107
-
108
- it('overwriteMethod', function () {
109
- chai.use(function (_chai, _) {
110
- expect(_chai.Assertion).to.respondTo('eqqqual');
111
- _chai.Assertion.overwriteMethod('eqqqual', function (_super) {
112
- return function (str) {
113
- var object = _.flag(this, 'object');
114
- if (object == 'cucumber' && str == 'cuke') {
115
- _.flag(this, 'cucumber', true);
116
- } else {
117
- _super.apply(this, arguments);
118
- }
119
- };
120
- });
121
-
122
- });
123
-
124
- var vege = expect('cucumber').to.eqqqual('cucumber');
125
- expect(vege.__flags).to.not.have.property('cucumber');
126
- var cuke = expect('cucumber').to.eqqqual('cuke');
127
- expect(cuke.__flags).to.have.property('cucumber');
128
-
129
- chai.use(function (_chai, _) {
130
- expect(_chai.Assertion).to.not.respondTo('doesnotexist');
131
- _chai.Assertion.overwriteMethod('doesnotexist', function (_super) {
132
- expect(_super).to.be.a('function');
133
- return function () {
134
- _.flag(this, 'doesnt', true);
135
- _super.apply(this, arguments);
136
- }
137
- });
138
- });
139
-
140
- var dne = expect('something').to.doesnotexist();
141
- expect(dne.__flags).to.have.property('doesnt');
142
- });
143
-
144
- it('overwriteMethod returning result', function () {
145
- chai.use(function (_chai, _) {
146
- _chai.Assertion.overwriteMethod('result', function (_super) {
147
- return function () {
148
- return 'result';
149
- }
150
- });
151
- });
152
-
153
- expect(expect('foo').result()).to.equal('result');
154
- });
155
-
156
- it('addProperty', function () {
157
- chai.use(function (_chai, _) {
158
- _chai.Assertion.addProperty('tea', function () {
159
- _.flag(this, 'tea', 'chai');
160
- });
161
- });
162
-
163
- var assert = expect('chai').to.be.tea;
164
- expect(assert.__flags.tea).to.equal('chai');
165
- });
166
-
167
- it('addProperty returning result', function () {
168
- chai.use(function(_chai, _) {
169
- _chai.Assertion.addProperty('result', function () {
170
- return 'result';
171
- })
172
- });
173
-
174
- expect(expect('foo').result).to.equal('result');
175
- });
176
-
177
- it('overwriteProperty', function () {
178
- chai.use(function (_chai, _) {
179
- expect(new chai.Assertion()).to.have.property('tea');
180
- _chai.Assertion.overwriteProperty('tea', function (_super) {
181
- return function () {
182
- var act = _.flag(this, 'object');
183
- if (act === 'matcha') {
184
- _.flag(this, 'tea', 'matcha');
185
- } else {
186
- _super.call(this);
187
- }
188
- }
189
- });
190
- });
191
-
192
- var matcha = expect('matcha').to.be.tea;
193
- expect(matcha.__flags.tea).to.equal('matcha');
194
- var assert = expect('something').to.be.tea;
195
- expect(assert.__flags.tea).to.equal('chai');
196
- });
197
-
198
- it('overwriteProperty returning result', function () {
199
- chai.use(function(_chai, _) {
200
- _chai.Assertion.overwriteProperty('result', function (_super) {
201
- return function () {
202
- return 'result';
203
- }
204
- });
205
- });
206
-
207
- expect(expect('foo').result).to.equal('result');
208
- });
209
-
210
- it('getMessage', function () {
211
- chai.use(function (_chai, _) {
212
- expect(_.getMessage({}, [])).to.equal('');
213
- expect(_.getMessage({}, [null, null, null])).to.equal('');
214
-
215
- var obj = {};
216
- _.flag(obj, 'message', 'foo');
217
- expect(_.getMessage(obj, [])).to.contain('foo');
218
- });
219
- });
220
-
221
- it('inspect with custom object-returning inspect()s', function () {
222
- chai.use(function (_chai, _) {
223
- var obj = {
224
- outer: {
225
- inspect: function () {
226
- return { foo: 'bar' };
227
- }
228
- }
229
- };
230
-
231
- expect(_.inspect(obj)).to.equal('{ outer: { foo: \'bar\' } }');
232
- });
233
- });
234
-
235
- it('addChainableMethod', function () {
236
- chai.use(function (_chai, _) {
237
- _chai.Assertion.addChainableMethod('x',
238
- function () {
239
- new chai.Assertion(this._obj).to.be.equal('x');
240
- }
241
- , function () {
242
- this._obj = this._obj || {};
243
- this._obj.__x = 'X!'
244
- }
245
- );
246
-
247
- expect("foo").x.to.equal("foo");
248
- expect("x").x();
249
-
250
- expect(function () {
251
- expect("foo").x();
252
- }).to.throw(_chai.AssertionError);
253
-
254
- // Verify whether the original Function properties are present.
255
- // see https://github.com/chaijs/chai/commit/514dd6ce4#commitcomment-2593383
256
- var propertyDescriptor = Object.getOwnPropertyDescriptor(chai.Assertion.prototype, "x");
257
- expect(propertyDescriptor.get).to.have.property("call", Function.prototype.call);
258
- expect(propertyDescriptor.get).to.have.property("apply", Function.prototype.apply);
259
- expect(propertyDescriptor.get()).to.have.property("call", Function.prototype.call);
260
- expect(propertyDescriptor.get()).to.have.property("apply", Function.prototype.apply);
261
-
262
- var obj = {};
263
- expect(obj).x.to.be.ok;
264
- expect(obj).to.have.property('__x', 'X!');
265
- })
266
- });
267
-
268
- it('overwriteChainableMethod', function () {
269
- chai.use(function (_chai, _) {
270
- _chai.Assertion.overwriteChainableMethod('x',
271
- function(_super) {
272
- return function() {
273
- if (_.flag(this, 'marked')) {
274
- new chai.Assertion(this._obj).to.be.equal('spot');
275
- } else {
276
- _super.apply(this, arguments);
277
- }
278
- };
279
- }
280
- , function(_super) {
281
- return function() {
282
- _.flag(this, 'message', 'x marks the spot');
283
- _super.apply(this, arguments);
284
- };
285
- }
286
- );
287
-
288
- // Make sure the original behavior of 'x' remains the same
289
- expect('foo').x.to.equal("foo");
290
- expect("x").x();
291
- expect(function () {
292
- expect("foo").x();
293
- }).to.throw(_chai.AssertionError);
294
- var obj = {};
295
- expect(obj).x.to.be.ok;
296
- expect(obj).to.have.property('__x', 'X!');
297
-
298
- // Test the new behavior of 'x'
299
- var assertion = expect('foo').x.to.be.ok;
300
- expect(_.flag(assertion, 'message')).to.equal('x marks the spot');
301
- expect(function () {
302
- var assertion = expect('x');
303
- _.flag(assertion, 'marked', true);
304
- assertion.x()
305
- }).to.throw(_chai.AssertionError);
306
- });
307
- });
308
-
309
- });
@@ -1,20 +0,0 @@
1
- {
2
- "name": "deep-eql",
3
- "version": "0.1.3",
4
- "description": "Improved deep equality testing for Node.js and the browser.",
5
- "license": "MIT",
6
- "keywords": [],
7
- "main": "lib/eql.js",
8
- "scripts": [
9
- "lib/eql.js"
10
- ],
11
- "dependencies": {
12
- "chaijs/type-detect": "0.1.1"
13
- },
14
- "development": {
15
- "dependencies": {
16
- "chaijs/simple-assert": "1.0.0"
17
- }
18
- },
19
- "repository": "chaijs/deep-eql"
20
- }
@@ -1,257 +0,0 @@
1
- /*!
2
- * deep-eql
3
- * Copyright(c) 2013 Jake Luer <jake@alogicalparadox.com>
4
- * MIT Licensed
5
- */
6
-
7
- /*!
8
- * Module dependencies
9
- */
10
-
11
- var type = require('type-detect');
12
-
13
- /*!
14
- * Buffer.isBuffer browser shim
15
- */
16
-
17
- var Buffer;
18
- try { Buffer = require('buffer').Buffer; }
19
- catch(ex) {
20
- Buffer = {};
21
- Buffer.isBuffer = function() { return false; }
22
- }
23
-
24
- /*!
25
- * Primary Export
26
- */
27
-
28
- module.exports = deepEqual;
29
-
30
- /**
31
- * Assert super-strict (egal) equality between
32
- * two objects of any type.
33
- *
34
- * @param {Mixed} a
35
- * @param {Mixed} b
36
- * @param {Array} memoised (optional)
37
- * @return {Boolean} equal match
38
- */
39
-
40
- function deepEqual(a, b, m) {
41
- if (sameValue(a, b)) {
42
- return true;
43
- } else if ('date' === type(a)) {
44
- return dateEqual(a, b);
45
- } else if ('regexp' === type(a)) {
46
- return regexpEqual(a, b);
47
- } else if (Buffer.isBuffer(a)) {
48
- return bufferEqual(a, b);
49
- } else if ('arguments' === type(a)) {
50
- return argumentsEqual(a, b, m);
51
- } else if (!typeEqual(a, b)) {
52
- return false;
53
- } else if (('object' !== type(a) && 'object' !== type(b))
54
- && ('array' !== type(a) && 'array' !== type(b))) {
55
- return sameValue(a, b);
56
- } else {
57
- return objectEqual(a, b, m);
58
- }
59
- }
60
-
61
- /*!
62
- * Strict (egal) equality test. Ensures that NaN always
63
- * equals NaN and `-0` does not equal `+0`.
64
- *
65
- * @param {Mixed} a
66
- * @param {Mixed} b
67
- * @return {Boolean} equal match
68
- */
69
-
70
- function sameValue(a, b) {
71
- if (a === b) return a !== 0 || 1 / a === 1 / b;
72
- return a !== a && b !== b;
73
- }
74
-
75
- /*!
76
- * Compare the types of two given objects and
77
- * return if they are equal. Note that an Array
78
- * has a type of `array` (not `object`) and arguments
79
- * have a type of `arguments` (not `array`/`object`).
80
- *
81
- * @param {Mixed} a
82
- * @param {Mixed} b
83
- * @return {Boolean} result
84
- */
85
-
86
- function typeEqual(a, b) {
87
- return type(a) === type(b);
88
- }
89
-
90
- /*!
91
- * Compare two Date objects by asserting that
92
- * the time values are equal using `saveValue`.
93
- *
94
- * @param {Date} a
95
- * @param {Date} b
96
- * @return {Boolean} result
97
- */
98
-
99
- function dateEqual(a, b) {
100
- if ('date' !== type(b)) return false;
101
- return sameValue(a.getTime(), b.getTime());
102
- }
103
-
104
- /*!
105
- * Compare two regular expressions by converting them
106
- * to string and checking for `sameValue`.
107
- *
108
- * @param {RegExp} a
109
- * @param {RegExp} b
110
- * @return {Boolean} result
111
- */
112
-
113
- function regexpEqual(a, b) {
114
- if ('regexp' !== type(b)) return false;
115
- return sameValue(a.toString(), b.toString());
116
- }
117
-
118
- /*!
119
- * Assert deep equality of two `arguments` objects.
120
- * Unfortunately, these must be sliced to arrays
121
- * prior to test to ensure no bad behavior.
122
- *
123
- * @param {Arguments} a
124
- * @param {Arguments} b
125
- * @param {Array} memoize (optional)
126
- * @return {Boolean} result
127
- */
128
-
129
- function argumentsEqual(a, b, m) {
130
- if ('arguments' !== type(b)) return false;
131
- a = [].slice.call(a);
132
- b = [].slice.call(b);
133
- return deepEqual(a, b, m);
134
- }
135
-
136
- /*!
137
- * Get enumerable properties of a given object.
138
- *
139
- * @param {Object} a
140
- * @return {Array} property names
141
- */
142
-
143
- function enumerable(a) {
144
- var res = [];
145
- for (var key in a) res.push(key);
146
- return res;
147
- }
148
-
149
- /*!
150
- * Simple equality for flat iterable objects
151
- * such as Arrays or Node.js buffers.
152
- *
153
- * @param {Iterable} a
154
- * @param {Iterable} b
155
- * @return {Boolean} result
156
- */
157
-
158
- function iterableEqual(a, b) {
159
- if (a.length !== b.length) return false;
160
-
161
- var i = 0;
162
- var match = true;
163
-
164
- for (; i < a.length; i++) {
165
- if (a[i] !== b[i]) {
166
- match = false;
167
- break;
168
- }
169
- }
170
-
171
- return match;
172
- }
173
-
174
- /*!
175
- * Extension to `iterableEqual` specifically
176
- * for Node.js Buffers.
177
- *
178
- * @param {Buffer} a
179
- * @param {Mixed} b
180
- * @return {Boolean} result
181
- */
182
-
183
- function bufferEqual(a, b) {
184
- if (!Buffer.isBuffer(b)) return false;
185
- return iterableEqual(a, b);
186
- }
187
-
188
- /*!
189
- * Block for `objectEqual` ensuring non-existing
190
- * values don't get in.
191
- *
192
- * @param {Mixed} object
193
- * @return {Boolean} result
194
- */
195
-
196
- function isValue(a) {
197
- return a !== null && a !== undefined;
198
- }
199
-
200
- /*!
201
- * Recursively check the equality of two objects.
202
- * Once basic sameness has been established it will
203
- * defer to `deepEqual` for each enumerable key
204
- * in the object.
205
- *
206
- * @param {Mixed} a
207
- * @param {Mixed} b
208
- * @return {Boolean} result
209
- */
210
-
211
- function objectEqual(a, b, m) {
212
- if (!isValue(a) || !isValue(b)) {
213
- return false;
214
- }
215
-
216
- if (a.prototype !== b.prototype) {
217
- return false;
218
- }
219
-
220
- var i;
221
- if (m) {
222
- for (i = 0; i < m.length; i++) {
223
- if ((m[i][0] === a && m[i][1] === b)
224
- || (m[i][0] === b && m[i][1] === a)) {
225
- return true;
226
- }
227
- }
228
- } else {
229
- m = [];
230
- }
231
-
232
- try {
233
- var ka = enumerable(a);
234
- var kb = enumerable(b);
235
- } catch (ex) {
236
- return false;
237
- }
238
-
239
- ka.sort();
240
- kb.sort();
241
-
242
- if (!iterableEqual(ka, kb)) {
243
- return false;
244
- }
245
-
246
- m.push([ a, b ]);
247
-
248
- var key;
249
- for (i = ka.length - 1; i >= 0; i--) {
250
- key = ka[i];
251
- if (!deepEqual(a[key], b[key], m)) {
252
- return false;
253
- }
254
- }
255
-
256
- return true;
257
- }