// This process is deliberately killed by the SQLite suite at durable boundaries. require('../e2e-env.cjs'); const { ConfigService } = require('@nestjs/config'); const { TbankAccessService, } = require('../../dist/src/integrations/tbank/tbank-access.service'); const { TbankTokenService, } = require('../../dist/src/integrations/tbank/tbank-token.service'); const { BrokerageOperationsSyncService, } = require('../../dist/src/modules/investments/operations/application/brokerage-operations-sync.service'); const { BrokerageOperationsRepository, } = require('../../dist/src/modules/investments/operations/infrastructure/brokerage-operations.repository'); const { PrismaService } = require('../../dist/src/prisma/prisma.service'); const mode = process.argv[2]; const prisma = new PrismaService(new ConfigService(process.env)); const repository = new BrokerageOperationsRepository(prisma); const tokens = new TbankTokenService(new ConfigService(process.env)); const stopped = new Promise(() => {}); let handle; let pages = 0; const checkpoint = () => process.send({ checkpoint: mode, handle }); const upstream = { async getOperationsByCursor() { pages += 1; if (mode === 'between-pages' && pages === 2) { checkpoint(); return stopped; } return { hasNext: mode === 'between-pages', nextCursor: mode === 'between-pages' ? 'discard-after-restart' : '', items: [ { id: 'crash-row', date: { seconds: '1768000000' }, payment: { units: '10', nano: 1, currency: 'rub' }, }, ], }; }, }; const publish = repository.publish.bind(repository); repository.publish = async (...args) => { if (mode === 'before-publish') { checkpoint(); return stopped; } const result = await publish(...args); if (mode === 'after-publish') { checkpoint(); return stopped; } return result; }; const service = new BrokerageOperationsSyncService( repository, new TbankAccessService(prisma, tokens), upstream, { event() { process.send({ error: 'Unexpected worker persistence failure' }); }, }, ); process.on('message', () => {}); (async () => { await prisma.$connect(); handle = await service.request( 'owner', [ { accountId: 'account', from: new Date('2026-01-01Z'), to: new Date('2026-02-01Z'), }, ], true, ); })().catch((error) => { process.send({ error: error.message }); process.exitCode = 1; });