https://github.com/flex-development/builtin-modules
Universal drop-in replacement for module.builtinModules
https://github.com/flex-development/builtin-modules
builtin builtin-modules node nodejs typescript
Last synced: 2 months ago
JSON representation
Universal drop-in replacement for module.builtinModules
- Host: GitHub
- URL: https://github.com/flex-development/builtin-modules
- Owner: flex-development
- License: bsd-3-clause
- Created: 2023-01-29T07:14:03.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-06T19:32:58.000Z (8 months ago)
- Last Synced: 2024-11-06T20:31:30.510Z (8 months ago)
- Topics: builtin, builtin-modules, node, nodejs, typescript
- Language: JavaScript
- Homepage: https://github.com/flex-development/builtin-modules
- Size: 3.69 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/funding.yml
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# builtin-modules
[](https://github.com/flex-development/builtin-modules/releases/latest)
[](https://npmjs.com/package/@flex-development/builtin-modules)
[](https://codecov.io/github/flex-development/builtin-modules)
[](https://github.com/voxpelli/badges-cjs-esm)
[](LICENSE.md)
[](https://conventionalcommits.org)
[](https://typescriptlang.org)
[](https://vitest.dev)
[](https://yarnpkg.com)Universal drop-in replacement for [`module.builtinModules`][modulebuiltinmodules]
## Contents
- [What is this?](#what-is-this)
- [When should I use this?](#when-should-i-use-this)
- [Install](#install)
- [Use](#use)
- [API](#api)
- [`builtinModules`](#builtinmodules)
- [Types](#types)
- [Related](#related)
- [Contribute](#contribute)## What is this?
This package is a universal drop-in replacement for the [`builtinModules`][modulebuiltinmodules] constant exported by
[`node:module`][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][node-imports].## Install
This package is [ESM only][esm].
In Node.js (version 18+) with [yarn][]:
```sh
yarn add @flex-development/builtin-modules
```
See Git - Protocols | Yarn
Β for details regarding installing from Git.
In Deno with [`esm.sh`][esmsh]:
```ts
import { builtinModules } from 'https://esm.sh/@flex-development/builtin-modules'
```In browsers with [`esm.sh`][esmsh]:
```html
import { builtinModules } from 'https://esm.sh/@flex-development/builtin-modules'
```
## Use
```ts
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} BUILTIN_MODULES
*/
const BUILTIN_MODULES: Set = 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`](#builtinmodules).
The default export is also `builtinModules`.
### `builtinModules`
List of all modules provided by Node.js.
The list is a **superset** of [`module.builtinModules`][modulebuiltinmodules] 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`][is-builtin] β Universal drop-in replacement for [`module.isBuiltin`][node-module-is-builtin]
## Contribute
See [`CONTRIBUTING.md`](./CONTRIBUTING.md).
This project has a [code of conduct](./CODE_OF_CONDUCT.md). By interacting with this repository, organization, or
community you agree to abide by its terms.[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[esmsh]: https://esm.sh
[is-builtin]: https://github.com/flex-development/is-builtin
[modulebuiltinmodules]: https://nodejs.org/api/module.html#modulebuiltinmodules
[node-imports]: https://nodejs.org/api/esm.html#node-imports
[node-module-is-builtin]: https://nodejs.org/api/module.html#moduleisbuiltinmodulename
[node-module]: https://nodejs.org/api/module.html
[typescript]: https://www.typescriptlang.org
[yarn]: https://yarnpkg.com