Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.mdns.eu/nextcloud/passwords-client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius David Wieschollek <passwords.public@mdns.eu>2020-01-10 16:14:09 +0300
committerMarius David Wieschollek <passwords.public@mdns.eu>2020-01-10 16:14:09 +0300
commit8d26736cf82f63d2306a393e8943b3438e3f9a2c (patch)
tree071a7d26edf82d2dfc08f8433365aa7ab03a790c /src/Utility
parent6444dd8308ae7740f56e8ffb964c4b81bc9032c0 (diff)
Separate server and api in different classes
Signed-off-by: Marius David Wieschollek <passwords.public@mdns.eu>
Diffstat (limited to 'src/Utility')
-rw-r--r--src/Utility/ObjectClone.js33
-rw-r--r--src/Utility/ObjectMerger.js28
2 files changed, 61 insertions, 0 deletions
diff --git a/src/Utility/ObjectClone.js b/src/Utility/ObjectClone.js
new file mode 100644
index 0000000..ca18f47
--- /dev/null
+++ b/src/Utility/ObjectClone.js
@@ -0,0 +1,33 @@
+class ObjectClone {
+
+ /**
+ *
+ * @param {Object} object
+ * @return {Object}
+ */
+ clone(object) {
+ if(typeof object !== 'object') return object;
+
+ let clone = new object.constructor();
+ for(let key in object) {
+ if(!object.hasOwnProperty(key)) continue;
+ let element = object[key];
+
+ if(Array.isArray(element)) {
+ clone[key] = element.slice(0);
+ } else if(element instanceof Date) {
+ clone[key] = new Date(element.getTime());
+ } else if(element === null) {
+ clone[key] = null;
+ } else if(typeof element === 'object') {
+ clone[key] = this.clone(element);
+ } else {
+ clone[key] = element;
+ }
+ }
+
+ return clone;
+ }
+}
+
+export default new ObjectClone(); \ No newline at end of file
diff --git a/src/Utility/ObjectMerger.js b/src/Utility/ObjectMerger.js
new file mode 100644
index 0000000..e1d31f5
--- /dev/null
+++ b/src/Utility/ObjectMerger.js
@@ -0,0 +1,28 @@
+import ObjectClone from './ObjectClone';
+
+class ObjectMerger {
+ merge(target, source) {
+ for(let key in source) {
+ if(!source.hasOwnProperty(key)) continue;
+
+ if(!target.hasOwnProperty(key) || target[key] === null) {
+ target[key] = ObjectClone.clone(source[key]);
+ }
+
+ let targetValue = target[key],
+ sourceValue = source[key];
+
+ if(typeof targetValue === 'object' && typeof sourceValue === 'object') {
+ target[key] = this.merge(targetValue, sourceValue);
+ } else if(Array.isArray(targetValue) && Array.isArray(sourceValue)) {
+ target[key] = targetValue.concat(sourceValue);
+ } else {
+ target[key] = ObjectClone.clone(sourceValue);
+ }
+ }
+
+ return target;
+ }
+}
+
+export default new ObjectMerger(); \ No newline at end of file