Registry / http-networking / amaro
library1.1.8jsnpmunverified

Amaro is a low-level Node.js wrapper around `@swc/wasm-typescript`, a WebAssembly port of the SWC TypeScript parser. It primarily performs type stripping, which is utilized internally by Node.js for its native TypeScript support. As of its latest stable release, version 1.1.8, Amaro offers a stable API that allows developers to use a specific TypeScript transpiler version independently of the one embedded in Node.js. The package sees frequent updates, often aligning with new SWC versions. Its key differentiators include synchronous type stripping (`transformSync`), flexible loader mechanisms (`amaro/strip`, `amaro/transform`) for direct execution of TypeScript files, and enhanced monorepo development workflows via conditional exports, abstracting away build steps. It currently supports TypeScript version 5.8.

npm install amaro
INSTALL
IMPORT
SIG · AMARO
A
amaro
http-networkingjavascriptv1.1.8
Install
Import
Disk
Pass rate
0/ 6
Env Coverage0 / 6
glibc
1822
musl
1822
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
node 18226 runs
build_error
glibc
node 18226 runs
build_error
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

transformSync
import amaro from 'amaro'; const { transformSync } = amaro;
const amaro = require('amaro'); const { transformSync } = amaro;
While `require` works, `import` is preferred in modern Node.js ESM projects. `transformSync` is a named export from the default import object.
amaro/strip loader
node --import="amaro/strip" file.ts
import 'amaro/strip';
The loader is typically activated via Node.js CLI flags, not through direct `import` statements in application code, unless part of a `module.register` bootstrap.
amaro/transform loader
node --enable-source-maps --import="amaro/transform" file.ts
Always use `--enable-source-maps` with `amaro/transform` for accurate stack traces.
register (for programmatic loaders)
import { register } from "node:module"; register("amaro/strip", import.meta.url);
import { register } from 'amaro';
The `register` function is part of Node.js's built-in `node:module` and is used to register Amaro's loaders programmatically.

This quickstart demonstrates synchronous type stripping using `amaro.transformSync` and provides examples of how to activate Amaro as a Node.js loader for direct TypeScript execution.

import amaro from 'amaro'; const tsCode = ` interface User { id: number; name: string; } function greet(user: User): string { return \`Hello, \${user.name}!\`; } const myUser: User = { id: 1, name: 'Alice' }; console.log(greet(myUser)); `; console.log("Original TypeScript Code:"); console.log(tsCode); // Use transformSync to strip types. // The 'strip-only' mode replaces type annotations with whitespace // to preserve original line numbers for stack traces. const { code: strippedCode } = amaro.transformSync(tsCode, { mode: "strip-only" }); console.log("\nTransformed JavaScript Code (types stripped):\n---\n"); console.log(strippedCode); console.log("\n---\n"); /* // To use Amaro as a Node.js loader to execute TypeScript files directly: // 1. Create a file named 'my-app.ts': // const message: string = "Hello from Amaro loader!"; // console.log(message); // 2. Run with Node.js using the --import flag (for type stripping): // node --import="amaro/strip" my-app.ts // 3. For more advanced features (like decorators, class fields) and source maps: // node --enable-source-maps --import="amaro/transform" my-app.ts // 4. For programmatic loader registration (e.g., in a bootstrap file): // // bootstrap.mjs // import { register } from "node:module"; // register("amaro/strip", import.meta.url); // await import("./my-app.ts"); // // Then run: node --watch ./bootstrap.mjs */
Debug
Known issues
breakingThe `amaro/register` loader, available in versions prior to `v1.0.0`, has been removed.
fix
Migrate to using Node.js's native `--import` flag with `amaro/strip` or `amaro/transform`, or use the `node:module` `register()` API for programmatic loader registration.
affects: >=1.0.0
gotchaWhen using the `amaro/transform` loader for TypeScript feature transformation, `--enable-source-maps` is crucial for accurate stack traces.
fix
Always include the `--enable-source-maps` flag when running Node.js with `amaro/transform`: `node --enable-source-maps --import="amaro/transform" file.ts`.
affects: *
gotchaAmaro requires Node.js version 22 or higher to function correctly.
fix
Upgrade your Node.js runtime to version 22 or newer to meet the `engines` requirement specified in `package.json`.
affects: <22
gotchaWhen using Amaro in monorepos with `exports` conditions that include `"typescript": "./src/index.ts"`, you must specify `--conditions=typescript`.
fix
Ensure the `--conditions=typescript` flag is passed to Node.js when leveraging TypeScript conditional exports: `node --import="amaro/strip" --conditions=typescript ./src/index.ts`.
affects: *
Errors
Common errors & fixes
TypeError: amaro.register is not a function
Attempting to use the `amaro.register` API which was removed in `v1.0.0`.
fix
For direct CLI usage, switch to `node --import="amaro/strip"`. For programmatic registration, use `import { register } from "node:module"; register("amaro/strip", import.meta.url);`
SyntaxError: Cannot use import statement outside a module
Attempting to `import` an ESM-only loader (like `amaro/strip`) in a CommonJS context without proper configuration, or when Node.js cannot resolve the module as ESM.
fix
Ensure your project is configured as an ESM module (`"type": "module"` in `package.json`) or that the file using `import` has an `.mjs` extension. If activating the loader via CLI, use the recommended `node --import="amaro/strip"` syntax.
Error: Missing "typescript" condition for "."
You are using `exports` in `package.json` with a `"typescript"` condition but have not told Node.js to enable this condition.
fix
Run Node.js with the `--conditions=typescript` flag: `node --conditions=typescript --import="amaro/strip" your-app.ts`.
ReferenceError: require is not defined
Attempting to use `require()` in an ES Module context (`.mjs` file or `"type": "module"` project).
fix
Migrate your code to use `import` statements or ensure your files are treated as CommonJS modules by using `.cjs` extensions or omitting `"type": "module"` in `package.json`.
Upgrade
Version history
1.1.8latest on npm
Audit
Dependencies

No dependency data recorded yet.

Agent activity
41 hits · last 30 days
node
36
OpenAI (training)
1
Resources
amaro — npm install amaro · libregistry