Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@darkobits/interop-import-default

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@darkobits/interop-import-default

TypeScript-friendly utility for extracting default exports from tricky packages.

  • 0.1.1
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Install

$ npm i @darkobits/interop-import-default

Use

This function is intended to gracefully address issues with the default exports of packages that may have been transpiled/bundled improperly or were simply transpiled to run in an environment that has built-in support for addressing this kind of issue.

This problem can often rear its head when working in mixed CJS / ESM environments.

Before / Ideal:

import wonky from 'wonky';

// Use `wonky` as the developer intended.

Sometimes, based on the Node version running this code and how the code was transpiled/bundled, a package's default export may be on a property key default on the value imported.

Naive TypeScript Fix:

import wonkyExport from 'wonky';
const wonky = wonkyExport.default;

// Now, typeof wonky is incorrect; IntelliSense is broken, and
// TypeScript will throw errors.

Furthermore, you may run into cases where your code behaves differently in different runtime environments, especially if you are authoring a library and you don't know how your code will be transpiled by the end user. Some bundlers have built-in interop features that address this issue, but running the same code in Node will produce an error.

Even worse, TypeScript can miss this error at compile-time, mistakenly thinking that the default export of a package is the value we expected it to be rather than an object with a nested default property.

This function is designed to be used as a runtime dependency that will address both of these
problems. First, it ensures your code runs the same way in both types of environments by returning the provided value as-is if it doesn't contain a default key. Second, it type-casts the return value as the type of the parameter provided, so TypeScript will always be happy. 🌈

import wonkyExport from 'wonky';
import { interopImportDefault } from '@darkobits/interop-import-default';

const wonky = interopImportDefault(wonkyExport);

// Use `wonky` as the developer intended.

FAQs

Package last updated on 22 Feb 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc