@xxxaz/json-rpc-schema-typing 0.10.27 → 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.
@@ -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":"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"}
1
+ {"version":3,"file":"FileSystemRouter.js","sourceRoot":"","sources":["../../src/router/FileSystemRouter.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":"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"}
1
+ {"version":3,"file":"FileSystemRouter.js","sourceRoot":"","sources":["../../src/router/FileSystemRouter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xxxaz/json-rpc-schema-typing",
3
- "version": "0.10.27",
3
+ "version": "0.10.28",
4
4
  "description": "",
5
5
  "author": "xxx Inc.",
6
6
  "license": "MIT",
@@ -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 {};