Debug node program with kate

How do I write debug.json so that it will start the dap for node? I have the following configuration that does not work:


      node = {
        run = {
          request = "${pkgs.vscode-js-debug}/bin/js-debug";
          port = 9229;
        };
        configurations = {
          "Node (Launch)".request = {
            type = "pwa-node";
            request = "launch";
            program = ''''${file}'';
            args = ''''${args|list}'';
            cwd = ''''${workdir|dir}'';
            stopOnEntry = true;
            sourceMaps = true;
            protocol = "inspector";
            console = "integratedTerminal";
            enableDWARF = true;
            env = ''''${env|list}'';
          };
          "Node (Launch npm)".request = {
            type = "pwa-node";
            request = "launch";
            runtimeExecutable="npm";
            runtimeargs=["run""\${program}"];
            args = ''''${args|list}'';
            cwd = ''''${workdir|dir}'';
            stopOnEntry = true;
            sourceMaps = true;
            protocol = "inspector";
            console = "integratedTerminal";
            enableDWARF = true;
            env = ''''${env|list}, NODE_OPTIONS=--inspect-brk=9229''  ;
            port = 9229;
          };
          "Node (Attach)".request = {
            type = "server";
            request = "attach";
            processId = ''''${pid|int}'';
            stopOnEntry = true;
            sourceMaps = true;
            protocol = "inspector";
            console = "integratedTerminal";
          };
          "Deno (Launch)".request = {
            type = "pwa-node";
            request = "launch";
            program = ''''${file}'';
            args = ''''${args|list}'';
            cwd = ''''${workdir|dir}'';
            env = ''''${env|list}'';
            stopOnEntry = true;
            sourceMaps = true;
            protocol = "inspector";
            console = "integratedTerminal";
            enableDWARF = true;
            runtimeExecutable = "deno";
            runtimeArgs = [
              "run"
              ''--inspect-wait=localhost:9229''
              "-A"
            ];
          };
        };
      };

That doesn’t look like valid json to me. Perhaps I misunderstand something.

yeah it is nix language that eventually will be converted into the appropriate json note that:

‘‘$ become a literal $ as \$

“${pkgs.vscode-js-debug}/bin/js-debug” becomes the path to the js-debug executable

Can you paste the converted json? And can you tell me about the problems/issues you face when you try to use this configuration? It has long been on my list to get this particular debugger working


    "node": {
      "configurations": {
        "Deno (Launch)": {
          "request": {
            "args": "${args|list}",
            "console": "integratedTerminal",
            "cwd": "${workdir}",
            "enableDWARF": true,
            "env": "${env|list}",
            "program": "${file}",
            "protocol": "inspector",
            "request": "launch",
            "runtimeArgs": [
              "run",
              "--inspect-wait=localhost:9229",
              "-A"
            ],
            "runtimeExecutable": "deno",
            "sourceMaps": true,
            "stopOnEntry": true,
            "type": "pwa-node"
          }
        },
        "Node (Attach)": {
          "request": {
            "console": "integratedTerminal",
            "processId": "${pid|int}",
            "protocol": "inspector",
            "request": "attach",
            "sourceMaps": true,
            "stopOnEntry": true,
            "type": "server"
          }
        },
        "Node (Launch npm)": {
          "request": {
            "args": "${args|list}",
            "console": "integratedTerminal",
            "cwd": "${workdir}",
            "enableDWARF": true,
            "protocol": "inspector",
            "request": "launch",
            "runtimeExecutable": "npm",
            "runtimeargs": [
              "run",
              "${program}",
              "--"
            ],
            "sourceMaps": true,
            "stopOnEntry": true,
            "type": "pwa-node"
          }
        },
        "Node (Launch)": {
          "request": {
            "args": "${args|list}",
            "console": "integratedTerminal",
            "cwd": "${workdir}",
            "enableDWARF": true,
            "env": "${env|list}",
            "program": "${file}",
            "protocol": "inspector",
            "request": "launch",
            "sourceMaps": true,
            "stopOnEntry": true,
            "type": "pwa-node"
          }
        }
      },
      "run": {
        "port": 0,
        "request": [
          "/nix/store/j2xqckmnjql1mky7bw1ar2fz37fb4qrj-vscode-js-debug-1.104.0/bin/js-debug",
          "${#run.port}"
        ]
      }
    },