@cardano-sdk/projection-typeorm 0.5.2 → 0.5.3-patch.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/createTypeormTipTracker.d.ts +16 -0
- package/dist/cjs/createTypeormTipTracker.d.ts.map +1 -0
- package/dist/cjs/createTypeormTipTracker.js +55 -0
- package/dist/cjs/createTypeormTipTracker.js.map +1 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/createTypeormTipTracker.d.ts +16 -0
- package/dist/esm/createTypeormTipTracker.d.ts.map +1 -0
- package/dist/esm/createTypeormTipTracker.js +51 -0
- package/dist/esm/createTypeormTipTracker.js.map +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseProjectionEvent } from '@cardano-sdk/projection';
|
|
2
|
+
import { TipOrOrigin } from '@cardano-sdk/core';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { ReconnectionConfig } from '@cardano-sdk/util-rxjs';
|
|
5
|
+
import { TypeormConnection } from './createDataSource';
|
|
6
|
+
export interface CreateTypeormTipTrackerProps {
|
|
7
|
+
connection$: Observable<TypeormConnection>;
|
|
8
|
+
reconnectionConfig: ReconnectionConfig;
|
|
9
|
+
}
|
|
10
|
+
export declare const createTypeormTipTracker: ({ connection$, reconnectionConfig }: CreateTypeormTipTrackerProps) => {
|
|
11
|
+
shutdown: () => void;
|
|
12
|
+
tip$: Observable<TipOrOrigin>;
|
|
13
|
+
trackProjectedTip: <T extends BaseProjectionEvent>() => (evt$: Observable<T>) => Observable<T>;
|
|
14
|
+
};
|
|
15
|
+
export declare type TypeormTipTracker = ReturnType<typeof createTypeormTipTracker>;
|
|
16
|
+
//# sourceMappingURL=createTypeormTipTracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createTypeormTipTracker.d.ts","sourceRoot":"","sources":["../../src/createTypeormTipTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAsB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAsD,MAAM,MAAM,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD,MAAM,WAAW,4BAA4B;IAC3C,WAAW,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAE3C,kBAAkB,EAAE,kBAAkB,CAAC;CACxC;AAED,eAAO,MAAM,uBAAuB,wCAAyC,4BAA4B;;;;CA8DxG,CAAC;AAEF,oBAAY,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createTypeormTipTracker = void 0;
|
|
4
|
+
const entity_1 = require("./entity");
|
|
5
|
+
const core_1 = require("@cardano-sdk/core");
|
|
6
|
+
const rxjs_1 = require("rxjs");
|
|
7
|
+
const backoff_rxjs_1 = require("backoff-rxjs");
|
|
8
|
+
const isRecoverableTypeormError_1 = require("./isRecoverableTypeormError");
|
|
9
|
+
const createTypeormTipTracker = ({ connection$, reconnectionConfig }) => {
|
|
10
|
+
const retryBackoffConfig = {
|
|
11
|
+
...reconnectionConfig,
|
|
12
|
+
shouldRetry: isRecoverableTypeormError_1.isRecoverableTypeormError
|
|
13
|
+
};
|
|
14
|
+
const queryLocalTip$ = connection$.pipe((0, rxjs_1.switchMap)(({ queryRunner }) => {
|
|
15
|
+
const blockRepo = queryRunner.manager.getRepository(entity_1.BlockEntity);
|
|
16
|
+
return (0, rxjs_1.from)((async () => {
|
|
17
|
+
const tipQueryResult = await blockRepo.find({
|
|
18
|
+
order: { slot: 'DESC' },
|
|
19
|
+
take: 1
|
|
20
|
+
});
|
|
21
|
+
if (tipQueryResult.length === 0) {
|
|
22
|
+
return 'origin';
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
blockNo: tipQueryResult[0].height,
|
|
26
|
+
hash: tipQueryResult[0].hash,
|
|
27
|
+
slot: tipQueryResult[0].slot
|
|
28
|
+
};
|
|
29
|
+
})());
|
|
30
|
+
}), (0, rxjs_1.take)(1), (0, backoff_rxjs_1.retryBackoff)(retryBackoffConfig));
|
|
31
|
+
const tip$ = new rxjs_1.ReplaySubject(1);
|
|
32
|
+
const trackProjectedTip = () => (evt$) => evt$.pipe((0, rxjs_1.switchMap)((evt) => {
|
|
33
|
+
if (evt.eventType === core_1.ChainSyncEventType.RollForward) {
|
|
34
|
+
tip$.next(evt.block.header);
|
|
35
|
+
return (0, rxjs_1.of)(evt);
|
|
36
|
+
}
|
|
37
|
+
return queryLocalTip$.pipe((0, rxjs_1.tap)((tip) => tip$.next(tip)), (0, rxjs_1.map)(() => evt));
|
|
38
|
+
}));
|
|
39
|
+
return {
|
|
40
|
+
shutdown: tip$.complete.bind(tip$),
|
|
41
|
+
tip$: (() => {
|
|
42
|
+
let initialized = false;
|
|
43
|
+
return new rxjs_1.Observable((subscriber) => {
|
|
44
|
+
if (!initialized) {
|
|
45
|
+
queryLocalTip$.subscribe((next) => tip$.next(next));
|
|
46
|
+
initialized = true;
|
|
47
|
+
}
|
|
48
|
+
return tip$.subscribe(subscriber);
|
|
49
|
+
});
|
|
50
|
+
})(),
|
|
51
|
+
trackProjectedTip
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
exports.createTypeormTipTracker = createTypeormTipTracker;
|
|
55
|
+
//# sourceMappingURL=createTypeormTipTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createTypeormTipTracker.js","sourceRoot":"","sources":["../../src/createTypeormTipTracker.ts"],"names":[],"mappings":";;;AACA,qCAAuC;AACvC,4CAAoE;AACpE,+BAAsF;AAEtF,+CAAgE;AAEhE,2EAAwE;AAQjE,MAAM,uBAAuB,GAAG,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAgC,EAAE,EAAE;IAC3G,MAAM,kBAAkB,GAAuB;QAC7C,GAAG,kBAAkB;QACrB,WAAW,EAAE,qDAAyB;KACvC,CAAC;IACF,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CACrC,IAAA,gBAAS,EAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;QAC5B,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,oBAAW,CAAC,CAAC;QACjE,OAAO,IAAA,WAAI,EACT,CAAC,KAAK,IAA0B,EAAE;YAIhC,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC;gBAC1C,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBACvB,IAAI,EAAE,CAAC;aACR,CAAC,CAAC;YACH,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC/B,OAAO,QAAQ,CAAC;aACjB;YACD,OAAO;gBACL,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,MAAO;gBAClC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAK;gBAC7B,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAK;aAC9B,CAAC;QACJ,CAAC,CAAC,EAAE,CACL,CAAC;IACJ,CAAC,CAAC,EACF,IAAA,WAAI,EAAC,CAAC,CAAC,EACP,IAAA,2BAAY,EAAC,kBAAkB,CAAC,CACjC,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,oBAAa,CAAc,CAAC,CAAC,CAAC;IAC/C,MAAM,iBAAiB,GACrB,GAAkC,EAAE,CACpC,CAAC,IAAmB,EAAE,EAAE,CACtB,IAAI,CAAC,IAAI,CACP,IAAA,gBAAS,EAAC,CAAC,GAAG,EAAE,EAAE;QAChB,IAAI,GAAG,CAAC,SAAS,KAAK,yBAAkB,CAAC,WAAW,EAAE;YACpD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5B,OAAO,IAAA,SAAE,EAAC,GAAG,CAAC,CAAC;SAChB;QACD,OAAO,cAAc,CAAC,IAAI,CACxB,IAAA,UAAG,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAC5B,IAAA,UAAG,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CACf,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IACN,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAClC,IAAI,EAAE,CAAC,GAAG,EAAE;YACV,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,OAAO,IAAI,iBAAU,CAAc,CAAC,UAAU,EAAE,EAAE;gBAChD,IAAI,CAAC,WAAW,EAAE;oBAEhB,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBACpD,WAAW,GAAG,IAAI,CAAC;iBACpB;gBACD,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,EAAE;QACJ,iBAAiB;KAClB,CAAC;AACJ,CAAC,CAAC;AA9DW,QAAA,uBAAuB,2BA8DlC"}
|