terminal-gateway 1.0.6 → 1.0.7

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/README.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  ## Browser Support
4
4
 
5
- ![Chrome](https://raw.githubusercontent.com/alrra/browser-logos/main/src/chrome/chrome_48x48.png) | ![Edge](https://raw.githubusercontent.com/alrra/browser-logos/main/src/edge/edge_48x48.png) |![Opera](https://raw.githubusercontent.com/alrra/browser-logos/main/src/opera/opera_48x48.png) |
6
- --- | --- | --- |
7
- Latest ✔ | Latest ✔ | Latest ✔ |
5
+ ![Chrome](https://raw.githubusercontent.com/alrra/browser-logos/main/src/chrome/chrome_48x48.png) | ![Edge](https://raw.githubusercontent.com/alrra/browser-logos/main/src/edge/edge_48x48.png) |
6
+ --- | --- |
7
+ Latest ✔ | Latest ✔ |
8
8
 
9
9
 
10
10
  ## Installation
@@ -34,49 +34,10 @@ $ yarn add terminal-gateway
34
34
 
35
35
  ``` javascript
36
36
  import Terminal from 'terminal-gateway'
37
-
38
37
  const terminal = new Terminal({
39
38
  key: '',
40
39
  timeout: 50000,
41
- onSuccess: () => {}
40
+ onSuccess: () => {},
42
41
  onError: () => {}
43
42
  });
44
- ```
45
-
46
- ## Sale transaction
47
- __onSale():__ This method allows you to do sale transactions. user needs to call this function to get the result failed or successful. It is required four parameters:
48
- | Parameter name | Data type | Require | Default | Description |
49
- | --------- | --- | --- | --- | --- |
50
- | amount | String | Yes | 0 | amount define transaction |
51
- | type | String | Yes | SHOWQR | SHOWQR: sale by screen QR code <br> EDC: sale by card |
52
- | invoice | String | Yes | The invoice number must be unique. Example: INV0011620291635 |
53
-
54
- &nbsp;
55
-
56
- ``` javascript
57
- terminal.onSale({amount: '0.01', type: 'SHOWQR', currency: 'USD', invoice: 'INV0011620291635'})
58
- ```
59
- ## Enquiry transaction
60
- __onEnquiry():__ This method allows you to receive the response back with the result status of the transaction whether it's successful or failed. It is required a parameter:
61
-
62
- | Parameter name | Data type | Require | Default |Description |
63
- | --- | --- | --- | --- | --- |
64
- | invoice | String | Yes | | The invoice number must be unique. example: `INV0011620291635`|
65
-
66
- &nbsp;
67
-
68
- ``` javascript
69
- terminal.onEnquiry({invoice: 'INV0011620291635'})
70
- ```
71
- ## Void transaction
72
- __onVoid():__ This method allows you to void the transaction. It is required a parameter:
73
- | Parameter name | Data type | Require | Default |Description |
74
- | --- | --- | --- | --- | --- |
75
- | traceId | String | Yes | | trace number of sale transaction response |
76
-
77
-
78
- ## Cancelation transaction
79
- __onCancel():__ This method allows the cancellation of the sale of the transaction.
80
- ``` javascript
81
- terminal.onCancel()
82
- ```
43
+ ```
package/lib/terminal.js CHANGED
@@ -1 +1 @@
1
- function a0_0xa428(){const _0x2935d9=['replace','getTesting','addEventListener','3771834RfJgrw','message','error','your\x20testing\x20it\x20ok','onErrors','297fcduLh','then','serial','cancel','split','catch','617230rSpRWx','toString','2236116epMgYD','disconnect','onSuccess','pipeTo','Timeout','stringify','Your\x20browser\x20is\x20not\x20supported.','onVoid','length','handleReleasePort','184rmcodk','Key\x20is\x20not\x20empty.','453303WzYjMs','toUpperCase','MEMENQ','toISOString','5457753jsWrue','getPorts','onConnected','Connected','287138QQkwEt','onCancel','getWriter','Device\x20lost\x20connection','Device\x20has\x20connected.','readable','open','1048044HVLofG','releaseLock','SALE','VOID','close','SALE_CANCEL','5eAOImx','writable','connect','1bcTzIN'];a0_0xa428=function(){return _0x2935d9;};return a0_0xa428();}const a0_0x34a15c=a0_0x19df;(function(_0x4ade39,_0x995568){const _0x5931f9=a0_0x19df,_0x23a920=_0x4ade39();while(!![]){try{const _0x4a3779=parseInt(_0x5931f9(0x1cf))/0x1*(parseInt(_0x5931f9(0x1f4))/0x2)+parseInt(_0x5931f9(0x1fb))/0x3+-parseInt(_0x5931f9(0x1e0))/0x4+-parseInt(_0x5931f9(0x1cc))/0x5*(parseInt(_0x5931f9(0x1d3))/0x6)+parseInt(_0x5931f9(0x1f0))/0x7+parseInt(_0x5931f9(0x1ea))/0x8*(-parseInt(_0x5931f9(0x1ec))/0x9)+parseInt(_0x5931f9(0x1de))/0xa*(parseInt(_0x5931f9(0x1d8))/0xb);if(_0x4a3779===_0x995568)break;else _0x23a920['push'](_0x23a920['shift']());}catch(_0x31a708){_0x23a920['push'](_0x23a920['shift']());}}}(a0_0xa428,0x90c70));import a0_0x4bc3f7,{enc}from'crypto-js';function a0_0x19df(_0x42fa0d,_0x4e97a1){const _0xa42853=a0_0xa428();return a0_0x19df=function(_0x19df78,_0x3b367b){_0x19df78=_0x19df78-0x1c8;let _0x5820bb=_0xa42853[_0x19df78];return _0x5820bb;},a0_0x19df(_0x42fa0d,_0x4e97a1);}class Terminal{#KEY=null;#DATA=null;#PORT=null;#TIMER=null;#WRITER=null;#READER=null;#TIMEOUT=null;#DATE_BITS=0x8;#STOP_BITS=0x1;#BAUD_RATE=0x1c200;#PARITY='none';#BUFFER_SIZE=0x400;#MD5_ENCRYPTION=null;#WRITABLE_STREAM_CLOSED=null;#READABLE_STREAM_CLOSED=null;#DATE_FORMAT=new Date()[a0_0x34a15c(0x1ef)]()[a0_0x34a15c(0x1d0)]('T','\x20')[a0_0x34a15c(0x1d0)]('Z','')[a0_0x34a15c(0x1dc)]('.')[0x0];#FILTERS=[{'usbVendorId':0x5c6,'usbProductId':0x9025},{'usbVendorId':0x67b,'usbProductId':0x2303}];#SUPPORTED_BROWSER=0x1;#OPEN_SERIAL_PORT_ERROR=0x2;#OPEN_SERIAL_PORT_PAIR_ERROR=0x3;#WRITE_STREAM_ERROR=0x4;#READ_STREAM_ERROR=0x5;#VALIDATE_KEY=0x6;#CONNECTED_SERIAL_PORT=0x7;#DISCONNECTED_SERIAL_PORT=0x8;constructor({key:_0x5d0e3c,timeout:_0x21ad15,onConnected:_0x9f380a,onSuccess:_0x21c26b,onErrors:_0x551c78}){const _0x53adcb=a0_0x34a15c;if(!_0x5d0e3c)console[_0x53adcb(0x1d5)]('You\x20do\x20not\x20provide\x20me\x20your\x20key.\x20Please\x20help\x20provide\x20me\x20your\x20key.');this.#KEY=_0x5d0e3c,this.#TIMEOUT=_0x21ad15||0xea60,this[_0x53adcb(0x1e2)]=_0x21c26b||function(){},this[_0x53adcb(0x1d7)]=_0x551c78||function(){},this[_0x53adcb(0x1f2)]=_0x9f380a||function(){},!this.#isSupportedBrowser()&&(console['error']('Your\x20browser\x20is\x20not\x20supported.'),this[_0x53adcb(0x1d7)]({'status':this.#SUPPORTED_BROWSER,'message':'Your\x20browser\x20is\x20not\x20supported.'})),navigator[_0x53adcb(0x1da)]['addEventListener'](_0x53adcb(0x1ce),_0x50002d=>{const _0x27ffce=_0x53adcb;this[_0x27ffce(0x1e2)]({'status':this.#CONNECTED_SERIAL_PORT,'message':_0x27ffce(0x1f8)});if(this.#TIMER)clearTimeout(this.#TIMER);}),navigator[_0x53adcb(0x1da)][_0x53adcb(0x1d2)](_0x53adcb(0x1e1),async _0x40022d=>{const _0x441254=_0x53adcb;this[_0x441254(0x1e2)]({'status':this.#DISCONNECTED_SERIAL_PORT,'message':_0x441254(0x1f7)});if(this.#TIMER)clearTimeout(this.#TIMER);});}#handleRequestSerialPort(){return new Promise((_0x3f0c49,_0x23fa31)=>{const _0x1c63e2=a0_0x19df;return navigator[_0x1c63e2(0x1da)]['requestPort']({'filters':this.#FILTERS})['then'](_0xe3df6c=>{_0x3f0c49(_0xe3df6c);})[_0x1c63e2(0x1dd)](_0x192e38=>{const _0x1552ec=_0x1c63e2;_0x23fa31({'status':this.#OPEN_SERIAL_PORT_ERROR,'message':_0x192e38?.[_0x1552ec(0x1d4)]});});});}#handleOpenSerialPort(){return new Promise((_0x9ac568,_0x57e6c8)=>{const _0x14e7f1=a0_0x19df;return this.#PORT[_0x14e7f1(0x1fa)]({'baudRate':this.#BAUD_RATE,'dataBits':this.#DATE_BITS,'stopBits':this.#STOP_BITS,'parity':this.#PARITY,'bufferSize':this.#BUFFER_SIZE})[_0x14e7f1(0x1d9)](_0x23480b=>_0x9ac568(_0x23480b))[_0x14e7f1(0x1dd)](_0x1c7c9b=>{const _0x191fbd=_0x14e7f1;_0x57e6c8({'status':this.#OPEN_SERIAL_PORT_PAIR_ERROR,'message':_0x1c7c9b?.[_0x191fbd(0x1d4)]});});});}async['onSale']({amount:_0x2b5200,type:_0x5e4828,currency:_0x36c091,invoice:_0x15c903}){const _0x50d60c=a0_0x34a15c;try{if(!this.#isSupportedBrowser()){console[_0x50d60c(0x1d5)](_0x50d60c(0x1e6)),this['onErrors']({'status':this.#SUPPORTED_BROWSER,'message':_0x50d60c(0x1e6)});return;}if(!this.#KEY){this[_0x50d60c(0x1d7)]({'status':this.#VALIDATE_KEY,'message':'Key\x20is\x20not\x20empty.'});return;}const _0x364bec=await navigator[_0x50d60c(0x1da)][_0x50d60c(0x1f1)]();!this.#PORT&&!_0x364bec[_0x50d60c(0x1e8)]?(this.#PORT=await this.#handleRequestSerialPort(),await this.#handleOpenSerialPort(),this[_0x50d60c(0x1e2)]({'status':this.#SUPPORTED_BROWSER,'message':'Connected'})):(this.#PORT=_0x364bec[0x0],await this.#handleOpenSerialPort());this.#DATA=this.#handleGenerateJSONObject({'CMD':'SALE','type':_0x5e4828,'amount':_0x2b5200,'currency':_0x36c091,'invoice':_0x15c903});const _0x14aa71=this.#handleGenerateMD5(this.#DATA);await this.#handleWriteStream(_0x14aa71),this.#handleSetTimeout(),this.#handleReadStream(),await this.#listenToTerminal();}catch(_0x3028ff){this[_0x50d60c(0x1d7)](_0x3028ff);}}async[a0_0x34a15c(0x1e7)]({traceId:_0x14b924}){const _0x4ee489=a0_0x34a15c;try{if(!this.#isSupportedBrowser()){console[_0x4ee489(0x1d5)]('Your\x20browser\x20is\x20not\x20supported.'),this[_0x4ee489(0x1d7)]({'status':this.#SUPPORTED_BROWSER,'message':_0x4ee489(0x1e6)});return;}if(!this.#KEY){this['onErrors']({'status':this.#VALIDATE_KEY,'message':_0x4ee489(0x1eb)});return;}if(!this.#PORT&&!ports[_0x4ee489(0x1e8)])this.#PORT=await this.#handleRequestSerialPort(),await this.#handleOpenSerialPort(),this['onSuccess']({'status':this.#SUPPORTED_BROWSER,'message':_0x4ee489(0x1f3)});else{const _0x3d4d90=await navigator[_0x4ee489(0x1da)][_0x4ee489(0x1f1)]();this.#PORT=_0x3d4d90[0x0],await this.#handleOpenSerialPort();}const _0x28f7fe=this.#handleGenerateJSONObject({'CMD':_0x4ee489(0x1c9),'traceId':_0x14b924}),_0x147534=this.#handleGenerateMD5(_0x28f7fe);await this.#handleWriteStream(_0x147534),this.#handleReadStream(),await this.#listenToTerminal();}catch(_0x1dd4ca){this[_0x4ee489(0x1d7)](_0x1dd4ca);}}async['onEnquiry']({invoice:_0x182c9e}){const _0x54b79d=a0_0x34a15c;try{if(!this.#isSupportedBrowser()){console[_0x54b79d(0x1d5)](_0x54b79d(0x1e6)),this[_0x54b79d(0x1d7)]({'status':this.#SUPPORTED_BROWSER,'message':'Your\x20browser\x20is\x20not\x20supported.'});return;}if(!this.#KEY){this[_0x54b79d(0x1d7)]({'status':this.#VALIDATE_KEY,'message':_0x54b79d(0x1eb)});return;}if(!this.#PORT&&!ports[_0x54b79d(0x1e8)])this.#PORT=await this.#handleRequestSerialPort(),await this.#handleOpenSerialPort(),this[_0x54b79d(0x1e2)]({'status':this.#SUPPORTED_BROWSER,'message':_0x54b79d(0x1f3)});else{const _0x24211d=await navigator[_0x54b79d(0x1da)][_0x54b79d(0x1f1)]();this.#PORT=_0x24211d[0x0],await this.#handleOpenSerialPort();}const _0x16fd68=this.#handleGenerateJSONObject({'CMD':_0x54b79d(0x1ee),'invoice':_0x182c9e}),_0x299670=this.#handleGenerateMD5(_0x16fd68);await this.#handleWriteStream(_0x299670),this.#handleReadStream(),await this.#listenToTerminal();}catch(_0x550344){this[_0x54b79d(0x1d7)](_0x550344);}}async[a0_0x34a15c(0x1f5)](){const _0x68b7c5=a0_0x34a15c;try{if(!this.#isSupportedBrowser()){console[_0x68b7c5(0x1d5)](_0x68b7c5(0x1e6)),this[_0x68b7c5(0x1d7)]({'status':this.#SUPPORTED_BROWSER,'message':_0x68b7c5(0x1e6)});return;}if(!this.#KEY){this[_0x68b7c5(0x1d7)]({'status':this.#VALIDATE_KEY,'message':_0x68b7c5(0x1eb)});return;}this[_0x68b7c5(0x1e9)]();const _0x4d5e4c=await navigator[_0x68b7c5(0x1da)][_0x68b7c5(0x1f1)]();this.#PORT=_0x4d5e4c[0x0],await this.#handleOpenSerialPort();const _0x2a93a1=this.#handleGenerateJSONObject({'CMD':'SALE_CANCEL'}),_0x184576=this.#handleGenerateMD5(_0x2a93a1);await this.#handleWriteStream(_0x184576),this.#handleReadStream(),await this.#listenToTerminal();}catch(_0x3fb6db){this[_0x68b7c5(0x1d7)](_0x3fb6db);}}#handleWriteStream(_0x38d546){return new Promise((_0x5a1b8f,_0x5b97f8)=>{const _0x33825=a0_0x19df,_0x5548d2=new TextEncoderStream();return this.#WRITABLE_STREAM_CLOSED=_0x5548d2[_0x33825(0x1f9)][_0x33825(0x1e3)](this.#PORT['writable']),this.#WRITER=_0x5548d2[_0x33825(0x1cd)][_0x33825(0x1f6)](),this.#WRITER['write'](_0x38d546)[_0x33825(0x1d9)](_0x2a2b02=>{_0x5a1b8f(_0x2a2b02);})['catch'](_0x56225c=>{const _0x294184=_0x33825;_0x5b97f8({'status':this.#WRITE_STREAM_ERROR,'message':_0x56225c?.[_0x294184(0x1d4)]});});});}#handleReadStream(){const _0x14d257=a0_0x34a15c;try{const _0xf18cc5=new TextDecoderStream();this.#READABLE_STREAM_CLOSED=this.#PORT[_0x14d257(0x1f9)][_0x14d257(0x1e3)](_0xf18cc5[_0x14d257(0x1cd)]),this.#READER=_0xf18cc5[_0x14d257(0x1f9)]['getReader']();}catch(_0xf03ea4){this[_0x14d257(0x1d7)]({'status':this.#READ_STREAM_ERROR,'message':_0xf03ea4?.['message']});}}#handleGenerateJSONObject({CMD:_0x1c45ea,type:_0x3ad33a,amount:_0xaab88b,currency:_0x51b96c,invoice:_0x5b49eb,traceId:_0xf7f2}){const _0xfe2d28=a0_0x34a15c;let _0x423f1f={};switch(_0x1c45ea){case _0xfe2d28(0x1c8):_0x423f1f={'CMD':_0xfe2d28(0x1c8),'TYPE':_0x3ad33a['toString'](),'AMT':_0xaab88b[_0xfe2d28(0x1df)](),'CURRCODE':_0x51b96c[_0xfe2d28(0x1df)](),'TIMESTAMP':this.#DATE_FORMAT,'ECRREF':_0x5b49eb[_0xfe2d28(0x1df)]()};break;case _0xfe2d28(0x1c9):_0x423f1f={'CMD':_0xfe2d28(0x1c9),'TIMESTAMP':this.#DATE_FORMAT,'TRACE':_0xf7f2[_0xfe2d28(0x1df)]()};break;case _0xfe2d28(0x1ee):_0x423f1f={'CMD':_0xfe2d28(0x1ee),'TIMESTAMP':this.#DATE_FORMAT,'ECRREF':_0x5b49eb[_0xfe2d28(0x1df)]()};break;case _0xfe2d28(0x1cb):_0x423f1f={'CMD':_0xfe2d28(0x1cb),'TIMESTAMP':this.#DATE_FORMAT};break;}return _0x423f1f;}#handleGenerateMD5(_0x4f5524){const _0x5cecd0=a0_0x34a15c,_0x269291=JSON[_0x5cecd0(0x1e5)](_0x4f5524)+this.#KEY;return this.#MD5_ENCRYPTION=a0_0x4bc3f7['MD5'](_0x269291)[_0x5cecd0(0x1df)]()[_0x5cecd0(0x1ed)](),'@'+this.#MD5_ENCRYPTION+JSON[_0x5cecd0(0x1e5)](_0x4f5524);}async #listenToTerminal(){const _0x2692de=a0_0x34a15c;try{const _0x1e13de=[];let _0x52fe07='',_0x31c176=0x0;while(!![]){const {value:_0x4eeab0,done:_0x569fb1}=await this.#READER['read']();if(_0x569fb1){this.#READER[_0x2692de(0x1fc)]();break;}if(this.#TIMER)clearTimeout(this.#TIMER);_0x52fe07+=_0x4eeab0,_0x31c176+=0x1;const _0x229e96=setTimeout(async()=>{this.#handlePrintResult(_0x52fe07),this.#handleReleasePort();},0x64);_0x1e13de['push'](_0x229e96),clearTimeout(_0x1e13de[_0x31c176-0x2]);}}catch(_0x2a74f2){this[_0x2692de(0x1d7)]({'status':this.#READ_STREAM_ERROR,'message':_0x2a74f2?.[_0x2692de(0x1d4)]});}}#handleSetTimeout(){this.#TIMER=setTimeout(async()=>{const _0x5223d2=a0_0x19df,_0x4e95b7='@'+this.#MD5_ENCRYPTION+JSON['stringify']({...this.#DATA,'APV':'','PAN':'','PAYER':'','MESSAGE':'','TRXN_ID':'','TRACE':'','STATUS':_0x5223d2(0x1e4)});this.#handlePrintResult(_0x4e95b7),this.#handleReleasePort();},this.#TIMEOUT);}#handlePrintResult(_0x1fb527){if(!_0x1fb527)return;this['onSuccess']({'key':this.#KEY,'value':JSON['parse'](_0x1fb527['slice'](0x21))});}async #handleReleasePort(){const _0x7f81c9=a0_0x34a15c;this.#READER[_0x7f81c9(0x1db)](),await this.#READABLE_STREAM_CLOSED[_0x7f81c9(0x1dd)](()=>{}),this.#WRITER[_0x7f81c9(0x1ca)](),await this.#WRITABLE_STREAM_CLOSED[_0x7f81c9(0x1dd)](()=>{}),await this.#PORT['close']();}#isSupportedBrowser(){const _0x3b3484=a0_0x34a15c;return _0x3b3484(0x1da)in navigator;}[a0_0x34a15c(0x1d1)](){const _0x183cfe=a0_0x34a15c;return _0x183cfe(0x1d6);}}export default Terminal;
1
+ const a0_0x395e06=a0_0x48d3;(function(_0x580dbe,_0x4baf89){const _0x58f585=a0_0x48d3,_0x7236b2=_0x580dbe();while(!![]){try{const _0x459339=-parseInt(_0x58f585(0x107))/0x1+-parseInt(_0x58f585(0xff))/0x2*(parseInt(_0x58f585(0x120))/0x3)+parseInt(_0x58f585(0xfe))/0x4+parseInt(_0x58f585(0xfc))/0x5+-parseInt(_0x58f585(0x111))/0x6+parseInt(_0x58f585(0xf8))/0x7*(-parseInt(_0x58f585(0x10c))/0x8)+parseInt(_0x58f585(0x118))/0x9*(parseInt(_0x58f585(0x10d))/0xa);if(_0x459339===_0x4baf89)break;else _0x7236b2['push'](_0x7236b2['shift']());}catch(_0x360ccf){_0x7236b2['push'](_0x7236b2['shift']());}}}(a0_0x32b2,0xa4d73));function a0_0x32b2(){const _0x53f39d=['parse','cmd','toISOString','disconnect','Forget\x20device\x20success','211686mzrbIw','slice','log','Timeout','keys','readable','Connected','stringify','serial','writable','onError','Device\x20has\x20been\x20connected.','message','split','releaseLock','catch','cancel','7DXUZsD','getPorts','toUpperCase','MD5','3684210ptjEnq','none','944516chMBDi','28KOJFfX','addEventListener','forget','then','write','close','You\x20do\x20not\x20provide\x20me\x20your\x20key.\x20Please\x20help\x20provide\x20me\x20your\x20key.','toString','225773glgkjh','replace','reduce','open','CANCEL','5088856XZIotz','10CbNZDb','getWriter','onForget','pipeTo','7142526dHzdVN','read','connect','onSale','Not\x20provide\x20key.','onSuccess','requestPort','24681465FQtIyn','Device\x20has\x20been\x20lost\x20connection','Your\x20browser\x20is\x20not\x20supported.'];a0_0x32b2=function(){return _0x53f39d;};return a0_0x32b2();}function a0_0x48d3(_0x4aeba9,_0xb560e){const _0x32b2f3=a0_0x32b2();return a0_0x48d3=function(_0x48d31e,_0x5cb75f){_0x48d31e=_0x48d31e-0xf8;let _0x46ae24=_0x32b2f3[_0x48d31e];return _0x46ae24;},a0_0x48d3(_0x4aeba9,_0xb560e);}import a0_0x56d3ae,{enc}from'crypto-js';class Terminal{#KEY=null;#DATA=null;#PORT=null;#TIMER=null;#WRITER=null;#READER=null;#TIMEOUT=null;#DATE_BITS=0x8;#STOP_BITS=0x1;#BAUD_RATE=0x1c200;#PARITY=a0_0x395e06(0xfd);#BUFFER_SIZE=0x400;#MD5_ENCRYPTION=null;#WRITABLE_STREAM_CLOSED=null;#READABLE_STREAM_CLOSED=null;#DATE_FORMAT=new Date()[a0_0x395e06(0x11d)]()['replace']('T','\x20')[a0_0x395e06(0x108)]('Z','')[a0_0x395e06(0x12d)]('.')[0x0];#FILTERS=[{'usbVendorId':0x5c6,'usbProductId':0x9025},{'usbVendorId':0x67b,'usbProductId':0x2303}];#SUPPORTED_BROWSER=0x1;#OPEN_SERIAL_PORT_ERROR=0x2;#OPEN_SERIAL_PORT_PAIR_ERROR=0x3;#WRITE_STREAM_ERROR=0x4;#READ_STREAM_ERROR=0x5;#VALIDATE_KEY=0x6;#CONNECTED_SERIAL_PORT=0x7;#DISCONNECTED_SERIAL_PORT=0x8;#FORGET_PORT=0x9;#CANCEL_TRANSACTION=0xa;constructor({key:_0x38d18f,timeout:_0x2ea769,onConnected:_0x4132c9,onSuccess:_0x242e69,onError:_0x359ce4}){const _0x500019=a0_0x395e06;!_0x38d18f&&(console[_0x500019(0x122)](_0x500019(0x105)),this[_0x500019(0x12a)]({'status':this.#VALIDATE_KEY,'message':_0x500019(0x115)})),this.#KEY=_0x38d18f,this.#TIMEOUT=_0x2ea769||0xea60,this[_0x500019(0x116)]=_0x242e69||function(){},this['onError']=_0x359ce4||function(){},this['onConnected']=_0x4132c9||function(){},!this.#isSupportedBrowser()&&(console['log']('Your\x20browser\x20is\x20not\x20supported.'),this[_0x500019(0x12a)]({'status':this.#SUPPORTED_BROWSER,'message':_0x500019(0x11a)})),navigator[_0x500019(0x128)][_0x500019(0x100)](_0x500019(0x113),_0x597efc=>{const _0x5db008=_0x500019;this[_0x5db008(0x116)]({'status':this.#CONNECTED_SERIAL_PORT,'message':_0x5db008(0x12b)});if(this.#TIMER)clearTimeout(this.#TIMER);}),navigator['serial']['addEventListener'](_0x500019(0x11e),_0x22f91f=>{const _0x56614c=_0x500019;this[_0x56614c(0x12a)]({'status':this.#DISCONNECTED_SERIAL_PORT,'message':_0x56614c(0x119)});if(this.#TIMER)clearTimeout(this.#TIMER);});}#handleRequestSerialPort(){return new Promise((_0x228155,_0x458e3b)=>{const _0x2e9c6a=a0_0x48d3;return navigator[_0x2e9c6a(0x128)][_0x2e9c6a(0x117)]({'filters':this.#FILTERS})[_0x2e9c6a(0x102)](_0x3b6a9a=>{_0x228155(_0x3b6a9a);})[_0x2e9c6a(0x12f)](_0x3fcf37=>{const _0x214ffb=_0x2e9c6a;_0x458e3b({'status':this.#OPEN_SERIAL_PORT_ERROR,'message':_0x3fcf37?.[_0x214ffb(0x12c)]});});});}#handleOpenSerialPort(){return new Promise((_0x49ec16,_0x3894ea)=>{const _0x2d44cc=a0_0x48d3;return this.#PORT[_0x2d44cc(0x10a)]({'baudRate':this.#BAUD_RATE,'dataBits':this.#DATE_BITS,'stopBits':this.#STOP_BITS,'parity':this.#PARITY,'bufferSize':this.#BUFFER_SIZE})['then'](_0x59ce56=>_0x49ec16(_0x59ce56))['catch'](_0x707b4a=>{const _0x3dbbb0=_0x2d44cc;_0x3894ea({'status':this.#OPEN_SERIAL_PORT_PAIR_ERROR,'message':_0x707b4a?.[_0x3dbbb0(0x12c)]});});});}#handleWriteStream(_0x403115){return new Promise((_0x2c01bd,_0x24d17e)=>{const _0x4fda98=a0_0x48d3,_0x1e7e8b=new TextEncoderStream();return this.#WRITABLE_STREAM_CLOSED=_0x1e7e8b[_0x4fda98(0x125)][_0x4fda98(0x110)](this.#PORT['writable']),this.#WRITER=_0x1e7e8b[_0x4fda98(0x129)][_0x4fda98(0x10e)](),this.#WRITER[_0x4fda98(0x103)](_0x403115)['then'](_0x2c9c05=>{_0x2c01bd(_0x2c9c05);})[_0x4fda98(0x12f)](_0x1293c5=>{const _0x48a41a=_0x4fda98;_0x24d17e({'status':this.#WRITE_STREAM_ERROR,'message':_0x1293c5?.[_0x48a41a(0x12c)]});});});}#handleReadStream(){const _0x51baae=a0_0x395e06;try{const _0x13ae5b=new TextDecoderStream();this.#READABLE_STREAM_CLOSED=this.#PORT[_0x51baae(0x125)][_0x51baae(0x110)](_0x13ae5b[_0x51baae(0x129)]),this.#READER=_0x13ae5b[_0x51baae(0x125)]['getReader']();}catch(_0x27f7f3){this['onError']({'status':this.#READ_STREAM_ERROR,'message':_0x27f7f3?.[_0x51baae(0x12c)]});}}#handleGenerateMD5(_0x2371ed){const _0x35f5d3=a0_0x395e06,_0x28358b=JSON[_0x35f5d3(0x127)](_0x2371ed),_0x4fbefe=_0x28358b+this.#KEY;return this.#MD5_ENCRYPTION=a0_0x56d3ae[_0x35f5d3(0xfb)](_0x4fbefe)[_0x35f5d3(0x106)]()[_0x35f5d3(0xfa)](),'@'+this.#MD5_ENCRYPTION+_0x28358b;}async #listenToTerminal(){const _0x4fe00e=a0_0x395e06;try{const _0x2ae477=[];let _0x1fcdb2='',_0x474bc5=0x0;while(!![]){const {value:_0x5df304,done:_0x39e29b}=await this.#READER[_0x4fe00e(0x112)]();if(_0x39e29b){this.#READER[_0x4fe00e(0x12e)]();break;}if(this.#TIMER)clearTimeout(this.#TIMER);_0x1fcdb2+=_0x5df304,_0x474bc5+=0x1;const _0x2ae3ce=setTimeout(async()=>{this.#handlePrintResult(_0x1fcdb2),await this.#handleReleasePort();},0x64);_0x2ae477['push'](_0x2ae3ce),clearTimeout(_0x2ae477[_0x474bc5-0x2]);}}catch(_0x43cf8c){this['onError']({'status':this.#READ_STREAM_ERROR,'message':_0x43cf8c?.[_0x4fe00e(0x12c)]});}}#handleSetTimeout(){this.#TIMER=setTimeout(async()=>{const _0x35d78a=a0_0x48d3,_0x2f173c='@'+this.#MD5_ENCRYPTION+JSON[_0x35d78a(0x127)]({...this.#DATA,'APV':'','PAN':'','PAYER':'','MESSAGE':'','TRXN_ID':'','TRACE':'','STATUS':_0x35d78a(0x123)});this.#handlePrintResult(_0x2f173c),await this.#handleReleasePort();},this.#TIMEOUT);}#handlePrintResult(_0x3a35c2){const _0x361ef9=a0_0x395e06;if(!_0x3a35c2)return;this[_0x361ef9(0x116)]({'key':this.#KEY,'value':JSON[_0x361ef9(0x11b)](_0x3a35c2[_0x361ef9(0x121)](0x21))});}async #handleReleasePort(){const _0x218468=a0_0x395e06;this.#READER[_0x218468(0x130)](),await this.#READABLE_STREAM_CLOSED[_0x218468(0x12f)](()=>{}),this.#WRITER[_0x218468(0x104)](),await this.#WRITABLE_STREAM_CLOSED['catch'](()=>{}),await this.#PORT[_0x218468(0x104)]();}#isSupportedBrowser(){const _0x596b0f=a0_0x395e06;return _0x596b0f(0x128)in navigator;}async[a0_0x395e06(0x114)](_0x132d3c){const _0x1abbb1=a0_0x395e06;try{if(!this.#isSupportedBrowser()){console[_0x1abbb1(0x122)](_0x1abbb1(0x11a)),this[_0x1abbb1(0x12a)]({'status':this.#SUPPORTED_BROWSER,'message':'Your\x20browser\x20is\x20not\x20supported.'});return;}if(!this.#KEY){this[_0x1abbb1(0x12a)]({'status':this.#VALIDATE_KEY,'message':'Not\x20provide\x20key.'});return;}const _0x43ef81=await navigator[_0x1abbb1(0x128)][_0x1abbb1(0xf9)]();!this.#PORT&&!_0x43ef81['length']?(this.#PORT=await this.#handleRequestSerialPort(),await this.#handleOpenSerialPort(),this[_0x1abbb1(0x116)]({'status':this.#SUPPORTED_BROWSER,'message':_0x1abbb1(0x126)})):(this.#PORT=_0x43ef81[0x0],await this.#handleOpenSerialPort());const _0x3be2e0={..._0x132d3c,'TIMESTAMP':this.#DATE_FORMAT};this.#DATA=Object[_0x1abbb1(0x124)](_0x3be2e0)[_0x1abbb1(0x109)]((_0x549a95,_0x2d1975)=>{const _0x41bf75=_0x1abbb1;return _0x549a95[_0x2d1975[_0x41bf75(0xfa)]()]=_0x3be2e0[_0x2d1975],_0x549a95;},{});const _0x1cf06d=this.#handleGenerateMD5(this.#DATA);await this.#handleWriteStream(_0x1cf06d);if(_0x132d3c[_0x1abbb1(0x11c)]==='SALE')this.#handleSetTimeout();this.#handleReadStream(),await this.#listenToTerminal();}catch(_0xb4ca37){this['onError'](_0xb4ca37);}}async['onCancel'](){const _0x5c5ce2=a0_0x395e06;try{await this.#handleReleasePort(),await this['onSale']({'cmd':_0x5c5ce2(0x10b)});}catch(_0x18af6e){this['onError']({'status':this.#CANCEL_TRANSACTION,'message':_0x18af6e?.[_0x5c5ce2(0x12c)]});}}async[a0_0x395e06(0x10f)](){const _0x90bd7=a0_0x395e06;try{if(!this.#PORT)return;await this.#PORT[_0x90bd7(0x101)](),this.#PORT=null,this[_0x90bd7(0x116)]({'status':this.#FORGET_PORT,'message':_0x90bd7(0x11f)});}catch(_0x2c398f){this[_0x90bd7(0x12a)]({'status':this.#FORGET_PORT,'message':_0x2c398f?.[_0x90bd7(0x12c)]});}}}export default Terminal;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "terminal-gateway",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "description": "POS SDK is a library that allows users to perform sale transactions on a terminal from a web browser.",
5
5
  "main": "index.js",
6
6
  "author": "",