1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- const withNativeArrayBuffer = typeof ArrayBuffer === "function";
- const isView = (obj) => {
- return typeof ArrayBuffer.isView === "function"
- ? ArrayBuffer.isView(obj)
- : obj.buffer instanceof ArrayBuffer;
- };
- const toString = Object.prototype.toString;
- const withNativeBlob = typeof Blob === "function" ||
- (typeof Blob !== "undefined" &&
- toString.call(Blob) === "[object BlobConstructor]");
- const withNativeFile = typeof File === "function" ||
- (typeof File !== "undefined" &&
- toString.call(File) === "[object FileConstructor]");
- /**
- * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.
- *
- * @private
- */
- export function isBinary(obj) {
- return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||
- (withNativeBlob && obj instanceof Blob) ||
- (withNativeFile && obj instanceof File));
- }
- export function hasBinary(obj, toJSON) {
- if (!obj || typeof obj !== "object") {
- return false;
- }
- if (Array.isArray(obj)) {
- for (let i = 0, l = obj.length; i < l; i++) {
- if (hasBinary(obj[i])) {
- return true;
- }
- }
- return false;
- }
- if (isBinary(obj)) {
- return true;
- }
- if (obj.toJSON &&
- typeof obj.toJSON === "function" &&
- arguments.length === 1) {
- return hasBinary(obj.toJSON(), true);
- }
- for (const key in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {
- return true;
- }
- }
- return false;
- }
|