@katorymnd/pawapay-node-sdk 2.6.2 → 2.8.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@katorymnd/pawapay-node-sdk",
3
- "version": "2.6.2",
3
+ "version": "2.8.0",
4
4
  "description": "Official Premium Node.js SDK by Katorymnd Web Solutions for PawaPay mobile money API integration.",
5
5
  "main": "src/index.js",
6
6
  "exports": {
@@ -35,13 +35,18 @@
35
35
  "format:check": "prettier --check .",
36
36
  "check-master-keys": "node scripts/checkMasterKeys.js",
37
37
  "build": "pnpm check-master-keys && vite build",
38
- "build:vm": "node scripts/vm-encode-bytecode.js",
39
- "vm:test": "node scripts/test-vm.js",
40
- "build:secure": "pnpm check-master-keys && node scripts/obfuscate.js",
41
- "build:full": "pnpm clean:dist && pnpm build:vm && pnpm build:secure",
42
- "test:install": "pnpm build:secure && cd dist && node scripts/install-sdk.js && echo '✅ Test Complete: Wizard ran successfully'",
38
+ "build:core": "napi build --release --no-js --dts false --manifest-path core-rust/Cargo.toml --output-dir ./src/core",
39
+ "build:secure": "pnpm check-master-keys && node scripts/build-secure.js",
40
+ "build:full": "pnpm clean:dist && pnpm build:secure",
41
+ "test:install": "pnpm build:full && cd dist && node scripts/install-sdk.js && echo '✅ Test Complete: Native Vault SDK successfully staged and verified'",
43
42
  "postinstall": "node scripts/install-sdk.js",
44
- "publish:secure": "pnpm build:full && echo '🔍 Verifying Installer...' && cd dist && node scripts/install-sdk.js && echo '🧹 Cleaning Dev Artifacts...' && rimraf src/utils/vm/*.bin src/utils/vm/*.json && echo '🚀 Publishing...' && npm publish --access public"
43
+ "publish:secure": "pnpm build:full && echo '🔍 Verifying Installer...' && cd dist && node scripts/install-sdk.js && echo '🚀 Publishing...' && npm publish --access public"
44
+ },
45
+ "jest": {
46
+ "testEnvironment": "node",
47
+ "modulePathIgnorePatterns": [
48
+ "<rootDir>/dist/"
49
+ ]
45
50
  },
46
51
  "keywords": [
47
52
  "katorymnd",
@@ -78,6 +83,7 @@
78
83
  "winston": "^3.18.3"
79
84
  },
80
85
  "devDependencies": {
86
+ "@napi-rs/cli": "^3.6.0",
81
87
  "bootstrap": "^5.3.3",
82
88
  "connect-livereload": "^0.6.1",
83
89
  "ejs": "^3.1.10",
@@ -85,7 +91,6 @@
85
91
  "eslint-config-prettier": "^10.1.8",
86
92
  "eslint-plugin-prettier": "^5.5.4",
87
93
  "express": "^4.21.2",
88
- "javascript-obfuscator": "^4.1.1",
89
94
  "jest": "^29.7.0",
90
95
  "livereload": "^0.10.3",
91
96
  "nodemon": "^3.1.10",
@@ -95,6 +100,16 @@
95
100
  "vite": "^7.1.12",
96
101
  "vite-plugin-ejs": "^1.7.0"
97
102
  },
103
+ "napi": {
104
+ "name": "katorymnd_pawapay_core",
105
+ "triples": {
106
+ "defaults": true,
107
+ "additional": [
108
+ "x86_64-unknown-linux-musl",
109
+ "aarch64-unknown-linux-musl"
110
+ ]
111
+ }
112
+ },
98
113
  "engines": {
99
114
  "node": ">=14.0.0",
100
115
  "pnpm": ">=8.0.0"
@@ -108,4 +123,4 @@
108
123
  "bugs": {
109
124
  "url": "https://github.com/katorymnd/pawapay-node-sdk/issues"
110
125
  }
111
- }
126
+ }
@@ -1 +1,123 @@
1
- const _0x2bc028=_0x2231;(function(_0x167e4f,_0x24a264){const _0x1e7cdf=_0x2231,_0x12c359=_0x167e4f();while(!![]){try{const _0x3828a9=-parseInt(_0x1e7cdf(0xcb,'cQ(&'))/0x1*(-parseInt(_0x1e7cdf(0x10b,'cQ(&'))/0x2)+-parseInt(_0x1e7cdf(0xe9,'Fpj$'))/0x3+parseInt(_0x1e7cdf(0xd0,'jG7Z'))/0x4*(-parseInt(_0x1e7cdf(0x116,'%ngu'))/0x5)+-parseInt(_0x1e7cdf(0xb3,'hHE('))/0x6+-parseInt(_0x1e7cdf(0x12f,'Ecm$'))/0x7*(-parseInt(_0x1e7cdf(0xfe,'24kn'))/0x8)+-parseInt(_0x1e7cdf(0x143,'bd!j'))/0x9+parseInt(_0x1e7cdf(0x18e,'sCok'))/0xa;if(_0x3828a9===_0x24a264)break;else _0x12c359['push'](_0x12c359['shift']());}catch(_0x2eb78a){_0x12c359['push'](_0x12c359['shift']());}}}(_0x4bd1,0x870a8));const fs=require('fs'),path=require(_0x2bc028(0x132,'4w7d')),colors={'reset':_0x2bc028(0xc1,'4w7d'),'cyan':_0x2bc028(0xf3,'E![#'),'green':_0x2bc028(0xca,'4w7d'),'yellow':_0x2bc028(0xe8,'WL8e'),'red':_0x2bc028(0x102,'KtqH'),'dim':_0x2bc028(0x11f,'xWSy')};function _0x4bd1(){const _0x2c69cd=['W4TAfxRdQYu','W7FdOw8wWPnTWPRcLxSqbWBdQa','hxFdICkKWRKxW4KosCkT','4OsUFsX8AwTXWPVcO8k6','FXhcOmkGta','y0ldSmkbWRHh','DvldRSonWRzaAmkNaXK','yqpcGCkkkWbbW6eIW4i','WR5+W6fGWRpcVmozW4dcUSkQ','WPtcNComW67dLq','AhtdUIdcGhpcOComzcG','W6tcMmoDW6iA','W4mUrmokwCoQWP3dM0ldUW','4PsX4PEJ4Ps/4PwW4PAk4Pw54PAK4PAG4PAt4PEO','uhldMmkIWQy','W5aFACo9iCo6jSkZcGW','W6VdO8kBW7BcSG','mfPfzhNdNmk4aevB','WQuQzSo8ymomlSkMt3e','4PAk4Psg4PAa4PEN4PwT4PEy4Pwt4PsP4Ps74PsZ','4P6cW53dVCoIdu4UWR3cIXy','C30nDZf5omk6WQtcQW','p2JcSd0','uxhdGa','4Pwh4Psn4PsY4Pwj4Pwb4Pwp4Psb4PAy4PAh4PAp','WQTvhSkxfa','WOOIW4a0WR7cGuNdGwnntCoLBq','FM1Zuf0','WPzCWPNdNWK','AMNdLrpcVNpcGCoIbsS','W4xcG8oo','A8kIxIWFWOK+W6PGBa','sCkhWPibW5C2CKRdIe4','fSoqhvlcLa','BepcO8oOWPxdQ0NcGSkjW4i','W6/cMmocW6Sbta','W73cO8kmWR3dJa','WPyMW7RdRG','zGCU','WP0MW5e','WQFdJmkwW6GyCI/cKCkU','WQVcVs1CW4m5W40','4Os4tmkpW7tcMCo6cSk+WPNdGG','WPFdS8kgdefQ','WPW8xmosxG','W5pcJ8ocWRldSmk0','WO8NW7K','kbxcQSoDW6CglmkChIdcJebO','BqpcPG','W5fGDctcSG','gSozqhmMW7yyW7rbuq','WRqGW5hdH8oC','W6tcPmoWWOpdISkBWR0Ioae','W598smkef8o8WOBcJLBcTa','WRZdVs/dLmkKpmo1vCo3W6aMW4RcIG','WORdO8kvwev+WO0ggqq','WOFdHNOWwa','W73dJ8knW6lcQq','Ea06ef8','W6uRkmoAiCoDjSkAsYy','jMXADMDwiSknWOy','WQhcMSkuWQ/cMxJdUq3cOmoM','WOrOW7NcPxvrWPxdISoWWOK','W7KQE8oVna','4P6zW6rtWOZdTMFcRLhdOCkC','WOldS8kjhvzVWOKpmWS','4OAyW5FcRrBcVCkgfHVcKM8','j2lcQJys','WOddRSkoc1b9WQ4thGq','W7LdW5hcLYy','tCoGpmoRtGWO','kGJcS8odf8kssq','EtO/oq','DdigFdX6p8kRWRJcUW','W4TBfhZdTG','xvBdKW','WQP5W7zGW70','CbKAlwu','W77cT3FcGSo7FmoU','WPddJ8k9ASoIW7qAlSk8ycu','mmk0WPldSa','4P6JcWuhW4NcLSoqFKq5','WQFcRdSb','4PEy4PEv4Ps54Pst','DuRdRmkbWRjeFCoRqJK','WOLFWRGzbW','iSkhWP9YW7uXA07dIee','W4xcMmonW7iCuIJcRCoFda','FatcNmoh','4PAH4Psz4PEM4PAH','W4lcOmoKo8kB','WPb9smohdmoHWPFcJKpcVG','CXlcMG','W5T7W5bSW6pdLHVcMa','WOjAWP3dMaVcKbtcNZddJG','WOVdSCk6wa','cLNdGmo2WQuIW6K','W43cMmoQ','W4RdTmkrWOVcQLRdMdxdTmoM','W7SUFmoI','uSoGkW','W413nIlcRSkV','8yEGGCk+WO5uymkIWPhcPmkLgW','W4tcJ8oKk8kMW5uKaCkizq','vSkzWReIWPtdSCkoW6FcRmoWW4FdJeC','dmkLWRKeW6ldSZ95lh4','BrJcMq','W6PsW4FcLG','shzJshG','WRu4W7ddHvJdUxyqgqy','W6tdQG4','4PAH4Psz4PEM4PAS4PAf4Pw34PEE4PAz4Pwa4Pw6','WOGAWQisu8o6wCkCW4/dHG','fCoWaCoYyGqu','WPbAWPxdLqNdMrpcMdddIG','WPy+W590W7JdMXldHtvH','vSksWRuRWP3dT8kpW5BcISo+W4ddRuC','4PMgW5JcN8ooW5KnnSkhWRfx','W69WouddGaddTSokgSo4','WR9UW6bGW6C','WPpdJSk/yCoRWPzchSk0uGHhW4C','W5n3tmok','4PYztmksW7tcGSo7wmkeWPNdNG','W7NcK8koW7mbgYZcPSkAha','W51Ad3ZdQMu','W4jgaq','4P67w8ocWRFdKSoJWRTesCk2','WOpdJve','wg/dOdhcSa','krxcH8kcFGjbWRm8W44','WOxcRCoNWOxcTLBdJJxdTmoQ','W61cW751W6hcNSo2W6ddLCk7','WONdLCo3nG','4PA24PAO4PEV4PEB4PEX4Ps04Psv4PAJ4PAi4PwP','uhlcKSoCkW','mfVdT8kHW5xcTH/dNCkpW6yxDvfW','e8o1awZcIG','W59IWPvKW6i','BHZcOSo+WOxdQ1NdG8khW5q','WRJcMmoaW7foxtxcUmkAqq','WOaXW7/cRG','W5lcN8orWQpcTCkBWRKVvZO','W61FfaRcNSkidmo4uJi','pZpcKSonp8k3y8oAWQldKq','DuDcywtdNCkef0zD','jSolhMVcLa','qmk0WRid','W5pcJ8oqWQpdOq','h1hdMutcLa','8lgrMCoqt8odW6y7WOW6uNO','WPNdICoLkYlcVbxdUtVdVW','WRKHWRq','j8oxW7SRW54','a8klW7r3W4FcSSoiW5NcRmot','WOBdG8oX','dLhdIMVdGmk4WQFcP3HM','W6VdVaGQ','WRL4WPNdMCokWQlcISk3lue','WP5JWPNdH8koW5xcQCk8n00','cCoitq','WOCSWPBcJ8kWvmo9WQb/ra','W4muWOu','uSoGpmo9wW','W4uuWOVcMa','aWVcHfhdRrddL8oSxcldUMW1','4PACk8kZtSoYWOpdT8oMWOZcLq','tgpdGCoDoSoZWOXLW4z0','BrJcJSomlG','qqpcLdFcQ0lcKSoVbqe','WRJcJCopW7apsZ3cRCosha','zH7cPmo0WO8','tM3dJSoRWRfy','FtilDW','4Pwz4Ps24PAY4PAX4PwB4PsG4Pw04PEd4PsF4PE7','qCkaW4NdSW','DdigFdfynmkMWRlcRq','oSo0DK8mWP0ZW5CODW','kdRcMSoBimkPxa','W5XzmWFdHa','4P++WOZdMZKOWRSsWRC4WR0','WPpdICo6nctcPa','W5XmfxBdSa','qSkVWRmcWQ3dKd9Lz2y','4PAH4Pw+4PAS4PEQ4Ps34PAP4Ps34PAN4Pwa4PE/','W4P1WPq','smkIW4FdRYm','4PER4Pw74Psg4PsY4PE64PAZ4PEY4Pwh4PwG4Psq','W59cjaZdI8koW4C','4PA04PAe4PAx4PA64PAw4PwJ4PES4Pse4PEq4PEF','WRZcP8kEWRZcSW','WQ3cT3VcMCoGF8oNvSoQW5i','W5VcM8kGAh/dQ07dQt/dKCkwsmocWPC','4P+LACoLWPNcTLldVmkGzfm','zqNcHq','W6O8W5VcNmosW4FdK8kOmwZcJCkjW6K','W5TPW4XnrSkmW7TVuCoD','aCkYWQijWQm','W4VcUmoic1zTW5iFba4','W6tdRbmTW77dMmoGvmo+jW','mhxcQZWu','f2JcRd0comkOWRtcRHq','W5/cJM/cMCop','aCoFW7jIWOtcKmoBW4lcTSod','WP5dWOZdLGlcJqldLZJdRa','W5HHpIFdIa','W7JcV0KxW6tdNSkYC8k7pq','W7rLjHFdSa','AeldR8kiWQm','WPauomoN','WRBcQ8oYW5/dKG','W4z9ncpcPmk2oCkp4Pwc','4PE74PA64PEZ4PAw4PEf4PAa4PAO4PsR4Pwi4Ps4','f8owhexcRG','shddG8kQW78LW6ePc8kH','W6C8j8o8lCkfjCkZxJO','WO3cSCkPWP7cGfRdKdhdSW','cY7cKmkXW6DeWP0pwCkiCw8v','WPauo8k4lq','jMvskYfnpmkEWO3cUrm','BCkKvJOkW4aiW6W2za','W5lcHmoKn8k8W5vE','t3VdLmoHWQS'];_0x4bd1=function(){return _0x2c69cd;};return _0x4bd1();}function _0x2231(_0x30fc9b,_0x373c83){const _0x4bd19b=_0x4bd1();return _0x2231=function(_0x223173,_0x370b90){_0x223173=_0x223173-0xb2;let _0x5467e7=_0x4bd19b[_0x223173];if(_0x2231['ZPfKIO']===undefined){var _0x50c11b=function(_0x18f0c6){const _0x91c349='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x24082a='',_0x3526eb='';for(let _0x200a3b=0x0,_0xa5a55a,_0x44db72,_0x3b6dc5=0x0;_0x44db72=_0x18f0c6['charAt'](_0x3b6dc5++);~_0x44db72&&(_0xa5a55a=_0x200a3b%0x4?_0xa5a55a*0x40+_0x44db72:_0x44db72,_0x200a3b++%0x4)?_0x24082a+=String['fromCharCode'](0xff&_0xa5a55a>>(-0x2*_0x200a3b&0x6)):0x0){_0x44db72=_0x91c349['indexOf'](_0x44db72);}for(let _0x9cd362=0x0,_0x5ed4fd=_0x24082a['length'];_0x9cd362<_0x5ed4fd;_0x9cd362++){_0x3526eb+='%'+('00'+_0x24082a['charCodeAt'](_0x9cd362)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3526eb);};const _0x661e53=function(_0x514a29,_0x52fd31){let _0x359c91=[],_0x559211=0x0,_0x1e3770,_0x11c6fb='';_0x514a29=_0x50c11b(_0x514a29);let _0x403419;for(_0x403419=0x0;_0x403419<0x100;_0x403419++){_0x359c91[_0x403419]=_0x403419;}for(_0x403419=0x0;_0x403419<0x100;_0x403419++){_0x559211=(_0x559211+_0x359c91[_0x403419]+_0x52fd31['charCodeAt'](_0x403419%_0x52fd31['length']))%0x100,_0x1e3770=_0x359c91[_0x403419],_0x359c91[_0x403419]=_0x359c91[_0x559211],_0x359c91[_0x559211]=_0x1e3770;}_0x403419=0x0,_0x559211=0x0;for(let _0xcb83cf=0x0;_0xcb83cf<_0x514a29['length'];_0xcb83cf++){_0x403419=(_0x403419+0x1)%0x100,_0x559211=(_0x559211+_0x359c91[_0x403419])%0x100,_0x1e3770=_0x359c91[_0x403419],_0x359c91[_0x403419]=_0x359c91[_0x559211],_0x359c91[_0x559211]=_0x1e3770,_0x11c6fb+=String['fromCharCode'](_0x514a29['charCodeAt'](_0xcb83cf)^_0x359c91[(_0x359c91[_0x403419]+_0x359c91[_0x559211])%0x100]);}return _0x11c6fb;};_0x2231['laVXBU']=_0x661e53,_0x30fc9b=arguments,_0x2231['ZPfKIO']=!![];}const _0x435d6b=_0x4bd19b[0x0],_0x523683=_0x223173+_0x435d6b,_0x107c1c=_0x30fc9b[_0x523683];return!_0x107c1c?(_0x2231['KiUceV']===undefined&&(_0x2231['KiUceV']=!![]),_0x5467e7=_0x2231['laVXBU'](_0x5467e7,_0x370b90),_0x30fc9b[_0x523683]=_0x5467e7):_0x5467e7=_0x107c1c,_0x5467e7;},_0x2231(_0x30fc9b,_0x373c83);}console[_0x2bc028(0xf5,'Wu*$')]('\x0a'+colors[_0x2bc028(0x148,'WL8e')]+(_0x2bc028(0xdc,'%oiG')+_0x2bc028(0x13e,')*@k')+_0x2bc028(0x189,'0J^P')+_0x2bc028(0xe7,'cQ(&')+_0x2bc028(0x154,'E![#')+_0x2bc028(0xe2,'ckti')+_0x2bc028(0x122,'UO*R'))+colors[_0x2bc028(0x171,'5T7%')]),console[_0x2bc028(0xff,'DIZG')](colors[_0x2bc028(0x153,'sCok')]+(_0x2bc028(0x174,'FBd0')+_0x2bc028(0x10a,'4w7d')+_0x2bc028(0x15e,'%ngu')+_0x2bc028(0x125,'^9!9')+_0x2bc028(0xb7,'UO*R')+_0x2bc028(0xee,'7%3f')+_0x2bc028(0xc3,'apAI'))+colors[_0x2bc028(0xdf,'fWY3')]),console[_0x2bc028(0x13d,'UO*R')](colors[_0x2bc028(0x127,'%ngu')]+(_0x2bc028(0xc4,'W07v')+_0x2bc028(0x154,'E![#')+_0x2bc028(0x18b,'YuHP')+_0x2bc028(0x186,'431t')+_0x2bc028(0xe7,'cQ(&')+_0x2bc028(0x17c,'mX[J')+_0x2bc028(0x128,')*@k'))+colors[_0x2bc028(0xc5,'%oiG')]+'\x0a');async function install(){const _0x1a7e81=_0x2bc028,_0xd1bd38={'ONpuZ':_0x1a7e81(0xb6,'slJ3')+_0x1a7e81(0xc7,'4w7d')+_0x1a7e81(0x118,'cQ(&')+_0x1a7e81(0x100,'apAI'),'CxqKN':_0x1a7e81(0x142,'Fpj$')+_0x1a7e81(0xf1,'DIZG')+_0x1a7e81(0x138,'i^2p')+'s','cWicI':function(_0x360438,_0x560267){return _0x360438(_0x560267);},'XsYVu':_0x1a7e81(0x126,'J92d')+_0x1a7e81(0x104,'WL8e')+_0x1a7e81(0xc6,'Ecm$')+_0x1a7e81(0x151,'YuHP')+_0x1a7e81(0xd1,'Ecm$')+_0x1a7e81(0x12c,'Fpj$'),'treJt':_0x1a7e81(0x159,'DIZG')+'on','cMgrC':_0x1a7e81(0x178,'J92d')+_0x1a7e81(0xcf,'Z%]e'),'XIHZh':function(_0x116705,_0x4ade59){return _0x116705!==_0x4ade59;},'scrrN':_0x1a7e81(0x108,'fWY3'),'NpIyb':_0x1a7e81(0xc2,'E![#'),'hdLjh':function(_0x4a3c27,_0x19e306){return _0x4a3c27===_0x19e306;},'iVTUo':_0x1a7e81(0xea,'j9!k'),'JUDOq':_0x1a7e81(0x157,'%oiG'),'JeoKu':function(_0x132327,_0x2398fa){return _0x132327!==_0x2398fa;},'cJhEb':_0x1a7e81(0xd3,'mX[J'),'zqSXN':_0x1a7e81(0xba,'NJVB')};try{const _0x274bc0=process[_0x1a7e81(0x166,'ckti')](),_0x35d057=[path[_0x1a7e81(0x17d,'xWSy')](__dirname,_0xd1bd38[_0x1a7e81(0xbf,'0J^P')]),path[_0x1a7e81(0x172,'KtqH')](__dirname,_0xd1bd38[_0x1a7e81(0x160,'%oiG')])];let _0xccdbb7,_0x429120;for(const _0x6029e6 of _0x35d057){if(fs[_0x1a7e81(0x136,'u3Dr')](_0x6029e6))try{_0xccdbb7=_0xd1bd38[_0x1a7e81(0x129,'u3Dr')](require,_0x6029e6),_0x429120=_0x6029e6;break;}catch(_0x3df6d3){}}if(!_0xccdbb7)throw new Error(_0xd1bd38[_0x1a7e81(0x18c,'YuHP')]);const _0x3a7dfb=new _0xccdbb7(),_0x397c0f=path[_0x1a7e81(0x18a,'0J^P')](_0x429120),_0x533fad=path[_0x1a7e81(0x17b,'cQ(&')](_0x397c0f,_0xd1bd38[_0x1a7e81(0x163,'*7fo')]),_0x42f400=path[_0x1a7e81(0xe5,'vt3K')](_0x274bc0,_0xd1bd38[_0x1a7e81(0x188,'xWSy')]);if(fs[_0x1a7e81(0x113,'slJ3')](_0x533fad)){console[_0x1a7e81(0x169,'sCok')](colors[_0x1a7e81(0xd4,'24kn')]+(_0x1a7e81(0x144,'E![#')+_0x1a7e81(0x168,'bd!j')+_0x1a7e81(0xe0,'j9!k')+_0x1a7e81(0x175,'580c')+'d.')+colors[_0x1a7e81(0xc5,'%oiG')]);fs[_0x1a7e81(0x15f,'j9!k')](_0x42f400)?_0xd1bd38[_0x1a7e81(0x13b,'j9!k')](_0xd1bd38[_0x1a7e81(0xf0,'%oiG')],_0xd1bd38[_0x1a7e81(0x167,'^9!9')])?console[_0x1a7e81(0x12b,'%ngu')](colors[_0x1a7e81(0x11b,'FBd0')]+(_0x1a7e81(0x14d,'KtqH')+_0x1a7e81(0x165,'sCok')+_0x1a7e81(0xf4,'a2Ow'))+colors[_0x1a7e81(0x114,'N6ek')]):_0x17034a[_0x1a7e81(0xb8,'vt3K')](_0x5d7f36[_0x1a7e81(0x139,'%ngu')]+(_0x1a7e81(0xde,'4w7d')+_0x1a7e81(0x16c,'hHE(')+_0x1a7e81(0x12e,'slJ3'))+_0x2543b0[_0x1a7e81(0xf8,'jG7Z')]+_0x37d9a9[_0x1a7e81(0xce,'Ecm$')]):console[_0x1a7e81(0xf5,'Wu*$')](colors[_0x1a7e81(0x183,'sCok')]+(_0x1a7e81(0x111,'u3Dr')+_0x1a7e81(0x16f,')*@k')+_0x1a7e81(0x131,'YuHP')+_0x1a7e81(0x13c,'ckti')+_0x1a7e81(0xe4,'cQ(&')+_0x1a7e81(0xb5,'i^2p'))+colors[_0x1a7e81(0x124,'WxvX')]);console[_0x1a7e81(0x14e,'dVLv')](colors[_0x1a7e81(0xed,'W07v')]+(_0x1a7e81(0xef,'^9!9')+_0x1a7e81(0x10d,'a2Ow')+_0x1a7e81(0x14a,'J92d')+_0x1a7e81(0x16a,'*7fo')+_0x1a7e81(0x121,'jG7Z'))+colors[_0x1a7e81(0xc0,'24kn')]+'\x0a');return;}const _0x415600=_0x3a7dfb[_0x1a7e81(0x110,'slJ3')+_0x1a7e81(0xc8,'YuHP')](_0x397c0f);_0x415600?(console[_0x1a7e81(0x14c,'Z%]e')](colors[_0x1a7e81(0x158,'Fpj$')]+(_0x1a7e81(0x18f,')*@k')+_0x1a7e81(0x152,'FBd0')+_0x1a7e81(0xfa,'slJ3'))+colors[_0x1a7e81(0x176,'%ngu')]),console[_0x1a7e81(0x130,'u3Dr')](colors[_0x1a7e81(0x181,'0J^P')]+(_0x1a7e81(0x10f,'NJVB')+_0x1a7e81(0x16d,'hHE(')+_0x1a7e81(0x17e,'cQ(&')+_0x1a7e81(0x161,'i^2p'))+colors[_0x1a7e81(0xda,'J92d')]),console[_0x1a7e81(0xe6,'Ecm$')](colors[_0x1a7e81(0x15b,'a2Ow')]+(_0x1a7e81(0xf9,'DIZG')+_0x1a7e81(0xbe,'UO*R')+_0x1a7e81(0x106,'slJ3')+_0x1a7e81(0x101,'0fTc')+_0x1a7e81(0xcc,'7%3f')+_0x1a7e81(0x150,'mX[J')+_0x1a7e81(0x17a,'Ecm$'))+colors[_0x1a7e81(0xd8,'E![#')]),console[_0x1a7e81(0x13d,'UO*R')]('\x0a'+colors[_0x1a7e81(0x134,'apAI')]+(_0x1a7e81(0x164,'Fpj$')+_0x1a7e81(0x15c,'W07v')+_0x1a7e81(0xd9,'F@bV')+_0x1a7e81(0x17f,'0fTc')+_0x1a7e81(0x10c,'YuHP')+_0x1a7e81(0x13f,'WxvX')+_0x1a7e81(0xe1,'4w7d'))+colors[_0x1a7e81(0xda,'J92d')]+'\x0a')):_0xd1bd38[_0x1a7e81(0x107,'dVLv')](_0xd1bd38[_0x1a7e81(0x14f,'F@bV')],_0xd1bd38[_0x1a7e81(0xdd,'24kn')])?(_0x3fa53d[_0x1a7e81(0x170,'KtqH')](_0x8af889[_0x1a7e81(0xeb,'431t')]+(_0x1a7e81(0xe3,'J92d')+_0x1a7e81(0x152,'FBd0')+_0x1a7e81(0xfc,'W07v'))+_0x274431[_0x1a7e81(0x10e,'4w7d')]),_0x559bac[_0x1a7e81(0x14e,'dVLv')](_0x421c4e[_0x1a7e81(0x179,'DIZG')]+(_0x1a7e81(0x182,'sCok')+_0x1a7e81(0xb9,'vt3K')+_0x1a7e81(0x185,'i^2p')+_0x1a7e81(0x13a,'N6ek'))+_0x5e205c[_0x1a7e81(0x109,'Wu*$')]),_0x29ee0e[_0x1a7e81(0x11a,'F@bV')](_0x438875[_0x1a7e81(0x16b,'UO*R')]+(_0x1a7e81(0xd2,'cQ(&')+_0x1a7e81(0x177,'F@bV')+_0x1a7e81(0xd5,'24kn')+_0x1a7e81(0x141,'431t')+_0x1a7e81(0x12d,'431t')+_0x1a7e81(0x12a,'WL8e')+_0x1a7e81(0x14b,'Z%]e'))+_0x3fbfe4[_0x1a7e81(0x146,'FBd0')]),_0x131a7b[_0x1a7e81(0xb2,'mX[J')]('\x0a'+_0x594f0c[_0x1a7e81(0xf2,'J92d')]+(_0x1a7e81(0x135,'a2Ow')+_0x1a7e81(0xd7,'FBd0')+_0x1a7e81(0x15d,'apAI')+_0x1a7e81(0x145,'Z%]e')+_0x1a7e81(0x103,'W07v')+_0x1a7e81(0xdb,'WL8e')+_0x1a7e81(0x15a,'J92d'))+_0x1558fc[_0x1a7e81(0x112,'vt3K')]+'\x0a')):console[_0x1a7e81(0xfd,'a2Ow')](colors[_0x1a7e81(0x16e,'0fTc')]+(_0x1a7e81(0x120,'0J^P')+_0x1a7e81(0x18d,'NJVB')+_0x1a7e81(0xbc,'431t')+_0x1a7e81(0xb4,')X24')+_0x1a7e81(0x11d,'NJVB'))+colors[_0x1a7e81(0x155,'580c')]+'\x0a');}catch(_0x5d95f8){_0xd1bd38[_0x1a7e81(0xfb,'22W*')](_0xd1bd38[_0x1a7e81(0xbd,'0J^P')],_0xd1bd38[_0x1a7e81(0x11c,'Wu*$')])?console[_0x1a7e81(0x119,'Z%]e')](colors[_0x1a7e81(0x187,'Fpj$')]+(_0x1a7e81(0xec,'F@bV')+_0x1a7e81(0xbb,'bd!j')+_0x1a7e81(0x117,'cQ(&'))+_0x5d95f8[_0x1a7e81(0x115,'5T7%')]+colors[_0x1a7e81(0x162,'W07v')]):_0x1fae5f[_0x1a7e81(0xf6,')*@k')](_0x36f122[_0x1a7e81(0x133,'5T7%')]+(_0x1a7e81(0x149,'DIZG')+_0x1a7e81(0x18d,'NJVB')+_0x1a7e81(0x123,'24kn')+_0x1a7e81(0xd6,'mX[J')+_0x1a7e81(0xcd,'u3Dr'))+_0x428d4e[_0x1a7e81(0x184,'Z%]e')]+'\x0a');}}install();
1
+ /**
2
+ * PAWAPAY SDK ACTIVATOR (NATIVE ENGINE)
3
+ * ------------------------------------------------------------------
4
+ * This script runs automatically via the 'postinstall' hook.
5
+ * It initializes the security environment by:
6
+ * 1. Creating a unique Installation Imprint (.pawapay-imprint)
7
+ * 2. Asking Rust to generate machine-bound Shuffled Opcodes
8
+ * 3. Encrypting and Binding the VM bytecode to this specific machine (.bin)
9
+ * ------------------------------------------------------------------
10
+ */
11
+
12
+ const fs = require("fs");
13
+ const path = require("path");
14
+ const crypto = require("crypto");
15
+
16
+ const colors = {
17
+ reset: "\x1b[0m",
18
+ cyan: "\x1b[36m",
19
+ green: "\x1b[32m",
20
+ yellow: "\x1b[33m",
21
+ red: "\x1b[31m",
22
+ dim: "\x1b[2m"
23
+ };
24
+
25
+ console.log(`\n${colors.cyan}╔══════════════════════════════════════════════════════════════╗${colors.reset}`);
26
+ console.log(`${colors.cyan}║ Katorymnd PawaPay NodeJs SDK - Initializing Native Security ║${colors.reset}`);
27
+ console.log(`${colors.cyan}╚══════════════════════════════════════════════════════════════╝${colors.reset}\n`);
28
+
29
+ async function install() {
30
+ try {
31
+ const projectRoot = process.cwd();
32
+ const vmDir = path.join(projectRoot, "src", "utils", "vm");
33
+
34
+ // Ensure the VM directory exists exactly where the old code expects it
35
+ if (!fs.existsSync(vmDir)) {
36
+ fs.mkdirSync(vmDir, { recursive: true });
37
+ }
38
+
39
+ const imprintPath = path.join(projectRoot, ".pawapay-imprint");
40
+ const sessionPath = path.join(projectRoot, ".pawapay-session");
41
+ const opcodesPath = path.join(vmDir, "opcodes.json");
42
+ const bytecodePath = path.join(vmDir, "bytecode.bin");
43
+
44
+ // 1. CHECK FOR EXISTING VM ENVIRONMENT
45
+ if (fs.existsSync(opcodesPath) && fs.existsSync(bytecodePath)) {
46
+ console.log(`${colors.yellow}⚠ Existing security environment detected.${colors.reset}`);
47
+
48
+ if (fs.existsSync(sessionPath)) {
49
+ console.log(`${colors.green}✔ Active session found.${colors.reset}`);
50
+ } else {
51
+ console.log(`${colors.yellow}ℹ No active session. Validation required on first run.${colors.reset}`);
52
+ }
53
+
54
+ console.log(`${colors.dim} Skipping generation to preserve VM state.${colors.reset}\n`);
55
+ return;
56
+ }
57
+
58
+ // 2. LOAD THE RUST NATIVE CORE
59
+ let NativeCore;
60
+ try {
61
+ NativeCore = require("../src/core/index.js");
62
+ } catch (e) {
63
+ throw new Error("Native Rust core not found. Ensure the binary is built.");
64
+ }
65
+
66
+ // 3. GENERATE IMPRINT (Matching your 16-char hex format)
67
+ const imprint = crypto.randomBytes(8).toString("hex");
68
+ fs.writeFileSync(imprintPath, imprint, "utf8");
69
+ console.log(`${colors.green}✔ Security Imprint Created${colors.reset}`);
70
+
71
+ // 4. GENERATE MACHINE-BOUND OPCODES (Via Rust)
72
+ const rawOpcodesStr = NativeCore.generateShuffledOpcodes(imprint);
73
+ const rawOpcodes = JSON.parse(rawOpcodesStr);
74
+
75
+ // Format opcodes.json EXACTLY as requested
76
+ const formattedOpcodes = {
77
+ imprintHash: imprint,
78
+ generatedAt: Date.now(),
79
+ opcodes: rawOpcodes
80
+ };
81
+ fs.writeFileSync(opcodesPath, JSON.stringify(formattedOpcodes, null, 2), "utf8");
82
+ console.log(`${colors.green}✔ Native Opcodes Shuffled & Saved${colors.reset}`);
83
+
84
+ // 5. COMPILE AND ENCRYPT BYTECODE (Via Rust -> AES Encryption)
85
+ const vmBytecodeStr = NativeCore.getInternalLogic(rawOpcodesStr);
86
+ const parsedLogic = JSON.parse(vmBytecodeStr);
87
+ const codeArrayStr = JSON.stringify(parsedLogic.code);
88
+
89
+ // Encrypt the payload exactly like the old JS encoder did
90
+ const encryptionKey = crypto.createHash("sha256").update(imprint).digest();
91
+ const iv = crypto.randomBytes(16);
92
+ const cipher = crypto.createCipheriv("aes-256-cbc", encryptionKey, iv);
93
+
94
+ let encryptedContent = cipher.update(codeArrayStr, "utf8", "hex");
95
+ encryptedContent += cipher.final("hex");
96
+
97
+ const checksum = crypto.createHash("sha256").update(encryptedContent).digest("hex");
98
+
99
+ // Format bytecode.bin EXACTLY as requested
100
+ const formattedBytecode = {
101
+ checksum: checksum,
102
+ timestamp: Date.now(),
103
+ version: "2.0",
104
+ imprint: imprint,
105
+ data: {
106
+ iv: iv.toString("hex"),
107
+ content: encryptedContent,
108
+ imprint: imprint
109
+ }
110
+ };
111
+
112
+ fs.writeFileSync(bytecodePath, JSON.stringify(formattedBytecode, null, 2), "utf8");
113
+ console.log(`${colors.green}✔ Machine-Bound Bytecode Compiled & Encrypted${colors.reset}`);
114
+
115
+ console.log(`\n${colors.cyan}ℹ Next Step: Start your application to establish a secure session.${colors.reset}`);
116
+ console.log(`${colors.yellow}👉 NOTE: Ensure KATORYMND_PAWAPAY_SDK_LICENSE_KEY is in your .env file.${colors.reset}\n`);
117
+
118
+ } catch (err) {
119
+ console.error(`${colors.red}[PawaPay Setup Warning] ${err.message}${colors.reset}`);
120
+ }
121
+ }
122
+
123
+ install();