Skip to content

Commit d4c7831

Browse files
authored
feat(node-builtins): Add support for process.getBuiltinModule() (#433)
1 parent 9e97d8e commit d4c7831

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

lib/util/check-unsupported-builtins.js

+7
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ const getSemverRange = require("./get-semver-range")
1111
const unprefixNodeColon = require("./unprefix-node-colon")
1212
const semverRangeSubset = require("semver/ranges/subset")
1313
const { getScope } = require("../util/eslint-compat")
14+
const {
15+
iterateProcessGetBuiltinModuleReferences,
16+
} = require("./iterate-process-get-builtin-module-references")
1417

1518
/**
1619
* Parses the options.
@@ -158,6 +161,10 @@ module.exports.checkUnsupportedBuiltins = function checkUnsupportedBuiltins(
158161
const tracker = new ReferenceTracker(scope, { mode: "legacy" })
159162
const references = [
160163
...tracker.iterateCjsReferences(traceMap.modules ?? {}),
164+
...iterateProcessGetBuiltinModuleReferences(
165+
tracker,
166+
traceMap.modules ?? {}
167+
),
161168
...tracker.iterateEsmReferences(traceMap.modules ?? {}),
162169
...tracker.iterateGlobalReferences(traceMap.globals ?? {}),
163170
]

tests/lib/rules/no-unsupported-features/node-builtins.js

+40
Original file line numberDiff line numberDiff line change
@@ -5671,6 +5671,19 @@ new RuleTester({ languageOptions: { sourceType: "module" } }).run(
56715671
],
56725672
languageOptions: { ecmaVersion: "latest" },
56735673
},
5674+
{
5675+
code: `
5676+
const { DatabaseSync } = process.getBuiltinModule('node:sqlite');
5677+
const database = new DatabaseSync(':memory:');
5678+
`,
5679+
options: [
5680+
{
5681+
version: ">=22.5.0",
5682+
allowExperimental: true,
5683+
},
5684+
],
5685+
languageOptions: { ecmaVersion: "latest" },
5686+
},
56745687
],
56755688
invalid: [
56765689
{
@@ -5730,6 +5743,33 @@ new RuleTester({ languageOptions: { sourceType: "module" } }).run(
57305743
options: [{ version: ">=22.3.0", allowExperimental: true }],
57315744
languageOptions: { ecmaVersion: "latest" },
57325745

5746+
errors: [
5747+
{
5748+
messageId: "not-supported-till",
5749+
data: {
5750+
name: "sqlite.DatabaseSync",
5751+
supported: "22.5.0",
5752+
version: ">=22.3.0",
5753+
},
5754+
},
5755+
{
5756+
messageId: "not-experimental-till",
5757+
data: {
5758+
name: "sqlite",
5759+
experimental: "22.5.0",
5760+
version: ">=22.3.0",
5761+
},
5762+
},
5763+
],
5764+
},
5765+
{
5766+
code: `
5767+
const { DatabaseSync } = process.getBuiltinModule('node:sqlite');
5768+
const database = new DatabaseSync(':memory:');
5769+
`,
5770+
options: [{ version: ">=22.3.0", allowExperimental: true }],
5771+
languageOptions: { ecmaVersion: "latest" },
5772+
57335773
errors: [
57345774
{
57355775
messageId: "not-supported-till",

0 commit comments

Comments
 (0)