{
  "file": "/app/src/wizard/session.ts",
  "language": "typescript",
  "entities": [
    {
      "id": "wizard/session.ts",
      "type": "Module",
      "name": "wizard/session.ts",
      "kind": "module",
      "visibility": "public",
      "line_range": [
        1,
        265
      ]
    },
    {
      "id": "dep:node:crypto",
      "type": "Dependency",
      "name": "node:crypto",
      "kind": "import",
      "visibility": "internal",
      "line_range": [
        1,
        1
      ]
    },
    {
      "id": "dep:wizard/prompts.js",
      "type": "Dependency",
      "name": "wizard/prompts.js",
      "kind": "import",
      "visibility": "internal",
      "line_range": [
        2,
        2
      ]
    },
    {
      "id": "wizard/session.ts:createDeferred",
      "type": "Function",
      "name": "createDeferred",
      "kind": "function",
      "visibility": "internal",
      "line_range": [
        37,
        45
      ]
    },
    {
      "id": "wizard/session.ts:WizardSessionPrompter",
      "type": "Class",
      "name": "WizardSessionPrompter",
      "kind": "class",
      "visibility": "internal",
      "line_range": [
        47,
        161
      ]
    },
    {
      "id": "wizard/session.ts:WizardSessionPrompter:constructor",
      "type": "Function",
      "name": "constructor",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        48,
        48
      ]
    },
    {
      "id": "wizard/session.ts:WizardSessionPrompter:intro",
      "type": "Function",
      "name": "intro",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        50,
        57
      ]
    },
    {
      "id": "wizard/session.ts:WizardSessionPrompter:outro",
      "type": "Function",
      "name": "outro",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        59,
        66
      ]
    },
    {
      "id": "wizard/session.ts:WizardSessionPrompter:note",
      "type": "Function",
      "name": "note",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        68,
        70
      ]
    },
    {
      "id": "wizard/session.ts:WizardSessionPrompter:select",
      "type": "Function",
      "name": "select",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        72,
        89
      ]
    },
    {
      "id": "wizard/session.ts:WizardSessionPrompter:multiselect",
      "type": "Function",
      "name": "multiselect",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        91,
        108
      ]
    },
    {
      "id": "wizard/session.ts:WizardSessionPrompter:text",
      "type": "Function",
      "name": "text",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        110,
        136
      ]
    },
    {
      "id": "wizard/session.ts:WizardSessionPrompter:confirm",
      "type": "Function",
      "name": "confirm",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        138,
        146
      ]
    },
    {
      "id": "wizard/session.ts:WizardSessionPrompter:progress",
      "type": "Function",
      "name": "progress",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        148,
        153
      ]
    },
    {
      "id": "wizard/session.ts:WizardSessionPrompter:prompt",
      "type": "Function",
      "name": "prompt",
      "kind": "method",
      "visibility": "private",
      "line_range": [
        155,
        160
      ]
    },
    {
      "id": "wizard/session.ts:WizardSession",
      "type": "Class",
      "name": "WizardSession",
      "kind": "class",
      "visibility": "public",
      "line_range": [
        163,
        264
      ]
    },
    {
      "id": "wizard/session.ts:WizardSession:constructor",
      "type": "Function",
      "name": "constructor",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        170,
        173
      ]
    },
    {
      "id": "wizard/session.ts:WizardSession:next",
      "type": "Function",
      "name": "next",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        175,
        190
      ]
    },
    {
      "id": "wizard/session.ts:WizardSession:answer",
      "type": "Function",
      "name": "answer",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        192,
        200
      ]
    },
    {
      "id": "wizard/session.ts:WizardSession:cancel",
      "type": "Function",
      "name": "cancel",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        202,
        214
      ]
    },
    {
      "id": "wizard/session.ts:WizardSession:pushStep",
      "type": "Function",
      "name": "pushStep",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        216,
        219
      ]
    },
    {
      "id": "wizard/session.ts:WizardSession:run",
      "type": "Function",
      "name": "run",
      "kind": "method",
      "visibility": "private",
      "line_range": [
        221,
        236
      ]
    },
    {
      "id": "wizard/session.ts:WizardSession:awaitAnswer",
      "type": "Function",
      "name": "awaitAnswer",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        238,
        246
      ]
    },
    {
      "id": "wizard/session.ts:WizardSession:resolveStep",
      "type": "Function",
      "name": "resolveStep",
      "kind": "method",
      "visibility": "private",
      "line_range": [
        248,
        255
      ]
    },
    {
      "id": "wizard/session.ts:WizardSession:getStatus",
      "type": "Function",
      "name": "getStatus",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        257,
        259
      ]
    },
    {
      "id": "wizard/session.ts:WizardSession:getError",
      "type": "Function",
      "name": "getError",
      "kind": "method",
      "visibility": "public",
      "line_range": [
        261,
        263
      ]
    }
  ],
  "relationships": [
    {
      "type": "IMPORTS",
      "source": "wizard/session.ts",
      "target": "dep:node:crypto"
    },
    {
      "type": "IMPORTS",
      "source": "wizard/session.ts",
      "target": "dep:wizard/prompts.js"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts",
      "target": "wizard/session.ts:createDeferred"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts",
      "target": "wizard/session.ts:WizardSessionPrompter"
    },
    {
      "type": "IMPLEMENTS",
      "source": "wizard/session.ts:WizardSessionPrompter",
      "target": "WizardPrompter"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSessionPrompter",
      "target": "wizard/session.ts:WizardSessionPrompter:constructor"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSessionPrompter",
      "target": "wizard/session.ts:WizardSessionPrompter:intro"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSessionPrompter:intro",
      "target": "this.prompt"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSessionPrompter",
      "target": "wizard/session.ts:WizardSessionPrompter:outro"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSessionPrompter:outro",
      "target": "this.prompt"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSessionPrompter",
      "target": "wizard/session.ts:WizardSessionPrompter:note"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSessionPrompter:note",
      "target": "this.prompt"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSessionPrompter",
      "target": "wizard/session.ts:WizardSessionPrompter:select"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSessionPrompter:select",
      "target": "this.prompt"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSessionPrompter:select",
      "target": "params.options.map"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSessionPrompter",
      "target": "wizard/session.ts:WizardSessionPrompter:multiselect"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSessionPrompter:multiselect",
      "target": "this.prompt"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSessionPrompter:multiselect",
      "target": "params.options.map"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSessionPrompter:multiselect",
      "target": "Array.isArray"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSessionPrompter",
      "target": "wizard/session.ts:WizardSessionPrompter:text"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSessionPrompter:text",
      "target": "this.prompt"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSessionPrompter:text",
      "target": "String"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSessionPrompter:text",
      "target": "params.validate"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSessionPrompter",
      "target": "wizard/session.ts:WizardSessionPrompter:confirm"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSessionPrompter:confirm",
      "target": "this.prompt"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSessionPrompter:confirm",
      "target": "Boolean"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSessionPrompter",
      "target": "wizard/session.ts:WizardSessionPrompter:progress"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSessionPrompter",
      "target": "wizard/session.ts:WizardSessionPrompter:prompt"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSessionPrompter:prompt",
      "target": "this.session.awaitAnswer"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSessionPrompter:prompt",
      "target": "randomUUID"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts",
      "target": "wizard/session.ts:WizardSession"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSession",
      "target": "wizard/session.ts:WizardSession:constructor"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSession:constructor",
      "target": "this.run"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSession",
      "target": "wizard/session.ts:WizardSession:next"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSession:next",
      "target": "createDeferred"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSession",
      "target": "wizard/session.ts:WizardSession:answer"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSession:answer",
      "target": "this.answerDeferred.get"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSession:answer",
      "target": "this.answerDeferred.delete"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSession:answer",
      "target": "deferred.resolve"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSession",
      "target": "wizard/session.ts:WizardSession:cancel"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSession:cancel",
      "target": "deferred.reject"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSession:cancel",
      "target": "this.answerDeferred.clear"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSession:cancel",
      "target": "this.resolveStep"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSession",
      "target": "wizard/session.ts:WizardSession:pushStep"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSession:pushStep",
      "target": "this.resolveStep"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSession",
      "target": "wizard/session.ts:WizardSession:run"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSession:run",
      "target": "this.runner"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSession:run",
      "target": "String"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSession:run",
      "target": "this.resolveStep"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSession",
      "target": "wizard/session.ts:WizardSession:awaitAnswer"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSession:awaitAnswer",
      "target": "this.pushStep"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSession:awaitAnswer",
      "target": "createDeferred"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSession:awaitAnswer",
      "target": "this.answerDeferred.set"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSession",
      "target": "wizard/session.ts:WizardSession:resolveStep"
    },
    {
      "type": "CALLS",
      "source": "wizard/session.ts:WizardSession:resolveStep",
      "target": "deferred.resolve"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSession",
      "target": "wizard/session.ts:WizardSession:getStatus"
    },
    {
      "type": "CONTAINS",
      "source": "wizard/session.ts:WizardSession",
      "target": "wizard/session.ts:WizardSession:getError"
    }
  ]
}
