@resolveio/server-lib 20.7.120 → 20.7.122
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/client-server-app.js +51 -1
- package/client-server-app.js.map +1 -1
- package/collections/app-status.collection.js +51 -1
- package/collections/app-status.collection.js.map +1 -1
- package/collections/counter.collection.js +55 -1
- package/collections/counter.collection.js.map +1 -1
- package/collections/cron-job-history.collection.js +136 -1
- package/collections/cron-job-history.collection.js.map +1 -1
- package/collections/cron-job.collection.js +87 -1
- package/collections/cron-job.collection.js.map +1 -1
- package/collections/email-history.collection.js +98 -1
- package/collections/email-history.collection.js.map +1 -1
- package/collections/email-verified.collection.js +60 -1
- package/collections/email-verified.collection.js.map +1 -1
- package/collections/file.collection.js +73 -1
- package/collections/file.collection.js.map +1 -1
- package/collections/flag-update.collection.js +56 -1
- package/collections/flag-update.collection.js.map +1 -1
- package/collections/flag.collection.js +56 -1
- package/collections/flag.collection.js.map +1 -1
- package/collections/log-method-latency.collection.js +72 -1
- package/collections/log-method-latency.collection.js.map +1 -1
- package/collections/log-subscription.collection.js +75 -1
- package/collections/log-subscription.collection.js.map +1 -1
- package/collections/log.collection.js +87 -1
- package/collections/log.collection.js.map +1 -1
- package/collections/logged-in-users.collection.js +66 -1
- package/collections/logged-in-users.collection.js.map +1 -1
- package/collections/monitor-cpu.collection.js +64 -1
- package/collections/monitor-cpu.collection.js.map +1 -1
- package/collections/monitor-function.collection.js +73 -1
- package/collections/monitor-function.collection.js.map +1 -1
- package/collections/monitor-memory.collection.js +76 -1
- package/collections/monitor-memory.collection.js.map +1 -1
- package/collections/monitor-mongo.collection.js +70 -1
- package/collections/monitor-mongo.collection.js.map +1 -1
- package/collections/notification.collection.js +56 -1
- package/collections/notification.collection.js.map +1 -1
- package/collections/report-builder-dashboard-builder.collection.js +108 -1
- package/collections/report-builder-dashboard-builder.collection.js.map +1 -1
- package/collections/report-builder-library.collection.js +86 -1
- package/collections/report-builder-library.collection.js.map +1 -1
- package/collections/report-builder-report.collection.js +148 -1
- package/collections/report-builder-report.collection.js.map +1 -1
- package/collections/user-group.collection.js +88 -1
- package/collections/user-group.collection.js.map +1 -1
- package/collections/user-guide.collection.js +56 -1
- package/collections/user-guide.collection.js.map +1 -1
- package/collections/user.collection.js +265 -1
- package/collections/user.collection.js.map +1 -1
- package/cron/cron.js +97 -1
- package/cron/cron.js.map +1 -1
- package/fixtures/cron-jobs.js +95 -1
- package/fixtures/cron-jobs.js.map +1 -1
- package/fixtures/init.js +78 -1
- package/fixtures/init.js.map +1 -1
- package/http/auth.js +869 -1
- package/http/auth.js.map +1 -1
- package/http/health.js +11 -1
- package/http/health.js.map +1 -1
- package/http/home.js +114 -1
- package/http/home.js.map +1 -1
- package/index.js +18 -1
- package/index.js.map +1 -1
- package/managers/cron.manager.js +461 -1
- package/managers/cron.manager.js.map +1 -1
- package/managers/local-log.manager.js +79 -1
- package/managers/local-log.manager.js.map +1 -1
- package/managers/method.manager.js +1025 -1
- package/managers/method.manager.js.map +1 -1
- package/managers/mongo.manager.js +4231 -1
- package/managers/mongo.manager.js.map +1 -1
- package/managers/monitor.manager.js +534 -1
- package/managers/monitor.manager.js.map +1 -1
- package/managers/subscription.manager.js +1292 -1
- package/managers/subscription.manager.js.map +1 -1
- package/managers/websocket.manager.js +165 -1
- package/managers/websocket.manager.js.map +1 -1
- package/managers/worker-dispatcher.manager.js +335 -1
- package/managers/worker-dispatcher.manager.js.map +1 -1
- package/managers/worker-server.manager.js +292 -1
- package/managers/worker-server.manager.js.map +1 -1
- package/methods/accounts.js +302 -1
- package/methods/accounts.js.map +1 -1
- package/methods/aws.js +748 -1
- package/methods/aws.js.map +1 -1
- package/methods/collections.js +542 -1
- package/methods/collections.js.map +1 -1
- package/methods/counters.js +111 -1
- package/methods/counters.js.map +1 -1
- package/methods/cron-jobs.js +1476 -1
- package/methods/cron-jobs.js.map +1 -1
- package/methods/flag-updates.js +8 -1
- package/methods/flag-updates.js.map +1 -1
- package/methods/flags.js +8 -1
- package/methods/flags.js.map +1 -1
- package/methods/logs.js +417 -1
- package/methods/logs.js.map +1 -1
- package/methods/monitor.js +543 -1
- package/methods/monitor.js.map +1 -1
- package/methods/pdf.js +742 -1
- package/methods/pdf.js.map +1 -1
- package/methods/report-builder.js +840 -1
- package/methods/report-builder.js.map +1 -1
- package/methods/support.js +232 -1
- package/methods/support.js.map +1 -1
- package/models/app-status.model.js +3 -1
- package/models/app-status.model.js.map +1 -1
- package/models/billing-logged-in-users.model.js +3 -1
- package/models/billing-logged-in-users.model.js.map +1 -1
- package/models/collection-document.model.js +3 -1
- package/models/collection-document.model.js.map +1 -1
- package/models/counter.model.js +3 -1
- package/models/counter.model.js.map +1 -1
- package/models/cron-job-history.model.js +3 -1
- package/models/cron-job-history.model.js.map +1 -1
- package/models/cron-job.model.js +3 -1
- package/models/cron-job.model.js.map +1 -1
- package/models/dialog.model.js +3 -1
- package/models/dialog.model.js.map +1 -1
- package/models/email-history.model.js +15 -1
- package/models/email-history.model.js.map +1 -1
- package/models/email-verified.model.js +3 -1
- package/models/email-verified.model.js.map +1 -1
- package/models/file.model.js +3 -1
- package/models/file.model.js.map +1 -1
- package/models/flag-update.model.js +3 -1
- package/models/flag-update.model.js.map +1 -1
- package/models/flag.model.js +3 -1
- package/models/flag.model.js.map +1 -1
- package/models/log-method-latency.model.js +3 -1
- package/models/log-method-latency.model.js.map +1 -1
- package/models/log-subscription.model.js +3 -1
- package/models/log-subscription.model.js.map +1 -1
- package/models/log.model.js +3 -1
- package/models/log.model.js.map +1 -1
- package/models/logged-in-users.model.js +3 -1
- package/models/logged-in-users.model.js.map +1 -1
- package/models/method-response.model.js +3 -1
- package/models/method-response.model.js.map +1 -1
- package/models/method.model.d.ts +0 -1
- package/models/method.model.js +3 -1
- package/models/method.model.js.map +1 -1
- package/models/monitor-cpu.model.js +3 -1
- package/models/monitor-cpu.model.js.map +1 -1
- package/models/monitor-function.model.js +3 -1
- package/models/monitor-function.model.js.map +1 -1
- package/models/monitor-memory.model.js +3 -1
- package/models/monitor-memory.model.js.map +1 -1
- package/models/monitor-mongo.model.js +3 -1
- package/models/monitor-mongo.model.js.map +1 -1
- package/models/notification.model.js +3 -1
- package/models/notification.model.js.map +1 -1
- package/models/pagination.model.js +23 -1
- package/models/pagination.model.js.map +1 -1
- package/models/permission.model.js +3 -1
- package/models/permission.model.js.map +1 -1
- package/models/report-builder-dashboard-builder.model.js +3 -1
- package/models/report-builder-dashboard-builder.model.js.map +1 -1
- package/models/report-builder-library.model.js +3 -1
- package/models/report-builder-library.model.js.map +1 -1
- package/models/report-builder-report.model.js +3 -1
- package/models/report-builder-report.model.js.map +1 -1
- package/models/report-builder.model.js +3 -1
- package/models/report-builder.model.js.map +1 -1
- package/models/select-data-label.model.js +3 -1
- package/models/select-data-label.model.js.map +1 -1
- package/models/server-message.model.js +3 -1
- package/models/server-message.model.js.map +1 -1
- package/models/subscription.model.js +3 -1
- package/models/subscription.model.js.map +1 -1
- package/models/support-ticket.model.js +3 -1
- package/models/support-ticket.model.js.map +1 -1
- package/models/user-group.model.js +3 -1
- package/models/user-group.model.js.map +1 -1
- package/models/user-guide.model.js +3 -1
- package/models/user-guide.model.js.map +1 -1
- package/models/user.model.js +3 -1
- package/models/user.model.js.map +1 -1
- package/package.json +1 -1
- package/public_api.js +77 -1
- package/public_api.js.map +1 -1
- package/publications/app-status.js +16 -1
- package/publications/app-status.js.map +1 -1
- package/publications/cron-jobs.js +32 -1
- package/publications/cron-jobs.js.map +1 -1
- package/publications/files.js +36 -1
- package/publications/files.js.map +1 -1
- package/publications/flags-update.js +22 -1
- package/publications/flags-update.js.map +1 -1
- package/publications/flags.js +22 -1
- package/publications/flags.js.map +1 -1
- package/publications/logs.js +164 -1
- package/publications/logs.js.map +1 -1
- package/publications/notifications.js +16 -1
- package/publications/notifications.js.map +1 -1
- package/publications/report-builder-dashboard-builders.js +42 -1
- package/publications/report-builder-dashboard-builders.js.map +1 -1
- package/publications/report-builder-libraries.js +90 -1
- package/publications/report-builder-libraries.js.map +1 -1
- package/publications/report-builder-reports.js +50 -1
- package/publications/report-builder-reports.js.map +1 -1
- package/publications/super-admin.js +16 -1
- package/publications/super-admin.js.map +1 -1
- package/publications/user-groups.js +16 -1
- package/publications/user-groups.js.map +1 -1
- package/publications/user-guides.js +16 -1
- package/publications/user-guides.js.map +1 -1
- package/resolveio-server-app.js +176 -1
- package/resolveio-server-app.js.map +1 -1
- package/server-app.js +1159 -1
- package/server-app.js.map +1 -1
- package/util/common.js +632 -1
- package/util/common.js.map +1 -1
- package/util/schema-report-builder.js +454 -1
- package/util/schema-report-builder.js.map +1 -1
package/util/common.js
CHANGED
|
@@ -1,2 +1,633 @@
|
|
|
1
|
-
"use strict";var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var t,r=1,o=arguments.length;r<o;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)},__read=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var o,n,i=r.call(e),a=[];try{for(;(void 0===t||0<t--)&&!(o=i.next()).done;)a.push(o.value)}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return a},__values=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],o=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return{value:(e=e&&o>=e.length?void 0:e)&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__spreadArray=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var o,n=0,i=t.length;n<i;n++)!o&&n in t||((o=o||Array.prototype.slice.call(t,0,n))[n]=t[n]);return e.concat(o||Array.prototype.slice.call(t))},rusDiff=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.generateSearchTokensFromFields=exports.mergeDeep=exports.isObject=exports.toTitleCase=exports.randomString=exports.pad=exports.getBinarySize=exports.deepDiffDetails=exports.applyMongoUpdate=exports.getDeepDiff=exports.mergeUpdates=exports.getMongoMergeUpdatedDoc=exports.getMongoUpdates=exports.dateReviver=exports.deepCopy=exports.floorPrecision=exports.round=exports.roundPrecision=exports.throwErr=exports.buildRbLookups=exports.buildRbSchema=exports.objectIdHexString=void 0,require("rus-diff")),deepDiff=require("deep-diff").diff,deep_object_diff_1=require("deep-object-diff"),moment=require("moment-timezone"),mongodb_1=require("mongodb"),clone=require("clone");function objectIdHexString(){return(new mongodb_1.ObjectId).toHexString()}function buildRbSchema(t){return Object.keys(t).forEach(function(e){t[e].type===Object?(t[e].type="Object",t[e].rbType="Object"):t[e].type===Array?(t[e].type="Array",t[e].rbType="Array"):t[e].type===String?(t[e].type="String",t[e].rbType="String"):t[e].type===Date?(t[e].type="Date",t[e].rbType="Date"):t[e].type===Number?(t[e].type="Number",t[e].rbType="Number"):t[e].type===Boolean&&(t[e].rbType="Boolean",t[e].type="Boolean")}),Object.keys(t).forEach(function(e){delete t[e].type}),t}function buildRbLookups(e,a,t){void 0===t&&(t=[]),e.forEach(function(e){var t,r="",o="",n="",i=toTitleCase(e.lookup.replace(/\_/g," "))+" ("+toTitleCase(e.local_key.replace("id_","").replace(/\_/g," ").replace(/\.\$\./g," -> ").replace(/\./g," -> "))+") (Lookup)",i=(e.local_key.match(/\./)?(t=e.local_key.replace(/\.\$/g,""),o=(n=e.local_key.replace(/^(.+\.).*$/,"$1")).replace(/\.$/,"")):t=e.local_key,n=n+i,a[e.local_key]?a[e.local_key].type!==String&&(r+="--local_key: '"+e.local_key+"' MUST be a String! "):r+="--local_key: '"+e.local_key+"' MUST be a valid schema path! ",{lookup_collection:e.lookup,lookup_collection_alias:i,local_key:t,field_path:o,lookup_as:n,lookup_key:"_id",type:"Object"});a[n]=i,r&&throwErr(r,e,i,n)});for(var r=0;r<t.length;r++)a[t[r]]={},a[t[r]].default_checked=!0,Object.assign(a[t[r]],a.tree[t[r]]);return a}function throwErr(e,t,r,o){void 0===o&&(o=""),console.log("------- ERROR thrown by rbLookups: "),console.log(e),console.log("---item: "),console.log(t),console.log("---Attempted to create rbSchema['"+o+"']: "),console.log(r),process.exit(1)}function roundPrecision(e,t){void 0===t&&(t=0);e=e.toString(),e.includes(".")&&("0"===e[0]&&(t+=1),t-=e.indexOf(".")),t=Math.pow(10,t);return Math.round(parseFloat(e)*t)/t}function round(e,t){void 0===t&&(t=0);t=Math.pow(10,t);return Math.round(e*t+1e-6)/t}function floorPrecision(e,t){void 0===t&&(t=0);e=e.toString(),e.includes(".")&&("0"===e[0]&&(t+=1),t-=e.indexOf(".")),t=Math.pow(10,t);return Math.floor(parseFloat(e)*t)/t}function deepCopy(e){return clone(e)}function dateReviver(e,t){if("string"==typeof t){var r=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(t);if(r)return new Date(Date.UTC(+r[1],+r[2]-1,+r[3],+r[4],+r[5],+r[6].split(".")[0],+r[6].split(".")[1]))}return t}function getMongoUpdates(e,t,r){e.createdAt&&(t.createdAt=e.createdAt),e.updatedAt&&(t.updatedAt=e.updatedAt);e=rusDiff.diff(e,t);return e?(e.$set&&!Object.keys(e.$set).length&&delete e.$set,r&&(e.$inc={__v:1})):r&&(e={$inc:{__v:1}}),e}function getMongoMergeUpdatedDoc(e,t,r){var o=deepCopy(t),t=(o.__v=t.__v,getDeepDiff(r,t));return applyMongoUpdate(o,mergeUpdates(getDeepDiff(r,e),t)),o}function mergeUpdates(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r={$set:{},$unset:{},$inc:{},$push:{},$pull:{}};return e.filter(Boolean).forEach(function(e){e.forEach(function(e){var t=e.path.join(".");switch(e.kind){case"E":handleEditedChange(r,t,e);break;case"A":handleArrayChange(r,t,e)}})}),r}function handleEditedChange(e,t,r){"number"==typeof r.rhs&&(t.includes("quantity")||t.includes("qty"))?e.$inc[t]=(e.$inc[t]||0)+r.rhs-r.lhs:e.$set[t]=r.rhs}function handleArrayChange(e,t,r){"N"===r.item.kind?(e.$push[t]||(e.$push[t]={$each:[]}),e.$push[t].$each.some(function(e){return JSON.stringify(e)===JSON.stringify(r.item.rhs)})||e.$push[t].$each.push(r.item.rhs)):"D"===r.item.kind&&(e.$pull[t]||(e.$pull[t]=[]),e.$pull[t].some(function(e){return JSON.stringify(e)===JSON.stringify(r.item.lhs)})||e.$pull[t].push(r.item.lhs))}function getDeepDiff(e,t){return delete e._id,delete e.__v,e.updatedAt&&delete e.updatedAt,e.createdAt&&delete e.createdAt,delete t._id,delete t.__v,t.updatedAt&&delete t.updatedAt,t.createdAt&&delete t.createdAt,deepDiff(e,t)}function applyMongoUpdate(e,t){var r=deepCopy(e);return t&&(t.$rename&&handleRename(e,t.$rename),t.$set&&handleSet(e,t.$set),t.$inc&&handleInc(e,t.$inc),t.$unset&&handleUnset(e,t.$unset),t.$pull&&handlePull(e,r,t.$pull),t.$push)&&handlePush(e,t.$push),e}function handleRename(e,t){for(var r in t){var o=t[r],n=__read(resolve(e,r),2),i=n[0],n=n[1],a=__read(resolve(e,o),2),l=a[0],a=a[1];i&&1===n.length?l&&1===a.length?(l[a[0]]=i[n[0]],delete i[n[0]]):logError(l,a,e,o):logError(i,n,e,r)}}function handleSet(e,t){for(var r in t){var o=t[r],n=__read(resolve(e,r,{force:!0}),2),i=n[0],n=n[1];i&&1===n.length?i[n[0]]=o:logError(i,n,e,r)}}function handleInc(e,t){for(var r in t){var o=t[r],n=__read(resolve(e,r,{force:!0}),2),i=n[0],n=n[1];i&&1===n.length?("number"!=typeof i[n[0]]&&(i[n[0]]=0),i[n[0]]+=o):logError(i,n,e,r)}}function handleUnset(e,t){for(var r in t){var o=__read(resolve(e,r),2),n=o[0],o=o[1];n&&1===o.length?delete n[o[0]]:logError(n,o,e,r)}}function handlePull(i,a,e){var t,r,l;for(l in e){var o=e[l];try{t=void 0;for(var n=__values(o),s=n.next();!s.done;s=n.next())!function(t){var e=__read(resolve(i,l),2),r=e[0],e=e[1],o=__read(resolve(a,l),2),n=o[0],o=o[1];r&&1===e.length?-1!==(n=n[o[0]].findIndex(function(e){return JSON.stringify(e)===JSON.stringify(t)}))&&r[e[0]].splice(n,1):logError(r,e,i,l)}(s.value)}catch(e){t={error:e}}finally{try{s&&!s.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}}}function handlePush(e,t){var r,o,n;for(n in t){var i=t[n];try{r=void 0;for(var a=__values(i),l=a.next();!l.done;l=a.next()){var s=l.value,c=__read(resolve(e,n),2),d=c[0],p=c[1];d&&1===p.length?d[p[0]].push(s):logError(d,p,e,n)}}catch(e){r={error:e}}finally{try{l&&!l.done&&(o=a.return)&&o.call(a)}finally{if(r)throw r.error}}}}function logError(e,t,r,o){console.log("Error",e+"/"+t+" - couldn't resolve for "+JSON.stringify(r)+" "+o)}function resolve(e,t,r){void 0===r&&(r={});for(var o=arrize(t),n=[],i=(0<o.length&&n.unshift(o.pop()),e);0<o.length;){var a=o.shift();if(void 0===i[a]){if(!r.force){n.unshift(a),n=o.concat(n);break}var l="number"==typeof o[0],s=0===o.length&&"number"==typeof n[0];i[a]=l||s?[]:{}}i=i[a]}return[i,n]}function arrize(e,t){return void 0===t&&(t="."),Array.isArray(e)?e.slice():null==e||!1===e||""===e?[]:e.toString().split(t).map(function(e){return[void 0,null,!1,""].includes(e)?null:e.toString()}).filter(function(e){return null!==e})}function deepDiffDetails(e,t){var r=deepCopy(e),o=deepCopy(t),n=(0,deep_object_diff_1.detailedDiff)(r,o),i="",l=function(t){return t instanceof Date?moment(t).format("llll"):"object"==typeof t&&null!==t?(Object.keys(t).filter(function(e){return e.startsWith("_id")||e.startsWith("id_")}).forEach(function(e){delete t[e]}),JSON.stringify(t)):"string"==typeof t?'"'.concat(t,'"'):String(t)},s=function(o,n){if(null===o||null===n||"object"!=typeof o||"object"!=typeof n)return"from: ".concat(l(o)," to: ").concat(l(n));if(Array.isArray(o)||Array.isArray(n)){for(var e=Array.isArray(o)?o:[],t=Array.isArray(n)?n:[],r=[],i=Math.max(e.length,t.length),a=0;a<i;a++)e[a]&&!t[a]?r.push("Removed at index ".concat(a,": ").concat(l(e[a]))):!e[a]&&t[a]?r.push("Added at index ".concat(a,": ").concat(l(t[a]))):e[a]&&t[a]&&JSON.stringify(e[a])!==JSON.stringify(t[a])&&r.push("Changed at index ".concat(a,": {").concat(s(e[a],t[a]),"}"));return r.join(", ")}return Object.keys(__assign(__assign({},o),n)).filter(function(e){return!e.startsWith("_id")&&!e.startsWith("id_")}).map(function(e){var t=o?o[e]:void 0,r=n?n[e]:void 0;return"".concat(toTitleCase(e),": ").concat(s(t,r))}).join(", ")};return["added","deleted","updated"].forEach(function(t){var e;0<Object.keys(n[t]).length&&(e=Object.keys(n[t]).filter(function(e){return"added"===t||("deleted"===t?!n.added[e]:!n.added[e]&&!n.deleted[e])}).filter(function(e){return!e.startsWith("_id")&&!e.startsWith("id_")}).map(function(e){return"\n".concat(toTitleCase(e),": ").concat(s(r[e],o[e]))}).join(","),i+=e?"".concat(e):"")}),i}function getBinarySize(e){return e?Buffer.byteLength(e,"utf8"):0}function pad(e,t){for(var r=e+"";r.length<t;)r="0"+r;return r}function randomString(e,t){for(var r="",o=e;0<o;--o)r+=t[Math.floor(Math.random()*t.length)];return r}function toTitleCase(e){return e.replace(/\w\S*/g,function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})}function isObject(e){return e&&"object"==typeof e&&!Array.isArray(e)}function mergeDeep(e){for(var t,r=[],o=1;o<arguments.length;o++)r[o-1]=arguments[o];if(!r.length)return e;var n=r.shift();if(isObject(e)&&isObject(n))for(var i in n)isObject(n[i])?(e[i]||Object.assign(e,((t={})[i]={},t)),mergeDeep(e[i],n[i])):Object.assign(e,((t={})[i]=n[i],t));return mergeDeep.apply(void 0,__spreadArray([e],__read(r),!1))}function generateSearchTokensFromFields(t,e){var r=new Set;return e.forEach(function(e){e=t[e];"string"==typeof e&&e.trim().length&&e.toLowerCase().split(/\s+/).forEach(function(e){for(var t=3;t<=e.length;t++)r.add(e.slice(0,t))})}),Array.from(r)}exports.objectIdHexString=objectIdHexString,exports.buildRbSchema=buildRbSchema,exports.buildRbLookups=buildRbLookups,exports.throwErr=throwErr,exports.roundPrecision=roundPrecision,exports.round=round,exports.floorPrecision=floorPrecision,exports.deepCopy=deepCopy,exports.dateReviver=dateReviver,exports.getMongoUpdates=getMongoUpdates,exports.getMongoMergeUpdatedDoc=getMongoMergeUpdatedDoc,exports.mergeUpdates=mergeUpdates,exports.getDeepDiff=getDeepDiff,exports.applyMongoUpdate=applyMongoUpdate,exports.deepDiffDetails=deepDiffDetails,exports.getBinarySize=getBinarySize,exports.pad=pad,exports.randomString=randomString,exports.toTitleCase=toTitleCase,exports.isObject=isObject,exports.mergeDeep=mergeDeep,exports.generateSearchTokensFromFields=generateSearchTokensFromFields;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
14
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
15
|
+
if (!m) return o;
|
|
16
|
+
var i = m.call(o), r, ar = [], e;
|
|
17
|
+
try {
|
|
18
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
19
|
+
}
|
|
20
|
+
catch (error) { e = { error: error }; }
|
|
21
|
+
finally {
|
|
22
|
+
try {
|
|
23
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
24
|
+
}
|
|
25
|
+
finally { if (e) throw e.error; }
|
|
26
|
+
}
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
var __values = (this && this.__values) || function(o) {
|
|
30
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
31
|
+
if (m) return m.call(o);
|
|
32
|
+
if (o && typeof o.length === "number") return {
|
|
33
|
+
next: function () {
|
|
34
|
+
if (o && i >= o.length) o = void 0;
|
|
35
|
+
return { value: o && o[i++], done: !o };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
39
|
+
};
|
|
40
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
41
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
42
|
+
if (ar || !(i in from)) {
|
|
43
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
44
|
+
ar[i] = from[i];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.generateSearchTokensFromFields = exports.mergeDeep = exports.isObject = exports.toTitleCase = exports.randomString = exports.pad = exports.getBinarySize = exports.deepDiffDetails = exports.applyMongoUpdate = exports.getDeepDiff = exports.mergeUpdates = exports.getMongoMergeUpdatedDoc = exports.getMongoUpdates = exports.dateReviver = exports.deepCopy = exports.floorPrecision = exports.round = exports.roundPrecision = exports.throwErr = exports.buildRbLookups = exports.buildRbSchema = exports.objectIdHexString = void 0;
|
|
51
|
+
/* eslint-disable no-restricted-properties */
|
|
52
|
+
var rusDiff = require('rus-diff');
|
|
53
|
+
var deepDiff = require('deep-diff').diff;
|
|
54
|
+
var deep_object_diff_1 = require("deep-object-diff");
|
|
55
|
+
var moment = require("moment-timezone");
|
|
56
|
+
var mongodb_1 = require("mongodb");
|
|
57
|
+
var clone = require('clone');
|
|
58
|
+
function objectIdHexString() {
|
|
59
|
+
var objectId = new mongodb_1.ObjectId();
|
|
60
|
+
return objectId.toHexString();
|
|
61
|
+
}
|
|
62
|
+
exports.objectIdHexString = objectIdHexString;
|
|
63
|
+
function buildRbSchema(rbSchema) {
|
|
64
|
+
Object.keys(rbSchema).forEach(function (key) {
|
|
65
|
+
if (rbSchema[key].type === Object) {
|
|
66
|
+
rbSchema[key].type = 'Object';
|
|
67
|
+
rbSchema[key].rbType = 'Object';
|
|
68
|
+
}
|
|
69
|
+
else if (rbSchema[key].type === Array) {
|
|
70
|
+
rbSchema[key].type = 'Array';
|
|
71
|
+
rbSchema[key].rbType = 'Array';
|
|
72
|
+
}
|
|
73
|
+
else if (rbSchema[key].type === String) {
|
|
74
|
+
rbSchema[key].type = 'String';
|
|
75
|
+
rbSchema[key].rbType = 'String';
|
|
76
|
+
}
|
|
77
|
+
else if (rbSchema[key].type === Date) {
|
|
78
|
+
rbSchema[key].type = 'Date';
|
|
79
|
+
rbSchema[key].rbType = 'Date';
|
|
80
|
+
}
|
|
81
|
+
else if (rbSchema[key].type === Number) {
|
|
82
|
+
rbSchema[key].type = 'Number';
|
|
83
|
+
rbSchema[key].rbType = 'Number';
|
|
84
|
+
}
|
|
85
|
+
else if (rbSchema[key].type === Boolean) {
|
|
86
|
+
rbSchema[key].rbType = 'Boolean';
|
|
87
|
+
rbSchema[key].type = 'Boolean';
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
Object.keys(rbSchema).forEach(function (key) {
|
|
91
|
+
delete rbSchema[key].type;
|
|
92
|
+
});
|
|
93
|
+
return rbSchema;
|
|
94
|
+
}
|
|
95
|
+
exports.buildRbSchema = buildRbSchema;
|
|
96
|
+
function buildRbLookups(rbLookups, defaultSchema, default_checked_array) {
|
|
97
|
+
// Remember: lkp.local_key will be removed later on, because it has 'id_'
|
|
98
|
+
if (default_checked_array === void 0) { default_checked_array = []; }
|
|
99
|
+
rbLookups.forEach(function (lkp) {
|
|
100
|
+
var errString = '';
|
|
101
|
+
var localKey, newPropertyName;
|
|
102
|
+
var localKeyDir = '';
|
|
103
|
+
var localKeyDirDot = '';
|
|
104
|
+
var collectionAlias = toTitleCase(lkp.lookup.replace(/\_/g, ' ')) + ' (' + toTitleCase(lkp.local_key.replace('id_', '').replace(/\_/g, ' ').replace(/\.\$\./g, ' -> ').replace(/\./g, ' -> ')) + ') (Lookup)';
|
|
105
|
+
if (lkp.local_key.match(/\./)) {
|
|
106
|
+
localKey = lkp.local_key.replace(/\.\$/g, '');
|
|
107
|
+
localKeyDirDot = lkp.local_key.replace(/^(.+\.).*$/, '$1');
|
|
108
|
+
localKeyDir = localKeyDirDot.replace(/\.$/, '');
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
// local_key is a root leaf node.
|
|
112
|
+
localKey = lkp.local_key;
|
|
113
|
+
}
|
|
114
|
+
newPropertyName = localKeyDirDot + collectionAlias;
|
|
115
|
+
if (!defaultSchema[lkp.local_key]) {
|
|
116
|
+
errString += '--local_key: \'' + lkp.local_key + '\' MUST be a valid schema path! ';
|
|
117
|
+
}
|
|
118
|
+
else if (defaultSchema[lkp.local_key].type !== String) {
|
|
119
|
+
errString += '--local_key: \'' + lkp.local_key + '\' MUST be a String! ';
|
|
120
|
+
}
|
|
121
|
+
var lookupNode = {
|
|
122
|
+
lookup_collection: lkp.lookup,
|
|
123
|
+
lookup_collection_alias: collectionAlias,
|
|
124
|
+
local_key: localKey,
|
|
125
|
+
field_path: localKeyDir,
|
|
126
|
+
lookup_as: newPropertyName,
|
|
127
|
+
lookup_key: '_id',
|
|
128
|
+
type: 'Object',
|
|
129
|
+
};
|
|
130
|
+
defaultSchema[newPropertyName] = lookupNode;
|
|
131
|
+
if (errString) {
|
|
132
|
+
throwErr(errString, lkp, lookupNode, newPropertyName);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
for (var ii = 0; ii < default_checked_array.length; ii++) {
|
|
136
|
+
defaultSchema[default_checked_array[ii]] = {};
|
|
137
|
+
defaultSchema[default_checked_array[ii]]['default_checked'] = true;
|
|
138
|
+
Object.assign(defaultSchema[default_checked_array[ii]], defaultSchema['tree'][default_checked_array[ii]]);
|
|
139
|
+
}
|
|
140
|
+
return defaultSchema;
|
|
141
|
+
}
|
|
142
|
+
exports.buildRbLookups = buildRbLookups;
|
|
143
|
+
function throwErr(err, lkp, lookupNode, newPropertyName) {
|
|
144
|
+
if (newPropertyName === void 0) { newPropertyName = ''; }
|
|
145
|
+
// err could be from a try/throw/catch
|
|
146
|
+
console.log('------- ERROR thrown by rbLookups: ');
|
|
147
|
+
console.log(err);
|
|
148
|
+
console.log('---item: ');
|
|
149
|
+
console.log(lkp);
|
|
150
|
+
console.log('---Attempted to create rbSchema[\'' + newPropertyName + '\']: ');
|
|
151
|
+
console.log(lookupNode);
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
exports.throwErr = throwErr;
|
|
155
|
+
function roundPrecision(value, precision) {
|
|
156
|
+
if (precision === void 0) { precision = 0; }
|
|
157
|
+
var stringValue = value.toString();
|
|
158
|
+
if (stringValue.includes('.')) {
|
|
159
|
+
if (stringValue[0] === '0') {
|
|
160
|
+
precision += 1;
|
|
161
|
+
}
|
|
162
|
+
precision -= stringValue.indexOf('.');
|
|
163
|
+
}
|
|
164
|
+
var exponent = Math.pow(10, precision);
|
|
165
|
+
return Math.round(parseFloat(stringValue) * exponent) / exponent;
|
|
166
|
+
}
|
|
167
|
+
exports.roundPrecision = roundPrecision;
|
|
168
|
+
function round(value, precision) {
|
|
169
|
+
if (precision === void 0) { precision = 0; }
|
|
170
|
+
var power = Math.pow(10, precision);
|
|
171
|
+
var adjustment = 1e-6;
|
|
172
|
+
return Math.round((value * power) + adjustment) / power;
|
|
173
|
+
}
|
|
174
|
+
exports.round = round;
|
|
175
|
+
function floorPrecision(value, precision) {
|
|
176
|
+
if (precision === void 0) { precision = 0; }
|
|
177
|
+
var stringValue = value.toString();
|
|
178
|
+
if (stringValue.includes('.')) {
|
|
179
|
+
if (stringValue[0] === '0') {
|
|
180
|
+
precision += 1;
|
|
181
|
+
}
|
|
182
|
+
precision -= stringValue.indexOf('.');
|
|
183
|
+
}
|
|
184
|
+
var exponent = Math.pow(10, precision);
|
|
185
|
+
return Math.floor(parseFloat(stringValue) * exponent) / exponent;
|
|
186
|
+
}
|
|
187
|
+
exports.floorPrecision = floorPrecision;
|
|
188
|
+
function deepCopy(value) {
|
|
189
|
+
return clone(value);
|
|
190
|
+
}
|
|
191
|
+
exports.deepCopy = deepCopy;
|
|
192
|
+
function dateReviver(key, value) {
|
|
193
|
+
if (typeof value === 'string') {
|
|
194
|
+
var a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
|
|
195
|
+
if (a) {
|
|
196
|
+
return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6].split('.')[0], +a[6].split('.')[1]));
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return value;
|
|
200
|
+
}
|
|
201
|
+
exports.dateReviver = dateReviver;
|
|
202
|
+
function getMongoUpdates(currDoc, modifiedDoc, incVersion) {
|
|
203
|
+
if (currDoc.createdAt) {
|
|
204
|
+
modifiedDoc.createdAt = currDoc.createdAt;
|
|
205
|
+
}
|
|
206
|
+
if (currDoc.updatedAt) {
|
|
207
|
+
modifiedDoc.updatedAt = currDoc.updatedAt;
|
|
208
|
+
}
|
|
209
|
+
var updates = rusDiff.diff(currDoc, modifiedDoc);
|
|
210
|
+
if (updates) {
|
|
211
|
+
if (updates.$set && !Object.keys(updates.$set).length) {
|
|
212
|
+
delete updates.$set;
|
|
213
|
+
}
|
|
214
|
+
if (incVersion) {
|
|
215
|
+
updates.$inc = { __v: 1 };
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
if (incVersion) {
|
|
220
|
+
updates = {
|
|
221
|
+
$inc: { __v: 1 }
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return updates;
|
|
226
|
+
}
|
|
227
|
+
exports.getMongoUpdates = getMongoUpdates;
|
|
228
|
+
function getMongoMergeUpdatedDoc(f_doc, currentDoc, oldDoc) {
|
|
229
|
+
var upDoc = deepCopy(currentDoc); // was oldDoc
|
|
230
|
+
upDoc.__v = currentDoc.__v;
|
|
231
|
+
var diff_1 = getDeepDiff(oldDoc, currentDoc);
|
|
232
|
+
var diff_2 = getDeepDiff(oldDoc, f_doc);
|
|
233
|
+
var updates = mergeUpdates(diff_2, diff_1);
|
|
234
|
+
applyMongoUpdate(upDoc, updates);
|
|
235
|
+
return upDoc;
|
|
236
|
+
}
|
|
237
|
+
exports.getMongoMergeUpdatedDoc = getMongoMergeUpdatedDoc;
|
|
238
|
+
function mergeUpdates() {
|
|
239
|
+
var updatesToMerge = [];
|
|
240
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
241
|
+
updatesToMerge[_i] = arguments[_i];
|
|
242
|
+
}
|
|
243
|
+
var merged = {
|
|
244
|
+
$set: {},
|
|
245
|
+
$unset: {},
|
|
246
|
+
$inc: {},
|
|
247
|
+
$push: {},
|
|
248
|
+
$pull: {}
|
|
249
|
+
};
|
|
250
|
+
updatesToMerge.filter(Boolean).forEach(function (anUpdate) {
|
|
251
|
+
anUpdate.forEach(function (change) {
|
|
252
|
+
var path = change.path.join('.');
|
|
253
|
+
switch (change.kind) {
|
|
254
|
+
case 'E':
|
|
255
|
+
handleEditedChange(merged, path, change);
|
|
256
|
+
break;
|
|
257
|
+
case 'A':
|
|
258
|
+
handleArrayChange(merged, path, change);
|
|
259
|
+
break;
|
|
260
|
+
default:
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
return merged;
|
|
266
|
+
}
|
|
267
|
+
exports.mergeUpdates = mergeUpdates;
|
|
268
|
+
function handleEditedChange(merged, path, change) {
|
|
269
|
+
// Later diffs override earlier ones
|
|
270
|
+
if (typeof (change.rhs) === 'number' && (path.includes('quantity') || path.includes('qty'))) {
|
|
271
|
+
merged.$inc[path] = (merged.$inc[path] || 0) + change.rhs - change.lhs;
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
merged.$set[path] = change.rhs;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
function handleArrayChange(merged, path, change) {
|
|
278
|
+
if (change.item.kind === 'N') {
|
|
279
|
+
if (!merged.$push[path])
|
|
280
|
+
merged.$push[path] = { $each: [] };
|
|
281
|
+
if (!merged.$push[path].$each.some(function (a) { return JSON.stringify(a) === JSON.stringify(change.item.rhs); })) {
|
|
282
|
+
merged.$push[path].$each.push(change.item.rhs);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
else if (change.item.kind === 'D') {
|
|
286
|
+
if (!merged.$pull[path])
|
|
287
|
+
merged.$pull[path] = [];
|
|
288
|
+
if (!merged.$pull[path].some(function (a) { return JSON.stringify(a) === JSON.stringify(change.item.lhs); })) {
|
|
289
|
+
merged.$pull[path].push(change.item.lhs);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
function getDeepDiff(doc1, doc2) {
|
|
294
|
+
delete doc1._id;
|
|
295
|
+
delete doc1.__v;
|
|
296
|
+
if (doc1.updatedAt) {
|
|
297
|
+
delete doc1.updatedAt;
|
|
298
|
+
}
|
|
299
|
+
if (doc1.createdAt) {
|
|
300
|
+
delete doc1.createdAt;
|
|
301
|
+
}
|
|
302
|
+
delete doc2._id;
|
|
303
|
+
delete doc2.__v;
|
|
304
|
+
if (doc2.updatedAt) {
|
|
305
|
+
delete doc2.updatedAt;
|
|
306
|
+
}
|
|
307
|
+
if (doc2.createdAt) {
|
|
308
|
+
delete doc2.createdAt;
|
|
309
|
+
}
|
|
310
|
+
return deepDiff(doc1, doc2);
|
|
311
|
+
}
|
|
312
|
+
exports.getDeepDiff = getDeepDiff;
|
|
313
|
+
function applyMongoUpdate(uDoc, delta) {
|
|
314
|
+
var orig = deepCopy(uDoc);
|
|
315
|
+
if (delta) {
|
|
316
|
+
if (delta.$rename)
|
|
317
|
+
handleRename(uDoc, delta.$rename);
|
|
318
|
+
if (delta.$set)
|
|
319
|
+
handleSet(uDoc, delta.$set);
|
|
320
|
+
if (delta.$inc)
|
|
321
|
+
handleInc(uDoc, delta.$inc);
|
|
322
|
+
if (delta.$unset)
|
|
323
|
+
handleUnset(uDoc, delta.$unset);
|
|
324
|
+
if (delta.$pull)
|
|
325
|
+
handlePull(uDoc, orig, delta.$pull);
|
|
326
|
+
if (delta.$push)
|
|
327
|
+
handlePush(uDoc, delta.$push);
|
|
328
|
+
}
|
|
329
|
+
return uDoc;
|
|
330
|
+
}
|
|
331
|
+
exports.applyMongoUpdate = applyMongoUpdate;
|
|
332
|
+
function handleRename(uDoc, renameMap) {
|
|
333
|
+
for (var k in renameMap) {
|
|
334
|
+
var v = renameMap[k];
|
|
335
|
+
var _a = __read(resolve(uDoc, k), 2), o1 = _a[0], n1 = _a[1];
|
|
336
|
+
var _b = __read(resolve(uDoc, v), 2), o2 = _b[0], n2 = _b[1];
|
|
337
|
+
if (o1 && n1.length === 1) {
|
|
338
|
+
if (o2 && n2.length === 1) {
|
|
339
|
+
o2[n2[0]] = o1[n1[0]];
|
|
340
|
+
delete o1[n1[0]];
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
logError(o2, n2, uDoc, v);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
logError(o1, n1, uDoc, k);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
function handleSet(uDoc, setMap) {
|
|
352
|
+
for (var k in setMap) {
|
|
353
|
+
var v = setMap[k];
|
|
354
|
+
var _a = __read(resolve(uDoc, k, { force: true }), 2), o = _a[0], n = _a[1];
|
|
355
|
+
if (o && n.length === 1) {
|
|
356
|
+
o[n[0]] = v;
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
logError(o, n, uDoc, k);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
function handleInc(uDoc, incMap) {
|
|
364
|
+
for (var k in incMap) {
|
|
365
|
+
var v = incMap[k];
|
|
366
|
+
var _a = __read(resolve(uDoc, k, { force: true }), 2), o = _a[0], n = _a[1];
|
|
367
|
+
if (o && n.length === 1) {
|
|
368
|
+
if (typeof o[n[0]] !== 'number') {
|
|
369
|
+
o[n[0]] = 0;
|
|
370
|
+
}
|
|
371
|
+
o[n[0]] += v;
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
logError(o, n, uDoc, k);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
function handleUnset(uDoc, unsetMap) {
|
|
379
|
+
for (var k in unsetMap) {
|
|
380
|
+
var _a = __read(resolve(uDoc, k), 2), o = _a[0], n = _a[1];
|
|
381
|
+
if (o && n.length === 1) {
|
|
382
|
+
delete o[n[0]];
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
logError(o, n, uDoc, k);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
function handlePull(uDoc, orig, pullMap) {
|
|
390
|
+
var e_1, _a;
|
|
391
|
+
for (var pathk in pullMap) {
|
|
392
|
+
var pullValues = pullMap[pathk];
|
|
393
|
+
var _loop_1 = function (vk) {
|
|
394
|
+
var _b = __read(resolve(uDoc, pathk), 2), o = _b[0], n = _b[1];
|
|
395
|
+
var _c = __read(resolve(orig, pathk), 2), o2 = _c[0], n2 = _c[1];
|
|
396
|
+
if (o && n.length === 1) {
|
|
397
|
+
var index = o2[n2[0]].findIndex(function (z) { return JSON.stringify(z) === JSON.stringify(vk); });
|
|
398
|
+
if (index !== -1) {
|
|
399
|
+
o[n[0]].splice(index, 1);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
logError(o, n, uDoc, pathk);
|
|
404
|
+
}
|
|
405
|
+
};
|
|
406
|
+
try {
|
|
407
|
+
for (var pullValues_1 = (e_1 = void 0, __values(pullValues)), pullValues_1_1 = pullValues_1.next(); !pullValues_1_1.done; pullValues_1_1 = pullValues_1.next()) {
|
|
408
|
+
var vk = pullValues_1_1.value;
|
|
409
|
+
_loop_1(vk);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
413
|
+
finally {
|
|
414
|
+
try {
|
|
415
|
+
if (pullValues_1_1 && !pullValues_1_1.done && (_a = pullValues_1.return)) _a.call(pullValues_1);
|
|
416
|
+
}
|
|
417
|
+
finally { if (e_1) throw e_1.error; }
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
function handlePush(uDoc, pushMap) {
|
|
422
|
+
var e_2, _a;
|
|
423
|
+
for (var pathk in pushMap) {
|
|
424
|
+
var pushValues = pushMap[pathk];
|
|
425
|
+
try {
|
|
426
|
+
for (var pushValues_1 = (e_2 = void 0, __values(pushValues)), pushValues_1_1 = pushValues_1.next(); !pushValues_1_1.done; pushValues_1_1 = pushValues_1.next()) {
|
|
427
|
+
var vk = pushValues_1_1.value;
|
|
428
|
+
var _b = __read(resolve(uDoc, pathk), 2), o = _b[0], n = _b[1];
|
|
429
|
+
if (o && n.length === 1) {
|
|
430
|
+
o[n[0]].push(vk);
|
|
431
|
+
}
|
|
432
|
+
else {
|
|
433
|
+
logError(o, n, uDoc, pathk);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
438
|
+
finally {
|
|
439
|
+
try {
|
|
440
|
+
if (pushValues_1_1 && !pushValues_1_1.done && (_a = pushValues_1.return)) _a.call(pushValues_1);
|
|
441
|
+
}
|
|
442
|
+
finally { if (e_2) throw e_2.error; }
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
function logError(o, n, uDoc, key) {
|
|
447
|
+
console.log('Error', o + '/' + n + ' - couldn\'t resolve for ' + JSON.stringify(uDoc) + ' ' + key);
|
|
448
|
+
}
|
|
449
|
+
function resolve(a, path, options) {
|
|
450
|
+
if (options === void 0) { options = {}; }
|
|
451
|
+
var stack = arrize(path);
|
|
452
|
+
var last = [];
|
|
453
|
+
if (stack.length > 0) {
|
|
454
|
+
last.unshift(stack.pop());
|
|
455
|
+
}
|
|
456
|
+
var e = a;
|
|
457
|
+
while (stack.length > 0) {
|
|
458
|
+
var k = stack.shift();
|
|
459
|
+
if (e[k] !== void 0) {
|
|
460
|
+
e = e[k];
|
|
461
|
+
}
|
|
462
|
+
else {
|
|
463
|
+
if (!options.force) {
|
|
464
|
+
last.unshift(k);
|
|
465
|
+
last = stack.concat(last);
|
|
466
|
+
break;
|
|
467
|
+
}
|
|
468
|
+
var isNextNum = typeof stack[0] === 'number';
|
|
469
|
+
var isLastNum = stack.length === 0 && typeof last[0] === 'number';
|
|
470
|
+
e[k] = isNextNum || isLastNum ? [] : {};
|
|
471
|
+
e = e[k];
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
return [e, last];
|
|
475
|
+
}
|
|
476
|
+
function arrize(path, glue) {
|
|
477
|
+
if (glue === void 0) { glue = '.'; }
|
|
478
|
+
if (Array.isArray(path)) {
|
|
479
|
+
return path.slice();
|
|
480
|
+
}
|
|
481
|
+
if (path === void 0 || path === null || path === false || path === '') {
|
|
482
|
+
return [];
|
|
483
|
+
}
|
|
484
|
+
return path.toString().split(glue)
|
|
485
|
+
.map(function (e) {
|
|
486
|
+
if ([void 0, null, false, ''].includes(e)) {
|
|
487
|
+
return null;
|
|
488
|
+
}
|
|
489
|
+
return e.toString();
|
|
490
|
+
})
|
|
491
|
+
.filter(function (e) { return e !== null; });
|
|
492
|
+
}
|
|
493
|
+
function deepDiffDetails(object1, object2) {
|
|
494
|
+
var obj1 = deepCopy(object1);
|
|
495
|
+
var obj2 = deepCopy(object2);
|
|
496
|
+
var diff = (0, deep_object_diff_1.detailedDiff)(obj1, obj2);
|
|
497
|
+
var diffString = '';
|
|
498
|
+
var formatValue = function (value) {
|
|
499
|
+
if (value instanceof Date) {
|
|
500
|
+
return moment(value).format('llll');
|
|
501
|
+
}
|
|
502
|
+
else if (typeof value === 'object' && value !== null) {
|
|
503
|
+
Object.keys(value).filter(function (a) { return a.startsWith('_id') || a.startsWith('id_'); }).forEach(function (key) {
|
|
504
|
+
delete value[key];
|
|
505
|
+
});
|
|
506
|
+
return JSON.stringify(value); // Pretty print objects
|
|
507
|
+
}
|
|
508
|
+
else {
|
|
509
|
+
return typeof value === 'string' ? "\"".concat(value, "\"") : String(value);
|
|
510
|
+
}
|
|
511
|
+
};
|
|
512
|
+
var customArrayDiff = function (arr1, arr2) {
|
|
513
|
+
var arrayDiffResults = [];
|
|
514
|
+
var maxLength = Math.max(arr1.length, arr2.length);
|
|
515
|
+
for (var i = 0; i < maxLength; i++) {
|
|
516
|
+
if (arr1[i] && !arr2[i]) {
|
|
517
|
+
arrayDiffResults.push("Removed at index ".concat(i, ": ").concat(formatValue(arr1[i])));
|
|
518
|
+
}
|
|
519
|
+
else if (!arr1[i] && arr2[i]) {
|
|
520
|
+
arrayDiffResults.push("Added at index ".concat(i, ": ").concat(formatValue(arr2[i])));
|
|
521
|
+
}
|
|
522
|
+
else if (arr1[i] && arr2[i] && JSON.stringify(arr1[i]) !== JSON.stringify(arr2[i])) {
|
|
523
|
+
arrayDiffResults.push("Changed at index ".concat(i, ": {").concat(formatObjectDiff(arr1[i], arr2[i]), "}"));
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
return arrayDiffResults.join(', ');
|
|
527
|
+
};
|
|
528
|
+
var formatObjectDiff = function (obj1, obj2) {
|
|
529
|
+
if (obj1 === null || obj2 === null || typeof obj1 !== 'object' || typeof obj2 !== 'object') {
|
|
530
|
+
return "from: ".concat(formatValue(obj1), " to: ").concat(formatValue(obj2));
|
|
531
|
+
}
|
|
532
|
+
if (Array.isArray(obj1) || Array.isArray(obj2)) {
|
|
533
|
+
return customArrayDiff(Array.isArray(obj1) ? obj1 : [], Array.isArray(obj2) ? obj2 : []);
|
|
534
|
+
}
|
|
535
|
+
return Object.keys(__assign(__assign({}, obj1), obj2)).filter(function (a) { return !a.startsWith('_id') && !a.startsWith('id_'); }).map(function (key) {
|
|
536
|
+
var obj1Val = obj1 ? obj1[key] : undefined;
|
|
537
|
+
var obj2Val = obj2 ? obj2[key] : undefined;
|
|
538
|
+
return "".concat(toTitleCase(key), ": ").concat(formatObjectDiff(obj1Val, obj2Val));
|
|
539
|
+
}).join(', ');
|
|
540
|
+
};
|
|
541
|
+
// Handle each diff type
|
|
542
|
+
['added', 'deleted', 'updated'].forEach(function (diffType) {
|
|
543
|
+
if (Object.keys(diff[diffType]).length > 0) {
|
|
544
|
+
var updates = Object.keys(diff[diffType])
|
|
545
|
+
.filter(function (key) { return diffType === 'added' ? true : (diffType === 'deleted' ? !diff['added'][key] : !diff['added'][key] && !diff['deleted'][key]); })
|
|
546
|
+
.filter(function (key) { return !key.startsWith('_id') && !key.startsWith('id_'); })
|
|
547
|
+
.map(function (key) { return "\n".concat(toTitleCase(key), ": ").concat(formatObjectDiff(obj1[key], obj2[key])); })
|
|
548
|
+
.join(',');
|
|
549
|
+
diffString += updates ? "".concat(updates) : '';
|
|
550
|
+
}
|
|
551
|
+
});
|
|
552
|
+
return diffString;
|
|
553
|
+
}
|
|
554
|
+
exports.deepDiffDetails = deepDiffDetails;
|
|
555
|
+
function getBinarySize(string) {
|
|
556
|
+
if (string) {
|
|
557
|
+
return Buffer.byteLength(string, 'utf8');
|
|
558
|
+
}
|
|
559
|
+
else {
|
|
560
|
+
return 0;
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
exports.getBinarySize = getBinarySize;
|
|
564
|
+
function pad(num, size) {
|
|
565
|
+
var s = num + '';
|
|
566
|
+
while (s.length < size) {
|
|
567
|
+
s = '0' + s;
|
|
568
|
+
}
|
|
569
|
+
return s;
|
|
570
|
+
}
|
|
571
|
+
exports.pad = pad;
|
|
572
|
+
function randomString(length, chars) {
|
|
573
|
+
var result = '';
|
|
574
|
+
for (var i = length; i > 0; --i) {
|
|
575
|
+
result += chars[Math.floor(Math.random() * chars.length)];
|
|
576
|
+
}
|
|
577
|
+
return result;
|
|
578
|
+
}
|
|
579
|
+
exports.randomString = randomString;
|
|
580
|
+
function toTitleCase(str) {
|
|
581
|
+
return str.replace(/\w\S*/g, function (txt) {
|
|
582
|
+
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
|
|
583
|
+
});
|
|
584
|
+
}
|
|
585
|
+
exports.toTitleCase = toTitleCase;
|
|
586
|
+
function isObject(item) {
|
|
587
|
+
return (item && typeof item === 'object' && !Array.isArray(item));
|
|
588
|
+
}
|
|
589
|
+
exports.isObject = isObject;
|
|
590
|
+
function mergeDeep(target) {
|
|
591
|
+
var _a, _b;
|
|
592
|
+
var sources = [];
|
|
593
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
594
|
+
sources[_i - 1] = arguments[_i];
|
|
595
|
+
}
|
|
596
|
+
if (!sources.length) {
|
|
597
|
+
return target;
|
|
598
|
+
}
|
|
599
|
+
var source = sources.shift();
|
|
600
|
+
if (isObject(target) && isObject(source)) {
|
|
601
|
+
for (var key in source) {
|
|
602
|
+
if (isObject(source[key])) {
|
|
603
|
+
if (!target[key]) {
|
|
604
|
+
Object.assign(target, (_a = {}, _a[key] = {}, _a));
|
|
605
|
+
}
|
|
606
|
+
mergeDeep(target[key], source[key]);
|
|
607
|
+
}
|
|
608
|
+
else {
|
|
609
|
+
Object.assign(target, (_b = {}, _b[key] = source[key], _b));
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
return mergeDeep.apply(void 0, __spreadArray([target], __read(sources), false));
|
|
614
|
+
}
|
|
615
|
+
exports.mergeDeep = mergeDeep;
|
|
616
|
+
function generateSearchTokensFromFields(doc, fields) {
|
|
617
|
+
var tokens = new Set();
|
|
618
|
+
fields.forEach(function (field) {
|
|
619
|
+
var val = doc[field];
|
|
620
|
+
if (typeof val === 'string' && val.trim().length) {
|
|
621
|
+
var words = val.toLowerCase().split(/\s+/);
|
|
622
|
+
words.forEach(function (word) {
|
|
623
|
+
for (var i = 3; i <= word.length; i++) {
|
|
624
|
+
tokens.add(word.slice(0, i)); // prefix-based tokens only
|
|
625
|
+
}
|
|
626
|
+
});
|
|
627
|
+
}
|
|
628
|
+
});
|
|
629
|
+
return Array.from(tokens);
|
|
630
|
+
}
|
|
631
|
+
exports.generateSearchTokensFromFields = generateSearchTokensFromFields;
|
|
632
|
+
|
|
2
633
|
//# sourceMappingURL=common.js.map
|