import-in-the-middle
Intercept imports in Node.js
Last updated 2 years ago by datadog .
Apache-2.0 · Repository · Bugs · Original npm · Tarball · package.json
$ npm install import-in-the-middle 
SYNC missed versions from official npm registry.

import-in-the-middle

import-in-the-middle is an module loading interceptor inspired by require-in-the-middle, but specifically for ESM modules. In fact, it can even modify modules after loading time.

Usage

The API for require-in-the-middle is followed as closely as possible as the default export. There are lower-level addHook and removeHook exports available which don't do any filtering of modules, and present the full file URL as a parameter to the hook. See the Typescript definition file for detailed API docs.

You can modify anything exported from any given ESM or CJS module that's imported in ESM files, regardless of whether they're imported statically or dynamically.

import { Hook } from 'import-in-the-middle'
import { foo } from 'package-i-want-to-modify'

console.log(foo) // whatever that module exported

Hook(['package-i-want-to-modify'], (exported, name, baseDir) => {
  // `exported` is effectively `import * as exported from ${url}`
  exported.foo += 1
})

console.log(foo) // 1 more than whatever that module exported

This requires the use of an ESM loader hook, which can be added with the following command-line option.

--loader=import-in-the-middle/hook.mjs

Limitations

  • You cannot add new exports to a module. You can only modify existing ones.
  • While bindings to module exports end up being "re-bound" when modified in a hook, dynamically imported modules cannot be altered after they're loaded.
  • Modules loaded via require are not affected at all.

Current Tags

  • 1.12.0                                ...           latest (8 days ago)

35 Versions

  • 1.12.0                                ...           8 days ago
  • 1.11.3                                ...           21 days ago
  • 1.11.2                                ...           3 months ago
  • 1.11.1                                ...           3 months ago
  • 1.11.0                                ...           5 months ago
  • 1.10.0                                ...           5 months ago
  • 1.9.1                                ...           5 months ago
  • 1.9.0                                ...           6 months ago
  • 1.8.1                                ...           6 months ago
  • 1.8.0                                ...           7 months ago
  • 1.7.4                                ...           8 months ago
  • 1.7.3                                ...           a year ago
  • 1.7.2                                ...           a year ago
  • 1.7.1                                ...           a year ago
  • 1.7.0                                ...           a year ago
  • 1.6.0                                ...           a year ago
  • 1.5.0                                ...           a year ago
  • 1.4.2                                ...           a year ago
  • 1.4.1                                ...           2 years ago
  • 1.4.0                                ...           2 years ago
  • 1.3.5                                ...           2 years ago
  • 1.3.4                                ...           2 years ago
  • 1.3.3                                ...           2 years ago
  • 1.3.2                                ...           2 years ago
  • 1.3.1                                ...           2 years ago
  • 1.3.0                                ...           2 years ago
  • 1.2.3                                ...           2 years ago
  • 1.2.2                                ...           2 years ago
  • 1.2.1                                ...           3 years ago
  • 1.2.0                                ...           3 years ago
  • 1.1.2                                ...           3 years ago
  • 1.1.1                                ...           3 years ago
  • 1.1.0                                ...           3 years ago
  • 1.0.1                                ...           3 years ago
  • 1.0.0                                ...           3 years ago
Maintainers (1)
Downloads
Total 3
Today 1
This Week 1
This Month 1
Last Day 0
Last Week 0
Last Month 0
Dependencies (4)
Dev Dependencies (5)

© 2010 - cnpmjs.org x YWFE | Home | YWFE