@labostack/typebridge 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -3,8 +3,10 @@ import type { FrameworkAdapter } from "../index.js";
|
|
|
3
3
|
/**
|
|
4
4
|
* TsedAdapter — adapter for Ts.ED framework.
|
|
5
5
|
*
|
|
6
|
-
* Detects controllers by checking for @Controller()
|
|
7
|
-
* from @tsed/common. Extracts methods from the class
|
|
6
|
+
* Detects controllers by checking for @Controller() or @Injectable()
|
|
7
|
+
* decorator metadata from @tsed/common. Extracts methods from the class
|
|
8
|
+
* prototype. Resolves instances from Ts.ED's DI container via the global
|
|
9
|
+
* `injector()` function (available in Ts.ED v8+).
|
|
8
10
|
*/
|
|
9
11
|
export declare const TsedAdapter: FrameworkAdapter;
|
|
10
12
|
//# sourceMappingURL=tsed-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsed-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/tsed-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,aAAa,CAAC;AAOtE
|
|
1
|
+
{"version":3,"file":"tsed-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/tsed-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,aAAa,CAAC;AAOtE;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,EAAE,gBAkDzB,CAAC"}
|
|
@@ -6,8 +6,10 @@ const TSED_CONTROLLER_URL = "tsed:controller:url";
|
|
|
6
6
|
/**
|
|
7
7
|
* TsedAdapter — adapter for Ts.ED framework.
|
|
8
8
|
*
|
|
9
|
-
* Detects controllers by checking for @Controller()
|
|
10
|
-
* from @tsed/common. Extracts methods from the class
|
|
9
|
+
* Detects controllers by checking for @Controller() or @Injectable()
|
|
10
|
+
* decorator metadata from @tsed/common. Extracts methods from the class
|
|
11
|
+
* prototype. Resolves instances from Ts.ED's DI container via the global
|
|
12
|
+
* `injector()` function (available in Ts.ED v8+).
|
|
11
13
|
*/
|
|
12
14
|
export const TsedAdapter = {
|
|
13
15
|
name: "Ts.ED",
|
|
@@ -15,10 +17,13 @@ export const TsedAdapter = {
|
|
|
15
17
|
if (typeof target !== "function")
|
|
16
18
|
return false;
|
|
17
19
|
// Check for Ts.ED @Controller() decorator metadata
|
|
18
|
-
|
|
19
|
-
Reflect.hasMetadata(TSED_CONTROLLER_URL, target)
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
if (Reflect.hasMetadata(TSED_CONTROLLER_KEY, target) ||
|
|
21
|
+
Reflect.hasMetadata(TSED_CONTROLLER_URL, target)) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
// Ts.ED v7+ uses "injectable:type" — value can be "controller" or "injectable"
|
|
25
|
+
const injectableType = Reflect.getMetadata("injectable:type", target);
|
|
26
|
+
return injectableType === "controller" || injectableType === "injectable";
|
|
22
27
|
},
|
|
23
28
|
extractMethods(controller) {
|
|
24
29
|
if (typeof controller !== "function")
|
|
@@ -27,5 +32,33 @@ export const TsedAdapter = {
|
|
|
27
32
|
const name = ctor.name.charAt(0).toLowerCase() + ctor.name.slice(1);
|
|
28
33
|
return extractMethodsFromPrototype(name, ctor);
|
|
29
34
|
},
|
|
35
|
+
/**
|
|
36
|
+
* Resolve a controller/injectable instance from Ts.ED's DI container.
|
|
37
|
+
*
|
|
38
|
+
* Uses the global `injector()` function from `@tsed/di` (v8+) to access
|
|
39
|
+
* the active DI container. This is a dynamic import so typebridge doesn't
|
|
40
|
+
* take a hard dependency on `@tsed/di` — it's only resolved at runtime
|
|
41
|
+
* when TsedAdapter is actually used.
|
|
42
|
+
*/
|
|
43
|
+
resolveInstance(controller) {
|
|
44
|
+
try {
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
46
|
+
const { injector } = require("@tsed/di");
|
|
47
|
+
return injector().get(controller);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Fallback: if injector() is not available (e.g. during testing
|
|
51
|
+
// or before platform bootstrap), attempt plain instantiation
|
|
52
|
+
if (typeof controller === "function") {
|
|
53
|
+
try {
|
|
54
|
+
return new controller();
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return controller;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return controller;
|
|
61
|
+
}
|
|
62
|
+
},
|
|
30
63
|
};
|
|
31
64
|
//# sourceMappingURL=tsed-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsed-adapter.js","sourceRoot":"","sources":["../../src/adapters/tsed-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAE1D,0CAA0C;AAC1C,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAC9C,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"tsed-adapter.js","sourceRoot":"","sources":["../../src/adapters/tsed-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAE1D,0CAA0C;AAC1C,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAC9C,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAqB;IAC3C,IAAI,EAAE,OAAO;IAEb,YAAY,CAAC,MAAe;QAC1B,IAAI,OAAO,MAAM,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC;QAC/C,mDAAmD;QACnD,IACE,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC;YAChD,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,EAChD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,+EAA+E;QAC/E,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACtE,OAAO,cAAc,KAAK,YAAY,IAAI,cAAc,KAAK,YAAY,CAAC;IAC5E,CAAC;IAED,cAAc,CAAC,UAAmB;QAChC,IAAI,OAAO,UAAU,KAAK,UAAU;YAAE,OAAO,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,UAAiD,CAAC;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpE,OAAO,2BAA2B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAC,UAAmB;QACjC,IAAI,CAAC;YACH,iEAAiE;YACjE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACzC,OAAO,QAAQ,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,gEAAgE;YAChE,6DAA6D;YAC7D,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;gBACrC,IAAI,CAAC;oBACH,OAAO,IAAK,UAAgC,EAAE,CAAC;gBACjD,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,UAAU,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@labostack/typebridge",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Zero-ceremony RPC bridge with full auto-typing for TypeScript microservices",
|
|
5
|
+
"keywords": ["rpc", "typescript", "ts", "nodejs", "nestjs", "tsed", "deepkit", "rpc-framework"],
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "labostack",
|
|
8
|
+
"url": "https://labostack.com"
|
|
9
|
+
},
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/labostack/typebridge"
|
|
13
|
+
},
|
|
5
14
|
"type": "module",
|
|
6
15
|
"main": "./dist/index.js",
|
|
7
16
|
"types": "./dist/index.d.ts",
|