From d1a88ff9cf52feee7ed6893070533955fa022204 Mon Sep 17 00:00:00 2001 From: William Boman Date: Sun, 10 Jul 2022 16:32:19 +0200 Subject: fix(node-debug2-adapter): fix build on Node >= 18 (#47) Fixes #41. --- lua/mason-core/platform.lua | 12 ++++++++++++ lua/mason-registry/node-debug2-adapter/init.lua | 15 ++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) (limited to 'lua') diff --git a/lua/mason-core/platform.lua b/lua/mason-core/platform.lua index 64e6ba52..7ae51a67 100644 --- a/lua/mason-core/platform.lua +++ b/lua/mason-core/platform.lua @@ -156,4 +156,16 @@ M.is = setmetatable({}, { end, }) +---@async +function M.get_node_version() + local spawn = require "mason-core.spawn" + local _ = require "mason-core.functional" + + return spawn.node({ "--version" }):map(function(result) + -- Parses output such as "v16.3.1" into major, minor, patch + local _, _, major, minor, patch = _.head(_.split("\n", result.stdout)):find "v(%d+)%.(%d+)%.(%d+)" + return { tonumber(major), tonumber(minor), tonumber(patch) } + end) +end + return M diff --git a/lua/mason-registry/node-debug2-adapter/init.lua b/lua/mason-registry/node-debug2-adapter/init.lua index 76b24a6d..33ff2790 100644 --- a/lua/mason-registry/node-debug2-adapter/init.lua +++ b/lua/mason-registry/node-debug2-adapter/init.lua @@ -4,6 +4,7 @@ local git = require "mason-core.managers.git" local _ = require "mason-core.functional" local path = require "mason-core.path" local Optional = require "mason-core.optional" +local platform = require "mason-core.platform" return Pkg.new { name = "node-debug2-adapter", @@ -18,7 +19,19 @@ return Pkg.new { source.with_receipt() git.clone { "https://github.com/microsoft/vscode-node-debug2", version = Optional.of(source.tag) } ctx.spawn.npm { "install" } - ctx.spawn.npm { "run", "build" } + local node_env = platform + .get_node_version() + :map(function(version) + if version[1] >= 18 then + return { + NODE_OPTIONS = "--no-experimental-fetch", + } + else + return {} + end + end) + :get_or_else {} + ctx.spawn.npm { "run", "build", env = node_env } ctx.spawn.npm { "install", "--production" } ctx:link_bin( "node-debug2-adapter", -- cgit v1.2.3-70-g09d2