Skip to content

πŸ’” Deprecated node:punycode module as an npm package

License

Notifications You must be signed in to change notification settings

node4web/punycode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

dd1ab84 Β· Aug 2, 2023

History

10 Commits
Jul 15, 2023
Jul 15, 2023
Jul 15, 2023
Jul 15, 2023
Aug 2, 2023
Jul 15, 2023
Aug 2, 2023

Repository files navigation

Punycode Node.js ponyfill

πŸ’” Deprecated node:punycode module as an npm package

πŸƒβ€β™€οΈ Uses the native node:punycode module when using Node.js
πŸ“‹ Uses punycode.js v2.0.1 everywhere else
⏳ Still prints the deprecation warning everywhere

πŸ›‘ The node:punycode module is deprecated in Node.js core. Instead, it's recommended to use a user-land implementation like punycode.js (which this package is based on). This package is provided solely for parity with node: APIs.

Installation

npm Yarn pnpm jsDelivr

Install this package using npm, Yarn, pnpm, or your other favorite npm package manager. Here's a quick copy-paste for npm users:

npm install @nodefill/punycode

This package is also compatible with Deno via their compatibility layer. You can import the package directly using the new npm: specifier, or a Deno-compatible ESM CDN like esm.sh or jsDelivr.

import {} from "npm:@nodefill/punycode";
import {} from "https://esm.sh/@nodefill/punycode";

If you're using not using a build tool and you just want to use the package in your browser, you can use an ESM npm CDN like esm.sh or jsDelivr.

import {} from "https://esm.sh/@nodefill/punycode";
import {} from "https://esm.run/@nodefill/punycode";

Usage

Node.js Deno Browser Bun

No matter what environment you import this package in, you'll always be greeted with a warning (unless you pass node --no-warnings). This package is deprecated in Node.js core. Instead, it's recommended to use a user-land implementation like punycode.js. This package is provided solely for parity with node: APIs.

Here's a quick overview of the API:

import { toASCII, toUnicode } from "@nodefill/punycode";

console.log(toASCII("πŸ˜€"));
//=> 'xn--e28h'

console.log(toUnicode("xn--wp8h"));
//=> πŸ‘‹

πŸ“š You can find more docs on the punycode.js v2.0.1 README or the Node.js node:punycode docs!

Development

JavaScript

Special thanks to Mathias Bynens for the punycode.js v2.0.1 implementation! The code for the non-node targets is ripped straight from there (plus a warning message and explicit exports). As for types, you can thank TypeStrong and the DefinitelyTyped community for the @types/node definitions which, again, are copy-pasted into the index-types.d.ts file.

There's no tests and no TypeScript since this package is simple enough to not warrant those extra things.

This package itself should be deprecated on npm if/when the node:punycode module is removed from Node.js core. Until then, don't deprecate it. Why? So that it doesn't show a warning when you install it, πŸ˜… and so that it appears in npm search results. 😎

About

πŸ’” Deprecated node:punycode module as an npm package

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published