{"id":15070137,"url":"https://github.com/danielstjules/inspect-ast","last_synced_at":"2025-10-25T06:47:44.260Z","repository":{"id":57274709,"uuid":"84498413","full_name":"danielstjules/inspect-ast","owner":"danielstjules","description":"A better way to view a compact JS abstract syntax tree","archived":false,"fork":false,"pushed_at":"2017-03-19T18:20:49.000Z","size":20,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-22T21:17:13.013Z","etag":null,"topics":["ast","js"],"latest_commit_sha":null,"homepage":null,"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/danielstjules.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-03-09T23:30:09.000Z","updated_at":"2017-06-16T00:12:36.000Z","dependencies_parsed_at":"2022-09-18T03:42:56.136Z","dependency_job_id":null,"html_url":"https://github.com/danielstjules/inspect-ast","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/danielstjules%2Finspect-ast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielstjules%2Finspect-ast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielstjules%2Finspect-ast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielstjules%2Finspect-ast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danielstjules","download_url":"https://codeload.github.com/danielstjules/inspect-ast/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243847061,"owners_count":20357317,"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":["ast","js"],"created_at":"2024-09-25T01:48:32.943Z","updated_at":"2025-10-25T06:47:44.148Z","avatar_url":"https://github.com/danielstjules.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# inspect-ast\n\nA better way to render a compact JS abstract syntax tree for inspection.\nWorks with [ESTree](https://github.com/estree/estree) and\n[Babel](https://github.com/babel/babylon/blob/master/ast/spec.md) spec-compliant\nASTs, though the returned output is not compliant.\n\n[![Build Status](https://travis-ci.org/danielstjules/inspect-ast.svg?branch=master)](https://travis-ci.org/danielstjules/inspect-ast)\n\n## Overview\n\nImagine you parse the following code to build an AST using something like acorn:\n\n``` javascript\nexport function sum(a, b) {\n  return a + b;\n}\n```\n\nIf you want to inspect its full length, it's quite verbose:\n\n``` javascript\n\u003e var util = require('util');\n\u003e console.log(util.inspect(ast, {depth: null}));\n\nNode {\n  type: 'Program',\n  start: 0,\n  end: 46,\n  body:\n   [ Node {\n       type: 'ExportNamedDeclaration',\n       start: 0,\n       end: 45,\n       declaration:\n        Node {\n          type: 'FunctionDeclaration',\n          start: 7,\n          end: 45,\n          id: Node { type: 'Identifier', start: 16, end: 19, name: 'sum' },\n          params:\n           [ Node { type: 'Identifier', start: 20, end: 21, name: 'a' },\n             Node { type: 'Identifier', start: 23, end: 24, name: 'b' } ],\n          generator: false,\n          expression: false,\n          body:\n           Node {\n             type: 'BlockStatement',\n             start: 26,\n             end: 45,\n             body:\n              [ Node {\n                  type: 'ReturnStatement',\n                  start: 30,\n                  end: 43,\n                  argument:\n                   Node {\n                     type: 'BinaryExpression',\n                     start: 37,\n                     end: 42,\n                     left: Node { type: 'Identifier', start: 37, end: 38, name: 'a' },\n                     operator: '+',\n                     right: Node { type: 'Identifier', start: 41, end: 42, name: 'b' } } } ] } },\n       specifiers: [],\n       source: null } ],\n  sourceType: 'script' }\n```\n\nWith inspect-ast, it's a little easier to read:\n\n``` javascript\n\u003e var inspect = require('inspect-ast');\n\u003e console.log(inspect(ast));\n\nProgram {\n  body:\n   [ ExportNamedDeclaration {\n       declaration:\n        FunctionDeclaration {\n          id: Identifier { name: 'sum' },\n          params: [ Identifier { name: 'a' }, Identifier { name: 'b' } ],\n          body:\n           BlockStatement {\n             body:\n              [ ReturnStatement {\n                  argument:\n                   BinaryExpression {\n                     left: Identifier { name: 'a' },\n                     operator: '+',\n                     right: Identifier { name: 'b' } } } ] } },\n       specifiers: [],\n       source: null } ] }\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielstjules%2Finspect-ast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanielstjules%2Finspect-ast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielstjules%2Finspect-ast/lists"}