Skip to content

Commit d6dab2f

Browse files
committed
Don't throw for unsupported types, just return false
1 parent 3e31439 commit d6dab2f

File tree

1 file changed

+24
-41
lines changed

1 file changed

+24
-41
lines changed

support/types.js

Lines changed: 24 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -59,93 +59,80 @@ var methods = [
5959
},
6060
{
6161
name: 'isArrayBufferView',
62-
supported: supported.ArrayBuffer,
6362
function: function isArrayBufferView(value) {
64-
return ArrayBuffer.isView(value);
63+
return supported.ArrayBuffer && ArrayBuffer.isView(value);
6564
},
6665
},
6766
{
6867
name: 'isTypedArray',
69-
supported: supported.Uint8Array,
7068
function: function isTypedArray(value) {
71-
return TypedArrayProto_toStringTag(value) !== undefined;
69+
return supported.Uint8Array && TypedArrayProto_toStringTag(value) !== undefined;
7270
}
7371
},
7472
{
7573
name: 'isUint8Array',
76-
supported: supported.Uint8Array,
7774
function: function isUint8Array(value) {
78-
return TypedArrayProto_toStringTag(value) === 'Uint8Array';
75+
return supported.Uint8Array && TypedArrayProto_toStringTag(value) === 'Uint8Array';
7976
}
8077
},
8178
{
8279
name: 'isUint8ClampedArray',
83-
supported: supported.Uint8Array,
8480
function: function isUint8ClampedArray(value) {
85-
return TypedArrayProto_toStringTag(value) === 'Uint8ClampedArray';
81+
return supported.Uint8Array && TypedArrayProto_toStringTag(value) === 'Uint8ClampedArray';
8682
}
8783
},
8884
{
8985
name: 'isUint16Array',
90-
supported: supported.Uint8Array,
9186
function: function isUint16Array(value) {
92-
return TypedArrayProto_toStringTag(value) === 'Uint16Array';
87+
return supported.Uint8Array && TypedArrayProto_toStringTag(value) === 'Uint16Array';
9388
}
9489
},
9590
{
9691
name: 'isUint32Array',
97-
supported: supported.Uint8Array,
9892
function: function isUint32Array(value) {
99-
return TypedArrayProto_toStringTag(value) === 'Uint32Array';
93+
return supported.Uint8Array && TypedArrayProto_toStringTag(value) === 'Uint32Array';
10094
}
10195
},
10296
{
10397
name: 'isInt8Array',
104-
supported: supported.Uint8Array,
10598
function: function isInt8Array(value) {
106-
return TypedArrayProto_toStringTag(value) === 'Int8Array';
99+
return supported.Uint8Array && TypedArrayProto_toStringTag(value) === 'Int8Array';
107100
}
108101
},
109102
{
110103
name: 'isInt16Array',
111-
supported: supported.Uint8Array,
112104
function: function isInt16Array(value) {
113-
return TypedArrayProto_toStringTag(value) === 'Int16Array';
105+
return supported.Uint8Array && TypedArrayProto_toStringTag(value) === 'Int16Array';
114106
}
115107
},
116108
{
117109
name: 'isInt32Array',
118-
supported: supported.Uint8Array,
119110
function: function isInt32Array(value) {
120-
return TypedArrayProto_toStringTag(value) === 'Int32Array';
111+
return supported.Uint8Array && TypedArrayProto_toStringTag(value) === 'Int32Array';
121112
}
122113
},
123114
{
124115
name: 'isFloat32Array',
125-
supported: supported.Uint8Array,
126116
function: function isFloat32Array(value) {
127-
return TypedArrayProto_toStringTag(value) === 'Float32Array';
117+
return supported.Uint8Array && TypedArrayProto_toStringTag(value) === 'Float32Array';
128118
}
129119
},
130120
{
131121
name: 'isFloat64Array',
132-
supported: supported.Uint8Array,
133122
function: function isFloat64Array(value) {
134-
return TypedArrayProto_toStringTag(value) === 'Float64Array';
123+
return supported.Uint8Array && TypedArrayProto_toStringTag(value) === 'Float64Array';
135124
}
136125
},
137126
{
138127
name: 'isBigInt64Array',
139-
supported: supported.Uint8Array,
140128
function: function isBigInt64Array(value) {
141-
return TypedArrayProto_toStringTag(value) === 'BigInt64Array';
129+
return supported.Uint8Array && TypedArrayProto_toStringTag(value) === 'BigInt64Array';
142130
}
143131
},
144132
{
145133
name: 'isBigUint64Array',
146-
supported: supported.Uint8Array,
147134
function: function isBigUint64Array(value) {
148-
return TypedArrayProto_toStringTag(value) === 'BigUint64Array';
135+
return supported.Uint8Array && TypedArrayProto_toStringTag(value) === 'BigUint64Array';
149136
}
150137
},
151138
{
@@ -252,16 +239,14 @@ var methods = [
252239
},
253240
{
254241
name: 'isBigIntObject',
255-
supported: supported.BigInt,
256242
function: function isBigIntObject(value) {
257-
return checkBoxedPrimitive(value, bigIntValue);
243+
return supported.BigInt && checkBoxedPrimitive(value, bigIntValue);
258244
}
259245
},
260246
{
261247
name: 'isSymbolObject',
262-
supported: supported.Symbol,
263248
function: function isSymbolObject(value) {
264-
return checkBoxedPrimitive(value, symbolValue);
249+
return supported.Symbol && checkBoxedPrimitive(value, symbolValue);
265250
}
266251
},
267252
{
@@ -271,41 +256,39 @@ var methods = [
271256
exports.isNumberObject(value) ||
272257
exports.isStringObject(value) ||
273258
exports.isBooleanObject(value) ||
274-
(supported.BigInt && exports.isBigIntObject(value)) ||
275-
(supported.Symbol && exports.isSymbolObject(value))
259+
exports.isBigIntObject(value) ||
260+
exports.isSymbolObject(value)
276261
);
277262
}
278263
},
279264
{
280265
name: 'isAnyArrayBuffer',
281-
supported: supported.Uint8Array,
282266
function: function isAnyArrayBuffer(value) {
283-
return (
267+
return supported.Uint8Array && (
284268
exports.isArrayBuffer(value) ||
285269
exports.isSharedArrayBuffer(value)
286270
);
287271
}
288272
},
289273
{
290274
name: 'isProxy',
291-
supported: false
275+
disabled: true
292276
},
293277
{
294278
name: 'isExternal',
295-
supported: false
279+
disabled: true
296280
},
297281
{
298282
name: 'isModuleNamespaceObject',
299-
supported: false
283+
disabled: true
300284
},
301285
];
302286

303287
methods.forEach(function(method) {
304-
const supported = method.supported !== false;
305288
Object.defineProperty(exports, method.name, {
306-
enumerable: supported,
307-
value: supported ? method.function : function() {
308-
throw new Error(method.name + ' is not supported');
289+
enumerable: !method.disabled,
290+
value: !method.disabled ? method.function : function() {
291+
throw new Error(method.name + ' is not supported in userland');
309292
}
310293
});
311294
});

0 commit comments

Comments
 (0)