function attachLiveContext(result, context, page) { if (!result || typeof result !== 'object' || !context) return result; Object.defineProperties(result, { _erpContext: { value: context, enumerable: false }, _erpPage: { value: page || null, enumerable: false }, }); return result; } function getLiveContext(carrier) { if (!carrier || !carrier._erpContext) return null; return { context: carrier._erpContext, page: carrier._erpPage || null, }; } async function closeLiveContext(carrier) { const live = getLiveContext(carrier); if (!live) return; await live.context.close().catch(() => {}); } function shouldKeepLiveContextOpen(options = {}) { const browser = (options.config && options.config.browser) || {}; return browser.keepOpenAfterOperation === true || browser.keepContextOpen === true; } async function closeLiveContextUnlessKept(carrier, options = {}) { if (shouldKeepLiveContextOpen(options)) return false; const live = getLiveContext(carrier); if (!live) return false; await closeLiveContext(carrier); return true; } module.exports = { attachLiveContext, getLiveContext, closeLiveContext, closeLiveContextUnlessKept, shouldKeepLiveContextOpen, };