@eleven-am/pondsocket 0.1.134 → 0.1.135
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.
- package/endpoint/endpoint.js +68 -54
- package/package.json +1 -1
package/endpoint/endpoint.js
CHANGED
|
@@ -124,6 +124,73 @@ class Endpoint {
|
|
|
124
124
|
.forEach((manager) => manager.removeUser(cache.clientId, true));
|
|
125
125
|
});
|
|
126
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* @desc Builds an error message
|
|
129
|
+
* @param error - The error to build
|
|
130
|
+
* @private
|
|
131
|
+
*/
|
|
132
|
+
buildError(error) {
|
|
133
|
+
const event = {
|
|
134
|
+
event: pondsocket_common_1.ErrorTypes.INVALID_MESSAGE,
|
|
135
|
+
action: pondsocket_common_1.ServerActions.ERROR,
|
|
136
|
+
channelName: pondsocket_common_1.SystemSender.ENDPOINT,
|
|
137
|
+
requestId: (0, pondsocket_common_1.uuid)(),
|
|
138
|
+
payload: {},
|
|
139
|
+
};
|
|
140
|
+
if (error instanceof SyntaxError) {
|
|
141
|
+
event.payload = {
|
|
142
|
+
message: 'Invalid JSON',
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
else if (error instanceof Error) {
|
|
146
|
+
event.event = pondsocket_common_1.ErrorTypes.INTERNAL_SERVER_ERROR;
|
|
147
|
+
event.payload = {
|
|
148
|
+
message: error.message,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
else if (error instanceof pondError_1.PresenceError) {
|
|
152
|
+
event.event = pondsocket_common_1.ErrorTypes.PRESENCE_ERROR;
|
|
153
|
+
event.channelName = error.channel;
|
|
154
|
+
event.payload = {
|
|
155
|
+
message: error.message,
|
|
156
|
+
code: error.code,
|
|
157
|
+
action: error.event,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
else if (error instanceof pondError_1.ChannelError) {
|
|
161
|
+
event.event = pondsocket_common_1.ErrorTypes.CHANNEL_ERROR;
|
|
162
|
+
event.channelName = error.channel;
|
|
163
|
+
event.payload = {
|
|
164
|
+
message: error.message,
|
|
165
|
+
code: error.code,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
else if (error instanceof pondError_1.EndpointError) {
|
|
169
|
+
event.event = pondsocket_common_1.ErrorTypes.ENDPOINT_ERROR;
|
|
170
|
+
event.payload = {
|
|
171
|
+
message: error.message,
|
|
172
|
+
code: error.code,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
else if (error instanceof zod_1.ZodError) {
|
|
176
|
+
const message = error.errors.map((error) => {
|
|
177
|
+
if ('expected' in error && 'received' in error) {
|
|
178
|
+
return `Expected ${error.path.join('.')} to be ${error.expected}, but received ${error.received}`;
|
|
179
|
+
}
|
|
180
|
+
return `${error.path.join('.')} ${error.message}`;
|
|
181
|
+
}).join(', ');
|
|
182
|
+
event.payload = {
|
|
183
|
+
message,
|
|
184
|
+
code: 400,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
event.payload = {
|
|
189
|
+
message: 'Unknown error',
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
return event;
|
|
193
|
+
}
|
|
127
194
|
}
|
|
128
195
|
exports.Endpoint = Endpoint;
|
|
129
196
|
_Endpoint_middleware = new WeakMap(), _Endpoint_channels = new WeakMap(), _Endpoint_sockets = new WeakMap(), _Endpoint_instances = new WeakSet(), _Endpoint_sendMessage = function _Endpoint_sendMessage(socket, message) {
|
|
@@ -161,65 +228,12 @@ _Endpoint_middleware = new WeakMap(), _Endpoint_channels = new WeakMap(), _Endpo
|
|
|
161
228
|
throw new Error(`GatewayEngine: Action ${message.action} does not exist`);
|
|
162
229
|
}
|
|
163
230
|
}, _Endpoint_readMessage = function _Endpoint_readMessage(cache, message) {
|
|
164
|
-
const errorMessage = {
|
|
165
|
-
event: pondsocket_common_1.ErrorTypes.INVALID_MESSAGE,
|
|
166
|
-
action: pondsocket_common_1.ServerActions.ERROR,
|
|
167
|
-
channelName: pondsocket_common_1.SystemSender.ENDPOINT,
|
|
168
|
-
requestId: (0, pondsocket_common_1.uuid)(),
|
|
169
|
-
payload: {},
|
|
170
|
-
};
|
|
171
231
|
try {
|
|
172
232
|
const data = JSON.parse(message);
|
|
173
233
|
const result = schema_1.clientMessageSchema.parse(data);
|
|
174
234
|
__classPrivateFieldGet(this, _Endpoint_instances, "m", _Endpoint_handleMessage).call(this, cache, result);
|
|
175
235
|
}
|
|
176
236
|
catch (e) {
|
|
177
|
-
|
|
178
|
-
errorMessage.payload = {
|
|
179
|
-
message: e.message,
|
|
180
|
-
code: 400,
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
else if (e instanceof SyntaxError) {
|
|
184
|
-
errorMessage.payload = {
|
|
185
|
-
message: 'Invalid JSON',
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
else if (e instanceof Error) {
|
|
189
|
-
errorMessage.event = pondsocket_common_1.ErrorTypes.INTERNAL_SERVER_ERROR;
|
|
190
|
-
errorMessage.payload = {
|
|
191
|
-
message: e.message,
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
else if (e instanceof pondError_1.PresenceError) {
|
|
195
|
-
errorMessage.event = pondsocket_common_1.ErrorTypes.PRESENCE_ERROR;
|
|
196
|
-
errorMessage.channelName = e.channel;
|
|
197
|
-
errorMessage.payload = {
|
|
198
|
-
message: e.message,
|
|
199
|
-
code: e.code,
|
|
200
|
-
action: e.event,
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
else if (e instanceof pondError_1.ChannelError) {
|
|
204
|
-
errorMessage.event = pondsocket_common_1.ErrorTypes.CHANNEL_ERROR;
|
|
205
|
-
errorMessage.channelName = e.channel;
|
|
206
|
-
errorMessage.payload = {
|
|
207
|
-
message: e.message,
|
|
208
|
-
code: e.code,
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
else if (e instanceof pondError_1.EndpointError) {
|
|
212
|
-
errorMessage.event = pondsocket_common_1.ErrorTypes.ENDPOINT_ERROR;
|
|
213
|
-
errorMessage.payload = {
|
|
214
|
-
message: e.message,
|
|
215
|
-
code: e.code,
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
errorMessage.payload = {
|
|
220
|
-
message: 'Unknown error',
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
__classPrivateFieldGet(this, _Endpoint_instances, "m", _Endpoint_sendMessage).call(this, cache.socket, errorMessage);
|
|
237
|
+
__classPrivateFieldGet(this, _Endpoint_instances, "m", _Endpoint_sendMessage).call(this, cache.socket, this.buildError(e));
|
|
224
238
|
}
|
|
225
239
|
};
|