123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = void 0;
- var _buffer = require("./buffer.js");
- var _global = require("./global.js");
- /**
- * copy ArrayBuffer
- *
- * @param {ArrayBuffer} value
- * @return {ArrayBuffer}
- */
- function copyArrayBuffer(value) {
- return value.slice(0);
- }
- /**
- * copy Boolean
- *
- * @param {Boolean} value
- * @return {Boolean}
- */
- function copyBoolean(value) {
- return new Boolean(value.valueOf());
- }
- /**
- * copy DataView
- *
- * @param {DataView} value
- * @return {DataView}
- */
- function copyDataView(value) {
- // TODO: copy ArrayBuffer?
- return new DataView(value.buffer);
- }
- /**
- * copy Buffer
- *
- * @param {Buffer} value
- * @return {Buffer}
- */
- function copyBuffer(value) {
- return (0, _buffer.copy)(value);
- }
- /**
- * copy Date
- *
- * @param {Date} value
- * @return {Date}
- */
- function copyDate(value) {
- return new Date(value.getTime());
- }
- /**
- * copy Number
- *
- * @param {Number} value
- * @return {Number}
- */
- function copyNumber(value) {
- return new Number(value);
- }
- /**
- * copy RegExp
- *
- * @param {RegExp} value
- * @return {RegExp}
- */
- function copyRegExp(value) {
- return new RegExp(value.source, value.flags);
- }
- /**
- * copy String
- *
- * @param {String} value
- * @return {String}
- */
- function copyString(value) {
- return new String(value);
- }
- /**
- * copy TypedArray
- *
- * @param {*} value
- * @return {*}
- */
- function copyTypedArray(value, type) {
- const typedArray = _global.globalObject[type];
- if (typedArray.from) {
- return _global.globalObject[type].from(value);
- }
- return new _global.globalObject[type](value);
- }
- /**
- * shallow copy
- *
- * @param {*} value
- * @return {*}
- */
- function shallowCopy(value) {
- return value;
- }
- /**
- * get empty Array
- *
- * @return {Array}
- */
- function getEmptyArray() {
- return [];
- }
- /**
- * get empty Map
- *
- * @return {Map}
- */
- function getEmptyMap() {
- return new Map();
- }
- /**
- * get empty Object
- *
- * @return {Object}
- */
- function getEmptyObject() {
- return {};
- }
- /**
- * get empty Set
- *
- * @return {Set}
- */
- function getEmptySet() {
- return new Set();
- }
- var _default = new Map([// deep copy
- ['ArrayBuffer', copyArrayBuffer], ['Boolean', copyBoolean], ['Buffer', copyBuffer], ['DataView', copyDataView], ['Date', copyDate], ['Number', copyNumber], ['RegExp', copyRegExp], ['String', copyString], // typed arrays
- // TODO: pass bound function
- ['Float32Array', copyTypedArray], ['Float64Array', copyTypedArray], ['Int16Array', copyTypedArray], ['Int32Array', copyTypedArray], ['Int8Array', copyTypedArray], ['Uint16Array', copyTypedArray], ['Uint32Array', copyTypedArray], ['Uint8Array', copyTypedArray], ['Uint8ClampedArray', copyTypedArray], // shallow copy
- ['Array Iterator', shallowCopy], ['Map Iterator', shallowCopy], ['Promise', shallowCopy], ['Set Iterator', shallowCopy], ['String Iterator', shallowCopy], ['function', shallowCopy], ['global', shallowCopy], // NOTE: WeakMap and WeakSet cannot get entries
- ['WeakMap', shallowCopy], ['WeakSet', shallowCopy], // primitives
- ['boolean', shallowCopy], ['null', shallowCopy], ['number', shallowCopy], ['string', shallowCopy], ['symbol', shallowCopy], ['undefined', shallowCopy], // collections
- // NOTE: return empty value, because recursively copy later.
- ['Arguments', getEmptyArray], ['Array', getEmptyArray], ['Map', getEmptyMap], ['Object', getEmptyObject], ['Set', getEmptySet] // NOTE: type-detect returns following types
- // 'Location'
- // 'Document'
- // 'MimeTypeArray'
- // 'PluginArray'
- // 'HTMLQuoteElement'
- // 'HTMLTableDataCellElement'
- // 'HTMLTableHeaderCellElement'
- // TODO: is type-detect never return 'object'?
- // 'object'
- ]);
- exports.default = _default;
- //# sourceMappingURL=copy_map.js.map
|