# sloppy-module-parser

> Parse imports/exports/requires with a focus on speed over 100% correctness

Latest version **2.2.3** (published 2025-03-07) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install sloppy-module-parser
pnpm add sloppy-module-parser
yarn add sloppy-module-parser
bun add sloppy-module-parser
```

## Health

**Score 35/100 (D)** — status: stable.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: stale.

## Facts

| | |
|---|---|
| Version | 2.2.3 |
| Published | 2025-03-07 |
| First published | 2023-12-16 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 18.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 6 |
| Author | Holepunch Inc |
| Maintainers | mafintosh |

## Links

- npm: https://www.npmjs.com/package/sloppy-module-parser
- Repository: https://github.com/holepunchto/sloppy-module-parser
- Issues: https://github.com/holepunchto/sloppy-module-parser/issues
- npm.io page: https://npm.io/package/sloppy-module-parser

## Dependencies (2)

- [es-module-lexer](https://npm.io/package/es-module-lexer.md) ^1.4.1
- [cjs-module-lexer](https://npm.io/package/cjs-module-lexer.md) ^1.2.3

## Recent versions

- 2.2.3 (latest) — 2025-03-07
- 2.2.2 — 2025-01-17
- 2.2.1 — 2025-01-16
- 2.2.0 — 2025-01-16
- 2.1.1 — 2025-01-03
- 2.1.0 — 2024-10-02
- 2.0.0 — 2024-02-02
- 1.0.1 — 2023-12-29
- 1.0.0 — 2023-12-16

## README

# sloppy-module-parser

Parse imports/exports/requires with a focus on speed over 100% correctness

```
npm install sloppy-module-parser
```

Sometimes it might report requires that are indeed not requires but tries to not miss any.
This limitation gives it a massive speed boost compared to other parsers.

## Usage

``` js
const { init, parse } = require('sloppy-module-parser')

await init() // needed to init the async esm parser used

console.log(parse(src))
```

## API

#### `async parser.init()`

Init the async esm parser. Call this before using the module.

#### `const res = parser.parse(src, type = 'module', strictMode = true)`

Parses imports/requires from the source. `type` helps it understand what it should parse for.

Type should be one of the following: `module` / `script` / `json`.

If strict mode is false, and type is not `module`, it autodetects if any `import` / `export` statements
are used and if so auto corrects the type. This is useful for module interop.

The returned result looks like this

```js
{
  type: 'module',
  resolutions: [
    {
      isImport: boolean, // is it an import or a require
      isAddon: boolean, // is this import / require pointing to a native addon
      position: [statementStart, inputStart, inputEnd], // where is the statement, might be null
      input: string, // the input to import / require, `null` is if it is unknown at parse time
      output: null // what it should resolve to, just set for conveinience
    },
    ...
  ],
  namedImports: [
    {
      isWildcard: boolean, // is it a wildcard import
      isExport: boolean, // reexports the import
      names: [string, ...], // the named imports,
      from: referenceToRelevantResolution
    }
  ],
  exports: [string, ...] // only default populated for esm
}
```

#### `const exports = parser.exports(src, type)`

Get the exports from a module. Type is the same as in parse.

## License

Apache-2.0

---
_Source: https://npm.io/package/sloppy-module-parser · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
