$ node --check extension.js
$ node --check out/extension.js
$ node scripts/test-generated-webview-syntax.js
{
  "detailsScripts": 1,
  "packEditorScripts": 1,
  "checkedViews": [
    "symbol details",
    "visual pack editor"
  ],
  "status": "ok"
}
$ node scripts/test-main-explorer-environment-tree.js
{
  "status": "ok",
  "rootEnvironments": [
    "Build",
    "Lua"
  ],
  "buildLibraries": [
    "CMake, CTest & CPack",
    "Meson Build System",
    "GCC & G++",
    "Clang & LLVM",
    "MinGW & Windows Resources",
    "MSVC Build Tools",
    "Make, Ninja & Compilation Databases",
    "C/C++ Dependency Managers",
    "Cross-Compilation & Binary Utilities",
    "Debugging, Coverage & Documentation"
  ],
  "luaLibraries": [
    "Lua standard 5.4",
    "Lua industriel / banc de test",
    "MPT Studio / MPTLua (Lua 5.2.4)",
    "Stormworks Lua microcontroller"
  ],
  "gccCategoryCount": 4
}
$ node scripts/test-environment-first-navigation.js
{
  "status": "ok",
  "luaEnvironment": "Lua",
  "luaLibraries": [
    "Lua standard 5.4",
    "Lua industriel / banc de test",
    "MPT Studio / MPTLua (Lua 5.2.4)",
    "Stormworks Lua microcontroller"
  ],
  "buildEnvironment": "Build",
  "buildLibraries": [
    "CMake, CTest & CPack",
    "Meson Build System",
    "GCC & G++",
    "Clang & LLVM",
    "MinGW & Windows Resources",
    "MSVC Build Tools",
    "Make, Ninja & Compilation Databases",
    "C/C++ Dependency Managers",
    "Cross-Compilation & Binary Utilities",
    "Debugging, Coverage & Documentation"
  ],
  "newPackKeys": [
    "id",
    "name",
    "version",
    "readOnly",
    "environments"
  ]
}
$ node scripts/test-library-first-navigation.js
{
  "status": "ok",
  "luaEnvironment": "Lua",
  "luaLibraries": [
    "Lua standard 5.4",
    "Lua industriel / banc de test",
    "MPT Studio / MPTLua (Lua 5.2.4)",
    "Stormworks Lua microcontroller"
  ],
  "buildEnvironment": "Build",
  "buildLibraries": [
    "CMake, CTest & CPack",
    "Meson Build System",
    "GCC & G++",
    "Clang & LLVM",
    "MinGW & Windows Resources",
    "MSVC Build Tools",
    "Make, Ninja & Compilation Databases",
    "C/C++ Dependency Managers",
    "Cross-Compilation & Binary Utilities",
    "Debugging, Coverage & Documentation"
  ],
  "newPackKeys": [
    "id",
    "name",
    "version",
    "readOnly",
    "environments"
  ]
}
$ node scripts/test-multiselect-validation.js
{
  "status": "ok",
  "gccMinimum": 1,
  "gccFallback": "-Wall -Wextra",
  "msvcIncompatibilities": [
    "/W3",
    "/Wall"
  ]
}
$ node scripts/test-structured-picker-apply-close.js
{
  "status": "ok",
  "disposeBeforeAsyncUpdate": true,
  "emptyMultiSelectCanClose": true
}
$ node scripts/test-build-command-preview.js
{
  "route": "build_all",
  "cards": 163,
  "gccPreview": "gcc -Wall -Wextra -O2 -fPIC -shared src/mylib.c -o \"libmylib.so\"",
  "gccObjectPreview": "gcc -Wall -Wextra -std=c17 -O0 -g3 -I include -c \"main.c\" -o \"main.o\"",
  "cmakePreview": "cmake_minimum_required(VERSION 3.20)",
  "commandCards": 134
}
$ node scripts/test-build-command-routes.js
{"route":"build_all","cards":163,"libraries":10}
{"route":"c_all","cards":926,"libraries":2}
{"route":"all_packs","cards":14331,"libraries":146}
$ node scripts/test-build-link-ui.js
{
  "route": "build_all",
  "cards": 163,
  "gccSharedParameters": 10,
  "conditionalUi": true,
  "commandsChecked": 11,
  "removedDuplicates": [
    "MinGW gcc executable",
    "MinGW g++ executable"
  ]
}
$ node scripts/test-terminal-execution-ui.js
{
  "status": "ok",
  "executeButton": true,
  "activeTerminalFallback": true,
  "confirmationGuard": true
}
$ node scripts/test-system-scripting-command-routes.js
{
  "status": "ok",
  "route": "scripting_all",
  "cards": 573,
  "libraries": [
    "Cross-Platform Automation",
    "PowerShell 7",
    "Windows CMD & Batch",
    "Bash & POSIX Shell",
    "Linux systemd & Administration",
    "Git Version Control",
    "OpenSSH & Secure Remote Access",
    "Docker & Containers",
    "DevOps, CI & Release Automation"
  ],
  "individualRoutes": [
    {
      "route": "system_automation_core",
      "library": "Cross-Platform Automation",
      "cards": 36
    },
    {
      "route": "powershell_core",
      "library": "PowerShell 7",
      "cards": 131
    },
    {
      "route": "batch_core",
      "library": "Windows CMD & Batch",
      "cards": 124
    },
    {
      "route": "bash_core",
      "library": "Bash & POSIX Shell",
      "cards": 104
    },
    {
      "route": "linux_admin_core",
      "library": "Linux systemd & Administration",
      "cards": 57
    },
    {
      "route": "git_core",
      "library": "Git Version Control",
      "cards": 48
    },
    {
      "route": "ssh_core",
      "library": "OpenSSH & Secure Remote Access",
      "cards": 29
    },
    {
      "route": "docker_core",
      "library": "Docker & Containers",
      "cards": 39
    },
    {
      "route": "devops_core",
      "library": "DevOps, CI & Release Automation",
      "cards": 5
    }
  ]
}
$ node scripts/test-ergonomy-0769.js
{
  "status": "ok",
  "structuredScp": [
    "OpenSSH & Secure Remote Access/scp client"
  ],
  "canonicalScp": [
    "OpenSSH & Secure Remote Access/scp client"
  ]
}
$ python scripts/validate-system-scripting-0776.py
{
  "packVersion": "1.9.0",
  "cards": 573,
  "commands": 307,
  "parameters": 1110,
  "pickers": 614,
  "multiSelectPickers": 221,
  "conditionalParameters": 193,
  "libraries": 9,
  "errors": []
}
$ python scripts/audit-packs.py
{
  "distributedJsonFiles": 21,
  "errors": {},
  "coverage": [
    {
      "file": "build_pack.json",
      "version": "1.3.0",
      "cards": 163,
      "parameters": 573,
      "advancedSelectors": 245,
      "documentedChoices": 878,
      "multiSelectors": 119,
      "booleanEditors": 0,
      "fileBrowsers": 117,
      "folderBrowsers": 78
    },
    {
      "file": "c_language_pack.json",
      "version": "1.10.1",
      "cards": 926,
      "parameters": 1535,
      "advancedSelectors": 109,
      "documentedChoices": 489,
      "multiSelectors": 15,
      "booleanEditors": 13,
      "fileBrowsers": 39,
      "folderBrowsers": 12
    },
    {
      "file": "cpp_language_pack.json",
      "version": "2.14.1",
      "cards": 1784,
      "parameters": 1759,
      "advancedSelectors": 104,
      "documentedChoices": 398,
      "multiSelectors": 10,
      "booleanEditors": 1,
      "fileBrowsers": 43,
      "folderBrowsers": 17
    },
    {
      "file": "csharp_language_pack.json",
      "version": "1.2.0",
      "cards": 603,
      "parameters": 1045,
      "advancedSelectors": 55,
      "documentedChoices": 206,
      "multiSelectors": 2,
      "booleanEditors": 15,
      "fileBrowsers": 25,
      "folderBrowsers": 6
    },
    {
      "file": "cvi_pack.json",
      "version": "1.1.0",
      "cards": 1977,
      "parameters": 7541,
      "advancedSelectors": 102,
      "documentedChoices": 719,
      "multiSelectors": 1,
      "booleanEditors": 8,
      "fileBrowsers": 83,
      "folderBrowsers": 12
    },
    {
      "file": "database_pack.json",
      "version": "1.2.0",
      "cards": 317,
      "parameters": 561,
      "advancedSelectors": 53,
      "documentedChoices": 166,
      "multiSelectors": 1,
      "booleanEditors": 5,
      "fileBrowsers": 24,
      "folderBrowsers": 4
    },
    {
      "file": "default_pack.json",
      "version": "2.18.0",
      "cards": 6816,
      "parameters": 14876,
      "advancedSelectors": 758,
      "documentedChoices": 2990,
      "multiSelectors": 201,
      "booleanEditors": 143,
      "fileBrowsers": 224,
      "folderBrowsers": 62
    },
    {
      "file": "embedded_language_pack.json",
      "version": "1.3.1",
      "cards": 393,
      "parameters": 534,
      "advancedSelectors": 86,
      "documentedChoices": 331,
      "multiSelectors": 12,
      "booleanEditors": 19,
      "fileBrowsers": 15,
      "folderBrowsers": 2
    },
    {
      "file": "java_language_pack.json",
      "version": "1.2.0",
      "cards": 490,
      "parameters": 973,
      "advancedSelectors": 46,
      "documentedChoices": 189,
      "multiSelectors": 6,
      "booleanEditors": 8,
      "fileBrowsers": 29,
      "folderBrowsers": 9
    },
    {
      "file": "kotlin_language_pack.json",
      "version": "1.2.0",
      "cards": 421,
      "parameters": 483,
      "advancedSelectors": 28,
      "documentedChoices": 105,
      "multiSelectors": 4,
      "booleanEditors": 9,
      "fileBrowsers": 2,
      "folderBrowsers": 1
    },
    {
      "file": "lua_pack.json",
      "version": "1.5.0",
      "cards": 975,
      "parameters": 773,
      "advancedSelectors": 17,
      "documentedChoices": 71,
      "multiSelectors": 0,
      "booleanEditors": 15,
      "fileBrowsers": 12,
      "folderBrowsers": 1
    },
    {
      "file": "opencv_pack.json",
      "version": "1.0.0",
      "cards": 195,
      "parameters": 608,
      "advancedSelectors": 70,
      "documentedChoices": 342,
      "multiSelectors": 5,
      "booleanEditors": 14,
      "fileBrowsers": 13,
      "folderBrowsers": 4
    },
    {
      "file": "php_language_pack.json",
      "version": "1.2.0",
      "cards": 593,
      "parameters": 639,
      "advancedSelectors": 79,
      "documentedChoices": 299,
      "multiSelectors": 43,
      "booleanEditors": 17,
      "fileBrowsers": 27,
      "folderBrowsers": 13
    },
    {
      "file": "python_pack.json",
      "version": "1.15.1",
      "cards": 1028,
      "parameters": 2275,
      "advancedSelectors": 155,
      "documentedChoices": 592,
      "multiSelectors": 6,
      "booleanEditors": 167,
      "fileBrowsers": 58,
      "folderBrowsers": 22
    },
    {
      "file": "qt_pack.json",
      "version": "1.12.1",
      "cards": 1040,
      "parameters": 1795,
      "advancedSelectors": 128,
      "documentedChoices": 530,
      "multiSelectors": 24,
      "booleanEditors": 62,
      "fileBrowsers": 33,
      "folderBrowsers": 10
    },
    {
      "file": "qt_python_pack.json",
      "version": "1.9.0",
      "cards": 573,
      "parameters": 918,
      "advancedSelectors": 49,
      "documentedChoices": 216,
      "multiSelectors": 6,
      "booleanEditors": 13,
      "fileBrowsers": 26,
      "folderBrowsers": 10
    },
    {
      "file": "sdl_pack.json",
      "version": "1.0.1",
      "cards": 185,
      "parameters": 244,
      "advancedSelectors": 25,
      "documentedChoices": 138,
      "multiSelectors": 12,
      "booleanEditors": 0,
      "fileBrowsers": 9,
      "folderBrowsers": 0
    },
    {
      "file": "system_scripting_pack.json",
      "version": "1.9.0",
      "cards": 573,
      "parameters": 1110,
      "advancedSelectors": 614,
      "documentedChoices": 1835,
      "multiSelectors": 221,
      "booleanEditors": 0,
      "fileBrowsers": 73,
      "folderBrowsers": 28
    },
    {
      "file": "typescript_language_pack.json",
      "version": "1.2.0",
      "cards": 418,
      "parameters": 587,
      "advancedSelectors": 22,
      "documentedChoices": 92,
      "multiSelectors": 3,
      "booleanEditors": 23,
      "fileBrowsers": 10,
      "folderBrowsers": 5
    },
    {
      "file": "web_language_pack.json",
      "version": "1.3.1",
      "cards": 867,
      "parameters": 781,
      "advancedSelectors": 64,
      "documentedChoices": 263,
      "multiSelectors": 13,
      "booleanEditors": 24,
      "fileBrowsers": 6,
      "folderBrowsers": 8
    },
    {
      "file": "windows_api_device_pack.json",
      "version": "1.11.1",
      "cards": 904,
      "parameters": 2002,
      "advancedSelectors": 290,
      "documentedChoices": 716,
      "multiSelectors": 139,
      "booleanEditors": 59,
      "fileBrowsers": 17,
      "folderBrowsers": 11
    }
  ]
}
