{"id":13527677,"url":"https://github.com/maierfelix/Iroh","last_synced_at":"2025-04-01T09:31:57.555Z","repository":{"id":50903266,"uuid":"99749987","full_name":"maierfelix/Iroh","owner":"maierfelix","description":"Dynamic code analysis tool - Exploit, record and analyze running JavaScript","archived":false,"fork":false,"pushed_at":"2018-06-17T15:03:48.000Z","size":5118,"stargazers_count":925,"open_issues_count":10,"forks_count":45,"subscribers_count":31,"default_branch":"master","last_synced_at":"2025-03-28T02:08:27.249Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://maierfelix.github.io/Iroh/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maierfelix.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-08-09T01:00:44.000Z","updated_at":"2025-03-15T10:27:43.000Z","dependencies_parsed_at":"2022-09-26T21:50:19.580Z","dependency_job_id":null,"html_url":"https://github.com/maierfelix/Iroh","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maierfelix%2FIroh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maierfelix%2FIroh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maierfelix%2FIroh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maierfelix%2FIroh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maierfelix","download_url":"https://codeload.github.com/maierfelix/Iroh/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246616291,"owners_count":20806102,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T06:01:56.698Z","updated_at":"2025-04-01T09:31:57.044Z","avatar_url":"https://github.com/maierfelix.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","Programming Languages","📦 Legacy \u0026 Inactive Projects"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"//maierfelix.github.io/Iroh/\"\u003e\n    \u003cimg alt=\"Iroh\" src=\"http://i.imgur.com/q7DYXfF.png\" height=\"175\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"//maierfelix.github.io/Iroh/\"\u003eWebsite\u003c/a\u003e |\n  \u003ca href=\"//maierfelix.github.io/Iroh/examples/index.html\"\u003eExamples\u003c/a\u003e |\n  \u003ca href=\"//github.com/maierfelix/Iroh/blob/master/API.md\"\u003eAPI\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"//www.npmjs.com/package/iroh\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/iroh.svg?style=flat-square\" alt=\"NPM Version\" /\u003e\u003c/a\u003e \u003ca href=\"//www.npmjs.com/package/iroh\"\u003e\u003cimg src=\"https://img.shields.io/npm/dm/iroh.svg?style=flat-square\" alt=\"NPM Downloads\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  ☕ Dynamic code analysis for JavaScript\n\u003c/p\u003e\n\n\u003cbr/\u003e\n\n#### Description\n\nIroh is a dynamic code analysis tool for JavaScript.\nIroh allows to record your code flow in realtime, intercept runtime informations and manipulate program behaviour on the fly. \n\n#### What is Dynamic analysis?\n\nDynamic analysis is in contrast to static analysis (e.g. used in [Babel](//github.com/babel/babel) and [ESlint](//github.com/eslint/eslint)). It allows to collect data which is only available at runtime. Iroh makes it possible to collect type informations of your running program, analyze it's behaviour, capture and manipulate runtime values like parameters or variables - and all this while your code is actually running!\n\n### Getting started\n\nYou can learn how to use Iroh [here](//github.com/maierfelix/Iroh/blob/master/GETTING_STARTED.md).\n\nA summary of Iroh's API can be found [here](//github.com/maierfelix/Iroh/blob/master/API.md).\n\n### Installation\n\n````\nnpm install iroh\n````\nor alternatively the browser distribution from [here](//cdn.rawgit.com/maierfelix/Iroh/master/dist/iroh-browser.js).\n\n### Examples\n\nYou can play with some live examples [here](//maierfelix.github.io/Iroh/examples/) and you can clone them from [here](//github.com/maierfelix/Iroh/tree/gh-pages/examples).\n\nBelow you can see an example of visualizing captured runtime data. While the code below is running, Iroh feeds us a stream of runtime informations, which we can then visualize within any kind of model. In this case we are using a simple textual model to visualize all ``Iroh.CALLS`` (*function calls*) and ``Iroh.IF`` (*if statements*) of the input code. The code indentation in the output is automatically generated by Iroh too.\n\n#### Input\n````js\nfunction factorial(n) {\n  if (n === 0) return 1;\n  return n * factorial(n - 1);\n};\nfactorial(3);\n````\n#### Output\n````js\ncall factorial ( [3] )\n  call factorial ( [2] )\n    call factorial ( [1] )\n      call factorial ( [0] )\n        if\n        if end\n      call factorial end -\u003e [1]\n    call factorial end -\u003e [1]\n  call factorial end -\u003e [2]\ncall factorial end -\u003e [6]\n````\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaierfelix%2FIroh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaierfelix%2FIroh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaierfelix%2FIroh/lists"}