UNPKG

@davidbolaji/termii-node

Version:

Node.js SDK for Termii API – send SMS, voice, OTP, and manage messaging with ease.

296 lines (295 loc) 11.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.initialize = initialize; exports.sendMessage = sendMessage; exports.sendBulkMessage = sendBulkMessage; exports.sendTemplate = sendTemplate; exports.sendCampaign = sendCampaign; exports.fetchCampaignHistory = fetchCampaignHistory; exports.retryCampaign = retryCampaign; exports.fetchContacts = fetchContacts; exports.addContact = addContact; exports.uploadContacts = uploadContacts; exports.deleteContact = deleteContact; exports.fetchPhonebooks = fetchPhonebooks; exports.createPhonebook = createPhonebook; exports.updatePhonebook = updatePhonebook; exports.deletePhonebook = deletePhonebook; exports.fetchSenderIds = fetchSenderIds; exports.requestSenderId = requestSenderId; exports.sendToken = sendToken; exports.sendEmailToken = sendEmailToken; exports.verifyToken = verifyToken; exports.generateToken = generateToken; exports.sendVoiceToken = sendVoiceToken; exports.sendVoiceCall = sendVoiceCall; exports.getBalance = getBalance; exports.authenticateEsim = authenticateEsim; exports.fetchEsimPlans = fetchEsimPlans; exports.createEsim = createEsim; exports.getEsimQrCode = getEsimQrCode; exports.getEsimUsage = getEsimUsage; exports.fetchEsims = fetchEsims; const HttpClient_1 = require("../../http/HttpClient"); const MessageService_1 = require("./MessageService"); const TemplateService_1 = require("./TemplateService"); const CampaignService_1 = require("./campaign/CampaignService"); const SenderIdService_1 = require("./SenderIdService"); const TokenService_1 = require("../token/TokenService"); const InsightService_1 = require("../insights/InsightService"); const SotelService_1 = require("../sotel/SotelService"); /** * Singleton HttpClient instance and API key storage */ let httpClient = null; let storedApiKey = null; let storedBaseUrl = undefined; /** * Initialize the SDK with API key and optional baseUrl. * Must be called before using any direct functions. * @param apiKey API key string * @param baseUrl Optional base URL string */ function initialize(apiKey, baseUrl) { storedApiKey = apiKey; storedBaseUrl = baseUrl; httpClient = new HttpClient_1.HttpClient({ apiKey, baseURL: baseUrl }); } function getHttpClient() { if (!httpClient) { if (!storedApiKey) { throw new Error("SDK not initialized. Call initialize(apiKey, baseUrl?) first."); } httpClient = new HttpClient_1.HttpClient({ apiKey: storedApiKey, baseURL: storedBaseUrl }); } return httpClient; } /** * Send a single SMS or WhatsApp message directly without instantiating MessageService. * @param payload SendMessageRequest payload * @returns Promise resolving to SendMessageResponse */ async function sendMessage(payload) { const service = new MessageService_1.MessageService(getHttpClient()); return service.sendMessage(payload); } /** * Send bulk messages directly without instantiating MessageService. * @param payload SendBulkMessageRequest payload * @returns Promise resolving to SendBulkMessageResponse */ async function sendBulkMessage(payload) { const service = new MessageService_1.MessageService(getHttpClient()); return service.sendBulkMessage(payload); } /** * Send a template message directly without instantiating TemplatesService. * @param payload SendTemplateRequest payload * @returns Promise resolving to SendTemplateResponse */ async function sendTemplate(payload) { const service = new TemplateService_1.TemplatesService(getHttpClient()); return service.sendTemplate(payload); } /** * Send a campaign message directly without instantiating CampaignService. * @param payload SendCampaignRequest payload * @returns Promise resolving to SendCampaignResponse */ async function sendCampaign(payload) { const service = new CampaignService_1.CampaignService(getHttpClient()); // The CampaignService does not have sendCampaign method, use 'campaign' property or correct method if (typeof service.sendCampaign === "function") { return service.sendCampaign(payload); } if (service.campaign && typeof service.campaign.sendCampaign === "function") { return service.campaign.sendCampaign(payload); } throw new Error("sendCampaign method not found on CampaignService"); } async function fetchCampaignHistory(campaignId) { const service = new CampaignService_1.CampaignService(getHttpClient()); return service.campaign.fetchCampaignHistory(campaignId); } async function retryCampaign(campaignId) { const service = new CampaignService_1.CampaignService(getHttpClient()); return service.campaign.retryCampaign(campaignId); } // Contact methods async function fetchContacts(phonebookId) { const service = new CampaignService_1.CampaignService(getHttpClient()); return service.contact.fetchContacts(phonebookId); } async function addContact(phonebookId, contact) { const service = new CampaignService_1.CampaignService(getHttpClient()); return service.contact.addContact(phonebookId, contact); } async function uploadContacts(request) { const service = new CampaignService_1.CampaignService(getHttpClient()); return service.contact.uploadContacts(request); } async function deleteContact(contactId) { const service = new CampaignService_1.CampaignService(getHttpClient()); return service.contact.deleteContact(contactId); } // Phonebook methods async function fetchPhonebooks() { const service = new CampaignService_1.CampaignService(getHttpClient()); return service.phonebook.fetchPhonebooks(); } async function createPhonebook(payload) { const service = new CampaignService_1.CampaignService(getHttpClient()); return service.phonebook.createPhonebook(payload); } async function updatePhonebook(phonebookId, payload) { const service = new CampaignService_1.CampaignService(getHttpClient()); return service.phonebook.updatePhonebook(phonebookId, payload); } async function deletePhonebook(phonebookId) { const service = new CampaignService_1.CampaignService(getHttpClient()); return service.phonebook.deletePhonebook(phonebookId); } /** * Fetch sender IDs directly without instantiating SenderIdService. * @param page Page number * @returns Promise resolving to sender IDs response */ async function fetchSenderIds(page) { const service = new SenderIdService_1.SenderIdService(getHttpClient()); const response = await service.fetchSenderIds(page); // Wrap response to include code and message if missing if (!('code' in response) || !('message' in response)) { return { code: 'ok', message: 'Success', ...response, }; } return response; } /** * Request new sender ID directly without instantiating SenderIdService. * @param payload SenderIdReqParam * @returns Promise resolving to sender ID request response */ async function requestSenderId(payload) { const service = new SenderIdService_1.SenderIdService(getHttpClient()); return service.requestSenderId(payload); } /** * Send OTP token directly without instantiating TokenService. * @param payload SendTokenRequest * @returns Promise resolving to SendTokenResponse */ async function sendToken(payload) { const service = new TokenService_1.TokenService(getHttpClient()); return service.sendToken(payload); } /** * Send OTP token directly without instantiating TokenService. * @param payload SendEmailTokenRequest * @returns Promise resolving to SendEmailTokenResponse */ async function sendEmailToken(payload) { const service = new TokenService_1.TokenService(getHttpClient()); return service.email.sendEmailToken(payload); } /** * Verify token directly without instantiating TokenService. * @param payload VerifyTokenRequest * @returns Promise resolving to VerifyTokenResponse */ async function verifyToken(payload) { const service = new TokenService_1.TokenService(getHttpClient()); return service.verify.verifyToken(payload); } /** * Generate inApp token directly without instantiating TokenService. * @param payload InAppTokenRequest * @returns Promise resolving to InAppTokenResponse */ async function generateToken(payload) { const service = new TokenService_1.TokenService(getHttpClient()); return service.inApp.generate(payload); } /** * Send voice OTP token directly without instantiating TokenService. * @param payload VoiceTokenRequest * @returns Promise resolving to VoiceTokenResponse */ async function sendVoiceToken(payload) { const service = new TokenService_1.TokenService(getHttpClient()); return service.sendVoiceToken(payload); } /** * Send voice call OTP token directly without instantiating TokenService. * @param payload VoiceCallRequest * @returns Promise resolving to VoiceCallResponse */ async function sendVoiceCall(payload) { const service = new TokenService_1.TokenService(getHttpClient()); return service.sendVoiceCall(payload); } /** * Fetch account balance directly without instantiating InsightService. * @returns Promise resolving to BalanceResponse */ async function getBalance() { const service = new InsightService_1.InsightService(getHttpClient()); return service.balance.getBalance(); } /** * Authenticate with API key to get a bearer token directly without instantiating EsimService. * @param payload AuthenticateRequest * @returns Promise resolving to AuthenticateResponse */ async function authenticateEsim(payload) { const service = new SotelService_1.SotelService(getHttpClient()); return service.esim.authenticate(payload); } /** * Fetch eSIM plans directly without instantiating EsimService. * @param payload FetchPlansRequest * @returns Promise resolving to FetchPlansResponse */ async function fetchEsimPlans(payload) { const service = new SotelService_1.SotelService(getHttpClient()); return service.esim.fetchPlans(payload); } /** * Create (provision) a new eSIM directly without instantiating EsimService. * @param payload CreateEsimRequest * @returns Promise resolving to CreateEsimResponse */ async function createEsim(payload) { const service = new SotelService_1.SotelService(getHttpClient()); return service.esim.createEsim(payload); } /** * Get QR code for activating an eSIM directly without instantiating EsimService. * @param iccid eSIM ICCID string * @returns Promise resolving to QrCodeResponse */ async function getEsimQrCode(iccid) { const service = new SotelService_1.SotelService(getHttpClient()); return service.esim.getQrCode(iccid); } /** * Get usage details of an eSIM directly without instantiating EsimService. * @param iccid eSIM ICCID string * @returns Promise resolving to UsageResponse */ async function getEsimUsage(iccid) { const service = new SotelService_1.SotelService(getHttpClient()); return service.esim.getUsage(iccid); } /** * Fetch list of provisioned eSIMs directly without instantiating EsimService. * @param page Page number (default 0) * @param size Page size (default 15) * @returns Promise resolving to FetchEsimsResponse */ async function fetchEsims(page = 0, size = 15) { const service = new SotelService_1.SotelService(getHttpClient()); return service.esim.fetchEsims(page, size); }