neosyringe-monorepo
v0.0.1
Published
A monorepo for Neosyringe packages
Downloads
64
Readme
✨ Features
- IDE Plugin - Real-time validation with all errors shown at once, precise error positioning
- Use Interfaces as Tokens -
useInterface<ILogger>()without manual Symbols - Zero Runtime Overhead - Generated factory functions, no DI library shipped
- Compile-Time Safety - Missing dependencies, cycles, and duplicates detected in your IDE
- Pure Classes - No decorators, no DI imports in your business code
- Comprehensive Validation - Validates across parent containers, extends, and partialConfigs
- Gradual Migration - Bridge existing containers (tsyringe, InversifyJS)
- CI Validation - CLI to verify your dependency graph
📦 Installation
# npm
npm install @djodjonx/neosyringe
npm install -D @djodjonx/neosyringe-plugin
# pnpm
pnpm add @djodjonx/neosyringe
pnpm add -D @djodjonx/neosyringe-plugin🚀 Quick Example
// Pure TypeScript - no decorators!
interface ILogger {
log(msg: string): void;
}
class ConsoleLogger implements ILogger {
log(msg: string) { console.log(msg); }
}
class UserService {
constructor(private logger: ILogger) {}
}// container.ts
import { defineBuilderConfig, useInterface } from '@djodjonx/neosyringe';
export const container = defineBuilderConfig({
injections: [
// Bind interface to implementation
{ token: useInterface<ILogger>(), provider: ConsoleLogger },
// Autowire class (dependencies resolved automatically)
{ token: UserService }
]
});
// Use it
const userService = container.resolve(UserService);At build time, this generates optimized factory functions. Zero DI library shipped to production!
📖 Documentation
For complete documentation, visit djodjonx.github.io/neosyringe
| Topic | Description | |-------|-------------| | Getting Started | Installation and first container | | Why NeoSyringe? | Comparison with traditional DI | | Injection Types | Classes, interfaces, factories, primitives | | Lifecycle | Singleton vs transient | | Multiple Containers | Organize multiple containers per file | | Scoped Injections | Override parent container tokens | | Parent Container | SharedKernel architecture | | Legacy Migration | Bridge tsyringe, InversifyJS | | Generated Code | What the compiler produces | | CLI Validator | Validate in CI/CD | | IDE Plugin | Real-time error detection | | API Reference | Types and functions |
🔧 Build Plugin Setup
import { neoSyringePlugin } from '@djodjonx/neosyringe-plugin';
export default defineConfig({
plugins: [neoSyringePlugin.vite()]
});import { neoSyringePlugin } from '@djodjonx/neosyringe-plugin';
export default {
plugins: [neoSyringePlugin.rollup()]
};module.exports = {
plugins: [require('@djodjonx/neosyringe-plugin').webpack()]
};🛡️ IDE Support
Get comprehensive real-time validation in your editor:
{
"compilerOptions": {
"plugins": [
{ "name": "@djodjonx/neosyringe-lsp" }
]
}
}What you get:
- ✅ All missing dependencies shown at once (not just the first error)
- ✅ Precise error positioning on the exact token with the problem
- ✅ Clean error messages without internal hash IDs
- ✅ Cross-file validation works correctly with imported services
- ✅ Context-aware validates across parent containers and extends
See IDE Plugin Guide for setup details.
📄 License
MIT
