§ À•¿jÂ+ãó—ddlmZddlmZddlmZddlZddlZddlZddlmZm Z m Z ddl m Z dZ ej ej e¦«d ¦«Zd Zd Zd ZGd „de¦«Zdd„Zdd„Zdd„Zdd„ZdS)é)Úprint_function)Údivision)Úabsolute_importN)Ú check_callÚ list_dirsÚrun_command_fullé)Ú InterpreterÚnodevenvz nodevenv.pyz /opt/cloudlinux/venv/bin/python3z package.jsonz.cl-shared-node-modules.jsoncó~—eZdZdd„Zd„Zd„Zdd„Zdd„Zdd„Zd „Z d „Z d „Z d „Z d „Z dd„Zd„Zd„Zd„Zd„Zd„ZdS)Ú EnvironmentNcó\—||_|r||_n/tjt j¦«¦«j|_|€ t|_n||_tj   t|j|j¦«|¦«|_ d|_ d|_ d|z|_dS)NÚnode)ÚnameÚuserÚpwdÚgetpwuidÚosÚgetuidÚpw_nameÚDEFAULT_PREFIXÚprefixÚpathÚjoinÚ _abs_prefixÚ _interpreterÚ_npmÚinterpreter_name)Úselfrrrs ú_/opt/cloudlinux/venv/lib64/python3.11/site-packages/clselect/clselectnodejsuser/environments.pyÚ__init__zEnvironment.__init__s�€ØˆŒ Ø ð :؈DŒIˆIåœ ¥R¤Y¡[¤[Ñ1Ô1Ô9ˆDŒIØ ˆ>Ý(ˆDŒKˆKà ˆDŒKÝ”G—L’L¥¨T¬Y¸¼ Ñ!DÔ!DÀdÑKÔKˆŒ Ø ˆÔ؈Œ Ø &¨¡ ˆÔÐÐóc ój—|jj›d|jj›d|j›d|j›d|j›d� S)Nú.z(name='z ', user='z ', prefix='z'))Ú __class__Ú __module__Ú__name__rrr©rs r Ú__repr__zEnvironment.__repr__+s@€à ŒNÔ %Ð %Ð % t¤~Ô'>Ð'>Ð'>Ø ŒIˆIˆI�t”y�y�y $¤+ + +ð/ð 0r"cóH‡‡—tj‰j¦«Šˆˆfd„}|S)Ncó•—tj¦«dkrtjg¦«tj‰j¦«tj‰j¦«‰jtjd<‰j tjd<dS)NrÚUSERÚHOME) rÚgeteuidÚ setgroupsÚsetgidÚpw_gidÚsetuidÚpw_uidrÚenvironÚpw_dir)rÚuser_pwds€€r Úfuncz!Environment._demote..func3slø€õ Œz‰|Œ|˜qÒ Ð Ý” ˜RÑ Ô Ð Ý ŒI�h”oÑ &Ô &Ð &Ý ŒI�h”oÑ &Ô &Ð &Ø!%¤�BŒJ�vÑ Ø!)¤�BŒJ�vÑ Ð Ð r")rÚgetpwnamr)rr7r6s` @r Ú_demotezEnvironment._demote0s:øø€Ý”< ¤ Ñ*Ô*ˆð 1ð 1ð 1ð 1ð 1ð 1ðˆ r"cól—|j| ¦«dœ}|r||=t||¦«|iS|S©N)rÚ interpreter)rr<Úgetattr©rÚkeyÚes r Úas_dictzEnvironment.as_dictAsM€à”IØ×+Ò+Ñ-Ô-ð ð ˆð ð +Ø�#�ݘD #Ñ&Ô&¨Ð*Ð *؈r"có�—|j| ¦« ¦«dœ}|r||=t||¦«|iS|Sr;)rr<rAr=r>s r Ú as_deepdictzEnvironment.as_deepdictKsY€à”IØ×+Ò+Ñ-Ô-×5Ò5Ñ7Ô7ð ð ˆð ð +Ø�#�ݘD #Ñ&Ô&¨Ð*Ð *؈r"Fcó—ttd|jg}|r| d¦«| |j¦«d| ¦«i}t j¦«dkrdg|z}t|i|¤ŽdS)Nz--nodez--recreate-binÚ preexec_fnrz/bin/cagefs_enter) Ú PYTHON_PATHÚ NODEVENV_BINÚbinaryÚappendrr9rrr)rr<Ú destroy_firstÚargsÚkwargss r ÚcreatezEnvironment.createUs�€å �Ø �kÔ(ð ˆð ð *Ø �KŠKÐ(Ñ )Ô )Ð )Ø � Š �D”IÑÔÐØ § ¢ ¡¤Ð/ˆÝ Œ9‰;Œ;˜!Ò Ð Ø'Ð(¨4Ñ/ˆDÝ�DÐ#˜FÐ#Ð#Ð#Ð#Ð#r"có\—tddd|j| ¦«¬¦«dS)Nz/bin/rmz-rz--interactive=never©rE)rrr9r(s r ÚdestroyzEnvironment.destroybs9€Ý�9˜dÐ$9¸4¼9Ø"Ÿlšl™nœnð .ñ .ô .ð .ð .ð .r"cóJ—tj |j¦«S©N)rrÚexistsr(s r rSzEnvironment.existsfs€ÝŒw�~Š~˜dœiÑ(Ô(Ð(r"cóR—|jst|j¬¦«|_|jS)N)r)rr rr(s r r<zEnvironment.interpreteris+€ØÔ ð >Ý +°4´9Ð =Ñ =Ô =ˆDÔ ØÔ Ð r"cót—|js+tj |jdd¦«|_|jS)NÚbinÚnpm)rrrrr(s r rWzEnvironment.npmns/€ØŒyð >ÝœŸ š  T¤Y°°uÑ=Ô=ˆDŒIØŒyÐr"có¦— tjtj |jddt¦«¦«dS#t $rYdSwxYw)zAConservatively clear delivery telemetry before plain npm mutates.ÚlibÚ node_modulesN)rÚunlinkrrÚSHARED_NODE_MODULES_MARKERÚOSErrorr(s r Ú&_invalidate_shared_node_modules_markerz2Environment._invalidate_shared_node_modules_markerssi€ð Ý ŒI•b”g—l’l 4¤9¨e°^Ý#=ñ?ô?ñ @ô @ð @ð @ð @øåð ð ð Ø ˆDˆDð øøøs‚>AÁ AÁAú-có—tj¦«dkrtd¦«‚| ¦«df}|dkr||fz }nFtj |t ¦«}tj |¦«sdS|| ¦«|dœ}|�V|f|d<tj |j ¦«}ttj t|¦«|j|j ¬¦«|d <t!d i|¤ŽdS) av Install nodejs extension :param cwd: current working directory for npm (it's full path to app root by default) :param lock_fd: optional already-held Selector application lock passed only to npm_wrapper for continuous transaction ownership :param extension: name and version of extension :return: None rúOperation not permitted.Úinstallr_)rKrEÚcwdNÚpass_fds)ÚCL_SELECTOR_APP_LOCK_FDr-r,Úenv©)rr.ÚPermissionErrorrWrrÚ APP_CONFIGÚisfiler9rr8rÚdictr4Ústrr5r)rÚ extensionrcÚlock_fdÚcommandÚ config_pathÚprocess_kwargsr6s r Úextension_installzEnvironment.extension_install{s €õ" Œ:‰<Œ<˜1Ò Ð Ý!Ð"<Ñ=Ô=Ð =ð—8’8‘:”:˜yÐ)ˆà ˜Ò Ð Ø ˜ �|Ñ #ˆGˆGõœ'Ÿ,š, s­JÑ7Ô7ˆKÝ”7—>’> +Ñ.Ô.ð à�qð #*¸¿º¹¼ÐPSÐTÐTˆØ Ð Ø*1¨ˆN˜:Ñ &Ý”| D¤IÑ.Ô.ˆHÝ$(­¬ÝADÀWÁÄØ.6¬oØ.2¬ið%9ñ%9ô%9ˆN˜5Ñ !õ Ð$Ð$�^Ð$Ð$Ð$Ð$Ð$r"cóö—tj¦«dkrtd¦«‚| ¦«dg}| |¦«t || ¦«¬¦«\}}}|S)z~ Install nodejs extension :param extensions_list: name and version of extension :return: None rrarbrO)rr.rhrWÚextendrr9)rÚextensions_listroÚret_codeÚ_s r Úextension_install_single_callz)Environment.extension_install_single_call©sm€õ Œ:‰<Œ<˜1Ò Ð Ý!Ð"<Ñ=Ô=Ð =Ø—8’8‘:”:˜yÐ)ˆØ�Š�Ñ'Ô'Ð'å)¨'¸d¿lºl¹n¼nÐMÑMÔM‰ˆ�!�Q؈r"cóZ—tj¦«dkrtd¦«‚| ¦«d|jzdddg}| |¦«tj |jd¦«}tj|d¬ ¦«|  d |z¦«tj   ¦«}d |jz}|tj z|  d d ¦«z|d <t||| ¦«|¬¦«\}}}|S)aÎInstall relocated dependencies without re-entering npm_wrapper. Version change already owns the Selector application transaction lock. Calling the venv's ``bin/npm`` from here would invoke npm_wrapper and attempt to take that lock again. This narrow internal operation uses the selected alt-node npm directly and confines the result to the new environment; ordinary panel npm calls continue through the wrapper. rraz&/opt/alt/alt-nodejs%s/root/usr/bin/npmrbz --no-savez--package-lock=falserYT)Úexist_okz --prefix=%sz"/opt/alt/alt-nodejs%s/root/usr/binÚPATHz /usr/bin:/bin)Úenv_datarErc)rr.rhr^rrtrrÚmakedirsrIr4ÚcopyÚpathsepÚgetrr9)rrurorYr|Únode_binrvrws r Ú$extension_install_for_version_changez0Environment.extension_install_for_version_change·s#€õ Œ:‰<Œ<˜1Ò Ð Ý!Ð"<Ñ=Ô=Ð =Ø ×3Ò3Ñ5Ô5Ð5à 4°t´yÑ @Ø �{Ð$:ð ˆð �Š�Ñ'Ô'Ð'ÝŒg�lŠl˜4œ9 eÑ,Ô,ˆÝ Œ �C $Ð'Ñ'Ô'Ð'Ø�Š�} sÑ*Ñ+Ô+Ð+õ ”:—?’?Ñ$Ô$ˆØ7¸$¼)ÑCˆØ#¥b¤jÑ0°8·<²<Ø �Oñ4%ô4%ñ%ˆ�Ñå)Ø ˜h°4·<²<±>´>ÀsðLñLôL‰ˆ�!�Qàˆr"có —td¦«‚©Nz!It's not used for nodejs selector©ÚNotImplementedError©rrms r Úextension_updatezEnvironment.extension_update×ó€Ý!Ð"EÑFÔFÐFr"có —td¦«‚r„r…r‡s r Úextension_uninstallzEnvironment.extension_uninstallÚr‰r"có6—tj tj | ¦«¦«d¦«d}t | ¦«ddg| ¦«|¬¦«\}}}| ¦«rtj|¦«}ni}|  di¦«}g}|  ¦«D]©\}}|  dd¦«s|  d¦«sŒ1|  d ¦«} | €|  d d ¦«} |   d ¦«r|  | ¦«Œ‰|  |›d|d›�¦«Œª|S)zÒ Retrieves extensions dictionary for this virtual environment :return: Extensions list. Example: [u'xpath@0.0.27', u'https://github.com/visionmedia/express'] rÚlistz--json)rErcÚ dependenciesÚmissingFÚversionÚfromNÚresolvedÚzgit+ú@) rrÚsplitrWrr9ÚstripÚjsonÚloadsr€ÚitemsÚ startswithrI) rrcrwÚoutputÚdataÚ extensionsÚresultrÚinfoÚsources r r�zEnvironment.extensionsÝs{€õŒg�mŠm�BœGŸMšM¨$¯(ª(©*¬*Ñ5Ô5°aÔ8Ñ9Ô9¸!Ô<ˆå'¨¯ª©¬°V¸XÐ(FÐSW×S_ÒS_ÑSaÔSaÐgjÐkÑkÔk‰ ˆˆ6�1Ø �<Š<‰>Œ>ð Ý”:˜fÑ%Ô%ˆDˆDàˆDØ—X’X˜n¨bÑ1Ô1ˆ ðˆØ$×*Ò*Ñ,Ô,ð Að A‰JˆD�$à�xŠx˜  5Ñ)Ô)ð °·²¸)Ñ1DÔ1Dð ØØ—X’X˜fÑ%Ô%ˆF؈~ØŸš *¨bÑ1Ô1�Ø× Ò  Ñ(Ô(ð Aà— ’ ˜fÑ%Ô%Ð%Ð%ð— ’ ¨¨¨¨t°I¬¨Ð?Ñ@Ô@Ð@Ð@؈ r"©NNrR)F)r_NN)r'r&Ú __qualname__r!r)r9rArCrMrPrSr<rWr^rrrxr‚rˆr‹r�rgr"r r r s4€€€€€ð .ð .ð .ð .ð0ð0ð0ð ððð"ðððððððð $ð $ð $ð $ð.ð.ð.ð)ð)ð)ð!ð!ð!ð ððð ððð,%ð,%ð,%ð,%ð\ ð ð ðððð@GðGðGðGðGðGð$ð$ð$ð$ð$r"r có—|st}|r7tj t j|¦«j|¦«Stj t jtj¦«¦«j|¦«SrR) rrrrrr8r5rr)rrs r rrsd€Ø ð ÝˆØ ðFÝŒw�|Š|�CœL¨Ñ.Ô.Ô5°vÑ>Ô>Ð>åŒw�|Š|�CœL­¬©¬Ñ5Ô5Ô<¸fÑEÔEÐEr"có—t||¦«} t|¦«}n#t$rgcYSwxYwg}|D]&}| t |||¦«¦«Œ'|SrR)rrr]rIr )rrÚ venv_pathÚenv_listÚenvsÚenv_names r Ú environmentsr© sƒ€Ý˜D &Ñ)Ô)€IðݘYÑ'Ô'ˆˆøÝ ðððØˆ ˆ ˆ ðøøøà €DØð9ð9ˆØ � Š •K ¨$°Ñ7Ô7Ñ8Ô8Ð8Ð8Ø €Ks ’"¢ 1°1cóV‡—tˆfd„t||¦«D¦«¦«S)Nc3ó‚•K—|]9}t| ‰¬¦« ¦«¦«V—Œ:dS©)r?N)r�rAr™©Ú.0r@r?s €r ú z$environments_dict..sEøèè€ÐUÐU°Q•�Q—Y’Y 3�YÑ'Ô'×-Ò-Ñ/Ô/Ñ0Ô0ÐUÐUÐUÐUÐUÐUr"©rkr©©r?rrs` r Úenvironments_dictr²s0ø€Ý ÐUÐUÐUÐU½,ÀtÈVÑ:TÔ:TÐUÑUÔUÑ UÔ UÐUr"cóV‡—tˆfd„t||¦«D¦«¦«S)Nc3ó‚•K—|]9}t| ‰¬¦« ¦«¦«V—Œ:dSr¬)r�rCr™r­s €r r¯z(environments_deepdict..sYøèè€ð5ð5Øõ�Q—]’] s�]Ñ+Ô+×1Ò1Ñ3Ô3Ñ4Ô4ð5ð5ð5ð5ð5ð5r"r°r±s` r Úenvironments_deepdictrµsEø€Ý ð5ð5ð5ð5Ý% d¨FÑ3Ô3ð5ñ5ô5ñ 5ô 5ð5r"r¡)Ú __future__rrrr—rrÚclselect.utilsrrrÚ interpretersr rrrÚdirnameÚ__file__rGrFrir\Úobjectr rr©r²rµrgr"r úr¼sWðð&Ð%Ð%Ð%Ð%Ð%ØÐÐÐÐÐØ&Ð&Ð&Ð&Ð&Ð&Ø € € € Ø € € € Ø € € € àBÐBÐBÐBÐBÐBÐBÐBÐBÐBØ%Ð%Ð%Ð%Ð%Ð%ð€ØŒw�|Š|˜BœGŸOšO¨HÑ5Ô5°}ÑEÔE€ Ø0€ Ø € Ø;Ððgðgðgðgðg�&ñgôgðgðTFðFðFðFð ð ð ð ðVðVðVðVð5ð5ð5ð5ð5ð5r"