@samitouri / QOS-React / commits / 6e258c1266

Move isAttributeNameSafe to DOMProperty (#11802)

Brandon Dail committed Dec 7, 2017 at 17:23 UTC 6e258c126696bf50e8df98ae96626f58e54753ef
3 files changed +26 -56
packages/react-dom/src/client/DOMPropertyOperations.js
+1 -28
@@ -6,39 +6,12 @@
6 */
7
8 import {
9 - ATTRIBUTE_NAME_CHAR,
10 - ATTRIBUTE_NAME_START_CHAR,
9 ID_ATTRIBUTE_NAME,
10 ROOT_ATTRIBUTE_NAME,
11 getPropertyInfo,
12 shouldSetAttribute,
13 + isAttributeNameSafe,
14 } from '../shared/DOMProperty';
16 -import warning from 'fbjs/lib/warning';
17 -
18 -// isAttributeNameSafe() is currently duplicated in DOMMarkupOperations.
19 -// TODO: Find a better place for this.
20 -const VALID_ATTRIBUTE_NAME_REGEX = new RegExp(
21 - '^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$',
22 -);
23 -const illegalAttributeNameCache = {};
24 -const validatedAttributeNameCache = {};
25 -function isAttributeNameSafe(attributeName) {
26 - if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {
27 - return true;
28 - }
29 - if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {
30 - return false;
31 - }
32 - if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {
33 - validatedAttributeNameCache[attributeName] = true;
34 - return true;
35 - }
36 - illegalAttributeNameCache[attributeName] = true;
37 - if (__DEV__) {
38 - warning(false, 'Invalid attribute name: `%s`', attributeName);
39 - }
40 - return false;
41 -}
15
16 // shouldIgnoreValue() is currently duplicated in DOMMarkupOperations.
17 // TODO: Find a better place for this.
packages/react-dom/src/server/DOMMarkupOperations.js
+1 -28
@@ -6,41 +6,14 @@
6 */
7
8 import {
9 - ATTRIBUTE_NAME_CHAR,
10 - ATTRIBUTE_NAME_START_CHAR,
9 ID_ATTRIBUTE_NAME,
10 ROOT_ATTRIBUTE_NAME,
11 getPropertyInfo,
12 shouldAttributeAcceptBooleanValue,
13 shouldSetAttribute,
14 + isAttributeNameSafe,
15 } from '../shared/DOMProperty';
16 import quoteAttributeValueForBrowser from './quoteAttributeValueForBrowser';
18 -import warning from 'fbjs/lib/warning';
19 -
20 -// isAttributeNameSafe() is currently duplicated in DOMPropertyOperations.
21 -// TODO: Find a better place for this.
22 -const VALID_ATTRIBUTE_NAME_REGEX = new RegExp(
23 - '^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$',
24 -);
25 -const illegalAttributeNameCache = {};
26 -const validatedAttributeNameCache = {};
27 -function isAttributeNameSafe(attributeName) {
28 - if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {
29 - return true;
30 - }
31 - if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {
32 - return false;
33 - }
34 - if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {
35 - validatedAttributeNameCache[attributeName] = true;
36 - return true;
37 - }
38 - illegalAttributeNameCache[attributeName] = true;
39 - if (__DEV__) {
40 - warning(false, 'Invalid attribute name: `%s`', attributeName);
41 - }
42 - return false;
43 -}
17
18 // shouldIgnoreValue() is currently duplicated in DOMPropertyOperations.
19 // TODO: Find a better place for this.
packages/react-dom/src/shared/DOMProperty.js
+24
@@ -111,6 +111,30 @@ export const ATTRIBUTE_NAME_CHAR =
111
112 export const ID_ATTRIBUTE_NAME = 'data-reactid';
113 export const ROOT_ATTRIBUTE_NAME = 'data-reactroot';
114 +export const VALID_ATTRIBUTE_NAME_REGEX = new RegExp(
115 + '^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$',
116 +);
117 +
118 +const illegalAttributeNameCache = {};
119 +const validatedAttributeNameCache = {};
120 +
121 +export function isAttributeNameSafe(attributeName) {
122 + if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {
123 + return true;
124 + }
125 + if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {
126 + return false;
127 + }
128 + if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {
129 + validatedAttributeNameCache[attributeName] = true;
130 + return true;
131 + }
132 + illegalAttributeNameCache[attributeName] = true;
133 + if (__DEV__) {
134 + warning(false, 'Invalid attribute name: `%s`', attributeName);
135 + }
136 + return false;
137 +}
138
139 /**
140 * Map from property "standard name" to an object with info about how to set