@xxxaz/json-rpc-schema-typing 0.9.11 → 0.10.0

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.
Files changed (51) hide show
  1. package/cjs/JsonRpcException.js +17 -7
  2. package/cjs/JsonRpcException.js.map +1 -1
  3. package/cjs/JsonRpcMethod.js +18 -3
  4. package/cjs/JsonRpcMethod.js.map +1 -1
  5. package/cjs/JsonRpcValidator.js +32 -16
  6. package/cjs/JsonRpcValidator.js.map +1 -1
  7. package/cjs/WebSocketWrapper.js +24 -3
  8. package/cjs/WebSocketWrapper.js.map +1 -1
  9. package/cjs/client/JsonRpcMessagePortClient.js +1 -1
  10. package/cjs/client/JsonRpcMessagePortClient.js.map +1 -1
  11. package/cjs/client/JsonRpcWebSocketClient.js +4 -0
  12. package/cjs/client/JsonRpcWebSocketClient.js.map +1 -1
  13. package/cjs/router/FileSystemRouter.js +20 -10
  14. package/cjs/router/FileSystemRouter.js.map +1 -1
  15. package/cjs/schemas/Complex.js +9 -0
  16. package/cjs/schemas/Complex.js.map +1 -1
  17. package/cjs/schemas/Structure.js +4 -10
  18. package/cjs/schemas/Structure.js.map +1 -1
  19. package/cjs/server/JsonRpcWebSocketReceiver.js +1 -1
  20. package/cjs/server/JsonRpcWebSocketReceiver.js.map +1 -1
  21. package/cjs/utility.js +1 -1
  22. package/cjs/utility.js.map +1 -1
  23. package/esm/JsonRpcMethod.js +18 -3
  24. package/esm/JsonRpcMethod.js.map +1 -1
  25. package/esm/JsonRpcValidator.js +32 -16
  26. package/esm/JsonRpcValidator.js.map +1 -1
  27. package/esm/WebSocketWrapper.js +24 -3
  28. package/esm/WebSocketWrapper.js.map +1 -1
  29. package/esm/client/JsonRpcMessagePortClient.js +1 -1
  30. package/esm/client/JsonRpcMessagePortClient.js.map +1 -1
  31. package/esm/client/JsonRpcWebSocketClient.js +4 -0
  32. package/esm/client/JsonRpcWebSocketClient.js.map +1 -1
  33. package/esm/router/FileSystemRouter.js +3 -3
  34. package/esm/router/FileSystemRouter.js.map +1 -1
  35. package/esm/schemas/Complex.js +8 -0
  36. package/esm/schemas/Complex.js.map +1 -1
  37. package/esm/schemas/Structure.js +4 -9
  38. package/esm/schemas/Structure.js.map +1 -1
  39. package/esm/server/JsonRpcWebSocketReceiver.js +1 -1
  40. package/esm/server/JsonRpcWebSocketReceiver.js.map +1 -1
  41. package/esm/utility.js +1 -1
  42. package/esm/utility.js.map +1 -1
  43. package/package.json +10 -9
  44. package/types/JsonRpcMethod.d.ts +41 -11
  45. package/types/JsonRpcValidator.d.ts +5 -3
  46. package/types/WebSocketWrapper.d.ts +3 -0
  47. package/types/client/JsonRpcClient.d.ts +2 -2
  48. package/types/router/JsonRpcRouter.d.ts +3 -3
  49. package/types/schemas/Complex.d.ts +6 -0
  50. package/types/schemas/Structure.d.ts +5 -10
  51. package/types/types.d.ts +18 -3
@@ -6,29 +6,45 @@ function validate(data, schema) {
6
6
  const valid = validate(data);
7
7
  return {
8
8
  valid,
9
- errors: validate.errors ?? []
9
+ errors: [...serializeErrors(validate.errors)]
10
10
  };
11
11
  }
12
+ function* serializeErrors(error) {
13
+ if (!error)
14
+ return;
15
+ for (const { propertyName, message, schemaPath, data, keyword, instancePath, params } of error) {
16
+ const err = {};
17
+ if (propertyName)
18
+ err.propertyName = propertyName;
19
+ if (message)
20
+ err.message = message;
21
+ if (data)
22
+ err.data = data;
23
+ if (keyword)
24
+ err.keyword = keyword;
25
+ if (instancePath)
26
+ err.instancePath = instancePath;
27
+ if (schemaPath)
28
+ err.schemaPath = schemaPath;
29
+ if (Object.keys(err).length > 0) {
30
+ yield err;
31
+ }
32
+ if (params.errors) {
33
+ yield* serializeErrors(params.errors);
34
+ }
35
+ }
36
+ }
12
37
  export class JsonRpcValidator {
13
38
  schema;
14
39
  constructor(schema) {
15
40
  this.schema = schema;
16
41
  }
17
- get #params() {
18
- return this.schema.$params;
19
- }
20
- get #return() {
21
- return this.schema.$return;
22
- }
23
42
  validateParams(params) {
24
- const shorten = this.#params.slice(params.length).every(({ optional }) => optional);
25
- const schema = shorten ? this.#params.slice(0, params.length) : this.#params;
26
- const errors = schema
27
- .map((schema, index) => validate(params[index], schema))
28
- .map(({ errors }, argument) => errors.map(({ propertyName, message }) => ({ argument, property: propertyName ?? '', message: message ?? '' })))
29
- .flat();
43
+ if (!this.schema.$params)
44
+ return params === undefined;
45
+ const { errors } = validate(params, this.schema.$params);
30
46
  if (errors.length > 0) {
31
- const message = errors.map(({ argument, property, message }) => `args[${argument}].${property}: ${message}`).join('\n');
47
+ const message = errors.map(({ instancePath, message }) => `params${instancePath ?? ''}: ${message}`).join('\n');
32
48
  throw new InvalidParams(message, errors);
33
49
  }
34
50
  return true;
@@ -36,9 +52,9 @@ export class JsonRpcValidator {
36
52
  validateReturn(result) {
37
53
  if (!this.schema.$return)
38
54
  return result === undefined;
39
- const errors = validate(result, this.#return).errors.map(({ propertyName, message }) => ({ property: propertyName ?? '', message: message ?? '' }));
55
+ const { errors } = validate(result, this.schema.$return);
40
56
  if (errors.length > 0) {
41
- const message = errors.map(({ property, message }) => `return.${property}: ${message}`).join('\n');
57
+ const message = errors.map(({ instancePath, message }) => `return.${instancePath ?? ''}: ${message}`).join('\n');
42
58
  throw new InvalidReturn(message, errors);
43
59
  }
44
60
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"JsonRpcValidator.js","sourceRoot":"","sources":["../src/JsonRpcValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JsonRpcValidator.js","sourceRoot":"","sources":["../src/JsonRpcValidator.ts"],"names":[],"mappings":"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"}
@@ -25,8 +25,11 @@ export class NodeWebSocketWrapper {
25
25
  send(data) {
26
26
  this.socket.send(JSON.stringify(data));
27
27
  }
28
- close() {
28
+ detach() {
29
29
  this.socket.off('message', this.#onMessage);
30
+ }
31
+ close() {
32
+ this.detach();
30
33
  this.socket.close();
31
34
  }
32
35
  #onMessage = async (data) => {
@@ -61,13 +64,31 @@ export class BrowserWebSocketWrapper {
61
64
  return this.socket.readyState;
62
65
  }
63
66
  #onMessage = async (ev) => {
64
- this.listener(ev.data);
67
+ const parsed = await this.#parseMessage(ev.data);
68
+ this.listener(parsed);
65
69
  };
70
+ async #parseMessage(data) {
71
+ if (data instanceof ArrayBuffer) {
72
+ return JSON.parse(await new Blob([data]).text());
73
+ }
74
+ try {
75
+ if (typeof data === 'string') {
76
+ return JSON.parse(data);
77
+ }
78
+ }
79
+ catch (e) {
80
+ console.error('failed to parse message', data, e);
81
+ }
82
+ return data;
83
+ }
66
84
  send(data) {
67
85
  this.socket.send(JSON.stringify(data));
68
86
  }
69
- close() {
87
+ detach() {
70
88
  this.socket.removeEventListener('message', this.#onMessage);
89
+ }
90
+ close() {
91
+ this.detach();
71
92
  this.socket.close();
72
93
  }
73
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WebSocketWrapper.js","sourceRoot":"","sources":["../src/WebSocketWrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebSocketWrapper.js","sourceRoot":"","sources":["../src/WebSocketWrapper.ts"],"names":[],"mappings":"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"}
@@ -70,7 +70,7 @@ export class JsonRpcMessagePortClient extends JsonRpcClient {
70
70
  async #receive(event) {
71
71
  if (event.source && event.source !== this.#output)
72
72
  return;
73
- const { data } = event;
73
+ const data = JSON.parse(event.data);
74
74
  if (!isRpcResponse(data)) {
75
75
  console.debug('message is not JsonRpcResponse', data);
76
76
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"JsonRpcMessagePortClient.js","sourceRoot":"","sources":["../../src/client/JsonRpcMessagePortClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JsonRpcMessagePortClient.js","sourceRoot":"","sources":["../../src/client/JsonRpcMessagePortClient.ts"],"names":[],"mappings":"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"}
@@ -49,8 +49,12 @@ export class JsonRpcWebSocketClient extends JsonRpcClient {
49
49
  const promises = new Map(entries);
50
50
  return new ReadableStream({
51
51
  async start(controller) {
52
+ const initialCount = promises.size;
52
53
  controller.enqueue('[');
53
54
  while (promises.size > 0) {
55
+ if (promises.size < initialCount) {
56
+ controller.enqueue(',');
57
+ }
54
58
  const response = await Promise.race(promises.values());
55
59
  controller.enqueue(JSON.stringify(response));
56
60
  promises.delete(response.id);
@@ -1 +1 @@
1
- {"version":3,"file":"JsonRpcWebSocketClient.js","sourceRoot":"","sources":["../../src/client/JsonRpcWebSocketClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JsonRpcWebSocketClient.js","sourceRoot":"","sources":["../../src/client/JsonRpcWebSocketClient.ts"],"names":[],"mappings":"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"}
@@ -11,9 +11,10 @@ export class FileSystemRouter extends JsonRpcRouter {
11
11
  if (!stat.isDirectory())
12
12
  throw new Error(`Not a directory: ${rootDir}`);
13
13
  }
14
- // instanceof だとモジュールが重複した際に問題が派生する
14
+ // instanceof JsonRpcMethodDefinition だと参照先モジュールが複数存在した際に一致しなくなる
15
15
  static #isDefinition(obj) {
16
- return obj && obj.$params instanceof Array;
16
+ const key = obj?.constructor?.method;
17
+ return typeof key === 'symbol' && obj[key] instanceof Function;
17
18
  }
18
19
  #cache = {};
19
20
  async resolveChild(methodPath) {
@@ -37,7 +38,6 @@ export class FileSystemRouter extends JsonRpcRouter {
37
38
  if (FileSystemRouter.#isDefinition(module.default)) {
38
39
  return this.#cache[methodPath] = module.default;
39
40
  }
40
- console.warn(`Ignoring routing without default export as JsonRpcMethodDefinition: ${path}`);
41
41
  }
42
42
  catch (e) {
43
43
  console.error(`Invalid routing: ${path}`, e);
@@ -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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"}
@@ -20,6 +20,14 @@ export function $Expand(source, expand) {
20
20
  ...expand,
21
21
  };
22
22
  }
23
+ export function $Optional(item) {
24
+ return {
25
+ oneOf: [item, false]
26
+ };
27
+ }
28
+ $Optional.is = (item) => {
29
+ return Boolean((item?.oneOf ?? item?.anyOf ?? []).some(i => i === false));
30
+ };
23
31
  export function $And(...allOf) {
24
32
  return {
25
33
  allOf
@@ -1 +1 @@
1
- {"version":3,"file":"Complex.js","sourceRoot":"","sources":["../../src/schemas/Complex.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,KAAK,CAA2C,GAAG,QAAW;IAC1E,OAAO;QACH,IAAI,EAAE,QAAQ;KACR,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAmB,GAAM;IAC9C,OAAO;QACH,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAgB;KAC/B,CAAC;AACf,CAAC;AAED,MAAM,UAAU,WAAW,CAAyC,GAAM;IACtE,OAAO;QACH,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAiB;KAClC,CAAC;AACf,CAAC;AAAA,CAAC;AAEF,MAAM,UAAU,OAAO,CAAyD,MAAW,EAAE,MAAU;IACnG,OAAO;QACH,GAAG,MAAM;QACT,GAAG,MAAM;KACH,CAAC;AACf,CAAC;AAED,MAAM,UAAU,IAAI,CAA+B,GAAG,KAAc;IAChE,OAAO;QACH,KAAK;KACC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,GAAG,CAA+B,GAAG,KAAc;IAC/D,OAAO;QACH,KAAK;KACC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,IAAI,CAA+B,GAAG,KAAc;IAChE,OAAO;QACH,KAAK;KACC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"Complex.js","sourceRoot":"","sources":["../../src/schemas/Complex.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,KAAK,CAA2C,GAAG,QAAW;IAC1E,OAAO;QACH,IAAI,EAAE,QAAQ;KACR,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAmB,GAAM;IAC9C,OAAO;QACH,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAgB;KAC/B,CAAC;AACf,CAAC;AAED,MAAM,UAAU,WAAW,CAAyC,GAAM;IACtE,OAAO;QACH,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAiB;KAClC,CAAC;AACf,CAAC;AAAA,CAAC;AAEF,MAAM,UAAU,OAAO,CAAyD,MAAW,EAAE,MAAU;IACnG,OAAO;QACH,GAAG,MAAM;QACT,GAAG,MAAM;KACH,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAuB,IAAO;IACnD,OAAO;QACH,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;KACd,CAAC;AACf,CAAC;AACD,SAAS,CAAC,EAAE,GAAG,CAAC,IAA0B,EAAW,EAAE;IACnD,OAAO,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,UAAU,IAAI,CAA+B,GAAG,KAAc;IAChE,OAAO;QACH,KAAK;KACC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,GAAG,CAA+B,GAAG,KAAc;IAC/D,OAAO;QACH,KAAK;KACC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,IAAI,CAA+B,GAAG,KAAc;IAChE,OAAO;QACH,KAAK;KACC,CAAC;AACf,CAAC"}
@@ -1,9 +1,4 @@
1
- export function $Optional(item) {
2
- return {
3
- ...item,
4
- optional: true
5
- };
6
- }
1
+ import { $Optional } from "./Complex.js";
7
2
  export function $Array(items) {
8
3
  return {
9
4
  type: 'array',
@@ -13,14 +8,14 @@ export function $Array(items) {
13
8
  export function $Tuple(...items) {
14
9
  return {
15
10
  type: 'array',
16
- items,
17
- minItems: items.lastIndexOf((i) => !i.optional) + 1,
11
+ items: items,
12
+ minItems: items.lastIndexOf((i) => !$Optional.is(i)) + 1,
18
13
  maxItems: items.length,
19
14
  };
20
15
  }
21
16
  export function $Object(properties) {
22
17
  const required = Object.entries(properties)
23
- .filter(([key, value]) => !value?.optional)
18
+ .filter(([key, value]) => !$Optional.is(value))
24
19
  .map(([key]) => key);
25
20
  return {
26
21
  type: 'object',
@@ -1 +1 @@
1
- {"version":3,"file":"Structure.js","sourceRoot":"","sources":["../../src/schemas/Structure.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,SAAS,CAAuB,IAAO;IACnD,OAAO;QACH,GAAG,IAAI;QACP,QAAQ,EAAE,IAAI;KACF,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,MAAM,CAAuB,KAAQ;IACjD,OAAO;QACH,IAAI,EAAE,OAAO;QACb,KAAK;KACC,CAAC;AACf,CAAC;AAID,MAAM,UAAU,MAAM,CAAyB,GAAG,KAAQ;IACtD,OAAO;QACH,IAAI,EAAE,OAAO;QACb,KAAK;QACL,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAsB;QACpF,QAAQ,EAAE,KAAK,CAAC,MAA0B;KACpC,CAAC;AACf,CAAC;AAQD,MAAM,UAAU,OAAO,CAAyB,UAAa;IACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;SACtC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC;SAC1C,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAsB,CAAC;IAC9C,OAAO;QACH,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,QAAQ;QACR,UAAU,EAAE,UAA2B;KACjC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"Structure.js","sourceRoot":"","sources":["../../src/schemas/Structure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,UAAU,MAAM,CAAuB,KAAQ;IACjD,OAAO;QACH,IAAI,EAAE,OAAO;QACb,KAAK;KACC,CAAC;AACf,CAAC;AAOD,MAAM,UAAU,MAAM,CAAyB,GAAG,KAAQ;IACtD,OAAO;QACH,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,KAAU;QACjB,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAiC;QACpG,QAAQ,EAAE,KAAK,CAAC,MAA0B;KACpC,CAAC;AACf,CAAC;AAKD,MAAM,UAAU,OAAO,CAAyB,UAAa;IACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;SACtC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;SAC9C,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAsB,CAAC;IAC9C,OAAO;QACH,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,QAAQ;QACR,UAAU,EAAE,UAAe;KACrB,CAAC;AACf,CAAC"}
@@ -15,7 +15,7 @@ export class JsonRpcWebSocketReceiver extends JsonRpcServer {
15
15
  const response = request instanceof Array
16
16
  ? await Promise.all(request.map(req => this.call(context, req)))
17
17
  : await this.call(context, request);
18
- socket.send(JSON.stringify(response));
18
+ socket.send(response);
19
19
  }
20
20
  ;
21
21
  #sockets = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"JsonRpcWebSocketReceiver.js","sourceRoot":"","sources":["../../src/server/JsonRpcWebSocketReceiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAuC,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5F,MAAM,OAAO,wBAA8B,SAAQ,aAAkB;IACjE,KAAK,CAAC,UAAU,CAAC,OAAY,EAAE,MAAwB,EAAE,IAAsB;QAC3E,MAAM,OAAO,GACP,CAAC,IAAI,YAAY,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChD,CAAC,CAAC,IAAwB;YAC9B,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;gBAChB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC;QAEf,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;YACxD,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GACR,OAAO,YAAY,KAAK;YACtB,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAChE,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC;IAAA,CAAC;IAEO,QAAQ,GAAG,IAAI,GAAG,EAAuC,CAAC;IACnE,KAAK,CAAC,OAAY,EAAE,MAAyB;QACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO;QACtC,MAAM,QAAQ,GAAG,CAAC,IAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACrF,MAAM,OAAO,GAAG,aAAa,CACzB,MAAM,EACN,QAAQ,EACR,CAAC,KAAK,EAAE,EAAE;YACN,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC,CACJ,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,QAAQ,CAAC,MAAyB;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;CACJ"}
1
+ {"version":3,"file":"JsonRpcWebSocketReceiver.js","sourceRoot":"","sources":["../../src/server/JsonRpcWebSocketReceiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAuC,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5F,MAAM,OAAO,wBAA8B,SAAQ,aAAkB;IACjE,KAAK,CAAC,UAAU,CAAC,OAAY,EAAE,MAAwB,EAAE,IAAsB;QAC3E,MAAM,OAAO,GACP,CAAC,IAAI,YAAY,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChD,CAAC,CAAC,IAAwB;YAC9B,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;gBAChB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC;QAEf,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;YACxD,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GACR,OAAO,YAAY,KAAK;YACtB,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAChE,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAAA,CAAC;IAEO,QAAQ,GAAG,IAAI,GAAG,EAAuC,CAAC;IACnE,KAAK,CAAC,OAAY,EAAE,MAAyB;QACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO;QACtC,MAAM,QAAQ,GAAG,CAAC,IAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACrF,MAAM,OAAO,GAAG,aAAa,CACzB,MAAM,EACN,QAAQ,EACR,CAAC,KAAK,EAAE,EAAE;YACN,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC,CACJ,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,QAAQ,CAAC,MAAyB;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;CACJ"}
package/esm/utility.js CHANGED
@@ -36,7 +36,7 @@ export function isRpcResponse(data) {
36
36
  &&
37
37
  data.jsonrpc === '2.0'
38
38
  &&
39
- ('result' in data
39
+ ('id' in data
40
40
  ||
41
41
  'error' in data));
42
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utility.js","sourceRoot":"","sources":["../src/utility.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,QAAQ,CAAI,GAAM;IAC9B,OAAO,IAAI,cAAc,CAAI;QACzB,KAAK,CAAC,UAAU;YACZ,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxB,UAAU,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;KACJ,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAsB;IAClD,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,UAAU;IACtB,OAAO,IAAI,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAyC;IACzE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,EAA2B,CAAC;IAC3C,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,IAAI;YAAE,MAAM;IACpB,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAS;IAClC,OAAO,CACH,IAAI,YAAY,MAAM;;YAEtB,IAAI,CAAC,OAAO,KAAK,KAAK;;YAEtB,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAClC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAS;IACnC,OAAO,CACH,IAAI,YAAY,MAAM;;YAEtB,IAAI,CAAC,OAAO,KAAK,KAAK;;YAEtB,CACI,QAAQ,IAAI,IAAI;;oBAEhB,OAAO,IAAI,IAAI,CAClB,CACJ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"utility.js","sourceRoot":"","sources":["../src/utility.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,QAAQ,CAAI,GAAM;IAC9B,OAAO,IAAI,cAAc,CAAI;QACzB,KAAK,CAAC,UAAU;YACZ,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxB,UAAU,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;KACJ,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAsB;IAClD,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,UAAU;IACtB,OAAO,IAAI,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAyC;IACzE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,EAA2B,CAAC;IAC3C,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,IAAI;YAAE,MAAM;IACpB,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAS;IAClC,OAAO,CACH,IAAI,YAAY,MAAM;;YAEtB,IAAI,CAAC,OAAO,KAAK,KAAK;;YAEtB,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAClC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAS;IACnC,OAAO,CACH,IAAI,YAAY,MAAM;;YAEtB,IAAI,CAAC,OAAO,KAAK,KAAK;;YAEtB,CACI,IAAI,IAAI,IAAI;;oBAEZ,OAAO,IAAI,IAAI,CAClB,CACJ,CAAC;AACN,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xxxaz/json-rpc-schema-typing",
3
- "version": "0.9.11",
3
+ "version": "0.10.0",
4
4
  "description": "",
5
5
  "author": "xxx Inc.",
6
6
  "license": "MIT",
@@ -51,18 +51,19 @@
51
51
  },
52
52
  "dependencies": {
53
53
  "@types/json-schema": "^7.0.15",
54
- "@types/ws": "^8.5.13",
55
- "@xxxaz/stream-api-json": "^1.0.1",
54
+ "@types/node": "^22.0.0",
55
+ "@types/ws": "^8.18.1",
56
+ "@xxxaz/stream-api-json": "^1.0.2",
56
57
  "ajv": "^8.17.1",
57
- "json-schema-to-ts": "^3.1.0",
58
- "yaml": "^2.4.5",
59
- "ws": "^8.18.0"
58
+ "json-schema-to-ts": "^3.1.1",
59
+ "ws": "^8.18.2",
60
+ "yaml": "^2.8.0"
60
61
  },
61
62
  "devDependencies": {
62
- "@types/jest": "^29.5.12",
63
+ "@types/jest": "^29.5.14",
63
64
  "jest": "^29.7.0",
64
- "ts-jest": "^29.1.5",
65
+ "ts-jest": "^29.3.4",
65
66
  "ts-node": "^10.9.2",
66
- "typescript": "^5.5.2"
67
+ "typescript": "^5.8.3"
67
68
  }
68
69
  }
@@ -1,20 +1,29 @@
1
- import { type FromSchema } from 'json-schema-to-ts';
2
- import { type JSONSchema } from "./types.js";
3
- export interface JsonRpcMethodSchema<PrmSch extends readonly JSONSchema[], RtnSch extends JSONSchema | undefined> {
1
+ import { type JSONSchema, type FromSchema } from "./types.js";
2
+ type ByPositionSchema = {
3
+ readonly type: 'array';
4
+ readonly items: readonly JSONSchema[];
5
+ };
6
+ type ObjectProperties = {
7
+ readonly [key: string]: JSONSchema;
8
+ };
9
+ type ByNameSchema = {
10
+ readonly type: 'object';
11
+ readonly properties: ObjectProperties;
12
+ };
13
+ export type ParameterSchema = ByPositionSchema | ByNameSchema | undefined;
14
+ export interface JsonRpcMethodSchema<PrmSch extends ParameterSchema, RtnSch extends JSONSchema | undefined> {
4
15
  readonly $params: PrmSch;
5
16
  readonly $return?: RtnSch;
6
17
  }
7
- export type Params<Schema> = Schema extends readonly [JSONSchema, ...infer Rmn] ? (Schema[0] extends {
8
- optional: true;
9
- } ? [p?: FromSchema<Schema[0]>, ...Params<Rmn>] : [FromSchema<Schema[0]>, ...Params<Rmn>]) : Schema extends readonly [] ? [] : never;
18
+ export type Params<Schema> = Schema extends ByPositionSchema ? FromSchema<Schema> : Schema extends ByNameSchema ? [FromSchema<Schema>] : Schema extends undefined ? [] : never;
10
19
  export type Return<Schema> = Schema extends undefined ? void : Schema extends JSONSchema ? FromSchema<Schema> : never;
11
- export type JsonRpcMethod<Context, PrmSch extends readonly JSONSchema[], RtnSch extends JSONSchema | undefined> = (this: Context, ...params: Params<PrmSch>) => Promise<Return<RtnSch>> | Return<RtnSch>;
20
+ export type JsonRpcMethod<Context, PrmSch extends ParameterSchema, RtnSch extends JSONSchema | undefined> = (this: Context, ...params: Params<PrmSch>) => Promise<Return<RtnSch>> | Return<RtnSch>;
12
21
  type ContextClass<Ctx> = {
13
22
  new (...args: any[]): Ctx;
14
23
  };
15
24
  type Context<Cls, FB> = Cls extends ContextClass<infer Ctx> ? Ctx : FB;
16
25
  declare const methodKey: unique symbol;
17
- export declare class JsonRpcMethodDefinition<Context, PrmSch extends readonly JSONSchema[], RtnSch extends JSONSchema | undefined> implements JsonRpcMethodSchema<PrmSch, RtnSch> {
26
+ export declare class JsonRpcMethodDefinition<Context, PrmSch extends ParameterSchema, RtnSch extends JSONSchema | undefined> implements JsonRpcMethodSchema<PrmSch, RtnSch> {
18
27
  readonly $params: PrmSch;
19
28
  readonly $return: RtnSch;
20
29
  readonly $contextClass?: ContextClass<Context> | undefined;
@@ -22,16 +31,37 @@ export declare class JsonRpcMethodDefinition<Context, PrmSch extends readonly JS
22
31
  readonly [methodKey]: JsonRpcMethod<Context, PrmSch, RtnSch>;
23
32
  constructor(method: JsonRpcMethod<Context, PrmSch, RtnSch>, $params: PrmSch, $return: RtnSch, $contextClass?: ContextClass<Context> | undefined);
24
33
  apply(ctx: Context, params: Params<PrmSch>): Return<RtnSch> | Promise<Return<RtnSch>>;
25
- static get builder(): DefinitionBuilder<undefined, never[], undefined>;
34
+ static get builder(): DefinitionBuilder<undefined, undefined, undefined>;
26
35
  }
27
- declare class DefinitionBuilder<CtxCls extends ContextClass<any> | undefined, PrmSch extends readonly JSONSchema[], RtnSch extends JSONSchema | undefined> implements JsonRpcMethodSchema<PrmSch, RtnSch> {
36
+ declare class DefinitionBuilder<CtxCls extends ContextClass<any> | undefined, PrmSch extends ParameterSchema, RtnSch extends JSONSchema | undefined> implements JsonRpcMethodSchema<PrmSch, RtnSch> {
28
37
  readonly $contextClass: CtxCls;
29
38
  readonly $params: PrmSch;
30
39
  readonly $return: RtnSch;
31
40
  constructor($contextClass: CtxCls, $params: PrmSch, $return: RtnSch);
32
41
  define<Ctx = {}>(method: JsonRpcMethod<Context<CtxCls, Ctx>, PrmSch, RtnSch>): JsonRpcMethodDefinition<Context<CtxCls, Ctx>, PrmSch, RtnSch>;
33
42
  contextClass<CtxCls extends ContextClass<any>>(contextClass: CtxCls): DefinitionBuilder<CtxCls, PrmSch, RtnSch>;
34
- paramsSchema<NewPrm extends readonly JSONSchema[]>(...params: NewPrm): DefinitionBuilder<CtxCls, NewPrm, RtnSch>;
43
+ params<NewPrm extends ParameterSchema>(params: NewPrm): DefinitionBuilder<CtxCls, NewPrm, RtnSch>;
44
+ paramsByName<NewPrm extends ObjectProperties>(params: NewPrm): DefinitionBuilder<CtxCls, {
45
+ readonly type: "object";
46
+ readonly additionalProperties: false;
47
+ readonly required: [Exclude<keyof NewPrm, Exclude<{ [K in keyof NewPrm]: import("./types.js").IsOptional<NewPrm[K], K, never>; }[keyof NewPrm], undefined>>];
48
+ readonly properties: NewPrm;
49
+ }, RtnSch>;
50
+ paramsByPosition<NewPrm extends readonly JSONSchema[]>(...params: NewPrm): DefinitionBuilder<CtxCls, {
51
+ readonly type: "array";
52
+ readonly items: [...NewPrm];
53
+ readonly minItems: import("./schemas/Structure.js").ExcludeOptional<[...NewPrm]>["length"];
54
+ readonly maxItems: import("./types.js").Max<[...NewPrm]["length"]>;
55
+ }, RtnSch>;
56
+ return<NewRtn extends JSONSchema | undefined>(rtn: NewRtn): DefinitionBuilder<CtxCls, PrmSch, NewRtn>;
57
+ /** @deprecated paramsByPosition を使用してください */
58
+ paramsSchema<NewPrm extends readonly JSONSchema[]>(...params: NewPrm): DefinitionBuilder<CtxCls, {
59
+ readonly type: "array";
60
+ readonly items: [...NewPrm];
61
+ readonly minItems: import("./schemas/Structure.js").ExcludeOptional<[...NewPrm]>["length"];
62
+ readonly maxItems: import("./types.js").Max<[...NewPrm]["length"]>;
63
+ }, RtnSch>;
64
+ /** @deprecated return を使用してください */
35
65
  returnSchema<NewRtn extends JSONSchema | undefined>(rtn: NewRtn): DefinitionBuilder<CtxCls, PrmSch, NewRtn>;
36
66
  }
37
67
  export {};
@@ -1,8 +1,10 @@
1
- import { JsonRpcMethodSchema, Params, Return } from "./JsonRpcMethod.js";
1
+ import { JsonRpcMethodSchema, Return } from "./JsonRpcMethod.js";
2
+ import { FromSchema } from 'json-schema-to-ts';
3
+ type ParamType<Sch extends JsonRpcMethodSchema<any, any>> = Sch['$params'] extends object ? FromSchema<Sch['$params']> : undefined;
2
4
  export declare class JsonRpcValidator<Sch extends JsonRpcMethodSchema<any, any>> {
3
- #private;
4
5
  readonly schema: Sch;
5
6
  constructor(schema: Sch);
6
- validateParams(params: unknown[]): params is Params<Sch['$params']>;
7
+ validateParams(params: unknown): params is ParamType<Sch>;
7
8
  validateReturn(result: unknown): result is Return<Sch['$return']>;
8
9
  }
10
+ export {};
@@ -17,6 +17,7 @@ export interface WebSocketWrapper<Socket extends WrapableWebSocket = WrapableWeb
17
17
  readonly listener: SocketListener;
18
18
  readonly readyState: WebSocketState;
19
19
  send(data: JsonSerializable): void;
20
+ detach(): void;
20
21
  close(): void;
21
22
  }
22
23
  export declare class NodeWebSocketWrapper implements WebSocketWrapper<NodeWebSocket> {
@@ -27,6 +28,7 @@ export declare class NodeWebSocketWrapper implements WebSocketWrapper<NodeWebSoc
27
28
  constructor(socket: NodeWebSocket, listener: SocketListener, closedListener: ScokcetClosedListener);
28
29
  get readyState(): WebSocketState;
29
30
  send(data: JsonSerializable): void;
31
+ detach(): void;
30
32
  close(): void;
31
33
  }
32
34
  export declare class BrowserWebSocketWrapper implements WebSocketWrapper<WebSocket> {
@@ -37,6 +39,7 @@ export declare class BrowserWebSocketWrapper implements WebSocketWrapper<WebSock
37
39
  constructor(socket: WebSocket, listener: SocketListener, closedListener: ScokcetClosedListener);
38
40
  get readyState(): WebSocketState;
39
41
  send(data: JsonSerializable): void;
42
+ detach(): void;
40
43
  close(): void;
41
44
  }
42
45
  export {};
@@ -1,4 +1,4 @@
1
- import { JsonRpcMethodSchema, Params, Return } from "../JsonRpcMethod.js";
1
+ import { JsonRpcMethodSchema, ParameterSchema, Params, Return } from "../JsonRpcMethod.js";
2
2
  import { type JsonRpcSchema } from "../router/JsonRpcRouter.js";
3
3
  import { JsonRpcRequest, JsonRpcResponse } from "../types.js";
4
4
  type PostRpc = (request: ReadableStream<string>) => Promise<ReadableStream<string>>;
@@ -12,7 +12,7 @@ type JsonRpcClientOptions<Sch extends JsonRpcSchema> = {
12
12
  declare const $generateId: unique symbol;
13
13
  declare const $requestStack: unique symbol;
14
14
  declare const $methodPath: unique symbol;
15
- type TriggerFunction<ParamSch extends ReadonlyArray<any>, RtnSch> = {
15
+ type TriggerFunction<ParamSch extends ParameterSchema, RtnSch> = {
16
16
  (...args: Params<ParamSch>): Promise<Return<RtnSch>>;
17
17
  notice(...args: Params<ParamSch>): void;
18
18
  };
@@ -1,7 +1,7 @@
1
1
  import { JsonSerializable } from "@xxxaz/stream-api-json";
2
- import { JsonRpcMethodDefinition, JsonRpcMethodSchema, Params, Return } from "../JsonRpcMethod.js";
3
- type AsyncFunction<P, R> = (...params: Params<P>) => Promise<Return<R>>;
4
- type NoticeFunction<Prm> = (...params: Params<Prm>) => void;
2
+ import { JsonRpcMethodDefinition, JsonRpcMethodSchema, ParameterSchema, Params, Return } from "../JsonRpcMethod.js";
3
+ type AsyncFunction<P, R> = P extends ParameterSchema ? (...params: Params<P>) => Promise<Return<R>> : never;
4
+ type NoticeFunction<P> = P extends ParameterSchema ? (...params: Params<P>) => void : never;
5
5
  export declare abstract class JsonRpcRouter<Context = {}> {
6
6
  abstract resolve(methodPath: string): Promise<JsonRpcRouter<Context> | JsonRpcMethodDefinition<Context, any, any> | null>;
7
7
  abstract resolveChild(methodPath: string): Promise<JsonRpcRouter<Context> | JsonRpcMethodDefinition<Context, any, any> | null>;
@@ -12,6 +12,12 @@ export declare function $EnumValues<T extends {
12
12
  readonly enum: [T[keyof T]];
13
13
  };
14
14
  export declare function $Expand<Src extends JSONSchema, Ex extends Partial<JSONSchema>>(source: Src, expand: Ex): Src & Ex;
15
+ export declare function $Optional<T extends JSONSchema>(item: T): {
16
+ readonly oneOf: readonly [T, false];
17
+ };
18
+ export declare namespace $Optional {
19
+ var is: (item: JSONSchema | undefined) => boolean;
20
+ }
15
21
  export declare function $And<Schemas extends JSONSchema[]>(...allOf: Schemas): {
16
22
  readonly allOf: Schemas;
17
23
  };
@@ -1,27 +1,22 @@
1
- import { IsOptional, JSONSchema, Max, RequiredKeys } from "../types.js";
2
- export declare function $Optional<T extends JSONSchema>(item: T): T | undefined;
1
+ import { IsOptionalSchema, JSONSchema, Max, RequiredKeys } from "../types.js";
3
2
  export declare function $Array<T extends JSONSchema>(items: T): {
4
3
  readonly type: "array";
5
4
  readonly items: T;
6
5
  };
7
- type ExcludeUndefined<T extends any[]> = T extends [...infer A, infer L] ? IsOptional<L, ExcludeUndefined<A>, T> : T;
8
- type RequiredLength<T extends any[]> = ExcludeUndefined<[...T, undefined]>['length'];
6
+ export type ExcludeOptional<T extends any[]> = T extends [...infer A, infer L] ? IsOptionalSchema<L, ExcludeOptional<A>, T> : T;
9
7
  export declare function $Tuple<T extends JSONSchema[]>(...items: T): {
10
8
  readonly type: "array";
11
9
  readonly items: T;
12
- readonly minItems: RequiredLength<T>;
10
+ readonly minItems: ExcludeOptional<T>["length"];
13
11
  readonly maxItems: Max<T["length"]>;
14
12
  };
15
13
  type ObjectDefine = {
16
- [key: string]: JSONSchema | undefined;
17
- };
18
- type Properties<T extends ObjectDefine> = {
19
- [K in keyof T]: Exclude<T[K], undefined>;
14
+ [key: string]: JSONSchema;
20
15
  };
21
16
  export declare function $Object<T extends ObjectDefine>(properties: T): {
22
17
  readonly type: "object";
23
18
  readonly additionalProperties: false;
24
19
  readonly required: [RequiredKeys<T>];
25
- readonly properties: Properties<T>;
20
+ readonly properties: T;
26
21
  };
27
22
  export {};
package/types/types.d.ts CHANGED
@@ -1,8 +1,23 @@
1
- import { type JSONSchema as ToTsSchema } from 'json-schema-to-ts';
1
+ import { FromSchema as ToTsFromSchema, type JSONSchema as ToTsSchema } from 'json-schema-to-ts';
2
2
  import { type JsonSerializable } from "@xxxaz/stream-api-json";
3
- export type JSONSchema = ToTsSchema & object & {
4
- optional?: boolean;
3
+ export type TupleSchema<T extends JSONSchema[]> = {
4
+ type: 'array';
5
+ items: T;
6
+ minItems: number;
7
+ maxItems: number;
5
8
  };
9
+ export type IsOptionalSchema<Sch, T, F> = false extends (Sch extends {
10
+ oneOf: readonly ToTsSchema[];
11
+ } ? Sch['oneOf'][number] : never) ? T : F;
12
+ type FromTuples<Schemas> = Schemas extends [infer Head extends JSONSchema, ...infer Tail] ? (IsOptionalSchema<Head, [
13
+ t?: ToTsFromSchema<Head>,
14
+ ...FromTuples<Tail>
15
+ ], [
16
+ ToTsFromSchema<Head>,
17
+ ...FromTuples<Tail>
18
+ ]>) : [];
19
+ export type FromSchema<T extends JSONSchema> = (T extends TupleSchema<infer U> ? FromTuples<U> : ToTsFromSchema<T>) | IsOptionalSchema<T, undefined, never>;
20
+ export type JSONSchema = ToTsSchema & object;
6
21
  export type JsonRpcRequest = {
7
22
  jsonrpc: '2.0';
8
23
  id?: number | string;