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,74 +0,0 @@
1
- root = exports ? window
2
-
3
- require 'indemma/lib/record/validatable'
4
-
5
- describe 'model #() validates_remotely', ->
6
- model = root.model
7
- request = arthur = person = null
8
-
9
- describe 'basic usage', ->
10
-
11
- beforeEach ->
12
- person = model.call
13
- resource : 'person'
14
- name : String
15
- validates_remotely: 'name'
16
-
17
- arthur = person name: "Arthur Dent"
18
-
19
- afterEach ->
20
- person?.validators.length = 0
21
-
22
- describe '#validate', ->
23
-
24
- beforeEach ->
25
- request = jQuery.Deferred()
26
- sinon.stub(jQuery, "ajax").returns(request)
27
-
28
- afterEach -> jQuery.ajax.restore()
29
-
30
- it 'should send paramenters accordingly', ->
31
- arthur.validate()
32
-
33
- jQuery.ajax.called.should.be.true
34
-
35
- jQuery.ajax.calledWithMatch(
36
- url: '/people/validate'
37
- type: 'post'
38
- data:
39
- person:
40
- name: 'Arthur Dent'
41
- ).should.be.true
42
-
43
-
44
- it 'should add errors to record when request responds with errors', ->
45
- arthur.validate()
46
- request.resolveWith arthur,
47
- [name: ['The name should be Marvin!', 'The name should be in lowercase!']]
48
-
49
- arthur.errors.length.should.be.eq 2
50
- arthur.errors.messages.name.should.exist
51
-
52
- describe 'with options usage', ->
53
-
54
- beforeEach ->
55
- person?.validators.length = 0
56
-
57
- person = model.call
58
- resource : 'person'
59
- name : String
60
- validates_remotely: 'name'
61
-
62
- arthur = person name: "Arthur Dent"
63
-
64
- describe '#validate', ->
65
-
66
- beforeEach ->
67
- request = jQuery.Deferred()
68
- sinon.stub(jQuery, "ajax").returns(request)
69
-
70
- afterEach -> jQuery.ajax.restore()
71
-
72
- it 'should make ajax call', ->
73
- arthur.validate()
74
- jQuery.ajax.called.should.be.true
@@ -1,33 +0,0 @@
1
- root = exports ? window
2
-
3
- require 'indemma/lib/record/validatable'
4
-
5
- describe 'model #() validates type of', ->
6
-
7
- describe 'basic usage', ->
8
- model = root.model
9
- person = null
10
-
11
- beforeEach ->
12
- person = model.call
13
- resource : 'person'
14
- name : String
15
- phone : Phone
16
- validates_type_of: ['name', 'phone']
17
-
18
- afterEach ->
19
- person.validators.length = 0
20
-
21
- describe '#validate', ->
22
-
23
- #it 'should use Phone#valid getter to find out if object is valid'
24
- it 'should use Phone#validate to find out if attribute is valid'
25
- it 'should add error to record when phone typed attribute has an non valid phone value', ->
26
- arthur = person phone: new Phone 'batata'
27
- arthur.valid.should.be.false
28
- arthur.errors.messages.should.have.property 'phone'
29
- expect(arthur.errors.messages.phone).to.match /não está válido/
30
-
31
- it 'should throw error to when phone typed attribute has an non phone value', ->
32
- arthur = person phone: 'batata'
33
- expect( -> arthur.valid).to.throw /invalid attribute value type/i
@@ -1,23 +0,0 @@
1
- root = exports ? window
2
-
3
- describe 'record', ->
4
- record = root.record
5
-
6
- it 'should create a record', ->
7
- arthur = record.call resource: 'person'
8
- arthur.should.be.object
9
-
10
- describe 'model', ->
11
- model = root.model
12
-
13
- describe '#()', ->
14
-
15
- xit 'should throw exception if no resource is passed'
16
-
17
- it 'should create a record factory', ->
18
- person = model.call resource: 'person'
19
- person.should.be.object
20
-
21
- john = person()
22
- john.should.be.object
23
- john.resource.should.have.property 'name', 'person'
@@ -1,9 +0,0 @@
1
- root = exports ? window
2
-
3
- indemma = require 'indemma'
4
- chai = require 'chaijs-chai'
5
-
6
- # sinon is included on karma.conf.js
7
-
8
- root.expect = chai.expect
9
- root.should = chai.should()
@@ -1,30 +0,0 @@
1
- # TODO locales support
2
- class @Phone
3
-
4
- constructor: (@area_code, @number) ->
5
- {@area_code, @number} = @area_code if typeof @area_code == 'object'
6
-
7
-
8
- # TODO parse argument types to validate value object domain
9
- # constraints
10
-
11
- unless @number
12
- @number = @area_code
13
- @area_code = null
14
-
15
- Object.defineProperty @, 'valid', get: @validate
16
-
17
- # TODO move type validation to indemma files
18
- validate: -> @area_code? && @number?
19
-
20
- toString: ->
21
- formatted_number = @number.substr(0, 4) + '-' + @number.substr(4) if @number?
22
-
23
- if @area_code?
24
- "(#{@area_code}) #{formatted_number}"
25
- else
26
- formatted_number
27
-
28
- toJSON: ->
29
- area_code: @area_code
30
- number: @number
@@ -1,196 +0,0 @@
1
- /*jslint browser: true, forin: true, plusplus: true, indent: 4 */
2
- (function(Object, mixin) {
3
- "use strict"; // happy linter ^_____^
4
-
5
- /* <droppable> interesting code after line 110, here
6
- * ad-hoc polyfill section for this purpose only
7
- * never use these functions outside this closure ... like ...
8
- ne*/var
9
-
10
- // borrowed methods for unknown Objects
11
- ObjectPrototype = Object.prototype,
12
-
13
- lookupGetter = ObjectPrototype.__lookupGetter__,
14
- lookupSetter = ObjectPrototype.__lookupSetter__,
15
- defineGetter = ObjectPrototype.__defineGetter__,
16
- defineSetter = ObjectPrototype.__defineSetter__,
17
- has = ObjectPrototype.hasOwnProperty,
18
-
19
- emptyArray = [],
20
- // slice = emptyArray.slice,
21
-
22
- // for IE < 9 and non IE5 yet browsers
23
- goNative = true,
24
- defineProperty = (function(defineProperty){
25
- try{
26
- return defineProperty && defineProperty({},'_',{value:1})._ && defineProperty;
27
- } catch(IE8) {
28
- goNative = false;
29
- }
30
- }(Object.defineProperty)) ||
31
- function (o, k, d) {
32
- var
33
- get = d.get, // has.call(d, 'get') would be better but
34
- set = d.set; // ES5 is just like this
35
- if (get && defineGetter) {
36
- defineGetter.call(o, k, get);
37
- }
38
- if (set && defineSetter) {
39
- defineSetter.call(o, k, set);
40
- }
41
- if (!(get || set)) {
42
- o[k] = d.value;
43
- }
44
- },
45
- // for IE < 9 and non IE5 yet browsers
46
- getOwnPropertyNames = (goNative && Object.getOwnPropertyNames) ||
47
- (function () {
48
- var
49
- addHiddenOwnProperties = function (result) {
50
- return result;
51
- },
52
- list = [],
53
- key,
54
- i,
55
- length;
56
-
57
- for (key in {valueOf: key}) {
58
- list.push(key);
59
- }
60
-
61
- if (!list.length) {
62
- length = list.push(
63
- 'constructor',
64
- 'hasOwnProperty',
65
- 'isPrototypeOf',
66
- 'propertyIsEnumerable',
67
- 'toLocaleString',
68
- 'toString',
69
- 'valueOf'
70
- ) - 1;
71
- addHiddenOwnProperties = function (result, o) {
72
- for (i = 0; i < length; i++) {
73
- key = list[i];
74
- if (has.call(o, key)) {
75
- result.push(key);
76
- }
77
- }
78
- return result;
79
- };
80
- }
81
-
82
- return function (o) {
83
- var
84
- result = [],
85
- key;
86
- for (key in o) {
87
- if (has.call(o, key)) {
88
- result.push(key);
89
- }
90
- }
91
- return addHiddenOwnProperties(result, o);
92
- };
93
- }()),
94
- // IE < 9 or other non ES5 yet browsers
95
- getOwnPropertyDescriptor = (goNative && Object.getOwnPropertyDescriptor) ||
96
- function (o, k) {
97
- var
98
- descriptor = {
99
- enumerable: true,
100
- configurable: true
101
- },
102
- get = lookupGetter && lookupGetter.call(o, k),
103
- set = lookupSetter && lookupSetter.call(o, k);
104
- if (get) {
105
- descriptor.get = get;
106
- }
107
- if (set) {
108
- descriptor.set = set;
109
- }
110
- if (!(get || set)) {
111
- descriptor.writable = true;
112
- descriptor.value = o[k];
113
- }
114
- return descriptor;
115
- };
116
- // </droppable>
117
-
118
- // if already defined get out of here
119
- // this should be
120
- // if (mixin in Object) return;
121
- // but for some reason I went for JSLint ...
122
- if (Object[mixin]) {
123
- return;
124
- }
125
- // same descriptor as other spec'd methods
126
- defineProperty(
127
- Object,
128
- mixin,
129
- {
130
- enumerable: false,
131
- writable: true,
132
- configurable: true,
133
- value: function (
134
- target, // object to enrich with
135
- source, // mixin object or Trait (Function)
136
- args // optional arguments for Trait
137
- ) {
138
- var
139
- i,
140
- length,
141
- keys,
142
- key;
143
-
144
- if (typeof source === 'function') {
145
- // if the source is a function
146
- // it will be invoked with object as target
147
- // this let us define mixin as closures
148
- // function addFunctionality() {
149
- // this.functionality = function () {
150
- // // do amazing stuff
151
- // }
152
- // }
153
- // addFunctionality.call(Class.prototype);
154
- // addFunctionality.call(genericObject);
155
- // // or
156
- // Object.mixin(Class.prototype, addFunctionality);
157
-
158
- source.apply(target, args || emptyArray);
159
- /*
160
- // try to perform as fast as possible
161
- if (arguments.length < 3) {
162
- // so if no extra args are passed ...
163
- source.call(target);
164
- } else {
165
- // there is no need to slice them as done here
166
- source.apply(target, slice.call(arguments, 2));
167
- }
168
- */
169
- } else {
170
- // if source is an object
171
- // grab all possibe properties
172
- // and per each of them ...
173
- keys = getOwnPropertyNames(source);
174
- length = keys.length;
175
- i = 0;
176
- while (i < length) {
177
- key = keys[i++];
178
- // ... define it ...
179
- defineProperty(
180
- target,
181
- key,
182
- // ... using the same descriptor
183
- getOwnPropertyDescriptor(
184
- source,
185
- key
186
- )
187
- );
188
- }
189
- }
190
- // always return the initial target
191
- // ignoring all possible different return with functions
192
- return target;
193
- }
194
- }
195
- );
196
- }(Object, 'mixin'));