@labostack/typebridge 0.1.0 → 0.1.2

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.
package/README.md CHANGED
@@ -27,12 +27,13 @@ export const api = await TypeBridge.create(NestAdapter, {
27
27
  ```typescript
28
28
  import { TypeBridge } from "@labostack/typebridge";
29
29
  import { GenericAdapter } from "@labostack/typebridge/adapters";
30
+ import { OrderController } from "./controllers";
30
31
  import type { api as UsersAPI } from "../service-a/node";
31
32
 
32
33
  const api = await TypeBridge
33
34
  .with<typeof UsersAPI>()
34
35
  .create(GenericAdapter, {
35
- controllers: "./controllers",
36
+ controllers: { OrderController },
36
37
  });
37
38
 
38
39
  // Fully typed — IDE autocomplete, args, return types
@@ -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/dist/bridge.d.ts CHANGED
@@ -39,16 +39,11 @@ export declare class TypeBridge {
39
39
  * ```
40
40
  */
41
41
  static with<P>(): {
42
- create: {
43
- /** Object controllers — fully typed local + remote */
44
- <C extends Record<string, unknown>>(adapter: FrameworkAdapter, options: NodeOptions<C>): Promise<TypeBridgeAPI<C> & Omit<P, "close" | "name" | "port" | "__controllers" | "__mesh">>;
45
- /** Autobarrel — directory path */
46
- (adapter: FrameworkAdapter, options: NodeOptions<string>): Promise<TypeBridgeAPI<Record<string, unknown>> & Omit<P, "close" | "name" | "port" | "__controllers" | "__mesh">>;
47
- };
42
+ create: <C extends Record<string, unknown>>(adapter: FrameworkAdapter, options: NodeOptions<C>) => Promise<TypeBridgeAPI<C> & Omit<P, "close" | "name" | "port" | "__controllers" | "__mesh">>;
48
43
  };
49
- /** Object controllers — fully typed */
44
+ /**
45
+ * Create a TypeBridge node — register controllers and start the mesh.
46
+ */
50
47
  static create<C extends Record<string, unknown>>(adapter: FrameworkAdapter, options: NodeOptions<C>): Promise<TypeBridgeAPI<C>>;
51
- /** Autobarrel — directory path, controllers discovered at runtime */
52
- static create(adapter: FrameworkAdapter, options: NodeOptions<string>): Promise<TypeBridgeAPI<Record<string, unknown>>>;
53
48
  }
54
49
  //# sourceMappingURL=bridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AASrE;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,UAAU;IACrB;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC;gBAGoB;YAC3B,sDAAsD;YACtD,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,kEAAkB,CAAC,CAAC;YAC/C,kCAAkC;YAClC,CACE,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3B,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,kEAAkB,CAAC,CAAC;SACtE;;IAIL,uCAAuC;WAC1B,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnD,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAE5B,qEAAqE;WACxD,MAAM,CACjB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3B,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAkGnD"}
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQrE;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,UAAU;IACrB;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC;gBAGoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7D,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,KACpB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,kEAAkB,CAAC;;IAIpD;;OAEG;WACU,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnD,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;CAuF7B"}
package/dist/bridge.js CHANGED
@@ -5,7 +5,6 @@ import { TransportServer } from "./transport/server.js";
5
5
  import { MeshManager } from "./mesh/mesh-manager.js";
6
6
  import { announceViaMdns } from "./discovery/mdns.js";
7
7
  import { createMeshProxy } from "./proxy/client-proxy.js";
8
- import { scanControllers } from "./autobarrel/scanner.js";
9
8
  /**
10
9
  * TypeBridge — zero-ceremony RPC mesh for TypeScript microservices.
11
10
  *
@@ -49,15 +48,14 @@ export class TypeBridge {
49
48
  create: TypeBridge.create,
50
49
  };
51
50
  }
51
+ /**
52
+ * Create a TypeBridge node — register controllers and start the mesh.
53
+ */
52
54
  static async create(adapter, options) {
53
55
  const registry = new MethodRegistry();
54
56
  const serviceName = options.name ?? await inferServiceName();
55
- // ─── Resolve controllers (object or directory path) ──
56
- const controllerMap = typeof options.controllers === "string"
57
- ? await scanControllers(options.controllers, adapter)
58
- : options.controllers;
59
57
  // ─── Register controllers ─────────────────────────
60
- for (const [key, value] of Object.entries(controllerMap)) {
58
+ for (const [key, value] of Object.entries(options.controllers)) {
61
59
  const controllerName = key.charAt(0).toLowerCase() + key.slice(1);
62
60
  if (!adapter.isController(value))
63
61
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,7 +2,8 @@
2
2
  * @labostack/typebridge — Zero-ceremony RPC mesh for TypeScript
3
3
  *
4
4
  * Usage:
5
- * import { TypeBridge, NestAdapter } from "@labostack/typebridge";
5
+ * import { TypeBridge } from "@labostack/typebridge";
6
+ * import { NestAdapter } from "@labostack/typebridge/adapters";
6
7
  * const api = await TypeBridge.create(NestAdapter, { controllers });
7
8
  * api.userController.findById("abc"); // local or remote — just works
8
9
  */
@@ -17,5 +18,4 @@ export { MsgPackSerializer } from "./serialization/index.js";
17
18
  export { TransportServer, TransportClient, Connection } from "./transport/index.js";
18
19
  export { MeshManager } from "./mesh/index.js";
19
20
  export { resolveService } from "./discovery/index.js";
20
- export { scanControllers } from "./autobarrel/index.js";
21
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,UAAU,GACX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,UAAU,GACX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -2,7 +2,8 @@
2
2
  * @labostack/typebridge — Zero-ceremony RPC mesh for TypeScript
3
3
  *
4
4
  * Usage:
5
- * import { TypeBridge, NestAdapter } from "@labostack/typebridge";
5
+ * import { TypeBridge } from "@labostack/typebridge";
6
+ * import { NestAdapter } from "@labostack/typebridge/adapters";
6
7
  * const api = await TypeBridge.create(NestAdapter, { controllers });
7
8
  * api.userController.findById("abc"); // local or remote — just works
8
9
  */
@@ -15,5 +16,4 @@ export { MsgPackSerializer } from "./serialization/index.js";
15
16
  export { TransportServer, TransportClient, Connection } from "./transport/index.js";
16
17
  export { MeshManager } from "./mesh/index.js";
17
18
  export { resolveService } from "./discovery/index.js";
18
- export { scanControllers } from "./autobarrel/index.js";
19
19
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkBzC,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,UAAU,GACX,MAAM,kBAAkB,CAAC;AAE1B,oDAAoD;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkBzC,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,UAAU,GACX,MAAM,kBAAkB,CAAC;AAE1B,oDAAoD;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -12,7 +12,7 @@ export interface FrameworkAdapter {
12
12
  readonly name: string;
13
13
  /**
14
14
  * Check whether a given class/constructor is a controller in this framework.
15
- * Used during autobarrel discovery and registration filtering.
15
+ * Used during controller discovery and registration filtering.
16
16
  */
17
17
  isController(target: unknown): boolean;
18
18
  /**
@@ -6,11 +6,11 @@ export declare const DEFAULT_PORT = 0;
6
6
  /**
7
7
  * Options for TypeBridge.create().
8
8
  */
9
- export interface NodeOptions<C extends Record<string, unknown> | string = Record<string, unknown>> {
9
+ export interface NodeOptions<C extends Record<string, unknown> = Record<string, unknown>> {
10
10
  /**
11
11
  * Controllers to expose via RPC.
12
- * - Object: `{ UserController, OrderController }` — explicit imports
13
- * - String: `"./src/controllers"` — autobarrel (scans the directory)
12
+ * Pass an object of imported controller classes:
13
+ * { UserController, OrderController }
14
14
  */
15
15
  controllers: C;
16
16
  name?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/types/options.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qDAAqD;AACrD,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/F;;;;OAIG;IACH,WAAW,EAAE,CAAC,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC7D,mBAAmB,CAAC,KAAK,CAAC,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;CACpD,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;KAClE,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACjG,CAAC;AAEF,6BAA6B;AAC7B,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAEhG;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/types/options.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qDAAqD;AACrD,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtF;;;;OAIG;IACH,WAAW,EAAE,CAAC,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC7D,mBAAmB,CAAC,KAAK,CAAC,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;CACpD,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;KAClE,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACjG,CAAC;AAEF,6BAA6B;AAC7B,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAEhG;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd"}
package/package.json CHANGED
@@ -1,7 +1,16 @@
1
1
  {
2
2
  "name": "@labostack/typebridge",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
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",
@@ -1,2 +0,0 @@
1
- export { scanControllers } from "./scanner.js";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/autobarrel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -1,2 +0,0 @@
1
- export { scanControllers } from "./scanner.js";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/autobarrel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -1,14 +0,0 @@
1
- import type { FrameworkAdapter } from "../types/adapter.js";
2
- /**
3
- * Scan a directory for controller classes.
4
- *
5
- * Recursively walks the directory, imports all .ts/.js files,
6
- * and collects exports that the adapter recognizes as controllers
7
- * (or whose name ends with "Controller").
8
- *
9
- * @param dirPath - Path to the controllers directory (relative or absolute)
10
- * @param adapter - Framework adapter with isController() predicate
11
- * @returns Object of discovered controller classes: { UserController, OrderController, ... }
12
- */
13
- export declare function scanControllers(dirPath: string, adapter: FrameworkAdapter): Promise<Record<string, unknown>>;
14
- //# sourceMappingURL=scanner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/autobarrel/scanner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAiDlC"}
@@ -1,93 +0,0 @@
1
- import { readdir } from "node:fs/promises";
2
- import { join, resolve } from "node:path";
3
- import { pathToFileURL } from "node:url";
4
- /**
5
- * Scan a directory for controller classes.
6
- *
7
- * Recursively walks the directory, imports all .ts/.js files,
8
- * and collects exports that the adapter recognizes as controllers
9
- * (or whose name ends with "Controller").
10
- *
11
- * @param dirPath - Path to the controllers directory (relative or absolute)
12
- * @param adapter - Framework adapter with isController() predicate
13
- * @returns Object of discovered controller classes: { UserController, OrderController, ... }
14
- */
15
- export async function scanControllers(dirPath, adapter) {
16
- const absolutePath = resolve(process.cwd(), dirPath);
17
- const controllers = {};
18
- let files;
19
- try {
20
- files = await readdirRecursive(absolutePath);
21
- }
22
- catch (err) {
23
- throw new Error(`[TypeBridge] Failed to scan controllers directory "${dirPath}": ${err.message}`);
24
- }
25
- for (const filePath of files) {
26
- // Skip non-source files
27
- if (!isSourceFile(filePath))
28
- continue;
29
- try {
30
- // Dynamic import using file:// URL (required for ESM)
31
- const fileUrl = pathToFileURL(filePath).href;
32
- const mod = await import(fileUrl);
33
- // Check all named exports
34
- for (const [exportName, exportValue] of Object.entries(mod)) {
35
- if (exportName === "default")
36
- continue;
37
- if (typeof exportValue !== "function")
38
- continue;
39
- // Check: adapter says it's a controller, OR name ends with "Controller"
40
- const isController = adapter.isController(exportValue) ||
41
- exportName.endsWith("Controller");
42
- if (isController) {
43
- controllers[exportName] = exportValue;
44
- }
45
- }
46
- }
47
- catch {
48
- // Skip files that fail to import (e.g., non-module files, syntax errors)
49
- }
50
- }
51
- if (Object.keys(controllers).length === 0) {
52
- console.warn(`[TypeBridge] No controllers found in "${dirPath}". ` +
53
- `Make sure controller class names end with "Controller" or use the @Bridge() decorator.`);
54
- }
55
- return controllers;
56
- }
57
- /**
58
- * Recursively list all files in a directory.
59
- */
60
- async function readdirRecursive(dir) {
61
- const entries = await readdir(dir, { withFileTypes: true });
62
- const files = [];
63
- for (const entry of entries) {
64
- const fullPath = join(dir, entry.name);
65
- if (entry.isDirectory()) {
66
- const nested = await readdirRecursive(fullPath);
67
- files.push(...nested);
68
- }
69
- else {
70
- files.push(fullPath);
71
- }
72
- }
73
- return files;
74
- }
75
- /**
76
- * Check if a file is a TypeScript/JavaScript source file we should import.
77
- */
78
- function isSourceFile(filePath) {
79
- // Include .ts, .js, .mts, .mjs
80
- if (!filePath.endsWith(".ts") &&
81
- !filePath.endsWith(".js") &&
82
- !filePath.endsWith(".mts") &&
83
- !filePath.endsWith(".mjs")) {
84
- return false;
85
- }
86
- // Exclude declaration files, tests, specs
87
- if (filePath.endsWith(".d.ts") || filePath.endsWith(".d.mts"))
88
- return false;
89
- if (filePath.includes(".test.") || filePath.includes(".spec."))
90
- return false;
91
- return true;
92
- }
93
- //# sourceMappingURL=scanner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/autobarrel/scanner.ts"],"names":[],"mappings":"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"}