Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 26 additions & 7 deletions ark/repo/nodeOptions.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,33 @@
// @ts-check

/** @param {number} major @returns {string} */
function getFallbackReason(major) {
if (major >= 26) {
return "Node.js >= 26 does not allow --experimental-transform-types in NODE_OPTIONS; falling back to tsx..."
}

return "--experimental-transform-types requires Node >= 22.7.0, falling back to tsx..."
}

/**
* @param {number} major
* @param {number} minor
* @returns {string}
*/
function versionedFlagsFor(major, minor) {
const useExperimentalTransformTypes =
(major > 22 && major < 26) || (major === 22 && minor >= 7)
if (useExperimentalTransformTypes) {
return "--experimental-transform-types --no-warnings"
}

console.log(getFallbackReason(major))
return "--import tsx"
}

const [major, minor] = process.version.replace("v", "").split(".").map(Number)

const versionedFlags =
major > 22 || (major === 22 && minor >= 7) ?
"--experimental-transform-types --no-warnings"
: (console.log(
"--experimental-transform-types requires Node >= 22.7.0, falling back to tsx..."
),
"--import tsx")
const versionedFlags = versionedFlagsFor(major, minor)

export const nodeDevOptions = `${process.env.NODE_OPTIONS ?? ""} --conditions ark-ts ${versionedFlags}`

Expand Down
Loading