Skip to content

Commit 488eb28

Browse files
committed
chore: wip
1 parent 977c52f commit 488eb28

File tree

6 files changed

+11
-26
lines changed

6 files changed

+11
-26
lines changed

bun.lock

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
"workspaces": {
44
"": {
55
"name": "bun-router",
6-
"dependencies": {
7-
"reflect-metadata": "^0.2.2",
8-
},
96
"devDependencies": {
107
"@stacksjs/bumpx": "^0.1.78",
118
"@stacksjs/docs": "^0.70.23",
@@ -1765,8 +1762,6 @@
17651762

17661763
"refa": ["[email protected]", "", { "dependencies": { "@eslint-community/regexpp": "^4.8.0" } }, "sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g=="],
17671764

1768-
"reflect-metadata": ["[email protected]", "", {}, "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q=="],
1769-
17701765
"reflect.getprototypeof": ["[email protected]", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="],
17711766

17721767
"regenerate": ["[email protected]", "", {}, "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="],

examples/dependency-injection-example.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
* Decorators, Contextual Binding, and real-world usage patterns
66
*/
77

8-
// Modern decorators - no reflect-metadata needed
98
import {
109
Container,
1110
createContainer

package.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,5 @@
9292
},
9393
"workspaces": [
9494
"packages/*"
95-
],
96-
"dependencies": {
97-
"reflect-metadata": "^0.2.2"
98-
}
95+
]
9996
}

packages/bun-router/src/container/decorators.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
/* eslint-disable ts/no-unsafe-function-type */
22
/**
33
* Modern Dependency Injection Decorators
4-
*
5-
* Uses standard decorators without reflect-metadata dependency
64
*/
75

86
import type { ResolutionContext } from './container'
@@ -165,20 +163,20 @@ function createRouteDecorator(method: string, path: string, options?: { middlewa
165163
if (!target.constructor[ROUTE_METADATA_KEY]) {
166164
target.constructor[ROUTE_METADATA_KEY] = []
167165
}
168-
166+
169167
const metadata: RouteMetadata = {
170168
method,
171169
path,
172170
middleware: options?.middleware || [],
173171
tags: options?.tags || [],
174172
}
175-
173+
176174
target.constructor[ROUTE_METADATA_KEY].push({
177175
...metadata,
178176
propertyKey,
179177
handler: descriptor.value,
180178
})
181-
179+
182180
return descriptor
183181
}
184182
}
@@ -238,17 +236,17 @@ function createParamDecorator(
238236
if (!target.constructor[PARAM_METADATA_KEY]) {
239237
target.constructor[PARAM_METADATA_KEY] = new Map()
240238
}
241-
239+
242240
if (!target.constructor[PARAM_METADATA_KEY].has(propertyKey)) {
243241
target.constructor[PARAM_METADATA_KEY].set(propertyKey, [])
244242
}
245-
243+
246244
const metadata: ParamMetadata = {
247245
type,
248246
key,
249247
token,
250248
}
251-
249+
252250
target.constructor[PARAM_METADATA_KEY].get(propertyKey)[parameterIndex] = metadata
253251
}
254252
}
@@ -295,7 +293,7 @@ export class MetadataReader {
295293
}
296294

297295
/**
298-
* Modern Decorator Container that works without reflect-metadata
296+
* Modern Decorator Container
299297
*/
300298
export class DecoratorContainer extends Container {
301299
/**

test/dependency-injection-simple.test.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import { createContainer } from '../packages/bun-router/src/container/container'
99
import { ContextualContainer } from '../packages/bun-router/src/container/contextual-binding'
1010
import { Controller, DecoratorContainer, Get, Inject, Injectable } from '../packages/bun-router/src/container/decorators'
1111
import { BaseServiceProvider, DefaultServiceProviderManager } from '../packages/bun-router/src/container/service-provider'
12-
// Modern decorators - no reflect-metadata needed
1312

1413
describe('Dependency Injection System', () => {
1514
describe('Basic Container', () => {

test/dependency-injection.test.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import {
1919
Injectable,
2020
MetadataReader,
2121
} from '../packages/bun-router/src/container/decorators'
22-
2322
import {
2423
BaseServiceProvider,
2524
ConfigServiceProvider,
@@ -28,8 +27,6 @@ import {
2827
LoggingServiceProvider,
2928
} from '../packages/bun-router/src/container/service-provider'
3029

31-
// Modern decorators - no reflect-metadata needed
32-
3330
// Test services and classes
3431
@Injectable({ scope: 'singleton' })
3532
class DatabaseService {
@@ -239,7 +236,7 @@ describe('IoC Container', () => {
239236
return 'test'
240237
}
241238
}
242-
239+
243240
container.singleton(TestService, TestService)
244241
const testService = container.resolve<TestService>(TestService)
245242
expect(testService).toBeInstanceOf(TestService)
@@ -448,11 +445,11 @@ describe('Decorators', () => {
448445
it('should resolve controller with dependencies', () => {
449446
// Clear any existing bindings to avoid conflicts
450447
container.clear()
451-
448+
452449
// Bind dependencies that UserController needs
453450
container.factory('userService', () => ({ getUser: () => Promise.resolve({ id: 1, name: 'Test' }) }))
454451
container.factory('logger', () => new LoggerService())
455-
452+
456453
// Register the controller
457454
container.registerController(UserController)
458455

0 commit comments

Comments
 (0)