{"id":17768126,"url":"https://github.com/kureev/react-navigation-parser","last_synced_at":"2025-03-15T14:30:34.130Z","repository":{"id":66198872,"uuid":"80984050","full_name":"Kureev/react-navigation-parser","owner":"Kureev","description":"Parser tool for react-navigation","archived":false,"fork":false,"pushed_at":"2017-03-20T14:18:28.000Z","size":60,"stargazers_count":24,"open_issues_count":1,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-14T06:55:41.173Z","etag":null,"topics":["parser","react-native","react-navigation"],"latest_commit_sha":null,"homepage":"","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/Kureev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-05T09:56:12.000Z","updated_at":"2021-06-20T14:46:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"ee66a02c-7269-4858-a50d-a795d3a82d30","html_url":"https://github.com/Kureev/react-navigation-parser","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kureev%2Freact-navigation-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kureev%2Freact-navigation-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kureev%2Freact-navigation-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kureev%2Freact-navigation-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kureev","download_url":"https://codeload.github.com/Kureev/react-navigation-parser/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243742549,"owners_count":20340664,"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":["parser","react-native","react-navigation"],"created_at":"2024-10-26T20:56:05.433Z","updated_at":"2025-03-15T14:30:34.118Z","avatar_url":"https://github.com/Kureev.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Tiny parser for react-navigation based projects\r\n----\r\nParse react-navigation based project to find containers, routes, transitions etc.\r\n\r\nGetting started\r\n----\r\n- Install using `npm`:\r\n```bash\r\n$ npm i git@github.com:Kureev/react-navigation-parser.git -g\r\n```\r\n\r\n- Download any react-native project, using react-navigation\r\n- Run `parse-navigation` CLI:\r\n```bash\r\n$ parse-navigation path/to/react-navigation-project\r\n```\r\nor use it via JS API:\r\n```js\r\nconst parser = require('react-navigation-parser');\r\nconst result = parse('project/folder');\r\n```\r\n\r\nExample\r\n----\r\nFor the [PocketGear](https://github.com/satya164/PocketGear) project, tool gives the following output:\r\n\u003cdetails\u003e\r\n```json\r\n{\r\n  \"containers\":{\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/Home.js\":{\r\n      \"navigationType\":\"StackNavigator\",\r\n      \"routes\":[\r\n        {\r\n          \"name\":\"Main\",\r\n          \"value\":\"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonChooser.js\"\r\n        },\r\n        {\r\n          \"name\":\"StrongAgainst\",\r\n          \"value\":\"/Users/\u003cusername\u003e/PocketGear/src/components/StrongAgainstList.js\"\r\n        },\r\n        {\r\n          \"name\":\"WeakAgainst\",\r\n          \"value\":\"/Users/\u003cusername\u003e/PocketGear/src/components/WeakAgainstList.js\"\r\n        },\r\n        {\r\n          \"name\":\"Info\",\r\n          \"value\":\"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonInfo.js\"\r\n        }\r\n      ],\r\n      \"component\":null,\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonInfo.js\":{\r\n      \"navigationType\":\"TabNavigator\",\r\n      \"routes\":[\r\n        {\r\n          \"name\":\"Details\",\r\n          \"value\":\"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonDetails.js\"\r\n        },\r\n        {\r\n          \"name\":\"Matches\",\r\n          \"value\":\"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonMatches.js\"\r\n        },\r\n        {\r\n          \"name\":\"Tools\",\r\n          \"value\":\"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonTools.js\"\r\n        }\r\n      ],\r\n      \"component\":\"PokemonInfo\",\r\n      \"transitions\":[]\r\n    }\r\n  },\r\n  \"components\":{\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/Appbar.js\":{\r\n      \"component\":\"Appbar\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/AppbarShell.js\":{\r\n      \"component\":\"AppbarShell\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/Attack.js\":{\r\n      \"component\":\"Attack\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/CPCalculator.js\":{\r\n      \"component\":\"CPCalculator\",\r\n      \"transitions\":[\r\n        \"Info\"\r\n      ]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/Evolution.js\":{\r\n      \"component\":\"Evolution\",\r\n      \"transitions\":[\r\n        \"Info\"\r\n      ]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/GridView.js\":{\r\n      \"component\":\"GridView\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/Heading.js\":{\r\n      \"component\":\"Heading\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/More.js\":{\r\n      \"component\":\"More\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/NoResults.js\":{\r\n      \"component\":\"NoResults\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/Paragraph.js\":{\r\n      \"component\":\"Paragraph\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/Placeholder.js\":{\r\n      \"component\":\"Placeholder\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonChooser.js\":{\r\n      \"component\":\"PokemonChooser\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonDetails.js\":{\r\n      \"component\":\"PokemonDetails\",\r\n      \"transitions\":[\r\n        \"Info\"\r\n      ]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonList.js\":{\r\n      \"component\":\"PokemonList\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonListCard.js\":{\r\n      \"component\":\"PokemonListCard\",\r\n      \"transitions\":[\r\n        \"Info\"\r\n      ]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonMatches.js\":{\r\n      \"component\":\"PokemonMatches\",\r\n      \"transitions\":[\r\n        \"Info\",\r\n        \"StrongAgainst\",\r\n        \"WeakAgainst\"\r\n      ]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonTools.js\":{\r\n      \"component\":\"PokemonTools\",\r\n      \"transitions\":[\r\n        \"Info\"\r\n      ]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonTypeLabel.js\":{\r\n      \"component\":\"PokemonTypeLabel\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/ProgressBar.js\":{\r\n      \"component\":\"ProgressBar\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/SearchBar.js\":{\r\n      \"component\":\"SearchBar\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/SpinButton.js\":{\r\n      \"component\":\"SpinButton\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/StrongAgainstList.js\":{\r\n      \"component\":\"StrongAgainstList\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/TouchableButton.js\":{\r\n      \"component\":\"TouchableButton\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/TouchableItem.js\":{\r\n      \"component\":\"TouchableItem\",\r\n      \"transitions\":[]\r\n    },\r\n    \"/Users/\u003cusername\u003e/PocketGear/src/components/WeakAgainstList.js\":{\r\n      \"component\":\"WeakAgainstList\",\r\n      \"transitions\":[]\r\n    }\r\n  },\r\n  \"routes\":{\r\n    \"Main\":\"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonChooser.js\",\r\n    \"StrongAgainst\":\"/Users/\u003cusername\u003e/PocketGear/src/components/StrongAgainstList.js\",\r\n    \"WeakAgainst\":\"/Users/\u003cusername\u003e/PocketGear/src/components/WeakAgainstList.js\",\r\n    \"Info\":\"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonInfo.js\",\r\n    \"Details\":\"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonDetails.js\",\r\n    \"Matches\":\"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonMatches.js\",\r\n    \"Tools\":\"/Users/\u003cusername\u003e/PocketGear/src/components/PokemonTools.js\"\r\n  }\r\n}\r\n```\r\n\u003c/details\u003e\r\n\r\nCapabilities\r\n----\r\n- Detect navigation containers with routes\r\n  - StackNavigator\r\n  - DrawerNavigator\r\n  - TabNavigator\r\n- Detect components\r\n  - `export default () =\u003e {}`\r\n  - `export default function Foo() {}`\r\n  - `export default Foo` where `Foo` is a class that extends `React.Component`\r\n  - `export default class Foo extends React.Component`\r\n  - `export default connect(x, y)(Foo)`\r\n- Detect transitions\r\n  - `this.props.navigate('route', config)`\r\n  - `navigate('route', config)`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkureev%2Freact-navigation-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkureev%2Freact-navigation-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkureev%2Freact-navigation-parser/lists"}