@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() decorator metadata
7
- * from @tsed/common. Extracts methods from the class prototype.
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;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,gBAoBzB,CAAC"}
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() decorator metadata
10
- * from @tsed/common. Extracts methods from the class prototype.
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
- return (Reflect.hasMetadata(TSED_CONTROLLER_KEY, target) ||
19
- Reflect.hasMetadata(TSED_CONTROLLER_URL, target) ||
20
- // Ts.ED v7+ uses "injectable:type" with value "controller"
21
- Reflect.getMetadata("injectable:type", target) === "controller");
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;;;;;GAKG;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,OAAO,CACL,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC;YAChD,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC;YAChD,2DAA2D;YAC3D,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,KAAK,YAAY,CAChE,CAAC;IACJ,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;CACF,CAAC"}
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.0",
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",