ende 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. checksums.yaml +4 -4
  2. data/component.json +2 -2
  3. data/components/indefinido/indemma/master/component.json +27 -17
  4. data/components/indefinido/indemma/master/lib/record/associable.js +74 -75
  5. data/components/indefinido/indemma/master/lib/record/dirtyable.js +40 -0
  6. data/components/indefinido/indemma/master/lib/record/queryable.js +2 -2
  7. data/components/indefinido/indemma/master/lib/record/resource.js +1 -1
  8. data/components/indefinido/indemma/master/lib/record/rest.js +7 -2
  9. data/components/indefinido/indemma/master/lib/record/restfulable.js +37 -10
  10. data/components/indefinido/indemma/master/lib/record/scopable.js +20 -47
  11. data/components/indefinido/indemma/master/lib/record/storable.js +11 -0
  12. data/components/indefinido/indemma/master/lib/record/validatable.js +195 -1068
  13. data/components/indefinido/indemma/master/lib/record.js +1 -1
  14. data/components/indefinido/indemma/master/vendor/stampit.js +568 -242
  15. data/components/indefinido/observable/es6-modules/component.json +39 -0
  16. data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/lib/adapters/rivets.js +3 -1
  17. data/components/indefinido/observable/es6-modules/lib/legacy/notifierable.js +145 -0
  18. data/components/indefinido/observable/es6-modules/lib/legacy/schedulerable.js +114 -0
  19. data/components/indefinido/observable/es6-modules/lib/lookup.js +38 -0
  20. data/components/indefinido/observable/es6-modules/lib/observable/keypath_observer.js +38 -0
  21. data/components/indefinido/observable/es6-modules/lib/observable/observation.js +45 -0
  22. data/components/indefinido/observable/es6-modules/lib/observable/selection.js +57 -0
  23. data/components/indefinido/observable/es6-modules/lib/observable/self_observer.js +38 -0
  24. data/components/indefinido/observable/es6-modules/lib/observable.js +90 -0
  25. data/components/indefinido/observable/es6-modules/lib/platform.js +12 -0
  26. data/components/indefinido/observable/es6-modules/vendor/observe-js/observe.js +1631 -0
  27. data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/accessors.js +85 -10
  28. data/lib/assets/javascripts/aura/extensions/rivets.js.coffee +1 -1
  29. data/lib/ende/version.rb +1 -1
  30. data/vendor/assets/components/ende_build.js +18379 -26828
  31. metadata +20 -128
  32. data/components/indefinido/indemma/master/.gitignore +0 -17
  33. data/components/indefinido/indemma/master/.ruby-gemset +0 -1
  34. data/components/indefinido/indemma/master/.ruby-version +0 -1
  35. data/components/indefinido/indemma/master/Gemfile +0 -13
  36. data/components/indefinido/indemma/master/Guardfile +0 -39
  37. data/components/indefinido/indemma/master/History.md +0 -0
  38. data/components/indefinido/indemma/master/Readme.md +0 -447
  39. data/components/indefinido/indemma/master/build/build.js +0 -26288
  40. data/components/indefinido/indemma/master/build/development.js +0 -22200
  41. data/components/indefinido/indemma/master/build/release.js +0 -22139
  42. data/components/indefinido/indemma/master/build/test.js +0 -22200
  43. data/components/indefinido/indemma/master/components/chaijs-assertion-error/component.json +0 -18
  44. data/components/indefinido/indemma/master/components/chaijs-assertion-error/index.js +0 -110
  45. data/components/indefinido/indemma/master/components/chaijs-chai/component.json +0 -47
  46. data/components/indefinido/indemma/master/components/chaijs-chai/index.js +0 -1
  47. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/assertion.js +0 -130
  48. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/core/assertions.js +0 -1270
  49. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/interface/assert.js +0 -1080
  50. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/interface/expect.js +0 -12
  51. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/interface/should.js +0 -76
  52. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/addChainableMethod.js +0 -94
  53. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/addMethod.js +0 -37
  54. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/addProperty.js +0 -40
  55. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/eql.js +0 -129
  56. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/flag.js +0 -32
  57. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getActual.js +0 -19
  58. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getEnumerableProperties.js +0 -25
  59. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getMessage.js +0 -49
  60. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getName.js +0 -20
  61. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getPathValue.js +0 -102
  62. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getProperties.js +0 -35
  63. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/index.js +0 -108
  64. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/inspect.js +0 -320
  65. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/objDisplay.js +0 -48
  66. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/overwriteMethod.js +0 -51
  67. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/overwriteProperty.js +0 -54
  68. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/test.js +0 -26
  69. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/transferFlags.js +0 -44
  70. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/type.js +0 -45
  71. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai.js +0 -80
  72. data/components/indefinido/indemma/master/components/component-bind/component.json +0 -14
  73. data/components/indefinido/indemma/master/components/component-bind/index.js +0 -24
  74. data/components/indefinido/indemma/master/components/component-jquery/component.json +0 -14
  75. data/components/indefinido/indemma/master/components/component-jquery/index.js +0 -9601
  76. data/components/indefinido/indemma/master/components/component-type/component.json +0 -18
  77. data/components/indefinido/indemma/master/components/component-type/index.js +0 -32
  78. data/components/indefinido/indemma/master/components/indefinido-advisable/component.json +0 -21
  79. data/components/indefinido/indemma/master/components/indefinido-advisable/index.js +0 -1
  80. data/components/indefinido/indemma/master/components/indefinido-advisable/lib/advisable.js +0 -60
  81. data/components/indefinido/indemma/master/components/indefinido-observable/component.json +0 -25
  82. data/components/indefinido/indemma/master/components/indefinido-observable/components/cjohansen-sinon/sinon.js +0 -4290
  83. data/components/indefinido/indemma/master/components/indefinido-observable/lib/observable.js +0 -323
  84. data/components/indefinido/indemma/master/components/kapit-observe-utils/component.json +0 -13
  85. data/components/indefinido/indemma/master/components/paulmillr-es6-shim/component.json +0 -17
  86. data/components/indefinido/indemma/master/components/paulmillr-es6-shim/es6-shim.js +0 -996
  87. data/components/indefinido/indemma/master/components/pluma-assimilate/component.json +0 -25
  88. data/components/indefinido/indemma/master/components/pluma-assimilate/dist/assimilate.js +0 -127
  89. data/components/indefinido/indemma/master/karma.conf.js +0 -76
  90. data/components/indefinido/indemma/master/package.json +0 -9
  91. data/components/indefinido/indemma/master/spec/record/associable_spec.js +0 -137
  92. data/components/indefinido/indemma/master/spec/record/persistable_spec.js +0 -36
  93. data/components/indefinido/indemma/master/spec/record/queryable_spec.js +0 -33
  94. data/components/indefinido/indemma/master/spec/record/resource_spec.js +0 -93
  95. data/components/indefinido/indemma/master/spec/record/rest_spec.js +0 -32
  96. data/components/indefinido/indemma/master/spec/record/restfulable_spec.js +0 -300
  97. data/components/indefinido/indemma/master/spec/record/scopable_spec.js +0 -212
  98. data/components/indefinido/indemma/master/spec/record/storable_spec.js +0 -53
  99. data/components/indefinido/indemma/master/spec/record/translationable.js +0 -28
  100. data/components/indefinido/indemma/master/spec/record/validatable_spec.js +0 -111
  101. data/components/indefinido/indemma/master/spec/record/validations/associated_spec.js +0 -43
  102. data/components/indefinido/indemma/master/spec/record/validations/confirmation_spec.js +0 -36
  103. data/components/indefinido/indemma/master/spec/record/validations/cpf_spec.js +0 -35
  104. data/components/indefinido/indemma/master/spec/record/validations/presence_spec.js +0 -28
  105. data/components/indefinido/indemma/master/spec/record/validations/remote_spec.js +0 -87
  106. data/components/indefinido/indemma/master/spec/record/validations/type_spec.js +0 -48
  107. data/components/indefinido/indemma/master/spec/record_spec.js +0 -37
  108. data/components/indefinido/indemma/master/spec/spec_helper.js +0 -11
  109. data/components/indefinido/indemma/master/spec/support/value_objects/phone.js +0 -45
  110. data/components/indefinido/indemma/master/src/lib/extensions/rivets.coffee +0 -17
  111. data/components/indefinido/indemma/master/src/lib/record/associable.coffee +0 -380
  112. data/components/indefinido/indemma/master/src/lib/record/errors.coffee +0 -20
  113. data/components/indefinido/indemma/master/src/lib/record/maid.coffee +0 -16
  114. data/components/indefinido/indemma/master/src/lib/record/persistable.coffee +0 -32
  115. data/components/indefinido/indemma/master/src/lib/record/queryable.coffee +0 -30
  116. data/components/indefinido/indemma/master/src/lib/record/resource.coffee +0 -106
  117. data/components/indefinido/indemma/master/src/lib/record/rest.coffee +0 -28
  118. data/components/indefinido/indemma/master/src/lib/record/restfulable.coffee +0 -447
  119. data/components/indefinido/indemma/master/src/lib/record/scopable.coffee +0 -294
  120. data/components/indefinido/indemma/master/src/lib/record/storable.coffee +0 -46
  121. data/components/indefinido/indemma/master/src/lib/record/translationable.coffee +0 -18
  122. data/components/indefinido/indemma/master/src/lib/record/validatable.coffee +0 -207
  123. data/components/indefinido/indemma/master/src/lib/record/validations/associated.coffee +0 -30
  124. data/components/indefinido/indemma/master/src/lib/record/validations/confirmation.coffee +0 -17
  125. data/components/indefinido/indemma/master/src/lib/record/validations/cpf.coffee +0 -57
  126. data/components/indefinido/indemma/master/src/lib/record/validations/presence.coffee +0 -16
  127. data/components/indefinido/indemma/master/src/lib/record/validations/remote.coffee +0 -61
  128. data/components/indefinido/indemma/master/src/lib/record/validations/type.coffee +0 -31
  129. data/components/indefinido/indemma/master/src/lib/record/validations/validatorable.coffee +0 -5
  130. data/components/indefinido/indemma/master/src/lib/record.coffee +0 -138
  131. data/components/indefinido/indemma/master/src/spec/record/associable_spec.coffee +0 -130
  132. data/components/indefinido/indemma/master/src/spec/record/persistable_spec.coffee +0 -30
  133. data/components/indefinido/indemma/master/src/spec/record/queryable_spec.coffee +0 -27
  134. data/components/indefinido/indemma/master/src/spec/record/resource_spec.coffee +0 -69
  135. data/components/indefinido/indemma/master/src/spec/record/rest_spec.coffee +0 -22
  136. data/components/indefinido/indemma/master/src/spec/record/restfulable_spec.coffee +0 -215
  137. data/components/indefinido/indemma/master/src/spec/record/scopable_spec.coffee +0 -191
  138. data/components/indefinido/indemma/master/src/spec/record/storable_spec.coffee +0 -40
  139. data/components/indefinido/indemma/master/src/spec/record/translationable.coffee +0 -19
  140. data/components/indefinido/indemma/master/src/spec/record/validatable_spec.coffee +0 -100
  141. data/components/indefinido/indemma/master/src/spec/record/validations/associated_spec.coffee +0 -35
  142. data/components/indefinido/indemma/master/src/spec/record/validations/confirmation_spec.coffee +0 -25
  143. data/components/indefinido/indemma/master/src/spec/record/validations/cpf_spec.coffee +0 -28
  144. data/components/indefinido/indemma/master/src/spec/record/validations/presence_spec.coffee +0 -24
  145. data/components/indefinido/indemma/master/src/spec/record/validations/remote_spec.coffee +0 -74
  146. data/components/indefinido/indemma/master/src/spec/record/validations/type_spec.coffee +0 -33
  147. data/components/indefinido/indemma/master/src/spec/record_spec.coffee +0 -23
  148. data/components/indefinido/indemma/master/src/spec/spec_helper.coffee +0 -9
  149. data/components/indefinido/indemma/master/src/spec/support/value_objects/phone.coffee +0 -30
  150. data/components/indefinido/indemma/master/vendor/object/mixin.js +0 -196
  151. data/components/indefinido/indemma/master/vendor/sinon.js +0 -4290
  152. /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/index.js +0 -0
  153. /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/accessors-legacy.js +0 -0
  154. /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/array.indexOf.js +0 -0
  155. /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/object.create.js +0 -0
@@ -1,12 +0,0 @@
1
- /*!
2
- * chai
3
- * Copyright(c) 2011-2013 Jake Luer <jake@alogicalparadox.com>
4
- * MIT Licensed
5
- */
6
-
7
- module.exports = function (chai, util) {
8
- chai.expect = function (val, message) {
9
- return new chai.Assertion(val, message);
10
- };
11
- };
12
-
@@ -1,76 +0,0 @@
1
- /*!
2
- * chai
3
- * Copyright(c) 2011-2013 Jake Luer <jake@alogicalparadox.com>
4
- * MIT Licensed
5
- */
6
-
7
- module.exports = function (chai, util) {
8
- var Assertion = chai.Assertion;
9
-
10
- function loadShould () {
11
- // modify Object.prototype to have `should`
12
- Object.defineProperty(Object.prototype, 'should',
13
- {
14
- set: function (value) {
15
- // See https://github.com/chaijs/chai/issues/86: this makes
16
- // `whatever.should = someValue` actually set `someValue`, which is
17
- // especially useful for `global.should = require('chai').should()`.
18
- //
19
- // Note that we have to use [[DefineProperty]] instead of [[Put]]
20
- // since otherwise we would trigger this very setter!
21
- Object.defineProperty(this, 'should', {
22
- value: value,
23
- enumerable: true,
24
- configurable: true,
25
- writable: true
26
- });
27
- }
28
- , get: function(){
29
- if (this instanceof String || this instanceof Number) {
30
- return new Assertion(this.constructor(this));
31
- } else if (this instanceof Boolean) {
32
- return new Assertion(this == true);
33
- }
34
- return new Assertion(this);
35
- }
36
- , configurable: true
37
- });
38
-
39
- var should = {};
40
-
41
- should.equal = function (val1, val2, msg) {
42
- new Assertion(val1, msg).to.equal(val2);
43
- };
44
-
45
- should.Throw = function (fn, errt, errs, msg) {
46
- new Assertion(fn, msg).to.Throw(errt, errs);
47
- };
48
-
49
- should.exist = function (val, msg) {
50
- new Assertion(val, msg).to.exist;
51
- }
52
-
53
- // negation
54
- should.not = {}
55
-
56
- should.not.equal = function (val1, val2, msg) {
57
- new Assertion(val1, msg).to.not.equal(val2);
58
- };
59
-
60
- should.not.Throw = function (fn, errt, errs, msg) {
61
- new Assertion(fn, msg).to.not.Throw(errt, errs);
62
- };
63
-
64
- should.not.exist = function (val, msg) {
65
- new Assertion(val, msg).to.not.exist;
66
- }
67
-
68
- should['throw'] = should['Throw'];
69
- should.not['throw'] = should.not['Throw'];
70
-
71
- return should;
72
- };
73
-
74
- chai.should = loadShould;
75
- chai.Should = loadShould;
76
- };
@@ -1,94 +0,0 @@
1
- /*!
2
- * Chai - addChainingMethod utility
3
- * Copyright(c) 2012-2013 Jake Luer <jake@alogicalparadox.com>
4
- * MIT Licensed
5
- */
6
-
7
- /*!
8
- * Module dependencies
9
- */
10
-
11
- var transferFlags = require('./transferFlags');
12
-
13
- /*!
14
- * Module variables
15
- */
16
-
17
- // Check whether `__proto__` is supported
18
- var hasProtoSupport = '__proto__' in Object;
19
-
20
- // Without `__proto__` support, this module will need to add properties to a function.
21
- // However, some Function.prototype methods cannot be overwritten,
22
- // and there seems no easy cross-platform way to detect them (@see chaijs/chai/issues/69).
23
- var excludeNames = /^(?:length|name|arguments|caller)$/;
24
-
25
- // Cache `Function` properties
26
- var call = Function.prototype.call,
27
- apply = Function.prototype.apply;
28
-
29
- /**
30
- * ### addChainableMethod (ctx, name, method, chainingBehavior)
31
- *
32
- * Adds a method to an object, such that the method can also be chained.
33
- *
34
- * utils.addChainableMethod(chai.Assertion.prototype, 'foo', function (str) {
35
- * var obj = utils.flag(this, 'object');
36
- * new chai.Assertion(obj).to.be.equal(str);
37
- * });
38
- *
39
- * Can also be accessed directly from `chai.Assertion`.
40
- *
41
- * chai.Assertion.addChainableMethod('foo', fn, chainingBehavior);
42
- *
43
- * The result can then be used as both a method assertion, executing both `method` and
44
- * `chainingBehavior`, or as a language chain, which only executes `chainingBehavior`.
45
- *
46
- * expect(fooStr).to.be.foo('bar');
47
- * expect(fooStr).to.be.foo.equal('foo');
48
- *
49
- * @param {Object} ctx object to which the method is added
50
- * @param {String} name of method to add
51
- * @param {Function} method function to be used for `name`, when called
52
- * @param {Function} chainingBehavior function to be called every time the property is accessed
53
- * @name addChainableMethod
54
- * @api public
55
- */
56
-
57
- module.exports = function (ctx, name, method, chainingBehavior) {
58
- if (typeof chainingBehavior !== 'function')
59
- chainingBehavior = function () { };
60
-
61
- Object.defineProperty(ctx, name,
62
- { get: function () {
63
- chainingBehavior.call(this);
64
-
65
- var assert = function () {
66
- var result = method.apply(this, arguments);
67
- return result === undefined ? this : result;
68
- };
69
-
70
- // Use `__proto__` if available
71
- if (hasProtoSupport) {
72
- // Inherit all properties from the object by replacing the `Function` prototype
73
- var prototype = assert.__proto__ = Object.create(this);
74
- // Restore the `call` and `apply` methods from `Function`
75
- prototype.call = call;
76
- prototype.apply = apply;
77
- }
78
- // Otherwise, redefine all properties (slow!)
79
- else {
80
- var asserterNames = Object.getOwnPropertyNames(ctx);
81
- asserterNames.forEach(function (asserterName) {
82
- if (!excludeNames.test(asserterName)) {
83
- var pd = Object.getOwnPropertyDescriptor(ctx, asserterName);
84
- Object.defineProperty(assert, asserterName, pd);
85
- }
86
- });
87
- }
88
-
89
- transferFlags(this, assert);
90
- return assert;
91
- }
92
- , configurable: true
93
- });
94
- };
@@ -1,37 +0,0 @@
1
- /*!
2
- * Chai - addMethod utility
3
- * Copyright(c) 2012-2013 Jake Luer <jake@alogicalparadox.com>
4
- * MIT Licensed
5
- */
6
-
7
- /**
8
- * ### .addMethod (ctx, name, method)
9
- *
10
- * Adds a method to the prototype of an object.
11
- *
12
- * utils.addMethod(chai.Assertion.prototype, 'foo', function (str) {
13
- * var obj = utils.flag(this, 'object');
14
- * new chai.Assertion(obj).to.be.equal(str);
15
- * });
16
- *
17
- * Can also be accessed directly from `chai.Assertion`.
18
- *
19
- * chai.Assertion.addMethod('foo', fn);
20
- *
21
- * Then can be used as any other assertion.
22
- *
23
- * expect(fooStr).to.be.foo('bar');
24
- *
25
- * @param {Object} ctx object to which the method is added
26
- * @param {String} name of method to add
27
- * @param {Function} method function to be used for name
28
- * @name addMethod
29
- * @api public
30
- */
31
-
32
- module.exports = function (ctx, name, method) {
33
- ctx[name] = function () {
34
- var result = method.apply(this, arguments);
35
- return result === undefined ? this : result;
36
- };
37
- };
@@ -1,40 +0,0 @@
1
- /*!
2
- * Chai - addProperty utility
3
- * Copyright(c) 2012-2013 Jake Luer <jake@alogicalparadox.com>
4
- * MIT Licensed
5
- */
6
-
7
- /**
8
- * ### addProperty (ctx, name, getter)
9
- *
10
- * Adds a property to the prototype of an object.
11
- *
12
- * utils.addProperty(chai.Assertion.prototype, 'foo', function () {
13
- * var obj = utils.flag(this, 'object');
14
- * new chai.Assertion(obj).to.be.instanceof(Foo);
15
- * });
16
- *
17
- * Can also be accessed directly from `chai.Assertion`.
18
- *
19
- * chai.Assertion.addProperty('foo', fn);
20
- *
21
- * Then can be used as any other assertion.
22
- *
23
- * expect(myFoo).to.be.foo;
24
- *
25
- * @param {Object} ctx object to which the property is added
26
- * @param {String} name of property to add
27
- * @param {Function} getter function to be used for name
28
- * @name addProperty
29
- * @api public
30
- */
31
-
32
- module.exports = function (ctx, name, getter) {
33
- Object.defineProperty(ctx, name,
34
- { get: function () {
35
- var result = getter.call(this);
36
- return result === undefined ? this : result;
37
- }
38
- , configurable: true
39
- });
40
- };
@@ -1,129 +0,0 @@
1
- // This is (almost) directly from Node.js assert
2
- // https://github.com/joyent/node/blob/f8c335d0caf47f16d31413f89aa28eda3878e3aa/lib/assert.js
3
-
4
- module.exports = _deepEqual;
5
-
6
- var getEnumerableProperties = require('./getEnumerableProperties');
7
-
8
- // for the browser
9
- var Buffer;
10
- try {
11
- Buffer = require('buffer').Buffer;
12
- } catch (ex) {
13
- Buffer = {
14
- isBuffer: function () { return false; }
15
- };
16
- }
17
-
18
- function _deepEqual(actual, expected, memos) {
19
-
20
- // 7.1. All identical values are equivalent, as determined by ===.
21
- if (actual === expected) {
22
- return true;
23
-
24
- } else if (Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) {
25
- if (actual.length != expected.length) return false;
26
-
27
- for (var i = 0; i < actual.length; i++) {
28
- if (actual[i] !== expected[i]) return false;
29
- }
30
-
31
- return true;
32
-
33
- // 7.2. If the expected value is a Date object, the actual value is
34
- // equivalent if it is also a Date object that refers to the same time.
35
- } else if (expected instanceof Date) {
36
- if (!(actual instanceof Date)) return false;
37
- return actual.getTime() === expected.getTime();
38
-
39
- // 7.3. Other pairs that do not both pass typeof value == 'object',
40
- // equivalence is determined by ==.
41
- } else if (typeof actual != 'object' && typeof expected != 'object') {
42
- return actual === expected;
43
-
44
- } else if (expected instanceof RegExp) {
45
- if (!(actual instanceof RegExp)) return false;
46
- return actual.toString() === expected.toString();
47
-
48
- // 7.4. For all other Object pairs, including Array objects, equivalence is
49
- // determined by having the same number of owned properties (as verified
50
- // with Object.prototype.hasOwnProperty.call), the same set of keys
51
- // (although not necessarily the same order), equivalent values for every
52
- // corresponding key, and an identical 'prototype' property. Note: this
53
- // accounts for both named and indexed properties on Arrays.
54
- } else {
55
- return objEquiv(actual, expected, memos);
56
- }
57
- }
58
-
59
- function isUndefinedOrNull(value) {
60
- return value === null || value === undefined;
61
- }
62
-
63
- function isArguments(object) {
64
- return Object.prototype.toString.call(object) == '[object Arguments]';
65
- }
66
-
67
- function objEquiv(a, b, memos) {
68
- if (isUndefinedOrNull(a) || isUndefinedOrNull(b))
69
- return false;
70
-
71
- // an identical 'prototype' property.
72
- if (a.prototype !== b.prototype) return false;
73
-
74
- // check if we have already compared a and b
75
- var i;
76
- if (memos) {
77
- for(i = 0; i < memos.length; i++) {
78
- if ((memos[i][0] === a && memos[i][1] === b) ||
79
- (memos[i][0] === b && memos[i][1] === a))
80
- return true;
81
- }
82
- } else {
83
- memos = [];
84
- }
85
-
86
- //~~~I've managed to break Object.keys through screwy arguments passing.
87
- // Converting to array solves the problem.
88
- if (isArguments(a)) {
89
- if (!isArguments(b)) {
90
- return false;
91
- }
92
- a = pSlice.call(a);
93
- b = pSlice.call(b);
94
- return _deepEqual(a, b, memos);
95
- }
96
- try {
97
- var ka = getEnumerableProperties(a),
98
- kb = getEnumerableProperties(b),
99
- key;
100
- } catch (e) {//happens when one is a string literal and the other isn't
101
- return false;
102
- }
103
-
104
- // having the same number of owned properties (keys incorporates
105
- // hasOwnProperty)
106
- if (ka.length != kb.length)
107
- return false;
108
-
109
- //the same set of keys (although not necessarily the same order),
110
- ka.sort();
111
- kb.sort();
112
- //~~~cheap key test
113
- for (i = ka.length - 1; i >= 0; i--) {
114
- if (ka[i] != kb[i])
115
- return false;
116
- }
117
-
118
- // remember objects we have compared to guard against circular references
119
- memos.push([ a, b ]);
120
-
121
- //equivalent values for every corresponding key, and
122
- //~~~possibly expensive deep test
123
- for (i = ka.length - 1; i >= 0; i--) {
124
- key = ka[i];
125
- if (!_deepEqual(a[key], b[key], memos)) return false;
126
- }
127
-
128
- return true;
129
- }
@@ -1,32 +0,0 @@
1
- /*!
2
- * Chai - flag utility
3
- * Copyright(c) 2012-2013 Jake Luer <jake@alogicalparadox.com>
4
- * MIT Licensed
5
- */
6
-
7
- /**
8
- * ### flag(object ,key, [value])
9
- *
10
- * Get or set a flag value on an object. If a
11
- * value is provided it will be set, else it will
12
- * return the currently set value or `undefined` if
13
- * the value is not set.
14
- *
15
- * utils.flag(this, 'foo', 'bar'); // setter
16
- * utils.flag(this, 'foo'); // getter, returns `bar`
17
- *
18
- * @param {Object} object (constructed Assertion
19
- * @param {String} key
20
- * @param {Mixed} value (optional)
21
- * @name flag
22
- * @api private
23
- */
24
-
25
- module.exports = function (obj, key, value) {
26
- var flags = obj.__flags || (obj.__flags = Object.create(null));
27
- if (arguments.length === 3) {
28
- flags[key] = value;
29
- } else {
30
- return flags[key];
31
- }
32
- };
@@ -1,19 +0,0 @@
1
- /*!
2
- * Chai - getActual utility
3
- * Copyright(c) 2012-2013 Jake Luer <jake@alogicalparadox.com>
4
- * MIT Licensed
5
- */
6
-
7
- /**
8
- * # getActual(object, [actual])
9
- *
10
- * Returns the `actual` value for an Assertion
11
- *
12
- * @param {Object} object (constructed Assertion)
13
- * @param {Arguments} chai.Assertion.prototype.assert arguments
14
- */
15
-
16
- module.exports = function (obj, args) {
17
- var actual = args[4];
18
- return 'undefined' !== typeof actual ? actual : obj._obj;
19
- };
@@ -1,25 +0,0 @@
1
- /*!
2
- * Chai - getEnumerableProperties utility
3
- * Copyright(c) 2012-2013 Jake Luer <jake@alogicalparadox.com>
4
- * MIT Licensed
5
- */
6
-
7
- /**
8
- * ### .getEnumerableProperties(object)
9
- *
10
- * This allows the retrieval of enumerable property names of an object,
11
- * inherited or not.
12
- *
13
- * @param {Object} object
14
- * @returns {Array}
15
- * @name getEnumerableProperties
16
- * @api public
17
- */
18
-
19
- module.exports = function getEnumerableProperties(object) {
20
- var result = [];
21
- for (var name in object) {
22
- result.push(name);
23
- }
24
- return result;
25
- };
@@ -1,49 +0,0 @@
1
- /*!
2
- * Chai - message composition utility
3
- * Copyright(c) 2012-2013 Jake Luer <jake@alogicalparadox.com>
4
- * MIT Licensed
5
- */
6
-
7
- /*!
8
- * Module dependancies
9
- */
10
-
11
- var flag = require('./flag')
12
- , getActual = require('./getActual')
13
- , inspect = require('./inspect')
14
- , objDisplay = require('./objDisplay');
15
-
16
- /**
17
- * ### .getMessage(object, message, negateMessage)
18
- *
19
- * Construct the error message based on flags
20
- * and template tags. Template tags will return
21
- * a stringified inspection of the object referenced.
22
- *
23
- * Message template tags:
24
- * - `#{this}` current asserted object
25
- * - `#{act}` actual value
26
- * - `#{exp}` expected value
27
- *
28
- * @param {Object} object (constructed Assertion)
29
- * @param {Arguments} chai.Assertion.prototype.assert arguments
30
- * @name getMessage
31
- * @api public
32
- */
33
-
34
- module.exports = function (obj, args) {
35
- var negate = flag(obj, 'negate')
36
- , val = flag(obj, 'object')
37
- , expected = args[3]
38
- , actual = getActual(obj, args)
39
- , msg = negate ? args[2] : args[1]
40
- , flagMsg = flag(obj, 'message');
41
-
42
- msg = msg || '';
43
- msg = msg
44
- .replace(/#{this}/g, objDisplay(val))
45
- .replace(/#{act}/g, objDisplay(actual))
46
- .replace(/#{exp}/g, objDisplay(expected));
47
-
48
- return flagMsg ? flagMsg + ': ' + msg : msg;
49
- };
@@ -1,20 +0,0 @@
1
- /*!
2
- * Chai - getName utility
3
- * Copyright(c) 2012-2013 Jake Luer <jake@alogicalparadox.com>
4
- * MIT Licensed
5
- */
6
-
7
- /**
8
- * # getName(func)
9
- *
10
- * Gets the name of a function, in a cross-browser way.
11
- *
12
- * @param {Function} a function (usually a constructor)
13
- */
14
-
15
- module.exports = function (func) {
16
- if (func.name) return func.name;
17
-
18
- var match = /^\s?function ([^(]*)\(/.exec(func);
19
- return match && match[1] ? match[1] : "";
20
- };
@@ -1,102 +0,0 @@
1
- /*!
2
- * Chai - getPathValue utility
3
- * Copyright(c) 2012-2013 Jake Luer <jake@alogicalparadox.com>
4
- * @see https://github.com/logicalparadox/filtr
5
- * MIT Licensed
6
- */
7
-
8
- /**
9
- * ### .getPathValue(path, object)
10
- *
11
- * This allows the retrieval of values in an
12
- * object given a string path.
13
- *
14
- * var obj = {
15
- * prop1: {
16
- * arr: ['a', 'b', 'c']
17
- * , str: 'Hello'
18
- * }
19
- * , prop2: {
20
- * arr: [ { nested: 'Universe' } ]
21
- * , str: 'Hello again!'
22
- * }
23
- * }
24
- *
25
- * The following would be the results.
26
- *
27
- * getPathValue('prop1.str', obj); // Hello
28
- * getPathValue('prop1.att[2]', obj); // b
29
- * getPathValue('prop2.arr[0].nested', obj); // Universe
30
- *
31
- * @param {String} path
32
- * @param {Object} object
33
- * @returns {Object} value or `undefined`
34
- * @name getPathValue
35
- * @api public
36
- */
37
-
38
- var getPathValue = module.exports = function (path, obj) {
39
- var parsed = parsePath(path);
40
- return _getPathValue(parsed, obj);
41
- };
42
-
43
- /*!
44
- * ## parsePath(path)
45
- *
46
- * Helper function used to parse string object
47
- * paths. Use in conjunction with `_getPathValue`.
48
- *
49
- * var parsed = parsePath('myobject.property.subprop');
50
- *
51
- * ### Paths:
52
- *
53
- * * Can be as near infinitely deep and nested
54
- * * Arrays are also valid using the formal `myobject.document[3].property`.
55
- *
56
- * @param {String} path
57
- * @returns {Object} parsed
58
- * @api private
59
- */
60
-
61
- function parsePath (path) {
62
- var str = path.replace(/\[/g, '.[')
63
- , parts = str.match(/(\\\.|[^.]+?)+/g);
64
- return parts.map(function (value) {
65
- var re = /\[(\d+)\]$/
66
- , mArr = re.exec(value)
67
- if (mArr) return { i: parseFloat(mArr[1]) };
68
- else return { p: value };
69
- });
70
- };
71
-
72
- /*!
73
- * ## _getPathValue(parsed, obj)
74
- *
75
- * Helper companion function for `.parsePath` that returns
76
- * the value located at the parsed address.
77
- *
78
- * var value = getPathValue(parsed, obj);
79
- *
80
- * @param {Object} parsed definition from `parsePath`.
81
- * @param {Object} object to search against
82
- * @returns {Object|Undefined} value
83
- * @api private
84
- */
85
-
86
- function _getPathValue (parsed, obj) {
87
- var tmp = obj
88
- , res;
89
- for (var i = 0, l = parsed.length; i < l; i++) {
90
- var part = parsed[i];
91
- if (tmp) {
92
- if ('undefined' !== typeof part.p)
93
- tmp = tmp[part.p];
94
- else if ('undefined' !== typeof part.i)
95
- tmp = tmp[part.i];
96
- if (i == (l - 1)) res = tmp;
97
- } else {
98
- res = undefined;
99
- }
100
- }
101
- return res;
102
- };
@@ -1,35 +0,0 @@
1
- /*!
2
- * Chai - getProperties utility
3
- * Copyright(c) 2012-2013 Jake Luer <jake@alogicalparadox.com>
4
- * MIT Licensed
5
- */
6
-
7
- /**
8
- * ### .getProperties(object)
9
- *
10
- * This allows the retrieval of property names of an object, enumerable or not,
11
- * inherited or not.
12
- *
13
- * @param {Object} object
14
- * @returns {Array}
15
- * @name getProperties
16
- * @api public
17
- */
18
-
19
- module.exports = function getProperties(object) {
20
- var result = Object.getOwnPropertyNames(subject);
21
-
22
- function addProperty(property) {
23
- if (result.indexOf(property) === -1) {
24
- result.push(property);
25
- }
26
- }
27
-
28
- var proto = Object.getPrototypeOf(subject);
29
- while (proto !== null) {
30
- Object.getOwnPropertyNames(proto).forEach(addProperty);
31
- proto = Object.getPrototypeOf(proto);
32
- }
33
-
34
- return result;
35
- };