@resolveio/server-lib 20.7.120 → 20.7.121

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.
Files changed (216) hide show
  1. package/client-server-app.js +51 -1
  2. package/client-server-app.js.map +1 -1
  3. package/collections/app-status.collection.js +51 -1
  4. package/collections/app-status.collection.js.map +1 -1
  5. package/collections/counter.collection.js +55 -1
  6. package/collections/counter.collection.js.map +1 -1
  7. package/collections/cron-job-history.collection.js +136 -1
  8. package/collections/cron-job-history.collection.js.map +1 -1
  9. package/collections/cron-job.collection.js +87 -1
  10. package/collections/cron-job.collection.js.map +1 -1
  11. package/collections/email-history.collection.js +98 -1
  12. package/collections/email-history.collection.js.map +1 -1
  13. package/collections/email-verified.collection.js +60 -1
  14. package/collections/email-verified.collection.js.map +1 -1
  15. package/collections/file.collection.js +73 -1
  16. package/collections/file.collection.js.map +1 -1
  17. package/collections/flag-update.collection.js +56 -1
  18. package/collections/flag-update.collection.js.map +1 -1
  19. package/collections/flag.collection.js +56 -1
  20. package/collections/flag.collection.js.map +1 -1
  21. package/collections/log-method-latency.collection.js +72 -1
  22. package/collections/log-method-latency.collection.js.map +1 -1
  23. package/collections/log-subscription.collection.js +75 -1
  24. package/collections/log-subscription.collection.js.map +1 -1
  25. package/collections/log.collection.js +87 -1
  26. package/collections/log.collection.js.map +1 -1
  27. package/collections/logged-in-users.collection.js +66 -1
  28. package/collections/logged-in-users.collection.js.map +1 -1
  29. package/collections/monitor-cpu.collection.js +64 -1
  30. package/collections/monitor-cpu.collection.js.map +1 -1
  31. package/collections/monitor-function.collection.js +73 -1
  32. package/collections/monitor-function.collection.js.map +1 -1
  33. package/collections/monitor-memory.collection.js +76 -1
  34. package/collections/monitor-memory.collection.js.map +1 -1
  35. package/collections/monitor-mongo.collection.js +70 -1
  36. package/collections/monitor-mongo.collection.js.map +1 -1
  37. package/collections/notification.collection.js +56 -1
  38. package/collections/notification.collection.js.map +1 -1
  39. package/collections/report-builder-dashboard-builder.collection.js +108 -1
  40. package/collections/report-builder-dashboard-builder.collection.js.map +1 -1
  41. package/collections/report-builder-library.collection.js +86 -1
  42. package/collections/report-builder-library.collection.js.map +1 -1
  43. package/collections/report-builder-report.collection.js +148 -1
  44. package/collections/report-builder-report.collection.js.map +1 -1
  45. package/collections/user-group.collection.js +88 -1
  46. package/collections/user-group.collection.js.map +1 -1
  47. package/collections/user-guide.collection.js +56 -1
  48. package/collections/user-guide.collection.js.map +1 -1
  49. package/collections/user.collection.js +265 -1
  50. package/collections/user.collection.js.map +1 -1
  51. package/cron/cron.js +97 -1
  52. package/cron/cron.js.map +1 -1
  53. package/fixtures/cron-jobs.js +95 -1
  54. package/fixtures/cron-jobs.js.map +1 -1
  55. package/fixtures/init.js +78 -1
  56. package/fixtures/init.js.map +1 -1
  57. package/http/auth.js +869 -1
  58. package/http/auth.js.map +1 -1
  59. package/http/health.js +11 -1
  60. package/http/health.js.map +1 -1
  61. package/http/home.js +114 -1
  62. package/http/home.js.map +1 -1
  63. package/index.js +18 -1
  64. package/index.js.map +1 -1
  65. package/managers/cron.manager.js +461 -1
  66. package/managers/cron.manager.js.map +1 -1
  67. package/managers/local-log.manager.js +79 -1
  68. package/managers/local-log.manager.js.map +1 -1
  69. package/managers/method.manager.js +1023 -1
  70. package/managers/method.manager.js.map +1 -1
  71. package/managers/mongo.manager.js +4223 -1
  72. package/managers/mongo.manager.js.map +1 -1
  73. package/managers/monitor.manager.js +534 -1
  74. package/managers/monitor.manager.js.map +1 -1
  75. package/managers/subscription.manager.js +1292 -1
  76. package/managers/subscription.manager.js.map +1 -1
  77. package/managers/websocket.manager.js +165 -1
  78. package/managers/websocket.manager.js.map +1 -1
  79. package/managers/worker-dispatcher.manager.js +335 -1
  80. package/managers/worker-dispatcher.manager.js.map +1 -1
  81. package/managers/worker-server.manager.js +292 -1
  82. package/managers/worker-server.manager.js.map +1 -1
  83. package/methods/accounts.js +302 -1
  84. package/methods/accounts.js.map +1 -1
  85. package/methods/aws.js +748 -1
  86. package/methods/aws.js.map +1 -1
  87. package/methods/collections.js +542 -1
  88. package/methods/collections.js.map +1 -1
  89. package/methods/counters.js +111 -1
  90. package/methods/counters.js.map +1 -1
  91. package/methods/cron-jobs.js +1476 -1
  92. package/methods/cron-jobs.js.map +1 -1
  93. package/methods/flag-updates.js +8 -1
  94. package/methods/flag-updates.js.map +1 -1
  95. package/methods/flags.js +8 -1
  96. package/methods/flags.js.map +1 -1
  97. package/methods/logs.js +417 -1
  98. package/methods/logs.js.map +1 -1
  99. package/methods/monitor.js +543 -1
  100. package/methods/monitor.js.map +1 -1
  101. package/methods/pdf.js +742 -1
  102. package/methods/pdf.js.map +1 -1
  103. package/methods/report-builder.js +840 -1
  104. package/methods/report-builder.js.map +1 -1
  105. package/methods/support.js +232 -1
  106. package/methods/support.js.map +1 -1
  107. package/models/app-status.model.js +3 -1
  108. package/models/app-status.model.js.map +1 -1
  109. package/models/billing-logged-in-users.model.js +3 -1
  110. package/models/billing-logged-in-users.model.js.map +1 -1
  111. package/models/collection-document.model.js +3 -1
  112. package/models/collection-document.model.js.map +1 -1
  113. package/models/counter.model.js +3 -1
  114. package/models/counter.model.js.map +1 -1
  115. package/models/cron-job-history.model.js +3 -1
  116. package/models/cron-job-history.model.js.map +1 -1
  117. package/models/cron-job.model.js +3 -1
  118. package/models/cron-job.model.js.map +1 -1
  119. package/models/dialog.model.js +3 -1
  120. package/models/dialog.model.js.map +1 -1
  121. package/models/email-history.model.js +15 -1
  122. package/models/email-history.model.js.map +1 -1
  123. package/models/email-verified.model.js +3 -1
  124. package/models/email-verified.model.js.map +1 -1
  125. package/models/file.model.js +3 -1
  126. package/models/file.model.js.map +1 -1
  127. package/models/flag-update.model.js +3 -1
  128. package/models/flag-update.model.js.map +1 -1
  129. package/models/flag.model.js +3 -1
  130. package/models/flag.model.js.map +1 -1
  131. package/models/log-method-latency.model.js +3 -1
  132. package/models/log-method-latency.model.js.map +1 -1
  133. package/models/log-subscription.model.js +3 -1
  134. package/models/log-subscription.model.js.map +1 -1
  135. package/models/log.model.js +3 -1
  136. package/models/log.model.js.map +1 -1
  137. package/models/logged-in-users.model.js +3 -1
  138. package/models/logged-in-users.model.js.map +1 -1
  139. package/models/method-response.model.js +3 -1
  140. package/models/method-response.model.js.map +1 -1
  141. package/models/method.model.d.ts +0 -1
  142. package/models/method.model.js +3 -1
  143. package/models/method.model.js.map +1 -1
  144. package/models/monitor-cpu.model.js +3 -1
  145. package/models/monitor-cpu.model.js.map +1 -1
  146. package/models/monitor-function.model.js +3 -1
  147. package/models/monitor-function.model.js.map +1 -1
  148. package/models/monitor-memory.model.js +3 -1
  149. package/models/monitor-memory.model.js.map +1 -1
  150. package/models/monitor-mongo.model.js +3 -1
  151. package/models/monitor-mongo.model.js.map +1 -1
  152. package/models/notification.model.js +3 -1
  153. package/models/notification.model.js.map +1 -1
  154. package/models/pagination.model.js +23 -1
  155. package/models/pagination.model.js.map +1 -1
  156. package/models/permission.model.js +3 -1
  157. package/models/permission.model.js.map +1 -1
  158. package/models/report-builder-dashboard-builder.model.js +3 -1
  159. package/models/report-builder-dashboard-builder.model.js.map +1 -1
  160. package/models/report-builder-library.model.js +3 -1
  161. package/models/report-builder-library.model.js.map +1 -1
  162. package/models/report-builder-report.model.js +3 -1
  163. package/models/report-builder-report.model.js.map +1 -1
  164. package/models/report-builder.model.js +3 -1
  165. package/models/report-builder.model.js.map +1 -1
  166. package/models/select-data-label.model.js +3 -1
  167. package/models/select-data-label.model.js.map +1 -1
  168. package/models/server-message.model.js +3 -1
  169. package/models/server-message.model.js.map +1 -1
  170. package/models/subscription.model.js +3 -1
  171. package/models/subscription.model.js.map +1 -1
  172. package/models/support-ticket.model.js +3 -1
  173. package/models/support-ticket.model.js.map +1 -1
  174. package/models/user-group.model.js +3 -1
  175. package/models/user-group.model.js.map +1 -1
  176. package/models/user-guide.model.js +3 -1
  177. package/models/user-guide.model.js.map +1 -1
  178. package/models/user.model.js +3 -1
  179. package/models/user.model.js.map +1 -1
  180. package/package.json +1 -1
  181. package/public_api.js +77 -1
  182. package/public_api.js.map +1 -1
  183. package/publications/app-status.js +16 -1
  184. package/publications/app-status.js.map +1 -1
  185. package/publications/cron-jobs.js +32 -1
  186. package/publications/cron-jobs.js.map +1 -1
  187. package/publications/files.js +36 -1
  188. package/publications/files.js.map +1 -1
  189. package/publications/flags-update.js +22 -1
  190. package/publications/flags-update.js.map +1 -1
  191. package/publications/flags.js +22 -1
  192. package/publications/flags.js.map +1 -1
  193. package/publications/logs.js +164 -1
  194. package/publications/logs.js.map +1 -1
  195. package/publications/notifications.js +16 -1
  196. package/publications/notifications.js.map +1 -1
  197. package/publications/report-builder-dashboard-builders.js +42 -1
  198. package/publications/report-builder-dashboard-builders.js.map +1 -1
  199. package/publications/report-builder-libraries.js +90 -1
  200. package/publications/report-builder-libraries.js.map +1 -1
  201. package/publications/report-builder-reports.js +50 -1
  202. package/publications/report-builder-reports.js.map +1 -1
  203. package/publications/super-admin.js +16 -1
  204. package/publications/super-admin.js.map +1 -1
  205. package/publications/user-groups.js +16 -1
  206. package/publications/user-groups.js.map +1 -1
  207. package/publications/user-guides.js +16 -1
  208. package/publications/user-guides.js.map +1 -1
  209. package/resolveio-server-app.js +176 -1
  210. package/resolveio-server-app.js.map +1 -1
  211. package/server-app.js +1159 -1
  212. package/server-app.js.map +1 -1
  213. package/util/common.js +632 -1
  214. package/util/common.js.map +1 -1
  215. package/util/schema-report-builder.js +454 -1
  216. 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