@couleetech/n8n-nodes-enlightenedmsp
Version:
n8n node for EnlightenedMSP ticketing and workflow automation
114 lines (113 loc) • 4.29 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.EnlightenedEvent = void 0;
class EnlightenedEvent {
constructor() {
this.description = {
displayName: 'Enlightened Event Trigger',
name: 'enlightenedEvent',
icon: 'file:enlightenedmsp.svg',
group: ['trigger'],
version: 1,
description: 'Triggers when an event is received from EnlightenedMSP',
defaults: {
name: 'Enlightened Event Trigger',
},
inputs: [],
outputs: ["main"],
credentials: [
{
name: 'enlightenedMspNats',
required: true,
},
],
properties: [
{
displayName: 'Namespace',
name: 'namespace',
type: 'string',
default: '',
required: true,
description: 'The namespace for the NATS event (e.g., "production", "staging")',
},
{
displayName: 'Queue Group',
name: 'queue',
type: 'string',
default: '',
required: false,
description: 'Optional queue group name for load balancing',
},
{
displayName: 'Event',
name: 'event',
type: 'string',
default: '',
required: true,
description: 'The event to trigger on',
},
],
};
}
async trigger() {
const namespace = this.getNodeParameter('namespace');
const queue = this.getNodeParameter('queue');
const event = this.getNodeParameter('event');
const credentials = await this.getCredentials('enlightenedMspNats');
const { connect } = await Promise.resolve().then(() => __importStar(require('nats')));
const natsConnection = await connect({
servers: credentials.natsServer,
user: credentials.username,
pass: credentials.password,
token: credentials.token,
});
const subject = `${namespace}.${event}`;
const subscription = queue
? natsConnection.subscribe(subject, { queue })
: natsConnection.subscribe(subject);
(async () => {
for await (const message of subscription) {
try {
const payload = JSON.parse(new TextDecoder().decode(message.data));
this.emit([this.helpers.returnJsonArray([payload])]);
}
catch (error) {
console.error('Error processing NATS message:', error);
}
}
})();
async function closeFunction() {
await subscription.unsubscribe();
await natsConnection.close();
}
return {
closeFunction,
async manualTriggerFunction() {
},
};
}
}
exports.EnlightenedEvent = EnlightenedEvent;