npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

ts-cpp-bridge

v1.5.9

Published

TypeScript-to-C++ bridge generator for Node.js N-API. Automatically generates C++ glue code and type-safe TypeScript wrappers from decorators.

Downloads

73

Readme

ts-cpp-bridge

npm version Node.js CI License: MIT TypeScript Node.js

Генератор C++ кода из TypeScript декораторов для Node.js N-API addon

ts-cpp-bridge автоматически генерирует C++ glue код и типобезопасные TypeScript обертки, позволяя легко интегрировать C++ вычисления в TypeScript проекты.

🚀 Основные возможности

  • Автогенерация C++ кода из TypeScript интерфейсов и декораторов
  • Типобезопасные TypeScript обертки для C++ функций
  • Асинхронные функции с Promise - выполнение C++ кода в отдельных потоках
  • Скрытие деталей addon - чистый TypeScript API для пользователей
  • Поддержка массивов и пользовательских структур
  • Обработка зарезервированных C++ ключевых слов
  • Поддержка статических методов и свободных функций
  • Мультиплатформенная сборка (Linux, macOS, Windows)

📦 Установка

npm install ts-cpp-bridge

Системные требования

  • Node.js 18+
  • TypeScript 5.0+
  • C++ компилятор (GCC, Clang или MSVC)
  • Python 3.x (для node-gyp)

Установка пиринговых зависимостей

npm install node-addon-api

⚙️ Требования и настройка

TypeScript конфигурация

Для корректной работы декораторов добавьте в tsconfig.json:

{
  "compilerOptions": {
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "target": "ES2020",
    "module": "commonjs",
    "esModuleInterop": true
  }
}

Установка

npm install ts-cpp-bridge reflect-metadata

🎯 Быстрый старт

1. Определите типы данных и API

// types.ts
import { CppStruct, CppExport, CppAsync } from 'ts-cpp-bridge';

@CppStruct()
export class InputData {
  name!: string;
  value!: number;
  numbers!: number[];
}

@CppStruct()
export class OutputData {
  greeting!: string;
  doubled!: number;
  squared!: number[];
}

@CppStruct()
export class LongTask {
  duration!: number;
  data!: string;
}

@CppStruct()
export class TaskResult {
  message!: string;
  duration!: number;
  timestamp!: number;
}

export class Solver {
  @CppExport()
  static process(input: InputData): OutputData {
    throw new Error('Implemented in C++');
  }

  @CppAsync()
  static processLongTask(input: LongTask): TaskResult {
    throw new Error('Implemented in C++');
  }
}

2. Сгенерируйте код

npx ts-cpp-bridge generate -i types.ts -o src/

Будет создано:

  • generated_structs.hpp/cpp - C++ структуры данных
  • generated_api.cpp - N-API обертки
  • generated_addon.d.ts - типы для addon
  • generated_api.ts - типобезопасные TypeScript обертки

3. Используйте типобезопасный API

// main.ts
import { Solver, InputData, OutputData } from './src/generated_api';

const input: InputData = {
  name: 'Alice',
  value: 7,
  numbers: [1, 2, 3, 4, 5]
};

// ✅ Типобезопасный вызов - никаких addon.something()!
const result: OutputData = Solver.process(input);
console.log(result);

🎯 Преимущества

  • Безопасность типов - ошибки обнаруживаются на этапе компиляции
  • Чистый API - пользователи работают с TypeScript классами/функциями
  • Автоматизация - нет ручного написания glue кода
  • Поддержка IDE - полная поддержка автокомплита и IntelliSense
  • Простота использования - от декораторов до готового API за одну команду

⚡ Асинхронные функции

ts-cpp-bridge поддерживает асинхронные функции через декоратор @CppAsync, который автоматически генерирует Promise-based API:

// Асинхронные вызовы
const result = await Solver.processLongTask(task);

// Параллельное выполнение  
const tasks = [task1, task2, task3];
const results = await Promise.all(
  tasks.map(task => Solver.processLongTask(task))
);

Преимущества:

  • Истинная параллельность - C++ код выполняется в отдельных потоках
  • Non-blocking - основной поток Node.js не блокируется
  • Promise API - стандартная работа с async/await
  • Автогенерация - AsyncWorker классы создаются автоматически

🔗 Дополнительная документация

👥 Авторы

  • dp - основной разработчик
  • smoki - соавтор

📄 Лицензия

MIT License - см. LICENSE файл для деталей.


ts-cpp-bridge - ваш мост между TypeScript и C++ с типобезопасностью! 🌉

⚡ Асинхронные функции (v1.5.0+)

Начиная с версии 1.5.0, ts-cpp-bridge поддерживает асинхронные функции через декоратор @CppAsync:

@CppAsync()
static processLongTask(input: LongTask): TaskResult {
  throw new Error('Implemented in C++');
}

Генерирует TypeScript API с Promise:

const result = await Solver.processLongTask(task);  // Promise<TaskResult>

// Параллельное выполнение
const results = await Promise.all([
  Solver.processLongTask(task1),
  Solver.processLongTask(task2),  
  Solver.processLongTask(task3)
]);

Особенности:

  • C++ код выполняется в отдельных потоках (AsyncWorker)
  • Основной поток Node.js не блокируется
  • Полная совместимость с Promise API и async/await