@labostack/typebridge 0.1.1 → 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 +2 -1
- package/dist/bridge.d.ts +4 -9
- package/dist/bridge.d.ts.map +1 -1
- package/dist/bridge.js +4 -6
- package/dist/bridge.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/types/adapter.d.ts +1 -1
- package/dist/types/options.d.ts +3 -3
- package/dist/types/options.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/autobarrel/index.d.ts +0 -2
- package/dist/autobarrel/index.d.ts.map +0 -1
- package/dist/autobarrel/index.js +0 -2
- package/dist/autobarrel/index.js.map +0 -1
- package/dist/autobarrel/scanner.d.ts +0 -14
- package/dist/autobarrel/scanner.d.ts.map +0 -1
- package/dist/autobarrel/scanner.js +0 -93
- package/dist/autobarrel/scanner.js.map +0 -1
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:
|
|
36
|
+
controllers: { OrderController },
|
|
36
37
|
});
|
|
37
38
|
|
|
38
39
|
// Fully typed — IDE autocomplete, args, return types
|
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
|
-
/**
|
|
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
|
package/dist/bridge.d.ts.map
CHANGED
|
@@ -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;
|
|
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(
|
|
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;
|
package/dist/bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
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
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
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
|
|
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
|
|
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"}
|
package/dist/types/adapter.d.ts
CHANGED
|
@@ -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
|
|
15
|
+
* Used during controller discovery and registration filtering.
|
|
16
16
|
*/
|
|
17
17
|
isController(target: unknown): boolean;
|
|
18
18
|
/**
|
package/dist/types/options.d.ts
CHANGED
|
@@ -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>
|
|
9
|
+
export interface NodeOptions<C extends Record<string, unknown> = Record<string, unknown>> {
|
|
10
10
|
/**
|
|
11
11
|
* Controllers to expose via RPC.
|
|
12
|
-
*
|
|
13
|
-
*
|
|
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,
|
|
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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@labostack/typebridge",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Zero-ceremony RPC bridge with full auto-typing for TypeScript microservices",
|
|
5
5
|
"keywords": ["rpc", "typescript", "ts", "nodejs", "nestjs", "tsed", "deepkit", "rpc-framework"],
|
|
6
6
|
"author": {
|
|
@@ -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"}
|
package/dist/autobarrel/index.js
DELETED
|
@@ -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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"}
|