devicely 2.0.10 → 2.0.12

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.
@@ -29,32 +29,39 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: 'c99f2bce7e92568dadafbb8d2f7ad8b8',
33
- content: '223ed1754d62ef9e06050e2885e94d9e9429625744b1fe1dd7743d65d457cb198935378bccff9a6f261353004917143bc2a40fec4a8a9ce5dec75efdaab1fbd9197c04855fd2009273e75505a60c54653d4e33832232b91c60379c205455c544087ebc6c70fcef62aa503160fdffb0d8f0f00574556648d4b1830bd91b8957fc4a36f6578a26bb3ad0d73702734421a6cdc8f3653f0dae3560e3a32c1a5970cc614293a5cc7f6960b91c7b3e0929eab305af1f8d8bfdab7ca628e4e4e51c2df3accac60fd709ab551acf7afe9a85df3d4cf2c05066f29b9d8383a05a9572ae2c87cde037101eb063459909d29e633e159aea190863dc17fbb422ae419228ba7b519c39d01e3d0f49c97ba2cfacd755a77e779524648e95e718dfc0648b6fcc023713948ccf733bd2b25f552fbff9979e89d60a6a01e34561ce4511984b0f7d37ddabd867174e26c2dbe29737c65b0da7a2557c7f51f60a8e3f36528e6bf678290c8a674209b7a0e0006dcabf6c892079e8427673a4c2f0a6fee70225794826450a568ae9c566b1caddaf042d4cf316a9f93de8f63f15f0de8ef7d47372fa2c121673412053ee8d60ccec9458bee1f5302204fdfe03cfb9b29d85d0a53e8beb3d04d81b12072901b55115a114eb9496ca2d9ce20597a6ff4d86b9343957088c8a282190fff55ec0802badadaf45d5a0b6908be1c82e13b93299768f7f4b190cb1c02f1e27c346075349cae08c4fe005e6b617daf110a7de2abfbfb327f7a54d3a1944bae3398ed8b19f36b2113bdb93a45a7e57dc57875d173d34eee501e16d2e8c37e516186202e08903e0c16420b89bba7254240c505bbf339d6fe78c3d2566b1c0fbb0664cd2e0423fbe6b792efb8a1c5e442a9a479cb20f96045e215bc593064e78013fdb629174e8deea958c36b496bf1e3157c3d0b6a9a57d07c5caedd2378ac119812496154ebcf360bf6c3620536566b77db4c61002b3d9e386f42956d14e02fc01d913c1098d86101c8cceb81a8d022361c4e8b1b1a3bbd32f0134979b51b865bc2e441749794226338e52fac2dab8bc2bf6a423b712d7fbfb581a5af65cfbb660c6c3c73844910c1d64b413c4abb2f58447f1bd620cfca6d230531fe7c7da2494200a5f36e7f976e1a2e9c9caa19ad46a7c810cba594d60abb424c4ee92b208feabffa3307c1d7e1a85743d52b10af9c20f3dc5fa2b201aaed6f68895c57029699d0b532f5bf721a4405cc3cbe530b72f6b46f31e64091ac90b24bdd65ca4f13fe6329ca5f9c43914a1e25feb399b3c321d577327775dfbee2bf35120ad905235fa9c74ae5b01e410f56d474ed2d275a337b5b3b757f10b94906da6f1c377c8e403f099208db71ec4f0e820c21986b701bbd977b06e836a518e5f57f4edd5f08de49e8476b99e142c11793f95ad1a901b95a2f97fb7574ceef1129ab0fea57038508f27a8e9a65e35f5e6941b733916d4da73dac4ed7213f3c06ec98e6d3bde5d8854568496f9242a819ad4b7c3233911af0f554e16dbf38446667cc8e7ecb1e5cf89b790187ecc93250fffb859d50f9ef72e3a4d1a7ec74cba99e5b67a876f2298ab36862993335747ce819d99123978d5d08929a03e3876db9c7753f53c985aeaead9bb09dfe85984f368e3fa11628d20a72341e0a4d592e3a42263f54b45a995b8f1ff84aaada0217447bfe40d567324c369635426fa9945dc230e3ff55da3d1f5d83cc03dd38d70a73cf0cd896c351151c7912147d4e3a7d0717c96c00698000f774a4d4c3b02ef9d885efc8cdf186b7b380bf0b0d89efa1657fa19f36e24947210bfa0e42341cb7beedb8ed906a088ffabbd590b3348a3dcf167f1f244fde4665d941907d8c9d335e175613ac5b9c11fd6fd6a9b03abab873f201b480f9939d8c1e55c07b2f75bc9ed92b82c0975698d6117aec27a05bf570bb191f2044819e35174cc6f44aa44401ade6f3879169652a79605dfe44632c9582c8d0c022eee754683ea47c9f5daae8b24a959a62505623b5c6b77d05a395ea306d9cdf61221a636e693b8e183746231aadc8b282a7b4c02bb4a27a7e47443ee932bbbfb0fb611ed2aba30b4208f2d70a1c0057bf46c0632a8c04cc7610c2c1698d144ae78dc1ba1968be9fc9583f16125ae75c2c67cb6977ff5127c186d7949f52008387959620d866cdf0f77967a571a16e0880977c9eaea875782d8c3f864ea20c567c040cabbcbaa24e6737798a51b6e6ca5f675057e90de3160c4d6a75b1b37b4d6f097f7caefb6d075a40635c74f33ac1198cec7da02872b159927e82063b1187b5e9a0648b45366997d4a6d8af8d3bb066547adb9ea2c9fd12e767bfea93b72d8b4464b8230f2f215b0ad0ff61bd5a1f13b0d034c69f958155edfba962da58908b1ade00271190c074378909bf10a451055369357f9bde102f6fe2ce325400a068ac8eef46557a241383f26012e8ff4579847fcdfd413a954555a4764fae755e44a4e6931ad299ceef145fb6f734f9d7c09f22de336384676ebd97553755075dc9834460eb914df8a1e9009fe8e775f3c254d10cd1077b79f0e41faaec74de8acfe5ca43af22ad5b36a159d666e6b9ecefcc4a8619196553347a6d6e943fd31e81d0ec919acddea00d361037b4a4df10db0a7d4de8519a2efe528aa5ccc0979552b72fe6eddb14d663f98cbf8cb39f0458a5c7d862052b3405e5782874e4bfe74bd4588beebc6f0a489479824f2b26f431d3973a16a6fbf1fad6a64839cb5972149b4dbbec7644462a243091136a9d18e00ae3f3d3bb4b3daa1d214d3848653fc3514ccb5e9820c06dad25819ec5175e5d71ccaa1ff453cdf66ffc473cb2fa1907e35d59130c37edfd7ded10eb4b599276c3559c95a1a7f1a45b3a306cfc7920418456a940dc17cb70b154f4ff4e35f8ec2376cbf4662e500aa70ac0a0ced707b5b811c9c57262bd3e8b7d9fa45fd26e7ba13d0d34f1a8e7062e9cd4caffa82e8ca8200206b9c885c3a9abe2530fe9740354bb8be181782511ea9339fe11edfb60b09a172241cc4d620edfb39ef51385f26300b900969267d01b12051c1069b22d2c5238f648ea6081d04f2976788ad8087d3b3f36bea685c3c98877692de0e3d712c5b99fc6b61281a549c387f547b00381ccb48210a746e4cb1a52cd0815bf254f9445cab1502fe3a630ccdffa381b0b7fcb105e462d5dc1beb9d887389aa1c33a9baa8a1eb462884b756ca3d85f92ff23082c6f0ec25d5178fbaa9ebd6c8ad0d74124c500d9295cfccf8c243dde9d47197fa999da5a13712a323a4da12f75b79eabe1ab529580debbcf877519cc5c48868a2d7bb7c51176d70bf150afb3eec6d600a0ea8a78e11e5b7bab20bf43616343ec2250c472c47704a8d6a7b5e5976fcd8e46602c2a9d37593650946fe2e814feaf75f32f0214bae86c477b1f7f57fcc0da987230721c8762c4ff9bacf369b541f027861cf748166f280e229e0abb758cd526057de62633774a46ed08373bab7ebc3e6a0caafeb8b2de43c2d715325d20bb97c30cda1299efb51ac9ca501de6f481c7598d6aee61da35ffe45f156eb7d4749d1b5524e5709a8eb6433e52d21929b3d66219ff5c349d4ec4d48fd4f73a16675ccea4f146b7a31312945f36195b45bb724adb5bbd8c8aafed413a6ad63123099b87104bcf57624e37a6696f05f2adec97ef477ccdc8ce92a938ce7f7b43cdeb49cd524577b8a0374937995970dd39ca51254711efcccd58f56417f4a0a310aa512b0e6faf4ecc84f1f2fae1b2b530aea22a5262541f999859043a10decc14dfa8593d8c6cbaae236970ded92b427e199fcbb6cfcaa9254ee911fde7339161a766c7a61b79e886b29407e88dc9c4ca5c4806ffb16241e63ea28e8ee1b200a9139cf8e036a26874b152d1bd238031dbe676fe3fb9c92cb7a91efa1fc934ed4e5b98581896761273991f1e2da85cb5d43ec73177818d0a2ebbe7851d470381a579a0c8e44f3477abf51939fa2f072799a77122b4873c70d66c1ffb51a3cc10081339942163dc05994c8be3f620739c0b48678ce2b87c3d7186d6c1ddc9fb882811a632453214c5165efa037bb3860e6ee8c452620d6e915ff37d8ce704be7824a11eb5fc1b00e207030ca5d1167c8ef3082ceeeffec903f1e56996332356c833b6d59f145f7e4573ce66c3c8d90e39970bc9c74030e5abda4dafde464a724119c12c39fd692c7432523a24d6fa945e6721c8c33d9ba0f999ee79b53d10c9a15214fa8481f0cb57d298fd066d197273ea20ed41554e0a45cbbf4f8e778aa824abbcb0bc4a1b4a376f893c74f553a64aefce0fd2b07e4e4ede3e0eb0ad12ba75d00eeff7fcf44302740d3b97aaed7c0891c4ad0139acf7aa9a2df062a65bdfbaff75ef59988c58c9e099967a3d2379c8897f612ee2443e342bfdfac37bbebeb03b6025c159c16ac6b16cb76fa01e6197186c95528e880d9ea14fe04d193de6aac3cf26302ea89e3bb5b132f7436d41f4eb9a3e07ab488d8250fbefe3f9ca58c1debc53238294b96c7cf03d4ace1c07a4bd3ebc99b2544e261ef6d760649ec35e601b3c51b2714565de487f1eac43aa5ddc5c97d2ab97f3bfa01120e6a3dfaddb1ddfb94eec073d24048c0f4a8f9d3c085a0bb95fe62d71c1d4ca1177b5ac9610b41121206bae8ae59558d9949212c671b0e946ced4f808ea241bab1cf0431d3035fb1f6e53fad9227770c95b658dc30ea4efd66450e15a627ccfcca9c1c25d53a896968d417d30c81251320ea182b7fd8205b9866dca45a49958f4c2f1fb48460c7537554dd5e9e771da92966207e01ed8de6d7a702c4d96b51245b500f6f2f1ca816803bf58f1e337efbe21a205a25dc26c0ef09b178441127e5ecb15247ead821eb2cb1b228bca09355ef568da66fc3bd9174f6130b8e38a2a1643deff3975651f2c9b7ffc36f3109baa332f5526d50b9322f56c5b485bb701f26bbe1984ccbb3f209a61ffb1ff3c5d0ab624fb1102f90c541726d9cb6e09fe3a05fd8999fb2f4e9634986123407408744'
32
+ iv: 'd6c491906073eb4a538242a9a966a62b',
33
+ content: '6bdf562c3ade6c0102339f0e6e138b8be5d46e45602c4315834dfc18f7a3cbdc9d20e566089d816ba552c34803044923e0821b3957dfd4b84c91931e2051f44fd9f8578c9554bed3fc11d536c80cc13fa7a43b03a6169f388dd60918d0fc05cbcbdb357d46b810f115cfc87e9490b026df2be6cc88d47c376b22c18044fa32e0446bda4e2932ede5d3ddd5ce4776fb52d9082aa03be3a2730dd40362e48320e590ef6138c6797845cfbe78f1f64a8920c7940420b59a11fdfa935e9ef935c501c3216d822ba965550a4e43d5da3bf46ae3126f2c4a9a15de36e5edf63150a5164a479ea4b8f011105ff460df243fc8ef249c0a82b18b0072f1d72a964cea2ccc666034f7407864a9eff722c2dde91b3a3f618de021205f0b797f83f65e0803673a64cfaf98623a2dbec92b647a8bcb5def902934cfd66d3ec926912a6250f94f8ce38b24ce6bd3e7d83d52cb2ce8201883c29cdc290f13d42aa2f6d05cc05163caef4520ce83857ab513fd8bf8377d304f87a8e11703d237aaa0ff15adf5d868c9d57f0037a2d7810574993871fc01bf8ca807ee0c0fa77c7453150adf2ba1515f453a45b2af0b3ba712a5a28862aa5e298a6fe5c05593c37758a0de2ddf368c2bfcb67d20785879cea3d746668f4283bdc720f2fe86853afc6aaca763c183a26006207ed4ed78dbe8b11b6a8ac1cc605b23594c7d6f846256ea842c7075a1069af8a5bb829f1b8905ba7d94993251c7fd6f8eb6b35390781964a3a49643ccb78aeba8eb90f06bbdfdb1f23d54ae4766a421717dfb5da2a9de642fa70d968c88812b3dd3fdbecea6b06d06a255dd26e519376b6c583c84179d05747c11f79767f4799de73c8d65c2ea19a1609df424eced096e8fdce2d97d6571db47d33983026249a5cffc593959c3a5a4bf826b418e9801a20d1be8a63f11613520ed2fffd239c4fbc3609f78feaca1599ef5d206bd49f767c7a6956d1791a460605d3daf00658668987659731cad78da8f3b67f225d0be19fb1130dc7ce53a85c1839839a9975d6e2b85e9fcb966e82dd7fd4550968ad1f46c134a609399b27e1e8a2a25a760030b0da76d8fe950509271089f07e24f6ae905c9256e388550848bd1404740a000386630218d5cf3d0ed68bc109b35afe26946cfe6d80ca3092e6f3d0846997ed39e2a005a92ad9afe25bfabf2e0b50673166ef51b3a295c706ebd92e058e63694bbb257f0b37fc90c1a94ced16fef22a76783f34346584418bbfdb22ecb1d633d6d196d26321bb09b28aa1ac9936194cf663b8077c4bda7bcf7ed8f3df4594f0ac945dce6b1a53c8f0cb5f9d0d5e50234b1d8a4cb0912bc234e018c6b494d83859f908b9745758bd98c9a214d030ab208fe09dc13a4e2214be90a59bdfbb2d0e4642ca91c02482fb19031d9f64f484ddb12e32bf3f1906640a518f7a781a6677954d655620e4e53c238209cf3d34ef17f9488fa1a6d0a12fa569bcb9556c4f14cab89312752eca829983d89cf6dbdd3290eadefc5f078e7af4f3a34a80d8f586a6232e4bbc2a3557519a5acbae97ed82cb992bc360ff6ec7c3239291c723ae01cecf344326b0533ff12bd13c60a9e2cc90430de1c2b9fc5c6b0d39e9338c28c188aea7204bfdb2d51d6acbc8486bc62877d6d97970134de86f1364f533bc28cb654fcab8fd7dab78f7ed49cbb40d72f4de70c16d4367084ec55bc48a5d28c2e1248ff44a4211cb90035949920cab49567f8df20de5b9f09de8614aa782a67dc12d6be656bee59af93360a402ae98168cac484db9788459631a7d43d44850a39ee1c142bd720960c12b9c097c6fe3c0c31ac95b823192c182140458e87807df0162c9e285f25709eb58163f484697650bf5c61ac991f40786dc5e3d14f75ce907b89b75dd2c12438a4f4cf4c9c10eeaf7552bbf7efdfc1b5140015d16f425bdb66d6b6bfaf5b571bd6b7ad6ff926a2c75349f815f73b8ab6cb40b48fc3c9cb8548ad31713f9632691111a5680ed15ead2fe23060d0528c0087e214f982f6d5d45c6f5209837872ce7459866d51a06dddf41c85bf8fadc528f25c4a0c45d9f6efd5d1b7cbdf21680faf6b741033d98cb4a4bb6f857811579632894ca039f6b6c6b268340595a50da394efa0c6e739f2d6d7f3207f2502383eae03e8600c643ad762fa41f2932a0b3efe1587411b40d6791a113c6d5dd2200762fe778daeb507f8d01871ccaeb75636ed2768120a6b9374ca26c47ed1ee62c70246bf204157b59823ec3054625c6ecb574a0379893710783fc7df42b391690e75f6f322bc1c4cf49db20555a639c6df67704126bbeac9623402f3e500bc5278067ccf60c88f3e27914c4f42181b5c00e22f9356cbd7cd2457c6d9157d2edc44ddee9b03c52cffa77862aed4380ded7661a082af2db5d4414cf25a0f9a27874a7020cef0139d587f87def2d4a90371029c98bc0adffac7898325e07b815e457f0b8f180099434dfa87610902095aa1e7fa853d8008fcd62df6ac5c0e1d303f79174a6085639b423239a689964d8521c81de9158d180c7c07935b3db08865beb7abd5cf6b2535433efd53b53546670492fd9f967da186f3dfa13a99e9fa5b4a5ed88671e82025dbe7daed88c848522b0f2cc267e1534e0094891559d288709159c52541b4d0711439ab9683ddc30a6757463ea95a51969c4a3de5f5f39d21c6ffc566a4a2385436219f8a34ebf1f7a0b69e53cd8c018e6be035864baff1ad6025083553cad10f81ba4aaf9500d360c9d8aceee5b659fcd96d1248f4cc65b8a00bdf6e3240a1d735b202898b76e23f654c5e5f86df16be2a7d3d2949373b3e70d299d66995c5a20ca6f87df506201e25b70c9a714177f525aa1587ccbdb56f6861a4af367eae935376da53f1a74ff9fec1ffd0494fc6e7727d7a3c50b3619499e9548efff960d0c2c70ab7d1ce242b311a9ca23a21c6978cec8c0b3b37c895e33a97fbe24c2c81dfb19b4e9324520bfab4543aae04e3d337f7a6dfa28d49a9bf94de337babf8d51a7986e6d36e43bb2b35ec1e6bba7e5da5c70f0bc5b81f33db6703dde124bd09676ad036597a202ef43fe26844b4c1a4bacc7f8e2643d71726b5f249b9d646429a2e34de03ef5d5136acd371a564c4d8c523fd11d707c62dd2b9c4c4a7ee3c2093b101480057b7c4618ef676d63131a11b50377bd1817e16b652aa3960febb26585debf23af6c07910b1cc3d25769b1c282c099e6a444a75a67d11e9c930e7872fef05f89708839f72c0d0bd4d3a280da331b45118c0bd242a87b5058f5c0319bb47de8ed260f8c3210c9b9917893b3ffefd083fbd03a047aabd5f0bb47d266fd8ee9a1ae8135816adcae61c5febf9ad5b2d5ae57496932a8f32bb9dd8aa6dcc81f1f70c0f694204758d604829515bfc1f55e966ef2978cfd29dec82889c1d63047a02d73ea5dadc75a309563fc290acd00d2abe28ec85cb4e5f7c88398359dc67545db93e5fe53d73f00a688f5136dccc67e87a81f2ef97259c74c77918006851ceae0409e982fb546783a3dd3898561c5c8de295008a9200ea47a4c71de5a76a4d2b80a002e3955577c836b9f9bce021e363ba687808cc036f2f9bb58609c0307729b7ca15d544a52752cec325b5ab2387c3997d8ab408d524b5c54d6d0cebef3d726260757a26a55b0dcc24d2fed13ee5106934ac29fa04c9fe5584d6c13bc54716bdd1a50ab09d74cada334d3f51703826c9b273f6e2abf387ea82d39a051cbadce6b1664b5d4bfe5fd0317a39ce8051347cc400422c20c9b08548ce8eed968ba67f134f8e2db67862072745347af5a60bd31a8ee516318895c261493406cf54ae0d3b5e27ffb1073d3cae0f5c3823ae28e89edb7456c464efc55f547fd7bcf6abde16ab61e2b3f06673bd9eac40b8a426a29f3ceb065f9d9319b33c6ca90515d60b3967fa62e2ff1c846f808521e60e0259556145b8a0634cb3be7a96c55876e1637fba8082b18ebc6cc85947d68a3e9632ac08f623e00b0af70051bca5268f61266f74397557abbd043a043831f12658b2b94b08d6ca0a8ffbfc026fd0f7cae3df719a2a036913c62831b8e785989ae6cd4c10b19e1ffcbbc01143ad7cbbeb3ce87e412940fc3636db15f9c652a75be539e7005e01e8ed0bef40f3dcb65d603021379c3b70453f5e7e9fc4186141e5fe916d64a33a8adaf733fe6626002d5771d2e3867a16ae309a6d2e7f8fb421354d1e0e5b8707d5e08c68d48a10a0143374c4b188e21607e380074750b281962cfc5435a88560c09adfffdbdfba51697e6976a30abfbefc6a04d35e6b0f333ad2e5b578dfb8f274a6d611403e73b505707f0f48272b692c1282e5d4599559db84bd099dfb2dbfd13556ed60ed2ac1ecc7f280650b4e8ea31d20c30adb4752cb85c6b10e8aaa4cb1fa2d7c9ca36730d22da0731be351cb9b5fe2ef10d778213e1ec1c9ef3343ac37cfbde2976248bc665c4c6efe8b75ec136ef6b4097a9eb19d53da875cf0f8afd660a675a47eba37d82e621852cd71d1e774ebb26f26a3cd9a654ab5415f0e83921cfb41d3b95c256efa8948979e19f1f4271eb8119263fd58d001f5b1b5b75a496dd8b71350a38c6615ee78369b5043e9bb960535940230cad430648cf524e9c1d234f87bacda90d46770b7632008029b6af3e56e38db9fcba1f2fec9b70301113f01ee03a04bbde88b59a3badce1520cb2ae26edd29198482739239ecf0b205c28ddf7eb4c81e0379aebdbc7f6ecfb5506465eea8986baf2ad742a81be5d4c4281c81c33853fac3ef7c792734c67a59b1a90eb5155368113f673862e558ffcdcb7f98b46b9bc4663b4db9d7815716f8056274ee494f0d2a51e487fcdb72ea0a4a353a4fb094bab7c69e62062abed451f9ad7dec9749c93d4bfe0ebbaa2579299ee7851c357cb7e16372082058251efbff8998dfd87d8fd9fda58be15d64b13036962759001615b3ed002f98b7405721db1086a09b61082fa46bd5fd1440f51a7c9403e583488da90d1ddebbec7b79e8fa3b966358fdd5e56'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
- const { execSync } = require('child_process');
37
+ const { spawn } = require('child_process');
38
38
 
39
- // Get arguments passed to this wrapper (skip first two: node and script path)
40
- const args = process.argv.slice(2);
39
+ // Get arguments passed to this wrapper
40
+ // When called as: node -e "..." -- arg1 arg2
41
+ // process.argv is: ['/path/to/node', 'arg1', 'arg2', ...]
42
+ // So we need slice(1) not slice(2)
43
+ const args = process.argv.slice(1);
41
44
 
42
45
  // Create a temporary file for the decrypted script
43
46
  const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
47
  require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
48
 
46
- // Execute the decrypted script with arguments
47
- try {
48
- execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
49
- stdio: 'inherit',
50
- shell: '/bin/bash',
51
- env: process.env
52
- });
49
+ // Execute the decrypted script with arguments using spawn
50
+ const child = spawn(tmpScript, args, {
51
+ stdio: 'inherit',
52
+ env: process.env
53
+ });
54
+
55
+ child.on('exit', (code) => {
53
56
  // Clean up temp file
54
- require('fs').unlinkSync(tmpScript);
55
- } catch (error) {
57
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
58
+ process.exit(code || 0);
59
+ });
60
+
61
+ child.on('error', (error) => {
56
62
  // Clean up temp file on error
57
63
  try { require('fs').unlinkSync(tmpScript); } catch(e) {}
58
- process.exit(error.status || 1);
59
- }
64
+ console.error('Error executing script:', error);
65
+ process.exit(1);
66
+ });
60
67
  "
@@ -29,32 +29,39 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: '63aa121e9f39d6b7700e767744f6579e',
33
- content: 'ee66ca35cf63dcc3561c99382c028fa49e3b68240ac72c22615c45e38383a16ff36b076fa19393a9c1359ec0af98a7bb69374d191c5b65973c725ff9665a2fd779b6da3c79ba0dfbb3fdb11682307545c7505b24c6a92d233dfaa4e0f304efebc6e86a33f55486d966339fa28b6eb91515455250c8cde2e355a42db6ff0abcd97c1b8787f005c127ac499b3757dc51142e218cf97b6d0c5d3f1be04fef8e83385c876de3a16f2db26c939a357c923bc75d3b27ce37275d45d3513a439801a4a4d414e8c45714e2a2bdb2ac8ba6f72ef562a49a486320313afbd3c06d4e46ce8bc96a57b6474555644a5653c2a6ea7a1f21ffafa13535c57f381b2829524c235da9207cd44ee752a27d662510f2a462a13a10ad81e6af3ebb134f2edef6f6ab4dcf106f8f37c55def5be17441f25d5f04d449b251f125deca8db8d22652678ebe3f609e3c1056823c2ae0d0f0ca0e5da8b3f80b2e46197e5b8b1b9a926a3f865409ab459a34903e319c7f1e1a7a770801344cd4c2b536955dc22ed3322e346fa0ca6b70e21f195d1503739caa537c5445585b1aa8a018f626b3729f5ee63722f2a51091994294abc5fdfe8652a3002c9b00daa37985a38669539d83231a5d126620a345f1cb7b17f90492b5e7bd44258860457f0300a375be5bf16b7f76aa8b1ea36bb1408029a8c0a6a456e5a7dcd791cbb4e439eacee4db31c91faa1680d00a6330d9fe37fefdd5143a87c5a22a7aa47fbf1a9164df9f3558f9d6e3f2d9121fc7f450a6ab67f917bf803dae23b87a03a7c7502ab134f3b96dee2700b8665c5a7996776c02da4498c6c38a7bfbc42b437d5a0b3777684634814194e5f8f71295aa44cc8b2928d1124f966288932c81e15d4a8cb6c1332b084a2ed055ef61e8f3f8fc5c3396fa8e67532333c5d3abde3c0293d72855c620c60767993f92516e21f620e48b9e2643d416ee258dd6f0001d9dfc98c064f150770ce0299d3b63b842b20bb43f79184fb9ebc939f8d4c5bdfbabc85419aa9dfd9ac21d8d4d6a18afaa1500ca44564bd88cb64b4c9287378850713d8812a10e5548b72cb9438a958a8459da987e545c80a98a1fb5aab9941559227613faa6dfcd709f4a2295c8d2c8cfef65da8e3dbad550c7b4c58cf159653e5ae4951571e1d63fd7f457c531678531f192f2a3fa42da6eac0cb27b19e113016d801ab6af876578f92729e1f25e6e02a74ce141010cb7352e35ad64fca8cc293cf7d650be7a9ee629028d8f59f7f177cc47f229d8e9adc382b13ff3f6ab6d1d85c2f24e25bae46747a08f16d0368147a63c728646d40764c4b63a15786915ddd00239fe931a5091081cf64dcbbc707309e38b46af96ba7371634d25bc9ebe8c0dc1e9f30ddb75851ba2ac912c6caacb67492c8271b1eb5ecaee23a017bb3defb940d27bb9b7baadfb8fec0a836e2e92ce25c308561f1335a72048bdd4884e0bc67f33c9325f25538d3782f23060568991f18b7418501b62dd359eaddff4d6af77726ae7ad4bd5ab4fb67d1d92cb20af0899a679a80cbd8522b9d01c14033f4c9bd59f71270ef82984b9ee44c6c8c47913bfbf2504820cb2f1e882318ec48e166137c24d5381d1d46e7bf2f589986aed7ac61e10f2a6804ddbd96611f634aa0f682efbd0999c859050b630dedf4cc9a8db9ec0de52ea7f369072fc3de8d69040029806ee0749f8956ddb20e3370a12d1f5fe1a38d9fdd719b50667ec27cbe16c333665ef3111dce577cf59ab2b9d2173420ca852c5b3171a925f90b59cd191cd1ee81095a23f56b7ff47834b9814dd21b644bd34df15edf96c573d7ed73b3065d4d4a6759bbf9cde3eefdba142b6149fa05134d1777123e2f45968082faf0001dd9b1cbae311056515801e0305fd61d15060fd72f161e4846b767051c91a07fbca11476ec6208e8d27134dc78d34f87e14e81478d603c88587f7ca4c5265d2a0cd90ed700ccbccaebcef7b02e434cac7af22e7fa49fbf8e8b470b088d7ddf42c1fe936d629d9d92bf9d3c01b1ade9100f924e0d4ded0e0f865b0074ea3b4c54a814c53ec4cf07643bea0301eed778d843e1578f72dcadf498fffc087f9924d2adbec24c01ce876c84ed792053763b92a279f40b6e776bdb98c635564bff810b1bb0d3c96b20bfe74f1a5f23ae2745496bb7d2276025277dfb2f86e18427d8064ec4db002fff1d03f6003c7863667e3b4c238b33eee645e4b3c7f7fe84fc03521f12a8086f186ebf8d7908dd1058c4e789e7168443a20eea402662ea9ebaeec2f79a2809e590ca12ca50f1d39df7c5549e797bf66031e90331070616edef70a15fd1d0eadc062b5dc235840ed58e4b71be46d0fe8e16446628c477e0e8f48737683add1017063cf9d8fa681fdd53ac2f73f1aefc5cae9bf5ccf64caadbf9e6d827892bb4c4219204dcec77484fcf5e1509790d517837898741af4f12742ee155c82eaa262e7150753abf43ad48ae04176eb06e7d986f27e9bc29e43f1af94de0c05bfc57decbc417b2f5b7ddf736fd21299cee6c6f977ec1517350459fad36c8f2ce1b5029d308eed6a720fbee2eb0936af1abc0aef086387217d7f75ddb197acf4da0c6a51b67b826f0b81839741675ca5da78dafd6a9fe4de83e13e1d5075696d7e5a5c897067592a0e89bda744e133fad5d3cf72accc0b88561717e6d355979d900f8e4e15157d0a9382998595c563ba2ca7d3bdc5c2f265496f81a0c5adfd2bbc56a1a40081c86b18be82ec67d0b41e0c8c0afb60af2016e70a06101918578a809d7a08aeaa05140967c3a4bd6d400950f5821137eb44807cf02eb3e9d046d6252478a4b97ec4cc407834e784407fdd2b49440e67734686ef1b175287616ab0503cbbdff8736b6b79a60adfb25f4b43d64c976195383825976296eae1a1120ef5537c8a96ef0f350362b892aef11e81876ea3f8f6f6019160e3b375f9a92c9801a7f93c610a64dc8ec63d4ad52d6afec6bc6daf1e84d608583ffd8157cdedc1e69c5a66a5e109bb35faa962850616eb11db5647428c2d31baf78349d0b52502312cdc1f3e34784db306146e0f0a64dc8c2c2412774c06904672519e456609d89f4cd9bff77dee63630ac3ae0cda9dbed83c90e04256dbbe120b46827a889952d8779268414206aee0fece7c18e91fd7f290470a1ba7392e1dd95693efede52811b8ebfe6ea2cf4ae8488279ba36ce0e44aa12fb1c46be62fc7892ef540d96dcfb016641545ee0cbccdb8dd634906075f21823f52dbb148c9b9098f8be3bffcd0d8957b8a973004d575774cdde8bebe4609c7ddd5fc9850dfac3520ad1643e7b10c5edc654039bbe6f9143ef1eb0ce37413471380add20c8d990c2ba2aa2e0ce4d3069ed148f32a1a5d62e797aee211a262ba39c88c9f2e782555e668a7a0825cdcbba73af9cfe269a6eabdeebd810244369234dea0ed92e0dfa758f82b05496274a89b4f64d3f9cc44e800daaaadb721ece9f74fade500cc12af50e81b4aae281bbcc38ef4e67c7b94f7465d44fe5'
32
+ iv: 'e27e34b98a90543da353a14fc75f2e1f',
33
+ content: 'f478d7c49ea6ef6069d2dc500ebf486df6e2109cf88ae942c68765aa06c1c9f73a488451ebf64ad41cfe7912b872d598bea2c52ac53c6b1868b7bd4ccbfdc9f5080ca9c8db58388c2a4ae7eef9e0724832c4ece1576ac8b7df4545f494beaee0c047cebb31305657b1f53cda09b2d5f16214dffb511175e241f8c0e4ef7ae2b704c5715c1e3da1c6689b8483579d529b3e04ecfa9a8a928b0e2fd33c2eb50a343c0bd0cd025e39db933f94e210df9bec8656e27b69067d589dfa74197e13b5299aa93a530c37725b9a7e65819934709936ce7e6a7024b7259d9411139a5f87312615f3698db9c4969369eb67ae73121cdda9e2bd64bb14ae329c4795c2c79ef804a8fec11728da7157a55aa084587b3688b2a2814662f301f0ad0ed2f87c7dd95b7559099851797293f0e71db8e0c698261e5fa1532dc453f4d1ccde654adc303cb91807c99940db2700b4c9f001c1e83afc1c386c077c2e3020c83f402bbdd04f38c702697f568d9aa5c5eba5c1dc0e349f5fa33b74dd678fa0a83c9683da57b4cd394d4b2bd564c3ea04d63e7f3c309bc955b48a0797597de72536239a74895c129e54a15c10f5dc515729c82a6b78d1f44aa0ff07e1dec30759dc6b408689176496dd7b7b2b6139b9d52c3099179a05ee874e68ddfe18a4d5ab890b7da35572a198bad9d8b0db3212d02fa4f911871b16de521e47f95258cfffdb433dc22d01bf552de65bf0b990d7dda611dc1b65eb11d4790aad57df89d1f66e14665e5dd644d52a499179b12d10380828eebf6e881b20f5dc425f6bc2b0075c7221dce106f1d4507146a520c5491a5932967bcfa1eb813590e7b47a54bdaeb218a0af449e9357523a7f9ad5fa3e48b69dae8cec58cebf54ff2eaa692b0c81bc2c1e86a5d65e44ab83ebd7bfd5ce22fe3655ddb5b8ee6cb3ca41f11a2c2fc0a6cda38054dfc256c458b8edf5592f8be3a42965b270ed74964f30568245323b32b5e86ccdb6257db3eed103a253c896bc5f917f3000fe24f3c66722c47498b6fc5023ab5086662edffc04b4de06a39425734300d736db3d8bb369bd645b4a8b3a9d84aefe8252b8b2e26aab64769a8a9eeb4468dc5cae3dafbefb22a266bd150573dfec8909fe81b9f25b08050354e0b2d8e0e007584710990217faf8b9d0b46b935c3addf3eac947f389c4b6c1b42f5c3150922b95a4b20273abb035f0c17b45d320a13ccc80d5974b35e69037325b5f0dce3a99372fab9b5e75459f517d82cde5e0e4ceefe5953a1a5d8ab57f8cf8df61c27469d2639fa558ba91a9fb7955db88183a4c5ed70200bad2c5413c6387b7f9ecd94ee7a7f2707be590896129e1688483c4852bf5be50aa6a8f772b18b6decbf747cca3cf70888784b53d1ded7be05c821102b2b4d34cb4415343095c285c91b1a46ff7a52dfcbb4da5990029823a44aa39f2af156dd714ecfb3012f41f7fa510e646863eba124d9b175d4b71c5075a14298dff257a3283492199eecc97628886e7f502862ea2b489dea0fb935dc515224e14c229ed4607b078d24abfa57d88e76b67f6b72f8e2586291faf25baec0bb3d19e893e8e69b58d68b9468039be614322ad109ac93d1e91244a7a3003d1a3544ed55b630cafb2419bf584e425a1c60e7b55b3aa5cf33f70a370440c7ecd1535fcf6f8e314c84e4dad7c11cd9f6d5ed10aa3cfb26cf5befd6e8d71333c1a0fc20bbe9e0797b9fece833a39008a5d54c778a617d227577bb78e9c2e0bf211096f139ae2cd30fc30151dbe13839e141a273e03b3eee507fa51422a1aec54ea52d6a65c62f18f42af27db46d75d3d234b53e76f0bdb23025fef20fa59f1d8be27b0c62a4bb0b8dea64d56e23d544052ecbd4d432713905d14eff4e9039e053e848f8ffec59b370d546b8d3548fa20e34c0ed18e6ac86ebe641e480b23b38bb58e4fc9840724c08a432c651614f149d269ee48f77ba550174b62590bf55617248736728c73cb4c33426c083b693413d3bd275f781ddc453822068ff7c159ff131dde2c61394b0356de2e1733e152798974fb3f5cc1451fadf5fe0ab247820276e7338e0e06513329688b8495f6d729b697147437608bc3321cbd84a1bd85d09523e11383cb93ab0828ba0d3e07e03a7fdc4a050a1ba6135f8ed969477d1b9fd245b8146fbefd30be0879ea9a7fca1838a2d4fbcd959178c57de9d5d5a8e41ac8392f17f115a733b9bac31a16e193c8412d795e52bb45ebc0d043c8e8bc72c7d1c1a1bea0a3c8fe4a235b23341eafbc0b1a5685e7d0f061dc7ecfce70ff870bcf3322360806d35b15c19df2001b1b827944295f92f6004481e954a60c3833c349fd38028dc82ca6bf47252bd41922495067992457380920cee1fc2c4cd351c3a9db608e37780a2698b15c748443f63495db84992fe519700bb1620a075a85a2b4ee4d13a6aa6f67927f16b3354a4271142714a82cc7672fde3cc38645a84471f9871a6fd4436306097233154511e45430f248cae286d8e03f6a7141e81150134776f9970f875bfd8225ad779099a680983852d43c743a991ce3da0746c93920c2ac68309bfdb826efc43cb86573972ad34274fdf9d84f9ef7fc142550143fa5e34fcfd215cd96f269c30c694ce7c523e0e761979517de4440480db65472d08992f0256da0cf346710b241fe4f81aad8d977bc805b12c2586c60d35fbf6c812115891f604f47802bd4efa88317a0ba916843c9a176ceefa0e59f83e6ef49ea82426c19d4262c0ab08654cebf9c37474b17d17f28a01407cf94d8b59b5c18e5ec07b2c72453a8c960a7ca816513b45e819c10e172a1bc6cf203e9dc945f1c17307a7fa9ca48b804f21c061406a93040d4b09210f3ae28359172a0746abe7bd7db0c68a37739480482b4a143703bbc8123e32c4391f863d5911d5b44b370385b1dfb7f492d20b141d08ffc7e8635152b3f08e4f7816cd34e0924fd05fe8710674e606fa304463ed0fab79e755c7ef9233f50c1d5ed5347d6f0a48ce703bd4973268b9adc120ebf4e3a173df47a57e3338512babd88b35e69aae9f311df1169df5965ae9f93fd68b0cc3e1a1077f11cb5bb729f62d0d5429410b9593d8601113f5eb2b4b84171311e320cb353e589c8651b4ba2d06a1f7ccdb380cc8124b4dbf5b697b8b87a3d30aed6eada4a41aab911eb423e08b61359b61f0fefcb05515bb717479537507287106fd3177c27393b6d109157b3ba4ad21d26410d0b6761506453ed357ae745a7cafbd96864454132cd01d56aa8107d7736390e499a748fd2b2232e633d1a90d942eaf329f42d0b84c61a209e3ace8c013c578bca0245fd1889c0017f5c5b963b392e12c0ab76561868e056b3887a9282efdc943b2f0bdda2b84d6ffe0bf8ff33f485a51e3230ea7f75516426902d952018fe8c143d3dc29f362720ce6083999460f3ac7aae6667a2730fe6f01e6338abf7f73cb2f110012649ea5d947b3065aaeedf43e2884eb9f8bfeec4d793b268a684506e75ba4964d3cd581c830569b0'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
- const { execSync } = require('child_process');
37
+ const { spawn } = require('child_process');
38
38
 
39
- // Get arguments passed to this wrapper (skip first two: node and script path)
40
- const args = process.argv.slice(2);
39
+ // Get arguments passed to this wrapper
40
+ // When called as: node -e "..." -- arg1 arg2
41
+ // process.argv is: ['/path/to/node', 'arg1', 'arg2', ...]
42
+ // So we need slice(1) not slice(2)
43
+ const args = process.argv.slice(1);
41
44
 
42
45
  // Create a temporary file for the decrypted script
43
46
  const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
47
  require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
48
 
46
- // Execute the decrypted script with arguments
47
- try {
48
- execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
49
- stdio: 'inherit',
50
- shell: '/bin/bash',
51
- env: process.env
52
- });
49
+ // Execute the decrypted script with arguments using spawn
50
+ const child = spawn(tmpScript, args, {
51
+ stdio: 'inherit',
52
+ env: process.env
53
+ });
54
+
55
+ child.on('exit', (code) => {
53
56
  // Clean up temp file
54
- require('fs').unlinkSync(tmpScript);
55
- } catch (error) {
57
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
58
+ process.exit(code || 0);
59
+ });
60
+
61
+ child.on('error', (error) => {
56
62
  // Clean up temp file on error
57
63
  try { require('fs').unlinkSync(tmpScript); } catch(e) {}
58
- process.exit(error.status || 1);
59
- }
64
+ console.error('Error executing script:', error);
65
+ process.exit(1);
66
+ });
60
67
  "