@resolveio/server-lib 1.0.0-rc4 → 1.0.0-rc5

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 (157) hide show
  1. package/collections/active-subscription.collection.d.ts +8 -0
  2. package/collections/active-subscription.collection.js +68 -2
  3. package/collections/app-status.collection.d.ts +8 -0
  4. package/collections/app-status.collection.js +43 -2
  5. package/collections/app-version.collection.d.ts +8 -0
  6. package/collections/app-version.collection.js +56 -2
  7. package/collections/counter.collection.d.ts +10 -0
  8. package/collections/counter.collection.js +73 -2
  9. package/collections/cron-job-history.collection.d.ts +8 -0
  10. package/collections/cron-job-history.collection.js +86 -2
  11. package/collections/cron-job.collection.d.ts +8 -0
  12. package/collections/cron-job.collection.js +89 -2
  13. package/collections/file.collection.d.ts +10 -0
  14. package/collections/file.collection.js +73 -2
  15. package/collections/flag.collection.d.ts +8 -0
  16. package/collections/flag.collection.js +47 -2
  17. package/collections/log.collection.d.ts +8 -0
  18. package/collections/log.collection.js +64 -2
  19. package/collections/logged-in-users.collection.d.ts +8 -0
  20. package/collections/logged-in-users.collection.js +70 -2
  21. package/collections/method-call.collection.d.ts +7 -0
  22. package/collections/method-call.collection.js +44 -2
  23. package/collections/method-response.collection.d.ts +7 -0
  24. package/collections/method-response.collection.js +48 -2
  25. package/collections/queue-flag.collection.d.ts +8 -0
  26. package/collections/queue-flag.collection.js +41 -2
  27. package/collections/queue-method.collection.d.ts +8 -0
  28. package/collections/queue-method.collection.js +116 -2
  29. package/collections/queue-response.collection.d.ts +8 -0
  30. package/collections/queue-response.collection.js +78 -2
  31. package/collections/support-ticket.collection.d.ts +8 -0
  32. package/collections/support-ticket.collection.js +146 -2
  33. package/collections/user.collection.d.ts +9 -0
  34. package/collections/user.collection.js +108 -2
  35. package/cron/cron.d.ts +6 -0
  36. package/cron/cron.js +160 -2
  37. package/fixtures/cron-jobs.d.ts +2 -0
  38. package/fixtures/cron-jobs.js +72 -2
  39. package/fixtures/init.d.ts +2 -0
  40. package/fixtures/init.js +73 -2
  41. package/http/auth.d.ts +3 -0
  42. package/http/auth.js +472 -2
  43. package/http/health.d.ts +2 -0
  44. package/http/health.js +8 -2
  45. package/index.d.ts +53 -0
  46. package/index.js +123 -2
  47. package/managers/cron.manager.d.ts +17 -0
  48. package/managers/cron.manager.js +193 -2
  49. package/managers/method.manager.d.ts +27 -0
  50. package/managers/method.manager.js +513 -2
  51. package/managers/queue-method.manager.d.ts +14 -0
  52. package/managers/queue-method.manager.js +239 -2
  53. package/managers/subscription.manager.d.ts +27 -0
  54. package/managers/subscription.manager.js +700 -2
  55. package/managers/support.manager.d.ts +18 -0
  56. package/managers/support.manager.js +208 -2
  57. package/methods/accounts.d.ts +3 -0
  58. package/methods/accounts.js +253 -2
  59. package/methods/aws.d.ts +3 -0
  60. package/methods/aws.js +323 -2
  61. package/methods/cloudconvert.d.ts +3 -0
  62. package/methods/cloudconvert.js +37 -2
  63. package/methods/collections.d.ts +3 -0
  64. package/methods/collections.js +738 -2
  65. package/methods/counters.d.ts +3 -0
  66. package/methods/counters.js +404 -2
  67. package/methods/cron-jobs.d.ts +3 -0
  68. package/methods/cron-jobs.js +63 -2
  69. package/methods/flags.d.ts +3 -0
  70. package/methods/flags.js +6 -2
  71. package/methods/logs.d.ts +3 -0
  72. package/methods/logs.js +29 -2
  73. package/methods/pdf.d.ts +3 -0
  74. package/methods/pdf.js +303 -2
  75. package/models/active-subscription.model.d.ts +14 -0
  76. package/models/active-subscription.model.js +2 -2
  77. package/models/app-status.model.d.ts +5 -0
  78. package/models/app-status.model.js +2 -2
  79. package/models/app-version.model.d.ts +5 -0
  80. package/models/app-version.model.js +2 -2
  81. package/models/collection-document.model.d.ts +7 -0
  82. package/models/collection-document.model.js +2 -2
  83. package/models/counter.model.d.ts +6 -0
  84. package/models/counter.model.js +2 -2
  85. package/models/cron-job-history.model.d.ts +13 -0
  86. package/models/cron-job-history.model.js +2 -2
  87. package/models/cron-job.model.d.ts +14 -0
  88. package/models/cron-job.model.js +2 -2
  89. package/models/dialog.model.d.ts +24 -0
  90. package/models/dialog.model.js +2 -2
  91. package/models/file.model.d.ts +10 -0
  92. package/models/file.model.js +2 -2
  93. package/models/flag.model.d.ts +6 -0
  94. package/models/flag.model.js +2 -2
  95. package/models/log.model.d.ts +12 -0
  96. package/models/log.model.js +2 -2
  97. package/models/logged-in-users.model.d.ts +10 -0
  98. package/models/logged-in-users.model.js +2 -2
  99. package/models/method-call.model.d.ts +8 -0
  100. package/models/method-call.model.js +2 -2
  101. package/models/method-response.model.d.ts +9 -0
  102. package/models/method-response.model.js +2 -2
  103. package/models/method.model.d.ts +11 -0
  104. package/models/method.model.js +2 -2
  105. package/models/pagination.model.d.ts +12 -0
  106. package/models/pagination.model.js +20 -2
  107. package/models/permission.model.d.ts +13 -0
  108. package/models/permission.model.js +2 -2
  109. package/models/queue-method.model.d.ts +10 -0
  110. package/models/queue-method.model.js +2 -2
  111. package/models/queue-response.model.d.ts +11 -0
  112. package/models/queue-response.model.js +2 -2
  113. package/models/select-data-label.model.d.ts +10 -0
  114. package/models/select-data-label.model.js +2 -2
  115. package/models/server-response.model.d.ts +6 -0
  116. package/models/server-response.model.js +2 -2
  117. package/models/subscription.model.d.ts +31 -0
  118. package/models/subscription.model.js +2 -2
  119. package/models/support-method.model.d.ts +10 -0
  120. package/models/support-method.model.js +2 -2
  121. package/models/support-ticket.model.d.ts +40 -0
  122. package/models/support-ticket.model.js +2 -2
  123. package/models/user.model.d.ts +15 -0
  124. package/models/user.model.js +2 -2
  125. package/package.json +3 -1
  126. package/publications/app-status.d.ts +3 -0
  127. package/publications/app-status.js +14 -2
  128. package/publications/app-version.d.ts +3 -0
  129. package/publications/app-version.js +14 -2
  130. package/publications/cron-jobs.d.ts +3 -0
  131. package/publications/cron-jobs.js +14 -2
  132. package/publications/files.d.ts +3 -0
  133. package/publications/files.js +71 -2
  134. package/publications/flags.d.ts +3 -0
  135. package/publications/flags.js +23 -2
  136. package/publications/logs.d.ts +3 -0
  137. package/publications/logs.js +26 -2
  138. package/publications/method-calls.d.ts +3 -0
  139. package/publications/method-calls.js +14 -2
  140. package/publications/method-responses.d.ts +3 -0
  141. package/publications/method-responses.js +14 -2
  142. package/publications/super-admin.d.ts +3 -0
  143. package/publications/super-admin.js +21 -2
  144. package/publications/support-tickets.d.ts +2 -0
  145. package/publications/support-tickets.js +118 -2
  146. package/server-app.d.ts +33 -0
  147. package/server-app.js +598 -2
  148. package/support-methods/aws.d.ts +3 -0
  149. package/support-methods/aws.js +276 -2
  150. package/support-methods/collections.d.ts +3 -0
  151. package/support-methods/collections.js +471 -2
  152. package/support-methods/counters.d.ts +3 -0
  153. package/support-methods/counters.js +189 -2
  154. package/support-methods/support.d.ts +3 -0
  155. package/support-methods/support.js +19 -2
  156. package/util/common.d.ts +15 -0
  157. package/util/common.js +334 -2
package/methods/pdf.js CHANGED
@@ -1,2 +1,303 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var fs=require("fs"),request=require("request"),mongoose_1=require("mongoose"),simpl_schema_1=require("simpl-schema"),pdfCnt=0;function loadPDFMethods(t){t.methods({generatePDF:{skipQueue:!0,check:new simpl_schema_1.default({html:{type:String},fileName:{type:String},orientation:{type:String,optional:!0},fontSize:{type:String,optional:!0},upload:{type:Boolean,optional:!0},uploadFileOrder:{type:Number,optional:!0},uploadFileType:{type:String,optional:!0}}),function:function(e,s,n,l,f,p,c){void 0===n&&(n="portrait"),void 0===l&&(l="8px"),void 0===f&&(f=!1),void 0===p&&(p=-1),void 0===c&&(c="");var u=this;return new Promise(function(i,o){var t=require("phantom"),a=null;t.create().then(function(t){return(a=t).createPage()}).then(function(t){t.property("paperSize",{format:"letter",margin:"1cm",orientation:n,footer:{height:"1cm",contents:a.callback(function(t,e){return"<span style='float:right; font-size: 12px;'>Page "+t+" of "+e+"</span>"})}}),t.property("content","\n\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif.ttf\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Italic.ttf\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-BoldItalic.ttf\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-size: "+(l||"8px")+";\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\t\tmargin-bottom: 1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\t\tfont-family: Open Sans; \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t</head>\n\t\t\t\t\t\t<body>\n\t\t\t\t\t"+e.replace(new RegExp("flex-basis:","g"),"-webkit-flex-basis:").replace(new RegExp("flex:","g"),"-webkit-flex:")+"</body>");var r=pdfCnt+++"-"+s;t.render(r,{format:"pdf",quality:"100"}).then(function(){fs.existsSync(r)?fs.readFile(r,function(t,e){if(t)console.log(t);else if(fs.unlinkSync(r),f){var n="data:application/pdf;base64,"+Buffer.from(e).toString("base64");u.callMethodInternal.call(u,"uploadFileAndSave",s,n,4*Math.ceil(n.length/3),p,c,function(t,e){t?o(t):i(e)})}else i("data:application/pdf;base64,"+Buffer.from(e).toString("base64"));a.exit()}):(o("No tmp file"),console.log("No tmp file ",r))})}).catch(function(t){o(t),a.exit()})})}},mergePDF:{skipQueue:!0,check:new simpl_schema_1.default({fileKeys:{type:Array},"fileKeys.$":{type:String},fileName:{type:String},fileType:{type:String,optional:!0}}),function:function(e,s,l){var f=this;return new Promise(function(o,a){f.callMethodInternal.call(f,"getCCProcessURL").then(function(t){var i="uploads/"+Date.now()+"-"+pdfCnt+++"-"+s;request({method:"POST",url:"https:"+t.url,headers:{"Content-Type":"application/json"},json:{mode:"combine",input:{s3:{accesskeyid:f.serverConfig.AWSACCESSKEYID,secretaccesskey:f.serverConfig.AWSSECRETACCESSKEY,region:f.serverConfig.AWSREGION,bucket:f.serverConfig.AWSBUCKET}},files:e,outputformat:"pdf",wait:!0,output:{s3:{accesskeyid:f.serverConfig.AWSACCESSKEYID,secretaccesskey:f.serverConfig.AWSSECRETACCESSKEY,region:f.serverConfig.AWSREGION,bucket:f.serverConfig.AWSBUCKET,path:i}},converteroptions:{resize:"612x792",resizemode:"scale",resizeenlarge:null,grayscale:null,auto_orient:null,strip_metatags:!1,density:72,rotate:null,command:null}}},function(t,e,n){if(t)a(t);else{var r={_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,name:s,size:n.output.size,key:i,type:l||"",order:-1};n.output.size?f.callMethodInternal.call(f,"insertDocument","files",r,function(t,e){e?(r.status="Uploaded",o(r)):a(t)}):a("Merged file has no size, merge failed")}})},function(t){return a(t)})})}},mergePDFNoUpload:{skipQueue:!0,check:new simpl_schema_1.default({fileKeys:{type:Array},"fileKeys.$":{type:String},fileName:{type:String},fileType:{type:String,optional:!0}}),function:function(e,s,l){var f=this;return new Promise(function(o,a){f.callMethodInternal.call(f,"getCCProcessURL").then(function(t){var i="uploads/"+Date.now()+"-"+pdfCnt+++"-"+s;request({method:"POST",url:"https:"+t.url,headers:{"Content-Type":"application/json"},json:{mode:"combine",input:{s3:{accesskeyid:f.serverConfig.AWSACCESSKEYID,secretaccesskey:f.serverConfig.AWSSECRETACCESSKEY,region:f.serverConfig.AWSREGION,bucket:f.serverConfig.AWSBUCKET}},files:e,outputformat:"pdf",wait:!0,output:{s3:{accesskeyid:f.serverConfig.AWSACCESSKEYID,secretaccesskey:f.serverConfig.AWSSECRETACCESSKEY,region:f.serverConfig.AWSREGION,bucket:f.serverConfig.AWSBUCKET,path:i}},converteroptions:{resize:"612x792",resizemode:"scale",resizeenlarge:null,grayscale:null,auto_orient:null,strip_metatags:!1,density:72,rotate:null,command:null}}},function(t,e,n){if(t)a(t);else{var r={_id:mongoose_1.Types.ObjectId().toHexString(),name:s,size:n.output.size,key:i,type:l||"",order:-1};f.callMethodInternal.call(f,"insertDocument","files",r,function(t,e){if(e){r.status="Uploaded",o(r);var n=f;setTimeout(function(){n.callMethodInternal.call(n,"deleteFile",i)},6e4)}else a(t)})}})},function(t){return a(t)})})}}})}exports.loadPDFMethods=loadPDFMethods;
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRob2RzL3BkZi50cyJdLCJuYW1lcyI6WyJmcyIsInJlcXVpcmUiLCJyZXF1ZXN0IiwibW9uZ29vc2VfMSIsInNpbXBsX3NjaGVtYV8xIiwicGRmQ250IiwibG9hZFBERk1ldGhvZHMiLCJtZXRob2RNYW5hZ2VyIiwibWV0aG9kcyIsImdlbmVyYXRlUERGIiwic2tpcFF1ZXVlIiwiY2hlY2siLCJkZWZhdWx0IiwiaHRtbCIsInR5cGUiLCJTdHJpbmciLCJmaWxlTmFtZSIsIm9yaWVudGF0aW9uIiwib3B0aW9uYWwiLCJmb250U2l6ZSIsInVwbG9hZCIsIkJvb2xlYW4iLCJ1cGxvYWRGaWxlT3JkZXIiLCJOdW1iZXIiLCJ1cGxvYWRGaWxlVHlwZSIsImZ1bmN0aW9uIiwidGhhdCIsInRoaXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInBoYW50b20iLCJwaEluc3RhbmNlIiwiY3JlYXRlIiwidGhlbiIsImluc3RhbmNlIiwiY3JlYXRlUGFnZSIsInBhZ2UiLCJwcm9wZXJ0eSIsImZvcm1hdCIsIm1hcmdpbiIsImZvb3RlciIsImhlaWdodCIsImNvbnRlbnRzIiwiY2FsbGJhY2siLCJwYWdlTnVtIiwibnVtUGFnZXMiLCJyZXBsYWNlIiwiUmVnRXhwIiwidG1wRmlsZU5hbWUiLCJyZW5kZXIiLCJxdWFsaXR5IiwiZXhpc3RzU3luYyIsInJlYWRGaWxlIiwiZXJyUmVhZCIsImRhdGEiLCJjb25zb2xlIiwibG9nIiwidW5saW5rU3luYyIsImZpbGVEYXRhIiwiQnVmZmVyIiwiZnJvbSIsInRvU3RyaW5nIiwiY2FsbE1ldGhvZEludGVybmFsIiwiY2FsbCIsIk1hdGgiLCJjZWlsIiwibGVuZ3RoIiwiZXJyIiwicmVzIiwiZXhpdCIsImNhdGNoIiwiZXJyb3IiLCJtZXJnZVBERiIsImZpbGVLZXlzIiwiQXJyYXkiLCJmaWxlS2V5cy4kIiwiZmlsZVR5cGUiLCJfdGhpcyIsInJlc0NDIiwibWVyZ2VGaWxlTmFtZSIsIkRhdGUiLCJub3ciLCJtZXRob2QiLCJ1cmwiLCJoZWFkZXJzIiwiQ29udGVudC1UeXBlIiwianNvbiIsIm1vZGUiLCJpbnB1dCIsInMzIiwiYWNjZXNza2V5aWQiLCJzZXJ2ZXJDb25maWciLCJzZWNyZXRhY2Nlc3NrZXkiLCJyZWdpb24iLCJidWNrZXQiLCJmaWxlcyIsIm91dHB1dGZvcm1hdCIsIndhaXQiLCJvdXRwdXQiLCJwYXRoIiwiY29udmVydGVyb3B0aW9ucyIsInJlc2l6ZSIsInJlc2l6ZW1vZGUiLCJyZXNpemVlbmxhcmdlIiwiZ3JheXNjYWxlIiwiYXV0b19vcmllbnQiLCJzdHJpcF9tZXRhdGFncyIsImRlbnNpdHkiLCJyb3RhdGUiLCJjb21tYW5kIiwicmVzcG9uc2UiLCJib2R5IiwicmVzRmlsZV8xIiwiX2lkIiwiVHlwZXMiLCJPYmplY3RJZCIsInRvSGV4U3RyaW5nIiwiX192IiwibmFtZSIsInNpemUiLCJrZXkiLCJvcmRlciIsImVyclVwRmlsZSIsInJlc1VwRmlsZSIsInN0YXR1cyIsImVyckNDIiwibWVyZ2VQREZOb1VwbG9hZCIsInJlc0ZpbGVfMiIsInRoYXRfMSIsInNldFRpbWVvdXQiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoib0VBQUEsSUFBSUEsR0FBS0MsUUFBUSxNQUdqQkMsUUFBQUQsUUFBQSxXQUNBRSxXQUFBRixRQUFBLFlBQ0FHLGVBQUFILFFBQUEsZ0JBRUlJLE9BQVMsRUFFYixTQUFnQkMsZUFBZUMsR0FDOUJBLEVBQWNDLFFBQVEsQ0FDckJDLFlBQWEsQ0FDWkMsV0FBVyxFQUNYQyxNQUFPLElBQUlQLGVBQUFRLFFBQWEsQ0FDdkJDLEtBQU0sQ0FDTEMsS0FBTUMsUUFFUEMsU0FBVSxDQUNURixLQUFNQyxRQUVQRSxZQUFhLENBQ1pILEtBQU1DLE9BQ05HLFVBQVUsR0FFWEMsU0FBVSxDQUNUTCxLQUFNQyxPQUNORyxVQUFVLEdBRVhFLE9BQVEsQ0FDUE4sS0FBTU8sUUFDTkgsVUFBVSxHQUVYSSxnQkFBaUIsQ0FDaEJSLEtBQU1TLE9BQ05MLFVBQVUsR0FFWE0sZUFB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SUEsRUFBVyxDQUNkSSxFQUFRSCxPQUFTLFdBRWpCaEcsRUFBUW1HLEdBRVIsSUFBSUMsRUFBT25ELEVBRVhvRCxXQUFXLFdBQ1ZELEVBQUtsRSxtQkFBbUJDLEtBQUtpRSxFQUFNLGFBQWNqRCxJQUMvQyxVQUdIbEQsRUFBTzZGLFNBUVQsU0FBQUcsR0FBUyxPQUFBaEcsRUFBT2dHLFdBL1l4QkssUUFBQTdILGVBQUFBIiwiZmlsZSI6Im1ldGhvZHMvcGRmLmpzIiwic291cmNlc0NvbnRlbnQiOlsibGV0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmltcG9ydCB7IEZpbGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9maWxlLm1vZGVsJztcbmltcG9ydCB7IE1ldGhvZE1hbmFnZXIgfSBmcm9tICcuLi9tYW5hZ2Vycy9tZXRob2QubWFuYWdlcic7XG5pbXBvcnQgKiBhcyByZXF1ZXN0IGZyb20gJ3JlcXVlc3QnO1xuaW1wb3J0IHsgVHlwZXMgfSBmcm9tICdtb25nb29zZSc7XG5pbXBvcnQgU2ltcGxlU2NoZW1hIGZyb20gJ3NpbXBsLXNjaGVtYSc7XG5cbmxldCBwZGZDbnQgPSAwO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFBERk1ldGhvZHMobWV0aG9kTWFuYWdlcjogTWV0aG9kTWFuYWdlcikge1xuXHRtZXRob2RNYW5hZ2VyLm1ldGhvZHMoe1xuXHRcdGdlbmVyYXRlUERGOiB7XG5cdFx0XHRza2lwUXVldWU6IHRydWUsXG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGh0bWw6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0ZmlsZU5hbWU6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0b3JpZW50YXRpb246IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRcdFx0b3B0aW9uYWw6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0Zm9udFNpemU6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRcdFx0b3B0aW9uYWw6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0dXBsb2FkOiB7XG5cdFx0XHRcdFx0dHlwZTogQm9vbGVhbixcblx0XHRcdFx0XHRvcHRpb25hbDogdHJ1ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHR1cGxvYWRGaWxlT3JkZXI6IHtcblx0XHRcdFx0XHR0eXBlOiBOdW1iZXIsXG5cdFx0XHRcdFx0b3B0aW9uYWw6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0dXBsb2FkRmlsZVR5cGU6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRcdFx0b3B0aW9uYWw6IHRydWVcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oaHRtbCwgZmlsZU5hbWUsIG9yaWVudGF0aW9uID0gJ3BvcnRyYWl0JywgZm9udFNpemUgPSAnOHB4JywgdXBsb2FkID0gZmFsc2UsIHVwbG9hZEZpbGVPcmRlciA9IC0xLCB1cGxvYWRGaWxlVHlwZSA9ICcnKSB7XG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpcztcblxuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdGxldCBwaGFudG9tID0gcmVxdWlyZSgncGhhbnRvbScpO1xuXHRcdFx0XHRcdGxldCBwaEluc3RhbmNlID0gbnVsbDtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRwaGFudG9tLmNyZWF0ZSgpLnRoZW4oaW5zdGFuY2UgPT4ge1xuXHRcdFx0XHRcdFx0cGhJbnN0YW5jZSA9IGluc3RhbmNlO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGluc3RhbmNlLmNyZWF0ZVBhZ2UoKTtcblx0XHRcdFx0XHR9KS50aGVuKHBhZ2UgPT4ge1xuXHRcdFx0XHRcdFx0cGFnZS5wcm9wZXJ0eSgncGFwZXJTaXplJywge1xuXHRcdFx0XHRcdFx0XHRmb3JtYXQ6ICdsZXR0ZXInLFxuXHRcdFx0XHRcdFx0XHRtYXJnaW46ICcxY20nLFxuXHRcdFx0XHRcdFx0XHRvcmllbnRhdGlvbjogb3JpZW50YXRpb24sXG5cdFx0XHRcdFx0XHRcdGZvb3Rlcjoge1xuXHRcdFx0XHRcdFx0XHRcdGhlaWdodDogJzFjbScsXG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudHM6IHBoSW5zdGFuY2UuY2FsbGJhY2soZnVuY3Rpb24ocGFnZU51bSwgbnVtUGFnZXMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAnPHNwYW4gc3R5bGU9XFwnZmxvYXQ6cmlnaHQ7IGZvbnQtc2l6ZTogMTJweDtcXCc+UGFnZSAnICsgcGFnZU51bSArICcgb2YgJyArIG51bVBhZ2VzICsgJzwvc3Bhbj4nO1xuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0cGFnZS5wcm9wZXJ0eSgnY29udGVudCcsIGBcblx0XHRcdFx0XHRcdDxoZWFkPlxuXHRcdFx0XHRcdFx0XHQ8c3R5bGU+XG5cdFx0XHRcdFx0XHRcdFx0QGZvbnQtZmFjZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb250LWZhbWlseTogJ0RlamF2dSBTZXJpZicsIHNlcmlmO1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9udC1zdHlsZTogbm9ybWFsO1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRcdFx0XHRcdFx0XHRcdHNyYzogdXJsKFwiL3Vzci9zaGFyZS9mb250cy9kZWphdnUvRGVqYVZ1U2VyaWYudHRmXCIpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdEBmb250LWZhY2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9udC1mYW1pbHk6ICdEZWphdnUgU2VyaWYnLCBzZXJpZjtcblx0XHRcdFx0XHRcdFx0XHRcdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0XHRcdFx0XHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdFx0XHRcdFx0XHRcdFx0c3JjOiB1cmwoXCIvdXNyL3NoYXJlL2ZvbnRzL2RlamF2dS9EZWphVnVTZXJpZi1Cb2xkLnR0ZlwiKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRAZm9udC1mYWNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGZvbnQtZmFtaWx5OiAnRGVqYXZ1IFNlcmlmJywgc2VyaWY7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRcdFx0XHRcdFx0XHRcdFx0c3JjOiB1cmwoXCIvdXNyL3NoYXJlL2ZvbnRzL2RlamF2dS9EZWphVnVTZXJpZi1JdGFsaWMudHRmXCIpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdEBmb250LWZhY2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9udC1mYW1pbHk6ICdEZWphdnUgU2VyaWYnLCBzZXJpZjtcblx0XHRcdFx0XHRcdFx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHRcdFx0XHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdFx0XHRcdFx0XHRcdFx0c3JjOiB1cmwoXCIvdXNyL3NoYXJlL2ZvbnRzL2RlamF2dS9EZWphVnVTZXJpZi1Cb2xkSXRhbGljLnR0ZlwiKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRib2R5IHtcblx0XHRcdFx0XHRcdFx0XHRcdGZvbnQtZmFtaWx5OiAnRGVqYXZ1IFNlcmlmJywgc2VyaWY7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb250LXNpemU6ICBgICsgKGZvbnRTaXplID8gZm9udFNpemUgOiAnOHB4JykgKyBgO1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdC5yb3cge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheTogLXdlYmtpdC1mbGV4O1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0XHRcdFx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRcdFx0XHRcdFx0XHRcdC13ZWJraXQtZmxleC13cmFwOiB3cmFwO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdC5wYWdlLWJyZWFrIHtcblx0XHRcdFx0XHRcdFx0XHRcdHBhZ2UtYnJlYWstYmVmb3JlOiBhbHdheXMgIWltcG9ydGFudDtcblx0XHRcdFx0XHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IDFweDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHQuY2VsbCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdFx0XHRcdFx0XHRcdFx0cGFkZGluZyA6IDJweDtcblx0XHRcdFx0XHRcdFx0XHRcdC13ZWJraXQtZmxleDogMTtcblx0XHRcdFx0XHRcdFx0XHRcdHdvcmQtd3JhcDogYnJlYWstd29yZDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHQuY2VsbC1uby1wYWRkaW5nIHtcblx0XHRcdFx0XHRcdFx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0XHRcdFx0XHRcdFx0XHQtd2Via2l0LWZsZXg6IDE7XG5cdFx0XHRcdFx0XHRcdFx0XHR3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0LmNlbnRlcmVkIHtcblx0XHRcdFx0XHRcdFx0XHRcdC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRcdFx0XHRcdFx0XHQtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5OiAtd2Via2l0LWZsZXg7XG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0LmNlbnRlcmVkLWxlZnQge1xuXHRcdFx0XHRcdFx0XHRcdFx0LXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheTogLXdlYmtpdC1mbGV4O1xuXHRcdFx0XHRcdFx0XHRcdFx0LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0LmNlbnRlcmVkLXJpZ2h0IHtcblx0XHRcdFx0XHRcdFx0XHRcdC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0XHRcdFx0XHRcdFx0XHRcdC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXk6IC13ZWJraXQtZmxleDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0LmJveCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCBibGFjaztcblx0XHRcdFx0XHRcdFx0XHRcdG1hcmdpbjogLTFweCAwcHggMHB4IC0xcHg7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0LmJveE5vQm9yZGVyIHtcblx0XHRcdFx0XHRcdFx0XHRcdG1hcmdpbjogLTFweCAwcHggMHB4IC0xcHg7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0cHJlIHtcblx0XHRcdFx0XHRcdFx0XHRcdHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgICAgICAgLyogY3NzLTMgKi9cblx0XHRcdFx0XHRcdFx0XHRcdHdoaXRlLXNwYWNlOiAtbW96LXByZS13cmFwOyAgLyogTW96aWxsYSwgc2luY2UgMTk5OSAqL1xuXHRcdFx0XHRcdFx0XHRcdFx0d2hpdGUtc3BhY2U6IC1wcmUtd3JhcDsgICAgICAvKiBPcGVyYSA0LTYgKi9cblx0XHRcdFx0XHRcdFx0XHRcdHdoaXRlLXNwYWNlOiAtby1wcmUtd3JhcDsgICAgLyogT3BlcmEgNyAqL1xuXHRcdFx0XHRcdFx0XHRcdFx0d29yZC13cmFwOiBicmVhay13b3JkOyAgICAgICAvKiBJbnRlcm5ldCBFeHBsb3JlciA1LjUrICovXG5cdFx0XHRcdFx0XHRcdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb250LWZhbWlseTogT3BlbiBTYW5zOyBcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDwvc3R5bGU+XG5cdFx0XHRcdFx0XHQ8L2hlYWQ+XG5cdFx0XHRcdFx0XHQ8Ym9keT5cblx0XHRcdFx0XHRgICsgaHRtbC5yZXBsYWNlKG5ldyBSZWdFeHAoJ2ZsZXgtYmFzaXM6JywgJ2cnKSwgJy13ZWJraXQtZmxleC1iYXNpczonKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ2ZsZXg6JywgJ2cnKSwgJy13ZWJraXQtZmxleDonKSArICc8L2JvZHk+Jyk7XG5cdFx0XHRcdFx0XHRsZXQgdG1wRmlsZU5hbWUgPSAocGRmQ250KyspICsgJy0nICsgZmlsZU5hbWU7XG5cdFx0XHRcdFx0XHRwYWdlLnJlbmRlcih0bXBGaWxlTmFtZSwge1xuXHRcdFx0XHRcdFx0XHRmb3JtYXQ6ICdwZGYnLFxuXHRcdFx0XHRcdFx0XHRxdWFsaXR5OiAnMTAwJ1xuXHRcdFx0XHRcdFx0fSkudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChmcy5leGlzdHNTeW5jKHRtcEZpbGVOYW1lKSkge1xuXHRcdFx0XHRcdFx0XHRcdGZzLnJlYWRGaWxlKHRtcEZpbGVOYW1lLCAoZXJyUmVhZCwgZGF0YSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFlcnJSZWFkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZzLnVubGlua1N5bmModG1wRmlsZU5hbWUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXVwbG9hZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoJ2RhdGE6YXBwbGljYXRpb24vcGRmO2Jhc2U2NCwnICsgQnVmZmVyLmZyb20oZGF0YSkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsZXQgZmlsZURhdGEgPSAnZGF0YTphcHBsaWNhdGlvbi9wZGY7YmFzZTY0LCcgKyBCdWZmZXIuZnJvbShkYXRhKS50b1N0cmluZygnYmFzZTY0Jyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5jYWxsTWV0aG9kSW50ZXJuYWwuY2FsbCh0aGF0LCAndXBsb2FkRmlsZUFuZFNhdmUnLCBmaWxlTmFtZSwgZmlsZURhdGEsICg0ICogTWF0aC5jZWlsKGZpbGVEYXRhLmxlbmd0aCAvIDMpKSwgdXBsb2FkRmlsZU9yZGVyLCB1cGxvYWRGaWxlVHlwZSwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGVyclJlYWQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XHRwaEluc3RhbmNlLmV4aXQoKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRyZWplY3QoJ05vIHRtcCBmaWxlJyk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ05vIHRtcCBmaWxlICcsIHRtcEZpbGVOYW1lKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQuY2F0Y2goZXJyb3IgPT4ge1xuXHRcdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcblx0XHRcdFx0XHRcdHBoSW5zdGFuY2UuZXhpdCgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdG1lcmdlUERGOiB7XG5cdFx0XHRza2lwUXVldWU6IHRydWUsXG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGZpbGVLZXlzOiB7XG5cdFx0XHRcdFx0dHlwZTogQXJyYXlcblx0XHRcdFx0fSxcblx0XHRcdFx0J2ZpbGVLZXlzLiQnOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGZpbGVOYW1lOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGZpbGVUeXBlOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0XHRcdG9wdGlvbmFsOiB0cnVlXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGZpbGVLZXlzOiBzdHJpbmdbXSwgZmlsZU5hbWU6IHN0cmluZywgZmlsZVR5cGU/OiBzdHJpbmcpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuXHRcdFx0XHRcdHRoaXMuY2FsbE1ldGhvZEludGVybmFsLmNhbGwodGhpcywgJ2dldENDUHJvY2Vzc1VSTCcpLnRoZW4ocmVzQ0MgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IG1lcmdlRmlsZU5hbWUgPSAndXBsb2Fkcy8nICsgRGF0ZS5ub3coKSArICctJyArIChwZGZDbnQrKykgKyAnLScgKyBmaWxlTmFtZTtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdC8vc2VuZCByZXF1ZXN0XG5cdFx0XHRcdFx0XHRyZXF1ZXN0KHtcblx0XHRcdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXG5cdFx0XHRcdFx0XHRcdHVybDogJ2h0dHBzOicgKyAgcmVzQ0MudXJsLFxuXHRcdFx0XHRcdFx0XHRoZWFkZXJzOiB7XG5cdFx0XHRcdFx0XHRcdFx0J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRqc29uOiB7XG5cdFx0XHRcdFx0XHRcdFx0bW9kZTogJ2NvbWJpbmUnLFxuXHRcdFx0XHRcdFx0XHRcdGlucHV0OiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRzMzoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQnYWNjZXNza2V5aWQnOiB0aGlzLnNlcnZlckNvbmZpZ1snQVdTQUNDRVNTS0VZSUQnXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0J3NlY3JldGFjY2Vzc2tleSc6IHRoaXMuc2VydmVyQ29uZmlnWydBV1NTRUNSRVRBQ0NFU1NLRVknXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0J3JlZ2lvbic6IHRoaXMuc2VydmVyQ29uZmlnWydBV1NSRUdJT04nXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2J1Y2tldCc6IHRoaXMuc2VydmVyQ29uZmlnWydBV1NCVUNLRVQnXVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0ZmlsZXM6IGZpbGVLZXlzLFxuXHRcdFx0XHRcdFx0XHRcdG91dHB1dGZvcm1hdDogJ3BkZicsXG5cdFx0XHRcdFx0XHRcdFx0d2FpdDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRvdXRwdXQ6IHtcblx0XHRcdFx0XHRcdFx0XHRcdCdzMyc6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2FjY2Vzc2tleWlkJzogdGhpcy5zZXJ2ZXJDb25maWdbJ0FXU0FDQ0VTU0tFWUlEJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdzZWNyZXRhY2Nlc3NrZXknOiB0aGlzLnNlcnZlckNvbmZpZ1snQVdTU0VDUkVUQUNDRVNTS0VZJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdyZWdpb24nOiB0aGlzLnNlcnZlckNvbmZpZ1snQVdTUkVHSU9OJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdidWNrZXQnOiB0aGlzLnNlcnZlckNvbmZpZ1snQVdTQlVDS0VUJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdwYXRoJzogbWVyZ2VGaWxlTmFtZVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0Y29udmVydGVyb3B0aW9uczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0J3Jlc2l6ZSc6ICc2MTJ4NzkyJyxcblx0XHRcdFx0XHRcdFx0XHRcdCdyZXNpemVtb2RlJzogJ3NjYWxlJyxcblx0XHRcdFx0XHRcdFx0XHRcdCdyZXNpemVlbmxhcmdlJzogbnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdCdncmF5c2NhbGUnOiBudWxsLFxuXHRcdFx0XHRcdFx0XHRcdFx0J2F1dG9fb3JpZW50JzogbnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdCdzdHJpcF9tZXRhdGFncyc6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdFx0J2RlbnNpdHknOiA3Mixcblx0XHRcdFx0XHRcdFx0XHRcdCdyb3RhdGUnOiBudWxsLFxuXHRcdFx0XHRcdFx0XHRcdFx0J2NvbW1hbmQnOiBudWxsXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSwgKGVycm9yLCByZXNwb25zZSwgYm9keSkgPT4ge1xuXG5cdFx0XHRcdFx0XHRcdGlmICghZXJyb3IpIHtcblxuXHRcdFx0XHRcdFx0XHRcdGxldCByZXNGaWxlOiBGaWxlTW9kZWwgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSxcblx0XHRcdFx0XHRcdFx0XHRcdF9fdjogMCxcblx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IGZpbGVOYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0c2l6ZTogYm9keS5vdXRwdXQuc2l6ZSxcblx0XHRcdFx0XHRcdFx0XHRcdGtleTogbWVyZ2VGaWxlTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6IGZpbGVUeXBlID8gZmlsZVR5cGUgOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdG9yZGVyOiAtMVxuXHRcdFx0XHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoYm9keS5vdXRwdXQuc2l6ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5jYWxsTWV0aG9kSW50ZXJuYWwuY2FsbCh0aGlzLCAnaW5zZXJ0RG9jdW1lbnQnLCAnZmlsZXMnLCByZXNGaWxlLCAoZXJyVXBGaWxlLCByZXNVcEZpbGUpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc1VwRmlsZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc0ZpbGUuc3RhdHVzID0gJ1VwbG9hZGVkJztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJlc0ZpbGUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlamVjdChlcnJVcEZpbGUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZWplY3QoJ01lcmdlZCBmaWxlIGhhcyBubyBzaXplLCBtZXJnZSBmYWlsZWQnKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSwgZXJyQ0MgPT4gcmVqZWN0KGVyckNDKSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0bWVyZ2VQREZOb1VwbG9hZDoge1xuXHRcdFx0c2tpcFF1ZXVlOiB0cnVlLFxuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRmaWxlS2V5czoge1xuXHRcdFx0XHRcdHR5cGU6IEFycmF5XG5cdFx0XHRcdH0sXG5cdFx0XHRcdCdmaWxlS2V5cy4kJzoge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRmaWxlTmFtZToge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRmaWxlVHlwZToge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdFx0XHRvcHRpb25hbDogdHJ1ZVxuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdGZ1bmN0aW9uOiBmdW5jdGlvbihmaWxlS2V5czogc3RyaW5nW10sIGZpbGVOYW1lOiBzdHJpbmcsIGZpbGVUeXBlPzogc3RyaW5nKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cblx0XHRcdFx0XHR0aGlzLmNhbGxNZXRob2RJbnRlcm5hbC5jYWxsKHRoaXMsICdnZXRDQ1Byb2Nlc3NVUkwnKS50aGVuKHJlc0NDID0+IHtcblx0XHRcdFx0XHRcdGxldCBtZXJnZUZpbGVOYW1lID0gJ3VwbG9hZHMvJyArIERhdGUubm93KCkgKyAnLScgKyAocGRmQ250KyspICsgJy0nICsgZmlsZU5hbWU7XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHQvL3NlbmQgcmVxdWVzdFxuXHRcdFx0XHRcdFx0cmVxdWVzdCh7XG5cdFx0XHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxuXHRcdFx0XHRcdFx0XHR1cmw6ICdodHRwczonICsgIHJlc0NDLnVybCxcblx0XHRcdFx0XHRcdFx0aGVhZGVyczoge1xuXHRcdFx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0anNvbjoge1xuXHRcdFx0XHRcdFx0XHRcdG1vZGU6ICdjb21iaW5lJyxcblx0XHRcdFx0XHRcdFx0XHRpbnB1dDoge1xuXHRcdFx0XHRcdFx0XHRcdFx0czM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2FjY2Vzc2tleWlkJzogdGhpcy5zZXJ2ZXJDb25maWdbJ0FXU0FDQ0VTU0tFWUlEJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdzZWNyZXRhY2Nlc3NrZXknOiB0aGlzLnNlcnZlckNvbmZpZ1snQVdTU0VDUkVUQUNDRVNTS0VZJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdyZWdpb24nOiB0aGlzLnNlcnZlckNvbmZpZ1snQVdTUkVHSU9OJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdidWNrZXQnOiB0aGlzLnNlcnZlckNvbmZpZ1snQVdTQlVDS0VUJ11cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdGZpbGVzOiBmaWxlS2V5cyxcblx0XHRcdFx0XHRcdFx0XHRvdXRwdXRmb3JtYXQ6ICdwZGYnLFxuXHRcdFx0XHRcdFx0XHRcdHdhaXQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0b3V0cHV0OiB7XG5cdFx0XHRcdFx0XHRcdFx0XHQnczMnOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdhY2Nlc3NrZXlpZCc6IHRoaXMuc2VydmVyQ29uZmlnWydBV1NBQ0NFU1NLRVlJRCddLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnc2VjcmV0YWNjZXNza2V5JzogdGhpcy5zZXJ2ZXJDb25maWdbJ0FXU1NFQ1JFVEFDQ0VTU0tFWSddLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQncmVnaW9uJzogdGhpcy5zZXJ2ZXJDb25maWdbJ0FXU1JFR0lPTiddLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnYnVja2V0JzogdGhpcy5zZXJ2ZXJDb25maWdbJ0FXU0JVQ0tFVCddLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQncGF0aCc6IG1lcmdlRmlsZU5hbWVcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdGNvbnZlcnRlcm9wdGlvbnM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdCdyZXNpemUnOiAnNjEyeDc5MicsXG5cdFx0XHRcdFx0XHRcdFx0XHQncmVzaXplbW9kZSc6ICdzY2FsZScsXG5cdFx0XHRcdFx0XHRcdFx0XHQncmVzaXplZW5sYXJnZSc6IG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHQnZ3JheXNjYWxlJzogbnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdCdhdXRvX29yaWVudCc6IG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHQnc3RyaXBfbWV0YXRhZ3MnOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRcdCdkZW5zaXR5JzogNzIsXG5cdFx0XHRcdFx0XHRcdFx0XHQncm90YXRlJzogbnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdCdjb21tYW5kJzogbnVsbFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sIChlcnJvciwgcmVzcG9uc2UsIGJvZHkpID0+IHtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIWVycm9yKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgcmVzRmlsZTogRmlsZU1vZGVsID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiBmaWxlTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHNpemU6IGJvZHkub3V0cHV0LnNpemUsXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IG1lcmdlRmlsZU5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBmaWxlVHlwZSA/IGZpbGVUeXBlIDogJycsXG5cdFx0XHRcdFx0XHRcdFx0XHRvcmRlcjogLTFcblx0XHRcdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5jYWxsTWV0aG9kSW50ZXJuYWwuY2FsbCh0aGlzLCAnaW5zZXJ0RG9jdW1lbnQnLCAnZmlsZXMnLCByZXNGaWxlLCAoZXJyVXBGaWxlLCByZXNVcEZpbGUpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyZXNVcEZpbGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzRmlsZS5zdGF0dXMgPSAnVXBsb2FkZWQnO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzRmlsZSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuY2FsbE1ldGhvZEludGVybmFsLmNhbGwodGhhdCwgJ2RlbGV0ZUZpbGUnLCBtZXJnZUZpbGVOYW1lKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgNjAwMDApO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlamVjdChlcnJVcEZpbGUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHJlamVjdChlcnJvcik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0sIGVyckNDID0+IHJlamVjdChlcnJDQykpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufSJdfQ==
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var fs = require('fs');
4
+ var request = require("request");
5
+ var mongoose_1 = require("mongoose");
6
+ var simpl_schema_1 = require("simpl-schema");
7
+ var pdfCnt = 0;
8
+ function loadPDFMethods(methodManager) {
9
+ methodManager.methods({
10
+ generatePDF: {
11
+ skipQueue: true,
12
+ check: new simpl_schema_1.default({
13
+ html: {
14
+ type: String
15
+ },
16
+ fileName: {
17
+ type: String
18
+ },
19
+ orientation: {
20
+ type: String,
21
+ optional: true
22
+ },
23
+ fontSize: {
24
+ type: String,
25
+ optional: true
26
+ },
27
+ upload: {
28
+ type: Boolean,
29
+ optional: true
30
+ },
31
+ uploadFileOrder: {
32
+ type: Number,
33
+ optional: true
34
+ },
35
+ uploadFileType: {
36
+ type: String,
37
+ optional: true
38
+ }
39
+ }),
40
+ function: function (html, fileName, orientation, fontSize, upload, uploadFileOrder, uploadFileType) {
41
+ if (orientation === void 0) { orientation = 'portrait'; }
42
+ if (fontSize === void 0) { fontSize = '8px'; }
43
+ if (upload === void 0) { upload = false; }
44
+ if (uploadFileOrder === void 0) { uploadFileOrder = -1; }
45
+ if (uploadFileType === void 0) { uploadFileType = ''; }
46
+ var that = this;
47
+ return new Promise(function (resolve, reject) {
48
+ var phantom = require('phantom');
49
+ var phInstance = null;
50
+ phantom.create().then(function (instance) {
51
+ phInstance = instance;
52
+ return instance.createPage();
53
+ }).then(function (page) {
54
+ page.property('paperSize', {
55
+ format: 'letter',
56
+ margin: '1cm',
57
+ orientation: orientation,
58
+ footer: {
59
+ height: '1cm',
60
+ contents: phInstance.callback(function (pageNum, numPages) {
61
+ return '<span style=\'float:right; font-size: 12px;\'>Page ' + pageNum + ' of ' + numPages + '</span>';
62
+ })
63
+ }
64
+ });
65
+ page.property('content', "\n\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif.ttf\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Italic.ttf\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-BoldItalic.ttf\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-size: " + (fontSize ? fontSize : '8px') + ";\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\t\tmargin-bottom: 1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\t\tfont-family: Open Sans; \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t</head>\n\t\t\t\t\t\t<body>\n\t\t\t\t\t" + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>');
66
+ var tmpFileName = (pdfCnt++) + '-' + fileName;
67
+ page.render(tmpFileName, {
68
+ format: 'pdf',
69
+ quality: '100'
70
+ }).then(function () {
71
+ if (fs.existsSync(tmpFileName)) {
72
+ fs.readFile(tmpFileName, function (errRead, data) {
73
+ if (!errRead) {
74
+ fs.unlinkSync(tmpFileName);
75
+ if (!upload) {
76
+ resolve('data:application/pdf;base64,' + Buffer.from(data).toString('base64'));
77
+ }
78
+ else {
79
+ var fileData = 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');
80
+ that.callMethodInternal.call(that, 'uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder, uploadFileType, function (err, res) {
81
+ if (err) {
82
+ reject(err);
83
+ }
84
+ else {
85
+ resolve(res);
86
+ }
87
+ });
88
+ }
89
+ }
90
+ else {
91
+ console.log(errRead);
92
+ }
93
+ phInstance.exit();
94
+ });
95
+ }
96
+ else {
97
+ reject('No tmp file');
98
+ console.log('No tmp file ', tmpFileName);
99
+ }
100
+ });
101
+ })
102
+ .catch(function (error) {
103
+ reject(error);
104
+ phInstance.exit();
105
+ });
106
+ });
107
+ }
108
+ },
109
+ mergePDF: {
110
+ skipQueue: true,
111
+ check: new simpl_schema_1.default({
112
+ fileKeys: {
113
+ type: Array
114
+ },
115
+ 'fileKeys.$': {
116
+ type: String
117
+ },
118
+ fileName: {
119
+ type: String
120
+ },
121
+ fileType: {
122
+ type: String,
123
+ optional: true
124
+ }
125
+ }),
126
+ function: function (fileKeys, fileName, fileType) {
127
+ var _this = this;
128
+ return new Promise(function (resolve, reject) {
129
+ _this.callMethodInternal.call(_this, 'getCCProcessURL').then(function (resCC) {
130
+ var mergeFileName = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;
131
+ //send request
132
+ request({
133
+ method: 'POST',
134
+ url: 'https:' + resCC.url,
135
+ headers: {
136
+ 'Content-Type': 'application/json'
137
+ },
138
+ json: {
139
+ mode: 'combine',
140
+ input: {
141
+ s3: {
142
+ 'accesskeyid': _this.serverConfig['AWSACCESSKEYID'],
143
+ 'secretaccesskey': _this.serverConfig['AWSSECRETACCESSKEY'],
144
+ 'region': _this.serverConfig['AWSREGION'],
145
+ 'bucket': _this.serverConfig['AWSBUCKET']
146
+ }
147
+ },
148
+ files: fileKeys,
149
+ outputformat: 'pdf',
150
+ wait: true,
151
+ output: {
152
+ 's3': {
153
+ 'accesskeyid': _this.serverConfig['AWSACCESSKEYID'],
154
+ 'secretaccesskey': _this.serverConfig['AWSSECRETACCESSKEY'],
155
+ 'region': _this.serverConfig['AWSREGION'],
156
+ 'bucket': _this.serverConfig['AWSBUCKET'],
157
+ 'path': mergeFileName
158
+ }
159
+ },
160
+ converteroptions: {
161
+ 'resize': '612x792',
162
+ 'resizemode': 'scale',
163
+ 'resizeenlarge': null,
164
+ 'grayscale': null,
165
+ 'auto_orient': null,
166
+ 'strip_metatags': false,
167
+ 'density': 72,
168
+ 'rotate': null,
169
+ 'command': null
170
+ },
171
+ }
172
+ }, function (error, response, body) {
173
+ if (!error) {
174
+ var resFile_1 = {
175
+ _id: mongoose_1.Types.ObjectId().toHexString(),
176
+ __v: 0,
177
+ name: fileName,
178
+ size: body.output.size,
179
+ key: mergeFileName,
180
+ type: fileType ? fileType : '',
181
+ order: -1
182
+ };
183
+ if (body.output.size) {
184
+ _this.callMethodInternal.call(_this, 'insertDocument', 'files', resFile_1, function (errUpFile, resUpFile) {
185
+ if (resUpFile) {
186
+ resFile_1.status = 'Uploaded';
187
+ resolve(resFile_1);
188
+ }
189
+ else {
190
+ reject(errUpFile);
191
+ }
192
+ });
193
+ }
194
+ else {
195
+ reject('Merged file has no size, merge failed');
196
+ }
197
+ }
198
+ else {
199
+ reject(error);
200
+ }
201
+ });
202
+ }, function (errCC) { return reject(errCC); });
203
+ });
204
+ }
205
+ },
206
+ mergePDFNoUpload: {
207
+ skipQueue: true,
208
+ check: new simpl_schema_1.default({
209
+ fileKeys: {
210
+ type: Array
211
+ },
212
+ 'fileKeys.$': {
213
+ type: String
214
+ },
215
+ fileName: {
216
+ type: String
217
+ },
218
+ fileType: {
219
+ type: String,
220
+ optional: true
221
+ }
222
+ }),
223
+ function: function (fileKeys, fileName, fileType) {
224
+ var _this = this;
225
+ return new Promise(function (resolve, reject) {
226
+ _this.callMethodInternal.call(_this, 'getCCProcessURL').then(function (resCC) {
227
+ var mergeFileName = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;
228
+ //send request
229
+ request({
230
+ method: 'POST',
231
+ url: 'https:' + resCC.url,
232
+ headers: {
233
+ 'Content-Type': 'application/json'
234
+ },
235
+ json: {
236
+ mode: 'combine',
237
+ input: {
238
+ s3: {
239
+ 'accesskeyid': _this.serverConfig['AWSACCESSKEYID'],
240
+ 'secretaccesskey': _this.serverConfig['AWSSECRETACCESSKEY'],
241
+ 'region': _this.serverConfig['AWSREGION'],
242
+ 'bucket': _this.serverConfig['AWSBUCKET']
243
+ }
244
+ },
245
+ files: fileKeys,
246
+ outputformat: 'pdf',
247
+ wait: true,
248
+ output: {
249
+ 's3': {
250
+ 'accesskeyid': _this.serverConfig['AWSACCESSKEYID'],
251
+ 'secretaccesskey': _this.serverConfig['AWSSECRETACCESSKEY'],
252
+ 'region': _this.serverConfig['AWSREGION'],
253
+ 'bucket': _this.serverConfig['AWSBUCKET'],
254
+ 'path': mergeFileName
255
+ }
256
+ },
257
+ converteroptions: {
258
+ 'resize': '612x792',
259
+ 'resizemode': 'scale',
260
+ 'resizeenlarge': null,
261
+ 'grayscale': null,
262
+ 'auto_orient': null,
263
+ 'strip_metatags': false,
264
+ 'density': 72,
265
+ 'rotate': null,
266
+ 'command': null
267
+ },
268
+ }
269
+ }, function (error, response, body) {
270
+ if (!error) {
271
+ var resFile_2 = {
272
+ _id: mongoose_1.Types.ObjectId().toHexString(),
273
+ name: fileName,
274
+ size: body.output.size,
275
+ key: mergeFileName,
276
+ type: fileType ? fileType : '',
277
+ order: -1
278
+ };
279
+ _this.callMethodInternal.call(_this, 'insertDocument', 'files', resFile_2, function (errUpFile, resUpFile) {
280
+ if (resUpFile) {
281
+ resFile_2.status = 'Uploaded';
282
+ resolve(resFile_2);
283
+ var that_1 = _this;
284
+ setTimeout(function () {
285
+ that_1.callMethodInternal.call(that_1, 'deleteFile', mergeFileName);
286
+ }, 60000);
287
+ }
288
+ else {
289
+ reject(errUpFile);
290
+ }
291
+ });
292
+ }
293
+ else {
294
+ reject(error);
295
+ }
296
+ });
297
+ }, function (errCC) { return reject(errCC); });
298
+ });
299
+ }
300
+ }
301
+ });
302
+ }
303
+ exports.loadPDFMethods = loadPDFMethods;
@@ -0,0 +1,14 @@
1
+ import { CollectionDocument } from './collection-document.model';
2
+ export interface ActiveSubscriptionModel extends CollectionDocument {
3
+ date: Date;
4
+ publication: string;
5
+ subData: string | Object;
6
+ collections: string[];
7
+ clients: ActiveSubscriptionClientModel[];
8
+ }
9
+ export interface ActiveSubscriptionClientModel {
10
+ id_user: string;
11
+ messageId: number;
12
+ id_socket: string;
13
+ }
14
+ //# sourceMappingURL=active-subscription.model.d.ts.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZGVscy9hY3RpdmUtc3Vic2NyaXB0aW9uLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBQSxPQUFPQyxlQUFlQyxRQUFTLGFBQWMsQ0FBRUMsT0FBTyIsImZpbGUiOiJtb2RlbHMvYWN0aXZlLXN1YnNjcmlwdGlvbi5tb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuIl19
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import { CollectionDocument } from './collection-document.model';
2
+ export interface AppStatusModel extends CollectionDocument {
3
+ message: string;
4
+ }
5
+ //# sourceMappingURL=app-status.model.d.ts.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZGVscy9hcHAtc3RhdHVzLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBQSxPQUFPQyxlQUFlQyxRQUFTLGFBQWMsQ0FBRUMsT0FBTyIsImZpbGUiOiJtb2RlbHMvYXBwLXN0YXR1cy5tb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuIl19
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import { CollectionDocument } from './collection-document.model';
2
+ export interface AppVersionModel extends CollectionDocument {
3
+ version: number;
4
+ }
5
+ //# sourceMappingURL=app-version.model.d.ts.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZGVscy9hcHAtdmVyc2lvbi5tb2RlbC5qcyJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6IkFBQUEsYUFDQUEsT0FBT0MsZUFBZUMsUUFBUyxhQUFjLENBQUVDLE9BQU8iLCJmaWxlIjoibW9kZWxzL2FwcC12ZXJzaW9uLm1vZGVsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4iXX0=
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ export interface CollectionDocument {
2
+ _id?: any;
3
+ __v?: number;
4
+ createdAt?: Date;
5
+ updatedAt?: Date;
6
+ }
7
+ //# sourceMappingURL=collection-document.model.d.ts.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZGVscy9jb2xsZWN0aW9uLWRvY3VtZW50Lm1vZGVsLmpzIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBQSxPQUFPQyxlQUFlQyxRQUFTLGFBQWMsQ0FBRUMsT0FBTyIsImZpbGUiOiJtb2RlbHMvY29sbGVjdGlvbi1kb2N1bWVudC5tb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuIl19
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import { CollectionDocument } from './collection-document.model';
2
+ export interface CounterModel extends CollectionDocument {
3
+ count: number;
4
+ type: string;
5
+ }
6
+ //# sourceMappingURL=counter.model.d.ts.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZGVscy9jb3VudGVyLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBQSxPQUFPQyxlQUFlQyxRQUFTLGFBQWMsQ0FBRUMsT0FBTyIsImZpbGUiOiJtb2RlbHMvY291bnRlci5tb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuIl19
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,13 @@
1
+ import { CollectionDocument } from './collection-document.model';
2
+ export interface CronJobHistoryModel extends CollectionDocument {
3
+ name: string;
4
+ reoccuring: boolean;
5
+ time_to_run: string;
6
+ method_name: string;
7
+ server_restart: boolean;
8
+ passed: boolean;
9
+ error: Object;
10
+ start_time: Date;
11
+ end_time: Date;
12
+ }
13
+ //# sourceMappingURL=cron-job-history.model.d.ts.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZGVscy9jcm9uLWpvYi1oaXN0b3J5Lm1vZGVsLmpzIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBQSxPQUFPQyxlQUFlQyxRQUFTLGFBQWMsQ0FBRUMsT0FBTyIsImZpbGUiOiJtb2RlbHMvY3Jvbi1qb2ItaGlzdG9yeS5tb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuIl19
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,14 @@
1
+ import { CollectionDocument } from './collection-document.model';
2
+ export interface CronJobModel extends CollectionDocument {
3
+ name: string;
4
+ repeat: boolean;
5
+ time_to_run: string;
6
+ method_run: string;
7
+ method_run_data?: Object;
8
+ method_complete?: string;
9
+ method_complete_data?: Object;
10
+ running: boolean;
11
+ timezone?: string;
12
+ next_run?: Date;
13
+ }
14
+ //# sourceMappingURL=cron-job.model.d.ts.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZGVscy9jcm9uLWpvYi5tb2RlbC5qcyJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6IkFBQUEsYUFDQUEsT0FBT0MsZUFBZUMsUUFBUyxhQUFjLENBQUVDLE9BQU8iLCJmaWxlIjoibW9kZWxzL2Nyb24tam9iLm1vZGVsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4iXX0=
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,24 @@
1
+ export interface DialogInputFieldModel {
2
+ label: string;
3
+ form: string;
4
+ data: string | number | boolean;
5
+ validators: any[];
6
+ validatorErrors: string[];
7
+ validatorMsg: string[];
8
+ placeholder?: string;
9
+ required?: boolean;
10
+ disabled?: boolean;
11
+ type?: DialogInputFieldTypes;
12
+ options?: DialogInputFieldSelectOptions[];
13
+ }
14
+ export interface DialogInputFieldSelectOptions {
15
+ value: string | number;
16
+ text: string;
17
+ }
18
+ declare type DialogInputFieldTypes = 'text' | 'number' | 'select' | 'state' | 'textarea' | 'email' | 'password' | 'boolean';
19
+ export interface DialogSelectWithButtonsOptionModel {
20
+ value: string | number;
21
+ text: string;
22
+ }
23
+ export {};
24
+ //# sourceMappingURL=dialog.model.d.ts.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZGVscy9kaWFsb2cubW9kZWwuanMiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiXSwibWFwcGluZ3MiOiJBQUFBLGFBQ0FBLE9BQU9DLGVBQWVDLFFBQVMsYUFBYyxDQUFFQyxPQUFPIiwiZmlsZSI6Im1vZGVscy9kaWFsb2cubW9kZWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiJdfQ==
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,10 @@
1
+ import { CollectionDocument } from './collection-document.model';
2
+ export interface FileModel extends CollectionDocument {
3
+ name: string;
4
+ size: number;
5
+ key: string;
6
+ type: string;
7
+ order: number;
8
+ status?: string;
9
+ }
10
+ //# sourceMappingURL=file.model.d.ts.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZGVscy9maWxlLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBQSxPQUFPQyxlQUFlQyxRQUFTLGFBQWMsQ0FBRUMsT0FBTyIsImZpbGUiOiJtb2RlbHMvZmlsZS5tb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuIl19
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import { CollectionDocument } from './collection-document.model';
2
+ export interface FlagModel extends CollectionDocument {
3
+ type: string;
4
+ value?: boolean;
5
+ }
6
+ //# sourceMappingURL=flag.model.d.ts.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZGVscy9mbGFnLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBQSxPQUFPQyxlQUFlQyxRQUFTLGFBQWMsQ0FBRUMsT0FBTyIsImZpbGUiOiJtb2RlbHMvZmxhZy5tb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuIl19
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,12 @@
1
+ import { CollectionDocument } from './collection-document.model';
2
+ export interface LogModel extends CollectionDocument {
3
+ date: Date;
4
+ type: string;
5
+ title: string;
6
+ message: string;
7
+ payload: any;
8
+ method: string;
9
+ user: string;
10
+ messageId: string;
11
+ }
12
+ //# sourceMappingURL=log.model.d.ts.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZGVscy9sb2cubW9kZWwuanMiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiXSwibWFwcGluZ3MiOiJBQUFBLGFBQ0FBLE9BQU9DLGVBQWVDLFFBQVMsYUFBYyxDQUFFQyxPQUFPIiwiZmlsZSI6Im1vZGVscy9sb2cubW9kZWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiJdfQ==
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,10 @@
1
+ import { CollectionDocument } from './collection-document.model';
2
+ export interface LoggedInUserModel extends CollectionDocument {
3
+ date: Date;
4
+ id_user: string;
5
+ user: string;
6
+ id_ws: string;
7
+ app_version?: number;
8
+ latency?: number;
9
+ }
10
+ //# sourceMappingURL=logged-in-users.model.d.ts.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZGVscy9sb2dnZWQtaW4tdXNlcnMubW9kZWwuanMiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiXSwibWFwcGluZ3MiOiJBQUFBLGFBQ0FBLE9BQU9DLGVBQWVDLFFBQVMsYUFBYyxDQUFFQyxPQUFPIiwiZmlsZSI6Im1vZGVscy9sb2dnZWQtaW4tdXNlcnMubW9kZWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiJdfQ==
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import { CollectionDocument } from './collection-document.model';
2
+ export interface MethodCallModel extends CollectionDocument {
3
+ id_user: string;
4
+ message_id: string;
5
+ method: string;
6
+ data: string;
7
+ }
8
+ //# sourceMappingURL=method-call.model.d.ts.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZGVscy9tZXRob2QtY2FsbC5tb2RlbC5qcyJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6IkFBQUEsYUFDQUEsT0FBT0MsZUFBZUMsUUFBUyxhQUFjLENBQUVDLE9BQU8iLCJmaWxlIjoibW9kZWxzL21ldGhvZC1jYWxsLm1vZGVsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4iXX0=
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });