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