{"version":3,"sources":["../src/models.ts","../src/consumer.ts"],"sourcesContent":["import solace, { MessageConsumerAcknowledgeMode } from 'solclientjs'\n\nexport interface SolClientOptions {\n  /**\n   * Profile Version to use for the Solclient Factory\n   */\n  profile?: solace.SolclientFactoryProfiles\n\n  /**\n   * Log level (default = LogLevel.TRACE)\n   */\n  logLevel?: solace.LogLevel\n\n  /**\n   * Logger to use (default = console.log)\n   */\n  logger?: solace.LogImpl\n}\n\nexport interface SessionOptions {\n  /**\n   * JMS Connection URL with port (ex. tcps://ems2.swim.faa.gov:55443)\n   */\n  url: string\n\n  /**\n   * Message VPN assigned to the subscription (ex. FDPS)\n   */\n  vpnName: string\n\n  /**\n   * Connection username\n   */\n  userName: string\n\n  /**\n   * Connection password\n   */\n  password: string\n\n  /**\n   * Additional session properties to pass to the Session constructor\n   */\n  extraSessionProperties?: Partial<solace.SessionProperties>\n}\n\nexport interface MessageConsumerOptions {\n  /**\n   * Queue Name (ex. user.example.com.FDPS.824bd0a3-3aec-40eb-b68f-dc406fa2d01a.OUT)\n   */\n  queueName: string\n\n  /**\n   * Acknowledge mode to use for the MessageConsumer\n   */\n  acknowledgeMode?: MessageConsumerAcknowledgeMode\n\n  /**\n   * Disable auto acknowledge for the MessageConsumer\n   */\n  disableAutoAcknowledge?: boolean\n\n  /**\n   * Hook to send raw XML messages to that are received by the consumer\n   *\n   * @param newMessage raw xml string of message\n   * @returns void\n   */\n  onNewRawMessage?: (newMessage: string | null) => void\n\n  /**\n   * Additional message consumer properties to pass to the MessageConsumer constructor\n   */\n  extraConsumerProperties?: Partial<solace.MessageConsumerProperties>\n\n  /**\n   * Queue properties to pass to the MessageConsumer's Queue\n   */\n  queueProperties?: Partial<solace.QueueProperties>\n}\n\n/**\n * Initialization options for the SWIMConsumer\n */\nexport interface SWIMConsumerOptions {\n  /**\n   * Optional parameters to pass to the SolClient Factory to initialize the class\n   */\n  solClientOptions?: SolClientOptions\n\n  /**\n   * Options for connecting to a session (url, username, password, etc)\n   */\n  sessionOptions: SessionOptions\n\n  /**\n   * Options for the Message Consumer (queue name, mode, etc)\n   */\n  messageConsumerOptions: MessageConsumerOptions\n}\n\n/**\n * Takes an incoming `SWIMConsumerOptions` object and applies any defaults if needed.\n * Intended for internal use by the `SWIMConsumer` class. If you are just setting up\n * the configuration parameters, just use `SWIMConsumerOptions`.\n */\nexport class SWIMConsumerOptionsFactory implements SWIMConsumerOptions {\n  solClientOptions?: SolClientOptions = {\n    profile: solace.SolclientFactoryProfiles.version10,\n    logLevel: solace.LogLevel.TRACE\n  }\n\n  sessionOptions: SessionOptions\n  messageConsumerOptions: MessageConsumerOptions\n\n  constructor (options: SWIMConsumerOptions) {\n    if (options.solClientOptions) {\n      this.solClientOptions = {\n        profile: options.solClientOptions.profile\n          ? options.solClientOptions.profile\n          : solace.SolclientFactoryProfiles.version10,\n        logLevel: options.solClientOptions.logLevel\n          ? options.solClientOptions.logLevel\n          : solace.LogLevel.TRACE,\n        logger: options.solClientOptions.logger\n          ? options.solClientOptions.logger\n          : undefined\n      }\n    }\n    this.sessionOptions = options.sessionOptions\n    this.messageConsumerOptions = options.messageConsumerOptions\n  }\n}\n\nexport {\n  MessageConsumerAcknowledgeMode\n}\n","import solace from 'solclientjs'\n\nimport {\n  SWIMConsumerOptions,\n  SWIMConsumerOptionsFactory\n} from '@/models'\n\n/**\n * SWIM Consumer class\n */\nexport class SWIMConsumer {\n  private options: SWIMConsumerOptionsFactory\n  session: solace.Session\n  consumer: solace.MessageConsumer\n\n  constructor (options: SWIMConsumerOptions) {\n    this.options = new SWIMConsumerOptionsFactory(options)\n\n    const factoryOptions = new solace.SolclientFactoryProperties({\n      profile: this.options.solClientOptions?.profile,\n      logLevel: this.options.solClientOptions?.logLevel,\n      logger: this.options.solClientOptions?.logger\n    })\n    solace.SolclientFactory.init(factoryOptions)\n\n    const extraSessionProperties = this.options.sessionOptions.extraSessionProperties\n      ? this.options.sessionOptions.extraSessionProperties\n      : {}\n\n    // Setup the session for the consumer\n    this.session = solace.SolclientFactory.createSession({\n      authenticationScheme: solace.AuthenticationScheme.BASIC,\n      url: this.options.sessionOptions.url,\n      vpnName: this.options.sessionOptions.vpnName,\n      userName: this.options.sessionOptions.userName,\n      password: this.options.sessionOptions.password,\n      ...(extraSessionProperties as solace.SessionProperties)\n    })\n\n    const extraConsumerProperties = this.options.messageConsumerOptions.extraConsumerProperties\n      ? this.options.messageConsumerOptions.extraConsumerProperties\n      : {}\n\n    // Setup the MessageConsumer for the active session\n    this.consumer = this.session.createMessageConsumer({\n      acknowledgeMode: this.options.messageConsumerOptions.acknowledgeMode,\n      queueDescriptor: new solace.QueueDescriptor({\n        type: solace.QueueType.QUEUE,\n        name: this.options.messageConsumerOptions.queueName,\n        ...(extraConsumerProperties as solace.MessageConsumerProperties)\n      }),\n      queueProperties: this.options.messageConsumerOptions.queueProperties\n    })\n\n    // Setup a listener on the MESSAGE event if `onNewRawMessage` was supplied\n    if (this.options.messageConsumerOptions.onNewRawMessage) {\n      this.consumer.on(solace.MessageConsumerEventName.MESSAGE, (msg) => {\n        this.options.messageConsumerOptions.onNewRawMessage!(msg.getXmlContent())\n\n        // If the acknowledge mode is not auto, acknowledge the message\n        const isAutoAcknowledge = this.options.messageConsumerOptions.acknowledgeMode === solace.MessageConsumerAcknowledgeMode.AUTO\n        if (!this.options.messageConsumerOptions.disableAutoAcknowledge && !isAutoAcknowledge) {\n          msg.acknowledge()\n        }\n      })\n    }\n  }\n\n  /**\n   * Shortcut to session.connect() and consumer.connect()\n   */\n  connect () {\n    this.session.connect()\n    this.consumer.connect()\n  }\n\n  /**\n   * Shortcut to consumer.disconnect() and session.disconnect()\n   */\n  disconnect () {\n    this.consumer.disconnect()\n    this.session.disconnect()\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,UAAU,sCAAsC;AA0GhD,IAAM,6BAAN,MAAgE;AAAA,EASrE,YAAa,SAA8B;AAR3C,4BAAsC;AAAA,MACpC,SAAS,OAAO,yBAAyB;AAAA,MACzC,UAAU,OAAO,SAAS;AAAA,IAC5B;AAME,QAAI,QAAQ,kBAAkB;AAC5B,WAAK,mBAAmB;AAAA,QACtB,SAAS,QAAQ,iBAAiB,UAC9B,QAAQ,iBAAiB,UACzB,OAAO,yBAAyB;AAAA,QACpC,UAAU,QAAQ,iBAAiB,WAC/B,QAAQ,iBAAiB,WACzB,OAAO,SAAS;AAAA,QACpB,QAAQ,QAAQ,iBAAiB,SAC7B,QAAQ,iBAAiB,SACzB;AAAA,MACN;AAAA,IACF;AACA,SAAK,iBAAiB,QAAQ;AAC9B,SAAK,yBAAyB,QAAQ;AAAA,EACxC;AACF;;;ACpIA,OAAOA,aAAY;AAUZ,IAAM,eAAN,MAAmB;AAAA,EAKxB,YAAa,SAA8B;AAf7C;AAgBI,SAAK,UAAU,IAAI,2BAA2B,OAAO;AAErD,UAAM,iBAAiB,IAAIC,QAAO,2BAA2B;AAAA,MAC3D,UAAS,UAAK,QAAQ,qBAAb,mBAA+B;AAAA,MACxC,WAAU,UAAK,QAAQ,qBAAb,mBAA+B;AAAA,MACzC,SAAQ,UAAK,QAAQ,qBAAb,mBAA+B;AAAA,IACzC,CAAC;AACD,IAAAA,QAAO,iBAAiB,KAAK,cAAc;AAE3C,UAAM,yBAAyB,KAAK,QAAQ,eAAe,yBACvD,KAAK,QAAQ,eAAe,yBAC5B,CAAC;AAGL,SAAK,UAAUA,QAAO,iBAAiB,cAAc;AAAA,MACnD,sBAAsBA,QAAO,qBAAqB;AAAA,MAClD,KAAK,KAAK,QAAQ,eAAe;AAAA,MACjC,SAAS,KAAK,QAAQ,eAAe;AAAA,MACrC,UAAU,KAAK,QAAQ,eAAe;AAAA,MACtC,UAAU,KAAK,QAAQ,eAAe;AAAA,OAClC,uBACL;AAED,UAAM,0BAA0B,KAAK,QAAQ,uBAAuB,0BAChE,KAAK,QAAQ,uBAAuB,0BACpC,CAAC;AAGL,SAAK,WAAW,KAAK,QAAQ,sBAAsB;AAAA,MACjD,iBAAiB,KAAK,QAAQ,uBAAuB;AAAA,MACrD,iBAAiB,IAAIA,QAAO,gBAAgB;AAAA,QAC1C,MAAMA,QAAO,UAAU;AAAA,QACvB,MAAM,KAAK,QAAQ,uBAAuB;AAAA,SACtC,wBACL;AAAA,MACD,iBAAiB,KAAK,QAAQ,uBAAuB;AAAA,IACvD,CAAC;AAGD,QAAI,KAAK,QAAQ,uBAAuB,iBAAiB;AACvD,WAAK,SAAS,GAAGA,QAAO,yBAAyB,SAAS,CAAC,QAAQ;AACjE,aAAK,QAAQ,uBAAuB,gBAAiB,IAAI,cAAc,CAAC;AAGxE,cAAM,oBAAoB,KAAK,QAAQ,uBAAuB,oBAAoBA,QAAO,+BAA+B;AACxH,YAAI,CAAC,KAAK,QAAQ,uBAAuB,0BAA0B,CAAC,mBAAmB;AACrF,cAAI,YAAY;AAAA,QAClB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,UAAW;AACT,SAAK,QAAQ,QAAQ;AACrB,SAAK,SAAS,QAAQ;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAKA,aAAc;AACZ,SAAK,SAAS,WAAW;AACzB,SAAK,QAAQ,WAAW;AAAA,EAC1B;AACF;","names":["solace","solace"]}