@cardano-sdk/projection-typeorm 0.5.2 → 0.6.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.
Files changed (43) hide show
  1. package/dist/cjs/TypeormStabilityWindowBuffer.d.ts +6 -7
  2. package/dist/cjs/TypeormStabilityWindowBuffer.d.ts.map +1 -1
  3. package/dist/cjs/TypeormStabilityWindowBuffer.js +40 -108
  4. package/dist/cjs/TypeormStabilityWindowBuffer.js.map +1 -1
  5. package/dist/cjs/createDataSource.d.ts +13 -0
  6. package/dist/cjs/createDataSource.d.ts.map +1 -1
  7. package/dist/cjs/createDataSource.js +53 -2
  8. package/dist/cjs/createDataSource.js.map +1 -1
  9. package/dist/cjs/createTypeormTipTracker.d.ts +16 -0
  10. package/dist/cjs/createTypeormTipTracker.d.ts.map +1 -0
  11. package/dist/cjs/createTypeormTipTracker.js +55 -0
  12. package/dist/cjs/createTypeormTipTracker.js.map +1 -0
  13. package/dist/cjs/index.d.ts +1 -0
  14. package/dist/cjs/index.d.ts.map +1 -1
  15. package/dist/cjs/index.js +1 -0
  16. package/dist/cjs/index.js.map +1 -1
  17. package/dist/cjs/operators/withTypeormTransaction.d.ts +10 -11
  18. package/dist/cjs/operators/withTypeormTransaction.d.ts.map +1 -1
  19. package/dist/cjs/operators/withTypeormTransaction.js +4 -33
  20. package/dist/cjs/operators/withTypeormTransaction.js.map +1 -1
  21. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  22. package/dist/esm/TypeormStabilityWindowBuffer.d.ts +6 -7
  23. package/dist/esm/TypeormStabilityWindowBuffer.d.ts.map +1 -1
  24. package/dist/esm/TypeormStabilityWindowBuffer.js +41 -109
  25. package/dist/esm/TypeormStabilityWindowBuffer.js.map +1 -1
  26. package/dist/esm/createDataSource.d.ts +13 -0
  27. package/dist/esm/createDataSource.d.ts.map +1 -1
  28. package/dist/esm/createDataSource.js +49 -1
  29. package/dist/esm/createDataSource.js.map +1 -1
  30. package/dist/esm/createTypeormTipTracker.d.ts +16 -0
  31. package/dist/esm/createTypeormTipTracker.d.ts.map +1 -0
  32. package/dist/esm/createTypeormTipTracker.js +51 -0
  33. package/dist/esm/createTypeormTipTracker.js.map +1 -0
  34. package/dist/esm/index.d.ts +1 -0
  35. package/dist/esm/index.d.ts.map +1 -1
  36. package/dist/esm/index.js +1 -0
  37. package/dist/esm/index.js.map +1 -1
  38. package/dist/esm/operators/withTypeormTransaction.d.ts +10 -11
  39. package/dist/esm/operators/withTypeormTransaction.d.ts.map +1 -1
  40. package/dist/esm/operators/withTypeormTransaction.js +5 -34
  41. package/dist/esm/operators/withTypeormTransaction.js.map +1 -1
  42. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  43. package/package.json +6 -5
@@ -1,20 +1,19 @@
1
1
  import { Cardano } from '@cardano-sdk/core';
2
- import { QueryRunner } from 'typeorm';
3
2
  import { Observable } from 'rxjs';
4
3
  import { ProjectionEvent, StabilityWindowBuffer } from '@cardano-sdk/projection';
4
+ import { ReconnectionConfig } from '@cardano-sdk/util-rxjs';
5
+ import { TypeormConnection } from './createDataSource';
5
6
  import { WithLogger } from '@cardano-sdk/util';
6
7
  import { WithTypeormContext } from './operators';
7
8
  export interface TypeormStabilityWindowBufferProps extends WithLogger {
8
9
  compactBufferEveryNBlocks?: number;
9
- allowNonSequentialBlockHeights?: boolean;
10
+ connection$: Observable<TypeormConnection>;
11
+ reconnectionConfig: ReconnectionConfig;
10
12
  }
11
13
  export declare class TypeormStabilityWindowBuffer implements StabilityWindowBuffer {
12
14
  #private;
13
- readonly tip$: Observable<Cardano.Block | 'origin'>;
14
- readonly tail$: Observable<Cardano.Block | 'origin'>;
15
- constructor({ allowNonSequentialBlockHeights, compactBufferEveryNBlocks, logger }: TypeormStabilityWindowBufferProps);
15
+ constructor({ compactBufferEveryNBlocks, connection$, logger, reconnectionConfig }: TypeormStabilityWindowBufferProps);
16
+ getBlock(id: Cardano.BlockId): Observable<Cardano.Block | null>;
16
17
  storeBlockData<T extends ProjectionEvent<WithTypeormContext>>(): (evt$: Observable<T>) => Observable<T>;
17
- initialize(queryRunner: QueryRunner): Promise<void>;
18
- shutdown(): void;
19
18
  }
20
19
  //# sourceMappingURL=TypeormStabilityWindowBuffer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TypeormStabilityWindowBuffer.d.ts","sourceRoot":"","sources":["../../src/TypeormStabilityWindowBuffer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAsB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAA+B,WAAW,EAAc,MAAM,SAAS,CAAC;AAE/E,OAAO,EAAE,UAAU,EAAuC,MAAM,MAAM,CAAC;AACvE,OAAO,EACL,eAAe,EAGf,qBAAqB,EAGtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAiB,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAmBjD,MAAM,WAAW,iCAAkC,SAAQ,UAAU;IAInE,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAInC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAC1C;AAED,qBAAa,4BAA6B,YAAW,qBAAqB;;IAKxE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;IACpD,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;gBAKzC,EACV,8BAA8B,EAC9B,yBAA+B,EAC/B,MAAM,EACP,EAAE,iCAAiC;IAQpC,cAAc,CAAC,CAAC,SAAS,eAAe,CAAC,kBAAkB,CAAC,YAC5C,WAAW,CAAC,CAAC;IAUvB,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBzD,QAAQ,IAAI,IAAI;CAmHjB"}
1
+ {"version":3,"file":"TypeormStabilityWindowBuffer.d.ts","sourceRoot":"","sources":["../../src/TypeormStabilityWindowBuffer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAsB,MAAM,mBAAmB,CAAC;AAGhE,OAAO,EAAE,UAAU,EAAyD,MAAM,MAAM,CAAC;AACzF,OAAO,EAAE,eAAe,EAAoB,qBAAqB,EAAmB,MAAM,yBAAyB,CAAC;AACpH,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAiB,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,WAAW,iCAAkC,SAAQ,UAAU;IAInE,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAInC,WAAW,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAI3C,kBAAkB,EAAE,kBAAkB,CAAC;CACxC;AAED,qBAAa,4BAA6B,YAAW,qBAAqB;;gBAM5D,EACV,yBAA+B,EAC/B,WAAW,EACX,MAAM,EACN,kBAAkB,EACnB,EAAE,iCAAiC;IAUpC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAuB/D,cAAc,CAAC,CAAC,SAAS,eAAe,CAAC,kBAAkB,CAAC,YAC5C,WAAW,CAAC,CAAC;CAgD9B"}
@@ -10,72 +10,59 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
11
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
12
  };
13
- var _TypeormStabilityWindowBuffer_instances, _TypeormStabilityWindowBuffer_tail, _TypeormStabilityWindowBuffer_tip, _TypeormStabilityWindowBuffer_tip$, _TypeormStabilityWindowBuffer_tail$, _TypeormStabilityWindowBuffer_logger, _TypeormStabilityWindowBuffer_compactEvery, _TypeormStabilityWindowBuffer_allowNonSequentialBlockHeights, _TypeormStabilityWindowBuffer_findTail, _TypeormStabilityWindowBuffer_rollForward, _TypeormStabilityWindowBuffer_rollBackward, _TypeormStabilityWindowBuffer_deleteOldBlockData, _TypeormStabilityWindowBuffer_setTail, _TypeormStabilityWindowBuffer_setTip;
13
+ var _TypeormStabilityWindowBuffer_instances, _TypeormStabilityWindowBuffer_queryRunner$, _TypeormStabilityWindowBuffer_retryBackoffConfig, _TypeormStabilityWindowBuffer_logger, _TypeormStabilityWindowBuffer_compactEvery, _TypeormStabilityWindowBuffer_rollForward, _TypeormStabilityWindowBuffer_deleteOldBlockData;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.TypeormStabilityWindowBuffer = void 0;
16
16
  const entity_1 = require("./entity");
17
17
  const core_1 = require("@cardano-sdk/core");
18
18
  const typeorm_1 = require("typeorm");
19
19
  const rxjs_1 = require("rxjs");
20
+ const backoff_rxjs_1 = require("backoff-rxjs");
20
21
  const util_1 = require("@cardano-sdk/util");
21
- const pointEquals = (point1, point2) => {
22
- if (typeof point1 !== 'object') {
23
- return point1 === point2;
24
- }
25
- if (typeof point2 !== 'object') {
26
- return false;
27
- }
28
- return point1.header.hash === point2.header.hash;
29
- };
30
- const blockDataSelect = {
31
- data: true
32
- };
22
+ const isRecoverableTypeormError_1 = require("./isRecoverableTypeormError");
33
23
  class TypeormStabilityWindowBuffer {
34
- constructor({ allowNonSequentialBlockHeights, compactBufferEveryNBlocks = 100, logger }) {
24
+ constructor({ compactBufferEveryNBlocks = 100, connection$, logger, reconnectionConfig }) {
35
25
  _TypeormStabilityWindowBuffer_instances.add(this);
36
- _TypeormStabilityWindowBuffer_tail.set(this, void 0);
37
- _TypeormStabilityWindowBuffer_tip.set(this, void 0);
38
- _TypeormStabilityWindowBuffer_tip$.set(this, new rxjs_1.ReplaySubject(1));
39
- _TypeormStabilityWindowBuffer_tail$.set(this, new rxjs_1.ReplaySubject(1));
26
+ _TypeormStabilityWindowBuffer_queryRunner$.set(this, void 0);
27
+ _TypeormStabilityWindowBuffer_retryBackoffConfig.set(this, void 0);
40
28
  _TypeormStabilityWindowBuffer_logger.set(this, void 0);
41
29
  _TypeormStabilityWindowBuffer_compactEvery.set(this, void 0);
42
- _TypeormStabilityWindowBuffer_allowNonSequentialBlockHeights.set(this, void 0);
43
30
  __classPrivateFieldSet(this, _TypeormStabilityWindowBuffer_compactEvery, compactBufferEveryNBlocks, "f");
44
- __classPrivateFieldSet(this, _TypeormStabilityWindowBuffer_allowNonSequentialBlockHeights, allowNonSequentialBlockHeights, "f");
45
31
  __classPrivateFieldSet(this, _TypeormStabilityWindowBuffer_logger, (0, util_1.contextLogger)(logger, 'TypeormStabilityWindowBuffer'), "f");
46
- this.tip$ = __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_tip$, "f").asObservable();
47
- this.tail$ = __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_tail$, "f").asObservable();
48
- }
49
- storeBlockData() {
50
- return (evt$) => evt$.pipe((0, rxjs_1.concatMap)((evt) => (0, rxjs_1.from)(evt.eventType === core_1.ChainSyncEventType.RollForward ? __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_instances, "m", _TypeormStabilityWindowBuffer_rollForward).call(this, evt) : __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_instances, "m", _TypeormStabilityWindowBuffer_rollBackward).call(this, evt)).pipe((0, rxjs_1.map)(() => evt))));
32
+ __classPrivateFieldSet(this, _TypeormStabilityWindowBuffer_queryRunner$, connection$.pipe((0, rxjs_1.map)(({ queryRunner }) => queryRunner)), "f");
33
+ __classPrivateFieldSet(this, _TypeormStabilityWindowBuffer_retryBackoffConfig, {
34
+ ...reconnectionConfig,
35
+ shouldRetry: isRecoverableTypeormError_1.isRecoverableTypeormError
36
+ }, "f");
51
37
  }
52
- async initialize(queryRunner) {
53
- const repository = queryRunner.manager.getRepository(entity_1.BlockDataEntity);
54
- const [tip, tail] = await Promise.all([
55
- repository.find({
56
- order: { blockHeight: 'DESC' },
57
- select: blockDataSelect,
58
- take: 1
59
- }),
60
- __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_instances, "m", _TypeormStabilityWindowBuffer_findTail).call(this, repository)
61
- ]);
62
- __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_instances, "m", _TypeormStabilityWindowBuffer_setTip).call(this, tip[0]?.data || 'origin');
63
- __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_instances, "m", _TypeormStabilityWindowBuffer_setTail).call(this, tail[0]?.data || 'origin');
38
+ getBlock(id) {
39
+ __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_logger, "f").debug('getBlock', id);
40
+ return __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_queryRunner$, "f").pipe((0, rxjs_1.switchMap)((queryRunner) => {
41
+ __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_logger, "f").debug('getBlock query runner');
42
+ const repository = queryRunner.manager.getRepository(entity_1.BlockDataEntity);
43
+ return (0, rxjs_1.from)((async () => {
44
+ const blockDataEntity = await repository.findOne({ where: { block: { hash: id } } });
45
+ __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_logger, "f").debug('getBlock found', blockDataEntity);
46
+ return blockDataEntity?.data || null;
47
+ })());
48
+ }), (0, rxjs_1.take)(1), (0, rxjs_1.catchError)((err) => {
49
+ __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_logger, "f").error(err);
50
+ throw err;
51
+ }), (0, backoff_rxjs_1.retryBackoff)(__classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_retryBackoffConfig, "f")));
64
52
  }
65
- shutdown() {
66
- __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_tip$, "f").complete();
67
- __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_tail$, "f").complete();
53
+ storeBlockData() {
54
+ return (evt$) => evt$.pipe((0, rxjs_1.concatMap)((evt) => {
55
+ if (evt.eventType === core_1.ChainSyncEventType.RollForward &&
56
+ evt.block.header.blockNo >= evt.tip.blockNo - evt.genesisParameters.securityParameter) {
57
+ return (0, rxjs_1.from)(__classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_instances, "m", _TypeormStabilityWindowBuffer_rollForward).call(this, evt)).pipe((0, rxjs_1.map)(() => evt));
58
+ }
59
+ return (0, rxjs_1.of)(evt);
60
+ }));
68
61
  }
69
62
  }
70
63
  exports.TypeormStabilityWindowBuffer = TypeormStabilityWindowBuffer;
71
- _TypeormStabilityWindowBuffer_tail = new WeakMap(), _TypeormStabilityWindowBuffer_tip = new WeakMap(), _TypeormStabilityWindowBuffer_tip$ = new WeakMap(), _TypeormStabilityWindowBuffer_tail$ = new WeakMap(), _TypeormStabilityWindowBuffer_logger = new WeakMap(), _TypeormStabilityWindowBuffer_compactEvery = new WeakMap(), _TypeormStabilityWindowBuffer_allowNonSequentialBlockHeights = new WeakMap(), _TypeormStabilityWindowBuffer_instances = new WeakSet(), _TypeormStabilityWindowBuffer_findTail = async function _TypeormStabilityWindowBuffer_findTail(repository) {
72
- return repository.find({
73
- order: { blockHeight: 'ASC' },
74
- select: blockDataSelect,
75
- take: 1
76
- });
77
- }, _TypeormStabilityWindowBuffer_rollForward = async function _TypeormStabilityWindowBuffer_rollForward(evt) {
78
- const { eventType, transactionCommitted$, queryRunner, block } = evt;
64
+ _TypeormStabilityWindowBuffer_queryRunner$ = new WeakMap(), _TypeormStabilityWindowBuffer_retryBackoffConfig = new WeakMap(), _TypeormStabilityWindowBuffer_logger = new WeakMap(), _TypeormStabilityWindowBuffer_compactEvery = new WeakMap(), _TypeormStabilityWindowBuffer_instances = new WeakSet(), _TypeormStabilityWindowBuffer_rollForward = async function _TypeormStabilityWindowBuffer_rollForward(evt) {
65
+ const { eventType, queryRunner, block } = evt;
79
66
  const { header: { blockNo } } = block;
80
67
  const repository = queryRunner.manager.getRepository(entity_1.BlockDataEntity);
81
68
  if (eventType === core_1.ChainSyncEventType.RollForward) {
@@ -87,70 +74,15 @@ _TypeormStabilityWindowBuffer_tail = new WeakMap(), _TypeormStabilityWindowBuffe
87
74
  data: block
88
75
  });
89
76
  await Promise.all([repository.insert(blockData), __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_instances, "m", _TypeormStabilityWindowBuffer_deleteOldBlockData).call(this, evt)]);
90
- transactionCommitted$.subscribe(() => {
91
- __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_instances, "m", _TypeormStabilityWindowBuffer_setTip).call(this, block);
92
- if (__classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_tail, "f") === 'origin') {
93
- __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_instances, "m", _TypeormStabilityWindowBuffer_setTail).call(this, block);
94
- }
95
- });
96
77
  }
97
- }, _TypeormStabilityWindowBuffer_rollBackward = async function _TypeormStabilityWindowBuffer_rollBackward({ transactionCommitted$, queryRunner, block: { header: { blockNo } } }) {
98
- const repository = queryRunner.manager.getRepository(entity_1.BlockDataEntity);
99
- const prevTip = await repository.findOne({
100
- order: {
101
- blockHeight: 'DESC'
102
- },
103
- select: blockDataSelect,
104
- where: {
105
- blockHeight: (0, typeorm_1.LessThan)(blockNo)
106
- }
107
- });
108
- if (!__classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_allowNonSequentialBlockHeights, "f") && prevTip?.data && blockNo !== prevTip?.data.header.blockNo + 1) {
109
- throw new Error('Assert: inconsistent PgStabilityWindowBuffer at rollBackward');
110
- }
111
- transactionCommitted$.subscribe(() => {
112
- __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_instances, "m", _TypeormStabilityWindowBuffer_setTip).call(this, prevTip?.data || 'origin');
113
- if (!prevTip?.data) {
114
- __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_instances, "m", _TypeormStabilityWindowBuffer_setTail).call(this, 'origin');
115
- }
116
- });
117
- }, _TypeormStabilityWindowBuffer_deleteOldBlockData = async function _TypeormStabilityWindowBuffer_deleteOldBlockData({ genesisParameters: { securityParameter }, block: { header: { blockNo } }, queryRunner, transactionCommitted$ }) {
118
- if (blockNo < securityParameter || blockNo % __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_compactEvery, "f") !== 0) {
78
+ }, _TypeormStabilityWindowBuffer_deleteOldBlockData = async function _TypeormStabilityWindowBuffer_deleteOldBlockData({ genesisParameters: { securityParameter }, block: { header: { blockNo } }, queryRunner }) {
79
+ if (blockNo % __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_compactEvery, "f") !== 0) {
119
80
  return;
120
81
  }
121
82
  const repository = queryRunner.manager.getRepository(entity_1.BlockDataEntity);
122
83
  const nextTailBlockHeight = blockNo - securityParameter;
123
- let [nextTailEntity] = await Promise.all([
124
- repository.findOne({
125
- select: {
126
- data: true
127
- },
128
- where: {
129
- blockHeight: nextTailBlockHeight
130
- }
131
- }),
132
- repository.delete({
133
- blockHeight: (0, typeorm_1.LessThan)(nextTailBlockHeight)
134
- })
135
- ]);
136
- if (!nextTailEntity) {
137
- if (__classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_allowNonSequentialBlockHeights, "f")) {
138
- [nextTailEntity] = await __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_instances, "m", _TypeormStabilityWindowBuffer_findTail).call(this, repository);
139
- }
140
- else {
141
- throw new Error('Assert: inconsistent PgStabilityWindowBuffer at #deleteOldBlockData');
142
- }
143
- }
144
- transactionCommitted$.subscribe(() => __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_instances, "m", _TypeormStabilityWindowBuffer_setTail).call(this, nextTailEntity.data));
145
- }, _TypeormStabilityWindowBuffer_setTail = function _TypeormStabilityWindowBuffer_setTail(tail) {
146
- if (!pointEquals(tail, __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_tail, "f"))) {
147
- __classPrivateFieldSet(this, _TypeormStabilityWindowBuffer_tail, tail, "f");
148
- __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_tail$, "f").next(tail);
149
- }
150
- }, _TypeormStabilityWindowBuffer_setTip = function _TypeormStabilityWindowBuffer_setTip(tip) {
151
- if (!pointEquals(tip, __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_tip, "f"))) {
152
- __classPrivateFieldSet(this, _TypeormStabilityWindowBuffer_tip, tip, "f");
153
- __classPrivateFieldGet(this, _TypeormStabilityWindowBuffer_tip$, "f").next(tip);
154
- }
84
+ await repository.delete({
85
+ blockHeight: (0, typeorm_1.LessThan)(nextTailBlockHeight)
86
+ });
155
87
  };
156
88
  //# sourceMappingURL=TypeormStabilityWindowBuffer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TypeormStabilityWindowBuffer.js","sourceRoot":"","sources":["../../src/TypeormStabilityWindowBuffer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TypeormStabilityWindowBuffer.js","sourceRoot":"","sources":["../../src/TypeormStabilityWindowBuffer.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import 'reflect-metadata';
2
2
  import { DataSource, DataSourceOptions, QueryRunner } from 'typeorm';
3
3
  import { Logger } from 'ts-log';
4
+ import { Observable } from 'rxjs';
5
+ import { PgBossExtension } from './pgBoss';
4
6
  export interface DataSourceExtensions {
5
7
  pgBoss?: boolean;
6
8
  }
@@ -20,5 +22,16 @@ export interface CreateDataSourceProps {
20
22
  }
21
23
  export declare const pgBossSchemaExists: (queryRunner: QueryRunner) => Promise<boolean>;
22
24
  export declare const createDataSource: ({ connectionConfig, devOptions, options, entities, extensions, logger }: CreateDataSourceProps) => DataSource;
25
+ export declare type CreateObservableDataSourceProps = Omit<CreateDataSourceProps, 'connectionConfig'> & {
26
+ connectionConfig$: Observable<PgConnectionConfig>;
27
+ };
28
+ export declare const createObservableDataSource: ({ connectionConfig$, ...rest }: CreateObservableDataSourceProps) => Observable<DataSource>;
29
+ export interface TypeormConnection {
30
+ queryRunner: QueryRunner;
31
+ pgBoss?: PgBossExtension;
32
+ }
33
+ export declare type ConnectProps = Pick<CreateObservableDataSourceProps, 'extensions' | 'logger'>;
34
+ export declare const connect: ({ logger, extensions }: ConnectProps) => (dataSource$: Observable<DataSource>) => Observable<TypeormConnection>;
35
+ export declare const createObservableConnection: (props: CreateObservableDataSourceProps) => Observable<TypeormConnection>;
23
36
  export {};
24
37
  //# sourceMappingURL=createDataSource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createDataSource.d.ts","sourceRoot":"","sources":["../../src/createDataSource.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAkD,WAAW,EAAE,MAAM,SAAS,CAAC;AACrH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,aAAK,yBAAyB,GAAG,iBAAiB,GAAG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAE1E,oBAAY,kBAAkB,GAAG,IAAI,CACnC,yBAAyB,EACzB,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,KAAK,CAC/D,CAAC;AAEF,oBAAY,iBAAiB,GAAG,IAAI,CAAC,yBAAyB,EAAE,aAAa,GAAG,YAAY,CAAC,CAAC;AAE9F,oBAAY,cAAc,GAAG,IAAI,CAC/B,yBAAyB,EACvB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,OAAO,GACP,uBAAuB,GACvB,UAAU,GACV,OAAO,GACP,eAAe,GACf,YAAY,CACf,GAAG,EAAE,CAAC;AAEP,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,gBAAgB,EAAE,kBAAkB,CAAC;IACrC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAoDD,eAAO,MAAM,kBAAkB,gBAAuB,WAAW,qBAKhE,CAAC;AA8BF,eAAO,MAAM,gBAAgB,4EAO1B,qBAAqB,eAuBvB,CAAC"}
1
+ {"version":3,"file":"createDataSource.d.ts","sourceRoot":"","sources":["../../src/createDataSource.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAkD,WAAW,EAAE,MAAM,SAAS,CAAC;AACrH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAS,UAAU,EAA2B,MAAM,MAAM,CAAC;AAClE,OAAO,EAAE,eAAe,EAAuC,MAAM,UAAU,CAAC;AAMhF,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,aAAK,yBAAyB,GAAG,iBAAiB,GAAG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAE1E,oBAAY,kBAAkB,GAAG,IAAI,CACnC,yBAAyB,EACzB,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,KAAK,CAC/D,CAAC;AAEF,oBAAY,iBAAiB,GAAG,IAAI,CAAC,yBAAyB,EAAE,aAAa,GAAG,YAAY,CAAC,CAAC;AAE9F,oBAAY,cAAc,GAAG,IAAI,CAC/B,yBAAyB,EACvB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,OAAO,GACP,uBAAuB,GACvB,UAAU,GACV,OAAO,GACP,eAAe,GACf,YAAY,CACf,GAAG,EAAE,CAAC;AAEP,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,gBAAgB,EAAE,kBAAkB,CAAC;IACrC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAoDD,eAAO,MAAM,kBAAkB,gBAAuB,WAAW,qBAKhE,CAAC;AA8BF,eAAO,MAAM,gBAAgB,4EAO1B,qBAAqB,eAuBvB,CAAC;AAEF,oBAAY,+BAA+B,GAAG,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,GAAG;IAC9F,iBAAiB,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC;CACnD,CAAC;AAEF,eAAO,MAAM,0BAA0B,mCAAoC,+BAA+B,2BAyBvG,CAAC;AAEJ,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAsBD,oBAAY,YAAY,GAAG,IAAI,CAAC,+BAA+B,EAAE,YAAY,GAAG,QAAQ,CAAC,CAAC;AAY1F,eAAO,MAAM,OAAO,2BACO,YAAY,mBACvB,WAAW,UAAU,CAAC,kCAOjC,CAAC;AAEN,eAAO,MAAM,0BAA0B,UAAW,+BAA+B,KAAG,WAAW,iBAAiB,CACxD,CAAC"}
@@ -3,11 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createDataSource = exports.pgBossSchemaExists = void 0;
6
+ exports.createObservableConnection = exports.connect = exports.createObservableDataSource = exports.createDataSource = exports.pgBossSchemaExists = void 0;
7
7
  require("reflect-metadata");
8
8
  const typeorm_1 = require("typeorm");
9
- const util_1 = require("@cardano-sdk/util");
9
+ const rxjs_1 = require("rxjs");
10
10
  const pgBoss_1 = require("./pgBoss");
11
+ const util_1 = require("@cardano-sdk/util");
12
+ const util_rxjs_1 = require("@cardano-sdk/util-rxjs");
11
13
  const logger_1 = require("./logger");
12
14
  const snakeCase_1 = __importDefault(require("lodash/snakeCase"));
13
15
  const toTableName = (tableOrName) => (typeof tableOrName === 'string' ? tableOrName : tableOrName.name).replace('_entity', '');
@@ -110,4 +112,53 @@ const createDataSource = ({ connectionConfig, devOptions, options, entities, ext
110
112
  });
111
113
  };
112
114
  exports.createDataSource = createDataSource;
115
+ const createObservableDataSource = ({ connectionConfig$, ...rest }) => connectionConfig$.pipe((0, rxjs_1.switchMap)((connectionConfig) => (0, rxjs_1.concat)((0, rxjs_1.from)((async () => {
116
+ const dataSource = (0, exports.createDataSource)({
117
+ connectionConfig,
118
+ ...rest
119
+ });
120
+ await dataSource.initialize();
121
+ return dataSource;
122
+ })()), rxjs_1.NEVER).pipe((0, util_rxjs_1.finalizeWithLatest)(async (dataSource) => {
123
+ try {
124
+ await dataSource?.destroy();
125
+ }
126
+ catch (error) {
127
+ rest.logger.error('Failed to destroy data source', error);
128
+ }
129
+ }))));
130
+ exports.createObservableDataSource = createObservableDataSource;
131
+ const releaseConnection = ({ logger }) => async (connection) => {
132
+ if (!connection)
133
+ return;
134
+ if (connection.queryRunner.isTransactionActive) {
135
+ try {
136
+ await connection.queryRunner.rollbackTransaction();
137
+ }
138
+ catch (error) {
139
+ logger.warn('Failed to rollback transaction', error);
140
+ }
141
+ }
142
+ if (!connection.queryRunner.isReleased) {
143
+ try {
144
+ await connection.queryRunner.release();
145
+ }
146
+ catch (error) {
147
+ logger.warn('Failed to "release" query runner', error);
148
+ }
149
+ }
150
+ };
151
+ const createConnection = async (dataSource, { logger, extensions }) => {
152
+ const queryRunner = dataSource.createQueryRunner('master');
153
+ await queryRunner.connect();
154
+ if (extensions?.pgBoss) {
155
+ const pgBoss = (0, pgBoss_1.createPgBossExtension)(queryRunner, logger);
156
+ return { pgBoss, queryRunner };
157
+ }
158
+ return { queryRunner };
159
+ };
160
+ const connect = ({ logger, extensions }) => (dataSource$) => dataSource$.pipe((0, rxjs_1.switchMap)((dataSource) => (0, rxjs_1.concat)((0, rxjs_1.from)(createConnection(dataSource, { extensions, logger })), rxjs_1.NEVER).pipe((0, util_rxjs_1.finalizeWithLatest)(releaseConnection({ logger })))));
161
+ exports.connect = connect;
162
+ const createObservableConnection = (props) => (0, exports.createObservableDataSource)(props).pipe((0, exports.connect)(props));
163
+ exports.createObservableConnection = createObservableConnection;
113
164
  //# sourceMappingURL=createDataSource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createDataSource.js","sourceRoot":"","sources":["../../src/createDataSource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createDataSource.js","sourceRoot":"","sources":["../../src/createDataSource.ts"],"names":[],"mappings":"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"}
@@ -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;IAI3C,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;AAUjE,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"}
@@ -5,5 +5,6 @@ export * from './entity';
5
5
  export * from './operators';
6
6
  export * from './TypeormStabilityWindowBuffer';
7
7
  export * from './isRecoverableTypeormError';
8
+ export * from './createTypeormTipTracker';
8
9
  export { STAKE_POOL_METADATA_QUEUE, STAKE_POOL_METRICS_UPDATE, StakePoolMetadataJob, StakePoolMetricsUpdateJob, createPgBoss, createPgBossExtension } from './pgBoss';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,cAAc,oCAAoC,CAAC;AACnD,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EACzB,YAAY,EACZ,qBAAqB,EACtB,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,cAAc,oCAAoC,CAAC;AACnD,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EACzB,YAAY,EACZ,qBAAqB,EACtB,MAAM,UAAU,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -22,6 +22,7 @@ __exportStar(require("./entity"), exports);
22
22
  __exportStar(require("./operators"), exports);
23
23
  __exportStar(require("./TypeormStabilityWindowBuffer"), exports);
24
24
  __exportStar(require("./isRecoverableTypeormError"), exports);
25
+ __exportStar(require("./createTypeormTipTracker"), exports);
25
26
  var pgBoss_1 = require("./pgBoss");
26
27
  Object.defineProperty(exports, "STAKE_POOL_METADATA_QUEUE", { enumerable: true, get: function () { return pgBoss_1.STAKE_POOL_METADATA_QUEUE; } });
27
28
  Object.defineProperty(exports, "STAKE_POOL_METRICS_UPDATE", { enumerable: true, get: function () { return pgBoss_1.STAKE_POOL_METRICS_UPDATE; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4BAA0B;AAC1B,qEAAmD;AACnD,qDAAmC;AACnC,2CAAyB;AACzB,8CAA4B;AAC5B,iEAA+C;AAC/C,8DAA4C;AAC5C,mCAOkB;AANhB,mHAAA,yBAAyB,OAAA;AACzB,mHAAA,yBAAyB,OAAA;AAGzB,sGAAA,YAAY,OAAA;AACZ,+GAAA,qBAAqB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4BAA0B;AAC1B,qEAAmD;AACnD,qDAAmC;AACnC,2CAAyB;AACzB,8CAA4B;AAC5B,iEAA+C;AAC/C,8DAA4C;AAC5C,4DAA0C;AAC1C,mCAOkB;AANhB,mHAAA,yBAAyB,OAAA;AACzB,mHAAA,yBAAyB,OAAA;AAGzB,sGAAA,YAAY,OAAA;AACZ,+GAAA,qBAAqB,OAAA"}
@@ -1,25 +1,24 @@
1
- import { DataSource, QueryRunner } from 'typeorm';
2
- import { DataSourceExtensions } from '../createDataSource';
3
- import { Observable, Subject } from 'rxjs';
1
+ import { Observable } from 'rxjs';
4
2
  import { PgBossExtension } from '../pgBoss';
5
3
  import { ProjectionEvent, UnifiedExtChainSyncOperator } from '@cardano-sdk/projection';
6
- import { WithLogger } from '@cardano-sdk/util';
7
- export interface WithTypeormTransactionDependencies extends WithLogger {
8
- dataSource$: Observable<DataSource>;
4
+ import { QueryRunner } from 'typeorm';
5
+ import { TypeormConnection } from '../createDataSource';
6
+ export interface WithTypeormTransactionDependencies {
7
+ connection$: Observable<TypeormConnection>;
9
8
  }
10
9
  export interface WithTypeormContext {
11
10
  queryRunner: QueryRunner;
12
- transactionCommitted$: Subject<void>;
13
11
  }
14
12
  export interface WithPgBoss {
15
13
  pgBoss: PgBossExtension;
16
14
  }
17
15
  declare type TypeormContextProp = keyof (WithTypeormContext & WithPgBoss);
18
- export declare function withTypeormTransaction<Props>(dependencies: WithTypeormTransactionDependencies): UnifiedExtChainSyncOperator<Props, Props & WithTypeormContext>;
19
- export declare function withTypeormTransaction<Props>(dependencies: WithTypeormTransactionDependencies, extensions: {
16
+ export declare function withTypeormTransaction<Props>(dependencies: WithTypeormTransactionDependencies & {
17
+ pgBoss?: false;
18
+ }): UnifiedExtChainSyncOperator<Props, Props & WithTypeormContext>;
19
+ export declare function withTypeormTransaction<Props>(dependencies: WithTypeormTransactionDependencies & {
20
20
  pgBoss: true;
21
21
  }): UnifiedExtChainSyncOperator<Props, Props & WithTypeormContext & WithPgBoss>;
22
- export declare function withTypeormTransaction<Props>(dependencies: WithTypeormTransactionDependencies, extensions: DataSourceExtensions): UnifiedExtChainSyncOperator<Props, Props & WithTypeormContext>;
23
- export declare const typeormTransactionCommit: <T extends WithTypeormContext>() => (evt$: Observable<ProjectionEvent<T>>) => Observable<ProjectionEvent<Omit<T, keyof WithTypeormContext | "pgBoss">>>;
22
+ export declare const typeormTransactionCommit: <T extends WithTypeormContext>() => (evt$: Observable<ProjectionEvent<T>>) => Observable<ProjectionEvent<Omit<T, "pgBoss" | "queryRunner">>>;
24
23
  export {};
25
24
  //# sourceMappingURL=withTypeormTransaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"withTypeormTransaction.d.ts","sourceRoot":"","sources":["../../../src/operators/withTypeormTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAS,UAAU,EAAE,OAAO,EAAsD,MAAM,MAAM,CAAC;AACtG,OAAO,EAAE,eAAe,EAAyB,MAAM,WAAW,CAAC;AACnE,OAAO,EACL,eAAe,EAEf,2BAA2B,EAG5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI/C,MAAM,WAAW,kCAAmC,SAAQ,UAAU;IACpE,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,qBAAqB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,aAAK,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,GAAG,UAAU,CAAC,CAAC;AAGlE,wBAAgB,sBAAsB,CAAC,KAAK,EAC1C,YAAY,EAAE,kCAAkC,GAC/C,2BAA2B,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB,CAAC,CAAC;AAClE,wBAAgB,sBAAsB,CAAC,KAAK,EAC1C,YAAY,EAAE,kCAAkC,EAChD,UAAU,EAAE;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,GAC3B,2BAA2B,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB,GAAG,UAAU,CAAC,CAAC;AAC/E,wBAAgB,sBAAsB,CAAC,KAAK,EAC1C,YAAY,EAAE,kCAAkC,EAChD,UAAU,EAAE,oBAAoB,GAC/B,2BAA2B,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB,CAAC,CAAC;AAsElE,eAAO,MAAM,wBAAwB,yJAehC,CAAC"}
1
+ {"version":3,"file":"withTypeormTransaction.d.ts","sourceRoot":"","sources":["../../../src/operators/withTypeormTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAuC,MAAM,MAAM,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,eAAe,EAEf,2BAA2B,EAG5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,WAAW,kCAAkC;IACjD,WAAW,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,aAAK,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,GAAG,UAAU,CAAC,CAAC;AAGlE,wBAAgB,sBAAsB,CAAC,KAAK,EAC1C,YAAY,EAAE,kCAAkC,GAAG;IAAE,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,GACpE,2BAA2B,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB,CAAC,CAAC;AAElE,wBAAgB,sBAAsB,CAAC,KAAK,EAC1C,YAAY,EAAE,kCAAkC,GAAG;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,GAClE,2BAA2B,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB,GAAG,UAAU,CAAC,CAAC;AAkC/E,eAAO,MAAM,wBAAwB,8IAchC,CAAC"}
@@ -5,43 +5,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.typeormTransactionCommit = exports.withTypeormTransaction = void 0;
7
7
  const rxjs_1 = require("rxjs");
8
- const pgBoss_1 = require("../pgBoss");
9
8
  const projection_1 = require("@cardano-sdk/projection");
10
- const util_rxjs_1 = require("@cardano-sdk/util-rxjs");
11
9
  const omit_1 = __importDefault(require("lodash/omit"));
12
- const WithTypeormTransactionProps = ['queryRunner', 'transactionCommitted$', 'pgBoss'];
13
- function withTypeormTransaction({ dataSource$, logger }, extensions) {
14
- return (evt$) => evt$.pipe((0, projection_1.withStaticContext)((0, rxjs_1.defer)(() => dataSource$.pipe((0, rxjs_1.switchMap)((dataSource) => (0, rxjs_1.concat)((0, rxjs_1.from)((async () => {
15
- const queryRunner = dataSource.createQueryRunner('master');
16
- await queryRunner.connect();
17
- if (extensions?.pgBoss) {
18
- const pgBoss = (0, pgBoss_1.createPgBossExtension)(queryRunner, logger);
19
- return { pgBoss, queryRunner };
20
- }
21
- return { queryRunner };
22
- })()), rxjs_1.NEVER).pipe((0, util_rxjs_1.finalizeWithLatest)(async (evt) => {
23
- if (!evt)
24
- return;
25
- if (evt.queryRunner.isTransactionActive) {
26
- try {
27
- await evt.queryRunner.rollbackTransaction();
28
- }
29
- catch (error) {
30
- logger.error('Failed to rollback transaction', error);
31
- }
32
- }
33
- if (!evt.queryRunner.isReleased) {
34
- try {
35
- await evt.queryRunner.release();
36
- }
37
- catch (error) {
38
- logger.error('Failed to "release" query runner', error);
39
- }
40
- }
41
- })))))), (0, projection_1.withEventContext)(({ queryRunner }) => (0, rxjs_1.from)(queryRunner.startTransaction('SERIALIZABLE').then(() => ({ transactionCommitted$: new rxjs_1.Subject() })))));
10
+ const WithTypeormTransactionProps = ['queryRunner', 'pgBoss'];
11
+ function withTypeormTransaction({ connection$ }) {
12
+ return (evt$) => evt$.pipe((0, projection_1.withStaticContext)((0, rxjs_1.defer)(() => connection$)), (0, projection_1.withEventContext)(({ queryRunner }) => (0, rxjs_1.from)(queryRunner.startTransaction('SERIALIZABLE').then(() => ({ transactionCommitted$: new rxjs_1.Subject() })))));
42
13
  }
43
14
  exports.withTypeormTransaction = withTypeormTransaction;
44
- const typeormTransactionCommit = () => (evt$) => evt$.pipe((0, rxjs_1.mergeMap)((evt) => (0, rxjs_1.from)(evt.queryRunner.commitTransaction()).pipe((0, rxjs_1.tap)(() => evt.transactionCommitted$.next()), (0, rxjs_1.map)(() => {
15
+ const typeormTransactionCommit = () => (evt$) => evt$.pipe((0, rxjs_1.mergeMap)((evt) => (0, rxjs_1.from)(evt.queryRunner.commitTransaction()).pipe((0, rxjs_1.map)(() => {
45
16
  const result = (0, omit_1.default)(evt, WithTypeormTransactionProps);
46
17
  return result;
47
18
  }))));
@@ -1 +1 @@
1
- {"version":3,"file":"withTypeormTransaction.js","sourceRoot":"","sources":["../../../src/operators/withTypeormTransaction.ts"],"names":[],"mappings":";;;;;;AAGA,+BAAsG;AACtG,sCAAmE;AACnE,wDAMiC;AAEjC,sDAA4D;AAC5D,uDAA+B;AAgB/B,MAAM,2BAA2B,GAA8B,CAAC,aAAa,EAAE,uBAAuB,EAAE,QAAQ,CAAC,CAAC;AAkBlH,SAAgB,sBAAsB,CACpC,EAAE,WAAW,EAAE,MAAM,EAAsC,EAC3D,UAAiC;IAGjC,OAAO,CAAC,IAA0C,EAAE,EAAE,CACpD,IAAI,CAAC,IAAI,CACP,IAAA,8BAAiB,EACf,IAAA,YAAK,EAAC,GAAG,EAAE,CACT,WAAW,CAAC,IAAI,CACd,IAAA,gBAAS,EAAC,CAAC,UAAU,EAAE,EAAE,CACvB,IAAA,aAAM,EACJ,IAAA,WAAI,EACF,CAAC,KAAK,IAAI,EAAE;QACV,MAAM,WAAW,GAAG,UAAU,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,UAAU,EAAE,MAAM,EAAE;YACtB,MAAM,MAAM,GAAG,IAAA,8BAAqB,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC1D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;SAChC;QACD,OAAO,EAAE,WAAW,EAAE,CAAC;IACzB,CAAC,CAAC,EAAE,CACL,EACD,YAAK,CACN,CAAC,IAAI,CACJ,IAAA,8BAAkB,EAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC/B,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,IAAI,GAAG,CAAC,WAAW,CAAC,mBAAmB,EAAE;YACvC,IAAI;gBACF,MAAM,GAAG,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;aAC7C;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;aACvD;SACF;QACD,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE;YAC/B,IAAI;gBACF,MAAM,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;aACjC;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;aACzD;SACF;IACH,CAAC,CAAC,CACH,CACF,CACF,CACF,CACF,EACD,IAAA,6BAAgB,EAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CACnC,IAAA,WAAI,EAMF,WAAW,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,qBAAqB,EAAE,IAAI,cAAO,EAAQ,EAAE,CAAC,CAAC,CAC1G,CACF,CACF,CAAC;AACN,CAAC;AA1DD,wDA0DC;AAMM,MAAM,wBAAwB,GACnC,GAAiC,EAAE,CACnC,CAAC,IAAoC,EAA4D,EAAE,CACjG,IAAI,CAAC,IAAI,CACP,IAAA,eAAQ,EAAC,CAAC,GAAG,EAAE,EAAE,CACf,IAAA,WAAI,EAAC,GAAG,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAC5C,IAAA,UAAG,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,EAC3C,IAAA,UAAG,EAAC,GAAG,EAAE;IAGP,MAAM,MAAM,GAAG,IAAA,cAAI,EAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;IACtD,OAAO,MAAsD,CAAC;AAChE,CAAC,CAAC,CACH,CACF,CACF,CAAC;AAfO,QAAA,wBAAwB,4BAe/B"}
1
+ {"version":3,"file":"withTypeormTransaction.js","sourceRoot":"","sources":["../../../src/operators/withTypeormTransaction.ts"],"names":[],"mappings":";;;;;;AACA,+BAAuE;AAEvE,wDAMiC;AAGjC,uDAA+B;AAe/B,MAAM,2BAA2B,GAA8B,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAezF,SAAgB,sBAAsB,CAAQ,EAC5C,WAAW,EAC+C;IAK1D,OAAO,CAAC,IAA0C,EAAE,EAAE,CACpD,IAAI,CAAC,IAAI,CACP,IAAA,8BAAiB,EAAC,IAAA,YAAK,EAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,EAC3C,IAAA,6BAAgB,EAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CACnC,IAAA,WAAI,EAMF,WAAW,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,qBAAqB,EAAE,IAAI,cAAO,EAAQ,EAAE,CAAC,CAAC,CAC1G,CACF,CACF,CAAC;AACN,CAAC;AArBD,wDAqBC;AAMM,MAAM,wBAAwB,GACnC,GAAiC,EAAE,CACnC,CAAC,IAAoC,EAA4D,EAAE,CACjG,IAAI,CAAC,IAAI,CACP,IAAA,eAAQ,EAAC,CAAC,GAAG,EAAE,EAAE,CACf,IAAA,WAAI,EAAC,GAAG,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAC5C,IAAA,UAAG,EAAC,GAAG,EAAE;IAGP,MAAM,MAAM,GAAG,IAAA,cAAI,EAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;IACtD,OAAO,MAAsD,CAAC;AAChE,CAAC,CAAC,CACH,CACF,CACF,CAAC;AAdO,QAAA,wBAAwB,4BAc/B"}