// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.238.1/containers/typescript-node
{
  "name": "Node.js & TypeScript",
  "build": {
    "dockerfile": "Dockerfile",
    // Update 'VARIANT' to pick a Node version: 18, 16, 14.
    // Append -bullseye or -buster to pin to an OS version.
    // Use -bullseye variants on local on arm64/Apple Silicon.
    "args": {
      "VARIANT": "18"
    }
  },

  // Configure tool-specific properties.
  "customizations": {
    // Configure properties specific to VS Code.
    "vscode": {
      // Add the IDs of extensions you want installed when the container is created.
      "extensions": [
        "dbaeumer.vscode-eslint",
        "esbenp.prettier-vscode",
        "EditorConfig.EditorConfig",
        "eamodio.gitlens"
      ],
      "settings": {
        "editor.codeActionsOnSave": {
          "source.fixAll": true
        },
        "javascript.preferences.quoteStyle": "single",
        "javascript.preferences.importModuleSpecifierEnding": "minimal",
        "javascript.preferences.importModuleSpecifier": "non-relative",
        "typescript.preferences.quoteStyle": "single",
        "typescript.preferences.importModuleSpecifierEnding": "minimal",
        "typescript.preferences.importModuleSpecifier": "non-relative",
        "typescript.tsdk": "node_modules/typescript/lib",
        "editor.formatOnSave": true,
        "eslint.format.enable": true,
        "[*]": {
          "editor.defaultFormatter": "esbenp.prettier-vscode"
        },
        "[javascript]": {
          "editor.defaultFormatter": "dbaeumer.vscode-eslint"
        },
        "[typescript]": {
          "editor.defaultFormatter": "dbaeumer.vscode-eslint"
        },
        "[jsonc]": {
          "editor.defaultFormatter": "esbenp.prettier-vscode"
        }
      }
    }
  },

  // Use 'forwardPorts' to make a list of ports inside the container available locally.
  "forwardPorts": [8000, 35729],

  // Use 'postCreateCommand' to run commands after the container is created.
  // "postCreateCommand": "yarn install",

  "postStartCommand": "yarn"

  // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
  // "remoteUser": "node"
}