UNPKG

wallet-storage

Version:

BRC100 conforming wallet, wallet storage and wallet signer components

135 lines 5.3 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MonitorDaemon = void 0; const index_all_1 = require("../index.all"); const knex_1 = require("knex"); const dotenv_1 = __importDefault(require("dotenv")); dotenv_1.default.config(); const mainDojoConnection = process.env.MAIN_DOJO_CONNECTION || ''; const testDojoConnection = process.env.TEST_DOJO_CONNECTION || ''; class MonitorDaemon { constructor(args, noRunTasks) { this.args = args; this.noRunTasks = noRunTasks; this.stopDaemon = false; /* */ } async createSetup() { this.setup = { ...this.args }; const a = this.setup; if (!a.monitor) { a.chain || (a.chain = 'test'); if (a.sqliteFilename) { a.knexConfig = { client: 'sqlite3', connection: { filename: a.sqliteFilename }, useNullAsDefault: true }; } if (a.mySQLConnection) { a.knexConfig = { client: 'mysql2', connection: JSON.parse(a.mySQLConnection), useNullAsDefault: true, pool: { min: 0, max: 7, idleTimeoutMillis: 15000 } }; } if (a.knexConfig) { a.knex = (0, knex_1.knex)(a.knexConfig); } if (a.knex) { a.storageKnexOptions = { knex: a.knex, chain: a.chain, feeModel: { model: 'sat/kb', value: 1 }, commissionSatoshis: 0 }; } if (a.storageKnexOptions) { a.storageProvider = new index_all_1.StorageKnex(a.storageKnexOptions); } if (a.storageProvider) { await a.storageProvider.makeAvailable(); const settings = await a.storageProvider.getSettings(); a.storageManager = new index_all_1.WalletStorageManager(settings.storageIdentityKey, a.storageProvider); } else if (!a.storageManager) { throw new index_all_1.sdk.WERR_INVALID_PARAMETER('storageManager', 'valid or one of mySQLConnection, knexConfig, knex, storageKnexOptions, or storageProvider'); } if (a.servicesOptions) { if (a.servicesOptions.chain != a.chain) throw new index_all_1.sdk.WERR_INVALID_PARAMETER('serviceOptions.chain', 'same as args.chain'); a.services = new index_all_1.Services(a.servicesOptions); } if (!a.services) { a.services = new index_all_1.Services(a.chain); } a.storageManager.setServices(a.services); const monitorOptions = index_all_1.Monitor.createDefaultWalletMonitorOptions(a.chain, a.storageManager, a.services); a.monitor = new index_all_1.Monitor(monitorOptions); } if (a.monitor._tasks.length === 0) { a.monitor.addMultiUserTasks(); } } async start() { var _a; if (!this.setup) await this.createSetup(); if (!((_a = this.setup) === null || _a === void 0 ? void 0 : _a.monitor)) throw new index_all_1.sdk.WERR_INTERNAL('createSetup failed to initialize setup'); const { monitor } = this.setup; if (!this.noRunTasks) { console.log('\n\nRunning startTasks\n\n'); this.doneTasks = monitor.startTasks(); } } async stop() { console.log('start of stop'); if (!this.setup || (!this.doneTasks && !this.noRunTasks) || !this.doneListening) throw new index_all_1.sdk.WERR_INTERNAL('call start or createSetup first'); const { monitor } = this.setup; monitor.stopTasks(); if (this.doneTasks) await this.doneTasks; this.doneTasks = undefined; await this.doneListening; this.doneListening = undefined; } async destroy() { if (!this.setup) return; if (this.doneTasks || this.doneListening) await this.stop(); if (this.setup.storageProvider) this.setup.storageProvider.destroy(); this.setup = undefined; } async runDaemon() { this.stopDaemon = false; for (;;) { try { await this.start(); while (!this.stopDaemon) { await (0, index_all_1.wait)(10 * 1000); } console.log('stopping'); await this.stop(); console.log('cleanup'); await this.destroy(); console.log('done'); } catch (eu) { const e = index_all_1.sdk.WalletError.fromUnknown(eu); console.log(`\n\nrunWatchman Main Error Handler\n\ncode: ${e.code}\nDescription: ${e.description}\n\n\n`); } } } } exports.MonitorDaemon = MonitorDaemon; //# sourceMappingURL=MonitorDaemon.js.map