@cardano-sdk/projection-typeorm 0.2.0-nightly.7 → 0.2.1-test.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 (59) hide show
  1. package/dist/cjs/createSinks.d.ts +19 -0
  2. package/dist/cjs/createSinks.d.ts.map +1 -0
  3. package/dist/cjs/createSinks.js +101 -0
  4. package/dist/cjs/createSinks.js.map +1 -0
  5. package/dist/cjs/sinks/index.d.ts +3 -0
  6. package/dist/cjs/sinks/index.d.ts.map +1 -0
  7. package/dist/cjs/sinks/index.js +8 -0
  8. package/dist/cjs/sinks/index.js.map +1 -0
  9. package/dist/cjs/sinks/stakeKeys.sink.d.ts +4 -0
  10. package/dist/cjs/sinks/stakeKeys.sink.d.ts.map +1 -0
  11. package/dist/cjs/sinks/stakeKeys.sink.js +15 -0
  12. package/dist/cjs/sinks/stakeKeys.sink.js.map +1 -0
  13. package/dist/cjs/sinks/stakePools.sink.d.ts +4 -0
  14. package/dist/cjs/sinks/stakePools.sink.d.ts.map +1 -0
  15. package/dist/cjs/sinks/stakePools.sink.js +224 -0
  16. package/dist/cjs/sinks/stakePools.sink.js.map +1 -0
  17. package/dist/cjs/sinks/util.d.ts +5 -0
  18. package/dist/cjs/sinks/util.d.ts.map +1 -0
  19. package/dist/cjs/sinks/util.js +8 -0
  20. package/dist/cjs/sinks/util.js.map +1 -0
  21. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  22. package/dist/cjs/types.d.ts +16 -0
  23. package/dist/cjs/types.d.ts.map +1 -0
  24. package/dist/cjs/types.js +3 -0
  25. package/dist/cjs/types.js.map +1 -0
  26. package/dist/cjs/util.d.ts +2 -0
  27. package/dist/cjs/util.d.ts.map +1 -0
  28. package/dist/cjs/util.js +25 -0
  29. package/dist/cjs/util.js.map +1 -0
  30. package/dist/esm/createSinks.d.ts +19 -0
  31. package/dist/esm/createSinks.d.ts.map +1 -0
  32. package/dist/esm/createSinks.js +70 -0
  33. package/dist/esm/createSinks.js.map +1 -0
  34. package/dist/esm/sinks/index.d.ts +3 -0
  35. package/dist/esm/sinks/index.d.ts.map +1 -0
  36. package/dist/esm/sinks/index.js +3 -0
  37. package/dist/esm/sinks/index.js.map +1 -0
  38. package/dist/esm/sinks/stakeKeys.sink.d.ts +4 -0
  39. package/dist/esm/sinks/stakeKeys.sink.d.ts.map +1 -0
  40. package/dist/esm/sinks/stakeKeys.sink.js +12 -0
  41. package/dist/esm/sinks/stakeKeys.sink.js.map +1 -0
  42. package/dist/esm/sinks/stakePools.sink.d.ts +4 -0
  43. package/dist/esm/sinks/stakePools.sink.d.ts.map +1 -0
  44. package/dist/esm/sinks/stakePools.sink.js +218 -0
  45. package/dist/esm/sinks/stakePools.sink.js.map +1 -0
  46. package/dist/esm/sinks/util.d.ts +5 -0
  47. package/dist/esm/sinks/util.d.ts.map +1 -0
  48. package/dist/esm/sinks/util.js +4 -0
  49. package/dist/esm/sinks/util.js.map +1 -0
  50. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  51. package/dist/esm/types.d.ts +16 -0
  52. package/dist/esm/types.d.ts.map +1 -0
  53. package/dist/esm/types.js +2 -0
  54. package/dist/esm/types.js.map +1 -0
  55. package/dist/esm/util.d.ts +2 -0
  56. package/dist/esm/util.d.ts.map +1 -0
  57. package/dist/esm/util.js +21 -0
  58. package/dist/esm/util.js.map +1 -0
  59. package/package.json +8 -8
@@ -0,0 +1,19 @@
1
+ import 'reflect-metadata';
2
+ import * as supportedSinks from './sinks';
3
+ import { DataSource } from 'typeorm';
4
+ import { Observable } from 'rxjs';
5
+ import { Projections, Sinks } from '@cardano-sdk/projection';
6
+ import { RetryBackoffConfig } from 'backoff-rxjs';
7
+ import { TypeormStabilityWindowBufferProps } from './TypeormStabilityWindowBuffer';
8
+ import { WithLogger } from '@cardano-sdk/util';
9
+ export declare type ReconnectionConfig = Omit<RetryBackoffConfig, 'shouldRetry'>;
10
+ export interface TypeormSinksProps extends TypeormStabilityWindowBufferProps, WithLogger {
11
+ dataSource$: Observable<DataSource>;
12
+ reconnectionConfig?: ReconnectionConfig;
13
+ }
14
+ export declare type SupportedProjections = Pick<Projections.AllProjections, keyof typeof supportedSinks>;
15
+ export declare const createSinks: ({ dataSource$, reconnectionConfig, logger, compactBufferEveryNBlocks, allowNonSequentialBlockHeights }: TypeormSinksProps) => Sinks<SupportedProjections>;
16
+ export declare const createSinksFactory: (props: TypeormSinksProps) => () => Sinks<SupportedProjections>;
17
+ export declare type TypeormSinks = ReturnType<typeof createSinks>;
18
+ export declare type TypeormSinksFactory = () => TypeormSinks;
19
+ //# sourceMappingURL=createSinks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSinks.d.ts","sourceRoot":"","sources":["../../src/createSinks.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,cAAc,MAAM,SAAS,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAEL,UAAU,EAYX,MAAM,MAAM,CAAC;AACd,OAAO,EAGL,WAAW,EACX,KAAK,EAGN,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAgB,MAAM,cAAc,CAAC;AAChE,OAAO,EAAgC,iCAAiC,EAAE,MAAM,gCAAgC,CAAC;AACjH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAM/C,oBAAY,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;AAGzE,MAAM,WAAW,iBAAkB,SAAQ,iCAAiC,EAAE,UAAU;IAItF,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IACpC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAID,oBAAY,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,OAAO,cAAc,CAAC,CAAC;AAmCjG,eAAO,MAAM,WAAW,2GAMrB,iBAAiB,KAAG,MAAM,oBAAoB,CA2EhD,CAAC;AAEF,eAAO,MAAM,kBAAkB,UAAW,iBAAiB,sCAA6B,CAAC;AAEzF,oBAAY,YAAY,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAE1D,oBAAY,mBAAmB,GAAG,MAAM,YAAY,CAAC"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.createSinksFactory = exports.createSinks = void 0;
30
+ require("reflect-metadata");
31
+ const supportedSinks = __importStar(require("./sinks"));
32
+ const Block_entity_1 = require("./entity/Block.entity");
33
+ const core_1 = require("@cardano-sdk/core");
34
+ const rxjs_1 = require("rxjs");
35
+ const projection_1 = require("@cardano-sdk/projection");
36
+ const backoff_rxjs_1 = require("backoff-rxjs");
37
+ const TypeormStabilityWindowBuffer_1 = require("./TypeormStabilityWindowBuffer");
38
+ const util_rxjs_1 = require("@cardano-sdk/util-rxjs");
39
+ const util_1 = require("./util");
40
+ const omit_1 = __importDefault(require("lodash/omit"));
41
+ const defaultReconnectionConfig = { initialInterval: 10, maxInterval: 5000 };
42
+ const TypeormContextProps = ['blockEntity', 'queryRunner', 'transactionCommitted$'];
43
+ const withQueryRunner = (dataSource, buffer, logger) => (0, rxjs_1.concat)((0, rxjs_1.from)((async () => {
44
+ const queryRunner = dataSource.createQueryRunner('master');
45
+ await queryRunner.connect();
46
+ await buffer.initialize(queryRunner);
47
+ return { queryRunner };
48
+ })()), rxjs_1.NEVER).pipe((0, util_rxjs_1.finalizeWithLatest)(async (evt) => {
49
+ if (!evt)
50
+ return;
51
+ if (evt.queryRunner.isTransactionActive) {
52
+ try {
53
+ await evt.queryRunner.rollbackTransaction();
54
+ }
55
+ catch (error) {
56
+ logger.error('Failed to rollback transaction', error);
57
+ }
58
+ }
59
+ if (!evt.queryRunner.isReleased) {
60
+ try {
61
+ await evt.queryRunner.release();
62
+ }
63
+ catch (error) {
64
+ logger.error('Failed to "release" query runner', error);
65
+ }
66
+ }
67
+ }));
68
+ const createSinks = ({ dataSource$, reconnectionConfig, logger, compactBufferEveryNBlocks, allowNonSequentialBlockHeights }) => {
69
+ const buffer = new TypeormStabilityWindowBuffer_1.TypeormStabilityWindowBuffer({ allowNonSequentialBlockHeights, compactBufferEveryNBlocks }, { logger });
70
+ return {
71
+ after: (evt$) => evt$.pipe((0, rxjs_1.concatMap)((evt) => (0, rxjs_1.from)(evt.queryRunner.commitTransaction()).pipe((0, rxjs_1.tap)(() => evt.transactionCommitted$.next()), (0, rxjs_1.map)(() => (0, omit_1.default)(evt, TypeormContextProps)))), (0, backoff_rxjs_1.retryBackoff)({
72
+ ...reconnectionConfig,
73
+ ...defaultReconnectionConfig,
74
+ shouldRetry: (error) => (0, util_1.isRecoverableTypeormError)(error)
75
+ }), (0, rxjs_1.finalize)(() => buffer.shutdown())),
76
+ before: (evt$) => evt$.pipe((0, rxjs_1.share)({
77
+ connector: () => new rxjs_1.ReplaySubject(1),
78
+ resetOnComplete: false,
79
+ resetOnError: true,
80
+ resetOnRefCountZero: () => (0, rxjs_1.timer)(3000)
81
+ }), projection_1.Operators.withStaticContext(dataSource$.pipe((0, rxjs_1.switchMap)((dataSource) => withQueryRunner(dataSource, buffer, logger)))), projection_1.Operators.withEventContext(({ queryRunner }) => (0, rxjs_1.from)(queryRunner.startTransaction('SERIALIZABLE').then(() => ({ transactionCommitted$: new rxjs_1.Subject() })))), projection_1.Operators.withEventContext(({ block, queryRunner, eventType }) => {
82
+ const repository = queryRunner.manager.getRepository(Block_entity_1.BlockEntity);
83
+ const blockEntity = repository.create({
84
+ hash: block.header.hash,
85
+ height: block.header.blockNo,
86
+ slot: block.header.slot
87
+ });
88
+ return (0, rxjs_1.from)(eventType === core_1.ChainSyncEventType.RollForward
89
+ ? repository.insert(blockEntity)
90
+ : repository.delete({
91
+ hash: blockEntity.hash
92
+ })).pipe((0, rxjs_1.map)(() => ({ blockEntity })));
93
+ })),
94
+ buffer,
95
+ projectionSinks: supportedSinks
96
+ };
97
+ };
98
+ exports.createSinks = createSinks;
99
+ const createSinksFactory = (props) => () => (0, exports.createSinks)(props);
100
+ exports.createSinksFactory = createSinksFactory;
101
+ //# sourceMappingURL=createSinks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSinks.js","sourceRoot":"","sources":["../../src/createSinks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { stakeKeys } from './stakeKeys.sink';
2
+ export { stakePools } from './stakePools.sink';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sinks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stakePools = exports.stakeKeys = void 0;
4
+ var stakeKeys_sink_1 = require("./stakeKeys.sink");
5
+ Object.defineProperty(exports, "stakeKeys", { enumerable: true, get: function () { return stakeKeys_sink_1.stakeKeys; } });
6
+ var stakePools_sink_1 = require("./stakePools.sink");
7
+ Object.defineProperty(exports, "stakePools", { enumerable: true, get: function () { return stakePools_sink_1.stakePools; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sinks/index.ts"],"names":[],"mappings":";;;AAAA,mDAA6C;AAApC,2GAAA,SAAS,OAAA;AAClB,qDAA+C;AAAtC,6GAAA,UAAU,OAAA"}
@@ -0,0 +1,4 @@
1
+ import { Projections } from '@cardano-sdk/projection';
2
+ import { TypeormSink } from '../types';
3
+ export declare const stakeKeys: TypeormSink<Projections.StakeKeysProjection>;
4
+ //# sourceMappingURL=stakeKeys.sink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakeKeys.sink.d.ts","sourceRoot":"","sources":["../../../src/sinks/stakeKeys.sink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,eAAO,MAAM,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,mBAAmB,CAQlE,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stakeKeys = void 0;
4
+ const StakeKey_entity_1 = require("../entity/StakeKey.entity");
5
+ const rxjs_1 = require("rxjs");
6
+ exports.stakeKeys = {
7
+ entities: [StakeKey_entity_1.StakeKeyEntity],
8
+ sink({ stakeKeys: { insert, del }, queryRunner }) {
9
+ const repository = queryRunner.manager.getRepository(StakeKey_entity_1.StakeKeyEntity);
10
+ const createAll = insert.length > 0 ? repository.insert(insert.map((hash) => ({ hash }))) : Promise.resolve();
11
+ const deleteAll = del.length > 0 ? repository.delete(del) : Promise.resolve();
12
+ return (0, rxjs_1.from)(Promise.all([createAll, deleteAll])).pipe((0, rxjs_1.map)(() => void 0));
13
+ }
14
+ };
15
+ //# sourceMappingURL=stakeKeys.sink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakeKeys.sink.js","sourceRoot":"","sources":["../../../src/sinks/stakeKeys.sink.ts"],"names":[],"mappings":";;;AACA,+DAA2D;AAE3D,+BAAiC;AAEpB,QAAA,SAAS,GAAiD;IACrE,QAAQ,EAAE,CAAC,gCAAc,CAAC;IAC1B,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE;QAC9C,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,gCAAc,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC9G,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC9E,OAAO,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAA,UAAG,EAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Projections } from '@cardano-sdk/projection';
2
+ import { TypeormSink } from '../types';
3
+ export declare const stakePools: TypeormSink<Projections.StakePoolsProjection>;
4
+ //# sourceMappingURL=stakePools.sink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakePools.sink.d.ts","sourceRoot":"","sources":["../../../src/sinks/stakePools.sink.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAoB,MAAM,UAAU,CAAC;AAoSzD,eAAO,MAAM,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC,oBAAoB,CAKpE,CAAC"}
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.stakePools = void 0;
7
+ const core_1 = require("@cardano-sdk/core");
8
+ const typeorm_1 = require("typeorm");
9
+ const util_1 = require("./util");
10
+ const entity_1 = require("../entity");
11
+ const rxjs_1 = require("rxjs");
12
+ const omit_1 = __importDefault(require("lodash/omit"));
13
+ const insertMissingStakePools = async ({ stakePools: { updates }, queryRunner }) => {
14
+ if (updates.length === 0)
15
+ return;
16
+ const stakePoolsRepository = queryRunner.manager.getRepository(entity_1.StakePoolEntity);
17
+ const existingStakePoolEntities = await stakePoolsRepository.find({
18
+ select: { id: true },
19
+ where: { id: (0, typeorm_1.In)(updates.map((update) => update.poolParameters.id)) }
20
+ });
21
+ await stakePoolsRepository.insert(updates
22
+ .filter((update) => !existingStakePoolEntities.some((existingEntity) => existingEntity.id === update.poolParameters.id))
23
+ .map(({ poolParameters: { id } }) => stakePoolsRepository.create({ id, status: core_1.Cardano.StakePoolStatus.Activating })));
24
+ };
25
+ const insertPoolUpdates = async ({ stakePools: { updates }, queryRunner, blockEntity }) => {
26
+ if (updates.length === 0)
27
+ return;
28
+ const poolUpdatesRepository = queryRunner.manager.getRepository(entity_1.PoolRegistrationEntity);
29
+ const poolUpdateEntities = updates.map(({ poolParameters, source }) => poolUpdatesRepository.create({
30
+ id: (0, util_1.certificatePointerToId)(source),
31
+ ...(0, omit_1.default)(poolParameters, ['id', 'metadataJson']),
32
+ block: blockEntity,
33
+ marginPercent: poolParameters.margin.numerator / poolParameters.margin.denominator,
34
+ metadataHash: poolParameters.metadataJson?.hash,
35
+ metadataUrl: poolParameters.metadataJson?.url,
36
+ stakePool: {
37
+ id: poolParameters.id
38
+ }
39
+ }));
40
+ await poolUpdatesRepository.insert(poolUpdateEntities);
41
+ };
42
+ const insertPoolRetirements = async ({ stakePools: { retirements }, queryRunner, blockEntity }) => {
43
+ if (retirements.length === 0)
44
+ return;
45
+ const poolRetirementsRepository = queryRunner.manager.getRepository(entity_1.PoolRetirementEntity);
46
+ const poolRetirementEntities = retirements.map(({ epoch, poolId, source }) => poolRetirementsRepository.create({
47
+ block: blockEntity,
48
+ id: (0, util_1.certificatePointerToId)(source),
49
+ retireAtEpoch: epoch,
50
+ stakePool: { id: poolId }
51
+ }));
52
+ await poolRetirementsRepository.insert(poolRetirementEntities);
53
+ };
54
+ const findPoolRegistrationId = async (registrationsRepository, id, query) => {
55
+ const result = await registrationsRepository.find({
56
+ order: { id: query === 'first' ? 'ASC' : 'DESC' },
57
+ select: { id: true },
58
+ take: 1,
59
+ where: { stakePool: { id } }
60
+ });
61
+ return result.length > 0 ? BigInt(result[0].id) : null;
62
+ };
63
+ const undoUpdateLatestRetirementAndRetiringStatus = async ({ queryRunner, epochNo, eraSummaries, stakePools: { retirements } }) => {
64
+ if (retirements.length === 0)
65
+ return;
66
+ const retirementsRepository = queryRunner.manager.getRepository(entity_1.PoolRetirementEntity);
67
+ const poolsRepository = queryRunner.manager.getRepository(entity_1.StakePoolEntity);
68
+ const registrationsRepository = queryRunner.manager.getRepository(entity_1.PoolRegistrationEntity);
69
+ const { firstSlot } = (0, core_1.epochSlotsCalc)(epochNo, eraSummaries);
70
+ const epochStartId = (0, util_1.certificatePointerToId)({
71
+ certIndex: 0,
72
+ slot: firstSlot,
73
+ txIndex: 0
74
+ });
75
+ return Promise.all(retirements.map(async ({ poolId }) => {
76
+ const lastRetirementResult = await retirementsRepository.find({
77
+ order: { id: 'DESC' },
78
+ select: { id: true },
79
+ take: 1,
80
+ where: { stakePool: { id: poolId } }
81
+ });
82
+ const lastRetirement = lastRetirementResult[0];
83
+ const firstRegistrationId = await findPoolRegistrationId(registrationsRepository, poolId, 'first');
84
+ if (!firstRegistrationId) {
85
+ return;
86
+ }
87
+ const status = await (async () => {
88
+ if (!lastRetirement)
89
+ return firstRegistrationId > epochStartId
90
+ ? core_1.Cardano.StakePoolStatus.Activating
91
+ : core_1.Cardano.StakePoolStatus.Active;
92
+ const lastRegistrationId = await findPoolRegistrationId(registrationsRepository, poolId, 'last');
93
+ return lastRegistrationId > lastRetirement.id
94
+ ? core_1.Cardano.StakePoolStatus.Active
95
+ : core_1.Cardano.StakePoolStatus.Retiring;
96
+ })();
97
+ await poolsRepository.update(poolId, {
98
+ lastRetirement,
99
+ status
100
+ });
101
+ }));
102
+ };
103
+ const undoUpdateLatestRegistration = ({ queryRunner, stakePools: { updates } }) => {
104
+ const poolsRepository = queryRunner.manager.getRepository(entity_1.StakePoolEntity);
105
+ const registrationsRepository = queryRunner.manager.getRepository(entity_1.PoolRegistrationEntity);
106
+ return Promise.all(updates.map(async ({ poolParameters: { id } }) => {
107
+ const lastRegistrationId = await findPoolRegistrationId(registrationsRepository, id, 'last');
108
+ await (lastRegistrationId
109
+ ? poolsRepository.update(id, { lastRegistration: { id: lastRegistrationId } })
110
+ : poolsRepository.delete(id));
111
+ }));
112
+ };
113
+ const undoUpdateLatestCertificatesAndDeletePoolsWithZeroRegistrations = (evt) => Promise.all([undoUpdateLatestRegistration(evt), undoUpdateLatestRetirementAndRetiringStatus(evt)]);
114
+ const computeCertificateIdRange = (epochNo, eraSummaries) => {
115
+ const { firstSlot, lastSlot } = (0, core_1.epochSlotsCalc)(epochNo, eraSummaries);
116
+ const minId = (0, util_1.certificatePointerToId)({
117
+ certIndex: 0,
118
+ slot: firstSlot,
119
+ txIndex: 0
120
+ });
121
+ const maxId = (0, util_1.certificatePointerToId)({
122
+ certIndex: util_1.MaxCertificatePointerIdCertificateIndex,
123
+ slot: lastSlot,
124
+ txIndex: util_1.MaxCertificatePointerIdTxIndex
125
+ });
126
+ return { maxId, minId };
127
+ };
128
+ const updatePoolStatusWhere = async (where, newStatus, dependencies) => {
129
+ if (where.firstRegisteredInEpoch < 0)
130
+ return;
131
+ const { minId, maxId } = computeCertificateIdRange(where.firstRegisteredInEpoch, dependencies.eraSummaries);
132
+ const queryResult = await dependencies.queryRunner.query(`
133
+ SELECT sp.id
134
+ FROM stake_pool sp
135
+ JOIN pool_registration r1 ON (sp.id = r1.stake_pool_id)
136
+ LEFT OUTER JOIN pool_registration r2 ON (sp.id = r2.stake_pool_id AND r1.id > r2.id)
137
+ WHERE r2.id IS NULL AND sp.status='${where.currentStatus}' AND r1.id >= ${minId} AND r1.id <= ${maxId};
138
+ `);
139
+ if (queryResult.length > 0) {
140
+ const stakePoolsRepository = dependencies.queryRunner.manager.getRepository(entity_1.StakePoolEntity);
141
+ await stakePoolsRepository.update(queryResult.map((pool) => pool.id), { status: newStatus });
142
+ }
143
+ };
144
+ const activateOnRollover = async ({ queryRunner, crossEpochBoundary, eraSummaries, epochNo }) => {
145
+ if (!crossEpochBoundary)
146
+ return;
147
+ await updatePoolStatusWhere({
148
+ currentStatus: core_1.Cardano.StakePoolStatus.Activating,
149
+ firstRegisteredInEpoch: core_1.Cardano.EpochNo(epochNo - 2)
150
+ }, core_1.Cardano.StakePoolStatus.Active, { eraSummaries, queryRunner });
151
+ };
152
+ const undoActivateOnRollover = async ({ queryRunner, eraSummaries, crossEpochBoundary, epochNo }) => {
153
+ if (!crossEpochBoundary)
154
+ return;
155
+ await updatePoolStatusWhere({
156
+ currentStatus: core_1.Cardano.StakePoolStatus.Active,
157
+ firstRegisteredInEpoch: core_1.Cardano.EpochNo(epochNo - 1)
158
+ }, core_1.Cardano.StakePoolStatus.Activating, { eraSummaries, queryRunner });
159
+ };
160
+ const findPoolsRetiringAtEpoch = (repository, epochNo) => repository.find({
161
+ relations: { lastRetirement: true },
162
+ select: { id: true },
163
+ where: { lastRetirement: { retireAtEpoch: epochNo } }
164
+ });
165
+ const retireOnRollover = async ({ queryRunner, crossEpochBoundary, epochNo }) => {
166
+ if (!crossEpochBoundary)
167
+ return;
168
+ const stakePoolsRepository = queryRunner.manager.getRepository(entity_1.StakePoolEntity);
169
+ const retiredPools = await findPoolsRetiringAtEpoch(stakePoolsRepository, epochNo);
170
+ if (retiredPools.length > 0) {
171
+ await stakePoolsRepository.update(retiredPools.map(({ id }) => id), { status: core_1.Cardano.StakePoolStatus.Retired });
172
+ }
173
+ };
174
+ const undoRetireOnRollover = async ({ queryRunner, crossEpochBoundary, epochNo }) => {
175
+ if (!crossEpochBoundary)
176
+ return;
177
+ const stakePoolsRepository = queryRunner.manager.getRepository(entity_1.StakePoolEntity);
178
+ const retiredPools = await findPoolsRetiringAtEpoch(stakePoolsRepository, core_1.Cardano.EpochNo(epochNo + 1));
179
+ if (retiredPools.length > 0) {
180
+ await stakePoolsRepository.update(retiredPools.map(({ id }) => id), { status: core_1.Cardano.StakePoolStatus.Retiring });
181
+ }
182
+ };
183
+ const updateLatestCertificates = async ({ queryRunner, stakePools: { updates, retirements } }) => {
184
+ const stakePoolsRepository = queryRunner.manager.getRepository(entity_1.StakePoolEntity);
185
+ await Promise.all([
186
+ Promise.all(updates.map(({ poolParameters: { id }, source }) => stakePoolsRepository.update(id, {
187
+ lastRegistration: { id: (0, util_1.certificatePointerToId)(source) }
188
+ }))),
189
+ Promise.all(retirements.map(({ poolId, source }) => stakePoolsRepository.update({
190
+ id: poolId,
191
+ status: (0, typeorm_1.Not)(core_1.Cardano.StakePoolStatus.Retired)
192
+ }, {
193
+ lastRetirement: { id: (0, util_1.certificatePointerToId)(source) },
194
+ status: core_1.Cardano.StakePoolStatus.Retiring
195
+ })))
196
+ ]);
197
+ };
198
+ const reactivateRetired = async ({ queryRunner, stakePools: { updates } }) => {
199
+ if (updates.length === 0)
200
+ return;
201
+ await queryRunner.manager.query(`
202
+ UPDATE stake_pool
203
+ SET status='activating'
204
+ WHERE status='retired' AND last_registration_id > last_retirement_id;
205
+ `);
206
+ };
207
+ const rollForward = async (evt) => {
208
+ await Promise.all([activateOnRollover(evt), retireOnRollover(evt)]);
209
+ await insertMissingStakePools(evt);
210
+ await Promise.all([insertPoolUpdates(evt), insertPoolRetirements(evt)]);
211
+ await updateLatestCertificates(evt);
212
+ await reactivateRetired(evt);
213
+ };
214
+ const rollBackward = async (evt) => {
215
+ await Promise.all([undoActivateOnRollover(evt), undoRetireOnRollover(evt)]);
216
+ await undoUpdateLatestCertificatesAndDeletePoolsWithZeroRegistrations(evt);
217
+ };
218
+ exports.stakePools = {
219
+ entities: [entity_1.StakePoolEntity, entity_1.PoolRegistrationEntity, entity_1.PoolRetirementEntity],
220
+ sink(evt) {
221
+ return (0, rxjs_1.from)(evt.eventType === core_1.ChainSyncEventType.RollForward ? rollForward(evt) : rollBackward(evt));
222
+ }
223
+ };
224
+ //# sourceMappingURL=stakePools.sink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakePools.sink.js","sourceRoot":"","sources":["../../../src/sinks/stakePools.sink.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Operators } from '@cardano-sdk/projection';
2
+ export declare const certificatePointerToId: ({ slot, certIndex, txIndex }: Operators.CertificatePointer) => bigint;
3
+ export declare const MaxCertificatePointerIdTxIndex = 99999;
4
+ export declare const MaxCertificatePointerIdCertificateIndex = 9999;
5
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/sinks/util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGpD,eAAO,MAAM,sBAAsB,iCAAkC,UAAU,kBAAkB,WACjB,CAAC;AAEjF,eAAO,MAAM,8BAA8B,QAAS,CAAC;AACrD,eAAO,MAAM,uCAAuC,OAAO,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MaxCertificatePointerIdCertificateIndex = exports.MaxCertificatePointerIdTxIndex = exports.certificatePointerToId = void 0;
4
+ const certificatePointerToId = ({ slot, certIndex, txIndex }) => BigInt(slot) * 10000000000n + BigInt(txIndex) * 10000n + BigInt(certIndex);
5
+ exports.certificatePointerToId = certificatePointerToId;
6
+ exports.MaxCertificatePointerIdTxIndex = 99999;
7
+ exports.MaxCertificatePointerIdCertificateIndex = 9999;
8
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/sinks/util.ts"],"names":[],"mappings":";;;AAOO,MAAM,sBAAsB,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAgC,EAAE,EAAE,CACnG,MAAM,CAAC,IAAI,CAAC,GAAG,YAAe,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,MAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AADpE,QAAA,sBAAsB,0BAC8C;AAEpE,QAAA,8BAA8B,GAAG,KAAM,CAAC;AACxC,QAAA,uCAAuC,GAAG,IAAI,CAAC"}