@mytmpvpn/mytmpvpn-client
Version:
MyTmpVpn Client Library
128 lines (127 loc) • 7.04 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.confirmUserFromFiles = exports.registerUserFromFiles = exports.getLoggedInClientFromFiles = exports.confirmUser = exports.registerUser = exports.getLoggedInClient = exports.getAuthModule = exports.clear = exports.init = exports.getClientModule = exports.MyTmpVpnClientImpl = exports.MyTmpVpnClient = exports.parseUserProfiles = exports.loadUserProfiles = exports.getDefaultUserProfilesDir = exports.getDefaultUsername = exports.getDefaultUserProfilesFile = exports.loadUserProfile = exports.AuthImpl = exports.getDefaultAppConfigFile = exports.loadAppConfig = exports.setVerbose = exports.client = exports.userprofiles = exports.auth = exports.appconfig = void 0;
const logging_1 = require("./logging");
const appconfig_1 = require("./appconfig");
const client = __importStar(require("./client"));
const userprofiles_1 = require("./userprofiles");
const auth_1 = require("./auth");
// Re-export all modules
exports.appconfig = __importStar(require("./appconfig"));
exports.auth = __importStar(require("./auth"));
exports.userprofiles = __importStar(require("./userprofiles"));
exports.client = __importStar(require("./client"));
// Export verbosity control for external consumers (e.g. CLI)
var logging_2 = require("./logging");
Object.defineProperty(exports, "setVerbose", { enumerable: true, get: function () { return logging_2.setVerbose; } });
// Re-export specific types and classes for direct import
var appconfig_2 = require("./appconfig");
Object.defineProperty(exports, "loadAppConfig", { enumerable: true, get: function () { return appconfig_2.loadAppConfig; } });
Object.defineProperty(exports, "getDefaultAppConfigFile", { enumerable: true, get: function () { return appconfig_2.getDefaultAppConfigFile; } });
var auth_2 = require("./auth");
Object.defineProperty(exports, "AuthImpl", { enumerable: true, get: function () { return auth_2.AuthImpl; } });
var userprofiles_2 = require("./userprofiles");
Object.defineProperty(exports, "loadUserProfile", { enumerable: true, get: function () { return userprofiles_2.loadUserProfile; } });
Object.defineProperty(exports, "getDefaultUserProfilesFile", { enumerable: true, get: function () { return userprofiles_2.getDefaultUserProfilesFile; } });
Object.defineProperty(exports, "getDefaultUsername", { enumerable: true, get: function () { return userprofiles_2.getDefaultUsername; } });
Object.defineProperty(exports, "getDefaultUserProfilesDir", { enumerable: true, get: function () { return userprofiles_2.getDefaultUserProfilesDir; } });
Object.defineProperty(exports, "loadUserProfiles", { enumerable: true, get: function () { return userprofiles_2.loadUserProfiles; } });
Object.defineProperty(exports, "parseUserProfiles", { enumerable: true, get: function () { return userprofiles_2.parseUserProfiles; } });
var client_1 = require("./client");
Object.defineProperty(exports, "MyTmpVpnClient", { enumerable: true, get: function () { return client_1.MyTmpVpnClient; } });
Object.defineProperty(exports, "MyTmpVpnClientImpl", { enumerable: true, get: function () { return client_1.MyTmpVpnClientImpl; } });
let AUTH;
function getClientModule(apiurl) {
const useMocks = process.env['MYTMPVPN_USEMOCKS'];
let result;
if (useMocks === 'true') {
logging_1.logger.info(`Using mocks according to defined environment variable MYTMPVPN_USEMOCKS=${useMocks}`);
// Dynamic require to avoid bundling mock code in production
const { MyTmpVpnClientMock } = require('./__mocks__/client');
result = new MyTmpVpnClientMock();
}
else {
result = new client.MyTmpVpnClientImpl(apiurl);
}
return result;
}
exports.getClientModule = getClientModule;
function init(appConfig, userProfile) {
const useMocks = process.env['MYTMPVPN_USEMOCKS'];
if (useMocks === 'true') {
logging_1.logger.info(`Using mocks according to defined environment variable MYTMPVPN_USEMOCKS=${useMocks}`);
const { AuthMock } = require('./__mocks__/auth');
AUTH = new AuthMock(userProfile.username);
}
else {
AUTH = new auth_1.AuthImpl(appConfig, userProfile);
}
}
exports.init = init;
function clear() {
AUTH = undefined;
}
exports.clear = clear;
// Factory functions using the interface
function getAuthModule(appConfig, userProfile) {
if (!AUTH)
init(appConfig, userProfile);
return AUTH;
}
exports.getAuthModule = getAuthModule;
async function getLoggedInClient(appConfig, userProfile) {
const auth = getAuthModule(appConfig, userProfile);
return await auth.authenticate();
}
exports.getLoggedInClient = getLoggedInClient;
async function registerUser(appConfig, userProfile) {
const auth = getAuthModule(appConfig, userProfile);
return await auth.register();
}
exports.registerUser = registerUser;
async function confirmUser(appConfig, username, code) {
const auth = getAuthModule(appConfig, { username });
return await auth.confirmRegistration(code);
}
exports.confirmUser = confirmUser;
// File-based helper functions
async function getLoggedInClientFromFiles(params) {
const appConfig = (0, appconfig_1.loadAppConfig)(params.appConfigFile);
const userProfile = (0, userprofiles_1.loadUserProfile)(params.userConfigFile, params.profileName);
return getLoggedInClient(appConfig, userProfile);
}
exports.getLoggedInClientFromFiles = getLoggedInClientFromFiles;
async function registerUserFromFiles(params) {
const appConfig = (0, appconfig_1.loadAppConfig)(params.appConfigFile);
const userProfile = (0, userprofiles_1.loadUserProfile)(params.userConfigFile, params.profileName);
return registerUser(appConfig, userProfile);
}
exports.registerUserFromFiles = registerUserFromFiles;
async function confirmUserFromFiles(params) {
const appConfig = (0, appconfig_1.loadAppConfig)(params.appConfigFile);
return confirmUser(appConfig, params.username, params.code);
}
exports.confirmUserFromFiles = confirmUserFromFiles;