@xxxaz/json-rpc-schema-typing 0.10.26 → 0.10.28
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/cjs/client/JsonRpcHttpClient.js +7 -1
- package/cjs/client/JsonRpcHttpClient.js.map +1 -1
- package/cjs/router/FileSystemRouter.js +10 -1
- package/cjs/router/FileSystemRouter.js.map +1 -1
- package/esm/client/JsonRpcHttpClient.js +7 -1
- package/esm/client/JsonRpcHttpClient.js.map +1 -1
- package/esm/router/FileSystemRouter.js +10 -1
- package/esm/router/FileSystemRouter.js.map +1 -1
- package/package.json +1 -1
- package/src/client/JsonRpcHttpClient.ts +9 -1
- package/src/router/FileSystemRouter.ts +13 -1
- package/types/router/FileSystemRouter.d.ts +5 -1
|
@@ -32,7 +32,13 @@ class JsonRpcHttpClient extends JsonRpcClient_js_1.JsonRpcClient {
|
|
|
32
32
|
headers,
|
|
33
33
|
};
|
|
34
34
|
};
|
|
35
|
-
|
|
35
|
+
const fetcher = options.fetcher
|
|
36
|
+
|| ('fetch' in globalThis && globalThis.fetch.bind(globalThis))
|
|
37
|
+
|| null;
|
|
38
|
+
if (!fetcher) {
|
|
39
|
+
throw new Error('Fetch API is not available.');
|
|
40
|
+
}
|
|
41
|
+
this.#fetcher = fetcher;
|
|
36
42
|
}
|
|
37
43
|
postUrl;
|
|
38
44
|
batchUrl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonRpcHttpClient.js","sourceRoot":"","sources":["../../src/client/JsonRpcHttpClient.ts"],"names":[],"mappings":";;;AAAA,4EAA8E;AAC9E,gEAAyD;AAEzD,yDAA+D;AAC/D,8CAA0D;AAkB1D,MAAa,iBAA6C,SAAQ,gCAAkB;IAEhF,YAAY,OAAsC;QAC9C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAC1D,KAAK,CAAC;YACF,MAAM;YACN,UAAU;YACV,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;YAC/C,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,EAAE,OAAO,CAAC;SAC/D,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,OAAO,CAAC;QAEpC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAClD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACpD,IAAI,CAAC,cAAc,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE;YACjC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;YAC7B,MAAM,OAAO,GAAG,CAAC,OAAO,IAAI,KAAK,UAAU,CAAC;gBACxC,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/B,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YACpD,CAAC;YACD,OAAO;gBACH,GAAG,OAAO,CAAC,IAAI;gBACf,MAAM,EAAE,MAAM;gBACd,OAAO;aACV,CAAC;QACN,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"JsonRpcHttpClient.js","sourceRoot":"","sources":["../../src/client/JsonRpcHttpClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,7 +38,7 @@ const fs_1 = require("fs");
|
|
|
38
38
|
const JsonRpcRouter_js_1 = require("./JsonRpcRouter.js");
|
|
39
39
|
class FileSystemRouter extends JsonRpcRouter_js_1.JsonRpcRouter {
|
|
40
40
|
rootDir;
|
|
41
|
-
constructor(rootDir) {
|
|
41
|
+
constructor(rootDir, options = {}) {
|
|
42
42
|
super();
|
|
43
43
|
this.rootDir = rootDir;
|
|
44
44
|
if (!(0, fs_1.existsSync)(rootDir))
|
|
@@ -46,7 +46,9 @@ class FileSystemRouter extends JsonRpcRouter_js_1.JsonRpcRouter {
|
|
|
46
46
|
const stat = (0, fs_1.lstatSync)(rootDir);
|
|
47
47
|
if (!stat.isDirectory())
|
|
48
48
|
throw new Error(`Not a directory: ${rootDir}`);
|
|
49
|
+
this.#pathFilter = options.pathFilter;
|
|
49
50
|
}
|
|
51
|
+
#pathFilter;
|
|
50
52
|
// instanceof JsonRpcMethodDefinition だと参照先モジュールが複数存在した際に一致しなくなる
|
|
51
53
|
static #isDefinition(obj) {
|
|
52
54
|
const key = obj?.constructor?.method;
|
|
@@ -69,6 +71,13 @@ class FileSystemRouter extends JsonRpcRouter_js_1.JsonRpcRouter {
|
|
|
69
71
|
: null;
|
|
70
72
|
if (!filePath)
|
|
71
73
|
return this.#cache[methodPath] = null;
|
|
74
|
+
if (this.#pathFilter) {
|
|
75
|
+
const pass = this.#pathFilter instanceof RegExp
|
|
76
|
+
? this.#pathFilter.test(filePath)
|
|
77
|
+
: this.#pathFilter(filePath);
|
|
78
|
+
if (!pass)
|
|
79
|
+
return this.#cache[methodPath] = null;
|
|
80
|
+
}
|
|
72
81
|
try {
|
|
73
82
|
const module = await Promise.resolve(`${filePath}`).then(s => __importStar(require(s)));
|
|
74
83
|
if (FileSystemRouter.#isDefinition(module.default)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileSystemRouter.js","sourceRoot":"","sources":["../../src/router/FileSystemRouter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAAwD;AAExD,yDAAmD;
|
|
1
|
+
{"version":3,"file":"FileSystemRouter.js","sourceRoot":"","sources":["../../src/router/FileSystemRouter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAAwD;AAExD,yDAAmD;AAUnD,MAAa,gBAAsB,SAAQ,gCAAkB;IAC5B;IAA7B,YAA6B,OAAe,EAAE,UAAmC,EAAE;QAC/E,KAAK,EAAE,CAAC;QADiB,YAAO,GAAP,OAAO,CAAQ;QAExC,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,IAAA,cAAS,EAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAC1C,CAAC;IACQ,WAAW,CAAwC;IAE5D,gEAAgE;IAChE,MAAM,CAAC,aAAa,CAAC,GAAQ;QACzB,MAAM,GAAG,GAAG,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC;QACrC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC;IACnE,CAAC;IAED,MAAM,GAAG,EAAqB,CAAC;IAC/B,KAAK,CAAC,YAAY,CAAC,UAAkB;QACjC,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,UAAU,EAAE,CAAC;QAC7C,IAAI,IAAA,eAAU,EAAC,IAAI,CAAC,EAAE,CAAC;YACnB,IAAI,IAAA,cAAS,EAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,gBAAgB,CAAM,IAAI,CAAC,CAAC;YACrE,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GACR,IAAA,eAAU,EAAC,GAAG,IAAI,KAAK,CAAC;YACtB,CAAC,CAAC,GAAG,IAAI,KAAK;YAClB,CAAC,CAAC,IAAA,eAAU,EAAC,GAAG,IAAI,KAAK,CAAC;gBACtB,CAAC,CAAC,GAAG,IAAI,KAAK;gBACd,CAAC,CAAC,IAAI,CAAC;QACf,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;QACrD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,YAAY,MAAM;gBAC3C,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACjC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;QACrD,CAAC;QAED,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,yBAAa,QAAQ,uCAAC,CAAC;YACtC,IAAI,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;YACpD,CAAC;QACL,CAAC;QAAC,OAAM,CAAC,EAAE,CAAC;YACR,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAA2B;QACrC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACxD,IAAI,OAAO,UAAU,KAAK,QAAQ;YAAE,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvE,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC;QAEnC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,CAAE,SAAS;QACb,KAAI,MAAM,IAAI,IAAI,IAAA,gBAAW,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;CACJ;AA7ED,4CA6EC"}
|
|
@@ -29,7 +29,13 @@ export class JsonRpcHttpClient extends JsonRpcClient {
|
|
|
29
29
|
headers,
|
|
30
30
|
};
|
|
31
31
|
};
|
|
32
|
-
|
|
32
|
+
const fetcher = options.fetcher
|
|
33
|
+
|| ('fetch' in globalThis && globalThis.fetch.bind(globalThis))
|
|
34
|
+
|| null;
|
|
35
|
+
if (!fetcher) {
|
|
36
|
+
throw new Error('Fetch API is not available.');
|
|
37
|
+
}
|
|
38
|
+
this.#fetcher = fetcher;
|
|
33
39
|
}
|
|
34
40
|
postUrl;
|
|
35
41
|
batchUrl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonRpcHttpClient.js","sourceRoot":"","sources":["../../src/client/JsonRpcHttpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAc,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAkB1D,MAAM,OAAO,iBAA6C,SAAQ,aAAkB;IAEhF,YAAY,OAAsC;QAC9C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAC1D,KAAK,CAAC;YACF,MAAM;YACN,UAAU;YACV,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;YAC/C,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,EAAE,OAAO,CAAC;SAC/D,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,OAAO,CAAC;QAEpC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAClD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACpD,IAAI,CAAC,cAAc,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE;YACjC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;YAC7B,MAAM,OAAO,GAAG,CAAC,OAAO,IAAI,KAAK,UAAU,CAAC;gBACxC,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/B,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YACpD,CAAC;YACD,OAAO;gBACH,GAAG,OAAO,CAAC,IAAI;gBACf,MAAM,EAAE,MAAM;gBACd,OAAO;aACV,CAAC;QACN,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"JsonRpcHttpClient.js","sourceRoot":"","sources":["../../src/client/JsonRpcHttpClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { lstatSync, readdirSync, existsSync } from 'fs';
|
|
|
2
2
|
import { JsonRpcRouter } from "./JsonRpcRouter.js";
|
|
3
3
|
export class FileSystemRouter extends JsonRpcRouter {
|
|
4
4
|
rootDir;
|
|
5
|
-
constructor(rootDir) {
|
|
5
|
+
constructor(rootDir, options = {}) {
|
|
6
6
|
super();
|
|
7
7
|
this.rootDir = rootDir;
|
|
8
8
|
if (!existsSync(rootDir))
|
|
@@ -10,7 +10,9 @@ export class FileSystemRouter extends JsonRpcRouter {
|
|
|
10
10
|
const stat = lstatSync(rootDir);
|
|
11
11
|
if (!stat.isDirectory())
|
|
12
12
|
throw new Error(`Not a directory: ${rootDir}`);
|
|
13
|
+
this.#pathFilter = options.pathFilter;
|
|
13
14
|
}
|
|
15
|
+
#pathFilter;
|
|
14
16
|
// instanceof JsonRpcMethodDefinition だと参照先モジュールが複数存在した際に一致しなくなる
|
|
15
17
|
static #isDefinition(obj) {
|
|
16
18
|
const key = obj?.constructor?.method;
|
|
@@ -33,6 +35,13 @@ export class FileSystemRouter extends JsonRpcRouter {
|
|
|
33
35
|
: null;
|
|
34
36
|
if (!filePath)
|
|
35
37
|
return this.#cache[methodPath] = null;
|
|
38
|
+
if (this.#pathFilter) {
|
|
39
|
+
const pass = this.#pathFilter instanceof RegExp
|
|
40
|
+
? this.#pathFilter.test(filePath)
|
|
41
|
+
: this.#pathFilter(filePath);
|
|
42
|
+
if (!pass)
|
|
43
|
+
return this.#cache[methodPath] = null;
|
|
44
|
+
}
|
|
36
45
|
try {
|
|
37
46
|
const module = await import(filePath);
|
|
38
47
|
if (FileSystemRouter.#isDefinition(module.default)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileSystemRouter.js","sourceRoot":"","sources":["../../src/router/FileSystemRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"FileSystemRouter.js","sourceRoot":"","sources":["../../src/router/FileSystemRouter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -49,7 +49,15 @@ export class JsonRpcHttpClient<Sch extends JsonRpcSchema> extends JsonRpcClient<
|
|
|
49
49
|
headers,
|
|
50
50
|
};
|
|
51
51
|
};
|
|
52
|
-
|
|
52
|
+
|
|
53
|
+
const fetcher: Fetcher|null
|
|
54
|
+
= options.fetcher
|
|
55
|
+
|| ('fetch' in globalThis && globalThis.fetch.bind(globalThis))
|
|
56
|
+
|| null;
|
|
57
|
+
if (!fetcher) {
|
|
58
|
+
throw new Error('Fetch API is not available.');
|
|
59
|
+
}
|
|
60
|
+
this.#fetcher = fetcher;
|
|
53
61
|
}
|
|
54
62
|
|
|
55
63
|
readonly postUrl: string|URL;
|
|
@@ -6,13 +6,19 @@ type RouteCache<Ctx> = {
|
|
|
6
6
|
[path: string]: FileSystemRouter<Ctx>|JsonRpcMethodDefinition<Ctx, any, any>|null;
|
|
7
7
|
};
|
|
8
8
|
|
|
9
|
+
type FileSystemRouterOptions = {
|
|
10
|
+
pathFilter?: (RegExp|((path: string) => boolean));
|
|
11
|
+
};
|
|
12
|
+
|
|
9
13
|
export class FileSystemRouter<Ctx> extends JsonRpcRouter<Ctx> {
|
|
10
|
-
constructor(private readonly rootDir: string) {
|
|
14
|
+
constructor(private readonly rootDir: string, options: FileSystemRouterOptions = {}) {
|
|
11
15
|
super();
|
|
12
16
|
if (!existsSync(rootDir)) throw new Error(`Not found: ${rootDir}`);
|
|
13
17
|
const stat = lstatSync(rootDir);
|
|
14
18
|
if (!stat.isDirectory()) throw new Error(`Not a directory: ${rootDir}`);
|
|
19
|
+
this.#pathFilter = options.pathFilter;
|
|
15
20
|
}
|
|
21
|
+
readonly #pathFilter?: (RegExp|((path: string) => boolean));
|
|
16
22
|
|
|
17
23
|
// instanceof JsonRpcMethodDefinition だと参照先モジュールが複数存在した際に一致しなくなる
|
|
18
24
|
static #isDefinition(obj: any): obj is JsonRpcMethodDefinition<any, any, any> {
|
|
@@ -37,6 +43,12 @@ export class FileSystemRouter<Ctx> extends JsonRpcRouter<Ctx> {
|
|
|
37
43
|
? `${path}.ts`
|
|
38
44
|
: null;
|
|
39
45
|
if (!filePath) return this.#cache[methodPath] = null;
|
|
46
|
+
if (this.#pathFilter) {
|
|
47
|
+
const pass = this.#pathFilter instanceof RegExp
|
|
48
|
+
? this.#pathFilter.test(filePath)
|
|
49
|
+
: this.#pathFilter(filePath);
|
|
50
|
+
if (!pass) return this.#cache[methodPath] = null;
|
|
51
|
+
}
|
|
40
52
|
|
|
41
53
|
try {
|
|
42
54
|
const module = await import(filePath);
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { JsonRpcMethodDefinition } from "../JsonRpcMethod.js";
|
|
2
2
|
import { JsonRpcRouter } from "./JsonRpcRouter.js";
|
|
3
|
+
type FileSystemRouterOptions = {
|
|
4
|
+
pathFilter?: (RegExp | ((path: string) => boolean));
|
|
5
|
+
};
|
|
3
6
|
export declare class FileSystemRouter<Ctx> extends JsonRpcRouter<Ctx> {
|
|
4
7
|
#private;
|
|
5
8
|
private readonly rootDir;
|
|
6
|
-
constructor(rootDir: string);
|
|
9
|
+
constructor(rootDir: string, options?: FileSystemRouterOptions);
|
|
7
10
|
resolveChild(methodPath: string): Promise<any>;
|
|
8
11
|
resolve(methodPath: string | string[]): Promise<JsonRpcRouter<Ctx> | JsonRpcMethodDefinition<Ctx, any, any> | null>;
|
|
9
12
|
enumerate(): AsyncIterable<string>;
|
|
10
13
|
}
|
|
14
|
+
export {};
|