Karthikeyan Rajagopal

119 papers C 2Journal 117
YearRankTypeTitle / Venue / Authors
2026 J jnl
J. Complex Networks
Deivasundari Muthukumar, Atiyeh Bayani, Fahimeh Nazarimehr, Sajad Jafari, Karthikeyan Rajagopal, Matjaz Perc
2026 J jnl
Biol. Cybern.
Bahareh Karimi Rahjerdi, Shivakumar Rajagopal, Fahimeh Nazarimehr, Karthikeyan Rajagopal
2025 J jnl
Int. J. Bifurc. Chaos
Haiyan Fu, Ramesh Ramamoorthy, Tengfei Lei, Karthikeyan Rajagopal, Sajad Jafari
2025 J jnl
Int. J. Bifurc. Chaos
Gopinath Barathi, Hayder Natiq, Shaobo He, Huihai Wang, Karthikeyan Rajagopal, Iqtadar Hussain
2025 J jnl
Eur. J. Control
Saravanan Shanmugam, Premraj Durairaj, R. Vadivel, Karthikeyan Rajagopal
2025 J jnl
Int. J. Bifurc. Chaos
Jean Chamberlain Chedjou, Vijeesh Vijayan, Jacques Kengne, Karthikeyan Rajagopal, Makhkamov Bakhtiyor Shukhratovich
2025 J jnl
Int. J. Bifurc. Chaos
Karthikeyan Rajagopal, Fahimeh Nazarimehr, Sajad Jafari, Julien Clinton Sprott
2025 J jnl
Multim. Tools Appl.
M. Karthikeyan, D. Manimegalai, Karthikeyan Rajagopal
2024 J jnl
Int. J. Bifurc. Chaos
Atefeh Ahmadi, Sridevi Sriram, Ahmed M. Ali Ali, Karthikeyan Rajagopal, Nikhil Pal, Sajad Jafari
2024 J jnl
Comput.
Atefeh Ahmadi, Vijeesh Vijayan, Hayder Natiq, Alexander N. Pchelintsev, Karthikeyan Rajagopal, Sajad Jafari
2024 J jnl
Complex.
Rajeskannan Subramanian, Serdar Çiçek, Akif Akgul, Girma Adam, Anitha Karthikeyan, Karthikeyan Rajagopal
2024 J jnl
J. Comput. Appl. Math.
Gokulakrishnan Sriram, Ahmed M. Ali Ali, Hayder Natiq, Atefeh Ahmadi, Karthikeyan Rajagopal, Sajad Jafari
2024 J jnl
Biosyst.
Joseph Dianavinnarasi, Rakshanaa Kumar, Anitha Karthikeyan, Karthikeyan Rajagopal
2024 J jnl
Appl. Math. Comput.
Karthikeyan Rajagopal, Dorsa Nezhad Hajian, Hayder Natiq, Yuexi Peng, Fatemeh Parastesh, Sajad Jafari
2024 J jnl
Int. J. Bifurc. Chaos
Premraj Durairaj, Sathiyadevi Kanagaraj, Zhigang Zheng, Anitha Karthikeyan, Karthikeyan Rajagopal
2024 J jnl
Int. J. Bifurc. Chaos
Joseph Dianavinnarasi, Suresh Kumarasamy, Anitha Karthikeyan, Karthikeyan Rajagopal
2024 J jnl
Multim. Tools Appl.
Balamurali Ramakrishnan, Yannick Pascal Kamdeu Nkandeu, Victor Kamdoum Tamba, André Rodrigue Tchamda, Karthikeyan Rajagopal
2024 J jnl
Circuits Syst. Signal Process.
Sridevi Sriram, Lucas Kana Kemgang, M. F. Rakhmatullaeva, Karthikeyan Rajagopal, Jacques Kengne
2024 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Dorsa Nezhad Hajian, Fatemeh Parastesh, Karthikeyan Rajagopal, Sajad Jafari, Matjaz Perc
2023 J jnl
Int. J. Bifurc. Chaos
Sriram Parthasarathy, Hayder Natiq, Karthikeyan Rajagopal, Mahdi Nourian Zavareh, Fahimeh Nazarimehr
2023 J jnl
Comput. Syst. Sci. Eng.
Nidhi Gour, Rajneesh Pareek, Karthikeyan Rajagopal, Himanshu Sharma, Mrim M. Alnfiai, Mohammed A. Alzain, Mehedi Masud, Arun Kumar
2023 J jnl
Int. J. Bifurc. Chaos
Gayathri Vivekanandhan, Mahtab Mehrabbeik, Hayder Natiq, Nikhil Pal, Karthikeyan Rajagopal, Sajad Jafari
2023 J jnl
Int. J. Bifurc. Chaos
Sosthene Tsamene Tanekou, Janarthanan Ramadoss, Jacques Kengne, Germaine Djuidje Kenmoe, Karthikeyan Rajagopal
2023 J jnl
Biosyst.
Sathiyadevi Kanagaraj, Premraj Durairaj, Sivaperumal Sampath, Anitha Karthikeyan, Karthikeyan Rajagopal
2023 J jnl
Biosyst.
Karthikeyan Rajagopal, Anitha Karthikeyan
2023 J jnl
Complex.
Sriram Parthasarathy, Fatemeh Parastesh, Hayder Natiq, Karthikeyan Rajagopal, Sajad Jafari
2023 J jnl
Trans. Inst. Meas. Control
Rashid Jan, Salah Mahmoud Boulaaras, Muhammad Jawad, Karthikeyan Rajagopal
2023 J jnl
Int. J. Bifurc. Chaos
Atefeh Ahmadi, Sriram Parthasarathy, Nikhil Pal, Karthikeyan Rajagopal, Sajad Jafari, Esteban Tlelo-Cuautle
2023 J jnl
Symmetry
Karthikeyan Rajagopal, Sathiyadevi Kanagaraj, Christos K. Volos, Anitha Karthikeyan
2023 J jnl
Appl. Math. Comput.
Sridevi Sriram, Karthikeyan Rajagopal, Anitha Karthikeyan, Akif Akgul
2023 J jnl
Comput. Syst. Sci. Eng.
Himanshu Sharma, Karthikeyan Rajagopal, G. Gugapriya, Rajneesh Pareek, Arun Kumar, Haya Mesfer Alshahrani, Mohamed K. Nour, Hany Mahgoub, Mohamed Mousa, Anwer Mustafa Hilal
2023 J jnl
Complex.
Mohanasubha Ramasamy, Suresh Kumarasamy, Sakthi Kumar Sampathkumar, Anitha Karthikeyan, Karthikeyan Rajagopal
2023 J jnl
Biosyst.
Joseph Dianavinnarasi, Raja Ramachandran, Anitha Karthikeyan, Karthikeyan Rajagopal
2023 J jnl
Comput. Biol. Medicine
Sheida Ansarinasab, Fatemeh Parastesh, Farnaz Ghassemi, Karthikeyan Rajagopal, Sajad Jafari, Dibakar Ghosh
2023 J jnl
Int. J. Bifurc. Chaos
Sridevi Sriram, Hayder Natiq, Karthikeyan Rajagopal, Fatemeh Parastesh, Sajad Jafari
2022 J jnl
Int. J. Bifurc. Chaos
Dhinakaran Veeman, Mahtab Mehrabbeik, Hayder Natiq, Karthikeyan Rajagopal, Sajad Jafari, Iqtadar Hussain
2022 J jnl
Complex.
Arthanari Ramesh, Alireza Bahramian, Hayder Natiq, Karthikeyan Rajagopal, Sajad Jafari, Iqtadar Hussain
2022 J jnl
Int. J. Bifurc. Chaos
Balamurali Ramakrishnan, Hayder Natiq, Karthikeyan Rajagopal, Sajad Jafari, Fahimeh Nazarimehr
2022 J jnl
Complex.
Dhinakaran Veeman, Hayder Natiq, Ahmed M. Ali Ali, Karthikeyan Rajagopal, Iqtadar Hussain
2022 J jnl
Complex.
Adelaïde Nicole Kengnou Telem, Cyrille Feudjio, Balamurali Ramakrishnan, Hilaire Bertrand Fotsin, Karthikeyan Rajagopal
2022 J jnl
Complex.
Janarthanan Ramadoss, Romanic Kengne, Dianorré Tokoue Ngatcha, Victor Kamdoum Tamba, Karthikeyan Rajagopal, Marceline Motchongom Tingue
2022 J jnl
Appl. Math. Comput.
Zahra Shahriari, Fahimeh Nazarimehr, Karthikeyan Rajagopal, Sajad Jafari, Matjaz Perc, Milan Svetec
2022 J jnl
Entropy
Dorsa Nezhad Hajian, Sriram Parthasarathy, Fatemeh Parastesh, Karthikeyan Rajagopal, Sajad Jafari
2022 J jnl
Complex.
Balamurali Ramakrishnan, Mohamed Abdalla, Salah Mahmoud Boulaaras, Karthikeyan Rajagopal
2022 J jnl
Appl. Math. Comput.
Mohanasubha Ramasamy, Subhasri Devarajan, Suresh Kumarasamy, Karthikeyan Rajagopal
2022 J jnl
Int. J. Bifurc. Chaos
Mohadeseh Shafiei Kafraj, Fahimeh Nazarimehr, Dibakar Ghosh, Karthikeyan Rajagopal, Sajad Jafari, Julien Clinton Sprott
2022 J jnl
Appl. Math. Comput.
Nazanin Zandi Mehran, Fahimeh Nazarimehr, Karthikeyan Rajagopal, Dibakar Ghosh, Sajad Jafari, Guanrong Chen
2022 J jnl
Complex.
Hayath Thameem Basha, Karthikeyan Rajagopal, N. Ameer Ahammad, S. Sathish, Sreedhara Rao Gunakala
2022 J jnl
Int. J. Bifurc. Chaos
M. D. Vijayakumar, Hayder Natiq, Gervais Dolvis Leutcho, Karthikeyan Rajagopal, Sajad Jafari, Iqtadar Hussain
2022 J jnl
Int. J. Bifurc. Chaos
Bahareh Karimi Rahjerdi, Ramesh Ramamoorthy, Fahimeh Nazarimehr, Karthikeyan Rajagopal, Sajad Jafari, Iqtadar Hussain
2022 J jnl
Sensors
Li Li, Ahmed A. Abd El-Latif, Sajad Jafari, Karthikeyan Rajagopal, Fahimeh Nazarimehr, Bassem Abd-El-Atty
2022 J jnl
Int. J. Bifurc. Chaos
Hermann-Dior Mekak-Egong, Balamurali Ramakrishnan, Adelaïde Nicole Kengnou Telem, Karthikeyan Rajagopal, Jacques Kengne
2022 J jnl
Int. J. Bifurc. Chaos
Premraj Durairaj, Sathiyadevi Kanagaraj, Kathamuthu Thamilmaran, Karthikeyan Rajagopal
2022 J jnl
Circuits Syst. Signal Process.
Léandre Kamdjeu Kengne, Janarthanan Ramadoss, Jacques Kengne, Karthikeyan Rajagopal
2021 J jnl
Int. J. Bifurc. Chaos
M. D. Vijayakumar, Alireza Bahramian, Hayder Natiq, Karthikeyan Rajagopal, Iqtadar Hussain
2021 J jnl
Complex.
Ran Wang, Chunbiao Li, Serdar Çiçek, Karthikeyan Rajagopal, Xin Zhang
2021 J jnl
Complex.
Ramesh Ramamoorthy, Sajjad Shaukat Jamal, Iqtadar Hussain, Mahtab Mehrabbeik, Sajad Jafari, Karthikeyan Rajagopal
2021 J jnl
Complex.
Dhinakaran Veeman, Hayder Natiq, Nadia M. G. Al-Saidi, Karthikeyan Rajagopal, Sajad Jafari, Iqtadar Hussain
2021 J jnl
Int. J. Bifurc. Chaos
Haikong Lu, Karthikeyan Rajagopal, Fahimeh Nazarimehr, Sajad Jafari
2021 J jnl
Int. J. Bifurc. Chaos
Arthanari Ramesh, Iqtadar Hussain, Hayder Natiq, Mahtab Mehrabbeik, Sajad Jafari, Karthikeyan Rajagopal
2021 J jnl
Complex.
Kui Zhang, M. D. Vijayakumar, Sajjad Shaukat Jamal, Hayder Natiq, Karthikeyan Rajagopal, Sajad Jafari, Iqtadar Hussain
2021 J jnl
Complex.
Anitha Karthikeyan, Karthikeyan Rajagopal, Victor Kamdoum Tamba, Girma Adam, Ashokkumar Srinivasan
2021 J jnl
Integr.
Changzhi Li, Karthikeyan Rajagopal, Fahimeh Nazarimehr, Yongjian Liu
2021 J jnl
Complex.
Salah Mahmoud Boulaaras, Abdelbaki Choucha, Mohamed Abdalla, Karthikeyan Rajagopal, Sahar Ahmed Idris
2021 J jnl
Complex.
Abdul-Basset A. Al-Hussein, Fadhil Rahma Tahir, Karthikeyan Rajagopal
2021 J jnl
Complex.
Janarthanan Ramadoss, Sajedeh Aghababaei, Fatemeh Parastesh, Karthikeyan Rajagopal, Sajad Jafari, Iqtadar Hussain
2021 J jnl
Int. J. Bifurc. Chaos
Nafise Naseri, Sivabalan Ambigapathy, Mohadeseh Shafiei Kafraj, Farnaz Ghassemi, Karthikeyan Rajagopal, Sajad Jafari
2021 J jnl
Int. J. Bifurc. Chaos
Léandre Kamdjeu Kengne, Karthikeyan Rajagopal, Nestor Tsafack, Paul Didier Kamdem Kuate, Balamurali Ramakrishnan, Jacques Kengne, Hilaire Bertrand Fotsin, Justin Roger Mboupda Pone
2021 J jnl
Symmetry
Junxia Wang, Li Xiao, Karthikeyan Rajagopal, Akif Akgul, Serdar Çiçek, Burak Aricioglu
2021 J jnl
Complex.
Amor Menaceur, Salah Mahmoud Boulaaras, Amar Makhlouf, Karthikeyan Rajagopal, Mohamed Abdalla
2021 J jnl
Appl. Math. Comput.
Karthikeyan Rajagopal, Iqtadar Hussain, Zahra Rostami, Chunbiao Li, Viet-Thanh Pham, Sajad Jafari
2021 J jnl
Turkish J. Electr. Eng. Comput. Sci.
Anitha Karthikeyan, Serdar Çiçek, Karthikeyan Rajagopal, Prakash Duraisamy, Ashokkumar Srinivasan
2021 J jnl
Complex.
Changzhi Li, Dhanagopal Ramachandran, Karthikeyan Rajagopal, Sajad Jafari, Yongjian Liu
2021 J jnl
Complex.
M. D. Vijayakumar, Sajjad Shaukat Jamal, Ahmed M. Ali Ali, Karthikeyan Rajagopal, Sajad Jafari, Iqtadar Hussain
2021 J jnl
Entropy
Jesús M. Muñoz-Pacheco, Christos K. Volos, Fernando E. Serrano, Sajad Jafari, Jacques Kengne, Karthikeyan Rajagopal
2021 J jnl
Int. J. Bifurc. Chaos
Jay Prakash Singh, Karthikeyan Rajagopal, Binoy Krishna Roy
2020 J jnl
Complex.
Chunsheng Feng, Cunyun Nie, Haiyuan Yu, Liping Zhou, Karthikeyan Rajagopal
2020 J jnl
Circuits Syst. Signal Process.
Pankaj Prakash, Karthikeyan Rajagopal, Ismail Koyuncu, Jay Prakash Singh, Murat Alcin, Binoy Krishna Roy, Murat Tuna
2020 J jnl
Soft Comput.
Karthikeyan Rajagopal, Akif Akgul, Sajad Jafari, Anitha Karthikeyan, Ünal Çavusoglu, Sezgin Kaçar
2020 J jnl
Frontiers Inf. Technol. Electron. Eng.
Karthikeyan Rajagopal, Atiyeh Bayani, Sajad Jafari, Anitha Karthikeyan, Iqtadar Hussain
2020 J jnl
Mechatron. Syst. Control.
Zhouchao Wei, Yingying Li, Karthikeyan Rajagopal
2020 J jnl
Frontiers Inf. Technol. Electron. Eng.
Sifeu Takougang Kingni, Karthikeyan Rajagopal, Serdar Çiçek, Ashokkumar Srinivasan, Anitha Karthikeyan
2020 J jnl
Int. J. Bifurc. Chaos
Karthikeyan Rajagopal, Jay Prakash Singh, Anitha Karthikeyan, Binoy Krishna Roy
2020 J jnl
Entropy
Lazaros Moysis, Christos K. Volos, Sajad Jafari, Jesús M. Muñoz-Pacheco, Jacques Kengne, Karthikeyan Rajagopal, Ioannis N. Stouboulos
2020 J jnl
Complex.
Anitha Karthikeyan, Karthikeyan Rajagopal
2020 J jnl
Entropy
Christos K. Volos, Sajad Jafari, Jesús M. Muñoz-Pacheco, Jacques Kengne, Karthikeyan Rajagopal
2019 J jnl
Int. J. Bifurc. Chaos
Fahimeh Nazarimehr, Viet-Thanh Pham, Karthikeyan Rajagopal, Fawaz E. Alsaadi, Tasawar Hayat, Sajad Jafari
2019 J jnl
IEEE Access
Karthikeyan Rajagopal, Akif Akgul, Irene M. Moroz, Zhouchao Wei, Sajad Jafari, Iqtadar Hussain
2019 J jnl
J. Circuits Syst. Comput.
Karthikeyan Rajagopal, Akif Akgul, Sajad Jafari, Anitha Karthikeyan, Ünal Çavusoglu, Sezgin Kaçar
2019 J jnl
J. Circuits Syst. Comput.
Karthikeyan Rajagopal, Fahimeh Nazarimehr, Laarem Guessas, Anitha Karthikeyan, Ashokkumar Srinivasan, Sajad Jafari
2019 J jnl
Int. J. Bifurc. Chaos
Karthikeyan Rajagopal, Sajad Jafari, Viet-Thanh Pham, Zhouchao Wei, Premraj Durairaj, Kathamuthu Thamilmaran, Anitha Karthikeyan
2019 J jnl
Appl. Math. Comput.
Fatemeh Parastesh, Karthikeyan Rajagopal, Fawaz E. Alsaadi, Tasawar Hayat, Viet-Thanh Pham, Iqtadar Hussain
2019 J jnl
Int. J. Bifurc. Chaos
Karthikeyan Rajagopal, Fahimeh Nazarimehr, Anitha Karthikeyan, Ashokkumar Srinivasan, Sajad Jafari
2019 J jnl
Complex.
Karthikeyan Rajagopal, Yesgat Admassu, Riessom Weldegiorgis, Prakash Duraisamy, Anitha Karthikeyan
2019 J jnl
Soft Comput.
Yasser Shekofteh, Sajad Jafari, Karthikeyan Rajagopal
2019 J jnl
Frontiers Inf. Technol. Electron. Eng.
Karthikeyan Rajagopal, Fahimeh Nazarimehr, Anitha Karthikeyan, Ahmed Alsaedi, Tasawar Hayat, Viet-Thanh Pham
2019 J jnl
Inf. Technol. Control.
Karthikeyan Rajagopal, Sajad Jafari, Sezgin Kaçar, Anitha Karthikeyan, Akif Akgül
2019 J jnl
Int. J. Bifurc. Chaos
Karthikeyan Rajagopal, Abdul Jalil M. Khalaf, Zhouchao Wei, Viet-Thanh Pham, Ahmed Alsaedi, Tasawar Hayat
2019 J jnl
Int. J. Bifurc. Chaos
Karthikeyan Rajagopal, Akif Akgul, Viet-Thanh Pham, Fawaz E. Alsaadi, Fahimeh Nazarimehr, Fuad E. Alsaadi, Sajad Jafari
2019 J jnl
Entropy
Christos K. Volos, Sajad Jafari, Jacques Kengne, Jesús M. Muñoz-Pacheco, Karthikeyan Rajagopal
2019 J jnl
Circuits Syst. Signal Process.
Yasser Shekofteh, Sajad Jafari, Karthikeyan Rajagopal, Viet-Thanh Pham
2019 J jnl
Int. J. Bifurc. Chaos
Sajad Jafari, Karthikeyan Rajagopal, Tasawar Hayat, Ahmed Alsaedi, Viet-Thanh Pham
2018 J jnl
Entropy
Jesús M. Muñoz-Pacheco, Ernesto Zambrano-Serrano, Christos K. Volos, Sajad Jafari, Jacques Kengne, Karthikeyan Rajagopal
2018 J jnl
Complex.
Payam Sadeghi Shabestari, Karthikeyan Rajagopal, Bahareh Safarbali, Sajad Jafari, Prakash Duraisamy
2018 J jnl
Int. J. Simul. Process. Model.
Sundarapandian Vaidyanathan, Ahmad Taher Azar, Karthikeyan Rajagopal, Aceng Sambas, Sezgin Kaçar, Ünal Çavusoglu
2018 J jnl
Complex.
Karthikeyan Rajagopal, Anitha Karthikeyan, Prakash Duraisamy, Riessom Weldegiorgis
2018 J jnl
Int. J. Bifurc. Chaos
Mahdi Nourian Zavareh, Fahimeh Nazarimehr, Karthikeyan Rajagopal, Sajad Jafari
2018 J jnl
Circuits Syst. Signal Process.
Karthikeyan Rajagopal, Sajad Jafari, Anitha Karthikeyan, Ashokkumar Srinivasan, Biniyam Ayele
2018 J jnl
Int. J. Bifurc. Chaos
Pankaj Prakash, Karthikeyan Rajagopal, Jay Prakash Singh, Binoy Krishna Roy
2018 J jnl
Complex.
Karthikeyan Rajagopal, Riessom Weldegiorgis, Anitha Karthikeyan, Prakash Duraisamy, Goitom Tadesse
2018 J jnl
Int. J. Bifurc. Chaos
Karthikeyan Rajagopal, Shirin Panahi, Anitha Karthikeyan, Ahmed Alsaedi, Viet-Thanh Pham, Tasawar Hayat
2017 J jnl
Complex.
Anitha Karthikeyan, Karthikeyan Rajagopal
2017 J jnl
Complex.
Karthikeyan Rajagopal, Laarem Guessas, Anitha Karthikeyan, Ashokkumar Srinivasan, Girma Adam
2017 J jnl
Complex.
Karthikeyan Rajagopal, Anitha Karthikeyan, Prakash Duraisamy
2017 J jnl
Int. J. Simul. Process. Model.
Sundarapandian Vaidyanathan, Karthikeyan Rajagopal
2017 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Karthikeyan Rajagopal, Sivasubramanya Nadar Balakrishnan, Jerome R. Busemeyer
2016 C conf
ACC
Karthikeyan Rajagopal, Sivasubramanya Nadar Balakrishnan
2016 C conf
ACC
Karthikeyan Rajagopal, Sivasubramanya Nadar Balakrishnan, Jerome R. Busemeyer
2015 J jnl
Int. J. Model. Identif. Control.
Sundarapandian Vaidyanathan, Ahmad Taher Azar, Karthikeyan Rajagopal, Prasina Alexander
redb/extractors/js_extractors/scripts/js-xray-runner.js
← Index redb/extractors/js_extractors/scripts/js-xray-runner.js javascript
#!/usr/bin/env node
// Bridge between the Python JS pipeline and @nodesecure/js-x-ray.
//
// Usage: node js-xray-runner.js <path-to-js-file>
//   stdout  one JSON object: {"obfuscator": <name|null>, "warnings": [...]}
//   stderr  human-readable error on failure
//   exit 0  analysis ran (the file may still be benign — see "obfuscator")
//   exit 1  the file could not be read or analysed
//
// Each warning is emitted as {kind, value} so the Python side can tag
// supporting signals (encoded-literal, short-identifiers, suspicious-literal,
// unsafe-stmt) without having to mirror js-x-ray's whole schema.
//
// js-x-ray ≥7 ships as an ES module, which CommonJS `require()` cannot load
// from a `.js` script — the dynamic `import()` below is what makes the
// bridge work without renaming the file to `.mjs` or adding `"type":
// "module"` to package.json (which would break tools that still
// `require()` from this directory).

const fs = require("fs");
const path = require("path");

function fail(msg) {
  process.stderr.write(msg + "\n");
  process.exit(1);
}

async function main() {
  const target = process.argv[2];
  if (!target) fail("usage: js-xray-runner.js <file>");

  let source;
  try {
    source = fs.readFileSync(target, "utf8");
  } catch (e) {
    fail(`read failed: ${e.message}`);
  }

  // The legacy `runASTAnalysis` function is deprecated (removed in v8); the
  // current API is the `AstAnalyser` class. Both produce a result with the
  // same `warnings` shape, so the rest of the bridge is unchanged.
  let AstAnalyser;
  try {
    ({ AstAnalyser } = await import("@nodesecure/js-x-ray"));
  } catch (e) {
    fail(`@nodesecure/js-x-ray not installed (run \`npm install\` in ${path.dirname(__filename)}): ${e.message}`);
  }

  // js-x-ray defaults to module-mode parsing, which rejects scripts that
  // (legally) use reserved words as identifiers, top-level `return`, etc.
  // A lot of real-world JS malware is script-style (WScript/HTA bodies,
  // pasted snippets) — retrying in script mode catches those without
  // pulling in a more lenient parser. Both attempts share the same
  // analyser; only the parse mode flips. If both fail, the original error
  // (module-mode) is reported because that's the more informative one for
  // genuinely broken sources.
  let result;
  const analyser = new AstAnalyser();
  let firstErr;
  try {
    result = await analyser.analyse(source, { module: true });
  } catch (e) {
    firstErr = e;
    try {
      result = await analyser.analyse(source, { module: false });
    } catch (e2) {
      fail(`js-x-ray analysis failed: ${firstErr.message}`);
    }
  }

  const warnings = (result.warnings || []).map((w) => ({
    kind: w.kind,
    value: w.value !== undefined ? w.value : null,
  }));

  // js-x-ray flags the obfuscator family in a warning whose kind is
  // "obfuscated-code" and whose value names the family (jsfuck, obfuscator.io,
  // freejsobfuscator, morse, jjencode, ...). Absent => not detected.
  const obfWarning = warnings.find((w) => w.kind === "obfuscated-code");
  const obfuscator = obfWarning ? obfWarning.value : null;

  // js-x-ray runs its own AST internally with a modern parser, so its
  // identifier-length average is the only path the Python pipeline has to
  // that signal on ES2015+ sources — pyjsparser is ES5.1-only and silently
  // drops to 0 the moment it hits destructuring, classes, optional chaining,
  // etc. Surfacing this lets the heuristic's `avg_identifier_length<2`
  // strong signal fire on real obfuscator.io output. `null` when the value
  // is missing or non-numeric (defensive — older js-x-ray builds may differ).
  const idsLengthAvg =
    typeof result.idsLengthAvg === "number" && !Number.isNaN(result.idsLengthAvg)
      ? result.idsLengthAvg
      : null;

  process.stdout.write(JSON.stringify({ obfuscator, warnings, idsLengthAvg }));
}

main().catch((e) => fail(e.message || String(e)));