@das3mical/adonis-mercure
Version:
A simple AdonisJS provider to interact with Mercure hub
32 lines (31 loc) • 982 B
JavaScript
import { TokenGenerator } from './token_generator.js';
import { Publisher } from './publisher.js';
export class Mercure {
#config;
#tokenGenerator;
#publisher;
constructor(config) {
this.#config = config;
this.#tokenGenerator = new TokenGenerator(config);
this.#publisher = new Publisher(config);
}
generate(payload) {
return this.#tokenGenerator.generate(payload);
}
generateSubscribeToken(topics) {
return this.#tokenGenerator.generateSubscribeToken(topics);
}
send(topics, data = {}, isPrivateOrOptions = false) {
const options = typeof isPrivateOrOptions === 'boolean' ? { private: isPrivateOrOptions } : isPrivateOrOptions;
return this.#publisher.publish(topics, data, options);
}
async ping() {
try {
await fetch(this.#config.endpoint, { method: 'HEAD' });
return true;
}
catch {
return false;
}
}
}