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

@uscreen.de/common-esm

Package Overview
Dependencies
Maintainers
7
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@uscreen.de/common-esm

make ESM a bit more commonJS

  • 1.0.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
37
decreased by-37.29%
Maintainers
7
Weekly downloads
 
Created
Source

@uscreen.de/common-esm

Test CI Test Coverage Known Vulnerabilities NPM Version

make ESM a bit more commonJS

ESM still lacks some features that are "common" in commonJS. This package aims to fill that gap.

Prior art

  • The desm package already provides us with dirname, filename, join. Straight simple and robust. This package aims to decorate it with some more commonJS features.

  • And there is esm-utils which provides a bigger api surface. But I found its codebase a bit too complex and it does not provide a solution for if (require.main === module), either.

Install

npm install @uscreen.de/common-esm

Usage

The default export is a function that returns an object with "common" commonJS properties and functions that depend on the import.meta.url:

// file:/app/demo/index.js
import CommonESM from '@uscreen.de/common-esm'

const { __dirname, __filename, __isMain, join, requireJson } = new CommonESM(import.meta.url)

/**
 * properties
 */
console.log(__dirname) // /app/demo
console.log(__filename) // /app/demo/index.js
console.log(__isMain) // true with node ./index.js like require.main === module

/**
 * functions
 */
console.log(join('foo', 'bar')) // /app/demo/foo/bar
console.log(requireJson('./package.json')) // { name: '@uscreen.de/common-esm', ... }

Inherited from desm there are the following functional exports:

// file:/app/demo/index.js
import { dirname, filename, join, requireJson, isMain } from '@uscreen.de/common-esm'

/**
 * --- as provided by desm ---
 */
console.log(dirname(import.meta.url)) // /app/demo
console.log(filename(import.meta.url)) // /app/demo/index.js
console.log(join(import.meta.url, 'routes')) // /app/demo/routes
console.log(join(import.meta.url, '..', 'other')) // /app/other

/**
 * --- extras ---
 */
console.log(requireJson(import.meta.url, './package.json')) // { name: '@uscreen.de/common-esm', ... }
console.log(isMain(import.meta.url)) // true with node ./index.js like require.main === module


License

Licensed under MIT.

Published, Supported and Sponsored by u|screen

Keywords

FAQs

Package last updated on 25 Apr 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