@xxxaz/json-rpc-schema-typing 0.8.9 → 0.9.1

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 (143) hide show
  1. package/README.md +1 -1
  2. package/cjs/JsonRpcException.js +69 -14
  3. package/cjs/JsonRpcException.js.map +1 -1
  4. package/cjs/JsonRpcMethod.js +0 -31
  5. package/cjs/JsonRpcMethod.js.map +1 -1
  6. package/cjs/JsonRpcValidator.js +51 -0
  7. package/cjs/JsonRpcValidator.js.map +1 -0
  8. package/cjs/WebSocketWrapper.js +80 -0
  9. package/cjs/WebSocketWrapper.js.map +1 -0
  10. package/cjs/client/JsonRpcClient.js +205 -0
  11. package/cjs/client/JsonRpcClient.js.map +1 -0
  12. package/cjs/client/JsonRpcHttpClient.js +52 -0
  13. package/cjs/client/JsonRpcHttpClient.js.map +1 -0
  14. package/cjs/client/JsonRpcMessagePortClient.js +95 -0
  15. package/cjs/client/JsonRpcMessagePortClient.js.map +1 -0
  16. package/cjs/client/JsonRpcWebSocketClient.js +117 -0
  17. package/cjs/client/JsonRpcWebSocketClient.js.map +1 -0
  18. package/cjs/{helpers → client}/index.js +1 -2
  19. package/cjs/client/index.js.map +1 -0
  20. package/cjs/index.js +3 -3
  21. package/cjs/index.js.map +1 -1
  22. package/cjs/router/FileSystemRouter.js +96 -0
  23. package/cjs/router/FileSystemRouter.js.map +1 -0
  24. package/cjs/router/JsonRpcRouter.js +35 -0
  25. package/cjs/router/JsonRpcRouter.js.map +1 -0
  26. package/cjs/router/StaticRouter.js +49 -0
  27. package/cjs/router/StaticRouter.js.map +1 -0
  28. package/cjs/router/hashObject.js +34 -0
  29. package/cjs/router/hashObject.js.map +1 -0
  30. package/cjs/router/index.js +20 -0
  31. package/cjs/router/index.js.map +1 -0
  32. package/cjs/schemas/Complex.js +7 -0
  33. package/cjs/schemas/Complex.js.map +1 -1
  34. package/cjs/schemas/Structure.js +5 -1
  35. package/cjs/schemas/Structure.js.map +1 -1
  36. package/cjs/server/JsonRpcHttpReceiver.js +109 -0
  37. package/cjs/server/JsonRpcHttpReceiver.js.map +1 -0
  38. package/cjs/server/JsonRpcMessagePortReceiver.js +65 -0
  39. package/cjs/server/JsonRpcMessagePortReceiver.js.map +1 -0
  40. package/cjs/{JsonRpcServer.js → server/JsonRpcServer.js} +7 -9
  41. package/cjs/server/JsonRpcServer.js.map +1 -0
  42. package/cjs/server/JsonRpcWebSocketReceiver.js +42 -0
  43. package/cjs/server/JsonRpcWebSocketReceiver.js.map +1 -0
  44. package/cjs/server/index.js +19 -0
  45. package/cjs/server/index.js.map +1 -0
  46. package/cjs/utility.js +51 -0
  47. package/cjs/utility.js.map +1 -0
  48. package/esm/JsonRpcException.js +41 -13
  49. package/esm/JsonRpcException.js.map +1 -1
  50. package/esm/JsonRpcMethod.js +1 -32
  51. package/esm/JsonRpcMethod.js.map +1 -1
  52. package/esm/JsonRpcValidator.js +47 -0
  53. package/esm/JsonRpcValidator.js.map +1 -0
  54. package/esm/WebSocketWrapper.js +74 -0
  55. package/esm/WebSocketWrapper.js.map +1 -0
  56. package/esm/client/JsonRpcClient.js +201 -0
  57. package/esm/client/JsonRpcClient.js.map +1 -0
  58. package/esm/client/JsonRpcHttpClient.js +48 -0
  59. package/esm/client/JsonRpcHttpClient.js.map +1 -0
  60. package/esm/client/JsonRpcMessagePortClient.js +91 -0
  61. package/esm/client/JsonRpcMessagePortClient.js.map +1 -0
  62. package/esm/client/JsonRpcWebSocketClient.js +113 -0
  63. package/esm/client/JsonRpcWebSocketClient.js.map +1 -0
  64. package/esm/client/index.js +2 -0
  65. package/esm/client/index.js.map +1 -0
  66. package/esm/index.js +3 -3
  67. package/esm/index.js.map +1 -1
  68. package/esm/router/FileSystemRouter.js +69 -0
  69. package/esm/router/FileSystemRouter.js.map +1 -0
  70. package/esm/router/JsonRpcRouter.js +31 -0
  71. package/esm/router/JsonRpcRouter.js.map +1 -0
  72. package/esm/router/StaticRouter.js +45 -0
  73. package/esm/router/StaticRouter.js.map +1 -0
  74. package/esm/router/hashObject.js +31 -0
  75. package/esm/router/hashObject.js.map +1 -0
  76. package/esm/router/index.js +4 -0
  77. package/esm/router/index.js.map +1 -0
  78. package/esm/schemas/Complex.js +6 -0
  79. package/esm/schemas/Complex.js.map +1 -1
  80. package/esm/schemas/Structure.js +4 -1
  81. package/esm/schemas/Structure.js.map +1 -1
  82. package/esm/server/JsonRpcHttpReceiver.js +104 -0
  83. package/esm/server/JsonRpcHttpReceiver.js.map +1 -0
  84. package/esm/server/JsonRpcMessagePortReceiver.js +61 -0
  85. package/esm/server/JsonRpcMessagePortReceiver.js.map +1 -0
  86. package/esm/{JsonRpcServer.js → server/JsonRpcServer.js} +7 -9
  87. package/esm/server/JsonRpcServer.js.map +1 -0
  88. package/esm/server/JsonRpcWebSocketReceiver.js +38 -0
  89. package/esm/server/JsonRpcWebSocketReceiver.js.map +1 -0
  90. package/esm/server/index.js +3 -0
  91. package/esm/server/index.js.map +1 -0
  92. package/esm/utility.js +43 -0
  93. package/esm/utility.js.map +1 -0
  94. package/package.json +6 -3
  95. package/types/JsonRpcException.d.ts +18 -1
  96. package/types/JsonRpcMethod.d.ts +4 -4
  97. package/types/JsonRpcValidator.d.ts +8 -0
  98. package/types/WebSocketWrapper.d.ts +42 -0
  99. package/types/client/JsonRpcClient.d.ts +47 -0
  100. package/types/client/JsonRpcHttpClient.d.ts +19 -0
  101. package/types/client/JsonRpcMessagePortClient.d.ts +21 -0
  102. package/types/client/JsonRpcWebSocketClient.d.ts +16 -0
  103. package/types/client/index.d.ts +1 -0
  104. package/types/index.d.ts +3 -3
  105. package/types/router/FileSystemRouter.d.ts +10 -0
  106. package/types/{JsonRpcRouter.d.ts → router/JsonRpcRouter.d.ts} +10 -12
  107. package/types/router/StaticRouter.d.ts +14 -0
  108. package/types/router/hashObject.d.ts +2 -0
  109. package/types/router/index.d.ts +3 -0
  110. package/types/schemas/Complex.d.ts +6 -0
  111. package/types/schemas/Structure.d.ts +12 -6
  112. package/types/server/JsonRpcHttpReceiver.d.ts +20 -0
  113. package/types/server/JsonRpcMessagePortReceiver.d.ts +13 -0
  114. package/types/{JsonRpcServer.d.ts → server/JsonRpcServer.d.ts} +2 -2
  115. package/types/server/JsonRpcWebSocketReceiver.d.ts +7 -0
  116. package/types/server/index.d.ts +2 -0
  117. package/types/types.d.ts +24 -1
  118. package/types/utility.d.ts +8 -0
  119. package/cjs/JsonRpcClient.js +0 -7
  120. package/cjs/JsonRpcClient.js.map +0 -1
  121. package/cjs/JsonRpcRouter.js +0 -3
  122. package/cjs/JsonRpcRouter.js.map +0 -1
  123. package/cjs/JsonRpcServer.js.map +0 -1
  124. package/cjs/helpers/dynamicRouting.js +0 -77
  125. package/cjs/helpers/dynamicRouting.js.map +0 -1
  126. package/cjs/helpers/index.js.map +0 -1
  127. package/cjs/helpers/serveHttp.js +0 -44
  128. package/cjs/helpers/serveHttp.js.map +0 -1
  129. package/esm/JsonRpcClient.js +0 -3
  130. package/esm/JsonRpcClient.js.map +0 -1
  131. package/esm/JsonRpcRouter.js +0 -2
  132. package/esm/JsonRpcRouter.js.map +0 -1
  133. package/esm/JsonRpcServer.js.map +0 -1
  134. package/esm/helpers/dynamicRouting.js +0 -49
  135. package/esm/helpers/dynamicRouting.js.map +0 -1
  136. package/esm/helpers/index.js +0 -3
  137. package/esm/helpers/index.js.map +0 -1
  138. package/esm/helpers/serveHttp.js +0 -41
  139. package/esm/helpers/serveHttp.js.map +0 -1
  140. package/types/JsonRpcClient.d.ts +0 -2
  141. package/types/helpers/dynamicRouting.d.ts +0 -14
  142. package/types/helpers/index.d.ts +0 -2
  143. package/types/helpers/serveHttp.d.ts +0 -3
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # json-rpc-schema-typing
2
2
 
3
3
  ### TODO
4
- - Client
4
+ - JWT対応
5
5
  - ドキュメント生成
6
6
  - npm CommonJSパッケージの整理
@@ -1,21 +1,50 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ServerError = exports.InvalidReturn = exports.InvalidContext = exports.InternalError = exports.InvalidParams = exports.MethodNotFound = exports.InvalidRequest = exports.ParseError = exports.JsonRpcException = void 0;
4
- const defined = new Map();
5
- function defineExceptions(classes) {
6
- Object.entries(classes).forEach(([name, cls]) => {
7
- if (!defined.has(cls))
8
- defined.set(cls, name);
9
- });
10
- }
26
+ exports.WebSocketConnectionError = exports.ClientHttpError = exports.ClientUncaughtError = exports.ResponseUncaughtError = exports.ServerError = exports.InvalidReturn = exports.InvalidContext = exports.InternalError = exports.InvalidParams = exports.MethodNotFound = exports.InvalidRequest = exports.ParseError = exports.JsonRpcException = void 0;
27
+ const InitialDefinedErros = __importStar(require("./JsonRpcException.js"));
11
28
  class JsonRpcException extends Error {
12
- static deserialize({ code, message, data }) {
13
- for (const cls of defined.keys()) {
29
+ static #defined = new Map();
30
+ static defineExceptions(classes) {
31
+ Object.entries(classes).forEach(([name, cls]) => {
32
+ if (!JsonRpcException.isPrototypeOf(cls))
33
+ return;
34
+ const ex = cls;
35
+ if (!this.#defined.has(ex) && ex.code) {
36
+ this.#defined.set(ex, name);
37
+ }
38
+ });
39
+ }
40
+ static deserialize(error) {
41
+ const { code, message, data } = error;
42
+ for (const cls of this.#defined.keys()) {
14
43
  if (cls.code !== code)
15
44
  continue;
16
45
  return new cls(message, data);
17
46
  }
18
- return null;
47
+ return new ResponseUncaughtError(error);
19
48
  }
20
49
  constructor(message, data) {
21
50
  if (!message)
@@ -25,7 +54,7 @@ class JsonRpcException extends Error {
25
54
  }
26
55
  data;
27
56
  get name() {
28
- return defined.get(this.constructor)
57
+ return JsonRpcException.#defined.get(this.constructor)
29
58
  ?? this.constructor.name;
30
59
  }
31
60
  get code() {
@@ -74,7 +103,6 @@ exports.InvalidContext = InvalidContext;
74
103
  class InvalidReturn extends InternalError {
75
104
  }
76
105
  exports.InvalidReturn = InvalidReturn;
77
- defineExceptions({ ParseError, InvalidRequest, MethodNotFound, InvalidParams, InvalidContext, InvalidReturn, InternalError });
78
106
  /**
79
107
  *
80
108
  * @property {number} code define to between -32000 to -32099
@@ -89,8 +117,35 @@ class ServerError extends JsonRpcException {
89
117
  throw new Error(`Defined ServerError code must be between -32000 to -32099 (${name} ${cls.code})`);
90
118
  }
91
119
  });
92
- defineExceptions(classes);
120
+ JsonRpcException.defineExceptions(classes);
93
121
  }
94
122
  }
95
123
  exports.ServerError = ServerError;
124
+ class ResponseUncaughtError extends JsonRpcException {
125
+ error;
126
+ constructor(error) {
127
+ super(error.message ?? 'Uncaught Error', error.data);
128
+ this.error = error;
129
+ }
130
+ }
131
+ exports.ResponseUncaughtError = ResponseUncaughtError;
132
+ class ClientUncaughtError extends JsonRpcException {
133
+ constructor(message, data) {
134
+ super(message, data);
135
+ }
136
+ }
137
+ exports.ClientUncaughtError = ClientUncaughtError;
138
+ class ClientHttpError extends JsonRpcException {
139
+ constructor(message, data) {
140
+ super(message, data);
141
+ }
142
+ }
143
+ exports.ClientHttpError = ClientHttpError;
144
+ class WebSocketConnectionError extends JsonRpcException {
145
+ constructor(message, data) {
146
+ super(message, data);
147
+ }
148
+ }
149
+ exports.WebSocketConnectionError = WebSocketConnectionError;
150
+ JsonRpcException.defineExceptions(InitialDefinedErros);
96
151
  //# sourceMappingURL=JsonRpcException.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"JsonRpcException.js","sourceRoot":"","sources":["../src/JsonRpcException.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JsonRpcException.js","sourceRoot":"","sources":["../src/JsonRpcException.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.JsonRpcMethodDefinition = void 0;
4
- const ajv_1 = require("ajv");
5
4
  const JsonRpcException_js_1 = require("./JsonRpcException.js");
6
- function validate(data, schema) {
7
- const ajv = new ajv_1.Ajv();
8
- const validate = ajv.compile(schema);
9
- const valid = validate(data);
10
- return {
11
- valid,
12
- errors: validate.errors ?? []
13
- };
14
- }
15
5
  const methodKey = Symbol('JsonRpcMethodDefinition.method');
16
6
  class JsonRpcMethodDefinition {
17
7
  $params;
@@ -32,27 +22,6 @@ class JsonRpcMethodDefinition {
32
22
  }
33
23
  return this[methodKey].apply(ctx, params);
34
24
  }
35
- validateParams(params) {
36
- const errors = this.$params
37
- .map((schema, index) => validate(params[index], schema))
38
- .map(({ errors }, argument) => errors.map(({ propertyName, message }) => ({ argument, property: propertyName ?? '', message: message ?? '' })))
39
- .flat();
40
- if (errors.length > 0) {
41
- const message = errors.map(({ argument, property, message }) => `args[${argument}].${property}: ${message}`).join('\n');
42
- throw new JsonRpcException_js_1.InvalidParams(message, errors);
43
- }
44
- return true;
45
- }
46
- validateReturn(result) {
47
- if (!this.$return)
48
- return result === undefined;
49
- const errors = validate(result, this.$return).errors.map(({ propertyName, message }) => ({ property: propertyName ?? '', message: message ?? '' }));
50
- if (errors.length > 0) {
51
- const message = errors.map(({ property, message }) => `return.${property}: ${message}`).join('\n');
52
- throw new JsonRpcException_js_1.InvalidReturn(message, errors);
53
- }
54
- return true;
55
- }
56
25
  static get builder() {
57
26
  return new DefinitionBuilder(undefined, [], undefined);
58
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"JsonRpcMethod.js","sourceRoot":"","sources":["../src/JsonRpcMethod.ts"],"names":[],"mappings":";;;AAAA,6BAA0B;AAG1B,+DAAqF;AAErF,SAAS,QAAQ,CAAC,IAAa,EAAE,MAAkB;IAC/C,MAAM,GAAG,GAAG,IAAI,SAAG,EAAE,CAAC;IACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO;QACH,KAAK;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE;KAChC,CAAC;AACN,CAAC;AA0BD,MAAM,SAAS,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;AAC3D,MAAa,uBAAuB;IAMnB;IACA;IACA;IAPb,MAAM,CAAU,MAAM,GAAqB,SAAS,CAAC;IAC5C,CAAC,SAAS,CAAC,CAAyC;IAE7D,YACI,MAA8C,EACrC,OAAe,EACf,OAAe,EACf,aAAqC;QAFrC,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAQ;QACf,kBAAa,GAAb,aAAa,CAAwB;QAE9C,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,GAAY,EAAE,MAAsB;QACtC,IAAG,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAC5D,MAAM,aAAa,GAAI,GAAW,EAAE,WAAW,EAAE,IAAI,IAAI,OAAO,GAAG,CAAC;YACpE,MAAM,IAAI,oCAAc,CAAC,6BAA6B,IAAI,CAAC,aAAa,CAAC,IAAI,YAAY,aAAa,EAAE,CAAC,CAAC;QAC9G,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,cAAc,CAAC,MAAiB;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;aACtB,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAQ,EAAE,MAAM,CAAC,CAAC;aAC9D,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;aAC9I,IAAI,EAAE,CAAC;QACZ,IAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,QAAQ,QAAQ,KAAK,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxH,MAAM,IAAI,mCAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,MAAe;QAC1B,IAAG,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,MAAM,KAAK,SAAS,CAAC;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3J,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,UAAU,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnG,MAAM,IAAI,mCAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,OAAO;QACd,OAAO,IAAI,iBAAiB,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;IAC3D,CAAC;;AA7CL,0DA8CC;AAED,MAAM,iBAAiB;IAEN;IACA;IACA;IAHb,YACa,aAAqB,EACrB,OAAe,EACf,OAAe;QAFf,kBAAa,GAAb,aAAa,CAAQ;QACrB,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAQ;IACzB,CAAC;IAEJ,MAAM,CAAW,MAA2D;QACxE,OAAO,IAAI,uBAAuB,CAAuC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACrI,CAAC;IAED,YAAY,CAAmC,YAAoB;QAC/D,OAAO,IAAI,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED,YAAY,CAAuC,GAAG,MAAc;QAChE,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED,YAAY,CAAsC,GAAW;QACzD,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACxE,CAAC;CACJ"}
1
+ {"version":3,"file":"JsonRpcMethod.js","sourceRoot":"","sources":["../src/JsonRpcMethod.ts"],"names":[],"mappings":";;;AAEA,+DAAuD;AA8BvD,MAAM,SAAS,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;AAC3D,MAAa,uBAAuB;IAMnB;IACA;IACA;IAPb,MAAM,CAAU,MAAM,GAAqB,SAAS,CAAC;IAC5C,CAAC,SAAS,CAAC,CAAyC;IAE7D,YACI,MAA8C,EACrC,OAAe,EACf,OAAe,EACf,aAAqC;QAFrC,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAQ;QACf,kBAAa,GAAb,aAAa,CAAwB;QAE9C,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,GAAY,EAAE,MAAsB;QACtC,IAAG,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAC5D,MAAM,aAAa,GAAI,GAAW,EAAE,WAAW,EAAE,IAAI,IAAI,OAAO,GAAG,CAAC;YACpE,MAAM,IAAI,oCAAc,CAAC,6BAA6B,IAAI,CAAC,aAAa,CAAC,IAAI,YAAY,aAAa,EAAE,CAAC,CAAC;QAC9G,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,OAAO;QACd,OAAO,IAAI,iBAAiB,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;IAC3D,CAAC;;AAvBL,0DAwBC;AAED,MAAM,iBAAiB;IAEN;IACA;IACA;IAHb,YACa,aAAqB,EACrB,OAAe,EACf,OAAe;QAFf,kBAAa,GAAb,aAAa,CAAQ;QACrB,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAQ;IACzB,CAAC;IAEJ,MAAM,CAAW,MAA2D;QACxE,OAAO,IAAI,uBAAuB,CAAuC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACrI,CAAC;IAED,YAAY,CAAmC,YAAoB;QAC/D,OAAO,IAAI,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED,YAAY,CAAuC,GAAG,MAAc;QAChE,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED,YAAY,CAAsC,GAAW;QACzD,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACxE,CAAC;CACJ"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonRpcValidator = void 0;
4
+ const ajv_1 = require("ajv");
5
+ const JsonRpcException_js_1 = require("./JsonRpcException.js");
6
+ function validate(data, schema) {
7
+ const ajv = new ajv_1.Ajv();
8
+ const validate = ajv.compile(schema);
9
+ const valid = validate(data);
10
+ return {
11
+ valid,
12
+ errors: validate.errors ?? []
13
+ };
14
+ }
15
+ class JsonRpcValidator {
16
+ schema;
17
+ constructor(schema) {
18
+ this.schema = schema;
19
+ }
20
+ get #params() {
21
+ return this.schema.$params;
22
+ }
23
+ get #return() {
24
+ return this.schema.$return;
25
+ }
26
+ validateParams(params) {
27
+ const shorten = this.#params.slice(params.length).every(({ optional }) => optional);
28
+ const schema = shorten ? this.#params.slice(0, params.length) : this.#params;
29
+ const errors = schema
30
+ .map((schema, index) => validate(params[index], schema))
31
+ .map(({ errors }, argument) => errors.map(({ propertyName, message }) => ({ argument, property: propertyName ?? '', message: message ?? '' })))
32
+ .flat();
33
+ if (errors.length > 0) {
34
+ const message = errors.map(({ argument, property, message }) => `args[${argument}].${property}: ${message}`).join('\n');
35
+ throw new JsonRpcException_js_1.InvalidParams(message, errors);
36
+ }
37
+ return true;
38
+ }
39
+ validateReturn(result) {
40
+ if (!this.schema.$return)
41
+ return result === undefined;
42
+ const errors = validate(result, this.#return).errors.map(({ propertyName, message }) => ({ property: propertyName ?? '', message: message ?? '' }));
43
+ if (errors.length > 0) {
44
+ const message = errors.map(({ property, message }) => `return.${property}: ${message}`).join('\n');
45
+ throw new JsonRpcException_js_1.InvalidReturn(message, errors);
46
+ }
47
+ return true;
48
+ }
49
+ }
50
+ exports.JsonRpcValidator = JsonRpcValidator;
51
+ //# sourceMappingURL=JsonRpcValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonRpcValidator.js","sourceRoot":"","sources":["../src/JsonRpcValidator.ts"],"names":[],"mappings":";;;AAAA,6BAA0B;AAG1B,+DAAqE;AAErE,SAAS,QAAQ,CAAC,IAAa,EAAE,MAAkB;IAC/C,MAAM,GAAG,GAAG,IAAI,SAAG,EAAE,CAAC;IACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO;QACH,KAAK;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE;KAChC,CAAC;AACN,CAAC;AAED,MAAa,gBAAgB;IACJ;IAArB,YAAqB,MAAW;QAAX,WAAM,GAAN,MAAM,CAAK;IAChC,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,cAAc,CAAC,MAAiB;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;QACpF,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QAE7E,MAAM,MAAM,GAAG,MAAM;aAChB,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAQ,EAAE,MAAM,CAAC,CAAC;aAC9D,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;aAC9I,IAAI,EAAE,CAAC;QACZ,IAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,QAAQ,QAAQ,KAAK,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxH,MAAM,IAAI,mCAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,MAAe;QAC1B,IAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,MAAM,KAAK,SAAS,CAAC;QACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3J,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,UAAU,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnG,MAAM,IAAI,mCAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ;AArCD,4CAqCC"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BrowserWebSocketWrapper = exports.NodeWebSocketWrapper = void 0;
4
+ exports.wrapWebSocket = wrapWebSocket;
5
+ function wrapWebSocket(socket, listener, closedListener) {
6
+ if ('WebSocket' in globalThis && socket instanceof WebSocket) {
7
+ return new BrowserWebSocketWrapper(socket, listener, closedListener);
8
+ }
9
+ return new NodeWebSocketWrapper(socket, listener, closedListener);
10
+ }
11
+ class NodeWebSocketWrapper {
12
+ socket;
13
+ listener;
14
+ closedListener;
15
+ constructor(socket, listener, closedListener) {
16
+ this.socket = socket;
17
+ this.listener = listener;
18
+ this.closedListener = closedListener;
19
+ socket.on('message', this.#onMessage);
20
+ socket.on('close', (code, reasonBuffer) => {
21
+ const reason = reasonBuffer.toString();
22
+ this.closedListener({ code, reason, wrapper: this });
23
+ this.socket.off('message', this.#onMessage);
24
+ });
25
+ }
26
+ get readyState() {
27
+ return this.socket.readyState;
28
+ }
29
+ send(data) {
30
+ this.socket.send(JSON.stringify(data));
31
+ }
32
+ close() {
33
+ this.socket.off('message', this.#onMessage);
34
+ this.socket.close();
35
+ }
36
+ #onMessage = async (data) => {
37
+ const parsed = await this.#parseMessage(data);
38
+ this.listener(parsed);
39
+ };
40
+ async #parseMessage(data) {
41
+ if (data instanceof ArrayBuffer) {
42
+ return JSON.parse(await new Blob([data]).text());
43
+ }
44
+ const json = data instanceof Array
45
+ ? data.map(d => JSON.parse(d.toString())).join('')
46
+ : data.toString();
47
+ return JSON.parse(json);
48
+ }
49
+ }
50
+ exports.NodeWebSocketWrapper = NodeWebSocketWrapper;
51
+ class BrowserWebSocketWrapper {
52
+ socket;
53
+ listener;
54
+ closedListener;
55
+ constructor(socket, listener, closedListener) {
56
+ this.socket = socket;
57
+ this.listener = listener;
58
+ this.closedListener = closedListener;
59
+ socket.addEventListener('message', this.#onMessage);
60
+ socket.addEventListener('close', ev => {
61
+ closedListener({ code: ev.code, reason: ev.reason, wasClean: ev.wasClean, wrapper: this });
62
+ this.socket.removeEventListener('message', this.#onMessage);
63
+ });
64
+ }
65
+ get readyState() {
66
+ return this.socket.readyState;
67
+ }
68
+ #onMessage = async (ev) => {
69
+ this.listener(ev.data);
70
+ };
71
+ send(data) {
72
+ this.socket.send(JSON.stringify(data));
73
+ }
74
+ close() {
75
+ this.socket.removeEventListener('message', this.#onMessage);
76
+ this.socket.close();
77
+ }
78
+ }
79
+ exports.BrowserWebSocketWrapper = BrowserWebSocketWrapper;
80
+ //# sourceMappingURL=WebSocketWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSocketWrapper.js","sourceRoot":"","sources":["../src/WebSocketWrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonRpcClient = void 0;
4
+ const stream_api_json_1 = require("@xxxaz/stream-api-json");
5
+ const JsonRpcException_js_1 = require("../JsonRpcException.js");
6
+ const JsonRpcValidator_js_1 = require("../JsonRpcValidator.js");
7
+ const utility_1 = require("@xxxaz/stream-api-json/utility");
8
+ const utility_js_1 = require("../utility.js");
9
+ const $generateId = Symbol('GenereteId');
10
+ const $requestStack = Symbol('RequestsStack');
11
+ const $methodPath = Symbol('MethodPath');
12
+ class JsonRpcClient {
13
+ #schema;
14
+ #postRpc;
15
+ #postBatch;
16
+ [$generateId];
17
+ constructor(options) {
18
+ this.#schema = options.schema;
19
+ this.#postRpc = options.post;
20
+ this.#postBatch = options.batch ?? options.post;
21
+ this[$generateId] = options.generateId ?? JsonRpcClient.defaultIdGenerator;
22
+ }
23
+ static async defaultIdGenerator() {
24
+ return crypto.randomUUID();
25
+ }
26
+ async postRpc(request) {
27
+ const response = await this.#postRpc((0, utility_js_1.stringifyStream)(request));
28
+ const streamJson = await stream_api_json_1.JsonStreamingParser.readFrom(response).root();
29
+ const result = await streamJson.all();
30
+ if ('error' in result) {
31
+ throw JsonRpcException_js_1.JsonRpcException.deserialize(result.error);
32
+ }
33
+ if (request.id == null)
34
+ return;
35
+ return result;
36
+ }
37
+ async postBatch(requests) {
38
+ const waits = new Map(requests
39
+ .filter(({ request: { id } }) => id != null)
40
+ .map(({ request, promise }) => [request.id, { request, promise }]));
41
+ const noWaits = new Set(requests.filter(({ request: { id } }) => id == null));
42
+ try {
43
+ const requestList = requests.map(({ request: r }) => r);
44
+ const response = await this.#postBatch((0, utility_js_1.stringifyStream)(requestList));
45
+ const streamJson = await stream_api_json_1.JsonStreamingParser.readFrom(response).root();
46
+ if (streamJson instanceof stream_api_json_1.ParsingJsonArray) {
47
+ const results = [];
48
+ for await (const responseStream of streamJson) {
49
+ const res = await responseStream.all() ?? {};
50
+ results.push(res);
51
+ const { id, error } = res;
52
+ const { promise } = waits.get(id) ?? {};
53
+ waits.delete(id);
54
+ if (!promise) {
55
+ console.warn('Orphan rpc response.', res);
56
+ continue;
57
+ }
58
+ if (error) {
59
+ promise.reject(JsonRpcException_js_1.JsonRpcException.deserialize(error));
60
+ continue;
61
+ }
62
+ promise.resolve(res);
63
+ }
64
+ return results;
65
+ }
66
+ const singleResult = await streamJson.all();
67
+ const { id, error } = singleResult ?? {};
68
+ if (id != null) {
69
+ const { promise } = waits.get(id) ?? {};
70
+ if (promise) {
71
+ if (error) {
72
+ promise.reject(JsonRpcException_js_1.JsonRpcException.deserialize(error));
73
+ }
74
+ else {
75
+ promise.resolve(singleResult);
76
+ }
77
+ }
78
+ else {
79
+ console.warn('Orphan rpc response.', singleResult);
80
+ }
81
+ return [singleResult];
82
+ }
83
+ const exceptin = error
84
+ ? JsonRpcException_js_1.JsonRpcException.deserialize(error)
85
+ : new JsonRpcException_js_1.ClientUncaughtError('Unexpected response.', singleResult);
86
+ for (const { promise } of waits.values())
87
+ promise.reject(exceptin);
88
+ for (const { promise } of noWaits)
89
+ promise.reject(exceptin);
90
+ noWaits.clear();
91
+ return [];
92
+ }
93
+ catch (e) {
94
+ console.error(e);
95
+ throw e;
96
+ }
97
+ finally {
98
+ for (const { promise, request } of waits.values()) {
99
+ promise.reject(new JsonRpcException_js_1.ClientUncaughtError('Orphan rpc request.', request));
100
+ }
101
+ noWaits.forEach(({ promise }) => promise.resolve());
102
+ }
103
+ }
104
+ #rpc;
105
+ get rpc() {
106
+ return this.#rpc ??= getChild(this.#schema, [], new NoStack(this));
107
+ }
108
+ #batch;
109
+ get batch() {
110
+ return this.#batch ??= getChild(this.#schema, [], new BatchStack(this));
111
+ }
112
+ kickBatch() {
113
+ return this.batch[$requestStack].kick();
114
+ }
115
+ lazy(delayMs = 0) {
116
+ return getChild(this.#schema, [], new LazyStack(this, delayMs));
117
+ }
118
+ }
119
+ exports.JsonRpcClient = JsonRpcClient;
120
+ class RequestsStack {
121
+ client;
122
+ constructor(client) {
123
+ this.client = client;
124
+ }
125
+ async buildRequest(requireId, methodPath, params) {
126
+ const jsonrpc = '2.0';
127
+ const method = methodPath.join('.');
128
+ const id = requireId ? await this.client[$generateId]() : null;
129
+ return id ? { jsonrpc, id, method, params } : { jsonrpc, method, params };
130
+ }
131
+ }
132
+ class NoStack extends RequestsStack {
133
+ async stack(requireId, methodPath, params) {
134
+ const request = await this.buildRequest(requireId, methodPath, params);
135
+ return this.client.postRpc(request);
136
+ }
137
+ }
138
+ class BatchStack extends RequestsStack {
139
+ #requests = [];
140
+ get currentSize() {
141
+ return this.#requests.length;
142
+ }
143
+ stack(requireId, methodPath, params) {
144
+ const resolver = new utility_1.LazyResolvers();
145
+ const wait = this.buildRequest(requireId, methodPath, params)
146
+ .then((request) => ({ request, promise: resolver }));
147
+ this.#requests.push(wait);
148
+ return resolver.promise;
149
+ }
150
+ async kick() {
151
+ if (!this.#requests.length)
152
+ return [];
153
+ const requestsPromises = this.#requests;
154
+ this.#requests = [];
155
+ const requests = await Promise.all(requestsPromises);
156
+ return this.client.postBatch(requests);
157
+ }
158
+ }
159
+ class LazyStack extends BatchStack {
160
+ delayMs;
161
+ constructor(client, delayMs) {
162
+ super(client);
163
+ this.delayMs = delayMs;
164
+ }
165
+ stack(requireId, methodPath, params) {
166
+ if (!this.currentSize) {
167
+ setTimeout(() => this.kick(), this.delayMs);
168
+ }
169
+ return super.stack(requireId, methodPath, params);
170
+ }
171
+ }
172
+ function getChild(schema, methodPath, stack) {
173
+ const cache = { [$requestStack]: stack };
174
+ return new Proxy(cache, {
175
+ get(_, key) {
176
+ if (cache[key])
177
+ return cache[key];
178
+ const route = schema[key];
179
+ if (!route)
180
+ return undefined;
181
+ const path = [...methodPath, key];
182
+ if ('$params' in route) {
183
+ const fn = triggerFunction(route, path, stack);
184
+ return cache[key] = fn;
185
+ }
186
+ const child = getChild(route, path, stack);
187
+ return cache[key] = child;
188
+ }
189
+ });
190
+ }
191
+ function triggerFunction(schema, methodPath, stack) {
192
+ const validator = new JsonRpcValidator_js_1.JsonRpcValidator(schema);
193
+ const fn = async (...params) => {
194
+ validator.validateParams(params);
195
+ const { result } = await stack.stack(true, methodPath, params);
196
+ validator.validateReturn(result);
197
+ return result;
198
+ };
199
+ fn.notice = (...params) => {
200
+ validator.validateParams(params);
201
+ stack.stack(false, methodPath, params);
202
+ };
203
+ return fn;
204
+ }
205
+ //# sourceMappingURL=JsonRpcClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonRpcClient.js","sourceRoot":"","sources":["../../src/client/JsonRpcClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonRpcHttpClient = void 0;
4
+ const stream_api_json_1 = require("@xxxaz/stream-api-json");
5
+ const JsonRpcException_js_1 = require("../JsonRpcException.js");
6
+ const JsonRpcClient_js_1 = require("./JsonRpcClient.js");
7
+ const utility_js_1 = require("../utility.js");
8
+ class JsonRpcHttpClient extends JsonRpcClient_js_1.JsonRpcClient {
9
+ constructor(options) {
10
+ const { schema, generateId, postUrl, batchUrl } = options;
11
+ super({
12
+ schema,
13
+ generateId,
14
+ post: (request) => this.#post(postUrl, request),
15
+ batch: (request) => this.#post(batchUrl ?? postUrl, request),
16
+ });
17
+ this.postUrl = postUrl;
18
+ this.batchUrl = batchUrl ?? postUrl;
19
+ this.#requestConverter = options.requestConverter;
20
+ this.#responseConverter = options.responseConverter;
21
+ const headers = new Headers(options.headers);
22
+ if (!headers.has('Content-Type')) {
23
+ headers.set('Content-Type', 'application/json');
24
+ }
25
+ this.#init = {
26
+ ...options.init,
27
+ method: 'POST',
28
+ headers,
29
+ };
30
+ }
31
+ postUrl;
32
+ batchUrl;
33
+ #requestConverter;
34
+ #responseConverter;
35
+ #init;
36
+ async #post(url, request) {
37
+ if (this.#requestConverter)
38
+ request = this.#requestConverter(request);
39
+ const body = await (0, utility_js_1.readStreamAll)(request);
40
+ const response = await fetch(url, { ...this.#init, body });
41
+ if (!response.ok) {
42
+ const message = `${response.status} ${response.statusText}`;
43
+ const headers = Object.fromEntries(response.headers.entries());
44
+ console.warn(new JsonRpcException_js_1.ClientHttpError(message, { headers }));
45
+ }
46
+ return this.#responseConverter
47
+ ? this.#responseConverter(response.body ?? (0, utility_js_1.emptyStrem)(), response.headers.get('Content-Type'))
48
+ : (0, stream_api_json_1.responseToTextStream)(response);
49
+ }
50
+ }
51
+ exports.JsonRpcHttpClient = JsonRpcHttpClient;
52
+ //# sourceMappingURL=JsonRpcHttpClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonRpcHttpClient.js","sourceRoot":"","sources":["../../src/client/JsonRpcHttpClient.ts"],"names":[],"mappings":";;;AAAA,4DAA8D;AAC9D,gEAAyD;AAEzD,yDAA+D;AAC/D,8CAA0D;AAa1D,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,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,KAAK,GAAG;YACT,GAAG,OAAO,CAAC,IAAI;YACf,MAAM,EAAE,MAAM;YACd,OAAO;SACV,CAAC;IACN,CAAC;IAEQ,OAAO,CAAa;IACpB,QAAQ,CAAa;IACrB,iBAAiB,CAA4D;IAC7E,kBAAkB,CAAuF;IACzG,KAAK,CAAc;IAE5B,KAAK,CAAC,KAAK,CAAC,GAAe,EAAE,OAA+B;QACxD,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAa,EAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,IAAI,qCAAe,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC,kBAAkB;YAC1B,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAA,uBAAU,GAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC9F,CAAC,CAAC,IAAA,sCAAoB,EAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;CACJ;AA7CD,8CA6CC"}