@mingzey/typedrpc 1.0.2 → 1.1.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 (94) hide show
  1. package/dist/api.d.ts +2 -2
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/client.d.ts +1 -1
  4. package/dist/connection.d.ts +1 -1
  5. package/dist/connection.js +1 -1
  6. package/dist/{connecitons → connections}/basic.d.ts +1 -0
  7. package/dist/connections/basic.d.ts.map +1 -0
  8. package/dist/{connecitons → connections}/basic.js.map +1 -1
  9. package/dist/{connecitons → connections}/http.d.ts.map +1 -1
  10. package/dist/{connecitons → connections}/http.js.map +1 -1
  11. package/dist/{connecitons → connections}/socket.d.ts.map +1 -1
  12. package/dist/{connecitons → connections}/socket.js +10 -10
  13. package/dist/{connecitons → connections}/socket.js.map +1 -1
  14. package/dist/{connecitons → connections}/socketio.d.ts.map +1 -1
  15. package/dist/{connecitons → connections}/socketio.js +10 -10
  16. package/dist/{connecitons → connections}/socketio.js.map +1 -1
  17. package/dist/context.d.ts +1 -1
  18. package/dist/core.d.ts +5 -2
  19. package/dist/core.d.ts.map +1 -1
  20. package/dist/core.js +20 -13
  21. package/dist/core.js.map +1 -1
  22. package/dist/handler.d.ts +1 -1
  23. package/dist/index.d.ts +5 -5
  24. package/dist/index.js +5 -5
  25. package/dist/server.d.ts +6 -8
  26. package/dist/server.d.ts.map +1 -1
  27. package/dist/server.js +3 -1
  28. package/dist/server.js.map +1 -1
  29. package/package.json +28 -29
  30. package/dist/connecitons/basic.d.ts.map +0 -1
  31. package/dist/test/TestCase.d.ts +0 -6
  32. package/dist/test/TestCase.d.ts.map +0 -1
  33. package/dist/test/TestCase.js +0 -5
  34. package/dist/test/TestCase.js.map +0 -1
  35. package/dist/test/authorization.d.ts +0 -8
  36. package/dist/test/authorization.d.ts.map +0 -1
  37. package/dist/test/authorization.js +0 -169
  38. package/dist/test/authorization.js.map +0 -1
  39. package/dist/test/basic.d.ts +0 -7
  40. package/dist/test/basic.d.ts.map +0 -1
  41. package/dist/test/basic.js +0 -35
  42. package/dist/test/basic.js.map +0 -1
  43. package/dist/test/context.d.ts +0 -7
  44. package/dist/test/context.d.ts.map +0 -1
  45. package/dist/test/context.js +0 -55
  46. package/dist/test/context.js.map +0 -1
  47. package/dist/test/expressmix.d.ts +0 -7
  48. package/dist/test/expressmix.d.ts.map +0 -1
  49. package/dist/test/expressmix.js +0 -63
  50. package/dist/test/expressmix.js.map +0 -1
  51. package/dist/test/full-duplex.d.ts +0 -12
  52. package/dist/test/full-duplex.d.ts.map +0 -1
  53. package/dist/test/full-duplex.js +0 -77
  54. package/dist/test/full-duplex.js.map +0 -1
  55. package/dist/test/socket.d.ts +0 -8
  56. package/dist/test/socket.d.ts.map +0 -1
  57. package/dist/test/socket.js +0 -71
  58. package/dist/test/socket.js.map +0 -1
  59. package/dist/test/socketio.d.ts +0 -12
  60. package/dist/test/socketio.d.ts.map +0 -1
  61. package/dist/test/socketio.js +0 -77
  62. package/dist/test/socketio.js.map +0 -1
  63. package/dist/test.d.ts +0 -2
  64. package/dist/test.d.ts.map +0 -1
  65. package/dist/test.js +0 -33
  66. package/dist/test.js.map +0 -1
  67. package/src/api.ts +0 -72
  68. package/src/client.ts +0 -77
  69. package/src/connecitons/basic.ts +0 -49
  70. package/src/connecitons/http.ts +0 -184
  71. package/src/connecitons/socket.ts +0 -247
  72. package/src/connecitons/socketio.ts +0 -200
  73. package/src/connection.ts +0 -10
  74. package/src/context.ts +0 -18
  75. package/src/core.ts +0 -130
  76. package/src/define.ts +0 -63
  77. package/src/handler.ts +0 -202
  78. package/src/index.ts +0 -41
  79. package/src/packet.ts +0 -77
  80. package/src/server.ts +0 -82
  81. package/src/test/TestCase.ts +0 -6
  82. package/src/test/authorization.ts +0 -197
  83. package/src/test/basic.ts +0 -44
  84. package/src/test/context.ts +0 -64
  85. package/src/test/expressmix.ts +0 -81
  86. package/src/test/socket.ts +0 -90
  87. package/src/test/socketio.ts +0 -96
  88. package/src/test.ts +0 -35
  89. package/src/utils.ts +0 -95
  90. /package/dist/{connecitons → connections}/basic.js +0 -0
  91. /package/dist/{connecitons → connections}/http.d.ts +0 -0
  92. /package/dist/{connecitons → connections}/http.js +0 -0
  93. /package/dist/{connecitons → connections}/socket.d.ts +0 -0
  94. /package/dist/{connecitons → connections}/socketio.d.ts +0 -0
@@ -1,247 +0,0 @@
1
- import { IdMaker, TypedEmitter } from '../utils.js';
2
- import { TypedRPCConnection, TypedRPCConnectionProvider } from './basic.js';
3
-
4
- type TypedRPCConnectionSocketPayload = {
5
- type: 'request' | 'response',
6
- id: string,
7
- data: string,
8
- }
9
-
10
- type TypedRPCConnectionMessageEvents = {
11
- receive: (data: string) => void,
12
- }
13
- class TypedRPCConnectionSocket extends TypedRPCConnection {
14
- public msgEmitter = new TypedEmitter<TypedRPCConnectionMessageEvents>();
15
- private currentId = 1;
16
- private requests: Map<string, {
17
- resolve: (data: string) => void
18
- }> = new Map();
19
-
20
- constructor(private socket: {
21
- id: string,
22
- send: (data: string) => void;
23
- close: () => boolean;
24
- isClosed: () => boolean;
25
- }) {
26
- super();
27
- // 处理外部请求
28
- this.msgEmitter.on('receive', (data) => {
29
- const recivePlayload: TypedRPCConnectionSocketPayload = JSON.parse(data);
30
- if (recivePlayload.type == 'request'
31
- && recivePlayload.id
32
- ) {
33
- this.emitter.emit('request', {// 告知TypedRPCHandler有新请求
34
- data: recivePlayload.data,
35
- response: (data) => {
36
- const sendPlayout: TypedRPCConnectionSocketPayload = {
37
- type: 'response',
38
- id: recivePlayload.id,
39
- data: data,
40
- }
41
- this.socket.send(JSON.stringify(sendPlayout));
42
- }
43
- })
44
- } else if (recivePlayload.type == 'response'
45
- && recivePlayload.id
46
- ) {
47
- this.requests.get(recivePlayload.id)?.resolve(recivePlayload.data);
48
- }
49
- })
50
- }
51
-
52
- async request(data: string): Promise<string> {
53
- const requestId = `${this.currentId++}`;
54
- const payload: TypedRPCConnectionSocketPayload = {
55
- type: 'request',
56
- id: requestId,
57
- data: data,
58
- }
59
-
60
- const requestPromise = new Promise<string>((resolve) => {
61
- this.requests.set(requestId, {
62
- resolve: resolve
63
- })
64
-
65
- // 发送数据
66
- this.socket.send(JSON.stringify(payload));
67
- }).finally(() => {
68
- this.requests.delete(requestId);
69
- })
70
- return await requestPromise;
71
- }
72
- getId(): string {
73
- return this.socket.id;
74
- }
75
- close(): boolean {
76
- return this.socket.close();
77
- }
78
- isClosed(): boolean {
79
- return this.socket.isClosed();
80
- }
81
-
82
- }
83
-
84
- class TypedRPCConnectionProviderSocket extends TypedRPCConnectionProvider {
85
-
86
- private server: import('net').Server | undefined;
87
- private sockets: Set<import('net').Socket> = new Set();
88
-
89
- async listen(config: { port: number; hostname?: string; }): Promise<boolean> {
90
- const net = await import('net').catch(() => null);
91
- if(!net){
92
- throw new Error("net module not found");
93
- }
94
- const server = net.createServer((socket) => {
95
- this.sockets.add(socket);
96
- const connection = new TypedRPCConnectionSocket({
97
- id: IdMaker.makeId(),
98
- send: (data) => {
99
- const buffer = Buffer.from(data);
100
- const length = Buffer.alloc(4);
101
- length.writeUInt32BE(buffer.length, 0);
102
- socket.write(length);
103
- socket.write(buffer);
104
- },
105
- close: () => {
106
- socket.end();
107
- return true;
108
- },
109
- isClosed: () => {
110
- return socket.destroyed;
111
- },
112
- })
113
- this.emitter.emit('connection', connection);
114
-
115
- let buffer = Buffer.alloc(0);
116
- let expectedLength: number | null = null;
117
- socket.on('data', (chunk) => {
118
- buffer = Buffer.concat([buffer, Buffer.from(chunk)]);
119
- while (buffer.length >= 4) {
120
- if (expectedLength === null) {
121
- // 读取消息长度
122
- expectedLength = buffer.readUInt32BE(0);
123
- buffer = Buffer.from(buffer.subarray(4));
124
- }
125
-
126
- if (buffer.length >= expectedLength) {
127
- // 读取完整消息
128
- const message = buffer.subarray(0, expectedLength).toString();
129
- buffer = Buffer.from(buffer.subarray(expectedLength));
130
- expectedLength = null;
131
-
132
- // 处理消息
133
- connection.msgEmitter.emit('receive', message);
134
- } else {
135
- break;
136
- }
137
- }
138
- });
139
- socket.on('end', () => {
140
- connection.close();
141
- })
142
- socket.on('close', () => {
143
- this.sockets.delete(socket);
144
- })
145
- })
146
- this.server = server;
147
- return new Promise((resolve) => {
148
- server.listen(config.port, config.hostname, () => {
149
- resolve(true);
150
- });
151
- })
152
- }
153
-
154
-
155
- async close(): Promise<boolean> {
156
- return new Promise<boolean>((resolve, reject) => {
157
- if (!this.server) {
158
- return resolve(true);
159
- }
160
- // 关闭服务器,停止所有连接
161
- this.server.close(() => {
162
- resolve(true);
163
- });
164
- this.server = undefined;
165
- // 关闭所有已建立的连接
166
- for (const socket of this.sockets) {
167
- socket.end();
168
- }
169
- this.sockets.clear();
170
- })
171
- }
172
-
173
-
174
-
175
- connect(target: string): Promise<TypedRPCConnection> {
176
- return new Promise<TypedRPCConnection>(async (resolve, reject) => {
177
- const net = await import('net').catch(() => null);
178
- if(!net){
179
- reject(new Error("net module not found"));
180
- return;
181
- }
182
- const socket = new net.Socket();
183
- const [host, port] = target.split(':');
184
- if (!host || !port
185
- || !Number.isInteger(Number(port))
186
- ) {
187
- reject(new Error('target format error'));
188
- return;
189
- }
190
- const connection = new TypedRPCConnectionSocket({
191
- id: IdMaker.makeId(),
192
- send: (data) => {
193
- const buffer = Buffer.from(data);
194
- const length = Buffer.alloc(4);
195
- length.writeUInt32BE(buffer.length, 0);
196
- socket.write(length);
197
- socket.write(buffer);
198
- },
199
- close: () => {
200
- socket.end();
201
- return true;
202
- },
203
- isClosed: () => {
204
- return socket.destroyed;
205
- }
206
- })
207
- this.emitter.emit('connection', connection);
208
- socket.on('connect', () => {
209
- resolve(connection);
210
- })
211
- let buffer = Buffer.alloc(0);
212
- let expectedLength: number | null = null;
213
- socket.on('data', (chunk) => {
214
- buffer = Buffer.concat([buffer, Buffer.from(chunk)]);
215
- while (buffer.length >= 4) {
216
- if (expectedLength === null) {
217
- // 读取消息长度
218
- expectedLength = buffer.readUInt32BE(0);
219
- buffer = Buffer.from(buffer.subarray(4));
220
- }
221
-
222
- if (buffer.length >= expectedLength) {
223
- // 读取完整消息
224
- const message = buffer.subarray(0, expectedLength).toString();
225
- buffer = Buffer.from(buffer.subarray(expectedLength));
226
- expectedLength = null;
227
-
228
- // 处理消息
229
- connection.msgEmitter.emit('receive', message);
230
- } else {
231
- break;
232
- }
233
- }
234
- });
235
- socket.on('close', () => {
236
- connection.close();
237
- })
238
- socket.connect(Number(port), host);
239
- })
240
- }
241
-
242
- }
243
-
244
- export {
245
- TypedRPCConnectionSocket,
246
- TypedRPCConnectionProviderSocket,
247
- }
@@ -1,200 +0,0 @@
1
- import { IdMaker, TypedEmitter } from "../utils.js";
2
- import { TypedRPCConnection, TypedRPCConnectionProvider } from "./basic.js";
3
-
4
-
5
-
6
- type TypedRPCConnectionSocketIOPayload = {
7
- type:'request' | 'response';
8
- id:string;
9
- data:string;
10
- }
11
- type TypedRPCConnectionMessageEvents = {
12
- receive:(data:string) => void;
13
- }
14
- class TypedRPCConnectionSocketIO extends TypedRPCConnection{
15
- public msgEmitter = new TypedEmitter<TypedRPCConnectionMessageEvents>();
16
-
17
- private currentId = 1;
18
-
19
- private requests:Map<string,{
20
- resolve:(data:string) => void
21
- }> = new Map();
22
-
23
- constructor(private socket:{
24
- id:string,
25
- send:(data:string) => void;
26
- close:() => boolean;
27
- isClosed:() => boolean;
28
- }){
29
- super();
30
-
31
- // 处理外部请求
32
- this.msgEmitter.on('receive',(data) => {
33
- // console.log(`[${this.socket.id}][R]:${data}`);
34
- const recivePlayload:TypedRPCConnectionSocketIOPayload = JSON.parse(data);
35
- if(recivePlayload.type == 'request'
36
- && recivePlayload.id
37
- ){
38
- this.emitter.emit('request',{// 告知TypedRPCHandler有新请求
39
- data:recivePlayload.data,
40
- response:(data) => {
41
- const sendPlayout:TypedRPCConnectionSocketIOPayload = {
42
- type:'response',
43
- id:recivePlayload.id,
44
- data:data,
45
- }
46
- this.socket.send(JSON.stringify(sendPlayout));
47
- }
48
- })
49
- }else if(recivePlayload.type == 'response'
50
- && recivePlayload.id
51
- ){
52
- this.requests.get(recivePlayload.id)?.resolve(recivePlayload.data);
53
- }
54
- })
55
- }
56
-
57
- async request(data: string): Promise<string> {
58
- const requestId = `${this.currentId++}`;
59
- const payload:TypedRPCConnectionSocketIOPayload = {
60
- type:'request',
61
- id:requestId,
62
- data:data,
63
- }
64
-
65
- const requestPromise = new Promise<string>((resolve) => {
66
- this.requests.set(requestId,{
67
- resolve:resolve
68
- })
69
-
70
- // 发送数据
71
- // console.log(`[${this.socket.id}][T]:${JSON.stringify(payload)}`);
72
- this.socket.send(JSON.stringify(payload));
73
- }).finally(() => {
74
- this.requests.delete(requestId);
75
- })
76
- return await requestPromise;
77
- }
78
-
79
- getId(): string {
80
- return this.socket.id;
81
- }
82
- close(): boolean {
83
- return this.socket.close();
84
- }
85
-
86
- isClosed(): boolean {
87
- return this.socket.isClosed();
88
- }
89
-
90
- }
91
-
92
- class TypedRPCConnectionProviderSocketIO extends TypedRPCConnectionProvider{
93
-
94
- private io:import("socket.io").Server | null = null;
95
-
96
- async listen(config: { port: number; hostname?: string; }): Promise<boolean> {
97
- const httpModule = await import("http").catch(() => null);
98
- if(!httpModule){
99
- throw new Error("http module not found");
100
- }
101
- const socketIOServerModule = await import("socket.io").catch(() => null);
102
- if(!socketIOServerModule){
103
- throw new Error("socket.io module not found");
104
- }
105
-
106
- const server = httpModule.createServer();
107
-
108
-
109
- const io = new socketIOServerModule.Server(server,{
110
- cors:{
111
- origin:"*",
112
- methods:["GET","POST"],
113
- },
114
- });
115
- io.on('connection',(socket) => {
116
- const connection = new TypedRPCConnectionSocketIO({
117
- id:socket.id,
118
- send:(data) => {
119
- socket.emit('message',data);
120
- },
121
- close:() => {
122
- socket.disconnect();
123
- return true;
124
- },
125
- isClosed:() => {
126
- return socket.disconnected;
127
- },
128
- });
129
- this.emitter.emit('connection',connection);// 告知TypedRPCHandler有新连接
130
- socket.on('message',(data) => {
131
- connection.msgEmitter.emit('receive',data);
132
- })
133
- socket.on('close',() => {
134
- connection.close();
135
- })
136
- })
137
- this.io = io;
138
- return new Promise<boolean>((resolve) => {
139
- server.listen(config.port,config.hostname,() => {
140
- resolve(true);
141
- })
142
- })
143
- }
144
- async close(): Promise<boolean> {
145
- return new Promise<boolean>((resolve,reject) => {
146
- if(!this.io){
147
- return resolve(true);
148
- }
149
- this.io.sockets.sockets.forEach((socket) => {
150
- socket.disconnect();
151
- })
152
- this.io.close((err) => {
153
- if(err){
154
- reject(err);
155
- }
156
- resolve(true);
157
- })
158
- this.io = null;
159
- })
160
- }
161
-
162
- async connect(target: string): Promise<TypedRPCConnection> {
163
- const SocketIOClientModule = await import("socket.io-client").catch(() => null);
164
- if(!SocketIOClientModule){
165
- throw new Error("socket.io-client module not found");
166
- }
167
- return new Promise<TypedRPCConnection>((resolve,reject) => {
168
- const socket = SocketIOClientModule.io(`ws://${target}`);
169
- const connection = new TypedRPCConnectionSocketIO({
170
- id:socket.id || IdMaker.makeId(),
171
- send:(data) => {
172
- socket.emit('message',data);
173
- },
174
- close:() => {
175
- socket.disconnect();
176
- return true;
177
- },
178
- isClosed:() => {
179
- return socket.disconnected;
180
- },
181
- });
182
- this.emitter.emit('connection',connection);// 告知TypedRPCHandler有新连接
183
- socket.on('connect',() => {
184
- resolve(connection)
185
- })
186
- socket.on('message',(data) => {
187
- connection.msgEmitter.emit('receive',data);
188
- })
189
- socket.on('close',() => {
190
- connection.close();
191
- })
192
- })
193
- }
194
-
195
- }
196
-
197
- export {
198
- TypedRPCConnectionSocketIO,
199
- TypedRPCConnectionProviderSocketIO,
200
- }
package/src/connection.ts DELETED
@@ -1,10 +0,0 @@
1
- import { TypedRPCConnectionHTTP, TypedRPCConnectionProviderHTTP } from "./connecitons/http.js";
2
-
3
-
4
- const TypedRPCConnectionDefault = TypedRPCConnectionHTTP;
5
- const TypedRPCConnectionProviderDefault = TypedRPCConnectionProviderHTTP;
6
-
7
- export {
8
- TypedRPCConnectionDefault,
9
- TypedRPCConnectionProviderDefault,
10
- }
package/src/context.ts DELETED
@@ -1,18 +0,0 @@
1
- import type { TypedRPCConnection } from "./connecitons/basic.js";
2
- import type { TypedRPCPacket } from "./packet.js"
3
-
4
- type TypedRPCContext = {
5
- connection:TypedRPCConnection,
6
- inbound?:TypedRPCPacket,
7
- outbound?:TypedRPCPacket,
8
- }
9
-
10
- export const TypedRPCContextSymbol = Symbol("TypedRPCContext");
11
- interface TypedRPCContextAware{
12
- [TypedRPCContextSymbol]:TypedRPCContext | null,
13
- }
14
-
15
- export type {
16
- TypedRPCContextAware,
17
- TypedRPCContext,
18
- }
package/src/core.ts DELETED
@@ -1,130 +0,0 @@
1
- import type { TypedRPCConnection, TypedRPCConnectionProvider } from "./connecitons/basic.js"
2
- import { TypedRPCConnectionProviderDefault } from "./connection.js"
3
- import { TypedRPCHandler } from "./handler.js"
4
- import { TypedRPCPacketFactory, type TypedRPCRequestPacket, type TypedRPCResponsePacket } from "./packet.js"
5
- import { TypedEmitter } from "./utils.js"
6
-
7
- type TypedRPCCoreConfig = {
8
- connection?:{
9
- provider:TypedRPCConnectionProvider,
10
- }
11
- }
12
-
13
- type TypedRPCCoreEvents = {
14
- connection:(connection:TypedRPCConnection)=>void,
15
- }
16
-
17
- class TypedRPCCore{
18
-
19
- public emitter = new TypedEmitter<TypedRPCCoreEvents>();
20
- private config:TypedRPCCoreConfig;
21
- public handler:TypedRPCHandler;
22
-
23
- constructor(config:TypedRPCCoreConfig){
24
- const defaultConfig:TypedRPCCoreConfig = {
25
- connection:{
26
- provider:new TypedRPCConnectionProviderDefault(),
27
- }
28
- }
29
- this.config = {...defaultConfig,...config};
30
- this.handler = new TypedRPCHandler();
31
- this.init();
32
- }
33
-
34
- private init(){
35
- const provider = this.config.connection?.provider;
36
- if(provider){
37
- provider.emitter.on('connection',(connection) => {
38
- this.emitter.emit('connection',connection);
39
- })
40
- }
41
- this.emitter.on('connection',(connection) => {
42
- // 提供对向请求处理
43
- connection.emitter.on('request',(context) => {
44
- try{
45
- const requestPacket = JSON.parse(context.data);
46
- if(!TypedRPCPacketFactory.isRequestPacket(requestPacket)){
47
- return;
48
- }
49
- this.handler.handle(connection,requestPacket,(responsePacket) => {
50
- if(!responsePacket){
51
- return;
52
- }
53
- context.response(JSON.stringify(responsePacket));
54
- });
55
- }catch(e){
56
- console.error(e);
57
- }
58
- })
59
- })
60
- }
61
-
62
- get hook(){
63
- return this.handler.hook.bind(this.handler);
64
- }
65
-
66
- public async request(config:{
67
- connection:TypedRPCConnection,
68
- serviceName:string,
69
- methodName:string,
70
- args:any[],
71
- }):Promise<{
72
- request:TypedRPCRequestPacket,
73
- response:TypedRPCResponsePacket,
74
- }>{
75
- const requestPacket = TypedRPCPacketFactory.createRequestPacket({
76
- serviceName:config.serviceName,
77
- methodName:config.methodName,
78
- args:config.args,
79
- })
80
- const responsePacket = await this.handler.request(config.connection,requestPacket).catch((e) => {
81
- return TypedRPCPacketFactory.createResponsePacket({
82
- requestId:requestPacket.id,
83
- error:e
84
- })
85
- });
86
- if(!TypedRPCPacketFactory.isResponsePacket(responsePacket)){
87
- throw new Error(`Invalid response packet:\n${JSON.stringify(responsePacket)}`);
88
- }
89
- if(responsePacket.requestId != requestPacket.id){
90
- throw new Error(`Invalid response packet:request id not match\n${JSON.stringify(requestPacket)}\n${JSON.stringify(responsePacket)}`);
91
- }
92
- return {
93
- request:requestPacket,
94
- response:responsePacket,
95
- }
96
- }
97
-
98
- public async listen(config:{
99
- port:number,
100
- hostname?:string,
101
- }):Promise<boolean>{
102
- const provider = this.config.connection?.provider;
103
- if(!provider){
104
- throw new Error("Connection provider not found");
105
- }
106
- return provider.listen(config);
107
- }
108
-
109
- public async close():Promise<boolean>{
110
- const provider = this.config.connection?.provider;
111
- if(!provider){
112
- throw new Error("Connection provider not found");
113
- }
114
- return provider.close();
115
- }
116
-
117
- public async connect(target: string):Promise<TypedRPCConnection>{
118
- const provider = this.config.connection?.provider;
119
- if(!provider){
120
- throw new Error("Connection provider not found");
121
- }
122
- const connection = await provider.connect(target);
123
- return connection;
124
- }
125
-
126
- }
127
-
128
- export {
129
- TypedRPCCore
130
- }
package/src/define.ts DELETED
@@ -1,63 +0,0 @@
1
-
2
- type TypedRPCAPIDefineType = Record<string, Record<string, any>>
3
-
4
- type TypedRPCDefineConfig = {
5
-
6
-
7
-
8
- }
9
-
10
- class TypedRPCAPIDefine<T extends TypedRPCAPIDefineType> {
11
-
12
- static TypedRPCService = Symbol('TypedRPCService');
13
- static TypedRPCMethod = Symbol('TypedRPCMethod');
14
- static TypedRPCMethodList = Symbol('TypedRPCMethodList');
15
-
16
- constructor(config?:TypedRPCAPIDefineType){
17
-
18
- }
19
-
20
- static method(){
21
- return function(target:any, propertyKey:string, descriptor:PropertyDescriptor){
22
- descriptor.value[TypedRPCAPIDefine.TypedRPCMethod] = true;
23
- if(!target[TypedRPCAPIDefine.TypedRPCService]){
24
- target[TypedRPCAPIDefine.TypedRPCService] = true;
25
- }
26
- if(!target[TypedRPCAPIDefine.TypedRPCMethodList]){
27
- target[TypedRPCAPIDefine.TypedRPCMethodList] = new Set<string>();
28
- }
29
- target[TypedRPCAPIDefine.TypedRPCMethodList].add(propertyKey);
30
- }
31
- }
32
-
33
- static isService(target:any){
34
- return target[TypedRPCAPIDefine.TypedRPCService] === true;
35
- }
36
-
37
- static isMethod(method:any){
38
- // 判断是否是方法
39
- if(typeof method !== 'function'){
40
- return false;
41
- }
42
- if(method[TypedRPCAPIDefine.TypedRPCMethod] != true){
43
- return false;
44
- }
45
- return true;
46
- }
47
-
48
- static getMethodList(service:any):string[]{
49
- if(!TypedRPCAPIDefine.isService(service)){
50
- return [];
51
- }
52
- return Array.from(service[TypedRPCAPIDefine.TypedRPCMethodList]);
53
- }
54
- }
55
-
56
-
57
- export type {
58
- TypedRPCAPIDefineType,
59
- }
60
-
61
- export {
62
- TypedRPCAPIDefine,
63
- }