@mingzey/typedrpc 1.0.2 → 1.1.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 (105) hide show
  1. package/README.md +3 -1
  2. package/dist/api.d.ts +2 -2
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/client.d.ts +2 -2
  5. package/dist/client.d.ts.map +1 -1
  6. package/dist/connection.d.ts +1 -1
  7. package/dist/connection.js +1 -1
  8. package/dist/{connecitons → connections}/basic.d.ts +1 -0
  9. package/dist/connections/basic.d.ts.map +1 -0
  10. package/dist/{connecitons → connections}/basic.js.map +1 -1
  11. package/dist/{connecitons → connections}/http.d.ts.map +1 -1
  12. package/dist/{connecitons → connections}/http.js.map +1 -1
  13. package/dist/{connecitons → connections}/socket.d.ts.map +1 -1
  14. package/dist/{connecitons → connections}/socket.js +10 -10
  15. package/dist/{connecitons → connections}/socket.js.map +1 -1
  16. package/dist/{connecitons → connections}/socketio.d.ts.map +1 -1
  17. package/dist/{connecitons → connections}/socketio.js +10 -10
  18. package/dist/{connecitons → connections}/socketio.js.map +1 -1
  19. package/dist/context.d.ts +1 -1
  20. package/dist/core.d.ts +5 -2
  21. package/dist/core.d.ts.map +1 -1
  22. package/dist/core.js +20 -13
  23. package/dist/core.js.map +1 -1
  24. package/dist/handler.d.ts +4 -7
  25. package/dist/handler.d.ts.map +1 -1
  26. package/dist/handler.js +1 -13
  27. package/dist/handler.js.map +1 -1
  28. package/dist/index.d.ts +11 -7
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +11 -7
  31. package/dist/index.js.map +1 -1
  32. package/dist/middleware/middleware.d.ts +7 -0
  33. package/dist/middleware/middleware.d.ts.map +1 -0
  34. package/dist/middleware/middleware.js +10 -0
  35. package/dist/middleware/middleware.js.map +1 -0
  36. package/dist/server.d.ts +7 -9
  37. package/dist/server.d.ts.map +1 -1
  38. package/dist/server.js +3 -1
  39. package/dist/server.js.map +1 -1
  40. package/package.json +29 -29
  41. package/dist/connecitons/basic.d.ts.map +0 -1
  42. package/dist/test/TestCase.d.ts +0 -6
  43. package/dist/test/TestCase.d.ts.map +0 -1
  44. package/dist/test/TestCase.js +0 -5
  45. package/dist/test/TestCase.js.map +0 -1
  46. package/dist/test/authorization.d.ts +0 -8
  47. package/dist/test/authorization.d.ts.map +0 -1
  48. package/dist/test/authorization.js +0 -169
  49. package/dist/test/authorization.js.map +0 -1
  50. package/dist/test/basic.d.ts +0 -7
  51. package/dist/test/basic.d.ts.map +0 -1
  52. package/dist/test/basic.js +0 -35
  53. package/dist/test/basic.js.map +0 -1
  54. package/dist/test/context.d.ts +0 -7
  55. package/dist/test/context.d.ts.map +0 -1
  56. package/dist/test/context.js +0 -55
  57. package/dist/test/context.js.map +0 -1
  58. package/dist/test/expressmix.d.ts +0 -7
  59. package/dist/test/expressmix.d.ts.map +0 -1
  60. package/dist/test/expressmix.js +0 -63
  61. package/dist/test/expressmix.js.map +0 -1
  62. package/dist/test/full-duplex.d.ts +0 -12
  63. package/dist/test/full-duplex.d.ts.map +0 -1
  64. package/dist/test/full-duplex.js +0 -77
  65. package/dist/test/full-duplex.js.map +0 -1
  66. package/dist/test/socket.d.ts +0 -8
  67. package/dist/test/socket.d.ts.map +0 -1
  68. package/dist/test/socket.js +0 -71
  69. package/dist/test/socket.js.map +0 -1
  70. package/dist/test/socketio.d.ts +0 -12
  71. package/dist/test/socketio.d.ts.map +0 -1
  72. package/dist/test/socketio.js +0 -77
  73. package/dist/test/socketio.js.map +0 -1
  74. package/dist/test.d.ts +0 -2
  75. package/dist/test.d.ts.map +0 -1
  76. package/dist/test.js +0 -33
  77. package/dist/test.js.map +0 -1
  78. package/src/api.ts +0 -72
  79. package/src/client.ts +0 -77
  80. package/src/connecitons/basic.ts +0 -49
  81. package/src/connecitons/http.ts +0 -184
  82. package/src/connecitons/socket.ts +0 -247
  83. package/src/connecitons/socketio.ts +0 -200
  84. package/src/connection.ts +0 -10
  85. package/src/context.ts +0 -18
  86. package/src/core.ts +0 -130
  87. package/src/define.ts +0 -63
  88. package/src/handler.ts +0 -202
  89. package/src/index.ts +0 -41
  90. package/src/packet.ts +0 -77
  91. package/src/server.ts +0 -82
  92. package/src/test/TestCase.ts +0 -6
  93. package/src/test/authorization.ts +0 -197
  94. package/src/test/basic.ts +0 -44
  95. package/src/test/context.ts +0 -64
  96. package/src/test/expressmix.ts +0 -81
  97. package/src/test/socket.ts +0 -90
  98. package/src/test/socketio.ts +0 -96
  99. package/src/test.ts +0 -35
  100. package/src/utils.ts +0 -95
  101. /package/dist/{connecitons → connections}/basic.js +0 -0
  102. /package/dist/{connecitons → connections}/http.d.ts +0 -0
  103. /package/dist/{connecitons → connections}/http.js +0 -0
  104. /package/dist/{connecitons → connections}/socket.d.ts +0 -0
  105. /package/dist/{connecitons → connections}/socketio.d.ts +0 -0
@@ -1,77 +0,0 @@
1
- /**
2
- * 测试全双工通信实现双向调用
3
- * TypeRPC的默认实现是基于http的,全双工必须实现自定义的Provider
4
- * 这里使用socket.io作为Provider的底层通讯
5
- */
6
- import { TestCase } from "./TestCase.js";
7
- import { TypeRPCAPIDefine, TypeRPCConnectionProviderSocketIO } from "../index.js";
8
- import { TypeRPCServer } from "../index.js";
9
- import { TypeRPCClient } from "../index.js";
10
- const ServerAPIDefine = new TypeRPCAPIDefine;
11
- const ClientAPIDefine = new TypeRPCAPIDefine;
12
- const server = new TypeRPCServer({
13
- local: ServerAPIDefine,
14
- remote: ClientAPIDefine,
15
- connection: {
16
- provider: new TypeRPCConnectionProviderSocketIO(),
17
- }
18
- });
19
- server.hook('math', 'add', {
20
- handler: (a, b) => {
21
- return a + b;
22
- }
23
- });
24
- const client = new TypeRPCClient({
25
- local: ClientAPIDefine,
26
- remote: ServerAPIDefine,
27
- connection: {
28
- provider: new TypeRPCConnectionProviderSocketIO(),
29
- }
30
- });
31
- client.hook('status', 'time', {
32
- handler: () => {
33
- return Date.now();
34
- }
35
- });
36
- export default class TestFullDuplex extends TestCase {
37
- name() {
38
- return "TestFullDuplex";
39
- }
40
- async run() {
41
- let requestToServer;
42
- let requestToClient;
43
- requestToClient = new Promise((resolve) => {
44
- server.emitter.on('connection', async (connectionToClient) => {
45
- const apiToClient = server.getAPI(connectionToClient);
46
- const result = await apiToClient.status.time.call();
47
- if (result != null) {
48
- resolve(true);
49
- }
50
- else {
51
- resolve(false);
52
- }
53
- });
54
- });
55
- await server.listen({
56
- port: 3698,
57
- });
58
- requestToServer = new Promise(async (resolve) => {
59
- const connectionToServer = await client.connect("localhost:3698");
60
- const apiToServer = client.getAPI(connectionToServer);
61
- const result = await apiToServer.math.add.call(1, 2);
62
- if (result == 3) {
63
- resolve(true);
64
- }
65
- else {
66
- resolve(false);
67
- }
68
- });
69
- const resultToClient = await requestToClient;
70
- const resultToServer = await requestToServer;
71
- return resultToClient && resultToServer;
72
- }
73
- async finally() {
74
- await server.close();
75
- }
76
- }
77
- //# sourceMappingURL=full-duplex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"full-duplex.js","sourceRoot":"","sources":["../../src/test/full-duplex.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { TestCase } from "./TestCase.js";
2
- declare class TestSocket extends TestCase {
3
- name(): string;
4
- run(): Promise<boolean>;
5
- finally(): Promise<void>;
6
- }
7
- export default TestSocket;
8
- //# sourceMappingURL=socket.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/test/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AA4CzC,cAAM,UAAW,SAAQ,QAAQ;IAC7B,IAAI,IAAI,MAAM;IAGR,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;IAmChB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAIxC;AAED,eAAe,UAAU,CAAC"}
@@ -1,71 +0,0 @@
1
- import { TestCase } from "./TestCase.js";
2
- import { TypedRPCAPIDefine, TypedRPCClient, TypedRPCConnectionProviderSocket, TypedRPCServer } from "../index.js";
3
- const ServerAPIDefine = new TypedRPCAPIDefine;
4
- const ClientAPIDefine = new TypedRPCAPIDefine;
5
- const server = new TypedRPCServer({
6
- local: ServerAPIDefine,
7
- remote: ClientAPIDefine,
8
- connection: {
9
- provider: new TypedRPCConnectionProviderSocket(),
10
- }
11
- });
12
- server.hook('math', 'add', {
13
- handler: (a, b) => {
14
- return a + b;
15
- }
16
- });
17
- const client = new TypedRPCClient({
18
- local: ClientAPIDefine,
19
- remote: ServerAPIDefine,
20
- connection: {
21
- provider: new TypedRPCConnectionProviderSocket(),
22
- }
23
- });
24
- client.hook('status', 'time', {
25
- handler: () => {
26
- return Date.now();
27
- }
28
- });
29
- class TestSocket extends TestCase {
30
- name() {
31
- return 'Socket';
32
- }
33
- async run() {
34
- let requestToServer;
35
- let requestToClient;
36
- requestToClient = new Promise((resolve) => {
37
- server.emitter.on('connection', async (connectionToClient) => {
38
- const apiToClient = server.getAPI(connectionToClient);
39
- const result = await apiToClient.status.time.call();
40
- if (result != null) {
41
- resolve(true);
42
- }
43
- else {
44
- resolve(false);
45
- }
46
- });
47
- });
48
- await server.listen({
49
- port: 3698,
50
- });
51
- requestToServer = new Promise(async (resolve) => {
52
- const connectionToServer = await client.connect("localhost:3698");
53
- const apiToServer = client.getAPI(connectionToServer);
54
- const result = await apiToServer.math.add.call(1, 2);
55
- if (result == 3) {
56
- resolve(true);
57
- }
58
- else {
59
- resolve(false);
60
- }
61
- });
62
- const resultToClient = await requestToClient;
63
- const resultToServer = await requestToServer;
64
- return resultToClient && resultToServer;
65
- }
66
- async finally() {
67
- await server.close();
68
- }
69
- }
70
- export default TestSocket;
71
- //# sourceMappingURL=socket.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/test/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,gCAAgC,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElH,MAAM,eAAe,GAAG,IAAI,iBAI1B,CAAA;AAEF,MAAM,eAAe,GAAG,IAAI,iBAI1B,CAAA;AAEF,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;IAC9B,KAAK,EAAE,eAAe;IACtB,MAAM,EAAE,eAAe;IACvB,UAAU,EAAE;QACR,QAAQ,EAAE,IAAI,gCAAgC,EAAE;KACnD;CACJ,CAAC,CAAA;AAEF,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;IACvB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACd,OAAO,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;CACJ,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;IAC9B,KAAK,EAAE,eAAe;IACtB,MAAM,EAAE,eAAe;IACvB,UAAU,EAAE;QACR,QAAQ,EAAE,IAAI,gCAAgC,EAAE;KACnD;CACJ,CAAC,CAAA;AAEF,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;IAC1B,OAAO,EAAE,GAAG,EAAE;QACV,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACtB,CAAC;CACJ,CAAC,CAAA;AAGF,MAAM,UAAW,SAAQ,QAAQ;IAC7B,IAAI;QACA,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,KAAK,CAAC,GAAG;QACL,IAAI,eAAiC,CAAC;QACtC,IAAI,eAAiC,CAAC;QAEtC,eAAe,GAAG,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YAC/C,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE;gBACzD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBACtD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACpD,IAAI,MAAM,IAAI,IAAI,EAAE;oBAChB,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB;qBAAM;oBACH,OAAO,CAAC,KAAK,CAAC,CAAC;iBAClB;YACL,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC,MAAM,CAAC;YAChB,IAAI,EAAE,IAAI;SACb,CAAC,CAAA;QAEF,eAAe,GAAG,IAAI,OAAO,CAAU,KAAK,EAAE,OAAO,EAAE,EAAE;YACrD,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAClE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrD,IAAI,MAAM,IAAI,CAAC,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,CAAC;aACjB;iBAAM;gBACH,OAAO,CAAC,KAAK,CAAC,CAAC;aAClB;QACL,CAAC,CAAC,CAAA;QAEF,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC;QAC7C,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC;QAC7C,OAAO,cAAc,IAAI,cAAc,CAAC;IAC5C,CAAC;IACM,KAAK,CAAC,OAAO;QAChB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CAEJ;AAED,eAAe,UAAU,CAAC"}
@@ -1,12 +0,0 @@
1
- /**
2
- * 测试全双工通信实现双向调用
3
- * TypedRPC的默认实现是基于http的,全双工必须实现自定义的Provider
4
- * 这里使用socket.io作为Provider的底层通讯
5
- */
6
- import { TestCase } from "./TestCase.js";
7
- export default class TestSocketIO extends TestCase {
8
- name(): string;
9
- run(): Promise<boolean>;
10
- finally(): Promise<void>;
11
- }
12
- //# sourceMappingURL=socketio.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"socketio.d.ts","sourceRoot":"","sources":["../../src/test/socketio.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AA+CzC,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,QAAQ;IAC9C,IAAI,IAAI,MAAM;IAGR,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;IAmChB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGxC"}
@@ -1,77 +0,0 @@
1
- /**
2
- * 测试全双工通信实现双向调用
3
- * TypedRPC的默认实现是基于http的,全双工必须实现自定义的Provider
4
- * 这里使用socket.io作为Provider的底层通讯
5
- */
6
- import { TestCase } from "./TestCase.js";
7
- import { TypedRPCAPIDefine, TypedRPCConnectionProviderSocketIO } from "../index.js";
8
- import { TypedRPCServer } from "../index.js";
9
- import { TypedRPCClient } from "../index.js";
10
- const ServerAPIDefine = new TypedRPCAPIDefine;
11
- const ClientAPIDefine = new TypedRPCAPIDefine;
12
- const server = new TypedRPCServer({
13
- local: ServerAPIDefine,
14
- remote: ClientAPIDefine,
15
- connection: {
16
- provider: new TypedRPCConnectionProviderSocketIO(),
17
- }
18
- });
19
- server.hook('math', 'add', {
20
- handler: (a, b) => {
21
- return a + b;
22
- }
23
- });
24
- const client = new TypedRPCClient({
25
- local: ClientAPIDefine,
26
- remote: ServerAPIDefine,
27
- connection: {
28
- provider: new TypedRPCConnectionProviderSocketIO(),
29
- }
30
- });
31
- client.hook('status', 'time', {
32
- handler: () => {
33
- return Date.now();
34
- }
35
- });
36
- export default class TestSocketIO extends TestCase {
37
- name() {
38
- return "SocketIO";
39
- }
40
- async run() {
41
- let requestToServer;
42
- let requestToClient;
43
- requestToClient = new Promise((resolve) => {
44
- server.emitter.on('connection', async (connectionToClient) => {
45
- const apiToClient = server.getAPI(connectionToClient);
46
- const result = await apiToClient.status.time.call();
47
- if (result != null) {
48
- resolve(true);
49
- }
50
- else {
51
- resolve(false);
52
- }
53
- });
54
- });
55
- await server.listen({
56
- port: 3698,
57
- });
58
- requestToServer = new Promise(async (resolve) => {
59
- const connectionToServer = await client.connect("localhost:3698");
60
- const apiToServer = client.getAPI(connectionToServer);
61
- const result = await apiToServer.math.add.call(1, 2);
62
- if (result == 3) {
63
- resolve(true);
64
- }
65
- else {
66
- resolve(false);
67
- }
68
- });
69
- const resultToClient = await requestToClient;
70
- const resultToServer = await requestToServer;
71
- return resultToClient && resultToServer;
72
- }
73
- async finally() {
74
- await server.close();
75
- }
76
- }
77
- //# sourceMappingURL=socketio.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"socketio.js","sourceRoot":"","sources":["../../src/test/socketio.ts"],"names":[],"mappings":"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"}
package/dist/test.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":""}
package/dist/test.js DELETED
@@ -1,33 +0,0 @@
1
- const testList = [
2
- import('./test/basic.js'),
3
- import('./test/context.js'),
4
- import('./test/socketio.js'),
5
- import('./test/authorization.js'),
6
- import('./test/expressmix.js'),
7
- import('./test/socket.js'),
8
- ];
9
- async function main() {
10
- for (let i of testList) {
11
- let exp = await i;
12
- let test = new (exp.default)();
13
- let result = await test.run().catch((e) => {
14
- console.log(`Test:${test.name()} failed. ${e}`);
15
- throw e;
16
- });
17
- await test.finally();
18
- if (result) {
19
- console.log(`\x1b[32m[PASS]\x1b[0m ${test.name()}`);
20
- }
21
- else {
22
- console.log(`\x1b[31m[FAIL]\x1b[0m ${test.name()}`);
23
- }
24
- }
25
- }
26
- main().then(() => {
27
- console.log('TypedRPC test finished.');
28
- }).catch((e) => {
29
- console.log(`TypedRPC test failed. ${e}`);
30
- throw e;
31
- });
32
- export {};
33
- //# sourceMappingURL=test.js.map
package/dist/test.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAAG;IACb,MAAM,CAAC,iBAAiB,CAAC;IACzB,MAAM,CAAC,mBAAmB,CAAC;IAC3B,MAAM,CAAC,oBAAoB,CAAC;IAC5B,MAAM,CAAC,yBAAyB,CAAC;IACjC,MAAM,CAAC,sBAAsB,CAAC;IAC9B,MAAM,CAAC,kBAAkB,CAAC;CAC7B,CAAA;AAED,KAAK,UAAU,IAAI;IACf,KAAI,IAAI,CAAC,IAAI,QAAQ,EAAC;QAClB,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC;QAClB,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAc,CAAC;QAC3C,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACtC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;YAChD,MAAM,CAAC,CAAC;QACZ,CAAC,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAG,MAAM,EAAC;YACN,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACvD;aAAI;YACD,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACvD;KAEJ;AACL,CAAC;AAED,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;IACb,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,CAAC,CAAC;AACZ,CAAC,CAAC,CAAA"}
package/src/api.ts DELETED
@@ -1,72 +0,0 @@
1
- import type { TypedRPCAPIDefine } from "./define.js";
2
- import type { TypedRPCRequestPacket, TypedRPCResponsePacket } from "./packet.js";
3
- import type { TypedRPCDefineToTypedRPCAPI } from "./utils.js";
4
-
5
-
6
- class TypedRPCAPI<T extends TypedRPCAPIDefine<any>>{
7
- constructor(){
8
-
9
- }
10
-
11
- interface(callback:(context:{
12
- serviceName:string,methodName:string,args:any[]
13
- }) => Promise<{
14
- request:TypedRPCRequestPacket,
15
- response:TypedRPCResponsePacket,
16
- }>):TypedRPCDefineToTypedRPCAPI<T>{
17
- return new Proxy({}, {
18
- get(target, serviceName, receiver) {
19
- if (typeof serviceName !== 'string') {
20
- return Reflect.get(target, serviceName, receiver);
21
- }
22
- return new Proxy({}, {
23
- get(target, methodName, receiver) {
24
- if (typeof methodName !== 'string') {
25
- return Reflect.get(target, methodName, receiver);
26
- }
27
-
28
- const path = `${serviceName}.${methodName}`;
29
- const id = `${serviceName}.${methodName}`;
30
-
31
- return {
32
- call: async (...args: any[]) => {
33
- const result = await callback({
34
- serviceName:serviceName,
35
- methodName:methodName,
36
- args:args,
37
- });
38
- if(result.response.error){
39
- throw result.response.error;
40
- }
41
- return result.response.result;
42
- },
43
- request:async (config:{
44
- args?:any[],
45
- callback?:(result:any,req:TypedRPCRequestPacket,res:TypedRPCResponsePacket) => void,
46
- error?:(error:any,req:TypedRPCRequestPacket,res:TypedRPCResponsePacket) => void,
47
- }) => {
48
- const result = await callback({
49
- serviceName:serviceName,
50
- methodName:methodName,
51
- args:config.args || [],
52
- });
53
- if(result.response.error){
54
- config.error?.(result.response.error,result.request,result.response);
55
- }else{
56
- config.callback?.(result.response.result,result.request,result.response);
57
- }
58
- },
59
- id,
60
- path
61
- };
62
- }
63
- });
64
- }
65
- }) as TypedRPCDefineToTypedRPCAPI<T>;
66
- }
67
- }
68
-
69
-
70
- export {
71
- TypedRPCAPI
72
- }
package/src/client.ts DELETED
@@ -1,77 +0,0 @@
1
- import { TypedRPCAPI } from "./api.js";
2
- import type { TypedRPCConnection, TypedRPCConnectionProvider } from "./connecitons/basic.js";
3
- import { TypedRPCConnectionProviderDefault } from "./connection.js";
4
- import { TypedRPCCore } from "./core.js";
5
- import { TypedRPCAPIDefine } from "./define.js";
6
-
7
- import { TypedEmitter, type TypedRPCDefineMethodBody, type TypedRPCDefineMethodName, type TypedRPCDefineServiceInstance, type TypedRPCDefineServiceName, type TypedRPCDefineToTypedRPCAPI } from "./utils.js";
8
-
9
- type TypedRPCClientConfig<T extends TypedRPCAPIDefine<any>,R extends TypedRPCAPIDefine<any>> = {
10
- local?:T,
11
- remote?:R,
12
- connection?:{
13
- provider:TypedRPCConnectionProvider,
14
- }
15
- }
16
-
17
- type TypedRPCClientEvents = {
18
- // connection:(connection:TypedRPCConnection)=>void,
19
- }
20
-
21
- class TypedRPCClient<T extends TypedRPCAPIDefine<any>,R extends TypedRPCAPIDefine<any>> {
22
-
23
- public emitter = new TypedEmitter<TypedRPCClientEvents>();
24
- private config:TypedRPCClientConfig<T,R>;
25
- public core:TypedRPCCore;
26
-
27
- constructor(config?:TypedRPCClientConfig<T,R>){
28
- const defaultConfig:TypedRPCClientConfig<T,R> = {
29
- connection:{
30
- provider:new TypedRPCConnectionProviderDefault(),
31
- }
32
- }
33
- this.config = {...defaultConfig,...config};
34
- this.core = new TypedRPCCore(this.config);
35
- }
36
-
37
- hook<S extends TypedRPCDefineServiceName<T>,M extends TypedRPCDefineMethodName<T,S>>(serviceName:S,methodName:M,config:{
38
- handler:TypedRPCDefineMethodBody<T,S,M>,
39
- bind?:any,
40
- }){
41
- return this.core.hook(serviceName,methodName,config);
42
- }
43
-
44
- hookService<S extends TypedRPCDefineServiceName<T>>(serviceName:S,instance:TypedRPCDefineServiceInstance<T,S>){
45
- const methodList = TypedRPCAPIDefine.getMethodList(instance);
46
- for(let methodName of methodList){
47
- this.hook(serviceName,methodName as TypedRPCDefineMethodName<T,S>,{
48
- handler:instance[methodName],
49
- bind:instance,
50
- })
51
- }
52
- }
53
-
54
- get use(){
55
- return this.core.handler.use.bind(this.core.handler);
56
- }
57
-
58
- get connect(){
59
- return this.core.connect.bind(this.core);
60
- }
61
-
62
- getAPI(connection:TypedRPCConnection):TypedRPCDefineToTypedRPCAPI<R>{
63
- const api = new TypedRPCAPI<R>();
64
- return api.interface(async (context) => {
65
- return await this.core.request({
66
- connection,
67
- serviceName:context.serviceName,
68
- methodName:context.methodName,
69
- args:context.args,
70
- })
71
- })
72
- }
73
- }
74
-
75
- export {
76
- TypedRPCClient,
77
- }
@@ -1,49 +0,0 @@
1
- import { TypedEmitter } from "../utils.js";
2
-
3
- type TypedRPCConnectionEvents = {
4
- /** 有新的请求进入时,应该由Provider调起 */
5
- request:(context:{
6
- data:string,
7
- response:(data:string) => void,
8
- }) => void;
9
- }
10
- abstract class TypedRPCConnection{
11
- public emitter = new TypedEmitter<TypedRPCConnectionEvents>();
12
- abstract request(data:string):Promise<string>;
13
- /** 获取连接的id */
14
- abstract getId():string;
15
- /** 关闭连接 */
16
- abstract close():boolean;
17
- /** 是否关闭 */
18
- abstract isClosed():boolean;
19
- }
20
-
21
- type TypedRPCConnectionProviderEvents = {
22
- /** 新的连接建立时 */
23
- connection:(connection:TypedRPCConnection) => void,
24
- }
25
- abstract class TypedRPCConnectionProvider{
26
- public emitter = new TypedEmitter<TypedRPCConnectionProviderEvents>();
27
- /**
28
- * Server用,用于监听一个端口
29
- */
30
- abstract listen(config:{
31
- port:number,
32
- hostname?:string,
33
- }):Promise<boolean>;
34
-
35
- /**
36
- * Server用,用于关闭监听的端口
37
- */
38
- abstract close():Promise<boolean>;
39
-
40
- /**
41
- * Client用,用于建立一个连接
42
- */
43
- abstract connect(target:string):Promise<TypedRPCConnection>;
44
- }
45
-
46
- export {
47
- TypedRPCConnection,
48
- TypedRPCConnectionProvider,
49
- }