# mod.ts
/**
 * A is a class
 *
 * ```ts
 * const bar = "foo";
 * console.log(bar);
 * ```
 *
 * Nothing more
 */
export class A {}
/**
 * B is an interface
 *
 * ```ts
 * # const bar = "foo";
 * console.log(bar);
 * ```
 *
 * Should be
 */
export interface B {}
/**
 * C is a function
 *
 * ```ts
 * class Bar {
 *   #foo = "something";
 * }
 * console.log(bar);
 * ```
 *
 * Summarised
 */
export function C() {}
/**
 * D
 *
 * ```ts
 * const bar = "foo";
 * # console.log(bar);```
 */
export function D() {}

# output.txt
Defined in file:///mod.ts:35:1

function C(): void
  C is a function
  
  ```ts
  class Bar {
    #foo = "something";
  }
  console.log(bar);
  ```
  
  Summarised

Defined in file:///mod.ts:43:1

function D(): void
  D
  
  ```ts
  const bar = "foo";
  ```

Defined in file:///mod.ts:11:1

class A
  A is a class
  
  ```ts
  const bar = "foo";
  console.log(bar);
  ```
  
  Nothing more


Defined in file:///mod.ts:22:1

interface B
  B is an interface
  
  ```ts
  console.log(bar);
  ```
  
  Should be



# output.json
[
  {
    "name": "A",
    "isDefault": false,
    "location": {
      "filename": "file:///mod.ts",
      "line": 11,
      "col": 0,
      "byteIndex": 105
    },
    "declarationKind": "export",
    "jsDoc": {
      "doc": "A is a class\n\n```ts\nconst bar = \"foo\";\nconsole.log(bar);\n```\n\nNothing more"
    },
    "kind": "class",
    "classDef": {
      "isAbstract": false,
      "constructors": [],
      "properties": [],
      "indexSignatures": [],
      "methods": [],
      "extends": null,
      "implements": [],
      "typeParams": [],
      "superTypeParams": []
    }
  },
  {
    "name": "B",
    "isDefault": false,
    "location": {
      "filename": "file:///mod.ts",
      "line": 22,
      "col": 0,
      "byteIndex": 232
    },
    "declarationKind": "export",
    "jsDoc": {
      "doc": "B is an interface\n\n```ts\nconsole.log(bar);\n```\n\nShould be"
    },
    "kind": "interface",
    "interfaceDef": {
      "extends": [],
      "constructors": [],
      "methods": [],
      "properties": [],
      "callSignatures": [],
      "indexSignatures": [],
      "typeParams": []
    }
  },
  {
    "name": "C",
    "isDefault": false,
    "location": {
      "filename": "file:///mod.ts",
      "line": 35,
      "col": 0,
      "byteIndex": 383
    },
    "declarationKind": "export",
    "jsDoc": {
      "doc": "C is a function\n\n```ts\nclass Bar {\n  #foo = \"something\";\n}\nconsole.log(bar);\n```\n\nSummarised"
    },
    "kind": "function",
    "functionDef": {
      "params": [],
      "returnType": {
        "repr": "void",
        "kind": "keyword",
        "keyword": "void"
      },
      "hasBody": true,
      "isAsync": false,
      "isGenerator": false,
      "typeParams": []
    }
  },
  {
    "name": "D",
    "isDefault": false,
    "location": {
      "filename": "file:///mod.ts",
      "line": 43,
      "col": 0,
      "byteIndex": 479
    },
    "declarationKind": "export",
    "jsDoc": {
      "doc": "D\n\n```ts\nconst bar = \"foo\";\n```"
    },
    "kind": "function",
    "functionDef": {
      "params": [],
      "returnType": {
        "repr": "void",
        "kind": "keyword",
        "keyword": "void"
      },
      "hasBody": true,
      "isAsync": false,
      "isGenerator": false,
      "typeParams": []
    }
  }
]
