| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent e058f47 commit 1146806
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -36,37 +36,18 @@ function throwInvalidThisError(Base, type) { | |||
| 36 | 36 | throw err; | |
| 37 | 37 | } | |
| 38 | 38 | ||
| 39 | - let disusedNamesSet; | ||
| 40 | - let internalsMap; | ||
| 41 | - let nameToCodeMap; | ||
| 42 | - let isInitialized = false; | ||
| 39 | + const internalsMap = new SafeWeakMap(); | ||
| 40 | + const nameToCodeMap = new SafeMap(); | ||
| 43 | 41 | ||
| 44 | - // We need to instantiate the maps lazily because they render | ||
| 45 | - // the snapshot non-rehashable. | ||
| 46 | - // https://bugs.chromium.org/p/v8/issues/detail?id=6593 | ||
| 47 | - function ensureInitialized() { | ||
| 48 | - if (isInitialized) { | ||
| 49 | - return; | ||
| 50 | - } | ||
| 51 | - internalsMap = new SafeWeakMap(); | ||
| 52 | - nameToCodeMap = new SafeMap(); | ||
| 53 | - forEachCode((name, codeName, value) => { | ||
| 54 | - nameToCodeMap.set(name, value); | ||
| 55 | - }); | ||
| 56 | - | ||
| 57 | - // These were removed from the error names table. | ||
| 58 | - // See https://github.com/heycam/webidl/pull/946. | ||
| 59 | - disusedNamesSet = new SafeSet() | ||
| 60 | - .add('DOMStringSizeError') | ||
| 61 | - .add('NoDataAllowedError') | ||
| 62 | - .add('ValidationError'); | ||
| 63 | - | ||
| 64 | - isInitialized = true; | ||
| 65 | - } | ||
| 42 | + // These were removed from the error names table. | ||
| 43 | + // See https://github.com/heycam/webidl/pull/946. | ||
| 44 | + const disusedNamesSet = new SafeSet() | ||
| 45 | + .add('DOMStringSizeError') | ||
| 46 | + .add('NoDataAllowedError') | ||
| 47 | + .add('ValidationError'); | ||
| 66 | 48 | ||
| 67 | 49 | class DOMException { | |
| 68 | 50 | constructor(message = '', name = 'Error') { | |
| 69 | - ensureInitialized(); | ||
| 70 | 51 | ErrorCaptureStackTrace(this); | |
| 71 | 52 | internalsMap.set(this, { | |
| 72 | 53 | message: `${message}`, | |
@@ -75,7 +56,6 @@ class DOMException { | |||
| 75 | 56 | } | |
| 76 | 57 | ||
| 77 | 58 | get name() { | |
| 78 | - ensureInitialized(); | ||
| 79 | 59 | const internals = internalsMap.get(this); | |
| 80 | 60 | if (internals === undefined) { | |
| 81 | 61 | throwInvalidThisError(TypeError, 'DOMException'); | |
@@ -84,7 +64,6 @@ class DOMException { | |||
| 84 | 64 | } | |
| 85 | 65 | ||
| 86 | 66 | get message() { | |
| 87 | - ensureInitialized(); | ||
| 88 | 67 | const internals = internalsMap.get(this); | |
| 89 | 68 | if (internals === undefined) { | |
| 90 | 69 | throwInvalidThisError(TypeError, 'DOMException'); | |
@@ -93,7 +72,6 @@ class DOMException { | |||
| 93 | 72 | } | |
| 94 | 73 | ||
| 95 | 74 | get code() { | |
| 96 | - ensureInitialized(); | ||
| 97 | 75 | const internals = internalsMap.get(this); | |
| 98 | 76 | if (internals === undefined) { | |
| 99 | 77 | throwInvalidThisError(TypeError, 'DOMException'); | |
@@ -116,40 +94,39 @@ ObjectDefineProperties(DOMException.prototype, { | |||
| 116 | 94 | code: { enumerable: true, configurable: true } | |
| 117 | 95 | }); | |
| 118 | 96 | ||
| 119 | - function forEachCode(fn) { | ||
| 120 | - fn('IndexSizeError', 'INDEX_SIZE_ERR', 1); | ||
| 121 | - fn('DOMStringSizeError', 'DOMSTRING_SIZE_ERR', 2); | ||
| 122 | - fn('HierarchyRequestError', 'HIERARCHY_REQUEST_ERR', 3); | ||
| 123 | - fn('WrongDocumentError', 'WRONG_DOCUMENT_ERR', 4); | ||
| 124 | - fn('InvalidCharacterError', 'INVALID_CHARACTER_ERR', 5); | ||
| 125 | - fn('NoDataAllowedError', 'NO_DATA_ALLOWED_ERR', 6); | ||
| 126 | - fn('NoModificationAllowedError', 'NO_MODIFICATION_ALLOWED_ERR', 7); | ||
| 127 | - fn('NotFoundError', 'NOT_FOUND_ERR', 8); | ||
| 128 | - fn('NotSupportedError', 'NOT_SUPPORTED_ERR', 9); | ||
| 129 | - fn('InUseAttributeError', 'INUSE_ATTRIBUTE_ERR', 10); | ||
| 130 | - fn('InvalidStateError', 'INVALID_STATE_ERR', 11); | ||
| 131 | - fn('SyntaxError', 'SYNTAX_ERR', 12); | ||
| 132 | - fn('InvalidModificationError', 'INVALID_MODIFICATION_ERR', 13); | ||
| 133 | - fn('NamespaceError', 'NAMESPACE_ERR', 14); | ||
| 134 | - fn('InvalidAccessError', 'INVALID_ACCESS_ERR', 15); | ||
| 135 | - fn('ValidationError', 'VALIDATION_ERR', 16); | ||
| 136 | - fn('TypeMismatchError', 'TYPE_MISMATCH_ERR', 17); | ||
| 137 | - fn('SecurityError', 'SECURITY_ERR', 18); | ||
| 138 | - fn('NetworkError', 'NETWORK_ERR', 19); | ||
| 139 | - fn('AbortError', 'ABORT_ERR', 20); | ||
| 140 | - fn('URLMismatchError', 'URL_MISMATCH_ERR', 21); | ||
| 141 | - fn('QuotaExceededError', 'QUOTA_EXCEEDED_ERR', 22); | ||
| 142 | - fn('TimeoutError', 'TIMEOUT_ERR', 23); | ||
| 143 | - fn('InvalidNodeTypeError', 'INVALID_NODE_TYPE_ERR', 24); | ||
| 144 | - fn('DataCloneError', 'DATA_CLONE_ERR', 25); | ||
| 97 | + for (const { 0: name, 1: codeName, 2: value } of [ | ||
| 98 | + ['IndexSizeError', 'INDEX_SIZE_ERR', 1], | ||
| 99 | + ['DOMStringSizeError', 'DOMSTRING_SIZE_ERR', 2], | ||
| 100 | + ['HierarchyRequestError', 'HIERARCHY_REQUEST_ERR', 3], | ||
| 101 | + ['WrongDocumentError', 'WRONG_DOCUMENT_ERR', 4], | ||
| 102 | + ['InvalidCharacterError', 'INVALID_CHARACTER_ERR', 5], | ||
| 103 | + ['NoDataAllowedError', 'NO_DATA_ALLOWED_ERR', 6], | ||
| 104 | + ['NoModificationAllowedError', 'NO_MODIFICATION_ALLOWED_ERR', 7], | ||
| 105 | + ['NotFoundError', 'NOT_FOUND_ERR', 8], | ||
| 106 | + ['NotSupportedError', 'NOT_SUPPORTED_ERR', 9], | ||
| 107 | + ['InUseAttributeError', 'INUSE_ATTRIBUTE_ERR', 10], | ||
| 108 | + ['InvalidStateError', 'INVALID_STATE_ERR', 11], | ||
| 109 | + ['SyntaxError', 'SYNTAX_ERR', 12], | ||
| 110 | + ['InvalidModificationError', 'INVALID_MODIFICATION_ERR', 13], | ||
| 111 | + ['NamespaceError', 'NAMESPACE_ERR', 14], | ||
| 112 | + ['InvalidAccessError', 'INVALID_ACCESS_ERR', 15], | ||
| 113 | + ['ValidationError', 'VALIDATION_ERR', 16], | ||
| 114 | + ['TypeMismatchError', 'TYPE_MISMATCH_ERR', 17], | ||
| 115 | + ['SecurityError', 'SECURITY_ERR', 18], | ||
| 116 | + ['NetworkError', 'NETWORK_ERR', 19], | ||
| 117 | + ['AbortError', 'ABORT_ERR', 20], | ||
| 118 | + ['URLMismatchError', 'URL_MISMATCH_ERR', 21], | ||
| 119 | + ['QuotaExceededError', 'QUOTA_EXCEEDED_ERR', 22], | ||
| 120 | + ['TimeoutError', 'TIMEOUT_ERR', 23], | ||
| 121 | + ['InvalidNodeTypeError', 'INVALID_NODE_TYPE_ERR', 24], | ||
| 122 | + ['DataCloneError', 'DATA_CLONE_ERR', 25], | ||
| 145 | 123 | // There are some more error names, but since they don't have codes assigned, | |
| 146 | 124 | // we don't need to care about them. | |
| 147 | - } | ||
| 148 | - | ||
| 149 | - forEachCode((name, codeName, value) => { | ||
| 125 | + ]) { | ||
| 150 | 126 | const desc = { enumerable: true, value }; | |
| 151 | 127 | ObjectDefineProperty(DOMException, codeName, desc); | |
| 152 | 128 | ObjectDefineProperty(DOMException.prototype, codeName, desc); | |
| 153 | - }); | ||
| 129 | + nameToCodeMap.set(name, value); | ||
| 130 | + } | ||
| 154 | 131 | ||
| 155 | 132 | exports.DOMException = DOMException; | |
| Back | FazBrowse Home | New Git URL |
0 commit comments