mudvault-mesh
Version:
Node.js client library for connecting to MudVault Mesh network
92 lines • 2.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createMessage = createMessage;
exports.createTellMessage = createTellMessage;
exports.createChannelMessage = createChannelMessage;
exports.createWhoRequestMessage = createWhoRequestMessage;
exports.createFingerRequestMessage = createFingerRequestMessage;
exports.createLocateRequestMessage = createLocateRequestMessage;
exports.createPingMessage = createPingMessage;
exports.createPongMessage = createPongMessage;
exports.createErrorMessage = createErrorMessage;
exports.isExpired = isExpired;
exports.sanitizeMessage = sanitizeMessage;
const uuid_1 = require("uuid");
function createMessage(type, from, to, payload, metadata) {
const defaultMetadata = {
priority: 5,
ttl: 300,
encoding: 'utf-8',
language: 'en',
...metadata
};
return {
version: '1.0',
id: (0, uuid_1.v4)(),
timestamp: new Date().toISOString(),
type,
from,
to,
payload,
metadata: defaultMetadata
};
}
function createTellMessage(from, to, message) {
return createMessage('tell', from, to, {
message
});
}
function createChannelMessage(from, channel, message, action = 'message') {
return createMessage('channel', from, { mud: '*', channel }, {
channel,
message,
action
});
}
function createWhoRequestMessage(from, targetMud) {
return createMessage('who', from, { mud: targetMud }, {
request: true
});
}
function createFingerRequestMessage(from, targetMud, targetUser) {
return createMessage('finger', from, { mud: targetMud, user: targetUser }, {
user: targetUser,
request: true
});
}
function createLocateRequestMessage(from, targetUser) {
return createMessage('locate', from, { mud: '*' }, {
user: targetUser,
request: true
});
}
function createPingMessage(from, to) {
return createMessage('ping', from, to, {
timestamp: Date.now()
});
}
function createPongMessage(from, to, originalTimestamp) {
return createMessage('pong', from, to, {
timestamp: originalTimestamp
});
}
function createErrorMessage(from, to, code, message, details) {
return createMessage('error', from, to, {
code,
message,
details
});
}
function isExpired(message) {
const messageTime = new Date(message.timestamp).getTime();
const now = Date.now();
const ttlMs = message.metadata.ttl * 1000;
return (now - messageTime) > ttlMs;
}
function sanitizeMessage(message) {
return message
.replace(/[^\x20-\x7E]/g, '')
.substring(0, 4096)
.trim();
}
//# sourceMappingURL=utils.js.map