mirror of
https://github.com/titanscouting/tra-analysis.git
synced 2025-09-23 05:40:19 +00:00
push all website files
This commit is contained in:
75
website/functions/node_modules/firebase-admin/lib/utils/deep-copy.js
generated
vendored
Normal file
75
website/functions/node_modules/firebase-admin/lib/utils/deep-copy.js
generated
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
/*! firebase-admin v6.0.0 */
|
||||
"use strict";
|
||||
/*!
|
||||
* Copyright 2017 Google Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
/**
|
||||
* Returns a deep copy of an object or array.
|
||||
*
|
||||
* @param {object|array} value The object or array to deep copy.
|
||||
* @return {object|array} A deep copy of the provided object or array.
|
||||
*/
|
||||
function deepCopy(value) {
|
||||
return deepExtend(undefined, value);
|
||||
}
|
||||
exports.deepCopy = deepCopy;
|
||||
/**
|
||||
* Copies properties from source to target (recursively allows extension of objects and arrays).
|
||||
* Scalar values in the target are over-written. If target is undefined, an object of the
|
||||
* appropriate type will be created (and returned).
|
||||
*
|
||||
* We recursively copy all child properties of plain objects in the source - so that namespace-like
|
||||
* objects are merged.
|
||||
*
|
||||
* Note that the target can be a function, in which case the properties in the source object are
|
||||
* copied onto it as static properties of the function.
|
||||
*
|
||||
* @param {any} target The value which is being extended.
|
||||
* @param {any} source The value whose properties are extending the target.
|
||||
* @return {any} The target value.
|
||||
*/
|
||||
function deepExtend(target, source) {
|
||||
if (!(source instanceof Object)) {
|
||||
return source;
|
||||
}
|
||||
switch (source.constructor) {
|
||||
case Date:
|
||||
// Treat Dates like scalars; if the target date object had any child
|
||||
// properties - they will be lost!
|
||||
var dateValue = source;
|
||||
return new Date(dateValue.getTime());
|
||||
case Object:
|
||||
if (target === undefined) {
|
||||
target = {};
|
||||
}
|
||||
break;
|
||||
case Array:
|
||||
// Always copy the array source and overwrite the target.
|
||||
target = [];
|
||||
break;
|
||||
default:
|
||||
// Not a plain Object - treat it as a scalar.
|
||||
return source;
|
||||
}
|
||||
for (var prop in source) {
|
||||
if (!source.hasOwnProperty(prop)) {
|
||||
continue;
|
||||
}
|
||||
target[prop] = deepExtend(target[prop], source[prop]);
|
||||
}
|
||||
return target;
|
||||
}
|
||||
exports.deepExtend = deepExtend;
|
Reference in New Issue
Block a user