@resolveio/server-lib 12.5.66 → 12.5.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/util/common.js +24 -17
- package/util/common.js.map +1 -1
package/package.json
CHANGED
package/util/common.js
CHANGED
|
@@ -270,20 +270,27 @@ exports.getDeepDiff = getDeepDiff;
|
|
|
270
270
|
function deepDiffDetails(obj1, obj2) {
|
|
271
271
|
var diff = (0, deep_object_diff_1.detailedDiff)(obj1, obj2);
|
|
272
272
|
var diffString = '';
|
|
273
|
-
var
|
|
274
|
-
var str =
|
|
275
|
-
Object.keys(
|
|
276
|
-
if (
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
str += "".concat(toTitleCase(key.replace(/_/g, ' ')), ": {").concat(
|
|
273
|
+
var formatObjectDiff = function (obj1, obj2) {
|
|
274
|
+
var str = '';
|
|
275
|
+
Object.keys(obj1).forEach(function (key) {
|
|
276
|
+
if (Array.isArray(obj1[key]) && Array.isArray(obj2[key])) {
|
|
277
|
+
str += "".concat(toTitleCase(key.replace(/_/g, ' ')), ": [\"").concat(obj1[key].join('", "'), "\" to \"").concat(obj2[key].join('", "'), "\"], ");
|
|
278
|
+
}
|
|
279
|
+
else if (typeof obj1[key] === 'object' && obj1[key] !== null && obj2[key] !== null) {
|
|
280
|
+
str += "".concat(toTitleCase(key.replace(/_/g, ' ')), ": { ").concat(formatObjectDiff(obj1[key], obj2[key]), "}, ");
|
|
281
281
|
}
|
|
282
282
|
else {
|
|
283
|
-
str += "".concat(toTitleCase(key.replace(/_/g, ' ')), ": \"").concat(
|
|
283
|
+
str += "".concat(toTitleCase(key.replace(/_/g, ' ')), ": \"").concat(obj1[key], "\" to \"").concat(obj2[key], "\", ");
|
|
284
284
|
}
|
|
285
285
|
});
|
|
286
|
-
return str.slice(0, -2)
|
|
286
|
+
return str.slice(0, -2);
|
|
287
|
+
};
|
|
288
|
+
var formatDiff = function (changeType, items) {
|
|
289
|
+
var str = "".concat(changeType, ":\n");
|
|
290
|
+
Object.keys(items).forEach(function (key) {
|
|
291
|
+
str += "".concat(toTitleCase(key.replace(/_/g, ' ')), ": \"").concat(items[key], "\",\n");
|
|
292
|
+
});
|
|
293
|
+
return str.slice(0, -2) + '\n';
|
|
287
294
|
};
|
|
288
295
|
if (Object.keys(diff.added).length > 0) {
|
|
289
296
|
diffString += formatDiff('Added', diff.added);
|
|
@@ -292,24 +299,24 @@ function deepDiffDetails(obj1, obj2) {
|
|
|
292
299
|
diffString += formatDiff('Deleted', diff.deleted);
|
|
293
300
|
}
|
|
294
301
|
if (Object.keys(diff.updated).length > 0) {
|
|
295
|
-
diffString += 'Updated
|
|
302
|
+
diffString += 'Updated:\n';
|
|
296
303
|
Object.keys(diff.updated).forEach(function (key) {
|
|
297
304
|
if (key.substr(0, 2) !== 'id') {
|
|
298
305
|
if (moment.isDate(diff.updated[key])) {
|
|
299
306
|
diffString += "".concat(toTitleCase(key.replace(/_/g, ' ')), ": \"").concat(moment(diff.updated[key]).format('llll'), "\" to \"").concat(moment(obj2[key]).format('llll'), "\",\n");
|
|
300
307
|
}
|
|
301
|
-
else if (typeof diff.updated[key] === 'object' && !Array.isArray(diff.updated[key])) {
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
diffString += "".concat(toTitleCase(key.replace(/_/g, ' ')), ":
|
|
308
|
+
else if (typeof diff.updated[key] === 'object' && !Array.isArray(diff.updated[key]) && diff.updated[key] !== null && obj2[key] !== null) {
|
|
309
|
+
diffString += "".concat(toTitleCase(key.replace(/_/g, ' ')), ": {").concat(formatObjectDiff(diff.updated[key], obj2[key]), "},\n");
|
|
310
|
+
}
|
|
311
|
+
else if (Array.isArray(diff.updated[key]) && Array.isArray(obj2[key])) {
|
|
312
|
+
diffString += "".concat(toTitleCase(key.replace(/_/g, ' ')), ": [\"").concat(diff.updated[key].join('", "'), "\" to \"").concat(obj2[key].join('", "'), "\"],\n");
|
|
306
313
|
}
|
|
307
314
|
else {
|
|
308
315
|
diffString += "".concat(toTitleCase(key.replace(/_/g, ' ')), ": \"").concat(diff.updated[key], "\" to \"").concat(obj2[key], "\",\n");
|
|
309
316
|
}
|
|
310
317
|
}
|
|
311
318
|
});
|
|
312
|
-
diffString = diffString.slice(0, -2) + '\n';
|
|
319
|
+
diffString = diffString.slice(0, -2) + '\n';
|
|
313
320
|
}
|
|
314
321
|
return diffString;
|
|
315
322
|
}
|
package/util/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/util/common.ts"],"names":[],"mappings":"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","file":"common.js","sourcesContent":["let rusDiff = require('rus-diff');\nlet deepDiff = require('deep-diff').diff;\nimport { detailedDiff } from 'deep-object-diff';\nimport { LookupTables } from '../models/report-builder.model';\nlet clone = require('clone');\nimport * as moment from 'moment';\n\nexport function buildRbSchema(rbSchema: any) {\n\tObject.keys(rbSchema).forEach(key => {\n\t\tif (rbSchema[key].type === Object) {\n\t\t\trbSchema[key].type = 'Object';\n\t\t\trbSchema[key].rbType = 'Object';\n\t\t}\n\t\telse if (rbSchema[key].type === Array) {\n\t\t\trbSchema[key].type = 'Array';\n\t\t\trbSchema[key].rbType = 'Array';\n\t\t}\n\t\telse if (rbSchema[key].type === String) {\n\t\t\trbSchema[key].type = 'String';\n\t\t\trbSchema[key].rbType = 'String';\n\t\t}\n\t\telse if (rbSchema[key].type === Date) {\n\t\t\trbSchema[key].type = 'Date';\n\t\t\trbSchema[key].rbType = 'Date';\n\t\t}\n\t\telse if (rbSchema[key].type === Number) {\n\t\t\trbSchema[key].type = 'Number';\n\t\t\trbSchema[key].rbType = 'Number';\n\t\t}\n\t\telse if (rbSchema[key].type === Boolean) {\n\t\t\trbSchema[key].rbType = 'Boolean';\n\t\t\trbSchema[key].type = 'Boolean';\n\t\t}\n\t});\n\n\tObject.keys(rbSchema).forEach(key => {\n\t\tdelete rbSchema[key].type;\n\t});\n\n\treturn rbSchema;\n}\n\nexport function buildRbLookups(rbLookups: LookupTables[], defaultSchema: object, default_checked_array: string[] = []) {\n\t// Remember: lkp.local_key will be removed later on, because it has 'id_'\n\t\n\trbLookups.forEach(lkp => {\n\t\tlet errString = '';\n\t\tlet localKey, newPropertyName;\n\t\tlet localKeyDir = '';\n\t\tlet localKeyDirDot = '';\n\t\tlet collectionAlias = toTitleCase(lkp.lookup.replace(/\\_/g, ' ')) + ' (' + toTitleCase(lkp.local_key.replace('id_', '').replace(/\\_/g, ' ').replace(/\\.\\$\\./g, ' -> ').replace(/\\./g, ' -> ')) + ') (Lookup)';\n\n\t\tif (lkp.local_key.match(/\\./)) {\n\t\t\tlocalKey = lkp.local_key.replace(/\\.\\$/g, '');\n\t\t\tlocalKeyDirDot = lkp.local_key.replace(/^(.+\\.).*$/, '$1');\n\t\t\tlocalKeyDir = localKeyDirDot.replace(/\\.$/, '');\n\t\t}\n\t\telse {\n\t\t\t// local_key is a root leaf node.\n\t\t\tlocalKey = lkp.local_key;\n\t\t}\n\t\tnewPropertyName = localKeyDirDot + collectionAlias;\n\t\t\n\t\tif (!defaultSchema[lkp.local_key]) {\n\t\t\terrString += '--local_key: \\'' + lkp.local_key + '\\' MUST be a valid schema path! ';\n\t\t}\n\t\telse if (defaultSchema[lkp.local_key].type !== String) {\n\t\t\terrString += '--local_key: \\'' + lkp.local_key + '\\' MUST be a String! ';\n\t\t}\n\t\tlet lookupNode = {\n\t\t\tlookup_collection: lkp.lookup,\n\t\t\tlookup_collection_alias: collectionAlias,\n\t\t\tlocal_key: localKey,\n\t\t\tfield_path: localKeyDir,\n\t\t\tlookup_as: newPropertyName,\n\t\t\tlookup_key: '_id',\n\t\t\ttype: 'Object',\n\t\t};\n\n\t\tdefaultSchema[newPropertyName] = lookupNode;\n\n\t\tif (errString) {\n\t\t\tthrowErr(errString, lkp, lookupNode, newPropertyName);\n\t\t}\n\t});\n\n\tfor (let ii = 0; ii < default_checked_array.length; ii++) {\n\t\tdefaultSchema[default_checked_array[ii]] = {};\n\t\tdefaultSchema[default_checked_array[ii]]['default_checked'] = true;\n\t\tObject.assign(defaultSchema[default_checked_array[ii]], defaultSchema['tree'][default_checked_array[ii]]);\n\t}\n\n\treturn defaultSchema;\n}\n\nexport function throwErr(err: any, lkp, lookupNode, newPropertyName = '') {\n\t// err could be from a try/throw/catch\n\tconsole.log('------- ERROR thrown by rbLookups: ');\n\tconsole.log(err);\n\tconsole.log('---item: ');\n\tconsole.log(lkp);\n\tconsole.log('---Attempted to create rbSchema[\\'' + newPropertyName + '\\']: ');\n\tconsole.log(lookupNode);\n\tprocess.exit(1);\n}\n\nexport function roundPrecision(value: number, precision = 0) {\n\tlet stringValue = value.toString();\n\t\n\tif (stringValue.includes('.')) {\n\t\tif (stringValue[0] === '0') {\n\t\t\tprecision += 1;\n\t\t}\n\t\t\n\t\tprecision -= stringValue.indexOf('.');\n\t}\n\n\tconst exponent = Math.pow(10, precision);\n\treturn Math.round(parseFloat(stringValue) * exponent) / exponent;\n}\n\nexport function floorPrecision(value: number, precision = 0) {\n\tlet stringValue = value.toString();\n\t\n\tif (stringValue.includes('.')) {\n\t\tif (stringValue[0] === '0') {\n\t\t\tprecision += 1;\n\t\t}\n\t\t\n\t\tprecision -= stringValue.indexOf('.');\n\t}\n\n\tconst exponent = Math.pow(10, precision);\n\treturn Math.floor(parseFloat(stringValue) * exponent) / exponent;\n}\n\nexport function deepCopy(value) {\n\treturn clone(value);\n}\n\nexport function dateReviver(key, value) {\n\tif (typeof value === 'string') {\n\t\tlet a = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n\t\tif (a) {\n\t\t\treturn new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6].split('.')[0], +a[6].split('.')[1]));\n\t\t}\n\t}\n\treturn value;\n}\n\nexport function getMongoUpdates(currDoc, modifiedDoc, incVersion) {\n\tif (currDoc.createdAt) {\n\t\tmodifiedDoc.createdAt = currDoc.createdAt;\n\t}\n\n\tif (currDoc.updatedAt) {\n\t\tmodifiedDoc.updatedAt = currDoc.updatedAt;\n\t}\n\n\tlet updates = rusDiff.diff(currDoc, modifiedDoc);\n\n\tif (updates) {\n\t\tif (updates.$set && !Object.keys(updates.$set).length) {\n\t\t\tdelete updates.$set;\n\t\t}\n\n\t\tif (incVersion) {\n\t\t\tupdates.$inc = {__v: 1};\n\t\t}\n\t}\n\telse {\n\t\tif (incVersion) {\n\t\t\tupdates = {\n\t\t\t\t$inc: {__v: 1}\n\t\t\t};\n\t\t}\n\t}\n\n\treturn updates;\n}\n\nexport function getMongoMergeUpdatedDoc(f_doc, currentDoc, oldDoc) {\n\tlet upDoc = deepCopy(oldDoc);\n\tupDoc.__v = currentDoc.__v;\n\tlet diff_1 = getDeepDiff(oldDoc, currentDoc);\n\tlet diff_2 = getDeepDiff(oldDoc, f_doc);\n\tlet updates = mergeUpdates(diff_2, diff_1);\n\tapplyMongoUpdate(upDoc, updates);\n\treturn upDoc;\n}\n\nexport function mergeUpdates(...updatesToMerge) {\n\tlet merged = {\n\t\t$set: {},\n\t\t$unset: {},\n\t\t$inc: {},\n\t\t$push: {},\n\t\t$pull: {}\n\t};\n\n\tupdatesToMerge.filter(a => a).forEach(anUpdate => {\n\t\tanUpdate.forEach(change => {\n\t\t\tlet path = change.path[0];\n\n\t\t\tfor (let i = 1; i < change.path.length; i++) {\n\t\t\t\tpath += '.' + change.path[i];\n\t\t\t}\n\n\t\t\tif (change.kind === 'E') {\n\t\t\t\tif (typeof(change.rhs) === 'number' && path.endsWith('quantity')) {\n\t\t\t\t\tif (merged.$inc[path]) {\n\t\t\t\t\t\tmerged.$inc[path] += change.rhs - change.lhs;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tmerged.$inc[path] = change.rhs - change.lhs;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tmerged.$set[path] = change.rhs;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (change.kind === 'A') {\n\t\t\t\tif (change.item.kind === 'N') {\n\t\t\t\t\t\n\t\t\t\t\tif (!merged.$push[path] || JSON.stringify(merged.$push[path]) !== JSON.stringify(change.item.rhs)) {\n\t\t\t\t\t\tif (!merged.$push[path]) {\n\t\t\t\t\t\t\tmerged.$push[path] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!merged.$push[path].filter(a => JSON.stringify(a) === JSON.stringify(change.item.rhs)).length) {\n\t\t\t\t\t\t\tmerged.$push[path].push(change.item.rhs);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (change.item.kind === 'D') {\n\t\t\t\t\tif (!merged.$pull[path] || JSON.stringify(merged.$pull[path]) !== JSON.stringify(change.item.lhs)) {\n\t\t\t\t\t\tif (!merged.$pull[path]) {\n\t\t\t\t\t\t\tmerged.$pull[path] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!merged.$pull[path].filter(a => JSON.stringify(a) === JSON.stringify(change.item.lhs)).length) {\n\t\t\t\t\t\t\tmerged.$pull[path].push(change.item.lhs);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (change.item.kind === 'E') {\n\t\t\t\t\tconsole.log('Condition E not satisfied.');\n\t\t\t\t\t// if (!merged.$pull[path] || JSON.stringify(merged.$pull[path]) !== JSON.stringify(change.item.lhs)) {\n\t\t\t\t\t// \tmerged.$pull[path] = change.item.lhs;\n\t\t\t\t\t// }\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\treturn merged;\n}\n\nexport function getDeepDiff(doc1, doc2) {\n\tdelete doc1._id;\n\tdelete doc1.__v;\n\n\tif (doc1.updatedAt) {\n\t\tdelete doc1.updatedAt;\n\t}\n\n\tif (doc1.createdAt) {\n\t\tdelete doc1.createdAt;\n\t}\n\n\tdelete doc2._id;\n\tdelete doc2.__v;\n\n\tif (doc2.updatedAt) {\n\t\tdelete doc2.updatedAt;\n\t}\n\n\tif (doc2.createdAt) {\n\t\tdelete doc2.createdAt;\n\t}\n\n\treturn deepDiff(doc1, doc2);\n}\n\nexport function deepDiffDetails(obj1: Object, obj2: Object): string {\n\tlet diff = detailedDiff(obj1, obj2);\n\t\n\tlet diffString = '';\n\n\tconst formatDiff = (changeType: string, items: any) => {\n\t\tlet str = `${changeType}:\\n`;\n\n\t\tObject.keys(items).forEach(key => {\n\t\t\tif (typeof items[key] === 'object' && !Array.isArray(items[key])) {\n\t\t\t\tlet objUpdates = Object.keys(items[key]).map(objKey => \n\t\t\t\t\t`${toTitleCase(objKey.replace(/_/g, ' '))}: \"${items[key][objKey]}\"`\n\t\t\t\t).join(', ');\n\n\t\t\t\tstr += `${toTitleCase(key.replace(/_/g, ' '))}: {${objUpdates}},\\n`;\n\t\t\t} \n\t\t\telse {\n\t\t\t\tstr += `${toTitleCase(key.replace(/_/g, ' '))}: \"${items[key]}\",\\n`;\n\t\t\t}\n\t\t});\n\n\t\treturn str.slice(0, -2) + '\\n'; // Removing the last ',\\n' and adding a newline at the end\n\t};\n\n\tif (Object.keys(diff.added).length > 0) {\n\t\tdiffString += formatDiff('Added', diff.added);\n\t}\n\n\tif (Object.keys(diff.deleted).length > 0) {\n\t\tdiffString += formatDiff('Deleted', diff.deleted);\n\t}\n\n\tif (Object.keys(diff.updated).length > 0) {\n\t\tdiffString += 'Updated: \\n';\n\t\tObject.keys(diff.updated).forEach(key => {\n\t\t\tif (key.substr(0, 2) !== 'id') {\n\t\t\tif (moment.isDate(diff.updated[key])) {\n\t\t\t\tdiffString += `${toTitleCase(key.replace(/_/g, ' '))}: \"${moment(diff.updated[key]).format('llll')}\" to \"${moment(obj2[key]).format('llll')}\",\\n`;\n\t\t\t} else if (typeof diff.updated[key] === 'object' && !Array.isArray(diff.updated[key])) {\n\t\t\t\tlet objUpdates = Object.keys(diff.updated[key]).map(objKey => \n\t\t\t\t`${toTitleCase(objKey.replace(/_/g, ' '))}: \"${diff.updated[key][objKey]}\" to \"${obj2[key][objKey]}\"`\n\t\t\t\t).join(', ');\n\n\t\t\t\tdiffString += `${toTitleCase(key.replace(/_/g, ' '))}: {${objUpdates}},\\n`;\n\t\t\t} else {\n\t\t\t\tdiffString += `${toTitleCase(key.replace(/_/g, ' '))}: \"${diff.updated[key]}\" to \"${obj2[key]}\",\\n`;\n\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tdiffString = diffString.slice(0, -2) + '\\n'; // Removing the last ',\\n'\n\t}\n \n\treturn diffString;\n}\n\n// export function deepDiffDetails(obj1: Object, obj2: Object) {\n// \tlet diff = detailedDiff(obj1, obj2);\n// \tlet newDiff = detailedDiff(obj2, obj1);\n\t\n// \tlet diffString = '';\n\t\t\n// \tif ((Object.keys(diff['updated']).length)) {\n// \t\t// if (Object.keys(diff['added']).length){\n// \t\t// \tdiffString += '; ';\n// \t\t// }\n\t\t\n// \t\t// if (Object.keys(diff['deleted']).length) {\n// \t\t// \tdiffString += '; ';\n// \t\t// }\n\t\t\t\t\t\n// \t\tfor (let i = 0; i < Object.keys(diff['updated']).length; i++) {\n// \t\t\tif (!Array.isArray(obj1[Object.keys(diff['updated'])[i]])) {\n// \t\t\t\tlet key = Object.keys(diff['updated'])[i];\n// \t\t\t\tlet newKey = Object.keys(newDiff['updated'])[i];\n\n// \t\t\t\tif ((key.substr(0, 2) !== 'id')){\n// \t\t\t\t\tif (diff['updated'][key] && moment.isDate(diff['updated'][key])) {\n// \t\t\t\t\t\tdiffString += 'Updated: \\n' + toTitleCase(key.replace(/_/g, ' ')) + ': \"' + moment(diff['updated'][key]).format('llll') + '\" to \"' + moment(newDiff['updated'][newKey]).format('llll') + '\"\\n';\n// \t\t\t\t\t}\n// \t\t\t\t\telse if (diff['updated'][key] && typeof(diff['updated'][key]) === 'object') {\n// \t\t\t\t\t\tlet objString = '';\n\n// \t\t\t\t\t\tfor (let j = 0; j < Object.keys(diff['updated'][key]).length; j++) {\n// \t\t\t\t\t\t\tlet objKey = Object.keys(diff['updated'][key])[j];\n// \t\t\t\t\t\t\tlet newObjKey = Object.keys(newDiff['updated'][key])[j];\n\n// \t\t\t\t\t\t\tif (j > 0) {\n// \t\t\t\t\t\t\t\tobjString += 'll, \\n';\n// \t\t\t\t\t\t\t}\n// \t\t\t\t\t\t\tobjString += toTitleCase(objKey.replace(/_/g, ' ')) + ': \"' + diff['updated'][key][objKey] + '\" to \"' + newDiff['updated'][key][newObjKey] + '\"' + (j < Object.keys(diff['updated'][key]).length - 1 ? ', ' : '');\n\t\t\t\t\t\t\t\n// \t\t\t\t\t\t}\n// \t\t\t\t\t\tdiffString += 'Updated: \\n' + objString + '\\n';\n// \t\t\t\t\t}\n// \t\t\t\t\telse{\n// \t\t\t\t\t\tdiffString += 'Updated: \\n' + toTitleCase(key.replace(/_/g, ' ')) + ': \"' + diff['updated'][key] + '\" to \"' + newDiff['updated'][newKey] + '\"' + (i < Object.keys(diff['updated']).length - 1 ? '\\n' : '');\n// \t\t\t\t\t}\n// \t\t\t\t}\n// \t\t\t}\n// \t\t}\n// \t}\n\t\n// \treturn diffString;\n// }\n\nexport function applyMongoUpdate(uDoc, delta) {\n\tlet orig, k, pathk, vk, n, n1, n2, name, o, o1, o2, ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9a, ref9b, ref10, ref11, ref12a, ref12b, ref13, v;\n\n\torig = deepCopy(uDoc);\n\n\tif (delta != null) {\n\t\tif (delta.$rename != null) {\n\t\t\tref = delta.$rename;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (k in ref) {\n\t\t\t\tv = ref[k];\n\t\t\t\tref1 = resolve(uDoc, k), o1 = ref1[0], n1 = ref1[1];\n\t\t\t\tref2 = resolve(uDoc, v), o2 = ref2[0], n2 = ref2[1];\n\t\t\t\tif ((o1 != null) && n1.length === 1) {\n\t\t\t\t\tif ((o2 != null) && n2.length === 1) {\n\t\t\t\t\t\to2[n2[0]] = o1[n1[0]];\n\t\t\t\t\t\tdelete o1[n1[0]];\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// throw new Error(o2 + '/' + n2 + ' - couldn\\'t resolve first for ' + uDoc + ' ' + v);\n\t\t\t\t\t\tconsole.log('Error', o2 + '/' + n2 + ' - couldn\\'t resolve first for ' + uDoc + ' ' + v);\n\t\t\t\t\t}\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\t// throw new Error(o1 + '/' + n1 + ' - couldn\\'t resolve second for ' + uDoc + ' ' + k);\n\t\t\t\t\tconsole.log('Error', o1 + '/' + n1 + ' - couldn\\'t resolve second for ' + uDoc + ' ' + k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$set != null) {\n\t\t\tref3 = delta.$set;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (k in ref3) {\n\t\t\t\tv = ref3[k];\n\t\t\t\tref4 = resolve(uDoc, k, {\n\t\t\t\t\tforce: true\n\t\t\t\t}), o = ref4[0], n = ref4[1];\n\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\to[n[0]] = v;\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t set for ' + uDoc + ' ' + k);\n\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t set for ' + uDoc + ' ' + k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$inc != null) {\n\t\t\tref5 = delta.$inc;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (k in ref5) {\n\t\t\t\tv = ref5[k];\n\t\t\t\tref6 = resolve(uDoc, k, {\n\t\t\t\tforce: true\n\t\t\t\t}), o = ref6[0], n = ref6[1];\n\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\tif (o[name = n[0]] == null) {\n\t\t\t\t\t\to[name] = 0;\n\t\t\t\t\t}\n\t\t\t\t\to[n[0]] += v;\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t set for ' + uDoc + ' ' + k);\n\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t set for ' + uDoc + ' ' + k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$unset != null) {\n\t\t\tref7 = delta.$unset;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (k in ref7) {\n\t\t\t\tv = ref7[k];\n\t\t\t\tref8 = resolve(uDoc, k), o = ref8[0], n = ref8[1];\n\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\tdelete o[n[0]];\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + k);\n\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$pull != null) {\n\t\t\tref9a = delta.$pull;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (pathk in ref9a) { // should only loop 1 time\n\t\t\t\tref9b = ref9a[pathk];\n\t\t\t\tfor (let kk = (ref9b.length - 1); kk >= 0; kk--) {\n\t\t\t\t\tvk = ref9b[kk];\n\t\t\t\t\t\n\t\t\t\t\tref10 = resolve(uDoc, pathk), o = ref10[0], n = ref10[1];\n\t\t\t\t\tref11 = resolve(orig, pathk), o2 = ref11[0], n2 = ref11[1];\n\t\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\t\to[n[0]].splice((<Array<any>>o2[n2[0]]).findIndex(z => JSON.stringify(z) === JSON.stringify(vk)), 1);\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + pathk);\n\t\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + pathk);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$push != null) {\n\t\t\tref12a = delta.$push;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (pathk in ref12a) { // should only loop 1 time\n\t\t\t\tref12b = ref12a[pathk];\n\t\t\t\t// for (let kk = 0; kk < ref12b.length; kk++) {\n\t\t\t\tfor (let kk = (ref12b.length - 1); kk >= 0; kk--) {\n\t\t\t\t\t\tvk = ref12b[kk];\n\n\t\t\t\t\tref13 = resolve(uDoc, pathk), o = ref13[0], n = ref13[1];\n\t\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\t\to[n[0]].push(vk);\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + pathk);\n\t\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + pathk);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn uDoc;\n}\n\nfunction resolve(a, path, options?) {\n\tlet e, k, last, stack;\n\tif (options == null) {\n\t\toptions = {};\n\t}\n\tstack = arrize(path);\n\tlast = [];\n\tif (stack.length > 0) {\n\t\tlast.unshift(stack.pop());\n\t}\n\te = a;\n\tif (e !== null) {\n\t\twhile ((k = stack.shift()) !== void 0) {\n\t\t\tif (e[k] !== void 0) {\n\t\t\te = e[k];\n\t\t\t} else {\n\t\t\tstack.unshift(k);\n\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (options.force) {\n\t\twhile ((k = stack.shift()) !== void 0) {\n\t\t\tif ((typeof stack[0] === 'number') || ((stack.length === 0) && (typeof last[0] === 'number'))) {\n\t\t\te[k] = [];\n\t\t\t} else {\n\t\t\te[k] = {};\n\t\t\t}\n\t\t\te = e[k];\n\t\t}\n\t} \n\telse {\n\t\twhile ((k = stack.pop()) !== void 0) {\n\t\t\tlast.unshift(k);\n\t\t}\n\t}\n\treturn [e, last];\n}\n\nfunction arrize(path, glue?) {\n\tif (glue == null) {\n\t\tglue = '.';\n\t}\n\treturn ((function() {\n\t\tif (Array.isArray(path)) {\n\t\t\treturn path.slice(0);\n\t\t} \n\t\telse {\n\t\t\tswitch (path) {\n\t\t\tcase void 0:\n\t\t\tcase null:\n\t\t\tcase false:\n\t\t\tcase '':\n\t\t\t\treturn [];\n\t\t\tdefault:\n\t\t\t\treturn path.toString().split(glue);\n\t\t\t}\n\t\t}\n\t})()).map(function(e) {\n\t\tswitch (e) {\n\t\t\tcase void 0:\n\t\t\tcase null:\n\t\t\tcase false:\n\t\t\tcase '':\n\t\t\treturn null;\n\t\t\tdefault:\n\t\t\treturn e.toString();\n\t\t}\n\t}).filter(function(e) {\n\t\treturn e != null;\n\t});\n}\n\n\nexport function getBinarySize(string) {\n\tif (string) {\n\t\treturn Buffer.byteLength(string, 'utf8');\n\t}\n\telse {\n\t\treturn 0;\n\t}\n}\n\nexport function pad(num, size) {\n\tlet s = num + '';\n\twhile (s.length < size) { s = '0' + s; }\n\treturn s;\n}\n\nexport function randomString(length, chars) {\n\tlet result = '';\n\tfor (let i = length; i > 0; --i) { result += chars[Math.floor(Math.random() * chars.length)]; }\n\treturn result;\n}\n\nexport function toTitleCase(str) {\n\treturn str.replace(/\\w\\S*/g, function(txt){\n\t\treturn txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n\t});\n}\n\nexport function isObject(item) {\n\treturn (item && typeof item === 'object' && !Array.isArray(item));\n}\n\nexport function mergeDeep(target, ...sources) {\n\tif (!sources.length) {\n\t\treturn target;\n\t}\n\tconst source = sources.shift();\n\n\tif (isObject(target) && isObject(source)) {\n\t\tfor (const key in source) {\n\t\t\tif (isObject(source[key])) {\n\t\t\t\tif (!target[key]) {\n\t\t\t\t\tObject.assign(target, { [key]: {} });\n\t\t\t\t}\n\t\t\t\tmergeDeep(target[key], source[key]);\n\t\t\t} \n\t\t\telse {\n\t\t\t\tObject.assign(target, { [key]: source[key] });\n\t\t\t}\n\t\t}\n\t}\n\n\treturn mergeDeep(target, ...sources);\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/util/common.ts"],"names":[],"mappings":"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","file":"common.js","sourcesContent":["let rusDiff = require('rus-diff');\nlet deepDiff = require('deep-diff').diff;\nimport { detailedDiff } from 'deep-object-diff';\nimport { LookupTables } from '../models/report-builder.model';\nlet clone = require('clone');\nimport * as moment from 'moment';\n\nexport function buildRbSchema(rbSchema: any) {\n\tObject.keys(rbSchema).forEach(key => {\n\t\tif (rbSchema[key].type === Object) {\n\t\t\trbSchema[key].type = 'Object';\n\t\t\trbSchema[key].rbType = 'Object';\n\t\t}\n\t\telse if (rbSchema[key].type === Array) {\n\t\t\trbSchema[key].type = 'Array';\n\t\t\trbSchema[key].rbType = 'Array';\n\t\t}\n\t\telse if (rbSchema[key].type === String) {\n\t\t\trbSchema[key].type = 'String';\n\t\t\trbSchema[key].rbType = 'String';\n\t\t}\n\t\telse if (rbSchema[key].type === Date) {\n\t\t\trbSchema[key].type = 'Date';\n\t\t\trbSchema[key].rbType = 'Date';\n\t\t}\n\t\telse if (rbSchema[key].type === Number) {\n\t\t\trbSchema[key].type = 'Number';\n\t\t\trbSchema[key].rbType = 'Number';\n\t\t}\n\t\telse if (rbSchema[key].type === Boolean) {\n\t\t\trbSchema[key].rbType = 'Boolean';\n\t\t\trbSchema[key].type = 'Boolean';\n\t\t}\n\t});\n\n\tObject.keys(rbSchema).forEach(key => {\n\t\tdelete rbSchema[key].type;\n\t});\n\n\treturn rbSchema;\n}\n\nexport function buildRbLookups(rbLookups: LookupTables[], defaultSchema: object, default_checked_array: string[] = []) {\n\t// Remember: lkp.local_key will be removed later on, because it has 'id_'\n\t\n\trbLookups.forEach(lkp => {\n\t\tlet errString = '';\n\t\tlet localKey, newPropertyName;\n\t\tlet localKeyDir = '';\n\t\tlet localKeyDirDot = '';\n\t\tlet collectionAlias = toTitleCase(lkp.lookup.replace(/\\_/g, ' ')) + ' (' + toTitleCase(lkp.local_key.replace('id_', '').replace(/\\_/g, ' ').replace(/\\.\\$\\./g, ' -> ').replace(/\\./g, ' -> ')) + ') (Lookup)';\n\n\t\tif (lkp.local_key.match(/\\./)) {\n\t\t\tlocalKey = lkp.local_key.replace(/\\.\\$/g, '');\n\t\t\tlocalKeyDirDot = lkp.local_key.replace(/^(.+\\.).*$/, '$1');\n\t\t\tlocalKeyDir = localKeyDirDot.replace(/\\.$/, '');\n\t\t}\n\t\telse {\n\t\t\t// local_key is a root leaf node.\n\t\t\tlocalKey = lkp.local_key;\n\t\t}\n\t\tnewPropertyName = localKeyDirDot + collectionAlias;\n\t\t\n\t\tif (!defaultSchema[lkp.local_key]) {\n\t\t\terrString += '--local_key: \\'' + lkp.local_key + '\\' MUST be a valid schema path! ';\n\t\t}\n\t\telse if (defaultSchema[lkp.local_key].type !== String) {\n\t\t\terrString += '--local_key: \\'' + lkp.local_key + '\\' MUST be a String! ';\n\t\t}\n\t\tlet lookupNode = {\n\t\t\tlookup_collection: lkp.lookup,\n\t\t\tlookup_collection_alias: collectionAlias,\n\t\t\tlocal_key: localKey,\n\t\t\tfield_path: localKeyDir,\n\t\t\tlookup_as: newPropertyName,\n\t\t\tlookup_key: '_id',\n\t\t\ttype: 'Object',\n\t\t};\n\n\t\tdefaultSchema[newPropertyName] = lookupNode;\n\n\t\tif (errString) {\n\t\t\tthrowErr(errString, lkp, lookupNode, newPropertyName);\n\t\t}\n\t});\n\n\tfor (let ii = 0; ii < default_checked_array.length; ii++) {\n\t\tdefaultSchema[default_checked_array[ii]] = {};\n\t\tdefaultSchema[default_checked_array[ii]]['default_checked'] = true;\n\t\tObject.assign(defaultSchema[default_checked_array[ii]], defaultSchema['tree'][default_checked_array[ii]]);\n\t}\n\n\treturn defaultSchema;\n}\n\nexport function throwErr(err: any, lkp, lookupNode, newPropertyName = '') {\n\t// err could be from a try/throw/catch\n\tconsole.log('------- ERROR thrown by rbLookups: ');\n\tconsole.log(err);\n\tconsole.log('---item: ');\n\tconsole.log(lkp);\n\tconsole.log('---Attempted to create rbSchema[\\'' + newPropertyName + '\\']: ');\n\tconsole.log(lookupNode);\n\tprocess.exit(1);\n}\n\nexport function roundPrecision(value: number, precision = 0) {\n\tlet stringValue = value.toString();\n\t\n\tif (stringValue.includes('.')) {\n\t\tif (stringValue[0] === '0') {\n\t\t\tprecision += 1;\n\t\t}\n\t\t\n\t\tprecision -= stringValue.indexOf('.');\n\t}\n\n\tconst exponent = Math.pow(10, precision);\n\treturn Math.round(parseFloat(stringValue) * exponent) / exponent;\n}\n\nexport function floorPrecision(value: number, precision = 0) {\n\tlet stringValue = value.toString();\n\t\n\tif (stringValue.includes('.')) {\n\t\tif (stringValue[0] === '0') {\n\t\t\tprecision += 1;\n\t\t}\n\t\t\n\t\tprecision -= stringValue.indexOf('.');\n\t}\n\n\tconst exponent = Math.pow(10, precision);\n\treturn Math.floor(parseFloat(stringValue) * exponent) / exponent;\n}\n\nexport function deepCopy(value) {\n\treturn clone(value);\n}\n\nexport function dateReviver(key, value) {\n\tif (typeof value === 'string') {\n\t\tlet a = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n\t\tif (a) {\n\t\t\treturn new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6].split('.')[0], +a[6].split('.')[1]));\n\t\t}\n\t}\n\treturn value;\n}\n\nexport function getMongoUpdates(currDoc, modifiedDoc, incVersion) {\n\tif (currDoc.createdAt) {\n\t\tmodifiedDoc.createdAt = currDoc.createdAt;\n\t}\n\n\tif (currDoc.updatedAt) {\n\t\tmodifiedDoc.updatedAt = currDoc.updatedAt;\n\t}\n\n\tlet updates = rusDiff.diff(currDoc, modifiedDoc);\n\n\tif (updates) {\n\t\tif (updates.$set && !Object.keys(updates.$set).length) {\n\t\t\tdelete updates.$set;\n\t\t}\n\n\t\tif (incVersion) {\n\t\t\tupdates.$inc = {__v: 1};\n\t\t}\n\t}\n\telse {\n\t\tif (incVersion) {\n\t\t\tupdates = {\n\t\t\t\t$inc: {__v: 1}\n\t\t\t};\n\t\t}\n\t}\n\n\treturn updates;\n}\n\nexport function getMongoMergeUpdatedDoc(f_doc, currentDoc, oldDoc) {\n\tlet upDoc = deepCopy(oldDoc);\n\tupDoc.__v = currentDoc.__v;\n\tlet diff_1 = getDeepDiff(oldDoc, currentDoc);\n\tlet diff_2 = getDeepDiff(oldDoc, f_doc);\n\tlet updates = mergeUpdates(diff_2, diff_1);\n\tapplyMongoUpdate(upDoc, updates);\n\treturn upDoc;\n}\n\nexport function mergeUpdates(...updatesToMerge) {\n\tlet merged = {\n\t\t$set: {},\n\t\t$unset: {},\n\t\t$inc: {},\n\t\t$push: {},\n\t\t$pull: {}\n\t};\n\n\tupdatesToMerge.filter(a => a).forEach(anUpdate => {\n\t\tanUpdate.forEach(change => {\n\t\t\tlet path = change.path[0];\n\n\t\t\tfor (let i = 1; i < change.path.length; i++) {\n\t\t\t\tpath += '.' + change.path[i];\n\t\t\t}\n\n\t\t\tif (change.kind === 'E') {\n\t\t\t\tif (typeof(change.rhs) === 'number' && path.endsWith('quantity')) {\n\t\t\t\t\tif (merged.$inc[path]) {\n\t\t\t\t\t\tmerged.$inc[path] += change.rhs - change.lhs;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tmerged.$inc[path] = change.rhs - change.lhs;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tmerged.$set[path] = change.rhs;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (change.kind === 'A') {\n\t\t\t\tif (change.item.kind === 'N') {\n\t\t\t\t\t\n\t\t\t\t\tif (!merged.$push[path] || JSON.stringify(merged.$push[path]) !== JSON.stringify(change.item.rhs)) {\n\t\t\t\t\t\tif (!merged.$push[path]) {\n\t\t\t\t\t\t\tmerged.$push[path] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!merged.$push[path].filter(a => JSON.stringify(a) === JSON.stringify(change.item.rhs)).length) {\n\t\t\t\t\t\t\tmerged.$push[path].push(change.item.rhs);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (change.item.kind === 'D') {\n\t\t\t\t\tif (!merged.$pull[path] || JSON.stringify(merged.$pull[path]) !== JSON.stringify(change.item.lhs)) {\n\t\t\t\t\t\tif (!merged.$pull[path]) {\n\t\t\t\t\t\t\tmerged.$pull[path] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!merged.$pull[path].filter(a => JSON.stringify(a) === JSON.stringify(change.item.lhs)).length) {\n\t\t\t\t\t\t\tmerged.$pull[path].push(change.item.lhs);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (change.item.kind === 'E') {\n\t\t\t\t\tconsole.log('Condition E not satisfied.');\n\t\t\t\t\t// if (!merged.$pull[path] || JSON.stringify(merged.$pull[path]) !== JSON.stringify(change.item.lhs)) {\n\t\t\t\t\t// \tmerged.$pull[path] = change.item.lhs;\n\t\t\t\t\t// }\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\treturn merged;\n}\n\nexport function getDeepDiff(doc1, doc2) {\n\tdelete doc1._id;\n\tdelete doc1.__v;\n\n\tif (doc1.updatedAt) {\n\t\tdelete doc1.updatedAt;\n\t}\n\n\tif (doc1.createdAt) {\n\t\tdelete doc1.createdAt;\n\t}\n\n\tdelete doc2._id;\n\tdelete doc2.__v;\n\n\tif (doc2.updatedAt) {\n\t\tdelete doc2.updatedAt;\n\t}\n\n\tif (doc2.createdAt) {\n\t\tdelete doc2.createdAt;\n\t}\n\n\treturn deepDiff(doc1, doc2);\n}\n\nexport function deepDiffDetails(obj1: Object, obj2: Object): string {\n let diff = detailedDiff(obj1, obj2);\n\n let diffString = '';\n\n const formatObjectDiff = (obj1: any, obj2: any) => {\n let str = '';\n\n Object.keys(obj1).forEach(key => {\n if (Array.isArray(obj1[key]) && Array.isArray(obj2[key])) {\n str += `${toTitleCase(key.replace(/_/g, ' '))}: [\"${obj1[key].join('\", \"')}\" to \"${obj2[key].join('\", \"')}\"], `;\n } else if (typeof obj1[key] === 'object' && obj1[key] !== null && obj2[key] !== null) {\n str += `${toTitleCase(key.replace(/_/g, ' '))}: { ${formatObjectDiff(obj1[key], obj2[key])}}, `;\n } else {\n str += `${toTitleCase(key.replace(/_/g, ' '))}: \"${obj1[key]}\" to \"${obj2[key]}\", `;\n }\n });\n\n return str.slice(0, -2);\n };\n\n const formatDiff = (changeType: string, items: any) => {\n let str = `${changeType}:\\n`;\n\n Object.keys(items).forEach(key => {\n str += `${toTitleCase(key.replace(/_/g, ' '))}: \"${items[key]}\",\\n`;\n });\n\n return str.slice(0, -2) + '\\n';\n };\n\n if (Object.keys(diff.added).length > 0) {\n diffString += formatDiff('Added', diff.added);\n }\n\n if (Object.keys(diff.deleted).length > 0) {\n diffString += formatDiff('Deleted', diff.deleted);\n }\n\n if (Object.keys(diff.updated).length > 0) {\n diffString += 'Updated:\\n';\n\n Object.keys(diff.updated).forEach(key => {\n if (key.substr(0, 2) !== 'id') {\n if (moment.isDate(diff.updated[key])) {\n diffString += `${toTitleCase(key.replace(/_/g, ' '))}: \"${moment(diff.updated[key]).format('llll')}\" to \"${moment(obj2[key]).format('llll')}\",\\n`;\n } else if (typeof diff.updated[key] === 'object' && !Array.isArray(diff.updated[key]) && diff.updated[key] !== null && obj2[key] !== null) {\n diffString += `${toTitleCase(key.replace(/_/g, ' '))}: {${formatObjectDiff(diff.updated[key], obj2[key])}},\\n`;\n } else if (Array.isArray(diff.updated[key]) && Array.isArray(obj2[key])) {\n diffString += `${toTitleCase(key.replace(/_/g, ' '))}: [\"${diff.updated[key].join('\", \"')}\" to \"${obj2[key].join('\", \"')}\"],\\n`;\n } else {\n diffString += `${toTitleCase(key.replace(/_/g, ' '))}: \"${diff.updated[key]}\" to \"${obj2[key]}\",\\n`;\n }\n }\n });\n\n diffString = diffString.slice(0, -2) + '\\n';\n }\n\n return diffString;\n}\n\n// export function deepDiffDetails(obj1: Object, obj2: Object) {\n// \tlet diff = detailedDiff(obj1, obj2);\n// \tlet newDiff = detailedDiff(obj2, obj1);\n\t\n// \tlet diffString = '';\n\t\t\n// \tif ((Object.keys(diff['updated']).length)) {\n// \t\t// if (Object.keys(diff['added']).length){\n// \t\t// \tdiffString += '; ';\n// \t\t// }\n\t\t\n// \t\t// if (Object.keys(diff['deleted']).length) {\n// \t\t// \tdiffString += '; ';\n// \t\t// }\n\t\t\t\t\t\n// \t\tfor (let i = 0; i < Object.keys(diff['updated']).length; i++) {\n// \t\t\tif (!Array.isArray(obj1[Object.keys(diff['updated'])[i]])) {\n// \t\t\t\tlet key = Object.keys(diff['updated'])[i];\n// \t\t\t\tlet newKey = Object.keys(newDiff['updated'])[i];\n\n// \t\t\t\tif ((key.substr(0, 2) !== 'id')){\n// \t\t\t\t\tif (diff['updated'][key] && moment.isDate(diff['updated'][key])) {\n// \t\t\t\t\t\tdiffString += 'Updated: \\n' + toTitleCase(key.replace(/_/g, ' ')) + ': \"' + moment(diff['updated'][key]).format('llll') + '\" to \"' + moment(newDiff['updated'][newKey]).format('llll') + '\"\\n';\n// \t\t\t\t\t}\n// \t\t\t\t\telse if (diff['updated'][key] && typeof(diff['updated'][key]) === 'object') {\n// \t\t\t\t\t\tlet objString = '';\n\n// \t\t\t\t\t\tfor (let j = 0; j < Object.keys(diff['updated'][key]).length; j++) {\n// \t\t\t\t\t\t\tlet objKey = Object.keys(diff['updated'][key])[j];\n// \t\t\t\t\t\t\tlet newObjKey = Object.keys(newDiff['updated'][key])[j];\n\n// \t\t\t\t\t\t\tif (j > 0) {\n// \t\t\t\t\t\t\t\tobjString += 'll, \\n';\n// \t\t\t\t\t\t\t}\n// \t\t\t\t\t\t\tobjString += toTitleCase(objKey.replace(/_/g, ' ')) + ': \"' + diff['updated'][key][objKey] + '\" to \"' + newDiff['updated'][key][newObjKey] + '\"' + (j < Object.keys(diff['updated'][key]).length - 1 ? ', ' : '');\n\t\t\t\t\t\t\t\n// \t\t\t\t\t\t}\n// \t\t\t\t\t\tdiffString += 'Updated: \\n' + objString + '\\n';\n// \t\t\t\t\t}\n// \t\t\t\t\telse{\n// \t\t\t\t\t\tdiffString += 'Updated: \\n' + toTitleCase(key.replace(/_/g, ' ')) + ': \"' + diff['updated'][key] + '\" to \"' + newDiff['updated'][newKey] + '\"' + (i < Object.keys(diff['updated']).length - 1 ? '\\n' : '');\n// \t\t\t\t\t}\n// \t\t\t\t}\n// \t\t\t}\n// \t\t}\n// \t}\n\t\n// \treturn diffString;\n// }\n\nexport function applyMongoUpdate(uDoc, delta) {\n\tlet orig, k, pathk, vk, n, n1, n2, name, o, o1, o2, ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9a, ref9b, ref10, ref11, ref12a, ref12b, ref13, v;\n\n\torig = deepCopy(uDoc);\n\n\tif (delta != null) {\n\t\tif (delta.$rename != null) {\n\t\t\tref = delta.$rename;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (k in ref) {\n\t\t\t\tv = ref[k];\n\t\t\t\tref1 = resolve(uDoc, k), o1 = ref1[0], n1 = ref1[1];\n\t\t\t\tref2 = resolve(uDoc, v), o2 = ref2[0], n2 = ref2[1];\n\t\t\t\tif ((o1 != null) && n1.length === 1) {\n\t\t\t\t\tif ((o2 != null) && n2.length === 1) {\n\t\t\t\t\t\to2[n2[0]] = o1[n1[0]];\n\t\t\t\t\t\tdelete o1[n1[0]];\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// throw new Error(o2 + '/' + n2 + ' - couldn\\'t resolve first for ' + uDoc + ' ' + v);\n\t\t\t\t\t\tconsole.log('Error', o2 + '/' + n2 + ' - couldn\\'t resolve first for ' + uDoc + ' ' + v);\n\t\t\t\t\t}\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\t// throw new Error(o1 + '/' + n1 + ' - couldn\\'t resolve second for ' + uDoc + ' ' + k);\n\t\t\t\t\tconsole.log('Error', o1 + '/' + n1 + ' - couldn\\'t resolve second for ' + uDoc + ' ' + k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$set != null) {\n\t\t\tref3 = delta.$set;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (k in ref3) {\n\t\t\t\tv = ref3[k];\n\t\t\t\tref4 = resolve(uDoc, k, {\n\t\t\t\t\tforce: true\n\t\t\t\t}), o = ref4[0], n = ref4[1];\n\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\to[n[0]] = v;\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t set for ' + uDoc + ' ' + k);\n\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t set for ' + uDoc + ' ' + k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$inc != null) {\n\t\t\tref5 = delta.$inc;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (k in ref5) {\n\t\t\t\tv = ref5[k];\n\t\t\t\tref6 = resolve(uDoc, k, {\n\t\t\t\tforce: true\n\t\t\t\t}), o = ref6[0], n = ref6[1];\n\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\tif (o[name = n[0]] == null) {\n\t\t\t\t\t\to[name] = 0;\n\t\t\t\t\t}\n\t\t\t\t\to[n[0]] += v;\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t set for ' + uDoc + ' ' + k);\n\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t set for ' + uDoc + ' ' + k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$unset != null) {\n\t\t\tref7 = delta.$unset;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (k in ref7) {\n\t\t\t\tv = ref7[k];\n\t\t\t\tref8 = resolve(uDoc, k), o = ref8[0], n = ref8[1];\n\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\tdelete o[n[0]];\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + k);\n\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$pull != null) {\n\t\t\tref9a = delta.$pull;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (pathk in ref9a) { // should only loop 1 time\n\t\t\t\tref9b = ref9a[pathk];\n\t\t\t\tfor (let kk = (ref9b.length - 1); kk >= 0; kk--) {\n\t\t\t\t\tvk = ref9b[kk];\n\t\t\t\t\t\n\t\t\t\t\tref10 = resolve(uDoc, pathk), o = ref10[0], n = ref10[1];\n\t\t\t\t\tref11 = resolve(orig, pathk), o2 = ref11[0], n2 = ref11[1];\n\t\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\t\to[n[0]].splice((<Array<any>>o2[n2[0]]).findIndex(z => JSON.stringify(z) === JSON.stringify(vk)), 1);\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + pathk);\n\t\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + pathk);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$push != null) {\n\t\t\tref12a = delta.$push;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (pathk in ref12a) { // should only loop 1 time\n\t\t\t\tref12b = ref12a[pathk];\n\t\t\t\t// for (let kk = 0; kk < ref12b.length; kk++) {\n\t\t\t\tfor (let kk = (ref12b.length - 1); kk >= 0; kk--) {\n\t\t\t\t\t\tvk = ref12b[kk];\n\n\t\t\t\t\tref13 = resolve(uDoc, pathk), o = ref13[0], n = ref13[1];\n\t\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\t\to[n[0]].push(vk);\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + pathk);\n\t\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + pathk);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn uDoc;\n}\n\nfunction resolve(a, path, options?) {\n\tlet e, k, last, stack;\n\tif (options == null) {\n\t\toptions = {};\n\t}\n\tstack = arrize(path);\n\tlast = [];\n\tif (stack.length > 0) {\n\t\tlast.unshift(stack.pop());\n\t}\n\te = a;\n\tif (e !== null) {\n\t\twhile ((k = stack.shift()) !== void 0) {\n\t\t\tif (e[k] !== void 0) {\n\t\t\te = e[k];\n\t\t\t} else {\n\t\t\tstack.unshift(k);\n\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (options.force) {\n\t\twhile ((k = stack.shift()) !== void 0) {\n\t\t\tif ((typeof stack[0] === 'number') || ((stack.length === 0) && (typeof last[0] === 'number'))) {\n\t\t\te[k] = [];\n\t\t\t} else {\n\t\t\te[k] = {};\n\t\t\t}\n\t\t\te = e[k];\n\t\t}\n\t} \n\telse {\n\t\twhile ((k = stack.pop()) !== void 0) {\n\t\t\tlast.unshift(k);\n\t\t}\n\t}\n\treturn [e, last];\n}\n\nfunction arrize(path, glue?) {\n\tif (glue == null) {\n\t\tglue = '.';\n\t}\n\treturn ((function() {\n\t\tif (Array.isArray(path)) {\n\t\t\treturn path.slice(0);\n\t\t} \n\t\telse {\n\t\t\tswitch (path) {\n\t\t\tcase void 0:\n\t\t\tcase null:\n\t\t\tcase false:\n\t\t\tcase '':\n\t\t\t\treturn [];\n\t\t\tdefault:\n\t\t\t\treturn path.toString().split(glue);\n\t\t\t}\n\t\t}\n\t})()).map(function(e) {\n\t\tswitch (e) {\n\t\t\tcase void 0:\n\t\t\tcase null:\n\t\t\tcase false:\n\t\t\tcase '':\n\t\t\treturn null;\n\t\t\tdefault:\n\t\t\treturn e.toString();\n\t\t}\n\t}).filter(function(e) {\n\t\treturn e != null;\n\t});\n}\n\n\nexport function getBinarySize(string) {\n\tif (string) {\n\t\treturn Buffer.byteLength(string, 'utf8');\n\t}\n\telse {\n\t\treturn 0;\n\t}\n}\n\nexport function pad(num, size) {\n\tlet s = num + '';\n\twhile (s.length < size) { s = '0' + s; }\n\treturn s;\n}\n\nexport function randomString(length, chars) {\n\tlet result = '';\n\tfor (let i = length; i > 0; --i) { result += chars[Math.floor(Math.random() * chars.length)]; }\n\treturn result;\n}\n\nexport function toTitleCase(str) {\n\treturn str.replace(/\\w\\S*/g, function(txt){\n\t\treturn txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n\t});\n}\n\nexport function isObject(item) {\n\treturn (item && typeof item === 'object' && !Array.isArray(item));\n}\n\nexport function mergeDeep(target, ...sources) {\n\tif (!sources.length) {\n\t\treturn target;\n\t}\n\tconst source = sources.shift();\n\n\tif (isObject(target) && isObject(source)) {\n\t\tfor (const key in source) {\n\t\t\tif (isObject(source[key])) {\n\t\t\t\tif (!target[key]) {\n\t\t\t\t\tObject.assign(target, { [key]: {} });\n\t\t\t\t}\n\t\t\t\tmergeDeep(target[key], source[key]);\n\t\t\t} \n\t\t\telse {\n\t\t\t\tObject.assign(target, { [key]: source[key] });\n\t\t\t}\n\t\t}\n\t}\n\n\treturn mergeDeep(target, ...sources);\n}"]}
|