Sha256: f2e63bdab12c76bd239b36b1e2e7bf825590651f26b99a5f485a2e4ada98d6d0
Contents?: true
Size: 1.84 KB
Versions: 34
Compression:
Stored size: 1.84 KB
Contents
/*! * shallow-clone <https://github.com/jonschlinkert/shallow-clone> * * Copyright (c) 2015-present, Jon Schlinkert. * Released under the MIT License. */ 'use strict'; const valueOf = Symbol.prototype.valueOf; const typeOf = require('kind-of'); function clone(val, deep) { switch (typeOf(val)) { case 'array': return val.slice(); case 'object': return Object.assign({}, val); case 'date': return new val.constructor(Number(val)); case 'map': return new Map(val); case 'set': return new Set(val); case 'buffer': return cloneBuffer(val); case 'symbol': return cloneSymbol(val); case 'arraybuffer': return cloneArrayBuffer(val); case 'float32array': case 'float64array': case 'int16array': case 'int32array': case 'int8array': case 'uint16array': case 'uint32array': case 'uint8clampedarray': case 'uint8array': return cloneTypedArray(val); case 'regexp': return cloneRegExp(val); case 'error': return Object.create(val); default: { return val; } } } function cloneRegExp(val) { const flags = val.flags !== void 0 ? val.flags : (/\w+$/.exec(val) || void 0); const re = new val.constructor(val.source, flags); re.lastIndex = val.lastIndex; return re; } function cloneArrayBuffer(val) { const res = new val.constructor(val.byteLength); new Uint8Array(res).set(new Uint8Array(val)); return res; } function cloneTypedArray(val, deep) { return new val.constructor(val.buffer, val.byteOffset, val.length); } function cloneBuffer(val) { const len = val.length; const buf = Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : Buffer.from(len); val.copy(buf); return buf; } function cloneSymbol(val) { return valueOf ? Object(valueOf.call(val)) : {}; } /** * Expose `clone` */ module.exports = clone;
Version data entries
34 entries across 33 versions & 9 rubygems