• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

snatalenko / node-cqrs / 21717407497

05 Feb 2026 03:26PM UTC coverage: 84.53% (-9.9%) from 94.396%
21717407497

Pull #28

github

web-flow
Merge 025edb883 into 828e39903
Pull Request #28: TypeScript and event dispatching pipeline refactoring

611 of 939 branches covered (65.07%)

819 of 934 new or added lines in 65 files covered. (87.69%)

59 existing lines in 13 files now uncovered.

1213 of 1435 relevant lines covered (84.53%)

28.39 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

81.25
/src/sqlite/AbstractSqliteView.ts
1
import { IContainer, IEvent, IEventLocker, ILogger, IViewLocker } from '../interfaces/index.ts';
2
import { SqliteViewLocker, SqliteViewLockerParams } from './SqliteViewLocker.ts';
8✔
3
import { SqliteEventLocker, SqliteEventLockerParams } from './SqliteEventLocker.ts';
8✔
4
import { AbstractSqliteAccessor } from './AbstractSqliteAccessor.ts';
8✔
5

6
/**
7
 * Base class for SQLite-backed projection views with restore locking and last-processed-event tracking
8
 */
9
export abstract class AbstractSqliteView extends AbstractSqliteAccessor implements IViewLocker, IEventLocker {
8✔
10

11
        protected readonly schemaVersion: string;
12
        protected readonly viewLocker: SqliteViewLocker;
13
        protected readonly eventLocker: SqliteEventLocker;
14
        protected logger: ILogger | undefined;
15

16
        get ready(): boolean {
17
                return this.viewLocker.ready;
10✔
18
        }
19

20
        constructor(options: Partial<Pick<IContainer, 'viewModelSqliteDb' | 'viewModelSqliteDbFactory' | 'logger'>>
21
                & SqliteEventLockerParams
22
                & SqliteViewLockerParams) {
23
                super(options);
8✔
24

25
                this.schemaVersion = options.schemaVersion;
8✔
26
                this.viewLocker = new SqliteViewLocker(options);
8✔
27
                this.eventLocker = new SqliteEventLocker(options);
8✔
28
                this.logger = options.logger && 'child' in options.logger ?
8!
29
                        options.logger.child({ serviceName: new.target.name }) :
30
                        options.logger;
31
        }
32

33
        async lock() {
34
                return this.viewLocker.lock();
2✔
35
        }
36

37
        unlock(): void {
38
                this.viewLocker.unlock();
2✔
39
        }
40

41
        once(event: 'ready') {
42
                return this.viewLocker.once(event);
2✔
43
        }
44

45
        getLastEvent() {
NEW
46
                return this.eventLocker.getLastEvent();
×
47
        }
48

49
        tryMarkAsProjecting(event: IEvent<any>) {
NEW
50
                return this.eventLocker.tryMarkAsProjecting(event);
×
51
        }
52

53
        markAsProjected(event: IEvent<any>) {
NEW
54
                return this.eventLocker.markAsProjected(event);
×
55
        }
56
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc