@xxxaz/json-rpc-schema-typing 0.8.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 (75) hide show
  1. package/LICENSE.txt +21 -0
  2. package/README.md +5 -0
  3. package/cjs/JsonRpcClient.js +7 -0
  4. package/cjs/JsonRpcClient.js.map +1 -0
  5. package/cjs/JsonRpcException.js +93 -0
  6. package/cjs/JsonRpcException.js.map +1 -0
  7. package/cjs/JsonRpcMethod.js +78 -0
  8. package/cjs/JsonRpcMethod.js.map +1 -0
  9. package/cjs/JsonRpcRouter.js +3 -0
  10. package/cjs/JsonRpcRouter.js.map +1 -0
  11. package/cjs/JsonRpcServer.js +97 -0
  12. package/cjs/JsonRpcServer.js.map +1 -0
  13. package/cjs/helpers/dynamicRouting.js +67 -0
  14. package/cjs/helpers/dynamicRouting.js.map +1 -0
  15. package/cjs/helpers/index.js +19 -0
  16. package/cjs/helpers/index.js.map +1 -0
  17. package/cjs/helpers/serveHttp.js +45 -0
  18. package/cjs/helpers/serveHttp.js.map +1 -0
  19. package/cjs/index.js +24 -0
  20. package/cjs/index.js.map +1 -0
  21. package/cjs/package.json +1 -0
  22. package/cjs/schemas/Complex.js +34 -0
  23. package/cjs/schemas/Complex.js.map +1 -0
  24. package/cjs/schemas/Primitive.js +20 -0
  25. package/cjs/schemas/Primitive.js.map +1 -0
  26. package/cjs/schemas/Structure.js +28 -0
  27. package/cjs/schemas/Structure.js.map +1 -0
  28. package/cjs/schemas/index.js +20 -0
  29. package/cjs/schemas/index.js.map +1 -0
  30. package/cjs/types.js +3 -0
  31. package/cjs/types.js.map +1 -0
  32. package/esm/JsonRpcClient.js +3 -0
  33. package/esm/JsonRpcClient.js.map +1 -0
  34. package/esm/JsonRpcException.js +82 -0
  35. package/esm/JsonRpcException.js.map +1 -0
  36. package/esm/JsonRpcMethod.js +74 -0
  37. package/esm/JsonRpcMethod.js.map +1 -0
  38. package/esm/JsonRpcRouter.js +2 -0
  39. package/esm/JsonRpcRouter.js.map +1 -0
  40. package/esm/JsonRpcServer.js +93 -0
  41. package/esm/JsonRpcServer.js.map +1 -0
  42. package/esm/helpers/dynamicRouting.js +39 -0
  43. package/esm/helpers/dynamicRouting.js.map +1 -0
  44. package/esm/helpers/index.js +3 -0
  45. package/esm/helpers/index.js.map +1 -0
  46. package/esm/helpers/serveHttp.js +42 -0
  47. package/esm/helpers/serveHttp.js.map +1 -0
  48. package/esm/index.js +8 -0
  49. package/esm/index.js.map +1 -0
  50. package/esm/package.json +1 -0
  51. package/esm/schemas/Complex.js +27 -0
  52. package/esm/schemas/Complex.js.map +1 -0
  53. package/esm/schemas/Primitive.js +17 -0
  54. package/esm/schemas/Primitive.js.map +1 -0
  55. package/esm/schemas/Structure.js +23 -0
  56. package/esm/schemas/Structure.js.map +1 -0
  57. package/esm/schemas/index.js +4 -0
  58. package/esm/schemas/index.js.map +1 -0
  59. package/esm/types.js +2 -0
  60. package/esm/types.js.map +1 -0
  61. package/package.json +65 -0
  62. package/types/JsonRpcClient.d.ts +2 -0
  63. package/types/JsonRpcException.d.ts +52 -0
  64. package/types/JsonRpcMethod.d.ts +32 -0
  65. package/types/JsonRpcRouter.d.ts +19 -0
  66. package/types/JsonRpcServer.d.ts +11 -0
  67. package/types/helpers/dynamicRouting.d.ts +14 -0
  68. package/types/helpers/index.d.ts +2 -0
  69. package/types/helpers/serveHttp.d.ts +7 -0
  70. package/types/index.d.ts +7 -0
  71. package/types/schemas/Complex.d.ts +14 -0
  72. package/types/schemas/Primitive.d.ts +16 -0
  73. package/types/schemas/Structure.d.ts +21 -0
  74. package/types/schemas/index.d.ts +3 -0
  75. package/types/types.d.ts +24 -0
package/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 xxx Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # json-rpc-schema-typing
2
+
3
+ ### TODO
4
+ - Client
5
+ - ドキュメント生成
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonRpcClient = void 0;
4
+ class JsonRpcClient {
5
+ }
6
+ exports.JsonRpcClient = JsonRpcClient;
7
+ //# sourceMappingURL=JsonRpcClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonRpcClient.js","sourceRoot":"","sources":["../src/JsonRpcClient.ts"],"names":[],"mappings":";;;AACA,MAAa,aAAa;CAAG;AAA7B,sCAA6B"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ServerError = exports.InvalidReturn = 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
+ }
11
+ class JsonRpcException extends Error {
12
+ static deserialize({ code, message, data }) {
13
+ for (const cls of defined.keys()) {
14
+ if (cls.code !== code)
15
+ continue;
16
+ return new cls(message, data);
17
+ }
18
+ return null;
19
+ }
20
+ constructor(message, data) {
21
+ if (!message)
22
+ message = new.target.defaultMessage;
23
+ super(message);
24
+ this.data = data;
25
+ }
26
+ data;
27
+ get name() {
28
+ return defined.get(this.constructor)
29
+ ?? this.constructor.name;
30
+ }
31
+ get code() {
32
+ return this.constructor.code;
33
+ }
34
+ serialize() {
35
+ return {
36
+ code: this.code,
37
+ message: this.message,
38
+ data: this.data,
39
+ };
40
+ }
41
+ toJSON() {
42
+ return this.serialize();
43
+ }
44
+ }
45
+ exports.JsonRpcException = JsonRpcException;
46
+ class ParseError extends JsonRpcException {
47
+ static code = -32700;
48
+ static defaultMessage = 'Invalid JSON was received by the server.';
49
+ }
50
+ exports.ParseError = ParseError;
51
+ class InvalidRequest extends JsonRpcException {
52
+ static code = -32600;
53
+ static defaultMessage = 'The JSON sent is not a valid Request object.';
54
+ }
55
+ exports.InvalidRequest = InvalidRequest;
56
+ class MethodNotFound extends JsonRpcException {
57
+ static code = -32601;
58
+ static defaultMessage = 'The method does not exist / is not available.';
59
+ }
60
+ exports.MethodNotFound = MethodNotFound;
61
+ class InvalidParams extends JsonRpcException {
62
+ static code = -32602;
63
+ static defaultMessage = 'Invalid method parameter(s)';
64
+ }
65
+ exports.InvalidParams = InvalidParams;
66
+ class InternalError extends JsonRpcException {
67
+ static code = -32603;
68
+ static defaultMessage = 'Internal JSON-RPC error.';
69
+ }
70
+ exports.InternalError = InternalError;
71
+ class InvalidReturn extends InternalError {
72
+ }
73
+ exports.InvalidReturn = InvalidReturn;
74
+ defineExceptions({ ParseError, InvalidRequest, MethodNotFound, InvalidParams, InvalidReturn, InternalError });
75
+ /**
76
+ *
77
+ * @property {number} code define to between -32000 to -32099
78
+ */
79
+ class ServerError extends JsonRpcException {
80
+ static define(classes) {
81
+ Object.entries(classes).forEach(([name, cls]) => {
82
+ if (!ServerError.prototype.isPrototypeOf(cls)) {
83
+ throw new Error(`${name} is not extends by ServerError`);
84
+ }
85
+ if (cls.code < -32099 || -32000 < cls.code) {
86
+ throw new Error(`Defined ServerError code must be between -32000 to -32099 (${name} ${cls.code})`);
87
+ }
88
+ });
89
+ defineExceptions(classes);
90
+ }
91
+ }
92
+ exports.ServerError = ServerError;
93
+ //# sourceMappingURL=JsonRpcException.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonRpcException.js","sourceRoot":"","sources":["../src/JsonRpcException.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonRpcMethodDefinition = 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
+ const methodKey = Symbol('JsonRpcMethodDefinition.method');
16
+ class JsonRpcMethodDefinition {
17
+ $params;
18
+ $return;
19
+ static method = methodKey;
20
+ [methodKey];
21
+ constructor(method, $params, $return) {
22
+ this.$params = $params;
23
+ this.$return = $return;
24
+ this[methodKey] = method;
25
+ }
26
+ apply(ctx, params) {
27
+ return this[methodKey].apply(ctx, params);
28
+ }
29
+ validateParams(params) {
30
+ const errors = this.$params
31
+ .map((schema, index) => validate(params[index], schema))
32
+ .map(({ errors }, argument) => errors.map(({ propertyName, message }) => ({ argument, property: propertyName ?? '', message: message ?? '' })))
33
+ .flat();
34
+ if (errors.length > 0) {
35
+ const message = errors.map(({ argument, property, message }) => `args[${argument}].${property}: ${message}`).join('\n');
36
+ throw new JsonRpcException_js_1.InvalidParams(message, errors);
37
+ }
38
+ return true;
39
+ }
40
+ validateReturn(result) {
41
+ if (!this.$return)
42
+ return result === undefined;
43
+ const errors = validate(result, this.$return).errors.map(({ propertyName, message }) => ({ property: propertyName ?? '', message: message ?? '' }));
44
+ if (errors.length > 0) {
45
+ const message = errors.map(({ property, message }) => `return.${property}: ${message}`).join('\n');
46
+ throw new JsonRpcException_js_1.InvalidReturn(message, errors);
47
+ }
48
+ return true;
49
+ }
50
+ static define(method) {
51
+ return new this(method, [], undefined);
52
+ }
53
+ static paramsSchema(...params) {
54
+ return new DefinitionBuilder(params, undefined);
55
+ }
56
+ static returnSchema(rtn) {
57
+ return new DefinitionBuilder([], rtn);
58
+ }
59
+ }
60
+ exports.JsonRpcMethodDefinition = JsonRpcMethodDefinition;
61
+ class DefinitionBuilder {
62
+ $params;
63
+ $return;
64
+ constructor($params, $return) {
65
+ this.$params = $params;
66
+ this.$return = $return;
67
+ }
68
+ define(method) {
69
+ return new JsonRpcMethodDefinition(method, this.$params, this.$return);
70
+ }
71
+ paramsSchema(...params) {
72
+ return new DefinitionBuilder(params, this.$return);
73
+ }
74
+ returnSchema(rtn) {
75
+ return new DefinitionBuilder(this.$params, rtn);
76
+ }
77
+ }
78
+ //# sourceMappingURL=JsonRpcMethod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonRpcMethod.js","sourceRoot":"","sources":["../src/JsonRpcMethod.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=JsonRpcRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonRpcRouter.js","sourceRoot":"","sources":["../src/JsonRpcRouter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonRpcServer = void 0;
4
+ const utility_1 = require("@xxxaz/stream-api-json/utility");
5
+ const JsonRpcException_js_1 = require("./JsonRpcException.js");
6
+ const JsonRpcMethod_js_1 = require("./JsonRpcMethod.js");
7
+ class JsonRpcServer {
8
+ router;
9
+ constructor(router) {
10
+ this.router = router;
11
+ }
12
+ validateRequest(request) {
13
+ const { jsonrpc, method, params } = request;
14
+ if (jsonrpc !== '2.0')
15
+ throw new JsonRpcException_js_1.InvalidRequest('jsonrpc must be "2.0"');
16
+ if (!method)
17
+ throw new JsonRpcException_js_1.InvalidRequest('method is required.');
18
+ }
19
+ pickMethodDefine(methodPath) {
20
+ const picked = methodPath.split('.').reduce((route, path) => route?.[path], this.router);
21
+ if (picked?.[JsonRpcMethod_js_1.JsonRpcMethodDefinition.method] instanceof Function) {
22
+ return picked;
23
+ }
24
+ throw new JsonRpcException_js_1.MethodNotFound(`method ${methodPath} is not Found.`);
25
+ }
26
+ async execute(ctx, request) {
27
+ try {
28
+ this.validateRequest(request);
29
+ const { method, params } = request;
30
+ const picked = this.pickMethodDefine(method);
31
+ picked.validateParams(params);
32
+ const result = await picked.apply(ctx, params);
33
+ try {
34
+ picked.validateReturn(result);
35
+ }
36
+ catch (e) {
37
+ console.warn(`Invalid Result: ${method}`, e);
38
+ }
39
+ return result;
40
+ }
41
+ catch (err) {
42
+ console.error(err);
43
+ if (err instanceof JsonRpcException_js_1.JsonRpcException)
44
+ throw err;
45
+ throw new JsonRpcException_js_1.InternalError(String(err));
46
+ }
47
+ }
48
+ async call(ctx, request) {
49
+ const jsonrpc = '2.0';
50
+ const id = request.id ?? null;
51
+ try {
52
+ const result = await this.execute(ctx, request);
53
+ return { jsonrpc, id, result };
54
+ }
55
+ catch (err) {
56
+ const error = err instanceof JsonRpcException_js_1.JsonRpcException
57
+ ? err.serialize()
58
+ : new JsonRpcException_js_1.InternalError(String(err)).serialize();
59
+ return { jsonrpc, id, error };
60
+ }
61
+ }
62
+ ;
63
+ async *batch(ctx, requests) {
64
+ const promises = {};
65
+ let loading = new utility_1.LazyResolvers();
66
+ let loadedAll = false;
67
+ (async () => {
68
+ for await (const request of requests) {
69
+ const id = request.id;
70
+ if (id == null) {
71
+ this.execute(ctx, request);
72
+ continue;
73
+ }
74
+ promises[id] = this.call(ctx, request);
75
+ loading.resolve();
76
+ loading = new utility_1.LazyResolvers();
77
+ }
78
+ loadedAll = true;
79
+ loading.resolve();
80
+ })();
81
+ while (true) {
82
+ const list = Object.values(promises);
83
+ if (!list.length) {
84
+ if (loadedAll)
85
+ break;
86
+ await loading.promise;
87
+ continue;
88
+ }
89
+ const response = await Promise.race(list);
90
+ yield response;
91
+ delete promises[response.id];
92
+ }
93
+ }
94
+ ;
95
+ }
96
+ exports.JsonRpcServer = JsonRpcServer;
97
+ //# sourceMappingURL=JsonRpcServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonRpcServer.js","sourceRoot":"","sources":["../src/JsonRpcServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
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
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.dynamicRouting = dynamicRouting;
27
+ exports.fileSystemRouting = fileSystemRouting;
28
+ exports.fsEnumerate = fsEnumerate;
29
+ const fs_1 = require("fs");
30
+ const JsonRpcMethod_js_1 = require("../JsonRpcMethod.js");
31
+ async function dynamicRouting(rootPath, enumerator) {
32
+ const router = {};
33
+ for await (const { name, path, directory } of enumerator(rootPath)) {
34
+ if (directory) {
35
+ const subRouter = await dynamicRouting(path, enumerator);
36
+ if (Object.keys(subRouter).length > 0) {
37
+ router[name] = subRouter;
38
+ }
39
+ continue;
40
+ }
41
+ try {
42
+ const module = await Promise.resolve(`${path}`).then(s => __importStar(require(s)));
43
+ if (module.default instanceof JsonRpcMethod_js_1.JsonRpcMethodDefinition) {
44
+ const methodName = name.replace(/\.[jt]s$/, '');
45
+ router[methodName] = module.default;
46
+ }
47
+ }
48
+ catch (e) { }
49
+ }
50
+ return router;
51
+ }
52
+ function fileSystemRouting(rootPath) {
53
+ return dynamicRouting(rootPath, fsEnumerate);
54
+ }
55
+ ;
56
+ async function* fsEnumerate(rootPath) {
57
+ for (const name of (0, fs_1.readdirSync)(rootPath)) {
58
+ const path = `${rootPath}/${name}`;
59
+ const stat = (0, fs_1.lstatSync)(path);
60
+ yield {
61
+ name,
62
+ path,
63
+ directory: stat.isDirectory()
64
+ };
65
+ }
66
+ }
67
+ //# sourceMappingURL=dynamicRouting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamicRouting.js","sourceRoot":"","sources":["../../src/helpers/dynamicRouting.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAUA,wCAmBC;AAED,8CAEC;AAED,kCAUC;AA7CD,2BAA4C;AAE5C,0DAA8D;AAQvD,KAAK,UAAU,cAAc,CAAa,QAAgB,EAAE,UAAiD;IAChH,MAAM,MAAM,GAAG,EAAoF,CAAC;IACpG,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjE,IAAG,SAAS,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,MAAM,cAAc,CAAM,IAAI,EAAE,UAAU,CAAC,CAAC;YAC9D,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;YAC7B,CAAC;YACD,SAAS;QACb,CAAC;QACD,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,yBAAa,IAAI,uCAAC,CAAC;YAClC,IAAG,MAAM,CAAC,OAAO,YAAY,0CAAuB,EAAE,CAAC;gBACnD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBAChD,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;YACxC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAgB,iBAAiB,CAAa,QAAgB;IAC1D,OAAO,cAAc,CAAM,QAAQ,EAAE,WAAW,CAAC,CAAC;AACtD,CAAC;AAAA,CAAC;AAEK,KAAK,SAAU,CAAC,CAAC,WAAW,CAAE,QAAgB;IACjD,KAAK,MAAM,IAAI,IAAI,IAAA,gBAAW,EAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAA,cAAS,EAAC,IAAI,CAAC,CAAC;QAC7B,MAAM;YACF,IAAI;YACJ,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE;SAChC,CAAC;IACN,CAAC;AACL,CAAC"}
@@ -0,0 +1,19 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./dynamicRouting.js"), exports);
18
+ __exportStar(require("./serveHttp.js"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,sDAAoC;AACpC,iDAA+B"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serveHttp = serveHttp;
4
+ const stream_api_json_1 = require("@xxxaz/stream-api-json");
5
+ const JsonRpcException_js_1 = require("../JsonRpcException.js");
6
+ async function* extract(iterable) {
7
+ for await (const req of iterable) {
8
+ yield await req.all();
9
+ }
10
+ }
11
+ async function serveHttp(server, request, response, context) {
12
+ context ??= { request, response };
13
+ try {
14
+ const root = await stream_api_json_1.JsonStreamingParser
15
+ .readFrom(request)
16
+ .root();
17
+ if (root instanceof stream_api_json_1.ParsingJsonArray) {
18
+ const result = server.batch(context, extract(root));
19
+ const source = new stream_api_json_1.StringifyingJsonArray(result);
20
+ const stream = await (0, stream_api_json_1.toNodeReadable)(source);
21
+ response.writeHead(200, {
22
+ 'Content-Type': 'application/json',
23
+ 'Transfer-Encoding': 'chunked'
24
+ });
25
+ stream.pipe(response);
26
+ return;
27
+ }
28
+ const result = await server.call(context, await root.all());
29
+ response.writeHead(200, {
30
+ 'Content-Type': 'application/json'
31
+ });
32
+ response.end(JSON.stringify(result));
33
+ }
34
+ catch (err) {
35
+ if (err instanceof JsonRpcException_js_1.JsonRpcException) {
36
+ const status = err instanceof JsonRpcException_js_1.InternalError ? 500 : 400;
37
+ response.writeHead(status);
38
+ response.end(JSON.stringify({ jsonrpc: "2.0", error: err.serialize() }));
39
+ return;
40
+ }
41
+ response.writeHead(500);
42
+ response.end(JSON.stringify({ jsonrpc: "2.0", error: new JsonRpcException_js_1.InternalError(String(err)).serialize() }));
43
+ }
44
+ }
45
+ //# sourceMappingURL=serveHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serveHttp.js","sourceRoot":"","sources":["../../src/helpers/serveHttp.ts"],"names":[],"mappings":";;AAkBA,8BAoCC;AArDD,4DAAuH;AAGvH,gEAAyE;AAQzE,KAAK,SAAU,CAAC,CAAC,OAAO,CAAC,QAA4C;IACjE,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,SAAS,CAAoB,MAA0B,EAAE,OAAwB,EAAE,QAAwB,EAAE,OAAa;IAC5I,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAS,CAAC;IACzC,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,qCAAmB;aACjC,QAAQ,CAAC,OAAO,CAAC;aACjB,IAAI,EAAE,CAAC;QAEZ,IAAG,IAAI,YAAY,kCAAgB,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,uCAAqB,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAc,EAAC,MAAM,CAAC,CAAC;YAC5C,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;gBACpB,cAAc,EAAE,kBAAkB;gBAClC,mBAAmB,EAAE,SAAS;aACjC,CAAC,CAAA;YACF,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtB,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5D,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;YACpB,cAAc,EAAE,kBAAkB;SACrC,CAAC,CAAA;QACF,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACpB,IAAG,GAAG,YAAY,sCAAgB,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,GAAG,YAAY,mCAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YACxD,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO;QACX,CAAC;QAED,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACxB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,mCAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IACxG,CAAC;AACL,CAAC"}
package/cjs/index.js ADDED
@@ -0,0 +1,24 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./JsonRpcException.js"), exports);
18
+ __exportStar(require("./JsonRpcMethod.js"), exports);
19
+ __exportStar(require("./JsonRpcRouter.js"), exports);
20
+ __exportStar(require("./JsonRpcServer.js"), exports);
21
+ __exportStar(require("./types.js"), exports);
22
+ __exportStar(require("./schemas/index.js"), exports);
23
+ __exportStar(require("./helpers/index.js"), exports);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,wDAAsC;AACtC,qDAAmC;AAEnC,qDAAmC;AACnC,qDAAmC;AAEnC,6CAA2B;AAE3B,qDAAmC;AACnC,qDAAmC"}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.$Enum = $Enum;
4
+ exports.$Expand = $Expand;
5
+ exports.$And = $And;
6
+ exports.$Or = $Or;
7
+ exports.$Xor = $Xor;
8
+ function $Enum(...elements) {
9
+ return {
10
+ enum: elements
11
+ };
12
+ }
13
+ function $Expand(source, expand) {
14
+ return {
15
+ ...source,
16
+ ...expand,
17
+ };
18
+ }
19
+ function $And(...allOf) {
20
+ return {
21
+ allOf
22
+ };
23
+ }
24
+ function $Or(...anyOf) {
25
+ return {
26
+ anyOf
27
+ };
28
+ }
29
+ function $Xor(...oneOf) {
30
+ return {
31
+ oneOf
32
+ };
33
+ }
34
+ //# sourceMappingURL=Complex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Complex.js","sourceRoot":"","sources":["../../src/schemas/Complex.ts"],"names":[],"mappings":";;AAGA,sBAIC;AAED,0BAKC;AAED,oBAIC;AAED,kBAIC;AAED,oBAIC;AA7BD,SAAgB,KAAK,CAA2C,GAAG,QAAW;IAC1E,OAAO;QACH,IAAI,EAAE,QAAQ;KACR,CAAC;AACf,CAAC;AAED,SAAgB,OAAO,CAAyD,MAAW,EAAE,MAAU;IACnG,OAAO;QACH,GAAG,MAAM;QACT,GAAG,MAAM;KACH,CAAC;AACf,CAAC;AAED,SAAgB,IAAI,CAA+B,GAAG,KAAc;IAChE,OAAO;QACH,KAAK;KACC,CAAC;AACf,CAAC;AAED,SAAgB,GAAG,CAA+B,GAAG,KAAc;IAC/D,OAAO;QACH,KAAK;KACC,CAAC;AACf,CAAC;AAED,SAAgB,IAAI,CAA+B,GAAG,KAAc;IAChE,OAAO;QACH,KAAK;KACC,CAAC;AACf,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.$String = exports.$Integer = exports.$Number = exports.$Boolean = exports.$Null = void 0;
4
+ exports.$Null = {
5
+ type: 'null',
6
+ nullable: true,
7
+ };
8
+ exports.$Boolean = {
9
+ type: 'boolean',
10
+ };
11
+ exports.$Number = {
12
+ type: 'number',
13
+ };
14
+ exports.$Integer = {
15
+ type: 'integer',
16
+ };
17
+ exports.$String = {
18
+ type: 'string',
19
+ };
20
+ //# sourceMappingURL=Primitive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Primitive.js","sourceRoot":"","sources":["../../src/schemas/Primitive.ts"],"names":[],"mappings":";;;AACa,QAAA,KAAK,GAAG;IACjB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,IAAI;CACR,CAAC;AAEE,QAAA,QAAQ,GAAG;IACpB,IAAI,EAAE,SAAS;CACT,CAAC;AAEE,QAAA,OAAO,GAAG;IACnB,IAAI,EAAE,QAAQ;CACR,CAAC;AAEE,QAAA,QAAQ,GAAG;IACpB,IAAI,EAAE,SAAS;CACT,CAAC;AAEE,QAAA,OAAO,GAAG;IACnB,IAAI,EAAE,QAAQ;CACR,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.$Array = $Array;
4
+ exports.$Tuple = $Tuple;
5
+ exports.$Object = $Object;
6
+ function $Array(items) {
7
+ return {
8
+ type: 'array',
9
+ items
10
+ };
11
+ }
12
+ function $Tuple(...items) {
13
+ return {
14
+ type: 'array',
15
+ items,
16
+ minItems: items.length,
17
+ maxItems: items.length,
18
+ };
19
+ }
20
+ function $Object(properties) {
21
+ return {
22
+ type: 'object',
23
+ additionalProperties: false,
24
+ required: Object.keys(properties),
25
+ properties
26
+ };
27
+ }
28
+ //# sourceMappingURL=Structure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Structure.js","sourceRoot":"","sources":["../../src/schemas/Structure.ts"],"names":[],"mappings":";;AAEA,wBAKC;AAED,wBAOC;AAKD,0BAOC;AA1BD,SAAgB,MAAM,CAAuB,KAAQ;IACjD,OAAO;QACH,IAAI,EAAE,OAAO;QACb,KAAK;KACC,CAAC;AACf,CAAC;AAED,SAAgB,MAAM,CAAyB,GAAG,KAAQ;IACtD,OAAO;QACH,IAAI,EAAE,OAAO;QACb,KAAK;QACL,QAAQ,EAAE,KAAK,CAAC,MAAqB;QACrC,QAAQ,EAAE,KAAK,CAAC,MAAqB;KAC/B,CAAC;AACf,CAAC;AAKD,SAAgB,OAAO,CAAyB,UAAa;IACzD,OAAO;QACH,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAc;QAC9C,UAAU;KACJ,CAAC;AACf,CAAC"}
@@ -0,0 +1,20 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Primitive.js"), exports);
18
+ __exportStar(require("./Complex.js"), exports);
19
+ __exportStar(require("./Structure.js"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,+CAA6B;AAC7B,iDAA+B"}
package/cjs/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}