react 0.7.1 → 0.10.0-rc1

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.
Files changed (223) hide show
  1. package/README.md +10 -231
  2. package/addons.js +1 -0
  3. package/lib/AutoFocusMixin.js +32 -0
  4. package/lib/CSSCore.js +115 -0
  5. package/lib/CSSProperty.js +121 -0
  6. package/lib/CSSPropertyOperations.js +97 -0
  7. package/lib/ChangeEventPlugin.js +387 -0
  8. package/lib/ClientReactRootIndex.js +30 -0
  9. package/lib/CompositionEventPlugin.js +260 -0
  10. package/lib/DOMChildrenOperations.js +171 -0
  11. package/lib/DOMProperty.js +270 -0
  12. package/lib/DOMPropertyOperations.js +181 -0
  13. package/lib/Danger.js +187 -0
  14. package/lib/DefaultDOMPropertyConfig.js +196 -0
  15. package/lib/DefaultEventPluginOrder.js +44 -0
  16. package/lib/EnterLeaveEventPlugin.js +145 -0
  17. package/lib/EventConstants.js +76 -0
  18. package/lib/EventListener.js +69 -0
  19. package/lib/EventPluginHub.js +295 -0
  20. package/lib/EventPluginRegistry.js +281 -0
  21. package/lib/EventPluginUtils.js +214 -0
  22. package/lib/EventPropagators.js +143 -0
  23. package/lib/ExecutionEnvironment.js +44 -0
  24. package/lib/LinkedStateMixin.js +46 -0
  25. package/lib/LinkedValueUtils.js +160 -0
  26. package/lib/MobileSafariClickEventPlugin.js +63 -0
  27. package/lib/PooledClass.js +119 -0
  28. package/lib/React.js +97 -0
  29. package/lib/ReactBrowserComponentMixin.js +42 -0
  30. package/lib/ReactCSSTransitionGroup.js +65 -0
  31. package/lib/ReactCSSTransitionGroupChild.js +138 -0
  32. package/lib/ReactChildren.js +132 -0
  33. package/lib/ReactComponent.js +595 -0
  34. package/lib/ReactComponentBrowserEnvironment.js +124 -0
  35. package/lib/ReactCompositeComponent.js +1587 -0
  36. package/lib/ReactContext.js +67 -0
  37. package/lib/ReactCurrentOwner.js +39 -0
  38. package/lib/ReactDOM.js +207 -0
  39. package/lib/ReactDOMButton.js +69 -0
  40. package/lib/ReactDOMComponent.js +416 -0
  41. package/lib/ReactDOMForm.js +62 -0
  42. package/lib/ReactDOMIDOperations.js +218 -0
  43. package/lib/ReactDOMImg.js +61 -0
  44. package/lib/ReactDOMInput.js +182 -0
  45. package/lib/ReactDOMOption.js +55 -0
  46. package/lib/ReactDOMSelect.js +180 -0
  47. package/lib/ReactDOMSelection.js +189 -0
  48. package/lib/ReactDOMTextarea.js +144 -0
  49. package/lib/ReactDefaultBatchingStrategy.js +75 -0
  50. package/lib/ReactDefaultInjection.js +125 -0
  51. package/lib/ReactDefaultPerf.js +244 -0
  52. package/lib/ReactDefaultPerfAnalysis.js +199 -0
  53. package/lib/ReactErrorUtils.js +37 -0
  54. package/lib/ReactEventEmitter.js +339 -0
  55. package/lib/ReactEventEmitterMixin.js +57 -0
  56. package/lib/ReactEventTopLevelCallback.js +149 -0
  57. package/lib/ReactInjection.js +43 -0
  58. package/lib/ReactInputSelection.js +141 -0
  59. package/lib/ReactInstanceHandles.js +338 -0
  60. package/lib/ReactLink.js +54 -0
  61. package/lib/ReactMarkupChecksum.js +53 -0
  62. package/lib/ReactMount.js +649 -0
  63. package/lib/ReactMountReady.js +95 -0
  64. package/lib/ReactMultiChild.js +432 -0
  65. package/lib/ReactMultiChildUpdateTypes.js +38 -0
  66. package/lib/ReactOwner.js +159 -0
  67. package/lib/ReactPerf.js +85 -0
  68. package/lib/ReactPropTransferer.js +147 -0
  69. package/lib/ReactPropTypeLocationNames.js +31 -0
  70. package/lib/ReactPropTypeLocations.js +29 -0
  71. package/lib/ReactPropTypes.js +359 -0
  72. package/lib/ReactPutListenerQueue.js +61 -0
  73. package/lib/ReactReconcileTransaction.js +182 -0
  74. package/lib/ReactRootIndex.js +36 -0
  75. package/lib/ReactServerRendering.js +89 -0
  76. package/lib/ReactServerRenderingTransaction.js +116 -0
  77. package/lib/ReactStateSetters.js +111 -0
  78. package/lib/ReactTestUtils.js +394 -0
  79. package/lib/ReactTextComponent.js +121 -0
  80. package/lib/ReactTransitionChildMapping.js +106 -0
  81. package/lib/ReactTransitionEvents.js +97 -0
  82. package/lib/ReactTransitionGroup.js +187 -0
  83. package/lib/ReactUpdates.js +148 -0
  84. package/lib/ReactWithAddons.js +53 -0
  85. package/lib/SelectEventPlugin.js +200 -0
  86. package/lib/ServerReactRootIndex.js +36 -0
  87. package/lib/SimpleEventPlugin.js +413 -0
  88. package/lib/SyntheticClipboardEvent.js +51 -0
  89. package/lib/SyntheticCompositionEvent.js +51 -0
  90. package/lib/SyntheticDragEvent.js +44 -0
  91. package/lib/SyntheticEvent.js +164 -0
  92. package/lib/SyntheticFocusEvent.js +44 -0
  93. package/lib/SyntheticKeyboardEvent.js +58 -0
  94. package/lib/SyntheticMouseEvent.js +85 -0
  95. package/lib/SyntheticTouchEvent.js +50 -0
  96. package/lib/SyntheticUIEvent.js +45 -0
  97. package/lib/SyntheticWheelEvent.js +66 -0
  98. package/lib/Transaction.js +276 -0
  99. package/lib/ViewportMetrics.js +37 -0
  100. package/lib/accumulate.js +54 -0
  101. package/lib/adler32.js +39 -0
  102. package/lib/cloneWithProps.js +59 -0
  103. package/lib/containsNode.js +49 -0
  104. package/lib/copyProperties.js +54 -0
  105. package/lib/createArrayFrom.js +91 -0
  106. package/lib/createFullPageComponent.js +63 -0
  107. package/lib/createNodesFromMarkup.js +93 -0
  108. package/lib/createObjectFrom.js +61 -0
  109. package/lib/cx.js +44 -0
  110. package/lib/dangerousStyleValue.js +57 -0
  111. package/lib/emptyFunction.js +43 -0
  112. package/lib/emptyObject.js +27 -0
  113. package/lib/escapeTextForBrowser.js +47 -0
  114. package/lib/flattenChildren.js +57 -0
  115. package/lib/focusNode.js +33 -0
  116. package/lib/forEachAccumulated.js +36 -0
  117. package/lib/getActiveElement.js +34 -0
  118. package/lib/getEventKey.js +85 -0
  119. package/lib/getEventTarget.js +36 -0
  120. package/lib/getMarkupWrap.js +118 -0
  121. package/lib/getNodeForCharacterOffset.js +80 -0
  122. package/lib/getReactRootElementInContainer.js +40 -0
  123. package/lib/getTextContentAccessor.js +42 -0
  124. package/lib/getUnboundedScrollPosition.js +45 -0
  125. package/lib/hyphenate.js +35 -0
  126. package/lib/instantiateReactComponent.js +70 -0
  127. package/lib/invariant.js +62 -0
  128. package/lib/isEventSupported.js +70 -0
  129. package/lib/isNode.js +33 -0
  130. package/lib/isTextInputElement.js +49 -0
  131. package/lib/isTextNode.js +30 -0
  132. package/lib/joinClasses.js +44 -0
  133. package/lib/keyMirror.js +58 -0
  134. package/lib/keyOf.js +41 -0
  135. package/lib/memoizeStringOnly.js +39 -0
  136. package/lib/merge.js +37 -0
  137. package/lib/mergeHelpers.js +136 -0
  138. package/lib/mergeInto.js +45 -0
  139. package/lib/mixInto.js +34 -0
  140. package/lib/monitorCodeUse.js +37 -0
  141. package/lib/objMap.js +47 -0
  142. package/lib/objMapKeyVal.js +47 -0
  143. package/lib/onlyChild.js +43 -0
  144. package/lib/performanceNow.js +42 -0
  145. package/lib/shallowEqual.js +49 -0
  146. package/lib/shouldUpdateReactComponent.js +61 -0
  147. package/lib/toArray.js +75 -0
  148. package/lib/traverseAllChildren.js +190 -0
  149. package/lib/update.js +159 -0
  150. package/lib/warning.js +48 -0
  151. package/package.json +33 -31
  152. package/react.js +1 -0
  153. package/.npmignore +0 -7
  154. package/.travis.yml +0 -7
  155. package/Jakefile.js +0 -39
  156. package/LICENSE +0 -19
  157. package/browser-test/dist.html +0 -90
  158. package/browser-test/index.html +0 -86
  159. package/browser-test/min.html +0 -90
  160. package/dist/react.js +0 -3141
  161. package/dist/react.min.js +0 -22
  162. package/doc/advanced.md +0 -175
  163. package/doc/color-def.graffle +0 -938
  164. package/doc/color-def.png +0 -0
  165. package/doc/simple.dot +0 -25
  166. package/doc/simple.png +0 -0
  167. package/examples/longer-example.js +0 -41
  168. package/examples/simple.js +0 -45
  169. package/examples/using-ast-directly.js +0 -30
  170. package/examples/using-events1.js +0 -79
  171. package/examples/using-log-events.js +0 -43
  172. package/lib/base-task.js +0 -120
  173. package/lib/cb-task.js +0 -84
  174. package/lib/core.js +0 -138
  175. package/lib/dsl.js +0 -138
  176. package/lib/error.js +0 -55
  177. package/lib/event-collector.js +0 -81
  178. package/lib/event-manager.js +0 -89
  179. package/lib/eventemitter.js +0 -20
  180. package/lib/finalcb-first-task.js +0 -68
  181. package/lib/finalcb-task.js +0 -65
  182. package/lib/id.js +0 -22
  183. package/lib/input-parser.js +0 -56
  184. package/lib/log-events.js +0 -101
  185. package/lib/parse.js +0 -41
  186. package/lib/promise-resolve.js +0 -50
  187. package/lib/promise-task.js +0 -93
  188. package/lib/react.js +0 -59
  189. package/lib/ret-task.js +0 -71
  190. package/lib/sprintf.js +0 -18
  191. package/lib/status.js +0 -14
  192. package/lib/task.js +0 -251
  193. package/lib/track-tasks.js +0 -74
  194. package/lib/validate.js +0 -159
  195. package/lib/vcon.js +0 -113
  196. package/lib/when-task.js +0 -84
  197. package/src/dist.build.requirejs +0 -20
  198. package/test/ast.mocha.js +0 -136
  199. package/test/cb-task.mocha.js +0 -220
  200. package/test/core-deferred.mocha.js +0 -143
  201. package/test/core-when.mocha.js +0 -96
  202. package/test/core.mocha.js +0 -589
  203. package/test/dsl.mocha.js +0 -352
  204. package/test/event-manager.mocha.js +0 -119
  205. package/test/exec-options.mocha.js +0 -48
  206. package/test/finalcb-task.mocha.js +0 -58
  207. package/test/input-parser.mocha.js +0 -86
  208. package/test/log-events.mocha.js +0 -88
  209. package/test/mocha.opts +0 -2
  210. package/test/module-use.mocha.js +0 -164
  211. package/test/promise-auto-resolve.mocha.js +0 -68
  212. package/test/ret-task.mocha.js +0 -220
  213. package/test/task.mocha.js +0 -42
  214. package/test/validate-cb-task.mocha.js +0 -100
  215. package/test/validate-ret-task.mocha.js +0 -110
  216. package/test/validate.mocha.js +0 -324
  217. package/test/vcon.mocha.js +0 -193
  218. package/vendor/chai/chai.js +0 -4251
  219. package/vendor/jquery/jquery-1.7.1.js +0 -9266
  220. package/vendor/jquery/jquery-1.7.1.min.js +0 -4
  221. package/vendor/node/util.js +0 -531
  222. package/vendor/requirejs/require.js +0 -2045
  223. package/vendor/requirejs/require.min.js +0 -36
package/lib/keyOf.js ADDED
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Copyright 2013-2014 Facebook, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ * @providesModule keyOf
17
+ */
18
+
19
+ /**
20
+ * Allows extraction of a minified key. Let's the build system minify keys
21
+ * without loosing the ability to dynamically use key strings as values
22
+ * themselves. Pass in an object with a single key/val pair and it will return
23
+ * you the string key of that single record. Suppose you want to grab the
24
+ * value for a key 'className' inside of an object. Key/val minification may
25
+ * have aliased that key to be 'xa12'. keyOf({className: null}) will return
26
+ * 'xa12' in that case. Resolve keys you want to use once at startup time, then
27
+ * reuse those resolutions.
28
+ */
29
+ var keyOf = function(oneKeyObj) {
30
+ var key;
31
+ for (key in oneKeyObj) {
32
+ if (!oneKeyObj.hasOwnProperty(key)) {
33
+ continue;
34
+ }
35
+ return key;
36
+ }
37
+ return null;
38
+ };
39
+
40
+
41
+ module.exports = keyOf;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Copyright 2013-2014 Facebook, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ * @providesModule memoizeStringOnly
17
+ * @typechecks static-only
18
+ */
19
+
20
+ "use strict";
21
+
22
+ /**
23
+ * Memoizes the return value of a function that accepts one string argument.
24
+ *
25
+ * @param {function} callback
26
+ * @return {function}
27
+ */
28
+ function memoizeStringOnly(callback) {
29
+ var cache = {};
30
+ return function(string) {
31
+ if (cache.hasOwnProperty(string)) {
32
+ return cache[string];
33
+ } else {
34
+ return cache[string] = callback.call(this, string);
35
+ }
36
+ };
37
+ }
38
+
39
+ module.exports = memoizeStringOnly;
package/lib/merge.js ADDED
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Copyright 2013-2014 Facebook, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ * @providesModule merge
17
+ */
18
+
19
+ "use strict";
20
+
21
+ var mergeInto = require("./mergeInto");
22
+
23
+ /**
24
+ * Shallow merges two structures into a return value, without mutating either.
25
+ *
26
+ * @param {?object} one Optional object with properties to merge from.
27
+ * @param {?object} two Optional object with properties to merge from.
28
+ * @return {object} The shallow extension of one by two.
29
+ */
30
+ var merge = function(one, two) {
31
+ var result = {};
32
+ mergeInto(result, one);
33
+ mergeInto(result, two);
34
+ return result;
35
+ };
36
+
37
+ module.exports = merge;
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Copyright 2013-2014 Facebook, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ * @providesModule mergeHelpers
17
+ *
18
+ * requiresPolyfills: Array.isArray
19
+ */
20
+
21
+ "use strict";
22
+
23
+ var invariant = require("./invariant");
24
+ var keyMirror = require("./keyMirror");
25
+
26
+ /**
27
+ * Maximum number of levels to traverse. Will catch circular structures.
28
+ * @const
29
+ */
30
+ var MAX_MERGE_DEPTH = 36;
31
+
32
+ /**
33
+ * We won't worry about edge cases like new String('x') or new Boolean(true).
34
+ * Functions are considered terminals, and arrays are not.
35
+ * @param {*} o The item/object/value to test.
36
+ * @return {boolean} true iff the argument is a terminal.
37
+ */
38
+ var isTerminal = function(o) {
39
+ return typeof o !== 'object' || o === null;
40
+ };
41
+
42
+ var mergeHelpers = {
43
+
44
+ MAX_MERGE_DEPTH: MAX_MERGE_DEPTH,
45
+
46
+ isTerminal: isTerminal,
47
+
48
+ /**
49
+ * Converts null/undefined values into empty object.
50
+ *
51
+ * @param {?Object=} arg Argument to be normalized (nullable optional)
52
+ * @return {!Object}
53
+ */
54
+ normalizeMergeArg: function(arg) {
55
+ return arg === undefined || arg === null ? {} : arg;
56
+ },
57
+
58
+ /**
59
+ * If merging Arrays, a merge strategy *must* be supplied. If not, it is
60
+ * likely the caller's fault. If this function is ever called with anything
61
+ * but `one` and `two` being `Array`s, it is the fault of the merge utilities.
62
+ *
63
+ * @param {*} one Array to merge into.
64
+ * @param {*} two Array to merge from.
65
+ */
66
+ checkMergeArrayArgs: function(one, two) {
67
+ ("production" !== process.env.NODE_ENV ? invariant(
68
+ Array.isArray(one) && Array.isArray(two),
69
+ 'Tried to merge arrays, instead got %s and %s.',
70
+ one,
71
+ two
72
+ ) : invariant(Array.isArray(one) && Array.isArray(two)));
73
+ },
74
+
75
+ /**
76
+ * @param {*} one Object to merge into.
77
+ * @param {*} two Object to merge from.
78
+ */
79
+ checkMergeObjectArgs: function(one, two) {
80
+ mergeHelpers.checkMergeObjectArg(one);
81
+ mergeHelpers.checkMergeObjectArg(two);
82
+ },
83
+
84
+ /**
85
+ * @param {*} arg
86
+ */
87
+ checkMergeObjectArg: function(arg) {
88
+ ("production" !== process.env.NODE_ENV ? invariant(
89
+ !isTerminal(arg) && !Array.isArray(arg),
90
+ 'Tried to merge an object, instead got %s.',
91
+ arg
92
+ ) : invariant(!isTerminal(arg) && !Array.isArray(arg)));
93
+ },
94
+
95
+ /**
96
+ * Checks that a merge was not given a circular object or an object that had
97
+ * too great of depth.
98
+ *
99
+ * @param {number} Level of recursion to validate against maximum.
100
+ */
101
+ checkMergeLevel: function(level) {
102
+ ("production" !== process.env.NODE_ENV ? invariant(
103
+ level < MAX_MERGE_DEPTH,
104
+ 'Maximum deep merge depth exceeded. You may be attempting to merge ' +
105
+ 'circular structures in an unsupported way.'
106
+ ) : invariant(level < MAX_MERGE_DEPTH));
107
+ },
108
+
109
+ /**
110
+ * Checks that the supplied merge strategy is valid.
111
+ *
112
+ * @param {string} Array merge strategy.
113
+ */
114
+ checkArrayStrategy: function(strategy) {
115
+ ("production" !== process.env.NODE_ENV ? invariant(
116
+ strategy === undefined || strategy in mergeHelpers.ArrayStrategies,
117
+ 'You must provide an array strategy to deep merge functions to ' +
118
+ 'instruct the deep merge how to resolve merging two arrays.'
119
+ ) : invariant(strategy === undefined || strategy in mergeHelpers.ArrayStrategies));
120
+ },
121
+
122
+ /**
123
+ * Set of possible behaviors of merge algorithms when encountering two Arrays
124
+ * that must be merged together.
125
+ * - `clobber`: The left `Array` is ignored.
126
+ * - `indexByIndex`: The result is achieved by recursively deep merging at
127
+ * each index. (not yet supported.)
128
+ */
129
+ ArrayStrategies: keyMirror({
130
+ Clobber: true,
131
+ IndexByIndex: true
132
+ })
133
+
134
+ };
135
+
136
+ module.exports = mergeHelpers;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Copyright 2013-2014 Facebook, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ * @providesModule mergeInto
17
+ * @typechecks static-only
18
+ */
19
+
20
+ "use strict";
21
+
22
+ var mergeHelpers = require("./mergeHelpers");
23
+
24
+ var checkMergeObjectArg = mergeHelpers.checkMergeObjectArg;
25
+
26
+ /**
27
+ * Shallow merges two structures by mutating the first parameter.
28
+ *
29
+ * @param {object} one Object to be merged into.
30
+ * @param {?object} two Optional object with properties to merge from.
31
+ */
32
+ function mergeInto(one, two) {
33
+ checkMergeObjectArg(one);
34
+ if (two != null) {
35
+ checkMergeObjectArg(two);
36
+ for (var key in two) {
37
+ if (!two.hasOwnProperty(key)) {
38
+ continue;
39
+ }
40
+ one[key] = two[key];
41
+ }
42
+ }
43
+ }
44
+
45
+ module.exports = mergeInto;
package/lib/mixInto.js ADDED
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Copyright 2013-2014 Facebook, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ * @providesModule mixInto
17
+ */
18
+
19
+ "use strict";
20
+
21
+ /**
22
+ * Simply copies properties to the prototype.
23
+ */
24
+ var mixInto = function(constructor, methodBag) {
25
+ var methodName;
26
+ for (methodName in methodBag) {
27
+ if (!methodBag.hasOwnProperty(methodName)) {
28
+ continue;
29
+ }
30
+ constructor.prototype[methodName] = methodBag[methodName];
31
+ }
32
+ };
33
+
34
+ module.exports = mixInto;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Copyright 2014 Facebook, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ * @providesModule monitorCodeUse
17
+ */
18
+
19
+ "use strict";
20
+
21
+ var invariant = require("./invariant");
22
+
23
+ /**
24
+ * Provides open-source compatible instrumentation for monitoring certain API
25
+ * uses before we're ready to issue a warning or refactor. It accepts an event
26
+ * name which may only contain the characters [a-z0-9_] and an optional data
27
+ * object with further information.
28
+ */
29
+
30
+ function monitorCodeUse(eventName, data) {
31
+ ("production" !== process.env.NODE_ENV ? invariant(
32
+ eventName && !/[^a-z0-9_]/.test(eventName),
33
+ 'You must provide an eventName using only the characters [a-z0-9_]'
34
+ ) : invariant(eventName && !/[^a-z0-9_]/.test(eventName)));
35
+ }
36
+
37
+ module.exports = monitorCodeUse;
package/lib/objMap.js ADDED
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Copyright 2013-2014 Facebook, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ * @providesModule objMap
17
+ */
18
+
19
+ "use strict";
20
+
21
+ /**
22
+ * For each key/value pair, invokes callback func and constructs a resulting
23
+ * object which contains, for every key in obj, values that are the result of
24
+ * of invoking the function:
25
+ *
26
+ * func(value, key, iteration)
27
+ *
28
+ * @param {?object} obj Object to map keys over
29
+ * @param {function} func Invoked for each key/val pair.
30
+ * @param {?*} context
31
+ * @return {?object} Result of mapping or null if obj is falsey
32
+ */
33
+ function objMap(obj, func, context) {
34
+ if (!obj) {
35
+ return null;
36
+ }
37
+ var i = 0;
38
+ var ret = {};
39
+ for (var key in obj) {
40
+ if (obj.hasOwnProperty(key)) {
41
+ ret[key] = func.call(context, obj[key], key, i++);
42
+ }
43
+ }
44
+ return ret;
45
+ }
46
+
47
+ module.exports = objMap;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Copyright 2013-2014 Facebook, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ * @providesModule objMapKeyVal
17
+ */
18
+
19
+ "use strict";
20
+
21
+ /**
22
+ * Behaves the same as `objMap` but invokes func with the key first, and value
23
+ * second. Use `objMap` unless you need this special case.
24
+ * Invokes func as:
25
+ *
26
+ * func(key, value, iteration)
27
+ *
28
+ * @param {?object} obj Object to map keys over
29
+ * @param {!function} func Invoked for each key/val pair.
30
+ * @param {?*} context
31
+ * @return {?object} Result of mapping or null if obj is falsey
32
+ */
33
+ function objMapKeyVal(obj, func, context) {
34
+ if (!obj) {
35
+ return null;
36
+ }
37
+ var i = 0;
38
+ var ret = {};
39
+ for (var key in obj) {
40
+ if (obj.hasOwnProperty(key)) {
41
+ ret[key] = func.call(context, key, obj[key], i++);
42
+ }
43
+ }
44
+ return ret;
45
+ }
46
+
47
+ module.exports = objMapKeyVal;