@onylab/common-api 0.1.133 → 0.1.134
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common-api.node.min.js +1 -1
- package/dist/common-api.node.min.js.map +1 -1
- package/dist/data/email/element/html/button.template +4 -4
- package/dist/data/email/element/html/h2.template +3 -3
- package/dist/data/email/element/html/index.template +37 -37
- package/dist/data/email/element/html/p.template +3 -3
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.SmilePlayerCommon=e():t.SmilePlayerCommon=e()}(global,(function(){return(()=>{"use strict";var t={525:t=>{t.exports=require("emoji-regex/RGI_Emoji.js")}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={exports:{}};return t[r](i,i.exports,n),i.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};return(()=>{n.r(r),n.d(r,{Constant:()=>t,Exception:()=>e,Http:()=>o,Service:()=>i,Template:()=>a,Tool:()=>u,Util:()=>c});var t={};n.r(t),n.d(t,{Path:()=>l});var e={};n.r(e),n.d(e,{BadParameterException:()=>d,BadRequestException:()=>v,ConflictException:()=>m,ExternalApiException:()=>E,InternalException:()=>S,MainException:()=>p,ObjectNotFoundException:()=>_,PageNotFoundException:()=>T,UnauthorizedException:()=>N});var o={};n.r(o),n.d(o,{HandlerController:()=>F,Server:()=>q});var i={};n.r(i),n.d(i,{EmailSenderService:()=>ft,SmsSenderService:()=>X});var a={};n.r(a),n.d(a,{TemplateEngine:()=>ut});var u={};n.r(u),n.d(u,{Configuration:()=>dt,Database:()=>mt,Displayer:()=>Et,Env:()=>I,Environment:()=>L,FileSystem:()=>rt,Logger:()=>U,Retry:()=>V});var c={};n.r(c),n.d(c,{AddressUtil:()=>Ot,DateUtil:()=>Tt,ExtractorUtil:()=>Pt,FormatterUtil:()=>Nt,GeneratorUtil:()=>Ct,MathUtil:()=>At,ObjectUtil:()=>jt,PriceUtil:()=>Mt,StringUtil:()=>_t,ValidatorUtil:()=>St,asyncForEach:()=>ot,isNullOrUndefined:()=>wt});var s,l=function(){function t(){}return t.registerBasePath=function(e){void 0!==process.env.APP_HOME?t.BASE_PATH=process.env.APP_HOME+"/":t.BASE_PATH=e+(e.endsWith("/")?"":"/")},t.data=function(){return t.BASE_PATH+"data/"},t.db=function(){return t.storage()+"db/"},t.root=function(){return t.BASE_PATH},t.session=function(){return t.storage()+"session/"},t.storage=function(){return t.BASE_PATH+"storage/"},t.BASE_PATH="./",t}(),f=(s=function(t,e){return s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},s(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}s(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),p=function(t){function e(n,r,o){var i=t.call(this,n)||this;return i.code=r,i.data=o,i.name="MainException","function"==typeof Error.captureStackTrace?Error.captureStackTrace(i,e):i.stack=new Error(n).stack,i}return f(e,t),e}(Error),h=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),d=function(t){function e(e,n){var r=t.call(this,e,400,n)||this;return r.name="BadParameterException",r}return h(e,t),e}(p),y=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),v=function(t){function e(e,n){var r=t.call(this,e,400,n)||this;return r.name="BadRequestException",r}return y(e,t),e}(p),b=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),m=function(t){function e(e,n){var r=t.call(this,e,409,n)||this;return r.name="ConflictException",r}return b(e,t),e}(p),g=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),E=function(t){function e(e,n){var r=t.call(this,e,502,n)||this;return r.name="ExternalApiException",r}return g(e,t),e}(p),w=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),S=function(t){function e(e,n){var r=t.call(this,e,500,n)||this;return r.name="InternalException",r}return w(e,t),e}(p),x=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),_=function(t){function e(e,n){var r=t.call(this,e,404,n)||this;return r.name="ObjectNotFoundException",r}return x(e,t),e}(p),O=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),T=function(t){function e(e,n){var r=t.call(this,e,404,n)||this;return r.name="PageNotFoundException",r}return O(e,t),e}(p),P=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),N=function(t){function e(n,r){var o=t.call(this,n,e.ERROR_CODE,r)||this;return o.name="UnauthorizedException",o}return P(e,t),e.ERROR_CODE=401,e}(p);const C=require("crypto"),A=require("express"),j=require("cors"),M=require("helmet"),D=require("connect-timeout"),R=require("@sentry/node"),k=require("@sentry/integrations");var I;!function(t){t.PRODUCTION="prod",t.DEVELOPMENT="dev",t.TEST="test"}(I||(I={}));var L=function(){function t(){}return t.getMode=function(){switch(process.env.NODE_ENV){case"dev":case"development":return I.DEVELOPMENT;case"prod":case"production":return I.PRODUCTION;case"test":return I.TEST}return void 0===process.env.APP_ID?I.DEVELOPMENT:I.PRODUCTION},t}(),U=function(){function t(){}return t.init=function(t){L.getMode()===I.PRODUCTION&&R.init({dsn:t,integrations:[new k.CaptureConsole({levels:["error","warn","log"]})],environment:L.getMode(),maxBreadcrumbs:50})},t.trace=function(t,e){[I.DEVELOPMENT,I.TEST].includes(L.getMode())&&(void 0===e?console.info(t):console.info(t,e)),R.addBreadcrumb({category:"info",message:t,data:e,level:R.Severity.Info})},t.debug=function(t,e){[I.DEVELOPMENT,I.TEST].includes(L.getMode())&&(void 0===e?console.log(t):console.log(t,e)),R.addBreadcrumb({category:"debug",message:t,data:e,level:R.Severity.Debug})},t.info=function(t,e){[I.DEVELOPMENT,I.TEST].includes(L.getMode())&&(void 0===e?console.info(t):console.info(t,e)),R.withScope((function(n){void 0!==e&&n.setExtra("extra",JSON.stringify(e)),R.captureMessage(t)}))},t.warning=function(t,e){[I.DEVELOPMENT,I.TEST].includes(L.getMode())&&(void 0===e?console.warn(t):console.warn(t,e)),R.withScope((function(n){void 0!==e&&n.setExtra("extra",JSON.stringify(e)),void 0!==t.data&&n.setExtra("data",JSON.stringify(t.data)),R.captureException(t)}))},t.error=function(t,e){[N.ERROR_CODE].includes(t.code)||([I.DEVELOPMENT,I.TEST].includes(L.getMode())&&(void 0===e?console.error(t):console.error(t,e)),R.withScope((function(n){void 0!==e&&n.setExtra("extra",JSON.stringify(e)),void 0!==t.data&&n.setExtra("data",JSON.stringify(t.data)),R.captureException(t)})))},t.requestHandler=function(){return R.Handlers.requestHandler()},t.errorHandler=function(){return R.Handlers.errorHandler()},t}(),q=function(){function t(){}return t.prototype.create=function(e,n){return r=this,o=void 0,a=function(){var r,o;return function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}}(this,(function(i){return void 0===this.app&&(r=n||t.DEFAULT_PORT,o="http://localhost:"+String(r),U.debug("start server on "+o),this.app=A(),this.app.use(D("60s")),this.app.use(A.json({inflate:!0,limit:"100kb",reviver:null,strict:!0,type:"application/json",verify:void 0})),this.app.use(j({origin:[o].concat(e),credentials:!0})),this.app.use(M()),this.app.use(A.json()),this.app.listen(r,(function(){U.debug("server is running on "+o)}))),[2,this.app]}))},new((i=void 0)||(i=Promise))((function(t,e){function n(t){try{c(a.next(t))}catch(t){e(t)}}function u(t){try{c(a.throw(t))}catch(t){e(t)}}function c(e){var r;e.done?t(e.value):(r=e.value,r instanceof i?r:new i((function(t){t(r)}))).then(n,u)}c((a=a.apply(r,o||[])).next())}));var r,o,i,a},t.prototype.getSessionSecret=function(e){return C.createHash("sha1").update(e+t.SALT).digest("hex")},t.DEFAULT_PORT=8080,t.SALT="03561b4a0fe7f125025",t}(),F=function(){function t(){}return t.error=function(t,e,n){U.error(n);var r=void 0!==n.code&&null!==n.code?Number(n.code):500;e.status(!isNaN(r)&&Number(n.code)>=400&&Number(n.code)<=599?Number(n.code):500),e.json({code:n.code,message:n.message})},t}();const H=require("axios");var G=n.n(H);const B=require("luxon"),z=require("querystring"),J=require("retry");var V=function(){function t(){}return t.request=function(t,e){return void 0===e&&(e=2),n=this,r=void 0,i=function(){var n;return function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}}(this,(function(r){return n=J.operation({retries:e,factor:1,minTimeout:0,maxTimeout:0,randomize:!1}),[2,new Promise((function(e,r){n.attempt((function(){t().then(e).catch((function(t){n.retry(t)||(U.error(t),r(t))}))}))}))]}))},new((o=void 0)||(o=Promise))((function(t,e){function a(t){try{c(i.next(t))}catch(t){e(t)}}function u(t){try{c(i.throw(t))}catch(t){e(t)}}function c(e){var n;e.done?t(e.value):(n=e.value,n instanceof o?n:new o((function(t){t(n)}))).then(a,u)}c((i=i.apply(n,r||[])).next())}));var n,r,o,i},t}();const Z=require("urlencode");var W=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{c(r.next(t))}catch(t){i(t)}}function u(t){try{c(r.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,u)}c((r=r.apply(t,e||[])).next())}))},$=function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}},X=function(){function t(t,e){this.token=t,this.mode=e}return t.prototype.send=function(e,n,r,o,i){return void 0===o&&(o=!0),W(this,void 0,void 0,(function(){var a,u=this;return $(this,(function(c){switch(c.label){case 0:return 0===(a=this.checkPhoneFormat(r)).length?(U.warning(new d("no valid phone",{phones:r})),[2,Promise.resolve()]):(a.length>1&&(n.length>2*t.MESSAGE_MAX_LENGTH?n=n.substring(0,2*t.MESSAGE_MAX_LENGTH):n.length>t.MESSAGE_MAX_LENGTH&&n.length<=1.33*t.MESSAGE_MAX_LENGTH&&(n=n.substring(0,t.MESSAGE_MAX_LENGTH))),[4,V.request((function(){return W(u,void 0,void 0,(function(){var r,u;return $(this,(function(c){switch(c.label){case 0:return r={accessToken:this.token,emetteur:e,message:Z(n,"ISO-8859-15"),numero:a.map((function(t){return t.replace("+","")})).join(","),classe_msg:2,nbr_msg:Math.ceil(n.length/t.MESSAGE_MAX_LENGTH)},o&&(r.stop=1),void 0!==i&&(r.date_envoi=B.DateTime.fromISO(i,{setZone:!0}).toFormat("ddMMyyyy-HH:mm")),this.mode!==I.TEST?[3,1]:(U.info("Simulation Mode: SMS has been sent",{params:r}),[3,3]);case 1:return this.mode===I.DEVELOPMENT&&(a=["+15145705214"]),[4,G().post(t.BASE_API_URL+"sendSMS.do",z.stringify(r,"&","=",{encodeURIComponent:function(t){return t}}),{timeout:3e4})];case 2:if((u=c.sent()).data.length>0&&"0"!==u.data.trim().substring(0,1))throw new E("Error: "+u.data,r);c.label=3;case 3:return[2]}}))}))}),1)]);case 1:return c.sent(),[2]}}))}))},t.prototype.checkPhoneFormat=function(t){var e=new RegExp("^\\+1[0-9]{10}$","i"),n=new RegExp("^\\+33(6|7)[0-9]{8}$","i"),r=new RegExp("^\\+1[0-9]{10}$","i");return t.filter((function(t){return e.test(t)||n.test(t)||r.test(t)}))},t.BASE_API_URL="https://api.smsmode.com/http/1.6/",t.MESSAGE_MAX_LENGTH=150,t}();const Y=require("path"),K=require("mustache"),Q=require("lodash"),tt=require("fs");var et=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{c(r.next(t))}catch(t){i(t)}}function u(t){try{c(r.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,u)}c((r=r.apply(t,e||[])).next())}))},nt=function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}},rt=function(){function t(){}return t.prototype.read=function(t){return et(this,void 0,void 0,(function(){return nt(this,(function(e){if(!this.isFile(t))throw new d(t+" does not exist or is not a file");return[2,tt.readFileSync(t,"utf8")]}))}))},t.prototype.readJson=function(t){return et(this,void 0,void 0,(function(){var e;return nt(this,(function(n){switch(n.label){case 0:return[4,this.read(t)];case 1:if(e=n.sent(),!this.isJson(e))throw new d(t+" does not contain JSON");return[2,JSON.parse(e)]}}))}))},t.prototype.write=function(t,e){return et(this,void 0,void 0,(function(){var n;return nt(this,(function(r){return"",n="string"==typeof e||"number"==typeof e?String(e):JSON.stringify(e),tt.writeFileSync(t,n,{encoding:"utf8"}),[2,Promise.resolve()]}))}))},t.prototype.writeJson=function(t,e){return et(this,void 0,void 0,(function(){return nt(this,(function(n){return[2,this.write(t,JSON.stringify(e))]}))}))},t.prototype.isFile=function(t){return tt.existsSync(t)&&tt.statSync(t).isFile()},t.prototype.isJson=function(t){try{return JSON.parse(t),!0}catch(t){return!1}},t}(),ot=function(t,e){return n=void 0,r=void 0,i=function(){var n;return function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}}(this,(function(r){switch(r.label){case 0:n=0,r.label=1;case 1:return n<t.length?[4,e(t[n])]:[3,4];case 2:r.sent(),r.label=3;case 3:return n++,[3,1];case 4:return[2]}}))},new((o=void 0)||(o=Promise))((function(t,e){function a(t){try{c(i.next(t))}catch(t){e(t)}}function u(t){try{c(i.throw(t))}catch(t){e(t)}}function c(e){var n;e.done?t(e.value):(n=e.value,n instanceof o?n:new o((function(t){t(n)}))).then(a,u)}c((i=i.apply(n,r||[])).next())}));var n,r,o,i},it=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{c(r.next(t))}catch(t){i(t)}}function u(t){try{c(r.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,u)}c((r=r.apply(t,e||[])).next())}))},at=function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}},ut=function(){function t(){}return t.prototype.render=function(t,e,n){return it(this,void 0,void 0,(function(){var r,o,i,a,u=this;return at(this,(function(c){switch(c.label){case 0:return t.endsWith(".template")||(t+=".template"),r=(0,Q.cloneDeep)(e),o=Y.isAbsolute(t)?"":__dirname+Y.sep,[4,(new rt).read(o+t)];case 1:return i=c.sent(),a=[],(0,K.parse)(i).forEach((function(t){t.length>=4&&"&"===t[0]&&t[1].startsWith("include:")&&a.push(t[1])})),a.length>0?(void 0===n?n=Y.dirname(o+t)+Y.sep:Y.isAbsolute(n)||(n=o+n),[4,ot(a,(function(t){return it(u,void 0,void 0,(function(){var e,o,i,a;return at(this,(function(u){switch(u.label){case 0:return 3!==(e=t.split(":")).length?[3,2]:(o=e[2],i=r,a=t,[4,this.render(Y.resolve(n,o),r[t])]);case 1:i[a]=u.sent(),u.label=2;case 2:return[2]}}))}))}))]):[3,3];case 2:c.sent(),c.label=3;case 3:return[2,(0,K.render)(i,r)]}}))}))},t}();const ct=require("node-mailjet");var st=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{c(r.next(t))}catch(t){i(t)}}function u(t){try{c(r.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,u)}c((r=r.apply(t,e||[])).next())}))},lt=function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}},ft=function(){function t(t,e,n){this.templateEngine=new ut,this.mailjet=ct.connect(t,e),this.mode=n}return t.prototype.sendDeliveryDelay=function(t,e,n){return st(this,void 0,void 0,(function(){var r=this;return lt(this,(function(o){switch(o.label){case 0:return[4,V.request((function(){return st(r,void 0,void 0,(function(){var r,o;return lt(this,(function(i){switch(i.label){case 0:return void 0===n.base.copyright&&(n.base.copyright={year:String((new Date).getUTCFullYear())}),[4,this.templateEngine.render("data/email/template/deliveryDelay",n,"data/email/element/text")];case 1:return r=i.sent(),[4,this.templateEngine.render("data/email/template/deliveryDelay",n,"data/email/element/html")];case 2:return o=i.sent(),[4,this.sendNotification(t,e,n.base.subject,r,o)];case 3:return[2,i.sent()]}}))}))}),1)];case 1:return[2,o.sent()]}}))}))},t.prototype.sendTrackDelivery=function(t,e,n){return st(this,void 0,void 0,(function(){var r=this;return lt(this,(function(o){switch(o.label){case 0:return[4,V.request((function(){return st(r,void 0,void 0,(function(){var r,o,i,a;return lt(this,(function(u){switch(u.label){case 0:return[4,this.templateEngine.render("data/email/template/trackDelivery",n,"data/email/element/text")];case 1:return r=u.sent(),[4,this.templateEngine.render("data/email/element/text/index",{content:r,base:n.base})];case 2:return o=u.sent(),[4,this.templateEngine.render("data/email/template/trackDelivery",n,"data/email/element/html")];case 3:return i=u.sent(),[4,this.templateEngine.render("data/email/element/html/index",{content:i,base:n.base})];case 4:return a=u.sent(),[4,this.sendNotification(t,e,n.base.subject,o,a)];case 5:return[2,u.sent()]}}))}))}),1)];case 1:return[2,o.sent()]}}))}))},t.prototype.sendUserNotification=function(t,e,n){return st(this,void 0,void 0,(function(){var r=this;return lt(this,(function(o){switch(o.label){case 0:return[4,V.request((function(){return st(r,void 0,void 0,(function(){var r,o,i,a;return lt(this,(function(u){switch(u.label){case 0:return[4,this.templateEngine.render("data/email/template/userNotification",n,"data/email/element/text")];case 1:return r=u.sent(),[4,this.templateEngine.render("data/email/element/text/index",{content:r,base:n.base})];case 2:return o=u.sent(),[4,this.templateEngine.render("data/email/template/userNotification",n,"data/email/element/html")];case 3:return i=u.sent(),[4,this.templateEngine.render("data/email/element/html/index",{content:i,base:n.base})];case 4:return a=u.sent(),[4,this.sendNotification(t,e,n.base.subject,o,a)];case 5:return[2,u.sent()]}}))}))}),1)];case 1:return[2,o.sent()]}}))}))},t.prototype.sendNotification=function(t,e,n,r,o){return st(this,void 0,void 0,(function(){var i;return lt(this,(function(a){switch(a.label){case 0:return a.trys.push([0,4,,5]),this.mode!==I.TEST?[3,1]:(U.info("Simulation Mode: Email has been sent",{sender:t,recipient:e}),[3,3]);case 1:return this.mode===I.DEVELOPMENT&&(e.contact="developer@onylab.com"),[4,this.mailjet.post("send",{version:"v3.1"}).request({Messages:[{From:{Name:t.name,Email:t.contact},To:[{Name:e.name,Email:e.contact}],Subject:n,TextPart:r,HTMLPart:o}]})];case 2:a.sent(),a.label=3;case 3:return[3,5];case 4:throw i=a.sent(),new p(i.message,Number(i.statusCode));case 5:return[2]}}))}))},t}(),pt=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{c(r.next(t))}catch(t){i(t)}}function u(t){try{c(r.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,u)}c((r=r.apply(t,e||[])).next())}))},ht=function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}},dt=function(){function t(t,e){this.root=t,this.environment=e}return t.prototype.full=function(){return pt(this,void 0,void 0,(function(){return ht(this,(function(t){switch(t.label){case 0:return[4,this.init()];case 1:return t.sent(),[2,this.config]}}))}))},t.prototype.init=function(){return pt(this,void 0,void 0,(function(){var t,e,n;return ht(this,(function(r){switch(r.label){case 0:return void 0!==this.config?[3,7]:void 0!==this.root?[3,1]:(this.config={},[3,7]);case 1:if(t=new rt,![I.DEVELOPMENT,I.TEST].includes(this.environment))return[3,5];r.label=2;case 2:return r.trys.push([2,4,,5]),e=this,[4,t.readJson(this.root+"data/config_"+String(this.environment)+".json")];case 3:return e.config=r.sent(),[3,5];case 4:return r.sent(),[3,5];case 5:return void 0!==this.config?[3,7]:(n=this,[4,t.readJson(this.root+"data/config.json")]);case 6:n.config=r.sent(),r.label=7;case 7:return[2]}}))}))},t}();const yt=require("typeorm");var vt=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{c(r.next(t))}catch(t){i(t)}}function u(t){try{c(r.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,u)}c((r=r.apply(t,e||[])).next())}))},bt=function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}},mt=function(){function t(t){this.root=t}return t.prototype.connect=function(t,e){return vt(this,void 0,void 0,(function(){var n,r;return bt(this,(function(o){switch(o.label){case 0:return void 0!==this.db?[3,2]:[4,this.init()];case 1:o.sent(),o.label=2;case 2:return void 0===(n=this.db[t])?[3,4]:(n.entities=e,n.logging=["error"],n.logger=!0,n.bigNumberStrings=!1,void 0===n.timezone&&(n.timezone="Z"),void 0===n.charset&&(n.charset="UTF8_GENERAL_CI"),r=this,[4,(0,yt.createConnection)(n)]);case 3:return r.connection=o.sent(),[3,5];case 4:U.error(new d("bad connection name")),o.label=5;case 5:return[2]}}))}))},t.prototype.synchronize=function(){return vt(this,void 0,void 0,(function(){return bt(this,(function(t){switch(t.label){case 0:return void 0===this.connection?[3,2]:[4,this.connection.synchronize()];case 1:t.sent(),t.label=2;case 2:return[2]}}))}))},t.prototype.close=function(){return vt(this,void 0,void 0,(function(){return bt(this,(function(t){return[2,this.connection.close()]}))}))},t.prototype.init=function(){return vt(this,void 0,void 0,(function(){var t,e;return bt(this,(function(n){switch(n.label){case 0:return void 0!==this.root?[3,1]:(this.db={},[3,3]);case 1:return t=new rt,e=this,[4,t.readJson(this.root+"data/db.json")];case 2:e.db=n.sent(),n.label=3;case 3:return[2]}}))}))},t}();const gt=require("prettyjson");var Et=function(){function t(){}return t.prototype.error=function(t){U.error(t)},t.prototype.info=function(t){U.trace(t)},t.prototype.json=function(t){U.trace(gt.render(t,{}))},t.prototype.success=function(t){U.trace(t)},t}(),wt=function(t){return null==t},St=function(){function t(){}return t.isEmail=function(t){return"string"==typeof t&&new RegExp("^[a-zA-Z0-9\\.!#$%&*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$","i").test(t)},t.isPhone=function(t){return"string"==typeof t&&new RegExp("^([+\\s0-9]{10,}(#[0-9]+)?)$").test(t)},t.isNumber=function(t){return"number"==typeof t||"string"==typeof t&&new RegExp("^-?[0-9]+\\.?[0-9]*$").test(t)},t}();const xt=require("fast-diff");var _t=function(){function t(){}return t.escapeRegExp=function(t){return"string"!=typeof t?t:t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")},t.truncate=function(t,e){return wt(t)||t.length<=e?t:e<=3?"":t.slice(0,e-3)+"..."},t.slugify=function(t,e){return void 0===t?"":(0,Q.toLower)((0,Q.trim)((0,Q.deburr)(t)).replace(/[^0-9a-z\-\_]/gi,e))},t}(),Ot=function(){function t(){}return t.autoCorrectCity=function(e){if(wt(e))return e;var n=t.CITIES.find((function(t){return t.toLowerCase()===e.toLowerCase()}));if(void 0!==n)return n;var r=t.CITIES.find((function(n){var r=t.countDiff(e,n);return r.add<=2&&r.remove<=2}));if(void 0!==r)return r;var o=t.CITIES.find((function(t){return t.replace(/-/g," ").toLowerCase()===e.toLowerCase()}));if(void 0!==o)return o;var i=t.CITIES.find((function(n){var r=t.countDiff(e,n.replace(/-/g," "));return r.add<=2&&r.remove<=2}));if(void 0!==i)return i;var a=t.CITIES.find((function(t){return t.toLowerCase().startsWith(e.toLowerCase())}));if(void 0!==a)return a;var u=t.CITIES.find((function(t){return e.toLowerCase().includes(t.toLowerCase())}));return void 0!==u?u:e},t.isZipCode=function(e){return"string"==typeof e&&(!!t.ZIPCODES.includes(e)||St.isNumber(e)&&5===e.length&&!e.includes(".")&&!e.includes("-"))},t.parse=function(e){var n={};if(!wt(e)){var r=e.split(",");if(r.length>=3){var o=r.length-1;if(n.country=r[o].trim(),r.splice(o--,1),void 0!==r[o]&&r[o].trim().includes(" ")){var i=r[o].trim().split(" ");n.zip=void 0===i[0]?void 0:i[0].trim(),i.splice(0,1),n.city=i.join(" ").trim(),r.splice(o--,1)}else isNaN(Number(r[o].trim()))?isNaN(Number(r[o-1].trim()))?(n.city=r[o].trim(),r.splice(o--,1)):(n.city=r[o].trim(),r.splice(o--,1),n.zip=r[o].trim(),r.splice(o--,1)):(n.zip=r[o].trim(),r.splice(o--,1),o>=2&&(n.city=r[o].trim(),r.splice(o--,1)));n.street=r.map((function(t){return t.trim()})).join(" ").trim()}else{var a=e.toLowerCase();t.ZIPCODES.forEach((function(t){if(a.includes(t)){n.zip=t;try{a=a.replace(new RegExp(_t.escapeRegExp(t),"ig"),"")}catch(t){}}})),t.CITIES.forEach((function(t){if(a.includes(t.toLowerCase())){n.city=t;try{a=a.replace(new RegExp(_t.escapeRegExp(t),"ig"),"")}catch(t){}}})),t.COUNTRIES.forEach((function(t){if(a.includes(t.toLowerCase())){n.country=t;try{a=a.replace(new RegExp(_t.escapeRegExp(t),"ig"),"")}catch(t){}}})),void 0===n.street&&(n.street=a.split(",").map((function(t){return t.trim()})).join(" ").trim())}void 0===n.country&&(n.country="France")}return n},t.countDiff=function(t,e){var n={add:0,remove:0};return xt(t.toLowerCase(),e.toLowerCase()).forEach((function(t){switch(t[0]){case-1:n.remove+=t[1].length;break;case 1:n.add+=t[1].length}})),n},t.ZIPCODES=["78500","78600","78800","95240","95530","78630","78670","78240","78580","78300","95150","95250","95480","95320","95550"],t.CITIES=["Sartrouville","Cormeilles-en-Parisis","Houilles","Maisons-Laffitte","La Frette-sur-Seine","Argenteuil","Montesson","Le Mesnil-le-Roi","Bezons","Orgeval","Poissy","Morainvilliers","Villennes-sur-Seine","Medan","Chambourcy","Aigremont","Les Alluets-le-Roi","Taverny","Beauchamp","Pierrelaye","Saint-Leu-la-Forêt","Bessancourt"],t.COUNTRIES=["France"],t}(),Tt=function(){function t(){}return t.displayWeekDay=function(e){var n="";return void 0!==t.WEEK_DAYS[e]&&(n=t.WEEK_DAYS[e]),n},t.generatePeriod=function(e,n,r,o,i){void 0===o&&(o=!0),void 0===i&&(i=t.PERIOD_MAX_DATES);for(var a=B.DateTime.fromISO(e,{setZone:!0}).toISODate(),u=B.DateTime.fromISO(n,{setZone:!0}).toISODate(),c=0,s={};a<=u&&c<i;)s[a]=(0,Q.cloneDeep)(r),o&&(s[a].date=a),a=B.DateTime.fromISO(a,{setZone:!0}).plus({days:1}).toISODate(),c++;return s},t.limitDate=function(t,e,n){if(void 0===n&&(n=0),void 0!==t&&void 0!==e){var r=B.DateTime.fromISO(t,{setZone:!0}).toISO(),o=B.DateTime.fromISO(e,{setZone:!0}).plus({seconds:n}).toISO();return r>o?o:r}},t.localeToISO=function(t){var e,n=new RegExp("[0-9]{2}/[0-9]{2}/[0-9]{4}"),r=new RegExp("[0-9]{2}-[0-9]{2}-[0-9]{4}"),o=new RegExp("[0-9]{4}-[0-9]{2}-[0-9]{2}");if(n.test(t))e=(i=t.split("/"))[2]+"-"+i[1]+"-"+i[0];else if(r.test(t)){var i;e=(i=t.split("-"))[2]+"-"+i[1]+"-"+i[0]}else o.test(t)&&(e=t);return e},t.slotToTime=function(t){var e,n=new RegExp("^(\\s)?[0-9]{2}:[0-9]{2}(\\s)?$"),r=new RegExp("^(\\s)?[0-9]{2}:[0-9]{2}(\\s)?-(\\s)?[0-9]{2}:[0-9]{2}(\\s)?$");return t=t.trim(),n.test(t)?e=t.trim()+":00":r.test(t)&&(e=t.split("-")[0].trim()+":00"),e},t.round=function(t,e){if(void 0===e&&(e=0),"string"!=typeof t)return t;var n=B.DateTime.fromISO(t,{setZone:!0});return B.DateTime.fromMillis(Math.round(+n.toMillis()/e)*e).setZone(n.zone).toISO()},t.PERIOD_MAX_DATES=90,t.WEEK_DAYS={1:"lundi",2:"mardi",3:"mercredi",4:"jeudi",5:"vendredi",6:"samedi",7:"dimanche"},t}(),Pt=function(){function t(){}return t.phone=function(t,e){if("string"==typeof t&&(t=t.trim().replace(/\s?\.?\-?\(?\)?/g,""),"fr"===e)){var n=new RegExp("(0[6-7][0-9]{8})","i").exec(t);if(null!==n&&n.length>0&&null!==n[0])return n[0]}},t}(),Nt=function(){function t(){}return t.trim=function(t){return"string"==typeof t?t.trim():t},t.capitalize=function(e){var n=t.lower(e);return"string"==typeof n?n.split(" ").map((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})).join(" "):e},t.lower=function(t){return"string"==typeof t?t.toLocaleLowerCase():t},t.upper=function(t){return"string"==typeof t?t.toLocaleUpperCase():t},t.phone=function(e,n,r){if(void 0===r&&(r="nat"),"string"==typeof e)switch(e=t.preformatPhone(e,n),r){case"nat":return t.phoneNat(e,n);case"int":return t.phoneInt(e,n)}return e},t.stripEmoji=function(t){var e=t;if("string"==typeof e){for(var r=n(525)(),o=void 0;null!==(o=r.exec(e));)try{e=(e=(e=e.replace(new RegExp("\\s"+_t.escapeRegExp(o[0]),"g"),"")).replace(new RegExp(_t.escapeRegExp(o[0])+"\\s","g"),"")).replace(new RegExp(_t.escapeRegExp(o[0]),"g"),"")}catch(t){}for(;null!==(o=r.exec(e));)try{e=(e=(e=e.replace(new RegExp("\\s"+_t.escapeRegExp(o[0]),"g"),"")).replace(new RegExp(_t.escapeRegExp(o[0])+"\\s","g"),"")).replace(new RegExp(_t.escapeRegExp(o[0]),"g"),"")}catch(t){}}return e},t.stripExoticCharacters=function(t){return"string"==typeof t?t.replace("’","'").replace(/[\u0250-\ue007]+/g,"*"):t},t.preformatPhone=function(t,e){return t=t.trim().replace(/\s?\.?\-?\(?\)?/g,""),"fr"===e&&new RegExp("^[1-9]").test(t)&&9===t.length?"0"+t:t},t.phoneNat=function(t,e){if("fr"===e){if(t.startsWith("+330")?t=t.substr(3):t.startsWith("+33")?t="0"+t.substr(3):t.startsWith("0033")?t="0"+t.substr(4):t.startsWith("33")&&11===t.length&&(t="0"+t.substr(2)),10===t.length){var n=0;t=t.split("").map((function(t){return t+(++n%2==0?" ":"")})).join("").trim()}return t}return t},t.phoneInt=function(t,e){return t.startsWith("+")?t:"fr"===e?(t.startsWith("0")&&(t=t.substr(1)),"+33"+t):t},t}(),Ct=function(){function t(){}return t.code=function(e){null==e&&(e=6);for(var n="";n.length<e;)n+=t.symbolUpperCases[t.int(0,t.symbolUpperCases.length-1)];return n},t.int=function(t,e){return null==t&&(t=0),null==e&&(e=Number.POSITIVE_INFINITY),t=Math.ceil(t),e=Math.floor(e),Math.floor(Math.random()*(e-t+1))+t},t.password=function(e){null==e&&(e=8);for(var n="";n.length<e;)switch(t.int(1,3)){case 1:n+=t.symbolUpperCases[t.int(0,t.symbolUpperCases.length-1)];break;case 2:n+=t.symbolLowerCases[t.int(0,t.symbolLowerCases.length-1)];break;default:n+=String(t.int(0,9))}return n},t.symbolUpperCases=["A","B","C","D","E","F","G","H","K","M","N","P","R","S","T","U","V","W","X","Y","Z"],t.symbolLowerCases=["a","b","c","d","e","f","g","h","k","m","n","p","r","s","t","u","v","w","x","y","z"],t}(),At=function(){function t(){}return t.avg=function(e){if(0===e.length)return 0;var n=e.reduce((function(t,e){return t+e}),0);return t.round(n/e.length,2)},t.applyVariation=function(t,e){return t*(t>=0?1+e/100:1-e/100)},t.median=function(e){if(0===e.length)return 0;if(1===e.length)return e[0];var n=e.sort((function(t,e){return t-e}));return n.length%2==0?t.avg([n[n.length/2-1],n[n.length/2]]):n[Math.floor(n.length/2)]},t.percentage=function(t,e){return 0===e?0:t/e*100},t.round=function(t,e){return 0===e?Math.round(t):Number(t.toFixed(e))},t.variation=function(t,e){var n=0;return 0!==e?n=0!==t?(e-t)/Math.abs(t)*100:100*(e>0?1:-1):0!==t&&(n=-100*(t>0?1:-1)),Math.floor(n)},t}(),jt=function(){function t(){}return t.compact=function(e,n){if(void 0===n&&(n={}),(0,Q.isArray)(e)){var r=[];return e.forEach((function(e){e=t.compact(e,n),((0,Q.isArray)(e)&&e.length>0||(0,Q.isObject)(e)&&Object.keys(e).length>0||null!=e&&!(0,Q.isArray)(e)&&!(0,Q.isObject)(e))&&r.push(e)})),r}if((0,Q.isObject)(e)){var o={};return Object.keys(e).forEach((function(r){var i=e[r];(0,Q.isArray)(i)||(0,Q.isObject)(i)?(i=t.compact(i,n),((0,Q.isArray)(i)&&i.length>0||(0,Q.isObject)(i)&&Object.keys(i).length>0||null!=i&&!(0,Q.isArray)(i)&&!(0,Q.isObject)(i))&&(o[r]=i)):null!=i&&("string"!=typeof i||!1===n.removeEmptyString||i.length>0)&&(o[r]=i)})),o}return"string"!=typeof e||!1===n.removeEmptyString||e.length>0?e:void 0},t}(),Mt=function(){function t(){}return t.applyTaxes=function(t,e){var n=Number(t);return e.forEach((function(e){n+=Number(t)*e})),String(At.round(n,2))},t.calculateTaxes=function(t,e){var n=0;return e.forEach((function(e){n+=t*e})),At.round(n,2)},t.displayWithCurrency=function(e,n){if(null==e)return e;var r=t.currencies[n],o=e+" "+n;if(void 0!==r)switch(r.position){case"before":o=r.symbol+e;break;case"after":o=e+r.symbol}return o},t.format=function(t,e,n){if(void 0===n&&(n=2),null==t)return t;var r=Number(t.replace(/\,/gi,"")).toLocaleString("en-US",{style:"decimal",useGrouping:!0,minimumFractionDigits:n,maximumFractionDigits:n});switch(e){case"fr":return r.replace(/\,/gi," ").replace(/\./gi,",");case"us":return r}},t.currencies={CAD:{symbol:"$",position:"before"},EUR:{symbol:"€",position:"after"},USD:{symbol:"$",position:"before"}},t}()})(),r})()}));
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.SmilePlayerCommon=e():t.SmilePlayerCommon=e()}(global,(function(){return(()=>{"use strict";var t={525:t=>{t.exports=require("emoji-regex/RGI_Emoji.js")}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={exports:{}};return t[r](i,i.exports,n),i.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};return(()=>{n.r(r),n.d(r,{Constant:()=>t,Exception:()=>e,Http:()=>o,Service:()=>i,Template:()=>a,Tool:()=>u,Util:()=>c});var t={};n.r(t),n.d(t,{Path:()=>l});var e={};n.r(e),n.d(e,{BadParameterException:()=>d,BadRequestException:()=>v,ConflictException:()=>m,ExternalApiException:()=>E,InternalException:()=>S,MainException:()=>p,ObjectNotFoundException:()=>_,PageNotFoundException:()=>T,UnauthorizedException:()=>C});var o={};n.r(o),n.d(o,{HandlerController:()=>F,Server:()=>q});var i={};n.r(i),n.d(i,{EmailSenderService:()=>ft,SmsSenderService:()=>X});var a={};n.r(a),n.d(a,{TemplateEngine:()=>ut});var u={};n.r(u),n.d(u,{Configuration:()=>dt,Database:()=>mt,Displayer:()=>Et,Env:()=>I,Environment:()=>L,FileSystem:()=>rt,Logger:()=>U,Retry:()=>J});var c={};n.r(c),n.d(c,{AddressUtil:()=>Ot,DateUtil:()=>Tt,ExtractorUtil:()=>Pt,FormatterUtil:()=>Ct,GeneratorUtil:()=>Nt,MathUtil:()=>At,ObjectUtil:()=>jt,PriceUtil:()=>Mt,StringUtil:()=>_t,ValidatorUtil:()=>St,asyncForEach:()=>ot,isNullOrUndefined:()=>wt});var s,l=function(){function t(){}return t.registerBasePath=function(e){void 0!==process.env.APP_HOME?t.BASE_PATH=process.env.APP_HOME+"/":t.BASE_PATH=e+(e.endsWith("/")?"":"/")},t.data=function(){return t.BASE_PATH+"data/"},t.db=function(){return t.storage()+"db/"},t.root=function(){return t.BASE_PATH},t.session=function(){return t.storage()+"session/"},t.storage=function(){return t.BASE_PATH+"storage/"},t.BASE_PATH="./",t}(),f=(s=function(t,e){return s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},s(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}s(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),p=function(t){function e(n,r,o){var i=t.call(this,n)||this;return i.code=r,i.data=o,i.name="MainException","function"==typeof Error.captureStackTrace?Error.captureStackTrace(i,e):i.stack=new Error(n).stack,i}return f(e,t),e}(Error),h=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),d=function(t){function e(e,n){var r=t.call(this,e,400,n)||this;return r.name="BadParameterException",r}return h(e,t),e}(p),y=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),v=function(t){function e(e,n){var r=t.call(this,e,400,n)||this;return r.name="BadRequestException",r}return y(e,t),e}(p),b=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),m=function(t){function e(e,n){var r=t.call(this,e,409,n)||this;return r.name="ConflictException",r}return b(e,t),e}(p),g=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),E=function(t){function e(e,n){var r=t.call(this,e,502,n)||this;return r.name="ExternalApiException",r}return g(e,t),e}(p),w=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),S=function(t){function e(e,n){var r=t.call(this,e,500,n)||this;return r.name="InternalException",r}return w(e,t),e}(p),x=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),_=function(t){function e(e,n){var r=t.call(this,e,404,n)||this;return r.name="ObjectNotFoundException",r}return x(e,t),e}(p),O=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),T=function(t){function e(e,n){var r=t.call(this,e,404,n)||this;return r.name="PageNotFoundException",r}return O(e,t),e}(p),P=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),C=function(t){function e(n,r){var o=t.call(this,n,e.ERROR_CODE,r)||this;return o.name="UnauthorizedException",o}return P(e,t),e.ERROR_CODE=401,e}(p);const N=require("crypto"),A=require("express"),j=require("cors"),M=require("helmet"),D=require("connect-timeout"),R=require("@sentry/node"),k=require("@sentry/integrations");var I;!function(t){t.PRODUCTION="prod",t.DEVELOPMENT="dev",t.TEST="test"}(I||(I={}));var L=function(){function t(){}return t.getMode=function(){switch(process.env.NODE_ENV){case"dev":case"development":return I.DEVELOPMENT;case"prod":case"production":return I.PRODUCTION;case"test":return I.TEST}return void 0===process.env.APP_ID?I.DEVELOPMENT:I.PRODUCTION},t}(),U=function(){function t(){}return t.init=function(t){L.getMode()===I.PRODUCTION&&R.init({dsn:t,integrations:[new k.CaptureConsole({levels:["error","warn","log"]})],environment:L.getMode(),maxBreadcrumbs:50})},t.trace=function(t,e){[I.DEVELOPMENT,I.TEST].includes(L.getMode())&&(void 0===e?console.info(t):console.info(t,e)),R.addBreadcrumb({category:"info",message:t,data:e,level:R.Severity.Info})},t.debug=function(t,e){[I.DEVELOPMENT,I.TEST].includes(L.getMode())&&(void 0===e?console.log(t):console.log(t,e)),R.addBreadcrumb({category:"debug",message:t,data:e,level:R.Severity.Debug})},t.info=function(t,e){[I.DEVELOPMENT,I.TEST].includes(L.getMode())&&(void 0===e?console.info(t):console.info(t,e)),R.withScope((function(n){void 0!==e&&n.setExtra("extra",JSON.stringify(e)),R.captureMessage(t)}))},t.warning=function(t,e){[I.DEVELOPMENT,I.TEST].includes(L.getMode())&&(void 0===e?console.warn(t):console.warn(t,e)),R.withScope((function(n){void 0!==e&&n.setExtra("extra",JSON.stringify(e)),void 0!==t.data&&n.setExtra("data",JSON.stringify(t.data)),R.captureException(t)}))},t.error=function(t,e){[C.ERROR_CODE].includes(t.code)||([I.DEVELOPMENT,I.TEST].includes(L.getMode())&&(void 0===e?console.error(t):console.error(t,e)),R.withScope((function(n){void 0!==e&&n.setExtra("extra",JSON.stringify(e)),void 0!==t.data&&n.setExtra("data",JSON.stringify(t.data)),R.captureException(t)})))},t.requestHandler=function(){return R.Handlers.requestHandler()},t.errorHandler=function(){return R.Handlers.errorHandler()},t}(),q=function(){function t(){}return t.prototype.create=function(e,n){return r=this,o=void 0,a=function(){var r,o;return function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}}(this,(function(i){return void 0===this.app&&(r=n||t.DEFAULT_PORT,o="http://localhost:"+String(r),U.debug("start server on "+o),this.app=A(),this.app.use(D("60s")),this.app.use(A.json({inflate:!0,limit:"100kb",reviver:null,strict:!0,type:"application/json",verify:void 0})),this.app.use(j({origin:[o].concat(e),credentials:!0})),this.app.use(M()),this.app.use(A.json()),this.app.listen(r,(function(){U.debug("server is running on "+o)}))),[2,this.app]}))},new((i=void 0)||(i=Promise))((function(t,e){function n(t){try{c(a.next(t))}catch(t){e(t)}}function u(t){try{c(a.throw(t))}catch(t){e(t)}}function c(e){var r;e.done?t(e.value):(r=e.value,r instanceof i?r:new i((function(t){t(r)}))).then(n,u)}c((a=a.apply(r,o||[])).next())}));var r,o,i,a},t.prototype.getSessionSecret=function(e){return N.createHash("sha1").update(e+t.SALT).digest("hex")},t.DEFAULT_PORT=8080,t.SALT="03561b4a0fe7f125025",t}(),F=function(){function t(){}return t.error=function(t,e,n){U.error(n);var r=void 0!==n.code&&null!==n.code?Number(n.code):500;e.status(!isNaN(r)&&Number(n.code)>=400&&Number(n.code)<=599?Number(n.code):500),e.json({code:n.code,message:n.message})},t}();const H=require("axios");var G=n.n(H);const B=require("luxon"),z=require("querystring"),W=require("retry");var J=function(){function t(){}return t.request=function(t,e){return void 0===e&&(e=2),n=this,r=void 0,i=function(){var n;return function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}}(this,(function(r){return n=W.operation({retries:e,factor:1,minTimeout:0,maxTimeout:0,randomize:!1}),[2,new Promise((function(e,r){n.attempt((function(){t().then(e).catch((function(t){n.retry(t)||(U.error(t),r(t))}))}))}))]}))},new((o=void 0)||(o=Promise))((function(t,e){function a(t){try{c(i.next(t))}catch(t){e(t)}}function u(t){try{c(i.throw(t))}catch(t){e(t)}}function c(e){var n;e.done?t(e.value):(n=e.value,n instanceof o?n:new o((function(t){t(n)}))).then(a,u)}c((i=i.apply(n,r||[])).next())}));var n,r,o,i},t}();const V=require("urlencode");var Z=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{c(r.next(t))}catch(t){i(t)}}function u(t){try{c(r.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,u)}c((r=r.apply(t,e||[])).next())}))},$=function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}},X=function(){function t(t,e){this.token=t,this.mode=e}return t.prototype.send=function(e,n,r,o,i){return void 0===o&&(o=!0),Z(this,void 0,void 0,(function(){var a,u=this;return $(this,(function(c){switch(c.label){case 0:return 0===(a=this.checkPhoneFormat(r)).length?(U.warning(new d("no valid phone",{phones:r})),[2,Promise.resolve()]):(a.length>1&&(n.length>2*t.MESSAGE_MAX_LENGTH?n=n.substring(0,2*t.MESSAGE_MAX_LENGTH):n.length>t.MESSAGE_MAX_LENGTH&&n.length<=1.33*t.MESSAGE_MAX_LENGTH&&(n=n.substring(0,t.MESSAGE_MAX_LENGTH))),[4,J.request((function(){return Z(u,void 0,void 0,(function(){var r,u;return $(this,(function(c){switch(c.label){case 0:return r={accessToken:this.token,emetteur:e,message:V(n,"ISO-8859-15"),numero:a.map((function(t){return t.replace("+","")})).join(","),classe_msg:2,nbr_msg:Math.ceil(n.length/t.MESSAGE_MAX_LENGTH)},o&&(r.stop=1),void 0!==i&&(r.date_envoi=B.DateTime.fromISO(i,{setZone:!0}).toFormat("ddMMyyyy-HH:mm")),this.mode!==I.TEST?[3,1]:(U.info("Simulation Mode: SMS has been sent",{params:r}),[3,3]);case 1:return this.mode===I.DEVELOPMENT&&(a=["+15145705214"]),[4,G().post(t.BASE_API_URL+"sendSMS.do",z.stringify(r,"&","=",{encodeURIComponent:function(t){return t}}),{timeout:3e4})];case 2:if((u=c.sent()).data.length>0&&"0"!==u.data.trim().substring(0,1))throw new E("Error: "+u.data,r);c.label=3;case 3:return[2]}}))}))}),1)]);case 1:return c.sent(),[2]}}))}))},t.prototype.checkPhoneFormat=function(t){var e=new RegExp("^\\+1[0-9]{10}$","i"),n=new RegExp("^\\+33(6|7)[0-9]{8}$","i"),r=new RegExp("^\\+1[0-9]{10}$","i");return t.filter((function(t){return e.test(t)||n.test(t)||r.test(t)}))},t.BASE_API_URL="https://api.smsmode.com/http/1.6/",t.MESSAGE_MAX_LENGTH=150,t}();const Y=require("path"),K=require("mustache"),Q=require("lodash"),tt=require("fs");var et=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{c(r.next(t))}catch(t){i(t)}}function u(t){try{c(r.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,u)}c((r=r.apply(t,e||[])).next())}))},nt=function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}},rt=function(){function t(){}return t.prototype.read=function(t){return et(this,void 0,void 0,(function(){return nt(this,(function(e){if(!this.isFile(t))throw new d(t+" does not exist or is not a file");return[2,tt.readFileSync(t,"utf8")]}))}))},t.prototype.readJson=function(t){return et(this,void 0,void 0,(function(){var e;return nt(this,(function(n){switch(n.label){case 0:return[4,this.read(t)];case 1:if(e=n.sent(),!this.isJson(e))throw new d(t+" does not contain JSON");return[2,JSON.parse(e)]}}))}))},t.prototype.write=function(t,e){return et(this,void 0,void 0,(function(){var n;return nt(this,(function(r){return"",n="string"==typeof e||"number"==typeof e?String(e):JSON.stringify(e),tt.writeFileSync(t,n,{encoding:"utf8"}),[2,Promise.resolve()]}))}))},t.prototype.writeJson=function(t,e){return et(this,void 0,void 0,(function(){return nt(this,(function(n){return[2,this.write(t,JSON.stringify(e))]}))}))},t.prototype.isFile=function(t){return tt.existsSync(t)&&tt.statSync(t).isFile()},t.prototype.isJson=function(t){try{return JSON.parse(t),!0}catch(t){return!1}},t}(),ot=function(t,e){return n=void 0,r=void 0,i=function(){var n;return function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}}(this,(function(r){switch(r.label){case 0:n=0,r.label=1;case 1:return n<t.length?[4,e(t[n])]:[3,4];case 2:r.sent(),r.label=3;case 3:return n++,[3,1];case 4:return[2]}}))},new((o=void 0)||(o=Promise))((function(t,e){function a(t){try{c(i.next(t))}catch(t){e(t)}}function u(t){try{c(i.throw(t))}catch(t){e(t)}}function c(e){var n;e.done?t(e.value):(n=e.value,n instanceof o?n:new o((function(t){t(n)}))).then(a,u)}c((i=i.apply(n,r||[])).next())}));var n,r,o,i},it=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{c(r.next(t))}catch(t){i(t)}}function u(t){try{c(r.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,u)}c((r=r.apply(t,e||[])).next())}))},at=function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}},ut=function(){function t(){}return t.prototype.render=function(t,e,n){return it(this,void 0,void 0,(function(){var r,o,i,a,u=this;return at(this,(function(c){switch(c.label){case 0:return t.endsWith(".template")||(t+=".template"),r=(0,Q.cloneDeep)(e),o=Y.isAbsolute(t)?"":__dirname+Y.sep,[4,(new rt).read(o+t)];case 1:return i=c.sent(),a=[],(0,K.parse)(i).forEach((function(t){t.length>=4&&"&"===t[0]&&t[1].startsWith("include:")&&a.push(t[1])})),a.length>0?(void 0===n?n=Y.dirname(o+t)+Y.sep:Y.isAbsolute(n)||(n=o+n),[4,ot(a,(function(t){return it(u,void 0,void 0,(function(){var e,o,i,a;return at(this,(function(u){switch(u.label){case 0:return 3!==(e=t.split(":")).length?[3,2]:(o=e[2],i=r,a=t,[4,this.render(Y.resolve(n,o),r[t])]);case 1:i[a]=u.sent(),u.label=2;case 2:return[2]}}))}))}))]):[3,3];case 2:c.sent(),c.label=3;case 3:return[2,(0,K.render)(i,r)]}}))}))},t}();const ct=require("node-mailjet");var st=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{c(r.next(t))}catch(t){i(t)}}function u(t){try{c(r.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,u)}c((r=r.apply(t,e||[])).next())}))},lt=function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}},ft=function(){function t(t,e,n){this.templateEngine=new ut,this.mailjet=ct.connect(t,e),this.mode=n}return t.prototype.sendDeliveryDelay=function(t,e,n){return st(this,void 0,void 0,(function(){var r=this;return lt(this,(function(o){switch(o.label){case 0:return[4,J.request((function(){return st(r,void 0,void 0,(function(){var r,o;return lt(this,(function(i){switch(i.label){case 0:return void 0===n.base.copyright&&(n.base.copyright={year:String((new Date).getUTCFullYear())}),[4,this.templateEngine.render("data/email/template/deliveryDelay",n,"data/email/element/text")];case 1:return r=i.sent(),[4,this.templateEngine.render("data/email/template/deliveryDelay",n,"data/email/element/html")];case 2:return o=i.sent(),[4,this.sendNotification(t,e,n.base.subject,r,o)];case 3:return[2,i.sent()]}}))}))}),1)];case 1:return[2,o.sent()]}}))}))},t.prototype.sendTrackDelivery=function(t,e,n){return st(this,void 0,void 0,(function(){var r=this;return lt(this,(function(o){switch(o.label){case 0:return[4,J.request((function(){return st(r,void 0,void 0,(function(){var r,o,i,a;return lt(this,(function(u){switch(u.label){case 0:return[4,this.templateEngine.render("data/email/template/trackDelivery",n,"data/email/element/text")];case 1:return r=u.sent(),[4,this.templateEngine.render("data/email/element/text/index",{content:r,base:n.base})];case 2:return o=u.sent(),[4,this.templateEngine.render("data/email/template/trackDelivery",n,"data/email/element/html")];case 3:return i=u.sent(),[4,this.templateEngine.render("data/email/element/html/index",{content:i,base:n.base})];case 4:return a=u.sent(),[4,this.sendNotification(t,e,n.base.subject,o,a)];case 5:return[2,u.sent()]}}))}))}),1)];case 1:return[2,o.sent()]}}))}))},t.prototype.sendUserNotification=function(t,e,n){return st(this,void 0,void 0,(function(){var r=this;return lt(this,(function(o){switch(o.label){case 0:return[4,J.request((function(){return st(r,void 0,void 0,(function(){var r,o,i,a;return lt(this,(function(u){switch(u.label){case 0:return[4,this.templateEngine.render("data/email/template/userNotification",n,"data/email/element/text")];case 1:return r=u.sent(),[4,this.templateEngine.render("data/email/element/text/index",{content:r,base:n.base})];case 2:return o=u.sent(),[4,this.templateEngine.render("data/email/template/userNotification",n,"data/email/element/html")];case 3:return i=u.sent(),[4,this.templateEngine.render("data/email/element/html/index",{content:i,base:n.base})];case 4:return a=u.sent(),[4,this.sendNotification(t,e,n.base.subject,o,a)];case 5:return[2,u.sent()]}}))}))}),1)];case 1:return[2,o.sent()]}}))}))},t.prototype.sendNotification=function(t,e,n,r,o){return st(this,void 0,void 0,(function(){var i;return lt(this,(function(a){switch(a.label){case 0:return a.trys.push([0,4,,5]),this.mode!==I.TEST?[3,1]:(U.info("Simulation Mode: Email has been sent",{sender:t,recipient:e}),[3,3]);case 1:return this.mode===I.DEVELOPMENT&&(e.contact="developer@onylab.com"),[4,this.mailjet.post("send",{version:"v3.1"}).request({Messages:[{From:{Name:t.name,Email:t.contact},To:[{Name:e.name,Email:e.contact}],Subject:n,TextPart:r,HTMLPart:o}]})];case 2:a.sent(),a.label=3;case 3:return[3,5];case 4:throw i=a.sent(),new p(i.message,Number(i.statusCode));case 5:return[2]}}))}))},t}(),pt=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{c(r.next(t))}catch(t){i(t)}}function u(t){try{c(r.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,u)}c((r=r.apply(t,e||[])).next())}))},ht=function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}},dt=function(){function t(t,e){this.root=t,this.environment=e}return t.prototype.full=function(){return pt(this,void 0,void 0,(function(){return ht(this,(function(t){switch(t.label){case 0:return[4,this.init()];case 1:return t.sent(),[2,this.config]}}))}))},t.prototype.init=function(){return pt(this,void 0,void 0,(function(){var t,e,n;return ht(this,(function(r){switch(r.label){case 0:return void 0!==this.config?[3,7]:void 0!==this.root?[3,1]:(this.config={},[3,7]);case 1:if(t=new rt,![I.DEVELOPMENT,I.TEST].includes(this.environment))return[3,5];r.label=2;case 2:return r.trys.push([2,4,,5]),e=this,[4,t.readJson(this.root+"data/config_"+String(this.environment)+".json")];case 3:return e.config=r.sent(),[3,5];case 4:return r.sent(),[3,5];case 5:return void 0!==this.config?[3,7]:(n=this,[4,t.readJson(this.root+"data/config.json")]);case 6:n.config=r.sent(),r.label=7;case 7:return[2]}}))}))},t}();const yt=require("typeorm");var vt=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{c(r.next(t))}catch(t){i(t)}}function u(t){try{c(r.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,u)}c((r=r.apply(t,e||[])).next())}))},bt=function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}},mt=function(){function t(t){this.root=t}return t.prototype.connect=function(t,e){return vt(this,void 0,void 0,(function(){var n,r;return bt(this,(function(o){switch(o.label){case 0:return void 0!==this.db?[3,2]:[4,this.init()];case 1:o.sent(),o.label=2;case 2:return void 0===(n=this.db[t])?[3,4]:(n.entities=e,n.logging=["error"],n.logger=!0,n.bigNumberStrings=!1,void 0===n.timezone&&(n.timezone="Z"),void 0===n.charset&&(n.charset="UTF8_GENERAL_CI"),r=this,[4,(0,yt.createConnection)(n)]);case 3:return r.connection=o.sent(),[3,5];case 4:U.error(new d("bad connection name")),o.label=5;case 5:return[2]}}))}))},t.prototype.synchronize=function(){return vt(this,void 0,void 0,(function(){return bt(this,(function(t){switch(t.label){case 0:return void 0===this.connection?[3,2]:[4,this.connection.synchronize()];case 1:t.sent(),t.label=2;case 2:return[2]}}))}))},t.prototype.close=function(){return vt(this,void 0,void 0,(function(){return bt(this,(function(t){return[2,this.connection.close()]}))}))},t.prototype.init=function(){return vt(this,void 0,void 0,(function(){var t,e;return bt(this,(function(n){switch(n.label){case 0:return void 0!==this.root?[3,1]:(this.db={},[3,3]);case 1:return t=new rt,e=this,[4,t.readJson(this.root+"data/db.json")];case 2:e.db=n.sent(),n.label=3;case 3:return[2]}}))}))},t}();const gt=require("prettyjson");var Et=function(){function t(){}return t.prototype.error=function(t){U.error(t)},t.prototype.info=function(t){U.trace(t)},t.prototype.json=function(t){U.trace(gt.render(t,{}))},t.prototype.success=function(t){U.trace(t)},t}(),wt=function(t){return null==t},St=function(){function t(){}return t.isEmail=function(t){return"string"==typeof t&&new RegExp("^[a-zA-Z0-9\\.!#$%&*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$","i").test(t)},t.isPhone=function(t){return"string"==typeof t&&new RegExp("^([+\\s0-9]{10,}(#[0-9]+)?)$").test(t)},t.isNumber=function(t){return"number"==typeof t||"string"==typeof t&&new RegExp("^-?[0-9]+\\.?[0-9]*$").test(t)},t}();const xt=require("fast-diff");var _t=function(){function t(){}return t.escapeRegExp=function(t){return"string"!=typeof t?t:t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")},t.truncate=function(t,e){return wt(t)||t.length<=e?t:e<=3?"":t.slice(0,e-3)+"..."},t.slugify=function(t,e){return void 0===t?"":(0,Q.toLower)((0,Q.trim)((0,Q.deburr)(t)).replace(/[^0-9a-z\-\_]/gi,e))},t}(),Ot=function(){function t(){}return t.autoCorrectCity=function(e){if(wt(e))return e;(e.toLowerCase().startsWith("st-")||e.toLowerCase().startsWith("st "))&&(e="Saint "+e.substring(3));var n=t.CITIES.find((function(t){return t.toLowerCase()===e.toLowerCase()}));if(void 0!==n)return n;var r=t.CITIES.find((function(n){var r=t.countDiff(e,n);return r.add<=2&&r.remove<=2}));if(void 0!==r)return r;var o=t.CITIES.find((function(t){return t.replace(/-/g," ").toLowerCase()===e.toLowerCase()}));if(void 0!==o)return o;var i=t.CITIES.find((function(n){var r=t.countDiff(e,n.replace(/-/g," "));return r.add<=2&&r.remove<=2}));if(void 0!==i)return i;var a=t.CITIES.find((function(t){return t.toLowerCase().startsWith(e.toLowerCase())}));if(void 0!==a)return a;var u=t.CITIES.find((function(t){return e.toLowerCase().includes(t.toLowerCase())}));return void 0!==u?u:e},t.isZipCode=function(e){return"string"==typeof e&&(!!t.ZIPCODES.includes(e)||St.isNumber(e)&&5===e.length&&!e.includes(".")&&!e.includes("-"))},t.parse=function(e){var n={};if(!wt(e)){var r=e.split(",");if(r.length>=3){var o=r.length-1;if(n.country=r[o].trim(),r.splice(o--,1),void 0!==r[o]&&r[o].trim().includes(" ")){var i=r[o].trim().split(" ");n.zip=void 0===i[0]?void 0:i[0].trim(),i.splice(0,1),n.city=i.join(" ").trim(),r.splice(o--,1)}else isNaN(Number(r[o].trim()))?isNaN(Number(r[o-1].trim()))?(n.city=r[o].trim(),r.splice(o--,1)):(n.city=r[o].trim(),r.splice(o--,1),n.zip=r[o].trim(),r.splice(o--,1)):(n.zip=r[o].trim(),r.splice(o--,1),o>=2&&(n.city=r[o].trim(),r.splice(o--,1)));n.street=r.map((function(t){return t.trim()})).join(" ").trim()}else{var a=e.toLowerCase();t.ZIPCODES.forEach((function(t){if(a.includes(t)){n.zip=t;try{a=a.replace(new RegExp(_t.escapeRegExp(t),"ig"),"")}catch(t){}}})),t.CITIES.forEach((function(t){if(a.includes(t.toLowerCase())){n.city=t;try{a=a.replace(new RegExp(_t.escapeRegExp(t),"ig"),"")}catch(t){}}})),t.COUNTRIES.forEach((function(t){if(a.includes(t.toLowerCase())){n.country=t;try{a=a.replace(new RegExp(_t.escapeRegExp(t),"ig"),"")}catch(t){}}})),void 0===n.street&&(n.street=a.split(",").map((function(t){return t.trim()})).join(" ").trim())}void 0===n.country&&(n.country="France")}return n},t.countDiff=function(t,e){var n={add:0,remove:0};return xt(t.toLowerCase(),e.toLowerCase()).forEach((function(t){switch(t[0]){case-1:n.remove+=t[1].length;break;case 1:n.add+=t[1].length}})),n},t.ZIPCODES=["78500","78600","78800","95240","95530","78630","78670","78240","78580","78300","95150","95250","95480","95320","95550"],t.CITIES=["Sartrouville","Cormeilles-en-Parisis","Houilles","Maisons-Laffitte","La Frette-sur-Seine","Argenteuil","Montesson","Le Mesnil-le-Roi","Bezons","Orgeval","Poissy","Morainvilliers","Villennes-sur-Seine","Medan","Chambourcy","Aigremont","Les Alluets-le-Roi","Taverny","Beauchamp","Pierrelaye","Saint-Leu-la-Forêt","Bessancourt"],t.COUNTRIES=["France"],t}(),Tt=function(){function t(){}return t.displayWeekDay=function(e){var n="";return void 0!==t.WEEK_DAYS[e]&&(n=t.WEEK_DAYS[e]),n},t.generatePeriod=function(e,n,r,o,i){void 0===o&&(o=!0),void 0===i&&(i=t.PERIOD_MAX_DATES);for(var a=B.DateTime.fromISO(e,{setZone:!0}).toISODate(),u=B.DateTime.fromISO(n,{setZone:!0}).toISODate(),c=0,s={};a<=u&&c<i;)s[a]=(0,Q.cloneDeep)(r),o&&(s[a].date=a),a=B.DateTime.fromISO(a,{setZone:!0}).plus({days:1}).toISODate(),c++;return s},t.limitDate=function(t,e,n){if(void 0===n&&(n=0),void 0!==t&&void 0!==e){var r=B.DateTime.fromISO(t,{setZone:!0}).toISO(),o=B.DateTime.fromISO(e,{setZone:!0}).plus({seconds:n}).toISO();return r>o?o:r}},t.localeToISO=function(t){var e,n=new RegExp("[0-9]{2}/[0-9]{2}/[0-9]{4}"),r=new RegExp("[0-9]{2}-[0-9]{2}-[0-9]{4}"),o=new RegExp("[0-9]{4}-[0-9]{2}-[0-9]{2}");if(n.test(t))e=(i=t.split("/"))[2]+"-"+i[1]+"-"+i[0];else if(r.test(t)){var i;e=(i=t.split("-"))[2]+"-"+i[1]+"-"+i[0]}else o.test(t)&&(e=t);return e},t.slotToTime=function(t){var e,n=new RegExp("^(\\s)?[0-9]{2}:[0-9]{2}(\\s)?$"),r=new RegExp("^(\\s)?[0-9]{2}:[0-9]{2}(\\s)?-(\\s)?[0-9]{2}:[0-9]{2}(\\s)?$");return t=t.trim(),n.test(t)?e=t.trim()+":00":r.test(t)&&(e=t.split("-")[0].trim()+":00"),e},t.round=function(t,e){if(void 0===e&&(e=0),"string"!=typeof t)return t;var n=B.DateTime.fromISO(t,{setZone:!0});return B.DateTime.fromMillis(Math.round(+n.toMillis()/e)*e).setZone(n.zone).toISO()},t.PERIOD_MAX_DATES=90,t.WEEK_DAYS={1:"lundi",2:"mardi",3:"mercredi",4:"jeudi",5:"vendredi",6:"samedi",7:"dimanche"},t}(),Pt=function(){function t(){}return t.phone=function(t,e){if("string"==typeof t&&(t=t.trim().replace(/\s?\.?\-?\(?\)?/g,""),"fr"===e)){var n=new RegExp("(0[6-7][0-9]{8})","i").exec(t);if(null!==n&&n.length>0&&null!==n[0])return n[0]}},t}(),Ct=function(){function t(){}return t.trim=function(t){return"string"==typeof t?t.trim():t},t.capitalize=function(e){var n=t.lower(e);return"string"==typeof n?n.split(" ").map((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})).join(" "):e},t.lower=function(t){return"string"==typeof t?t.toLocaleLowerCase():t},t.upper=function(t){return"string"==typeof t?t.toLocaleUpperCase():t},t.phone=function(e,n,r){if(void 0===r&&(r="nat"),"string"==typeof e)switch(e=t.preformatPhone(e,n),r){case"nat":return t.phoneNat(e,n);case"int":return t.phoneInt(e,n)}return e},t.stripEmoji=function(t){var e=t;if("string"==typeof e){for(var r=n(525)(),o=void 0;null!==(o=r.exec(e));)try{e=(e=(e=e.replace(new RegExp("\\s"+_t.escapeRegExp(o[0]),"g"),"")).replace(new RegExp(_t.escapeRegExp(o[0])+"\\s","g"),"")).replace(new RegExp(_t.escapeRegExp(o[0]),"g"),"")}catch(t){}for(;null!==(o=r.exec(e));)try{e=(e=(e=e.replace(new RegExp("\\s"+_t.escapeRegExp(o[0]),"g"),"")).replace(new RegExp(_t.escapeRegExp(o[0])+"\\s","g"),"")).replace(new RegExp(_t.escapeRegExp(o[0]),"g"),"")}catch(t){}}return e},t.stripExoticCharacters=function(t){return"string"==typeof t?t.replace("’","'").replace(/[\u0250-\ue007]+/g,"*"):t},t.preformatPhone=function(t,e){return t=t.trim().replace(/\s?\.?\-?\(?\)?/g,""),"fr"===e&&new RegExp("^[1-9]").test(t)&&9===t.length?"0"+t:t},t.phoneNat=function(t,e){if("fr"===e){if(t.startsWith("+330")?t=t.substr(3):t.startsWith("+33")?t="0"+t.substr(3):t.startsWith("0033")?t="0"+t.substr(4):t.startsWith("33")&&11===t.length&&(t="0"+t.substr(2)),10===t.length){var n=0;t=t.split("").map((function(t){return t+(++n%2==0?" ":"")})).join("").trim()}return t}return t},t.phoneInt=function(t,e){return t.startsWith("+")?t:"fr"===e?(t.startsWith("0")&&(t=t.substr(1)),"+33"+t):t},t}(),Nt=function(){function t(){}return t.code=function(e){null==e&&(e=6);for(var n="";n.length<e;)n+=t.symbolUpperCases[t.int(0,t.symbolUpperCases.length-1)];return n},t.int=function(t,e){return null==t&&(t=0),null==e&&(e=Number.POSITIVE_INFINITY),t=Math.ceil(t),e=Math.floor(e),Math.floor(Math.random()*(e-t+1))+t},t.password=function(e){null==e&&(e=8);for(var n="";n.length<e;)switch(t.int(1,3)){case 1:n+=t.symbolUpperCases[t.int(0,t.symbolUpperCases.length-1)];break;case 2:n+=t.symbolLowerCases[t.int(0,t.symbolLowerCases.length-1)];break;default:n+=String(t.int(0,9))}return n},t.symbolUpperCases=["A","B","C","D","E","F","G","H","K","M","N","P","R","S","T","U","V","W","X","Y","Z"],t.symbolLowerCases=["a","b","c","d","e","f","g","h","k","m","n","p","r","s","t","u","v","w","x","y","z"],t}(),At=function(){function t(){}return t.avg=function(e){if(0===e.length)return 0;var n=e.reduce((function(t,e){return t+e}),0);return t.round(n/e.length,2)},t.applyVariation=function(t,e){return t*(t>=0?1+e/100:1-e/100)},t.median=function(e){if(0===e.length)return 0;if(1===e.length)return e[0];var n=e.sort((function(t,e){return t-e}));return n.length%2==0?t.avg([n[n.length/2-1],n[n.length/2]]):n[Math.floor(n.length/2)]},t.percentage=function(t,e){return 0===e?0:t/e*100},t.round=function(t,e){return 0===e?Math.round(t):Number(t.toFixed(e))},t.variation=function(t,e){var n=0;return 0!==e?n=0!==t?(e-t)/Math.abs(t)*100:100*(e>0?1:-1):0!==t&&(n=-100*(t>0?1:-1)),Math.floor(n)},t}(),jt=function(){function t(){}return t.compact=function(e,n){if(void 0===n&&(n={}),(0,Q.isArray)(e)){var r=[];return e.forEach((function(e){e=t.compact(e,n),((0,Q.isArray)(e)&&e.length>0||(0,Q.isObject)(e)&&Object.keys(e).length>0||null!=e&&!(0,Q.isArray)(e)&&!(0,Q.isObject)(e))&&r.push(e)})),r}if((0,Q.isObject)(e)){var o={};return Object.keys(e).forEach((function(r){var i=e[r];(0,Q.isArray)(i)||(0,Q.isObject)(i)?(i=t.compact(i,n),((0,Q.isArray)(i)&&i.length>0||(0,Q.isObject)(i)&&Object.keys(i).length>0||null!=i&&!(0,Q.isArray)(i)&&!(0,Q.isObject)(i))&&(o[r]=i)):null!=i&&("string"!=typeof i||!1===n.removeEmptyString||i.length>0)&&(o[r]=i)})),o}return"string"!=typeof e||!1===n.removeEmptyString||e.length>0?e:void 0},t}(),Mt=function(){function t(){}return t.applyTaxes=function(t,e){var n=Number(t);return e.forEach((function(e){n+=Number(t)*e})),String(At.round(n,2))},t.calculateTaxes=function(t,e){var n=0;return e.forEach((function(e){n+=t*e})),At.round(n,2)},t.displayWithCurrency=function(e,n){if(null==e)return e;var r=t.currencies[n],o=e+" "+n;if(void 0!==r)switch(r.position){case"before":o=r.symbol+e;break;case"after":o=e+r.symbol}return o},t.format=function(t,e,n){if(void 0===n&&(n=2),null==t)return t;var r=Number(t.replace(/\,/gi,"")).toLocaleString("en-US",{style:"decimal",useGrouping:!0,minimumFractionDigits:n,maximumFractionDigits:n});switch(e){case"fr":return r.replace(/\,/gi," ").replace(/\./gi,",");case"us":return r}},t.currencies={CAD:{symbol:"$",position:"before"},EUR:{symbol:"€",position:"after"},USD:{symbol:"$",position:"before"}},t}()})(),r})()}));
|
|
2
2
|
//# sourceMappingURL=common-api.node.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-api.node.min.js","mappings":"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","sources":["webpack://SmilePlayerCommon/webpack/universalModuleDefinition","webpack://SmilePlayerCommon/external commonjs \"emoji-regex/RGI_Emoji.js\"","webpack://SmilePlayerCommon/webpack/bootstrap","webpack://SmilePlayerCommon/webpack/runtime/compat get default export","webpack://SmilePlayerCommon/webpack/runtime/define property getters","webpack://SmilePlayerCommon/webpack/runtime/hasOwnProperty shorthand","webpack://SmilePlayerCommon/webpack/runtime/make namespace object","webpack://SmilePlayerCommon/./src/constant/Path.ts","webpack://SmilePlayerCommon/./src/exception/MainException.ts","webpack://SmilePlayerCommon/./src/exception/BadParameterException.ts","webpack://SmilePlayerCommon/./src/exception/BadRequestException.ts","webpack://SmilePlayerCommon/./src/exception/ConflictException.ts","webpack://SmilePlayerCommon/./src/exception/ExternalApiException.ts","webpack://SmilePlayerCommon/./src/exception/InternalException.ts","webpack://SmilePlayerCommon/./src/exception/ObjectNotFoundException.ts","webpack://SmilePlayerCommon/./src/exception/PageNotFoundException.ts","webpack://SmilePlayerCommon/./src/exception/UnauthorizedException.ts","webpack://SmilePlayerCommon/external node-commonjs \"crypto\"","webpack://SmilePlayerCommon/external commonjs \"express\"","webpack://SmilePlayerCommon/external commonjs \"cors\"","webpack://SmilePlayerCommon/external commonjs \"helmet\"","webpack://SmilePlayerCommon/external commonjs \"connect-timeout\"","webpack://SmilePlayerCommon/external commonjs \"@sentry/node\"","webpack://SmilePlayerCommon/external commonjs \"@sentry/integrations\"","webpack://SmilePlayerCommon/./src/tool/Env.ts","webpack://SmilePlayerCommon/./src/tool/Environment.ts","webpack://SmilePlayerCommon/./src/tool/Logger.ts","webpack://SmilePlayerCommon/./src/http/Server.ts","webpack://SmilePlayerCommon/./src/http/HandlerController.ts","webpack://SmilePlayerCommon/external commonjs \"axios\"","webpack://SmilePlayerCommon/external commonjs \"luxon\"","webpack://SmilePlayerCommon/external node-commonjs \"querystring\"","webpack://SmilePlayerCommon/external commonjs \"retry\"","webpack://SmilePlayerCommon/./src/tool/Retry.ts","webpack://SmilePlayerCommon/external commonjs \"urlencode\"","webpack://SmilePlayerCommon/./src/service/sender/SmsSenderService.ts","webpack://SmilePlayerCommon/external node-commonjs \"path\"","webpack://SmilePlayerCommon/external commonjs \"mustache\"","webpack://SmilePlayerCommon/external commonjs \"lodash\"","webpack://SmilePlayerCommon/external node-commonjs \"fs\"","webpack://SmilePlayerCommon/./src/tool/FileSystem.ts","webpack://SmilePlayerCommon/./src/util/PromiseUtil.ts","webpack://SmilePlayerCommon/./src/templating/TemplateEngine.ts","webpack://SmilePlayerCommon/external commonjs \"node-mailjet\"","webpack://SmilePlayerCommon/./src/service/sender/EmailSenderService.ts","webpack://SmilePlayerCommon/./src/tool/Configuration.ts","webpack://SmilePlayerCommon/external commonjs \"typeorm\"","webpack://SmilePlayerCommon/./src/tool/Database.ts","webpack://SmilePlayerCommon/external commonjs \"prettyjson\"","webpack://SmilePlayerCommon/./src/tool/Displayer.ts","webpack://SmilePlayerCommon/./src/util/HelperUtil.ts","webpack://SmilePlayerCommon/./src/util/ValidatorUtil.ts","webpack://SmilePlayerCommon/external commonjs \"fast-diff\"","webpack://SmilePlayerCommon/./src/util/StringUtil.ts","webpack://SmilePlayerCommon/./src/util/AddressUtil.ts","webpack://SmilePlayerCommon/./src/util/DateUtil.ts","webpack://SmilePlayerCommon/./src/util/ExtractorUtil.ts","webpack://SmilePlayerCommon/./src/util/FormatterUtil.ts","webpack://SmilePlayerCommon/./src/util/GeneratorUtil.ts","webpack://SmilePlayerCommon/./src/util/MathUtil.ts","webpack://SmilePlayerCommon/./src/util/ObjectUtil.ts","webpack://SmilePlayerCommon/./src/util/PriceUtil.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SmilePlayerCommon\"] = factory();\n\telse\n\t\troot[\"SmilePlayerCommon\"] = factory();\n})(global, function() {\nreturn ","module.exports = require(\"emoji-regex/RGI_Emoji.js\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export class Path {\n private static BASE_PATH: string = './';\n\n public static registerBasePath(basePath: string): void {\n if (process.env.APP_HOME !== undefined) {\n Path.BASE_PATH = process.env.APP_HOME + '/';\n } else {\n Path.BASE_PATH = basePath + (basePath.endsWith('/') ? '' : '/');\n }\n }\n\n public static data(): string {\n return Path.BASE_PATH + 'data/';\n }\n\n public static db(): string {\n return Path.storage() + 'db/';\n }\n\n public static root(): string {\n return Path.BASE_PATH;\n }\n\n public static session(): string {\n return Path.storage() + 'session/';\n }\n\n public static storage(): string {\n return Path.BASE_PATH + 'storage/';\n }\n}\n","import {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class MainException extends Error implements ExceptionContract {\n public code: number;\n public data: {[key: string]: any};\n\n public constructor(message: string, code?: number, data?: {[key: string]: any}) {\n super(message);\n this.code = code;\n this.data = data;\n this.name = 'MainException';\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, MainException);\n } else {\n this.stack = (new Error(message)).stack;\n }\n }\n}\n","import {MainException} from 'common/exception/MainException';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class BadParameterException extends MainException implements ExceptionContract {\n public constructor(message: string, data?: {[key: string]: any}) {\n super(message, 400, data);\n this.name = 'BadParameterException';\n }\n}\n","import {MainException} from 'common/exception/MainException';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class BadRequestException extends MainException implements ExceptionContract {\n public constructor(message: string, data?: {[key: string]: any}) {\n super(message, 400, data);\n this.name = 'BadRequestException';\n }\n}\n","import {MainException} from 'common/exception/MainException';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class ConflictException extends MainException implements ExceptionContract {\n public constructor(message: string, data?: {[key: string]: any}) {\n super(message, 409, data);\n this.name = 'ConflictException';\n }\n}\n","import {MainException} from 'common/exception/MainException';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class ExternalApiException extends MainException implements ExceptionContract {\n public constructor(message: string, data?: {[key: string]: any}) {\n super(message, 502, data);\n this.name = 'ExternalApiException';\n }\n}\n","import {MainException} from 'common/exception/MainException';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class InternalException extends MainException implements ExceptionContract {\n public constructor(message: string, data?: {[key: string]: any}) {\n super(message, 500, data);\n this.name = 'InternalException';\n }\n}\n","import {MainException} from 'common/exception/MainException';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class ObjectNotFoundException extends MainException implements ExceptionContract {\n public constructor(message: string, data?: {[key: string]: any}) {\n super(message, 404, data);\n this.name = 'ObjectNotFoundException';\n }\n}\n","import {MainException} from 'common/exception/MainException';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class PageNotFoundException extends MainException implements ExceptionContract {\n public constructor(message: string, data?: {[key: string]: any}) {\n super(message, 404, data);\n this.name = 'PageNotFoundException';\n }\n}\n","import {MainException} from 'common/exception/MainException';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class UnauthorizedException extends MainException implements ExceptionContract {\n public static readonly ERROR_CODE: number = 401;\n\n public constructor(message: string, data?: {[key: string]: any}) {\n super(message, UnauthorizedException.ERROR_CODE, data);\n this.name = 'UnauthorizedException';\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"crypto\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"express\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"cors\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"helmet\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"connect-timeout\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@sentry/node\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@sentry/integrations\");","/* eslint-disable no-shadow */\nexport enum Env {\n PRODUCTION = 'prod',\n DEVELOPMENT = 'dev',\n TEST = 'test'\n}\n","import {Env} from 'common/tool/Env';\n\nexport class Environment {\n public static getMode(): Env {\n switch (process.env.NODE_ENV) {\n case 'dev':\n case 'development':\n return Env.DEVELOPMENT;\n case 'prod':\n case 'production':\n return Env.PRODUCTION;\n case 'test':\n return Env.TEST;\n }\n\n return process.env.APP_ID === undefined ? Env.DEVELOPMENT : Env.PRODUCTION;\n }\n}\n","import * as Sentry from '@sentry/node';\nimport { CaptureConsole } from '@sentry/integrations';\nimport {Environment} from 'common/tool/Environment';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\nimport {UnauthorizedException} from 'common/exception/UnauthorizedException';\nimport {Env} from 'common/tool/Env';\n\nexport class Logger {\n public static init(sentryToken: string): void {\n if (Environment.getMode() === Env.PRODUCTION) {\n Sentry.init({\n dsn: sentryToken,\n integrations: [\n new CaptureConsole({\n levels: ['error', 'warn', 'log']\n })\n ],\n environment: Environment.getMode(),\n maxBreadcrumbs: 50\n });\n }\n }\n\n public static trace(message: string, extra?: any): void {\n if ([Env.DEVELOPMENT, Env.TEST].includes(Environment.getMode())) {\n if (extra === undefined) {\n console.info(message); // eslint-disable-line no-console\n } else {\n console.info(message, extra); // eslint-disable-line no-console\n }\n }\n Sentry.addBreadcrumb({\n category: 'info',\n message: message,\n data: extra,\n level: Sentry.Severity.Info\n });\n }\n\n public static debug(message: string, extra?: any): void {\n if ([Env.DEVELOPMENT, Env.TEST].includes(Environment.getMode())) {\n if (extra === undefined) {\n console.log(message); // eslint-disable-line no-console\n } else {\n console.log(message, extra); // eslint-disable-line no-console\n }\n }\n Sentry.addBreadcrumb({\n category: 'debug',\n message: message,\n data: extra,\n level: Sentry.Severity.Debug\n });\n }\n\n public static info(message: string, extra?: any): void {\n if ([Env.DEVELOPMENT, Env.TEST].includes(Environment.getMode())) {\n if (extra === undefined) {\n console.info(message); // eslint-disable-line no-console\n } else {\n console.info(message, extra); // eslint-disable-line no-console\n }\n }\n Sentry.withScope(scope => {\n if (extra !== undefined) {\n scope.setExtra('extra', JSON.stringify(extra));\n }\n Sentry.captureMessage(message);\n });\n }\n\n public static warning(error: ExceptionContract, extra?: any): void {\n if ([Env.DEVELOPMENT, Env.TEST].includes(Environment.getMode())) {\n if (extra === undefined) {\n console.warn(error); // eslint-disable-line no-console\n } else {\n console.warn(error, extra); // eslint-disable-line no-console\n }\n }\n Sentry.withScope(scope => {\n if (extra !== undefined) {\n scope.setExtra('extra', JSON.stringify(extra));\n }\n if (error.data !== undefined) {\n scope.setExtra('data', JSON.stringify(error.data));\n }\n Sentry.captureException(error);\n });\n }\n\n public static error(error: ExceptionContract, extra?: any): void {\n if ([UnauthorizedException.ERROR_CODE].includes(error.code)) {\n return;\n }\n if ([Env.DEVELOPMENT, Env.TEST].includes(Environment.getMode())) {\n if (extra === undefined) {\n console.error(error); // eslint-disable-line no-console\n } else {\n console.error(error, extra); // eslint-disable-line no-console\n }\n }\n Sentry.withScope(scope => {\n if (extra !== undefined) {\n scope.setExtra('extra', JSON.stringify(extra));\n }\n if (error.data !== undefined) {\n scope.setExtra('data', JSON.stringify(error.data));\n }\n Sentry.captureException(error);\n });\n }\n\n public static requestHandler(): any {\n return Sentry.Handlers.requestHandler();\n }\n\n public static errorHandler(): any {\n return Sentry.Handlers.errorHandler();\n }\n}\n","import * as crypto from 'crypto';\nimport * as express from 'express';\nimport * as cors from 'cors';\nimport * as helmet from 'helmet';\nimport * as timeout from 'connect-timeout';\nimport {ServerContract} from 'common/http/ServerContract';\nimport {Logger} from 'common/tool/Logger';\n\nexport class Server implements ServerContract {\n public static readonly DEFAULT_PORT: number = 8080;\n public static readonly SALT: string = '03561b4a0fe7f125025';\n private app: express.Express;\n\n public async create(origins: string[], port?: number): Promise<express.Express> {\n if (this.app === undefined) {\n const backendPort: number = port || Server.DEFAULT_PORT;\n const backendLocalUrl: string = 'http://localhost:' + String(backendPort);\n Logger.debug('start server on ' + backendLocalUrl);\n this.app = express();\n this.app.use(timeout('60s'));\n this.app.use(express.json({\n inflate: true,\n limit: '100kb',\n reviver: null,\n strict: true,\n type: 'application/json',\n verify: undefined\n }));\n this.app.use(cors({\n origin: [backendLocalUrl].concat(origins),\n credentials: true\n }));\n this.app.use(helmet());\n this.app.use(express.json());\n this.app.listen(backendPort, () => {\n Logger.debug('server is running on ' + backendLocalUrl);\n });\n }\n\n return this.app;\n }\n\n public getSessionSecret(sessionCookieName: string): string {\n return crypto.createHash('sha1').update(sessionCookieName + Server.SALT).digest('hex');\n }\n}\n","import * as express from 'express';\nimport {Logger} from 'common/tool/Logger';\n\nexport class HandlerController {\n public static error(_request: express.Request, response: express.Response, error: any): any {\n Logger.error(error);\n const code: number = error.code !== undefined && error.code !== null ? Number(error.code) : 500;\n response.status(!isNaN(code) && Number(error.code) >= 400 && Number(error.code) <= 599 ? Number(error.code) : 500);\n response.json({code: error.code, message: error.message});\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"axios\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"luxon\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"querystring\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"retry\");","import * as retry from 'retry';\nimport {Logger} from 'common/tool/Logger';\n\nexport class Retry {\n public static async request(process: () => Promise<void>, retries: number = 2): Promise<any> {\n const operation = retry.operation({\n retries: retries,\n factor: 1,\n minTimeout: 0,\n maxTimeout: 0,\n randomize: false\n });\n\n return new Promise<any>((resolve, reject) => {\n operation.attempt(() => {\n process().then(resolve).catch((error) => {\n if (!operation.retry(error)) {\n Logger.error(error);\n reject(error);\n }\n });\n });\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"urlencode\");","import axios from 'axios';\nimport {DateTime} from 'luxon';\nimport * as querystring from 'querystring';\nimport {SmsSenderServiceContract} from 'common/service/sender/SmsSenderServiceContract';\nimport {ExternalApiException} from 'common/exception/ExternalApiException';\nimport {Retry} from 'common/tool/Retry';\nimport {Logger} from 'common/tool/Logger';\nimport {Environment} from 'common/tool/Environment';\nimport * as urlencode from 'urlencode';\nimport {BadParameterException} from 'common/exception/BadParameterException';\nimport {Env} from 'common/tool/Env';\n\nexport class SmsSenderService implements SmsSenderServiceContract {\n public static readonly BASE_API_URL: string = 'https://api.smsmode.com/http/1.6/';\n public static readonly MESSAGE_MAX_LENGTH: number = 150;\n private readonly token: string;\n private readonly mode: Environment;\n\n public constructor(token: string, mode: Environment) {\n this.token = token;\n this.mode = mode;\n }\n\n public async send(senderName: string, message: string, rawPhones: string[], isCommercial: boolean = true, sendAt?: string): Promise<void> {\n let phones: string[] = this.checkPhoneFormat(rawPhones);\n if (phones.length === 0) {\n Logger.warning(new BadParameterException('no valid phone', {phones: rawPhones}));\n\n return Promise.resolve();\n }\n\n if (phones.length > 1) {\n if (message.length > SmsSenderService.MESSAGE_MAX_LENGTH * 2) {\n message = message.substring(0, SmsSenderService.MESSAGE_MAX_LENGTH * 2);\n } else if (message.length > SmsSenderService.MESSAGE_MAX_LENGTH && message.length <= SmsSenderService.MESSAGE_MAX_LENGTH * 1.33) {\n message = message.substring(0, SmsSenderService.MESSAGE_MAX_LENGTH);\n }\n }\n\n await Retry.request(async () => {\n const params: {[param: string]: any} = {\n accessToken: this.token,\n emetteur: senderName,\n message: urlencode(message, 'ISO-8859-15'),\n numero: phones.map((phone) => phone.replace('+', '')).join(','),\n classe_msg: 2,\n nbr_msg: Math.ceil(message.length / SmsSenderService.MESSAGE_MAX_LENGTH)\n };\n\n if (isCommercial) {\n params.stop = 1;\n }\n\n if (sendAt !== undefined) {\n params.date_envoi = DateTime.fromISO(sendAt, { setZone: true }).toFormat('ddMMyyyy-HH:mm');\n }\n\n if (this.mode === Env.TEST) {\n Logger.info('Simulation Mode: SMS has been sent', {params: params});\n } else {\n if (this.mode === Env.DEVELOPMENT) {\n phones = ['+15145705214'];\n }\n\n const response: {data: string} = await axios.post(SmsSenderService.BASE_API_URL + 'sendSMS.do',\n querystring.stringify(params, '&', '=', {encodeURIComponent: (p) => p}), {\n timeout: 30000\n });\n\n if (response.data.length > 0 && response.data.trim().substring(0, 1) !== '0') {\n throw new ExternalApiException('Error: ' + response.data, params);\n }\n }\n }, 1);\n }\n\n private checkPhoneFormat(phones: string[]): string[] {\n const caRegex: RegExp = new RegExp('^\\\\+1[0-9]{10}$', 'i');\n const frRegex: RegExp = new RegExp('^\\\\+33(6|7)[0-9]{8}$', 'i');\n const usRegex: RegExp = new RegExp('^\\\\+1[0-9]{10}$', 'i');\n\n return phones.filter((phone) => caRegex.test(phone) || frRegex.test(phone) || usRegex.test(phone));\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"path\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"mustache\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"fs\");","import * as fs from 'fs';\nimport {FileSystemContract} from 'common/tool/FileSystemContract';\nimport {BadParameterException} from 'common/exception/BadParameterException';\n\nexport class FileSystem implements FileSystemContract {\n public async read(filePath: string): Promise<string> {\n if (!this.isFile(filePath)) {\n throw new BadParameterException(filePath + ' does not exist or is not a file');\n }\n\n return fs.readFileSync(filePath, 'utf8');\n }\n\n public async readJson(jsonPath: string): Promise<any> {\n const data: any = await this.read(jsonPath);\n if (!this.isJson(data)) {\n throw new BadParameterException(jsonPath + ' does not contain JSON');\n }\n\n return JSON.parse(data);\n }\n\n public async write(filePath: string, rawData: any): Promise<void> {\n let data: string = '';\n if (typeof rawData === 'string') {\n data = String(rawData);\n } else if (typeof rawData === 'number') {\n data = String(rawData);\n } else {\n data = JSON.stringify(rawData);\n }\n\n fs.writeFileSync(filePath, data, {encoding: 'utf8'});\n\n return Promise.resolve();\n }\n\n public async writeJson(jsonPath: string, data: any): Promise<void> {\n return this.write(jsonPath, JSON.stringify(data));\n }\n\n private isFile(filePath: string): boolean {\n return fs.existsSync(filePath) && fs.statSync(filePath).isFile();\n }\n\n private isJson(data: any): boolean {\n try {\n JSON.parse(data);\n\n return true;\n } catch (_error) {\n return false;\n }\n }\n}\n","export const asyncForEach: (array: any[], callback: (item: any) => Promise<void>) => Promise<void> = async (array, callback) => {\n for (let i: number = 0; i < array.length; i++) { // eslint-disable-line\n await callback(array[i]);\n }\n};\n","import * as path from 'path';\nimport {parse, render} from 'mustache';\nimport {cloneDeep} from 'lodash';\nimport {TemplateEngineContract} from 'common/templating/TemplateEngineContract';\nimport {FileSystem} from 'common/tool/FileSystem';\nimport {asyncForEach} from 'common/util/PromiseUtil';\n\nexport class TemplateEngine implements TemplateEngineContract {\n public async render(templatePath: string, data: {[key: string]: any}, baseIncludePath?: string): Promise<string> {\n if (!templatePath.endsWith('.template')) {\n templatePath += '.template';\n }\n const view: {[key: string]: any} = cloneDeep(data);\n const basePath: string = path.isAbsolute(templatePath) ? '' : __dirname + path.sep;\n const fileSystem = new FileSystem();\n const content: string = await fileSystem.read(basePath + templatePath);\n\n const includes: string[] = [];\n const results: any[][] = parse(content);\n results.forEach((result) => {\n if (result.length >= 4 && result[0] === '&' && result[1].startsWith('include:')) {\n includes.push(result[1]);\n }\n });\n\n if (includes.length > 0) {\n if (baseIncludePath === undefined) {\n baseIncludePath = path.dirname(basePath + templatePath) + path.sep;\n } else if (!path.isAbsolute(baseIncludePath)) {\n baseIncludePath = basePath + baseIncludePath;\n }\n await asyncForEach(includes, async (include) => {\n const includeParts: string[] = include.split(':');\n if (includeParts.length === 3) {\n const templateName: string = includeParts[2];\n view[include] = await this.render(path.resolve(baseIncludePath, templateName), view[include]);\n }\n });\n }\n\n return render(content, view);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"node-mailjet\");","import {EmailSenderServiceContract} from 'common/service/sender/EmailSenderServiceContract';\nimport {TemplateEngine} from 'common/templating/TemplateEngine';\nimport {TemplateEngineContract} from 'common/templating/TemplateEngineContract';\nimport {ViewEmailTrackDeliveryContract} from 'common/templating/view/email/ViewEmailTrackDeliveryContract';\nimport {RecipientContract} from 'common/service/sender/RecipientContract';\nimport {SenderContract} from 'common/service/sender/SenderContract';\nimport * as Mailjet from 'node-mailjet';\nimport {MainException} from 'common/exception/MainException';\nimport {Retry} from 'common/tool/Retry';\nimport {Environment} from 'common/tool/Environment';\nimport {Env} from 'common/tool/Env';\nimport {Logger} from 'common/tool/Logger';\nimport {ViewEmailUserNotificationContract} from 'common/templating/view/email/ViewEmailUserNotificationContract';\n\nexport class EmailSenderService implements EmailSenderServiceContract {\n private readonly templateEngine: TemplateEngineContract;\n private readonly mailjet: any;\n private readonly mode: Environment;\n\n public constructor(apiPublicKey: string, apiSecretKey: string, mode: Environment) {\n this.templateEngine = new TemplateEngine();\n this.mailjet = Mailjet.connect(apiPublicKey, apiSecretKey);\n this.mode = mode;\n }\n\n public async sendDeliveryDelay(sender: SenderContract, recipient: RecipientContract, data: ViewEmailTrackDeliveryContract): Promise<void> {\n return await Retry.request(async () => {\n if (data.base.copyright === undefined) {\n data.base.copyright = {\n year: String((new Date()).getUTCFullYear())\n };\n }\n const text: string = await this.templateEngine.render('data/email/template/deliveryDelay', data, 'data/email/element/text');\n const html: string = await this.templateEngine.render('data/email/template/deliveryDelay', data, 'data/email/element/html');\n\n return await this.sendNotification(sender, recipient, data.base.subject, text, html);\n }, 1);\n }\n\n public async sendTrackDelivery(sender: SenderContract, recipient: RecipientContract, data: ViewEmailTrackDeliveryContract): Promise<void> {\n return await Retry.request(async () => {\n const textContent: string = await this.templateEngine.render('data/email/template/trackDelivery', data, 'data/email/element/text');\n const text: string = await this.templateEngine.render('data/email/element/text/index', {content: textContent, base: data.base});\n const htmlContent: string = await this.templateEngine.render('data/email/template/trackDelivery', data, 'data/email/element/html');\n const html: string = await this.templateEngine.render('data/email/element/html/index', {content: htmlContent, base: data.base});\n\n return await this.sendNotification(sender, recipient, data.base.subject, text, html);\n }, 1);\n }\n\n public async sendUserNotification(sender: SenderContract, recipient: RecipientContract, data: ViewEmailUserNotificationContract): Promise<void> {\n return await Retry.request(async () => {\n const textContent: string = await this.templateEngine.render('data/email/template/userNotification', data, 'data/email/element/text');\n const text: string = await this.templateEngine.render('data/email/element/text/index', {content: textContent, base: data.base});\n const htmlContent: string = await this.templateEngine.render('data/email/template/userNotification', data, 'data/email/element/html');\n const html: string = await this.templateEngine.render('data/email/element/html/index', {content: htmlContent, base: data.base});\n\n return await this.sendNotification(sender, recipient, data.base.subject, text, html);\n }, 1);\n }\n\n // private async sendCampaign(sender: SenderContract, recipients: RecipientContract[], subject: string, text: string, html: string): Promise<void> {\n // try {\n // await this.mailjet.post('send').request({\n // FromEmail: sender.contact,\n // FromName: sender.name,\n // Subject: subject,\n // 'Text-part': text,\n // 'Html-part': html,\n // Recipients: [\n // recipients.map((recipient) => {\n // return { Name: recipient.name, Email: recipient.contact };\n // }),\n // ],\n // });\n //\n // return Promise.resolve();\n // } catch (error) {\n // return Promise.reject(new MainException(error.message, Number(error.statusCode)));\n // }\n // }\n\n private async sendNotification(sender: SenderContract, recipient: RecipientContract, subject: string, text: string, html: string): Promise<void> {\n try {\n if (this.mode === Env.TEST) {\n Logger.info('Simulation Mode: Email has been sent', {sender: sender, recipient: recipient});\n } else {\n if (this.mode === Env.DEVELOPMENT) {\n recipient.contact = 'developer@onylab.com';\n }\n\n await this.mailjet.post('send', {'version': 'v3.1'})\n .request({\n 'Messages': [\n {\n 'From': {\n 'Name': sender.name,\n 'Email': sender.contact\n },\n 'To': [{\n 'Name': recipient.name,\n 'Email': recipient.contact\n }],\n 'Subject': subject,\n 'TextPart': text,\n 'HTMLPart': html\n }\n ]\n });\n }\n } catch (error) {\n throw new MainException(error.message, Number(error.statusCode));\n }\n }\n}\n","import {ConfigurationContract} from 'common/tool/ConfigurationContract';\nimport {FileSystemContract} from 'common/tool/FileSystemContract';\nimport {FileSystem} from 'common/tool/FileSystem';\nimport {Env} from 'common/tool/Env';\n\nexport class Configuration implements ConfigurationContract {\n private root: string;\n private environment: Env;\n private config: any;\n\n public constructor(root: string, environment?: Env) {\n this.root = root;\n this.environment = environment;\n }\n\n public async full(): Promise<any> {\n await this.init();\n\n return this.config;\n }\n\n private async init(): Promise<void> {\n if (this.config === undefined) {\n if (this.root === undefined) {\n this.config = {};\n } else {\n const filesystem: FileSystemContract = new FileSystem();\n if ([Env.DEVELOPMENT, Env.TEST].includes(this.environment)) {\n try {\n this.config = await filesystem.readJson(this.root + 'data/config_' + String(this.environment) + '.json');\n } catch (_e) {\n // nothing\n }\n }\n\n if (this.config === undefined) {\n this.config = await filesystem.readJson(this.root + 'data/config.json');\n }\n }\n }\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"typeorm\");","import {Connection, createConnection} from 'typeorm';\nimport {DatabaseContract} from 'common/tool/DatabaseContract';\nimport {FileSystem} from 'common/tool/FileSystem';\nimport {FileSystemContract} from 'common/tool/FileSystemContract';\nimport {BadParameterException} from 'common/exception/BadParameterException';\nimport {Logger} from 'common/tool/Logger';\n\n// TypeORM documation, types: https://github.com/typeorm/typeorm/blob/master/src/driver/types/ColumnTypes.ts\nexport class Database implements DatabaseContract {\n private root: string;\n private db: any;\n private connection: Connection;\n\n public constructor(root: string) {\n this.root = root;\n }\n\n public async connect(name: string, entities: any[]): Promise<void> {\n if (this.db === undefined) {\n await this.init();\n }\n\n const con: any = this.db[name];\n if (con !== undefined) {\n con.entities = entities;\n con.logging = ['error'];\n con.logger = true;\n con.bigNumberStrings = false;\n if (con.timezone === undefined) {\n con.timezone = 'Z';\n }\n if (con.charset === undefined) {\n con.charset = 'UTF8_GENERAL_CI';\n }\n this.connection = await createConnection(con);\n } else {\n Logger.error(new BadParameterException('bad connection name'));\n }\n }\n\n public async synchronize(): Promise<void> {\n if (this.connection !== undefined) {\n await this.connection.synchronize();\n }\n }\n\n public async close(): Promise<void> {\n return this.connection.close();\n }\n\n private async init(): Promise<void> {\n if (this.root === undefined) {\n this.db = {};\n } else {\n const fileSystem: FileSystemContract = new FileSystem();\n this.db = await fileSystem.readJson(this.root + 'data/db.json');\n }\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"prettyjson\");","import * as prettyjson from 'prettyjson';\nimport {DisplayerContract} from 'common/tool/DisplayerContract';\nimport {Logger} from 'common/tool/Logger';\n\nexport class Displayer implements DisplayerContract {\n public error(error: Error): void {\n Logger.error(error);\n }\n\n public info(message: string): void {\n Logger.trace(message);\n }\n\n public json(json: any): void {\n Logger.trace(prettyjson.render(json, {}));\n }\n\n public success(message: string): void {\n Logger.trace(message);\n }\n}\n","export const isNullOrUndefined: (obj: unknown) => boolean = (obj) => {\n return obj === undefined || obj === null;\n};\n","export class ValidatorUtil {\n public static isEmail(email: string): boolean {\n if (typeof email !== 'string') {\n return false;\n }\n\n return (new RegExp('^[a-zA-Z0-9\\\\.!#$%&*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\\\.[a-zA-Z0-9-]+)*$', 'i')).test(email);\n }\n\n public static isPhone(phone: string): boolean {\n if (typeof phone !== 'string') {\n return false;\n }\n\n return (new RegExp('^([\\+\\\\s0-9]{10,}(#[0-9]+)?)$')).test(phone);\n }\n\n public static isNumber(number: string | number): boolean {\n if (typeof number === 'number') {\n return true;\n }\n\n if (typeof number !== 'string') {\n return false;\n }\n\n return (new RegExp('^\\-?[0-9]+\\\\.?[0-9]*$')).test(number);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"fast-diff\");","import {deburr, toLower, trim} from 'lodash';\nimport {isNullOrUndefined} from 'common/util/HelperUtil';\n\nexport class StringUtil {\n // alternative https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\n public static escapeRegExp(str: string): string {\n if (typeof str !== 'string') {\n return str;\n }\n\n return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&'); // and .replace(/-/g, '\\\\x2d');\n }\n\n public static truncate(str: string, limit: number): string {\n if (isNullOrUndefined(str) || str.length <= limit) {\n return str;\n }\n\n if (limit <= 3) {\n return '';\n }\n\n return str.slice(0, limit - 3) + '...';\n }\n\n public static slugify(raw: string, separator?: string): string {\n if (raw === undefined) {\n return '';\n }\n\n return toLower(trim(deburr(raw)).replace(/[^0-9a-z\\-\\_]/gi, separator));\n }\n}\n","import {isNullOrUndefined} from 'common/util/HelperUtil';\nimport {ValidatorUtil} from 'common/util/ValidatorUtil';\nimport * as diff from 'fast-diff';\nimport {StringUtil} from 'common/util/StringUtil';\n\nexport class AddressUtil {\n private static readonly ZIPCODES: string[] = [\n '78500', '78600', '78800', '95240', '95530',\n '78630', '78670', '78240', '78580', '78300',\n '95150', '95250', '95480', '95320', '95550'\n ];\n private static readonly CITIES: string[] = [\n 'Sartrouville', 'Cormeilles-en-Parisis', 'Houilles', 'Maisons-Laffitte', 'La Frette-sur-Seine', 'Argenteuil', 'Montesson', 'Le Mesnil-le-Roi', 'Bezons',\n 'Orgeval', 'Poissy', 'Morainvilliers', 'Villennes-sur-Seine', 'Medan', 'Chambourcy', 'Aigremont', 'Les Alluets-le-Roi',\n 'Taverny', 'Beauchamp', 'Pierrelaye', 'Saint-Leu-la-Forêt', 'Bessancourt'\n ];\n private static readonly COUNTRIES: string[] = ['France'];\n\n public static autoCorrectCity(city: string): string {\n if (isNullOrUndefined(city)) {\n return city;\n }\n\n const exactMatch: string = AddressUtil.CITIES.find((c) => c.toLowerCase() === city.toLowerCase());\n if (exactMatch !== undefined) {\n return exactMatch;\n }\n\n const partialMatch: string = AddressUtil.CITIES.find((c) => {\n const result: {add: number, remove: number} = AddressUtil.countDiff(city, c);\n\n return result.add <= 2 && result.remove <= 2;\n });\n if (partialMatch !== undefined) {\n return partialMatch;\n }\n\n const matchNoDash: string = AddressUtil.CITIES.find((c) => c.replace(/-/g, ' ').toLowerCase() === city.toLowerCase());\n if (matchNoDash !== undefined) {\n return matchNoDash;\n }\n\n const partialMatchNoDash: string = AddressUtil.CITIES.find((c) => {\n const result: {add: number, remove: number} = AddressUtil.countDiff(city, c.replace(/-/g, ' '));\n\n return result.add <= 2 && result.remove <= 2;\n });\n if (partialMatchNoDash !== undefined) {\n return partialMatchNoDash;\n }\n\n const startsWith: string = AddressUtil.CITIES.find((c) => c.toLowerCase().startsWith(city.toLowerCase()));\n if (startsWith !== undefined) {\n return startsWith;\n }\n\n const isIncluded: string = AddressUtil.CITIES.find((c) => city.toLowerCase().includes(c.toLowerCase()));\n if (isIncluded !== undefined) {\n return isIncluded;\n }\n\n return city;\n }\n\n public static isZipCode(zip: string): boolean {\n if (typeof zip !== 'string') {\n return false;\n }\n\n if (AddressUtil.ZIPCODES.includes(zip)) {\n return true;\n }\n\n return ValidatorUtil.isNumber(zip) && zip.length === 5 && !zip.includes('.') && !zip.includes('-');\n }\n\n public static parse(raw: string): { street?: string, zip?: string, city?: string, country?: string } {\n const address: { street?: string, zip?: string, city?: string, country?: string } = {};\n if (!isNullOrUndefined(raw)) {\n const rawAddressParts: string[] = raw.split(',');\n if (rawAddressParts.length >= 3) {\n let i: number = rawAddressParts.length - 1;\n address.country = rawAddressParts[i].trim();\n rawAddressParts.splice(i--, 1);\n if (rawAddressParts[i] !== undefined && rawAddressParts[i].trim().includes(' ')) {\n const rawParts: string[] = rawAddressParts[i].trim().split(' ');\n address.zip = rawParts[0] === undefined ? undefined : rawParts[0].trim();\n rawParts.splice(0, 1);\n address.city = rawParts.join(' ').trim();\n rawAddressParts.splice(i--, 1);\n } else if (!isNaN(Number(rawAddressParts[i].trim()))) {\n address.zip = rawAddressParts[i].trim();\n rawAddressParts.splice(i--, 1);\n if (i >= 2) {\n address.city = rawAddressParts[i].trim();\n rawAddressParts.splice(i--, 1);\n }\n } else if (!isNaN(Number(rawAddressParts[i - 1].trim()))) {\n address.city = rawAddressParts[i].trim();\n rawAddressParts.splice(i--, 1);\n address.zip = rawAddressParts[i].trim();\n rawAddressParts.splice(i--, 1);\n } else {\n address.city = rawAddressParts[i].trim();\n rawAddressParts.splice(i--, 1);\n }\n address.street = rawAddressParts.map((part) => part.trim()).join(' ').trim();\n } else {\n let rawAddress: string = raw.toLowerCase();\n AddressUtil.ZIPCODES.forEach((zipcode) => {\n if (rawAddress.includes(zipcode)) {\n address.zip = zipcode;\n try {\n rawAddress = rawAddress.replace(new RegExp(StringUtil.escapeRegExp(zipcode), 'ig'), '');\n } catch (_e) {\n // ignore\n }\n }\n });\n AddressUtil.CITIES.forEach((city) => {\n if (rawAddress.includes(city.toLowerCase())) {\n address.city = city;\n try {\n rawAddress = rawAddress.replace(new RegExp(StringUtil.escapeRegExp(city), 'ig'), '');\n } catch (_e) {\n // ignore\n }\n }\n });\n AddressUtil.COUNTRIES.forEach((country) => {\n if (rawAddress.includes(country.toLowerCase())) {\n address.country = country;\n try {\n rawAddress = rawAddress.replace(new RegExp(StringUtil.escapeRegExp(country), 'ig'), '');\n } catch (_e) {\n // ignore\n }\n }\n });\n\n if (address.street === undefined) {\n address.street = rawAddress.split(',').map((part) => part.trim()).join(' ').trim();\n }\n }\n\n if (address.country === undefined) {\n address.country = 'France';\n }\n }\n\n return address;\n }\n\n private static countDiff(str: string, reference: string): { add: number, remove: number } {\n const result: { add: number, remove: number } = { add: 0, remove: 0 };\n\n diff(str.toLowerCase(), reference.toLowerCase()).forEach((value) => {\n switch (value[0]) {\n case -1:\n result.remove += value[1].length;\n break;\n case 1:\n result.add += value[1].length;\n break;\n }\n });\n\n return result;\n }\n}\n","import {DateTime} from 'luxon';\nimport {cloneDeep} from 'lodash';\n\nexport class DateUtil {\n private static readonly PERIOD_MAX_DATES: number = 90;\n private static readonly WEEK_DAYS: {[id: number]: string} = {1: 'lundi', 2: 'mardi', 3: 'mercredi', 4: 'jeudi', 5: 'vendredi', 6: 'samedi', 7: 'dimanche'};\n\n public static displayWeekDay(weekDay: number): string {\n let displayWeekDay: string = '';\n if (DateUtil.WEEK_DAYS[weekDay] !== undefined) {\n displayWeekDay = DateUtil.WEEK_DAYS[weekDay];\n }\n\n return displayWeekDay;\n }\n\n public static generatePeriod(fromDate: string, toDate: string, initialValue: Record<string, any>, addDate: boolean = true, MAX_DAYS: number = DateUtil.PERIOD_MAX_DATES):\n {[date: string]: Record<string, any>} {\n let cursor: string = DateTime.fromISO(fromDate, {setZone: true}).toISODate();\n const stop: string = DateTime.fromISO(toDate, {setZone: true}).toISODate();\n let i: number = 0;\n const data: {[date: string]: Record<string, any>} = {};\n while (cursor <= stop && i < MAX_DAYS) {\n data[cursor] = cloneDeep(initialValue);\n if (addDate) {\n data[cursor].date = cursor;\n }\n cursor = DateTime.fromISO(cursor, {setZone: true}).plus({days: 1}).toISODate();\n i++;\n }\n\n return data;\n }\n\n public static limitDate(targetDate: string, baseDate: string, limitInSeconds: number = 0): string {\n if (targetDate === undefined || baseDate === undefined) {\n return undefined;\n }\n\n const target: string = DateTime.fromISO(targetDate, {setZone: true}).toISO();\n const limit: string = DateTime.fromISO(baseDate, {setZone: true}).plus({seconds: limitInSeconds}).toISO();\n\n return target > limit ? limit : target;\n }\n\n public static localeToISO(localeDate: string): string {\n const frFormat1: RegExp = new RegExp('[0-9]{2}/[0-9]{2}/[0-9]{4}');\n const frFormat2: RegExp = new RegExp('[0-9]{2}-[0-9]{2}-[0-9]{4}');\n const isoFormat: RegExp = new RegExp('[0-9]{4}-[0-9]{2}-[0-9]{2}');\n\n let isoDate: string;\n if (frFormat1.test(localeDate)) {\n const parts: string[] = localeDate.split('/');\n isoDate = parts[2] + '-' + parts[1] + '-' + parts[0];\n } else if (frFormat2.test(localeDate)) {\n const parts: string[] = localeDate.split('-');\n isoDate = parts[2] + '-' + parts[1] + '-' + parts[0];\n } else if (isoFormat.test(localeDate)) {\n isoDate = localeDate;\n }\n\n return isoDate;\n }\n\n public static slotToTime(timeSlot: string): string {\n const timeFormat: RegExp = new RegExp('^(\\\\s)?[0-9]{2}:[0-9]{2}(\\\\s)?$');\n const slotFormat: RegExp = new RegExp('^(\\\\s)?[0-9]{2}:[0-9]{2}(\\\\s)?-(\\\\s)?[0-9]{2}:[0-9]{2}(\\\\s)?$');\n\n timeSlot = timeSlot.trim();\n\n let time: string;\n if (timeFormat.test(timeSlot)) {\n time = timeSlot.trim() + ':00';\n } else if (slotFormat.test(timeSlot)) {\n const parts: string[] = timeSlot.split('-');\n time = parts[0].trim() + ':00';\n }\n\n return time;\n }\n\n public static round(date: string, roundingInMs: number = 0): string {\n if (typeof date !== 'string') {\n return date;\n }\n\n const dateTime: DateTime = DateTime.fromISO(date, {setZone: true});\n\n return DateTime.fromMillis(Math.round((+dateTime.toMillis()) / roundingInMs) * roundingInMs).setZone(dateTime.zone).toISO();\n }\n}\n","export class ExtractorUtil {\n public static phone(raw: string, locale: 'fr'): string {\n if (typeof raw !== 'string') {\n return undefined;\n }\n\n raw = raw.trim().replace(/\\s?\\.?\\-?\\(?\\)?/g, '');\n switch (locale) {\n case 'fr': {\n const phoneFrRegex: RegExp = new RegExp('(0[6-7][0-9]{8})', 'i');\n const result: string[] = phoneFrRegex.exec(raw);\n if (result !== null && result.length > 0 && result[0] !== null) {\n return result[0];\n }\n }\n }\n\n return undefined;\n }\n}\n","import {StringUtil} from 'common/util/StringUtil';\n\nexport class FormatterUtil {\n public static trim(raw: string): string {\n return typeof raw === 'string' ? raw.trim() : raw;\n }\n\n public static capitalize(raw: string): string {\n const lowraw: string = FormatterUtil.lower(raw);\n\n return typeof lowraw === 'string' ? lowraw.split(' ').map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join (' ') : raw;\n }\n\n public static lower(raw: string): string {\n return typeof raw === 'string' ? raw.toLocaleLowerCase() : raw;\n }\n\n public static upper(raw: string): string {\n return typeof raw === 'string' ? raw.toLocaleUpperCase() : raw;\n }\n\n public static phone(raw: string, locale: string, output: 'nat' | 'int' = 'nat'): string {\n if (typeof raw === 'string') {\n raw = FormatterUtil.preformatPhone(raw, locale);\n switch (output) {\n case 'nat': // national\n return FormatterUtil.phoneNat(raw, locale);\n break;\n case 'int': // international\n return FormatterUtil.phoneInt(raw, locale);\n break;\n }\n }\n\n return raw;\n }\n\n public static stripEmoji(raw: string): string {\n let output: string = raw;\n\n if (typeof output === 'string') {\n const emojiRegex = require('emoji-regex/RGI_Emoji.js'); /* eslint-disable-line @typescript-eslint/no-var-requires */\n const regex: RegExp = emojiRegex();\n\n let match;\n while ((match = regex.exec(output)) !== null) {\n try {\n output = output.replace(new RegExp('\\\\s' + StringUtil.escapeRegExp(match[0]), 'g'), '');\n output = output.replace(new RegExp(StringUtil.escapeRegExp(match[0]) + '\\\\s', 'g'), '');\n output = output.replace(new RegExp(StringUtil.escapeRegExp(match[0]), 'g'), '');\n } catch (_e) {\n // ignore\n }\n }\n while ((match = regex.exec(output)) !== null) {\n try {\n output = output.replace(new RegExp('\\\\s' + StringUtil.escapeRegExp(match[0]), 'g'), '');\n output = output.replace(new RegExp(StringUtil.escapeRegExp(match[0]) + '\\\\s', 'g'), '');\n output = output.replace(new RegExp(StringUtil.escapeRegExp(match[0]), 'g'), '');\n } catch (_e) {\n // ignore\n }\n }\n }\n\n return output;\n }\n\n public static stripExoticCharacters(raw: string): string {\n if (typeof raw === 'string') {\n return raw.replace('’', '\\'').replace(/[\\u0250-\\ue007]+/g, '*');\n }\n\n return raw;\n }\n\n private static preformatPhone(raw: string, locale: string): string {\n raw = raw.trim().replace(/\\s?\\.?\\-?\\(?\\)?/g, '');\n switch (locale) {\n case 'fr':\n if ((new RegExp('^[1-9]')).test(raw) && raw.length === 9) {\n return '0' + raw;\n }\n break;\n }\n\n return raw;\n }\n\n private static phoneNat(raw: string, locale: string): string {\n switch (locale) {\n case 'fr': // format: 06 11 22 33 44\n if (raw.startsWith('+330')) {\n raw = raw.substr(3);\n } else if (raw.startsWith('+33')) {\n raw = '0' + raw.substr(3);\n } else if (raw.startsWith('0033')) {\n raw = '0' + raw.substr(4);\n } else if (raw.startsWith('33') && raw.length === 11) {\n raw = '0' + raw.substr(2);\n }\n\n if (raw.length === 10) {\n let i: number = 0;\n raw = raw.split('').map((num) => {\n i++;\n\n return num + (i % 2 === 0 ? ' ' : '');\n }).join('').trim();\n }\n\n return raw;\n break;\n }\n\n return raw;\n }\n\n private static phoneInt(raw: string, locale: string): string {\n if (raw.startsWith('+')) {\n return raw;\n }\n\n switch (locale) {\n case 'fr': // format: +33611223344\n if (raw.startsWith('0')) {\n raw = raw.substr(1);\n }\n\n return '+33' + raw;\n break;\n }\n\n return raw;\n }\n}\n","export class GeneratorUtil {\n private static readonly symbolUpperCases: string[] = [\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'K', 'M', 'N', 'P', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'\n ];\n private static readonly symbolLowerCases: string[] = [\n 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'k', 'm', 'n', 'p', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'\n ];\n\n public static code(size: number): string {\n if (size === null || size === undefined) {\n size = 6;\n }\n\n let code: string = '';\n while (code.length < size) {\n code += GeneratorUtil.symbolUpperCases[GeneratorUtil.int(0, GeneratorUtil.symbolUpperCases.length - 1)];\n }\n\n return code;\n }\n\n public static int(min: number, max: number): number {\n if (min === null || min === undefined) {\n min = 0;\n }\n if (max === null || max === undefined) {\n max = Number.POSITIVE_INFINITY;\n }\n\n min = Math.ceil(min);\n max = Math.floor(max);\n\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n public static password(size: number): string {\n if (size === null || size === undefined) {\n size = 8;\n }\n\n let code: string = '';\n while (code.length < size) {\n switch (GeneratorUtil.int(1, 3)) {\n case 1:\n code += GeneratorUtil.symbolUpperCases[GeneratorUtil.int(0, GeneratorUtil.symbolUpperCases.length - 1)];\n break;\n case 2:\n code += GeneratorUtil.symbolLowerCases[GeneratorUtil.int(0, GeneratorUtil.symbolLowerCases.length - 1)];\n break;\n default:\n code += String(GeneratorUtil.int(0, 9));\n }\n }\n\n return code;\n }\n}\n","export class MathUtil {\n public static avg(values: number[]): number {\n if (values.length === 0) {\n return 0;\n }\n\n const total: number = values.reduce((accumulator, value) => {\n return accumulator + value;\n }, 0);\n\n return MathUtil.round(total / values.length, 2);\n }\n\n public static applyVariation(value: number, variation: number): number {\n let increase: number;\n if (value >= 0) {\n increase = 1 + (variation / 100);\n } else {\n increase = 1 - (variation / 100);\n }\n\n return value * increase;\n }\n\n public static median(values: number[]): number {\n if (values.length === 0) {\n return 0;\n }\n if (values.length === 1) {\n return values[0];\n }\n\n const valuesSorted: number[] = values.sort((a, b) => {\n return a - b;\n });\n\n if (valuesSorted.length % 2 === 0) {\n return MathUtil.avg([valuesSorted[(valuesSorted.length / 2) - 1], valuesSorted[(valuesSorted.length / 2)]]);\n }\n\n return valuesSorted[Math.floor(valuesSorted.length / 2)];\n }\n\n public static percentage(part: number, total: number): number {\n if (total === 0) {\n return 0;\n }\n\n return ((part / total) * 100);\n }\n\n public static round(value: number, decimals: number): number {\n if (decimals === 0) {\n return Math.round(value);\n }\n\n return Number(value.toFixed(decimals));\n }\n\n public static variation(originalValue: number, newValue: number): number {\n let percent = 0;\n if (newValue !== 0) {\n if (originalValue !== 0) {\n percent = (newValue - originalValue) / Math.abs(originalValue) * 100;\n } else {\n percent = ((newValue > 0) ? 1 : -1) * 100;\n }\n } else if (originalValue !== 0) {\n percent = ((originalValue > 0) ? 1 : -1) * -100;\n }\n\n return Math.floor(percent);\n }\n}\n","import {isArray, isObject} from 'lodash';\n\nexport class ObjectUtil {\n public static compact(obj: any, options: {removeEmptyString?: boolean} = {}): any {\n if (isArray(obj)) {\n const ouput: any[] = [];\n obj.forEach((value) => {\n value = ObjectUtil.compact(value, options);\n if ((isArray(value) && value.length > 0)\n || (isObject(value) && Object.keys(value).length > 0)\n || (value !== undefined && value !== null && !isArray(value) && !isObject(value))) {\n ouput.push(value);\n }\n });\n\n return ouput;\n } else if (isObject(obj)) {\n const ouput: any = {};\n Object.keys(obj).forEach((key) => {\n let value: any = (obj as any)[key];\n if (isArray(value) || isObject(value)) {\n value = ObjectUtil.compact(value, options);\n if ((isArray(value) && value.length > 0)\n || (isObject(value) && Object.keys(value).length > 0)\n || (value !== undefined && value !== null && !isArray(value) && !isObject(value))) {\n ouput[key] = value;\n }\n } else if (value !== undefined && value !== null\n && (typeof value !== 'string' || options.removeEmptyString === false || value.length > 0)) {\n ouput[key] = value;\n }\n });\n\n return ouput;\n }\n\n return (typeof obj !== 'string' || options.removeEmptyString === false || obj.length > 0) ? obj : undefined;\n }\n}\n","import {MathUtil} from 'common/util/MathUtil';\n\nexport class PriceUtil {\n private static readonly currencies: {[iso: string]: {symbol: string, position: string}} = {\n 'CAD': {symbol: '$', position: 'before'},\n 'EUR': {symbol: '€', position: 'after'},\n 'USD': {symbol: '$', position: 'before'}\n };\n\n public static applyTaxes(priceTaxExcluded: string, taxRates: number[]): string {\n let priceTaxIncluded: number = Number(priceTaxExcluded);\n taxRates.forEach((rate) => {\n priceTaxIncluded += Number(priceTaxExcluded) * rate;\n });\n\n return String(MathUtil.round(priceTaxIncluded, 2));\n }\n\n public static calculateTaxes(priceTaxExcluded: number, taxRates: number[]): number {\n let taxes: number = 0;\n taxRates.forEach((rate) => {\n taxes += priceTaxExcluded * rate;\n });\n\n return MathUtil.round(taxes, 2);\n }\n\n public static displayWithCurrency(price: string, isoCurrency: string): string {\n if (price === undefined || price === null) {\n return price;\n }\n\n const currency: {symbol: string, position: string} = PriceUtil.currencies[isoCurrency];\n\n let newPrice: string = price + ' ' + isoCurrency;\n if (currency !== undefined) {\n switch (currency.position) {\n case 'before':\n newPrice = currency.symbol + price;\n break;\n case 'after':\n newPrice = price + currency.symbol;\n break;\n }\n }\n\n return newPrice;\n }\n\n public static format(price: string, locale: 'fr' | 'us', decimals: number = 2): string {\n if (price === undefined || price === null) {\n return price;\n }\n\n const priceNumber: number = Number(price.replace(/\\,/gi, ''));\n const standardPrice: string = priceNumber.toLocaleString('en-US', {\n style: 'decimal',\n useGrouping: true,\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals\n });\n\n switch (locale) {\n case 'fr':\n return standardPrice.replace(/\\,/gi, ' ').replace(/\\./gi, ',');\n case 'us':\n return standardPrice;\n }\n }\n}\n"],"names":["root","factory","exports","module","define","amd","global","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","registerBasePath","basePath","process","env","APP_HOME","Path","BASE_PATH","endsWith","data","db","storage","session","message","code","name","Error","captureStackTrace","MainException","stack","UnauthorizedException","ERROR_CODE","Env","getMode","NODE_ENV","DEVELOPMENT","PRODUCTION","TEST","APP_ID","init","sentryToken","Environment","dsn","integrations","CaptureConsole","levels","environment","maxBreadcrumbs","trace","extra","includes","console","info","category","level","debug","log","scope","setExtra","JSON","stringify","warning","error","warn","requestHandler","errorHandler","create","origins","port","this","app","backendPort","Server","DEFAULT_PORT","String","Logger","use","inflate","limit","reviver","strict","type","verify","origin","concat","credentials","listen","getSessionSecret","sessionCookieName","update","SALT","digest","_request","response","Number","status","isNaN","json","request","retries","operation","factor","minTimeout","maxTimeout","randomize","Promise","resolve","reject","attempt","then","catch","retry","token","mode","send","senderName","rawPhones","isCommercial","sendAt","phones","checkPhoneFormat","length","BadParameterException","SmsSenderService","MESSAGE_MAX_LENGTH","substring","Retry","params","accessToken","emetteur","numero","map","phone","replace","join","classe_msg","nbr_msg","Math","ceil","stop","date_envoi","DateTime","setZone","toFormat","BASE_API_URL","encodeURIComponent","p","timeout","trim","ExternalApiException","caRegex","RegExp","frRegex","usRegex","filter","test","read","filePath","isFile","readJson","jsonPath","isJson","parse","write","rawData","encoding","writeJson","_error","asyncForEach","array","callback","i","render","templatePath","baseIncludePath","view","cloneDeep","__dirname","FileSystem","content","forEach","result","startsWith","push","include","includeParts","split","templateName","apiPublicKey","apiSecretKey","templateEngine","TemplateEngine","mailjet","sendDeliveryDelay","sender","recipient","base","copyright","year","Date","getUTCFullYear","text","html","sendNotification","subject","sendTrackDelivery","textContent","htmlContent","sendUserNotification","contact","post","statusCode","full","config","filesystem","connect","entities","con","logging","logger","bigNumberStrings","timezone","charset","createConnection","connection","synchronize","close","fileSystem","success","isNullOrUndefined","isEmail","email","isPhone","isNumber","number","escapeRegExp","str","truncate","slice","slugify","raw","separator","toLower","deburr","autoCorrectCity","city","exactMatch","AddressUtil","CITIES","find","c","toLowerCase","partialMatch","countDiff","add","remove","matchNoDash","partialMatchNoDash","isIncluded","isZipCode","zip","ZIPCODES","ValidatorUtil","address","rawAddressParts","country","splice","rawParts","street","part","zipcode","StringUtil","_e","COUNTRIES","reference","displayWeekDay","weekDay","DateUtil","WEEK_DAYS","generatePeriod","fromDate","toDate","initialValue","addDate","MAX_DAYS","PERIOD_MAX_DATES","cursor","toISODate","date","plus","days","limitDate","targetDate","baseDate","limitInSeconds","target","toISO","seconds","localeToISO","localeDate","isoDate","frFormat1","frFormat2","isoFormat","parts","slotToTime","timeSlot","time","timeFormat","slotFormat","round","roundingInMs","dateTime","toMillis","zone","locale","exec","capitalize","lowraw","FormatterUtil","lower","word","charAt","toUpperCase","toLocaleLowerCase","upper","toLocaleUpperCase","output","preformatPhone","phoneNat","phoneInt","stripEmoji","regex","emojiRegex","match","stripExoticCharacters","substr","num","size","GeneratorUtil","symbolUpperCases","int","min","max","POSITIVE_INFINITY","floor","random","password","symbolLowerCases","avg","values","total","reduce","accumulator","MathUtil","applyVariation","variation","median","valuesSorted","sort","b","percentage","decimals","toFixed","originalValue","newValue","percent","abs","compact","options","isArray","ObjectUtil","isObject","keys","removeEmptyString","applyTaxes","priceTaxExcluded","taxRates","priceTaxIncluded","rate","calculateTaxes","taxes","displayWithCurrency","price","isoCurrency","currency","PriceUtil","currencies","newPrice","position","symbol","format","standardPrice","toLocaleString","style","useGrouping","minimumFractionDigits","maximumFractionDigits"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"common-api.node.min.js","mappings":"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","sources":["webpack://SmilePlayerCommon/webpack/universalModuleDefinition","webpack://SmilePlayerCommon/external commonjs \"emoji-regex/RGI_Emoji.js\"","webpack://SmilePlayerCommon/webpack/bootstrap","webpack://SmilePlayerCommon/webpack/runtime/compat get default export","webpack://SmilePlayerCommon/webpack/runtime/define property getters","webpack://SmilePlayerCommon/webpack/runtime/hasOwnProperty shorthand","webpack://SmilePlayerCommon/webpack/runtime/make namespace object","webpack://SmilePlayerCommon/./src/constant/Path.ts","webpack://SmilePlayerCommon/./src/exception/MainException.ts","webpack://SmilePlayerCommon/./src/exception/BadParameterException.ts","webpack://SmilePlayerCommon/./src/exception/BadRequestException.ts","webpack://SmilePlayerCommon/./src/exception/ConflictException.ts","webpack://SmilePlayerCommon/./src/exception/ExternalApiException.ts","webpack://SmilePlayerCommon/./src/exception/InternalException.ts","webpack://SmilePlayerCommon/./src/exception/ObjectNotFoundException.ts","webpack://SmilePlayerCommon/./src/exception/PageNotFoundException.ts","webpack://SmilePlayerCommon/./src/exception/UnauthorizedException.ts","webpack://SmilePlayerCommon/external node-commonjs \"crypto\"","webpack://SmilePlayerCommon/external commonjs \"express\"","webpack://SmilePlayerCommon/external commonjs \"cors\"","webpack://SmilePlayerCommon/external commonjs \"helmet\"","webpack://SmilePlayerCommon/external commonjs \"connect-timeout\"","webpack://SmilePlayerCommon/external commonjs \"@sentry/node\"","webpack://SmilePlayerCommon/external commonjs \"@sentry/integrations\"","webpack://SmilePlayerCommon/./src/tool/Env.ts","webpack://SmilePlayerCommon/./src/tool/Environment.ts","webpack://SmilePlayerCommon/./src/tool/Logger.ts","webpack://SmilePlayerCommon/./src/http/Server.ts","webpack://SmilePlayerCommon/./src/http/HandlerController.ts","webpack://SmilePlayerCommon/external commonjs \"axios\"","webpack://SmilePlayerCommon/external commonjs \"luxon\"","webpack://SmilePlayerCommon/external node-commonjs \"querystring\"","webpack://SmilePlayerCommon/external commonjs \"retry\"","webpack://SmilePlayerCommon/./src/tool/Retry.ts","webpack://SmilePlayerCommon/external commonjs \"urlencode\"","webpack://SmilePlayerCommon/./src/service/sender/SmsSenderService.ts","webpack://SmilePlayerCommon/external node-commonjs \"path\"","webpack://SmilePlayerCommon/external commonjs \"mustache\"","webpack://SmilePlayerCommon/external commonjs \"lodash\"","webpack://SmilePlayerCommon/external node-commonjs \"fs\"","webpack://SmilePlayerCommon/./src/tool/FileSystem.ts","webpack://SmilePlayerCommon/./src/util/PromiseUtil.ts","webpack://SmilePlayerCommon/./src/templating/TemplateEngine.ts","webpack://SmilePlayerCommon/external commonjs \"node-mailjet\"","webpack://SmilePlayerCommon/./src/service/sender/EmailSenderService.ts","webpack://SmilePlayerCommon/./src/tool/Configuration.ts","webpack://SmilePlayerCommon/external commonjs \"typeorm\"","webpack://SmilePlayerCommon/./src/tool/Database.ts","webpack://SmilePlayerCommon/external commonjs \"prettyjson\"","webpack://SmilePlayerCommon/./src/tool/Displayer.ts","webpack://SmilePlayerCommon/./src/util/HelperUtil.ts","webpack://SmilePlayerCommon/./src/util/ValidatorUtil.ts","webpack://SmilePlayerCommon/external commonjs \"fast-diff\"","webpack://SmilePlayerCommon/./src/util/StringUtil.ts","webpack://SmilePlayerCommon/./src/util/AddressUtil.ts","webpack://SmilePlayerCommon/./src/util/DateUtil.ts","webpack://SmilePlayerCommon/./src/util/ExtractorUtil.ts","webpack://SmilePlayerCommon/./src/util/FormatterUtil.ts","webpack://SmilePlayerCommon/./src/util/GeneratorUtil.ts","webpack://SmilePlayerCommon/./src/util/MathUtil.ts","webpack://SmilePlayerCommon/./src/util/ObjectUtil.ts","webpack://SmilePlayerCommon/./src/util/PriceUtil.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SmilePlayerCommon\"] = factory();\n\telse\n\t\troot[\"SmilePlayerCommon\"] = factory();\n})(global, function() {\nreturn ","module.exports = require(\"emoji-regex/RGI_Emoji.js\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export class Path {\n private static BASE_PATH: string = './';\n\n public static registerBasePath(basePath: string): void {\n if (process.env.APP_HOME !== undefined) {\n Path.BASE_PATH = process.env.APP_HOME + '/';\n } else {\n Path.BASE_PATH = basePath + (basePath.endsWith('/') ? '' : '/');\n }\n }\n\n public static data(): string {\n return Path.BASE_PATH + 'data/';\n }\n\n public static db(): string {\n return Path.storage() + 'db/';\n }\n\n public static root(): string {\n return Path.BASE_PATH;\n }\n\n public static session(): string {\n return Path.storage() + 'session/';\n }\n\n public static storage(): string {\n return Path.BASE_PATH + 'storage/';\n }\n}\n","import {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class MainException extends Error implements ExceptionContract {\n public code: number;\n public data: {[key: string]: any};\n\n public constructor(message: string, code?: number, data?: {[key: string]: any}) {\n super(message);\n this.code = code;\n this.data = data;\n this.name = 'MainException';\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, MainException);\n } else {\n this.stack = (new Error(message)).stack;\n }\n }\n}\n","import {MainException} from 'common/exception/MainException';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class BadParameterException extends MainException implements ExceptionContract {\n public constructor(message: string, data?: {[key: string]: any}) {\n super(message, 400, data);\n this.name = 'BadParameterException';\n }\n}\n","import {MainException} from 'common/exception/MainException';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class BadRequestException extends MainException implements ExceptionContract {\n public constructor(message: string, data?: {[key: string]: any}) {\n super(message, 400, data);\n this.name = 'BadRequestException';\n }\n}\n","import {MainException} from 'common/exception/MainException';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class ConflictException extends MainException implements ExceptionContract {\n public constructor(message: string, data?: {[key: string]: any}) {\n super(message, 409, data);\n this.name = 'ConflictException';\n }\n}\n","import {MainException} from 'common/exception/MainException';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class ExternalApiException extends MainException implements ExceptionContract {\n public constructor(message: string, data?: {[key: string]: any}) {\n super(message, 502, data);\n this.name = 'ExternalApiException';\n }\n}\n","import {MainException} from 'common/exception/MainException';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class InternalException extends MainException implements ExceptionContract {\n public constructor(message: string, data?: {[key: string]: any}) {\n super(message, 500, data);\n this.name = 'InternalException';\n }\n}\n","import {MainException} from 'common/exception/MainException';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class ObjectNotFoundException extends MainException implements ExceptionContract {\n public constructor(message: string, data?: {[key: string]: any}) {\n super(message, 404, data);\n this.name = 'ObjectNotFoundException';\n }\n}\n","import {MainException} from 'common/exception/MainException';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class PageNotFoundException extends MainException implements ExceptionContract {\n public constructor(message: string, data?: {[key: string]: any}) {\n super(message, 404, data);\n this.name = 'PageNotFoundException';\n }\n}\n","import {MainException} from 'common/exception/MainException';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\n\nexport class UnauthorizedException extends MainException implements ExceptionContract {\n public static readonly ERROR_CODE: number = 401;\n\n public constructor(message: string, data?: {[key: string]: any}) {\n super(message, UnauthorizedException.ERROR_CODE, data);\n this.name = 'UnauthorizedException';\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"crypto\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"express\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"cors\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"helmet\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"connect-timeout\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@sentry/node\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@sentry/integrations\");","/* eslint-disable no-shadow */\nexport enum Env {\n PRODUCTION = 'prod',\n DEVELOPMENT = 'dev',\n TEST = 'test'\n}\n","import {Env} from 'common/tool/Env';\n\nexport class Environment {\n public static getMode(): Env {\n switch (process.env.NODE_ENV) {\n case 'dev':\n case 'development':\n return Env.DEVELOPMENT;\n case 'prod':\n case 'production':\n return Env.PRODUCTION;\n case 'test':\n return Env.TEST;\n }\n\n return process.env.APP_ID === undefined ? Env.DEVELOPMENT : Env.PRODUCTION;\n }\n}\n","import * as Sentry from '@sentry/node';\nimport { CaptureConsole } from '@sentry/integrations';\nimport {Environment} from 'common/tool/Environment';\nimport {ExceptionContract} from 'common/exception/ExceptionContract';\nimport {UnauthorizedException} from 'common/exception/UnauthorizedException';\nimport {Env} from 'common/tool/Env';\n\nexport class Logger {\n public static init(sentryToken: string): void {\n if (Environment.getMode() === Env.PRODUCTION) {\n Sentry.init({\n dsn: sentryToken,\n integrations: [\n new CaptureConsole({\n levels: ['error', 'warn', 'log']\n })\n ],\n environment: Environment.getMode(),\n maxBreadcrumbs: 50\n });\n }\n }\n\n public static trace(message: string, extra?: any): void {\n if ([Env.DEVELOPMENT, Env.TEST].includes(Environment.getMode())) {\n if (extra === undefined) {\n console.info(message); // eslint-disable-line no-console\n } else {\n console.info(message, extra); // eslint-disable-line no-console\n }\n }\n Sentry.addBreadcrumb({\n category: 'info',\n message: message,\n data: extra,\n level: Sentry.Severity.Info\n });\n }\n\n public static debug(message: string, extra?: any): void {\n if ([Env.DEVELOPMENT, Env.TEST].includes(Environment.getMode())) {\n if (extra === undefined) {\n console.log(message); // eslint-disable-line no-console\n } else {\n console.log(message, extra); // eslint-disable-line no-console\n }\n }\n Sentry.addBreadcrumb({\n category: 'debug',\n message: message,\n data: extra,\n level: Sentry.Severity.Debug\n });\n }\n\n public static info(message: string, extra?: any): void {\n if ([Env.DEVELOPMENT, Env.TEST].includes(Environment.getMode())) {\n if (extra === undefined) {\n console.info(message); // eslint-disable-line no-console\n } else {\n console.info(message, extra); // eslint-disable-line no-console\n }\n }\n Sentry.withScope(scope => {\n if (extra !== undefined) {\n scope.setExtra('extra', JSON.stringify(extra));\n }\n Sentry.captureMessage(message);\n });\n }\n\n public static warning(error: ExceptionContract, extra?: any): void {\n if ([Env.DEVELOPMENT, Env.TEST].includes(Environment.getMode())) {\n if (extra === undefined) {\n console.warn(error); // eslint-disable-line no-console\n } else {\n console.warn(error, extra); // eslint-disable-line no-console\n }\n }\n Sentry.withScope(scope => {\n if (extra !== undefined) {\n scope.setExtra('extra', JSON.stringify(extra));\n }\n if (error.data !== undefined) {\n scope.setExtra('data', JSON.stringify(error.data));\n }\n Sentry.captureException(error);\n });\n }\n\n public static error(error: ExceptionContract, extra?: any): void {\n if ([UnauthorizedException.ERROR_CODE].includes(error.code)) {\n return;\n }\n if ([Env.DEVELOPMENT, Env.TEST].includes(Environment.getMode())) {\n if (extra === undefined) {\n console.error(error); // eslint-disable-line no-console\n } else {\n console.error(error, extra); // eslint-disable-line no-console\n }\n }\n Sentry.withScope(scope => {\n if (extra !== undefined) {\n scope.setExtra('extra', JSON.stringify(extra));\n }\n if (error.data !== undefined) {\n scope.setExtra('data', JSON.stringify(error.data));\n }\n Sentry.captureException(error);\n });\n }\n\n public static requestHandler(): any {\n return Sentry.Handlers.requestHandler();\n }\n\n public static errorHandler(): any {\n return Sentry.Handlers.errorHandler();\n }\n}\n","import * as crypto from 'crypto';\nimport * as express from 'express';\nimport * as cors from 'cors';\nimport * as helmet from 'helmet';\nimport * as timeout from 'connect-timeout';\nimport {ServerContract} from 'common/http/ServerContract';\nimport {Logger} from 'common/tool/Logger';\n\nexport class Server implements ServerContract {\n public static readonly DEFAULT_PORT: number = 8080;\n public static readonly SALT: string = '03561b4a0fe7f125025';\n private app: express.Express;\n\n public async create(origins: string[], port?: number): Promise<express.Express> {\n if (this.app === undefined) {\n const backendPort: number = port || Server.DEFAULT_PORT;\n const backendLocalUrl: string = 'http://localhost:' + String(backendPort);\n Logger.debug('start server on ' + backendLocalUrl);\n this.app = express();\n this.app.use(timeout('60s'));\n this.app.use(express.json({\n inflate: true,\n limit: '100kb',\n reviver: null,\n strict: true,\n type: 'application/json',\n verify: undefined\n }));\n this.app.use(cors({\n origin: [backendLocalUrl].concat(origins),\n credentials: true\n }));\n this.app.use(helmet());\n this.app.use(express.json());\n this.app.listen(backendPort, () => {\n Logger.debug('server is running on ' + backendLocalUrl);\n });\n }\n\n return this.app;\n }\n\n public getSessionSecret(sessionCookieName: string): string {\n return crypto.createHash('sha1').update(sessionCookieName + Server.SALT).digest('hex');\n }\n}\n","import * as express from 'express';\nimport {Logger} from 'common/tool/Logger';\n\nexport class HandlerController {\n public static error(_request: express.Request, response: express.Response, error: any): any {\n Logger.error(error);\n const code: number = error.code !== undefined && error.code !== null ? Number(error.code) : 500;\n response.status(!isNaN(code) && Number(error.code) >= 400 && Number(error.code) <= 599 ? Number(error.code) : 500);\n response.json({code: error.code, message: error.message});\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"axios\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"luxon\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"querystring\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"retry\");","import * as retry from 'retry';\nimport {Logger} from 'common/tool/Logger';\n\nexport class Retry {\n public static async request(process: () => Promise<void>, retries: number = 2): Promise<any> {\n const operation = retry.operation({\n retries: retries,\n factor: 1,\n minTimeout: 0,\n maxTimeout: 0,\n randomize: false\n });\n\n return new Promise<any>((resolve, reject) => {\n operation.attempt(() => {\n process().then(resolve).catch((error) => {\n if (!operation.retry(error)) {\n Logger.error(error);\n reject(error);\n }\n });\n });\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"urlencode\");","import axios from 'axios';\nimport {DateTime} from 'luxon';\nimport * as querystring from 'querystring';\nimport {SmsSenderServiceContract} from 'common/service/sender/SmsSenderServiceContract';\nimport {ExternalApiException} from 'common/exception/ExternalApiException';\nimport {Retry} from 'common/tool/Retry';\nimport {Logger} from 'common/tool/Logger';\nimport {Environment} from 'common/tool/Environment';\nimport * as urlencode from 'urlencode';\nimport {BadParameterException} from 'common/exception/BadParameterException';\nimport {Env} from 'common/tool/Env';\n\nexport class SmsSenderService implements SmsSenderServiceContract {\n public static readonly BASE_API_URL: string = 'https://api.smsmode.com/http/1.6/';\n public static readonly MESSAGE_MAX_LENGTH: number = 150;\n private readonly token: string;\n private readonly mode: Environment;\n\n public constructor(token: string, mode: Environment) {\n this.token = token;\n this.mode = mode;\n }\n\n public async send(senderName: string, message: string, rawPhones: string[], isCommercial: boolean = true, sendAt?: string): Promise<void> {\n let phones: string[] = this.checkPhoneFormat(rawPhones);\n if (phones.length === 0) {\n Logger.warning(new BadParameterException('no valid phone', {phones: rawPhones}));\n\n return Promise.resolve();\n }\n\n if (phones.length > 1) {\n if (message.length > SmsSenderService.MESSAGE_MAX_LENGTH * 2) {\n message = message.substring(0, SmsSenderService.MESSAGE_MAX_LENGTH * 2);\n } else if (message.length > SmsSenderService.MESSAGE_MAX_LENGTH && message.length <= SmsSenderService.MESSAGE_MAX_LENGTH * 1.33) {\n message = message.substring(0, SmsSenderService.MESSAGE_MAX_LENGTH);\n }\n }\n\n await Retry.request(async () => {\n const params: {[param: string]: any} = {\n accessToken: this.token,\n emetteur: senderName,\n message: urlencode(message, 'ISO-8859-15'),\n numero: phones.map((phone) => phone.replace('+', '')).join(','),\n classe_msg: 2,\n nbr_msg: Math.ceil(message.length / SmsSenderService.MESSAGE_MAX_LENGTH)\n };\n\n if (isCommercial) {\n params.stop = 1;\n }\n\n if (sendAt !== undefined) {\n params.date_envoi = DateTime.fromISO(sendAt, { setZone: true }).toFormat('ddMMyyyy-HH:mm');\n }\n\n if (this.mode === Env.TEST) {\n Logger.info('Simulation Mode: SMS has been sent', {params: params});\n } else {\n if (this.mode === Env.DEVELOPMENT) {\n phones = ['+15145705214'];\n }\n\n const response: {data: string} = await axios.post(SmsSenderService.BASE_API_URL + 'sendSMS.do',\n querystring.stringify(params, '&', '=', {encodeURIComponent: (p) => p}), {\n timeout: 30000\n });\n\n if (response.data.length > 0 && response.data.trim().substring(0, 1) !== '0') {\n throw new ExternalApiException('Error: ' + response.data, params);\n }\n }\n }, 1);\n }\n\n private checkPhoneFormat(phones: string[]): string[] {\n const caRegex: RegExp = new RegExp('^\\\\+1[0-9]{10}$', 'i');\n const frRegex: RegExp = new RegExp('^\\\\+33(6|7)[0-9]{8}$', 'i');\n const usRegex: RegExp = new RegExp('^\\\\+1[0-9]{10}$', 'i');\n\n return phones.filter((phone) => caRegex.test(phone) || frRegex.test(phone) || usRegex.test(phone));\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"path\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"mustache\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"fs\");","import * as fs from 'fs';\nimport {FileSystemContract} from 'common/tool/FileSystemContract';\nimport {BadParameterException} from 'common/exception/BadParameterException';\n\nexport class FileSystem implements FileSystemContract {\n public async read(filePath: string): Promise<string> {\n if (!this.isFile(filePath)) {\n throw new BadParameterException(filePath + ' does not exist or is not a file');\n }\n\n return fs.readFileSync(filePath, 'utf8');\n }\n\n public async readJson(jsonPath: string): Promise<any> {\n const data: any = await this.read(jsonPath);\n if (!this.isJson(data)) {\n throw new BadParameterException(jsonPath + ' does not contain JSON');\n }\n\n return JSON.parse(data);\n }\n\n public async write(filePath: string, rawData: any): Promise<void> {\n let data: string = '';\n if (typeof rawData === 'string') {\n data = String(rawData);\n } else if (typeof rawData === 'number') {\n data = String(rawData);\n } else {\n data = JSON.stringify(rawData);\n }\n\n fs.writeFileSync(filePath, data, {encoding: 'utf8'});\n\n return Promise.resolve();\n }\n\n public async writeJson(jsonPath: string, data: any): Promise<void> {\n return this.write(jsonPath, JSON.stringify(data));\n }\n\n private isFile(filePath: string): boolean {\n return fs.existsSync(filePath) && fs.statSync(filePath).isFile();\n }\n\n private isJson(data: any): boolean {\n try {\n JSON.parse(data);\n\n return true;\n } catch (_error) {\n return false;\n }\n }\n}\n","export const asyncForEach: (array: any[], callback: (item: any) => Promise<void>) => Promise<void> = async (array, callback) => {\n for (let i: number = 0; i < array.length; i++) { // eslint-disable-line\n await callback(array[i]);\n }\n};\n","import * as path from 'path';\nimport {parse, render} from 'mustache';\nimport {cloneDeep} from 'lodash';\nimport {TemplateEngineContract} from 'common/templating/TemplateEngineContract';\nimport {FileSystem} from 'common/tool/FileSystem';\nimport {asyncForEach} from 'common/util/PromiseUtil';\n\nexport class TemplateEngine implements TemplateEngineContract {\n public async render(templatePath: string, data: {[key: string]: any}, baseIncludePath?: string): Promise<string> {\n if (!templatePath.endsWith('.template')) {\n templatePath += '.template';\n }\n const view: {[key: string]: any} = cloneDeep(data);\n const basePath: string = path.isAbsolute(templatePath) ? '' : __dirname + path.sep;\n const fileSystem = new FileSystem();\n const content: string = await fileSystem.read(basePath + templatePath);\n\n const includes: string[] = [];\n const results: any[][] = parse(content);\n results.forEach((result) => {\n if (result.length >= 4 && result[0] === '&' && result[1].startsWith('include:')) {\n includes.push(result[1]);\n }\n });\n\n if (includes.length > 0) {\n if (baseIncludePath === undefined) {\n baseIncludePath = path.dirname(basePath + templatePath) + path.sep;\n } else if (!path.isAbsolute(baseIncludePath)) {\n baseIncludePath = basePath + baseIncludePath;\n }\n await asyncForEach(includes, async (include) => {\n const includeParts: string[] = include.split(':');\n if (includeParts.length === 3) {\n const templateName: string = includeParts[2];\n view[include] = await this.render(path.resolve(baseIncludePath, templateName), view[include]);\n }\n });\n }\n\n return render(content, view);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"node-mailjet\");","import {EmailSenderServiceContract} from 'common/service/sender/EmailSenderServiceContract';\nimport {TemplateEngine} from 'common/templating/TemplateEngine';\nimport {TemplateEngineContract} from 'common/templating/TemplateEngineContract';\nimport {ViewEmailTrackDeliveryContract} from 'common/templating/view/email/ViewEmailTrackDeliveryContract';\nimport {RecipientContract} from 'common/service/sender/RecipientContract';\nimport {SenderContract} from 'common/service/sender/SenderContract';\nimport * as Mailjet from 'node-mailjet';\nimport {MainException} from 'common/exception/MainException';\nimport {Retry} from 'common/tool/Retry';\nimport {Environment} from 'common/tool/Environment';\nimport {Env} from 'common/tool/Env';\nimport {Logger} from 'common/tool/Logger';\nimport {ViewEmailUserNotificationContract} from 'common/templating/view/email/ViewEmailUserNotificationContract';\n\nexport class EmailSenderService implements EmailSenderServiceContract {\n private readonly templateEngine: TemplateEngineContract;\n private readonly mailjet: any;\n private readonly mode: Environment;\n\n public constructor(apiPublicKey: string, apiSecretKey: string, mode: Environment) {\n this.templateEngine = new TemplateEngine();\n this.mailjet = Mailjet.connect(apiPublicKey, apiSecretKey);\n this.mode = mode;\n }\n\n public async sendDeliveryDelay(sender: SenderContract, recipient: RecipientContract, data: ViewEmailTrackDeliveryContract): Promise<void> {\n return await Retry.request(async () => {\n if (data.base.copyright === undefined) {\n data.base.copyright = {\n year: String((new Date()).getUTCFullYear())\n };\n }\n const text: string = await this.templateEngine.render('data/email/template/deliveryDelay', data, 'data/email/element/text');\n const html: string = await this.templateEngine.render('data/email/template/deliveryDelay', data, 'data/email/element/html');\n\n return await this.sendNotification(sender, recipient, data.base.subject, text, html);\n }, 1);\n }\n\n public async sendTrackDelivery(sender: SenderContract, recipient: RecipientContract, data: ViewEmailTrackDeliveryContract): Promise<void> {\n return await Retry.request(async () => {\n const textContent: string = await this.templateEngine.render('data/email/template/trackDelivery', data, 'data/email/element/text');\n const text: string = await this.templateEngine.render('data/email/element/text/index', {content: textContent, base: data.base});\n const htmlContent: string = await this.templateEngine.render('data/email/template/trackDelivery', data, 'data/email/element/html');\n const html: string = await this.templateEngine.render('data/email/element/html/index', {content: htmlContent, base: data.base});\n\n return await this.sendNotification(sender, recipient, data.base.subject, text, html);\n }, 1);\n }\n\n public async sendUserNotification(sender: SenderContract, recipient: RecipientContract, data: ViewEmailUserNotificationContract): Promise<void> {\n return await Retry.request(async () => {\n const textContent: string = await this.templateEngine.render('data/email/template/userNotification', data, 'data/email/element/text');\n const text: string = await this.templateEngine.render('data/email/element/text/index', {content: textContent, base: data.base});\n const htmlContent: string = await this.templateEngine.render('data/email/template/userNotification', data, 'data/email/element/html');\n const html: string = await this.templateEngine.render('data/email/element/html/index', {content: htmlContent, base: data.base});\n\n return await this.sendNotification(sender, recipient, data.base.subject, text, html);\n }, 1);\n }\n\n // private async sendCampaign(sender: SenderContract, recipients: RecipientContract[], subject: string, text: string, html: string): Promise<void> {\n // try {\n // await this.mailjet.post('send').request({\n // FromEmail: sender.contact,\n // FromName: sender.name,\n // Subject: subject,\n // 'Text-part': text,\n // 'Html-part': html,\n // Recipients: [\n // recipients.map((recipient) => {\n // return { Name: recipient.name, Email: recipient.contact };\n // }),\n // ],\n // });\n //\n // return Promise.resolve();\n // } catch (error) {\n // return Promise.reject(new MainException(error.message, Number(error.statusCode)));\n // }\n // }\n\n private async sendNotification(sender: SenderContract, recipient: RecipientContract, subject: string, text: string, html: string): Promise<void> {\n try {\n if (this.mode === Env.TEST) {\n Logger.info('Simulation Mode: Email has been sent', {sender: sender, recipient: recipient});\n } else {\n if (this.mode === Env.DEVELOPMENT) {\n recipient.contact = 'developer@onylab.com';\n }\n\n await this.mailjet.post('send', {'version': 'v3.1'})\n .request({\n 'Messages': [\n {\n 'From': {\n 'Name': sender.name,\n 'Email': sender.contact\n },\n 'To': [{\n 'Name': recipient.name,\n 'Email': recipient.contact\n }],\n 'Subject': subject,\n 'TextPart': text,\n 'HTMLPart': html\n }\n ]\n });\n }\n } catch (error) {\n throw new MainException(error.message, Number(error.statusCode));\n }\n }\n}\n","import {ConfigurationContract} from 'common/tool/ConfigurationContract';\nimport {FileSystemContract} from 'common/tool/FileSystemContract';\nimport {FileSystem} from 'common/tool/FileSystem';\nimport {Env} from 'common/tool/Env';\n\nexport class Configuration implements ConfigurationContract {\n private root: string;\n private environment: Env;\n private config: any;\n\n public constructor(root: string, environment?: Env) {\n this.root = root;\n this.environment = environment;\n }\n\n public async full(): Promise<any> {\n await this.init();\n\n return this.config;\n }\n\n private async init(): Promise<void> {\n if (this.config === undefined) {\n if (this.root === undefined) {\n this.config = {};\n } else {\n const filesystem: FileSystemContract = new FileSystem();\n if ([Env.DEVELOPMENT, Env.TEST].includes(this.environment)) {\n try {\n this.config = await filesystem.readJson(this.root + 'data/config_' + String(this.environment) + '.json');\n } catch (_e) {\n // nothing\n }\n }\n\n if (this.config === undefined) {\n this.config = await filesystem.readJson(this.root + 'data/config.json');\n }\n }\n }\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"typeorm\");","import {Connection, createConnection} from 'typeorm';\nimport {DatabaseContract} from 'common/tool/DatabaseContract';\nimport {FileSystem} from 'common/tool/FileSystem';\nimport {FileSystemContract} from 'common/tool/FileSystemContract';\nimport {BadParameterException} from 'common/exception/BadParameterException';\nimport {Logger} from 'common/tool/Logger';\n\n// TypeORM documation, types: https://github.com/typeorm/typeorm/blob/master/src/driver/types/ColumnTypes.ts\nexport class Database implements DatabaseContract {\n private root: string;\n private db: any;\n private connection: Connection;\n\n public constructor(root: string) {\n this.root = root;\n }\n\n public async connect(name: string, entities: any[]): Promise<void> {\n if (this.db === undefined) {\n await this.init();\n }\n\n const con: any = this.db[name];\n if (con !== undefined) {\n con.entities = entities;\n con.logging = ['error'];\n con.logger = true;\n con.bigNumberStrings = false;\n if (con.timezone === undefined) {\n con.timezone = 'Z';\n }\n if (con.charset === undefined) {\n con.charset = 'UTF8_GENERAL_CI';\n }\n this.connection = await createConnection(con);\n } else {\n Logger.error(new BadParameterException('bad connection name'));\n }\n }\n\n public async synchronize(): Promise<void> {\n if (this.connection !== undefined) {\n await this.connection.synchronize();\n }\n }\n\n public async close(): Promise<void> {\n return this.connection.close();\n }\n\n private async init(): Promise<void> {\n if (this.root === undefined) {\n this.db = {};\n } else {\n const fileSystem: FileSystemContract = new FileSystem();\n this.db = await fileSystem.readJson(this.root + 'data/db.json');\n }\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"prettyjson\");","import * as prettyjson from 'prettyjson';\nimport {DisplayerContract} from 'common/tool/DisplayerContract';\nimport {Logger} from 'common/tool/Logger';\n\nexport class Displayer implements DisplayerContract {\n public error(error: Error): void {\n Logger.error(error);\n }\n\n public info(message: string): void {\n Logger.trace(message);\n }\n\n public json(json: any): void {\n Logger.trace(prettyjson.render(json, {}));\n }\n\n public success(message: string): void {\n Logger.trace(message);\n }\n}\n","export const isNullOrUndefined: (obj: unknown) => boolean = (obj) => {\n return obj === undefined || obj === null;\n};\n","export class ValidatorUtil {\n public static isEmail(email: string): boolean {\n if (typeof email !== 'string') {\n return false;\n }\n\n return (new RegExp('^[a-zA-Z0-9\\\\.!#$%&*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\\\.[a-zA-Z0-9-]+)*$', 'i')).test(email);\n }\n\n public static isPhone(phone: string): boolean {\n if (typeof phone !== 'string') {\n return false;\n }\n\n return (new RegExp('^([\\+\\\\s0-9]{10,}(#[0-9]+)?)$')).test(phone);\n }\n\n public static isNumber(number: string | number): boolean {\n if (typeof number === 'number') {\n return true;\n }\n\n if (typeof number !== 'string') {\n return false;\n }\n\n return (new RegExp('^\\-?[0-9]+\\\\.?[0-9]*$')).test(number);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"fast-diff\");","import {deburr, toLower, trim} from 'lodash';\nimport {isNullOrUndefined} from 'common/util/HelperUtil';\n\nexport class StringUtil {\n // alternative https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\n public static escapeRegExp(str: string): string {\n if (typeof str !== 'string') {\n return str;\n }\n\n return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&'); // and .replace(/-/g, '\\\\x2d');\n }\n\n public static truncate(str: string, limit: number): string {\n if (isNullOrUndefined(str) || str.length <= limit) {\n return str;\n }\n\n if (limit <= 3) {\n return '';\n }\n\n return str.slice(0, limit - 3) + '...';\n }\n\n public static slugify(raw: string, separator?: string): string {\n if (raw === undefined) {\n return '';\n }\n\n return toLower(trim(deburr(raw)).replace(/[^0-9a-z\\-\\_]/gi, separator));\n }\n}\n","import {isNullOrUndefined} from 'common/util/HelperUtil';\nimport {ValidatorUtil} from 'common/util/ValidatorUtil';\nimport * as diff from 'fast-diff';\nimport {StringUtil} from 'common/util/StringUtil';\n\nexport class AddressUtil {\n private static readonly ZIPCODES: string[] = [\n '78500', '78600', '78800', '95240', '95530',\n '78630', '78670', '78240', '78580', '78300',\n '95150', '95250', '95480', '95320', '95550'\n ];\n private static readonly CITIES: string[] = [\n 'Sartrouville', 'Cormeilles-en-Parisis', 'Houilles', 'Maisons-Laffitte', 'La Frette-sur-Seine', 'Argenteuil', 'Montesson', 'Le Mesnil-le-Roi', 'Bezons',\n 'Orgeval', 'Poissy', 'Morainvilliers', 'Villennes-sur-Seine', 'Medan', 'Chambourcy', 'Aigremont', 'Les Alluets-le-Roi',\n 'Taverny', 'Beauchamp', 'Pierrelaye', 'Saint-Leu-la-Forêt', 'Bessancourt'\n ];\n private static readonly COUNTRIES: string[] = ['France'];\n\n public static autoCorrectCity(city: string): string {\n if (isNullOrUndefined(city)) {\n return city;\n }\n\n if (city.toLowerCase().startsWith('st-') || city.toLowerCase().startsWith('st ')) {\n city = 'Saint ' + city.substring(3);\n }\n\n const exactMatch: string = AddressUtil.CITIES.find((c) => c.toLowerCase() === city.toLowerCase());\n if (exactMatch !== undefined) {\n return exactMatch;\n }\n\n const partialMatch: string = AddressUtil.CITIES.find((c) => {\n const result: {add: number, remove: number} = AddressUtil.countDiff(city, c);\n\n return result.add <= 2 && result.remove <= 2;\n });\n if (partialMatch !== undefined) {\n return partialMatch;\n }\n\n const matchNoDash: string = AddressUtil.CITIES.find((c) => c.replace(/-/g, ' ').toLowerCase() === city.toLowerCase());\n if (matchNoDash !== undefined) {\n return matchNoDash;\n }\n\n const partialMatchNoDash: string = AddressUtil.CITIES.find((c) => {\n const result: {add: number, remove: number} = AddressUtil.countDiff(city, c.replace(/-/g, ' '));\n\n return result.add <= 2 && result.remove <= 2;\n });\n if (partialMatchNoDash !== undefined) {\n return partialMatchNoDash;\n }\n\n const startsWith: string = AddressUtil.CITIES.find((c) => c.toLowerCase().startsWith(city.toLowerCase()));\n if (startsWith !== undefined) {\n return startsWith;\n }\n\n const isIncluded: string = AddressUtil.CITIES.find((c) => city.toLowerCase().includes(c.toLowerCase()));\n if (isIncluded !== undefined) {\n return isIncluded;\n }\n\n return city;\n }\n\n public static isZipCode(zip: string): boolean {\n if (typeof zip !== 'string') {\n return false;\n }\n\n if (AddressUtil.ZIPCODES.includes(zip)) {\n return true;\n }\n\n return ValidatorUtil.isNumber(zip) && zip.length === 5 && !zip.includes('.') && !zip.includes('-');\n }\n\n public static parse(raw: string): { street?: string, zip?: string, city?: string, country?: string } {\n const address: { street?: string, zip?: string, city?: string, country?: string } = {};\n if (!isNullOrUndefined(raw)) {\n const rawAddressParts: string[] = raw.split(',');\n if (rawAddressParts.length >= 3) {\n let i: number = rawAddressParts.length - 1;\n address.country = rawAddressParts[i].trim();\n rawAddressParts.splice(i--, 1);\n if (rawAddressParts[i] !== undefined && rawAddressParts[i].trim().includes(' ')) {\n const rawParts: string[] = rawAddressParts[i].trim().split(' ');\n address.zip = rawParts[0] === undefined ? undefined : rawParts[0].trim();\n rawParts.splice(0, 1);\n address.city = rawParts.join(' ').trim();\n rawAddressParts.splice(i--, 1);\n } else if (!isNaN(Number(rawAddressParts[i].trim()))) {\n address.zip = rawAddressParts[i].trim();\n rawAddressParts.splice(i--, 1);\n if (i >= 2) {\n address.city = rawAddressParts[i].trim();\n rawAddressParts.splice(i--, 1);\n }\n } else if (!isNaN(Number(rawAddressParts[i - 1].trim()))) {\n address.city = rawAddressParts[i].trim();\n rawAddressParts.splice(i--, 1);\n address.zip = rawAddressParts[i].trim();\n rawAddressParts.splice(i--, 1);\n } else {\n address.city = rawAddressParts[i].trim();\n rawAddressParts.splice(i--, 1);\n }\n address.street = rawAddressParts.map((part) => part.trim()).join(' ').trim();\n } else {\n let rawAddress: string = raw.toLowerCase();\n AddressUtil.ZIPCODES.forEach((zipcode) => {\n if (rawAddress.includes(zipcode)) {\n address.zip = zipcode;\n try {\n rawAddress = rawAddress.replace(new RegExp(StringUtil.escapeRegExp(zipcode), 'ig'), '');\n } catch (_e) {\n // ignore\n }\n }\n });\n AddressUtil.CITIES.forEach((city) => {\n if (rawAddress.includes(city.toLowerCase())) {\n address.city = city;\n try {\n rawAddress = rawAddress.replace(new RegExp(StringUtil.escapeRegExp(city), 'ig'), '');\n } catch (_e) {\n // ignore\n }\n }\n });\n AddressUtil.COUNTRIES.forEach((country) => {\n if (rawAddress.includes(country.toLowerCase())) {\n address.country = country;\n try {\n rawAddress = rawAddress.replace(new RegExp(StringUtil.escapeRegExp(country), 'ig'), '');\n } catch (_e) {\n // ignore\n }\n }\n });\n\n if (address.street === undefined) {\n address.street = rawAddress.split(',').map((part) => part.trim()).join(' ').trim();\n }\n }\n\n if (address.country === undefined) {\n address.country = 'France';\n }\n }\n\n return address;\n }\n\n private static countDiff(str: string, reference: string): { add: number, remove: number } {\n const result: { add: number, remove: number } = { add: 0, remove: 0 };\n\n diff(str.toLowerCase(), reference.toLowerCase()).forEach((value) => {\n switch (value[0]) {\n case -1:\n result.remove += value[1].length;\n break;\n case 1:\n result.add += value[1].length;\n break;\n }\n });\n\n return result;\n }\n}\n","import {DateTime} from 'luxon';\nimport {cloneDeep} from 'lodash';\n\nexport class DateUtil {\n private static readonly PERIOD_MAX_DATES: number = 90;\n private static readonly WEEK_DAYS: {[id: number]: string} = {1: 'lundi', 2: 'mardi', 3: 'mercredi', 4: 'jeudi', 5: 'vendredi', 6: 'samedi', 7: 'dimanche'};\n\n public static displayWeekDay(weekDay: number): string {\n let displayWeekDay: string = '';\n if (DateUtil.WEEK_DAYS[weekDay] !== undefined) {\n displayWeekDay = DateUtil.WEEK_DAYS[weekDay];\n }\n\n return displayWeekDay;\n }\n\n public static generatePeriod(fromDate: string, toDate: string, initialValue: Record<string, any>, addDate: boolean = true, MAX_DAYS: number = DateUtil.PERIOD_MAX_DATES):\n {[date: string]: Record<string, any>} {\n let cursor: string = DateTime.fromISO(fromDate, {setZone: true}).toISODate();\n const stop: string = DateTime.fromISO(toDate, {setZone: true}).toISODate();\n let i: number = 0;\n const data: {[date: string]: Record<string, any>} = {};\n while (cursor <= stop && i < MAX_DAYS) {\n data[cursor] = cloneDeep(initialValue);\n if (addDate) {\n data[cursor].date = cursor;\n }\n cursor = DateTime.fromISO(cursor, {setZone: true}).plus({days: 1}).toISODate();\n i++;\n }\n\n return data;\n }\n\n public static limitDate(targetDate: string, baseDate: string, limitInSeconds: number = 0): string {\n if (targetDate === undefined || baseDate === undefined) {\n return undefined;\n }\n\n const target: string = DateTime.fromISO(targetDate, {setZone: true}).toISO();\n const limit: string = DateTime.fromISO(baseDate, {setZone: true}).plus({seconds: limitInSeconds}).toISO();\n\n return target > limit ? limit : target;\n }\n\n public static localeToISO(localeDate: string): string {\n const frFormat1: RegExp = new RegExp('[0-9]{2}/[0-9]{2}/[0-9]{4}');\n const frFormat2: RegExp = new RegExp('[0-9]{2}-[0-9]{2}-[0-9]{4}');\n const isoFormat: RegExp = new RegExp('[0-9]{4}-[0-9]{2}-[0-9]{2}');\n\n let isoDate: string;\n if (frFormat1.test(localeDate)) {\n const parts: string[] = localeDate.split('/');\n isoDate = parts[2] + '-' + parts[1] + '-' + parts[0];\n } else if (frFormat2.test(localeDate)) {\n const parts: string[] = localeDate.split('-');\n isoDate = parts[2] + '-' + parts[1] + '-' + parts[0];\n } else if (isoFormat.test(localeDate)) {\n isoDate = localeDate;\n }\n\n return isoDate;\n }\n\n public static slotToTime(timeSlot: string): string {\n const timeFormat: RegExp = new RegExp('^(\\\\s)?[0-9]{2}:[0-9]{2}(\\\\s)?$');\n const slotFormat: RegExp = new RegExp('^(\\\\s)?[0-9]{2}:[0-9]{2}(\\\\s)?-(\\\\s)?[0-9]{2}:[0-9]{2}(\\\\s)?$');\n\n timeSlot = timeSlot.trim();\n\n let time: string;\n if (timeFormat.test(timeSlot)) {\n time = timeSlot.trim() + ':00';\n } else if (slotFormat.test(timeSlot)) {\n const parts: string[] = timeSlot.split('-');\n time = parts[0].trim() + ':00';\n }\n\n return time;\n }\n\n public static round(date: string, roundingInMs: number = 0): string {\n if (typeof date !== 'string') {\n return date;\n }\n\n const dateTime: DateTime = DateTime.fromISO(date, {setZone: true});\n\n return DateTime.fromMillis(Math.round((+dateTime.toMillis()) / roundingInMs) * roundingInMs).setZone(dateTime.zone).toISO();\n }\n}\n","export class ExtractorUtil {\n public static phone(raw: string, locale: 'fr'): string {\n if (typeof raw !== 'string') {\n return undefined;\n }\n\n raw = raw.trim().replace(/\\s?\\.?\\-?\\(?\\)?/g, '');\n switch (locale) {\n case 'fr': {\n const phoneFrRegex: RegExp = new RegExp('(0[6-7][0-9]{8})', 'i');\n const result: string[] = phoneFrRegex.exec(raw);\n if (result !== null && result.length > 0 && result[0] !== null) {\n return result[0];\n }\n }\n }\n\n return undefined;\n }\n}\n","import {StringUtil} from 'common/util/StringUtil';\n\nexport class FormatterUtil {\n public static trim(raw: string): string {\n return typeof raw === 'string' ? raw.trim() : raw;\n }\n\n public static capitalize(raw: string): string {\n const lowraw: string = FormatterUtil.lower(raw);\n\n return typeof lowraw === 'string' ? lowraw.split(' ').map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join (' ') : raw;\n }\n\n public static lower(raw: string): string {\n return typeof raw === 'string' ? raw.toLocaleLowerCase() : raw;\n }\n\n public static upper(raw: string): string {\n return typeof raw === 'string' ? raw.toLocaleUpperCase() : raw;\n }\n\n public static phone(raw: string, locale: string, output: 'nat' | 'int' = 'nat'): string {\n if (typeof raw === 'string') {\n raw = FormatterUtil.preformatPhone(raw, locale);\n switch (output) {\n case 'nat': // national\n return FormatterUtil.phoneNat(raw, locale);\n break;\n case 'int': // international\n return FormatterUtil.phoneInt(raw, locale);\n break;\n }\n }\n\n return raw;\n }\n\n public static stripEmoji(raw: string): string {\n let output: string = raw;\n\n if (typeof output === 'string') {\n const emojiRegex = require('emoji-regex/RGI_Emoji.js'); /* eslint-disable-line @typescript-eslint/no-var-requires */\n const regex: RegExp = emojiRegex();\n\n let match;\n while ((match = regex.exec(output)) !== null) {\n try {\n output = output.replace(new RegExp('\\\\s' + StringUtil.escapeRegExp(match[0]), 'g'), '');\n output = output.replace(new RegExp(StringUtil.escapeRegExp(match[0]) + '\\\\s', 'g'), '');\n output = output.replace(new RegExp(StringUtil.escapeRegExp(match[0]), 'g'), '');\n } catch (_e) {\n // ignore\n }\n }\n while ((match = regex.exec(output)) !== null) {\n try {\n output = output.replace(new RegExp('\\\\s' + StringUtil.escapeRegExp(match[0]), 'g'), '');\n output = output.replace(new RegExp(StringUtil.escapeRegExp(match[0]) + '\\\\s', 'g'), '');\n output = output.replace(new RegExp(StringUtil.escapeRegExp(match[0]), 'g'), '');\n } catch (_e) {\n // ignore\n }\n }\n }\n\n return output;\n }\n\n public static stripExoticCharacters(raw: string): string {\n if (typeof raw === 'string') {\n return raw.replace('’', '\\'').replace(/[\\u0250-\\ue007]+/g, '*');\n }\n\n return raw;\n }\n\n private static preformatPhone(raw: string, locale: string): string {\n raw = raw.trim().replace(/\\s?\\.?\\-?\\(?\\)?/g, '');\n switch (locale) {\n case 'fr':\n if ((new RegExp('^[1-9]')).test(raw) && raw.length === 9) {\n return '0' + raw;\n }\n break;\n }\n\n return raw;\n }\n\n private static phoneNat(raw: string, locale: string): string {\n switch (locale) {\n case 'fr': // format: 06 11 22 33 44\n if (raw.startsWith('+330')) {\n raw = raw.substr(3);\n } else if (raw.startsWith('+33')) {\n raw = '0' + raw.substr(3);\n } else if (raw.startsWith('0033')) {\n raw = '0' + raw.substr(4);\n } else if (raw.startsWith('33') && raw.length === 11) {\n raw = '0' + raw.substr(2);\n }\n\n if (raw.length === 10) {\n let i: number = 0;\n raw = raw.split('').map((num) => {\n i++;\n\n return num + (i % 2 === 0 ? ' ' : '');\n }).join('').trim();\n }\n\n return raw;\n break;\n }\n\n return raw;\n }\n\n private static phoneInt(raw: string, locale: string): string {\n if (raw.startsWith('+')) {\n return raw;\n }\n\n switch (locale) {\n case 'fr': // format: +33611223344\n if (raw.startsWith('0')) {\n raw = raw.substr(1);\n }\n\n return '+33' + raw;\n break;\n }\n\n return raw;\n }\n}\n","export class GeneratorUtil {\n private static readonly symbolUpperCases: string[] = [\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'K', 'M', 'N', 'P', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'\n ];\n private static readonly symbolLowerCases: string[] = [\n 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'k', 'm', 'n', 'p', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'\n ];\n\n public static code(size: number): string {\n if (size === null || size === undefined) {\n size = 6;\n }\n\n let code: string = '';\n while (code.length < size) {\n code += GeneratorUtil.symbolUpperCases[GeneratorUtil.int(0, GeneratorUtil.symbolUpperCases.length - 1)];\n }\n\n return code;\n }\n\n public static int(min: number, max: number): number {\n if (min === null || min === undefined) {\n min = 0;\n }\n if (max === null || max === undefined) {\n max = Number.POSITIVE_INFINITY;\n }\n\n min = Math.ceil(min);\n max = Math.floor(max);\n\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n public static password(size: number): string {\n if (size === null || size === undefined) {\n size = 8;\n }\n\n let code: string = '';\n while (code.length < size) {\n switch (GeneratorUtil.int(1, 3)) {\n case 1:\n code += GeneratorUtil.symbolUpperCases[GeneratorUtil.int(0, GeneratorUtil.symbolUpperCases.length - 1)];\n break;\n case 2:\n code += GeneratorUtil.symbolLowerCases[GeneratorUtil.int(0, GeneratorUtil.symbolLowerCases.length - 1)];\n break;\n default:\n code += String(GeneratorUtil.int(0, 9));\n }\n }\n\n return code;\n }\n}\n","export class MathUtil {\n public static avg(values: number[]): number {\n if (values.length === 0) {\n return 0;\n }\n\n const total: number = values.reduce((accumulator, value) => {\n return accumulator + value;\n }, 0);\n\n return MathUtil.round(total / values.length, 2);\n }\n\n public static applyVariation(value: number, variation: number): number {\n let increase: number;\n if (value >= 0) {\n increase = 1 + (variation / 100);\n } else {\n increase = 1 - (variation / 100);\n }\n\n return value * increase;\n }\n\n public static median(values: number[]): number {\n if (values.length === 0) {\n return 0;\n }\n if (values.length === 1) {\n return values[0];\n }\n\n const valuesSorted: number[] = values.sort((a, b) => {\n return a - b;\n });\n\n if (valuesSorted.length % 2 === 0) {\n return MathUtil.avg([valuesSorted[(valuesSorted.length / 2) - 1], valuesSorted[(valuesSorted.length / 2)]]);\n }\n\n return valuesSorted[Math.floor(valuesSorted.length / 2)];\n }\n\n public static percentage(part: number, total: number): number {\n if (total === 0) {\n return 0;\n }\n\n return ((part / total) * 100);\n }\n\n public static round(value: number, decimals: number): number {\n if (decimals === 0) {\n return Math.round(value);\n }\n\n return Number(value.toFixed(decimals));\n }\n\n public static variation(originalValue: number, newValue: number): number {\n let percent = 0;\n if (newValue !== 0) {\n if (originalValue !== 0) {\n percent = (newValue - originalValue) / Math.abs(originalValue) * 100;\n } else {\n percent = ((newValue > 0) ? 1 : -1) * 100;\n }\n } else if (originalValue !== 0) {\n percent = ((originalValue > 0) ? 1 : -1) * -100;\n }\n\n return Math.floor(percent);\n }\n}\n","import {isArray, isObject} from 'lodash';\n\nexport class ObjectUtil {\n public static compact(obj: any, options: {removeEmptyString?: boolean} = {}): any {\n if (isArray(obj)) {\n const ouput: any[] = [];\n obj.forEach((value) => {\n value = ObjectUtil.compact(value, options);\n if ((isArray(value) && value.length > 0)\n || (isObject(value) && Object.keys(value).length > 0)\n || (value !== undefined && value !== null && !isArray(value) && !isObject(value))) {\n ouput.push(value);\n }\n });\n\n return ouput;\n } else if (isObject(obj)) {\n const ouput: any = {};\n Object.keys(obj).forEach((key) => {\n let value: any = (obj as any)[key];\n if (isArray(value) || isObject(value)) {\n value = ObjectUtil.compact(value, options);\n if ((isArray(value) && value.length > 0)\n || (isObject(value) && Object.keys(value).length > 0)\n || (value !== undefined && value !== null && !isArray(value) && !isObject(value))) {\n ouput[key] = value;\n }\n } else if (value !== undefined && value !== null\n && (typeof value !== 'string' || options.removeEmptyString === false || value.length > 0)) {\n ouput[key] = value;\n }\n });\n\n return ouput;\n }\n\n return (typeof obj !== 'string' || options.removeEmptyString === false || obj.length > 0) ? obj : undefined;\n }\n}\n","import {MathUtil} from 'common/util/MathUtil';\n\nexport class PriceUtil {\n private static readonly currencies: {[iso: string]: {symbol: string, position: string}} = {\n 'CAD': {symbol: '$', position: 'before'},\n 'EUR': {symbol: '€', position: 'after'},\n 'USD': {symbol: '$', position: 'before'}\n };\n\n public static applyTaxes(priceTaxExcluded: string, taxRates: number[]): string {\n let priceTaxIncluded: number = Number(priceTaxExcluded);\n taxRates.forEach((rate) => {\n priceTaxIncluded += Number(priceTaxExcluded) * rate;\n });\n\n return String(MathUtil.round(priceTaxIncluded, 2));\n }\n\n public static calculateTaxes(priceTaxExcluded: number, taxRates: number[]): number {\n let taxes: number = 0;\n taxRates.forEach((rate) => {\n taxes += priceTaxExcluded * rate;\n });\n\n return MathUtil.round(taxes, 2);\n }\n\n public static displayWithCurrency(price: string, isoCurrency: string): string {\n if (price === undefined || price === null) {\n return price;\n }\n\n const currency: {symbol: string, position: string} = PriceUtil.currencies[isoCurrency];\n\n let newPrice: string = price + ' ' + isoCurrency;\n if (currency !== undefined) {\n switch (currency.position) {\n case 'before':\n newPrice = currency.symbol + price;\n break;\n case 'after':\n newPrice = price + currency.symbol;\n break;\n }\n }\n\n return newPrice;\n }\n\n public static format(price: string, locale: 'fr' | 'us', decimals: number = 2): string {\n if (price === undefined || price === null) {\n return price;\n }\n\n const priceNumber: number = Number(price.replace(/\\,/gi, ''));\n const standardPrice: string = priceNumber.toLocaleString('en-US', {\n style: 'decimal',\n useGrouping: true,\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals\n });\n\n switch (locale) {\n case 'fr':\n return standardPrice.replace(/\\,/gi, ' ').replace(/\\./gi, ',');\n case 'us':\n return standardPrice;\n }\n }\n}\n"],"names":["root","factory","exports","module","define","amd","global","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","registerBasePath","basePath","process","env","APP_HOME","Path","BASE_PATH","endsWith","data","db","storage","session","message","code","name","Error","captureStackTrace","MainException","stack","UnauthorizedException","ERROR_CODE","Env","getMode","NODE_ENV","DEVELOPMENT","PRODUCTION","TEST","APP_ID","init","sentryToken","Environment","dsn","integrations","CaptureConsole","levels","environment","maxBreadcrumbs","trace","extra","includes","console","info","category","level","debug","log","scope","setExtra","JSON","stringify","warning","error","warn","requestHandler","errorHandler","create","origins","port","this","app","backendPort","Server","DEFAULT_PORT","String","Logger","use","inflate","limit","reviver","strict","type","verify","origin","concat","credentials","listen","getSessionSecret","sessionCookieName","update","SALT","digest","_request","response","Number","status","isNaN","json","request","retries","operation","factor","minTimeout","maxTimeout","randomize","Promise","resolve","reject","attempt","then","catch","retry","token","mode","send","senderName","rawPhones","isCommercial","sendAt","phones","checkPhoneFormat","length","BadParameterException","SmsSenderService","MESSAGE_MAX_LENGTH","substring","Retry","params","accessToken","emetteur","numero","map","phone","replace","join","classe_msg","nbr_msg","Math","ceil","stop","date_envoi","DateTime","setZone","toFormat","BASE_API_URL","encodeURIComponent","p","timeout","trim","ExternalApiException","caRegex","RegExp","frRegex","usRegex","filter","test","read","filePath","isFile","readJson","jsonPath","isJson","parse","write","rawData","encoding","writeJson","_error","asyncForEach","array","callback","i","render","templatePath","baseIncludePath","view","cloneDeep","__dirname","FileSystem","content","forEach","result","startsWith","push","include","includeParts","split","templateName","apiPublicKey","apiSecretKey","templateEngine","TemplateEngine","mailjet","sendDeliveryDelay","sender","recipient","base","copyright","year","Date","getUTCFullYear","text","html","sendNotification","subject","sendTrackDelivery","textContent","htmlContent","sendUserNotification","contact","post","statusCode","full","config","filesystem","connect","entities","con","logging","logger","bigNumberStrings","timezone","charset","createConnection","connection","synchronize","close","fileSystem","success","isNullOrUndefined","isEmail","email","isPhone","isNumber","number","escapeRegExp","str","truncate","slice","slugify","raw","separator","toLower","deburr","autoCorrectCity","city","toLowerCase","exactMatch","AddressUtil","CITIES","find","c","partialMatch","countDiff","add","remove","matchNoDash","partialMatchNoDash","isIncluded","isZipCode","zip","ZIPCODES","ValidatorUtil","address","rawAddressParts","country","splice","rawParts","street","part","zipcode","StringUtil","_e","COUNTRIES","reference","displayWeekDay","weekDay","DateUtil","WEEK_DAYS","generatePeriod","fromDate","toDate","initialValue","addDate","MAX_DAYS","PERIOD_MAX_DATES","cursor","toISODate","date","plus","days","limitDate","targetDate","baseDate","limitInSeconds","target","toISO","seconds","localeToISO","localeDate","isoDate","frFormat1","frFormat2","isoFormat","parts","slotToTime","timeSlot","time","timeFormat","slotFormat","round","roundingInMs","dateTime","toMillis","zone","locale","exec","capitalize","lowraw","FormatterUtil","lower","word","charAt","toUpperCase","toLocaleLowerCase","upper","toLocaleUpperCase","output","preformatPhone","phoneNat","phoneInt","stripEmoji","regex","emojiRegex","match","stripExoticCharacters","substr","num","size","GeneratorUtil","symbolUpperCases","int","min","max","POSITIVE_INFINITY","floor","random","password","symbolLowerCases","avg","values","total","reduce","accumulator","MathUtil","applyVariation","variation","median","valuesSorted","sort","b","percentage","decimals","toFixed","originalValue","newValue","percent","abs","compact","options","isArray","ObjectUtil","isObject","keys","removeEmptyString","applyTaxes","priceTaxExcluded","taxRates","priceTaxIncluded","rate","calculateTaxes","taxes","displayWithCurrency","price","isoCurrency","currency","PriceUtil","currencies","newPrice","position","symbol","format","standardPrice","toLocaleString","style","useGrouping","minimumFractionDigits","maximumFractionDigits"],"sourceRoot":""}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<tr>
|
|
2
2
|
<td class="Spacer Spacer-divider" colspan="3" height="12"
|
|
3
3
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#ffffff;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
4
|
-
&
|
|
4
|
+
 
|
|
5
5
|
</td>
|
|
6
6
|
</tr>
|
|
7
7
|
<tr class="Section Button">
|
|
8
8
|
<td class="Spacer Spacer-gutter" width="64"
|
|
9
9
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#ffffff;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
10
|
-
&
|
|
10
|
+
 
|
|
11
11
|
</td>
|
|
12
12
|
<td class="Button-position" align="center"
|
|
13
13
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;">
|
|
@@ -27,12 +27,12 @@
|
|
|
27
27
|
</td>
|
|
28
28
|
<td class="Spacer Spacer-gutter" width="64"
|
|
29
29
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#ffffff;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
30
|
-
&
|
|
30
|
+
 
|
|
31
31
|
</td>
|
|
32
32
|
</tr>
|
|
33
33
|
<tr>
|
|
34
34
|
<td class="Spacer Spacer-divider" colspan="3" height="20"
|
|
35
35
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#ffffff;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
36
|
-
&
|
|
36
|
+
 
|
|
37
37
|
</td>
|
|
38
38
|
</tr>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<tr class="Section Title">
|
|
2
2
|
<td class="Spacer Spacer-gutter" width="64"
|
|
3
3
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#ffffff;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
4
|
-
&
|
|
4
|
+
 
|
|
5
5
|
</td>
|
|
6
6
|
<td class="Title-area Font Font-title"
|
|
7
7
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;mso-line-height-rule:exactly;vertical-align:middle;color:#32325d;font-size:20px;line-height:28px;">
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
<td
|
|
11
11
|
class="Spacer Spacer-gutter" width="64"
|
|
12
12
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#ffffff;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
13
|
-
&
|
|
13
|
+
 
|
|
14
14
|
</td>
|
|
15
15
|
</tr>
|
|
16
16
|
<tr>
|
|
17
17
|
<td class="Spacer Spacer-divider" colspan="3" height="24"
|
|
18
18
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#ffffff;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
19
|
-
&
|
|
19
|
+
 
|
|
20
20
|
</td>
|
|
21
21
|
</tr>
|
|
22
22
|
|
|
@@ -281,7 +281,7 @@
|
|
|
281
281
|
.Header-logoArea {
|
|
282
282
|
height: 28px !important;
|
|
283
283
|
width: 68px !important;
|
|
284
|
-
background-image: url("
|
|
284
|
+
background-image: url("{{base.shop.logo}}") !important;
|
|
285
285
|
background-size: 68px 28px !important;
|
|
286
286
|
}
|
|
287
287
|
|
|
@@ -298,19 +298,19 @@
|
|
|
298
298
|
}
|
|
299
299
|
|
|
300
300
|
.Image-bottomLeft {
|
|
301
|
-
background-image: url("
|
|
301
|
+
background-image: url("https://burgerbreton.net/cdn/image/email/ui/image--bottomleft--mobile.png") !important;
|
|
302
302
|
}
|
|
303
303
|
|
|
304
304
|
.Image-bottomRight {
|
|
305
|
-
background-image: url("
|
|
305
|
+
background-image: url("https://burgerbreton.net/cdn/image/email/ui/image--bottomright--mobile.png") !important;
|
|
306
306
|
}
|
|
307
307
|
|
|
308
308
|
.Image-topLeft {
|
|
309
|
-
background-image: url("
|
|
309
|
+
background-image: url("https://burgerbreton.net/cdn/image/email/ui/image--topleft--mobile.png") !important;
|
|
310
310
|
}
|
|
311
311
|
|
|
312
312
|
.Image-topRight {
|
|
313
|
-
background-image: url("
|
|
313
|
+
background-image: url("https://burgerbreton.net/cdn/image/email/ui/image--topright--mobile.png") !important;
|
|
314
314
|
}
|
|
315
315
|
|
|
316
316
|
.Image-bottomMiddle,
|
|
@@ -322,11 +322,11 @@
|
|
|
322
322
|
}
|
|
323
323
|
|
|
324
324
|
.Image-bottomMiddle {
|
|
325
|
-
background-image: url("
|
|
325
|
+
background-image: url("https://burgerbreton.net/cdn/image/email/ui/image--bottommiddle--mobile.png") !important;
|
|
326
326
|
}
|
|
327
327
|
|
|
328
328
|
.Image-topMiddle {
|
|
329
|
-
background-image: url("
|
|
329
|
+
background-image: url("https://burgerbreton.net/cdn/image/email/ui/image--topmiddle--mobile.png") !important;
|
|
330
330
|
}
|
|
331
331
|
|
|
332
332
|
.Image-left,
|
|
@@ -338,11 +338,11 @@
|
|
|
338
338
|
}
|
|
339
339
|
|
|
340
340
|
.Image-left {
|
|
341
|
-
background-image: url("
|
|
341
|
+
background-image: url("https://burgerbreton.net/cdn/image/email/ui/image--left--mobile.png") !important;
|
|
342
342
|
}
|
|
343
343
|
|
|
344
344
|
.Image-right {
|
|
345
|
-
background-image: url("
|
|
345
|
+
background-image: url("https://burgerbreton.net/cdn/image/email/ui/image--right--mobile.png") !important;
|
|
346
346
|
}
|
|
347
347
|
|
|
348
348
|
.Image-content {
|
|
@@ -364,14 +364,14 @@
|
|
|
364
364
|
.ListItem-bulletArea {
|
|
365
365
|
height: 20px !important;
|
|
366
366
|
width: 12px !important;
|
|
367
|
-
background-image: url("
|
|
367
|
+
background-image: url("https://burgerbreton.net/cdn/image/email/ui/bullet.png") !important;
|
|
368
368
|
background-size: 12px 20px !important;
|
|
369
369
|
}
|
|
370
370
|
|
|
371
371
|
.Footer-logoArea {
|
|
372
372
|
height: 20px !important;
|
|
373
373
|
width: 42px !important;
|
|
374
|
-
background-image: url("
|
|
374
|
+
background-image: url("{{base.shop.logo}}") !important;
|
|
375
375
|
background-size: 42px 20px !important;
|
|
376
376
|
}
|
|
377
377
|
}
|
|
@@ -463,13 +463,13 @@
|
|
|
463
463
|
<tr>
|
|
464
464
|
<td class="Spacer Spacer-divider" colspan="3" height="64"
|
|
465
465
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#ffffff;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
466
|
-
&
|
|
466
|
+
 
|
|
467
467
|
</td>
|
|
468
468
|
</tr>
|
|
469
469
|
<tr class="Header">
|
|
470
470
|
<td class="Spacer Spacer-gutter" width="64"
|
|
471
471
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#ffffff;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
472
|
-
&
|
|
472
|
+
 
|
|
473
473
|
</td>
|
|
474
474
|
<td class="Header-logo"
|
|
475
475
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;">
|
|
@@ -482,13 +482,13 @@
|
|
|
482
482
|
</td>
|
|
483
483
|
<td class="Spacer Spacer-gutter" width="64"
|
|
484
484
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#ffffff;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
485
|
-
&
|
|
485
|
+
 
|
|
486
486
|
</td>
|
|
487
487
|
</tr>
|
|
488
488
|
<tr>
|
|
489
489
|
<td class="Spacer Spacer-divider" colspan="3" height="40"
|
|
490
490
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#ffffff;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
491
|
-
&
|
|
491
|
+
 
|
|
492
492
|
</td>
|
|
493
493
|
</tr>
|
|
494
494
|
|
|
@@ -497,7 +497,7 @@
|
|
|
497
497
|
<tr>
|
|
498
498
|
<td class="Spacer Spacer-dividerLarge" colspan="3" height="24"
|
|
499
499
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#ffffff;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
500
|
-
&
|
|
500
|
+
 
|
|
501
501
|
</td>
|
|
502
502
|
</tr>
|
|
503
503
|
<tr>
|
|
@@ -509,14 +509,14 @@
|
|
|
509
509
|
<tr>
|
|
510
510
|
<td class="Spacer Spacer-dividerLarge" colspan="3" height="44"
|
|
511
511
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
512
|
-
&
|
|
512
|
+
 
|
|
513
513
|
</td>
|
|
514
514
|
</tr>
|
|
515
515
|
|
|
516
516
|
<tr>
|
|
517
517
|
<td class="Spacer Spacer-gutter" width="64"
|
|
518
518
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
519
|
-
&
|
|
519
|
+
 
|
|
520
520
|
</td>
|
|
521
521
|
<td class="Footer-help Font Font-body"
|
|
522
522
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;mso-line-height-rule:exactly;vertical-align:middle;color:#e3e3e3;font-size:14px;line-height:20px;">
|
|
@@ -526,33 +526,33 @@
|
|
|
526
526
|
</td>
|
|
527
527
|
<td class="Spacer Spacer-gutter" width="64"
|
|
528
528
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
529
|
-
&
|
|
529
|
+
 
|
|
530
530
|
</td>
|
|
531
531
|
</tr>
|
|
532
532
|
<tr>
|
|
533
533
|
<td class="Spacer Spacer-divider" colspan="3" height="32"
|
|
534
534
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
535
|
-
&
|
|
535
|
+
 
|
|
536
536
|
</td>
|
|
537
537
|
</tr>
|
|
538
538
|
<tr>
|
|
539
539
|
<td class="Spacer Spacer-gutter" width="64"
|
|
540
540
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
541
|
-
&
|
|
541
|
+
 
|
|
542
542
|
</td>
|
|
543
543
|
<td class="Spacer Section-separator" bgcolor="e6ebf1" height="2"
|
|
544
544
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
545
|
-
&
|
|
545
|
+
 
|
|
546
546
|
</td>
|
|
547
547
|
<td class="Spacer Spacer-gutter" width="64"
|
|
548
548
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
549
|
-
&
|
|
549
|
+
 
|
|
550
550
|
</td>
|
|
551
551
|
</tr>
|
|
552
552
|
<tr>
|
|
553
553
|
<td class="Spacer Spacer-gutter" width="64"
|
|
554
554
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
555
|
-
&
|
|
555
|
+
 
|
|
556
556
|
</td>
|
|
557
557
|
<td class="Footer-legal Font Font-caption"
|
|
558
558
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;mso-line-height-rule:exactly;vertical-align:middle;color:#e3e3e3;font-size:12px;line-height:16px;">
|
|
@@ -560,19 +560,19 @@
|
|
|
560
560
|
</td>
|
|
561
561
|
<td class="Spacer Spacer-gutter" width="64"
|
|
562
562
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
563
|
-
&
|
|
563
|
+
 
|
|
564
564
|
</td>
|
|
565
565
|
</tr>
|
|
566
566
|
<tr>
|
|
567
567
|
<td class="Spacer Spacer-divider" colspan="3" height="12"
|
|
568
568
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
569
|
-
&
|
|
569
|
+
 
|
|
570
570
|
</td>
|
|
571
571
|
</tr>
|
|
572
572
|
<tr>
|
|
573
573
|
<td class="Spacer Spacer-gutter" width="64"
|
|
574
574
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
575
|
-
&
|
|
575
|
+
 
|
|
576
576
|
</td>
|
|
577
577
|
<td class="Footer-legal Font Font-caption Delink"
|
|
578
578
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;mso-line-height-rule:exactly;vertical-align:middle;color:#e3e3e3;font-size:12px;line-height:16px;">
|
|
@@ -589,19 +589,19 @@
|
|
|
589
589
|
</td>
|
|
590
590
|
<td class="Spacer Spacer-gutter" width="64"
|
|
591
591
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
592
|
-
&
|
|
592
|
+
 
|
|
593
593
|
</td>
|
|
594
594
|
</tr>
|
|
595
595
|
<tr>
|
|
596
596
|
<td class="Spacer Spacer-divider" colspan="3" height="20"
|
|
597
597
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
598
|
-
&
|
|
598
|
+
 
|
|
599
599
|
</td>
|
|
600
600
|
</tr>
|
|
601
601
|
<tr>
|
|
602
602
|
<td class="Spacer Spacer-gutter" width="64"
|
|
603
603
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
604
|
-
&
|
|
604
|
+
 
|
|
605
605
|
</td>
|
|
606
606
|
<td
|
|
607
607
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;">
|
|
@@ -611,10 +611,10 @@
|
|
|
611
611
|
<tr>
|
|
612
612
|
<td class="Footer-logo"
|
|
613
613
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;">
|
|
614
|
-
|
|
614
|
+
<!--<a href="{{ base.shop.url }}" class="Footer-logoArea Target"
|
|
615
615
|
style="-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;outline-color:0;text-decoration:none;font-size:0;line-height:0px;mso-line-height-rule:exactly;background-size:100% 100%;display:block;">
|
|
616
|
-
|
|
617
|
-
</a
|
|
616
|
+
<img alt="logo" height="20" width="42" src="{{ base.shop.logo }}" style="display:block;line-height:100%;border-width:0;"/>
|
|
617
|
+
</a>-->
|
|
618
618
|
</td>
|
|
619
619
|
<td align="right"
|
|
620
620
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;">
|
|
@@ -633,7 +633,7 @@
|
|
|
633
633
|
</td>
|
|
634
634
|
<td class="Spacer Spacer-gutter" width="4"
|
|
635
635
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
636
|
-
&
|
|
636
|
+
 
|
|
637
637
|
</td>
|
|
638
638
|
<td
|
|
639
639
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;">
|
|
@@ -646,7 +646,7 @@
|
|
|
646
646
|
</td>
|
|
647
647
|
<td class="Spacer Spacer-gutter" width="4"
|
|
648
648
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
649
|
-
&
|
|
649
|
+
 
|
|
650
650
|
</td>
|
|
651
651
|
<td
|
|
652
652
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;">
|
|
@@ -667,13 +667,13 @@
|
|
|
667
667
|
</td>
|
|
668
668
|
<td class="Spacer Spacer-gutter" width="64"
|
|
669
669
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
670
|
-
&
|
|
670
|
+
 
|
|
671
671
|
</td>
|
|
672
672
|
</tr>
|
|
673
673
|
<tr>
|
|
674
674
|
<td class="Spacer Spacer-dividerLarge" colspan="3" height="64"
|
|
675
675
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2f2f2f;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
676
|
-
&
|
|
676
|
+
 
|
|
677
677
|
</td>
|
|
678
678
|
</tr>
|
|
679
679
|
</tbody>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<tr class="Section Body">
|
|
2
2
|
<td class="Spacer Spacer-gutter" width="64"
|
|
3
3
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#ffffff;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
4
|
-
&
|
|
4
|
+
 
|
|
5
5
|
</td>
|
|
6
6
|
<td class="Body-area Font Font-body"
|
|
7
7
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;mso-line-height-rule:exactly;vertical-align:middle;color:#525f7f;font-size:14px;line-height:20px;">
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
</td>
|
|
12
12
|
<td class="Spacer Spacer-gutter" width="64"
|
|
13
13
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#ffffff;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
14
|
-
&
|
|
14
|
+
 
|
|
15
15
|
</td>
|
|
16
16
|
</tr>
|
|
17
17
|
<tr>
|
|
18
18
|
<td class="Spacer Spacer-divider" colspan="3" height="12"
|
|
19
19
|
style="border-width:0;border-collapse:collapse;margin-top:0;margin-bottom:0;margin-right:0;margin-left:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#ffffff;font-size:1px;line-height:1px;mso-line-height-rule:exactly;">
|
|
20
|
-
&
|
|
20
|
+
 
|
|
21
21
|
</td>
|
|
22
22
|
</tr>
|