@flex-development/builtin-modules
v2.1.2
Published
Universal drop-in replacement for module.builtinModules
Downloads
65
Maintainers
Readme
builtin-modules
Universal drop-in replacement for module.builtinModules
Contents
What is this?
This package is a universal drop-in replacement for the builtinModules
constant exported by
node:module
.
When should I use this?
This package exports an array containing the names of modules provided by Node.js.
It can be used to not only verify that a module is maintained by Node.js, but to also determine if a module can be
imported using a node:
URL.
Install
This package is ESM only.
In Node.js (version 18+) with yarn:
yarn add @flex-development/builtin-modules
In Deno with esm.sh
:
import { builtinModules } from 'https://esm.sh/@flex-development/builtin-modules'
In browsers with esm.sh
:
<script type="module">
import { builtinModules } from 'https://esm.sh/@flex-development/builtin-modules'
</script>
Use
import { builtinModules } from '@flex-development/builtin-modules'
/**
* List of all modules provided by Node.js.
*
* > 👉 **Note**: Includes modules available only under the `node:` scheme (i.e.
* > `node:sea`, `node:sqlite`, `node:test`).
*
* @const {string[]} builtins
*/
const builtins: string[] = [
...builtinModules,
'node:sea',
'node:test',
'node:sqlite'
]
/**
* Set of all modules provided by Node.js.
*
* > 👉 **Note**: Includes `node:` URLs.
*
* @const {Set<string>} BUILTIN_MODULES
*/
const BUILTIN_MODULES: Set<string> = new Set(builtins.flatMap(m => {
return m.startsWith('node:') ? [m] : [m, 'node:' + m]
}).sort((a, b) => a.localeCompare(b)))
/**
* Check if `m` references a [builtin module][builtin-module].
*
* [builtin-module]: https://nodejs.org/api/esm.html#builtin-modules
*
* @example
* isBuiltin('@flex-development/builtin-modules') // false
* @example
* isBuiltin('assert') // true
* @example
* isBuiltin('fs/promises') // true
* @example
* isBuiltin(new URL('node:os')) // true
* @example
* isBuiltin('node:module') // true
* @example
* isBuiltin('node:test/reporters') // true
* @example
* isBuiltin('test') // false
*
* @param {unknown} m
* The thing to check
* @return {boolean}
* `true` if `m` references builtin module, `false` otherwise
*/
function isBuiltin(m: unknown): boolean {
return BUILTIN_MODULES.has(String(m))
}
console.log(isBuiltin('@flex-development/builtin-modules'))
console.log(isBuiltin('assert'))
console.log(isBuiltin('fs/promises'))
console.log(isBuiltin('node:module'))
console.log(isBuiltin('node:test/reporters'))
console.log(isBuiltin('test'))
API
This package exports the identifier builtinModules
.
The default export is also builtinModules
.
builtinModules
List of all modules provided by Node.js.
The list is a superset of module.builtinModules
given the running version of Node.js.
👉 Note: Modules available only under the
node:
scheme (i.e.node:sea
,node:sqlite
,node:test
) are not listed.
Types
This package is fully typed with TypeScript.
Related
is-builtin
— Universal drop-in replacement formodule.isBuiltin
Contribute
See CONTRIBUTING.md
.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.