@distrohelena/canton-explorer 0.1.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/.env.example +9 -0
- package/LICENSE +184 -0
- package/README.md +63 -0
- package/bin/canton-explorer.js +68 -0
- package/config/nodes.example.json +35 -0
- package/dist/public/assets/index-NfJYgVwb.css +1 -0
- package/dist/public/assets/index-ybPCCjei.js +1 -0
- package/dist/public/cantonexplorer.png +0 -0
- package/dist/public/favicon.svg +1 -0
- package/dist/public/icons.svg +24 -0
- package/dist/public/index.html +14 -0
- package/dist/scripts/list-local-parties.d.ts +1 -0
- package/dist/scripts/list-local-parties.js +64 -0
- package/dist/scripts/list-local-parties.js.map +1 -0
- package/dist/src/api/nodes.controller.d.ts +181 -0
- package/dist/src/api/nodes.controller.js +873 -0
- package/dist/src/api/nodes.controller.js.map +1 -0
- package/dist/src/app-bootstrap.d.ts +22 -0
- package/dist/src/app-bootstrap.js +52 -0
- package/dist/src/app-bootstrap.js.map +1 -0
- package/dist/src/app.module.d.ts +2 -0
- package/dist/src/app.module.js +48 -0
- package/dist/src/app.module.js.map +1 -0
- package/dist/src/cache/node-cache.service.d.ts +54 -0
- package/dist/src/cache/node-cache.service.js +154 -0
- package/dist/src/cache/node-cache.service.js.map +1 -0
- package/dist/src/config/node-config.schema.d.ts +100 -0
- package/dist/src/config/node-config.schema.js +83 -0
- package/dist/src/config/node-config.schema.js.map +1 -0
- package/dist/src/config/node-config.service.d.ts +7 -0
- package/dist/src/config/node-config.service.js +36 -0
- package/dist/src/config/node-config.service.js.map +1 -0
- package/dist/src/domain/node-health.d.ts +9 -0
- package/dist/src/domain/node-health.js +16 -0
- package/dist/src/domain/node-health.js.map +1 -0
- package/dist/src/domain/node.types.d.ts +563 -0
- package/dist/src/domain/node.types.js +3 -0
- package/dist/src/domain/node.types.js.map +1 -0
- package/dist/src/grpc/grpc-client.factory.d.ts +297 -0
- package/dist/src/grpc/grpc-client.factory.js +67 -0
- package/dist/src/grpc/grpc-client.factory.js.map +1 -0
- package/dist/src/grpc/grpc-error.util.d.ts +7 -0
- package/dist/src/grpc/grpc-error.util.js +31 -0
- package/dist/src/grpc/grpc-error.util.js.map +1 -0
- package/dist/src/grpc/grpc-operations.service.d.ts +96 -0
- package/dist/src/grpc/grpc-operations.service.js +844 -0
- package/dist/src/grpc/grpc-operations.service.js.map +1 -0
- package/dist/src/grpc/shared-secret-jwt.d.ts +6 -0
- package/dist/src/grpc/shared-secret-jwt.js +22 -0
- package/dist/src/grpc/shared-secret-jwt.js.map +1 -0
- package/dist/src/main.d.ts +1 -0
- package/dist/src/main.js +6 -0
- package/dist/src/main.js.map +1 -0
- package/dist/src/namespaces/namespace-fingerprint.service.d.ts +22 -0
- package/dist/src/namespaces/namespace-fingerprint.service.js +125 -0
- package/dist/src/namespaces/namespace-fingerprint.service.js.map +1 -0
- package/dist/src/orchestrator/node-poller.service.d.ts +26 -0
- package/dist/src/orchestrator/node-poller.service.js +224 -0
- package/dist/src/orchestrator/node-poller.service.js.map +1 -0
- package/dist/src/packages/daml-decoder.types.d.ts +69 -0
- package/dist/src/packages/daml-decoder.types.js +3 -0
- package/dist/src/packages/daml-decoder.types.js.map +1 -0
- package/dist/src/packages/daml-lf-archive-v2.descriptor.pb +0 -0
- package/dist/src/packages/daml-lf-archive.descriptor.pb +0 -0
- package/dist/src/packages/daml-lf-loader.d.ts +3 -0
- package/dist/src/packages/daml-lf-loader.js +51 -0
- package/dist/src/packages/daml-lf-loader.js.map +1 -0
- package/dist/src/packages/daml-lf-raw.util.d.ts +12 -0
- package/dist/src/packages/daml-lf-raw.util.js +117 -0
- package/dist/src/packages/daml-lf-raw.util.js.map +1 -0
- package/dist/src/packages/daml-lf-value.descriptor.pb +0 -0
- package/dist/src/packages/daml-value-decoder.service.d.ts +39 -0
- package/dist/src/packages/daml-value-decoder.service.js +463 -0
- package/dist/src/packages/daml-value-decoder.service.js.map +1 -0
- package/dist/src/packages/package-cache.service.d.ts +53 -0
- package/dist/src/packages/package-cache.service.js +288 -0
- package/dist/src/packages/package-cache.service.js.map +1 -0
- package/dist/src/packages/package-registry.service.d.ts +44 -0
- package/dist/src/packages/package-registry.service.js +625 -0
- package/dist/src/packages/package-registry.service.js.map +1 -0
- package/dist/src/packages/package-sync.service.d.ts +22 -0
- package/dist/src/packages/package-sync.service.js +129 -0
- package/dist/src/packages/package-sync.service.js.map +1 -0
- package/dist/src/packages/pqs-package.service.d.ts +9 -0
- package/dist/src/packages/pqs-package.service.js +118 -0
- package/dist/src/packages/pqs-package.service.js.map +1 -0
- package/dist/src/pqs/pqs-client.factory.d.ts +7 -0
- package/dist/src/pqs/pqs-client.factory.js +37 -0
- package/dist/src/pqs/pqs-client.factory.js.map +1 -0
- package/dist/src/pqs/pqs-summary.service.d.ts +229 -0
- package/dist/src/pqs/pqs-summary.service.js +4652 -0
- package/dist/src/pqs/pqs-summary.service.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +97 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { NodeConfig } from '../config/node-config.schema';
|
|
2
|
+
import { GrpcOperationsService } from '../grpc/grpc-operations.service';
|
|
3
|
+
import { PackageCacheService } from './package-cache.service';
|
|
4
|
+
import { PqsPackageService } from './pqs-package.service';
|
|
5
|
+
export interface PackageSyncResult {
|
|
6
|
+
missingPackageIds: string[];
|
|
7
|
+
fetchedPackageCount: number;
|
|
8
|
+
skippedBecauseNotDue: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare class PackageSyncService {
|
|
11
|
+
private readonly cacheService;
|
|
12
|
+
private readonly pqsPackageService;
|
|
13
|
+
private readonly grpcOperationsService;
|
|
14
|
+
private readonly lastSyncStartedAtByNode;
|
|
15
|
+
private readonly syncIntervalMs;
|
|
16
|
+
constructor(cacheService: PackageCacheService, pqsPackageService: PqsPackageService, grpcOperationsService: GrpcOperationsService);
|
|
17
|
+
syncNodePackagesIfDue(node: NodeConfig): Promise<PackageSyncResult>;
|
|
18
|
+
syncNodePackages(node: NodeConfig): Promise<PackageSyncResult>;
|
|
19
|
+
syncPackagesById(node: NodeConfig, packageIds: string[]): Promise<PackageSyncResult>;
|
|
20
|
+
private fetchPackageRefs;
|
|
21
|
+
private fetchPackages;
|
|
22
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.PackageSyncService = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const grpc_operations_service_1 = require("../grpc/grpc-operations.service");
|
|
15
|
+
const package_cache_service_1 = require("./package-cache.service");
|
|
16
|
+
const pqs_package_service_1 = require("./pqs-package.service");
|
|
17
|
+
let PackageSyncService = class PackageSyncService {
|
|
18
|
+
cacheService;
|
|
19
|
+
pqsPackageService;
|
|
20
|
+
grpcOperationsService;
|
|
21
|
+
lastSyncStartedAtByNode = new Map();
|
|
22
|
+
syncIntervalMs = 15 * 60 * 1000;
|
|
23
|
+
constructor(cacheService, pqsPackageService, grpcOperationsService) {
|
|
24
|
+
this.cacheService = cacheService;
|
|
25
|
+
this.pqsPackageService = pqsPackageService;
|
|
26
|
+
this.grpcOperationsService = grpcOperationsService;
|
|
27
|
+
}
|
|
28
|
+
async syncNodePackagesIfDue(node) {
|
|
29
|
+
const now = Date.now();
|
|
30
|
+
const lastSyncStartedAt = this.lastSyncStartedAtByNode.get(node.id);
|
|
31
|
+
if (typeof lastSyncStartedAt === 'number' &&
|
|
32
|
+
now - lastSyncStartedAt < this.syncIntervalMs) {
|
|
33
|
+
return {
|
|
34
|
+
missingPackageIds: [],
|
|
35
|
+
fetchedPackageCount: 0,
|
|
36
|
+
skippedBecauseNotDue: true,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
this.lastSyncStartedAtByNode.set(node.id, now);
|
|
40
|
+
return this.syncNodePackages(node);
|
|
41
|
+
}
|
|
42
|
+
async syncNodePackages(node) {
|
|
43
|
+
const { source, packageRefs } = await this.fetchPackageRefs(node);
|
|
44
|
+
const missingPackageIds = this.cacheService.recordPackagePresence(node.id, packageRefs, new Date().toISOString());
|
|
45
|
+
if (missingPackageIds.length === 0) {
|
|
46
|
+
return {
|
|
47
|
+
missingPackageIds: [],
|
|
48
|
+
fetchedPackageCount: 0,
|
|
49
|
+
skippedBecauseNotDue: false,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const missingPackageRefs = packageRefs.filter((packageRef) => missingPackageIds.includes(packageRef.packageId));
|
|
53
|
+
const packages = await this.fetchPackages(node, source, missingPackageIds, missingPackageRefs);
|
|
54
|
+
this.cacheService.storePackages(packages);
|
|
55
|
+
return {
|
|
56
|
+
missingPackageIds,
|
|
57
|
+
fetchedPackageCount: packages.length,
|
|
58
|
+
skippedBecauseNotDue: false,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
async syncPackagesById(node, packageIds) {
|
|
62
|
+
const normalizedPackageIds = Array.from(new Set(packageIds.map((packageId) => packageId.trim()).filter((packageId) => packageId.length > 0)));
|
|
63
|
+
if (normalizedPackageIds.length === 0) {
|
|
64
|
+
return {
|
|
65
|
+
missingPackageIds: [],
|
|
66
|
+
fetchedPackageCount: 0,
|
|
67
|
+
skippedBecauseNotDue: false,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
const { source, packageRefs } = await this.fetchPackageRefs(node);
|
|
71
|
+
const requestedRefs = packageRefs.filter((packageRef) => normalizedPackageIds.includes(packageRef.packageId));
|
|
72
|
+
const requestedIds = requestedRefs.map((packageRef) => packageRef.packageId);
|
|
73
|
+
const missingPackageIds = normalizedPackageIds.filter((packageId) => !requestedIds.includes(packageId));
|
|
74
|
+
if (requestedRefs.length === 0) {
|
|
75
|
+
return {
|
|
76
|
+
missingPackageIds,
|
|
77
|
+
fetchedPackageCount: 0,
|
|
78
|
+
skippedBecauseNotDue: false,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
this.cacheService.recordPackagePresence(node.id, requestedRefs, new Date().toISOString());
|
|
82
|
+
const packages = await this.fetchPackages(node, source, requestedIds, requestedRefs);
|
|
83
|
+
this.cacheService.storePackages(packages);
|
|
84
|
+
return {
|
|
85
|
+
missingPackageIds,
|
|
86
|
+
fetchedPackageCount: packages.length,
|
|
87
|
+
skippedBecauseNotDue: false,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
async fetchPackageRefs(node) {
|
|
91
|
+
if (node.mode !== 'pqs_with_grpc') {
|
|
92
|
+
return {
|
|
93
|
+
source: 'pqs',
|
|
94
|
+
packageRefs: await this.pqsPackageService.fetchPackageRefs(node),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
return {
|
|
99
|
+
source: 'grpc',
|
|
100
|
+
packageRefs: await this.grpcOperationsService.fetchPackageRefs(node),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return {
|
|
105
|
+
source: 'pqs',
|
|
106
|
+
packageRefs: await this.pqsPackageService.fetchPackageRefs(node),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async fetchPackages(node, source, missingPackageIds, missingPackageRefs) {
|
|
111
|
+
if (node.mode !== 'pqs_with_grpc' || source === 'pqs') {
|
|
112
|
+
return this.pqsPackageService.fetchPackagesById(node, missingPackageIds);
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
return await this.pqsPackageService.fetchPackagesById(node, missingPackageIds);
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return this.grpcOperationsService.fetchPackagesByRefs(node, missingPackageRefs);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
exports.PackageSyncService = PackageSyncService;
|
|
123
|
+
exports.PackageSyncService = PackageSyncService = __decorate([
|
|
124
|
+
(0, common_1.Injectable)(),
|
|
125
|
+
__metadata("design:paramtypes", [package_cache_service_1.PackageCacheService,
|
|
126
|
+
pqs_package_service_1.PqsPackageService,
|
|
127
|
+
grpc_operations_service_1.GrpcOperationsService])
|
|
128
|
+
], PackageSyncService);
|
|
129
|
+
//# sourceMappingURL=package-sync.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-sync.service.js","sourceRoot":"","sources":["../../../src/packages/package-sync.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAE5C,6EAAwE;AACxE,mEAA8D;AAC9D,+DAA0D;AAcnD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAKV;IACA;IACA;IANF,uBAAuB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpD,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAEjD,YACmB,YAAiC,EACjC,iBAAoC,EACpC,qBAA4C;QAF5C,iBAAY,GAAZ,YAAY,CAAqB;QACjC,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,0BAAqB,GAArB,qBAAqB,CAAuB;IAC5D,CAAC;IAEJ,KAAK,CAAC,qBAAqB,CAAC,IAAgB;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpE,IACE,OAAO,iBAAiB,KAAK,QAAQ;YACrC,GAAG,GAAG,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAC7C,CAAC;YACD,OAAO;gBACL,iBAAiB,EAAE,EAAE;gBACrB,mBAAmB,EAAE,CAAC;gBACtB,oBAAoB,EAAE,IAAI;aAC3B,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAgB;QACrC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAC/D,IAAI,CAAC,EAAE,EACP,WAAW,EACX,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CACzB,CAAC;QAEF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO;gBACL,iBAAiB,EAAE,EAAE;gBACrB,mBAAmB,EAAE,CAAC;gBACtB,oBAAoB,EAAE,KAAK;aAC5B,CAAC;QACJ,CAAC;QAED,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAC3D,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CACjD,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CACvC,IAAI,EACJ,MAAM,EACN,iBAAiB,EACjB,kBAAkB,CACnB,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE1C,OAAO;YACL,iBAAiB;YACjB,mBAAmB,EAAE,QAAQ,CAAC,MAAM;YACpC,oBAAoB,EAAE,KAAK;SAC5B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,IAAgB,EAChB,UAAoB;QAEpB,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CACrC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CACrG,CAAC;QAEF,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO;gBACL,iBAAiB,EAAE,EAAE;gBACrB,mBAAmB,EAAE,CAAC;gBACtB,oBAAoB,EAAE,KAAK;aAC5B,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAClE,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CACtD,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CACpD,CAAC;QACF,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC7E,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,MAAM,CACnD,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CACjD,CAAC;QAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,iBAAiB;gBACjB,mBAAmB,EAAE,CAAC;gBACtB,oBAAoB,EAAE,KAAK;aAC5B,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1F,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;QACrF,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE1C,OAAO;YACL,iBAAiB;YACjB,mBAAmB,EAAE,QAAQ,CAAC,MAAM;YACpC,oBAAoB,EAAE,KAAK;SAC5B,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,IAAgB;QAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC;aACjE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC;aACrE,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC;aACjE,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,IAAgB,EAChB,MAAuC,EACvC,iBAA2B,EAC3B,kBAAwD;QAExD,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACjF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;CACF,CAAA;AAhJY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAMsB,2CAAmB;QACd,uCAAiB;QACb,+CAAqB;GAPpD,kBAAkB,CAgJ9B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { NodeConfig } from '../config/node-config.schema';
|
|
2
|
+
import { PqsClientFactory } from '../pqs/pqs-client.factory';
|
|
3
|
+
import type { CachedPackageBlob, CachedPackageRef } from './package-cache.service';
|
|
4
|
+
export declare class PqsPackageService {
|
|
5
|
+
private readonly clientFactory;
|
|
6
|
+
constructor(clientFactory: PqsClientFactory);
|
|
7
|
+
fetchPackageRefs(node: NodeConfig): Promise<CachedPackageRef[]>;
|
|
8
|
+
fetchPackagesById(node: NodeConfig, packageIds: string[]): Promise<CachedPackageBlob[]>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.PqsPackageService = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const pqs_client_factory_1 = require("../pqs/pqs-client.factory");
|
|
15
|
+
const PACKAGE_REFS_QUERY = `
|
|
16
|
+
select
|
|
17
|
+
package_row.package_id::text as package_id,
|
|
18
|
+
min(package_row.main_package_id)::text as main_package_id,
|
|
19
|
+
package_row.name::text as name,
|
|
20
|
+
package_row.version::text as version,
|
|
21
|
+
package_row.uploaded_at::text as uploaded_at,
|
|
22
|
+
package_row.package_size::bigint as package_size
|
|
23
|
+
from (
|
|
24
|
+
select
|
|
25
|
+
package_table.package_id,
|
|
26
|
+
coalesce(dar_table.main_package_id, package_table.package_id) as main_package_id,
|
|
27
|
+
package_table.name,
|
|
28
|
+
package_table.version,
|
|
29
|
+
package_table.uploaded_at,
|
|
30
|
+
package_table.package_size
|
|
31
|
+
from participant.par_daml_packages package_table
|
|
32
|
+
left join participant.par_dar_packages dar_table
|
|
33
|
+
on dar_table.package_id = package_table.package_id
|
|
34
|
+
) package_row
|
|
35
|
+
group by
|
|
36
|
+
package_row.package_id,
|
|
37
|
+
package_row.name,
|
|
38
|
+
package_row.version,
|
|
39
|
+
package_row.uploaded_at,
|
|
40
|
+
package_row.package_size
|
|
41
|
+
order by package_row.package_id asc
|
|
42
|
+
`;
|
|
43
|
+
let PqsPackageService = class PqsPackageService {
|
|
44
|
+
clientFactory;
|
|
45
|
+
constructor(clientFactory) {
|
|
46
|
+
this.clientFactory = clientFactory;
|
|
47
|
+
}
|
|
48
|
+
async fetchPackageRefs(node) {
|
|
49
|
+
const client = this.clientFactory.getClient(node);
|
|
50
|
+
const result = await client.query(PACKAGE_REFS_QUERY);
|
|
51
|
+
const rows = result.rows ?? [];
|
|
52
|
+
return rows.map((row) => ({
|
|
53
|
+
packageId: row.package_id,
|
|
54
|
+
mainPackageId: row.main_package_id ?? row.package_id,
|
|
55
|
+
name: row.name,
|
|
56
|
+
version: row.version,
|
|
57
|
+
uploadedAt: normalizeOptionalText(row.uploaded_at),
|
|
58
|
+
packageSize: normalizeOptionalNumber(row.package_size),
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
async fetchPackagesById(node, packageIds) {
|
|
62
|
+
if (packageIds.length === 0) {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
const client = this.clientFactory.getClient(node);
|
|
66
|
+
const quotedIds = packageIds.map((packageId) => `'${escapeSqlLiteral(packageId)}'`).join(', ');
|
|
67
|
+
const result = await client.query(`
|
|
68
|
+
select
|
|
69
|
+
package_id::text as package_id,
|
|
70
|
+
name::text as name,
|
|
71
|
+
version::text as version,
|
|
72
|
+
uploaded_at::text as uploaded_at,
|
|
73
|
+
package_size::bigint as package_size,
|
|
74
|
+
data
|
|
75
|
+
from participant.par_daml_packages
|
|
76
|
+
where package_id in (${quotedIds})
|
|
77
|
+
order by package_id asc
|
|
78
|
+
`);
|
|
79
|
+
const rows = result.rows ?? [];
|
|
80
|
+
return rows
|
|
81
|
+
.filter((row) => Buffer.isBuffer(row.data))
|
|
82
|
+
.map((row) => ({
|
|
83
|
+
packageId: row.package_id,
|
|
84
|
+
name: row.name,
|
|
85
|
+
version: row.version,
|
|
86
|
+
uploadedAt: normalizeOptionalText(row.uploaded_at),
|
|
87
|
+
packageSize: normalizeOptionalNumber(row.package_size),
|
|
88
|
+
data: row.data,
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
exports.PqsPackageService = PqsPackageService;
|
|
93
|
+
exports.PqsPackageService = PqsPackageService = __decorate([
|
|
94
|
+
(0, common_1.Injectable)(),
|
|
95
|
+
__metadata("design:paramtypes", [pqs_client_factory_1.PqsClientFactory])
|
|
96
|
+
], PqsPackageService);
|
|
97
|
+
function normalizeOptionalText(value) {
|
|
98
|
+
if (typeof value === 'string') {
|
|
99
|
+
return value;
|
|
100
|
+
}
|
|
101
|
+
if (typeof value === 'number') {
|
|
102
|
+
return String(value);
|
|
103
|
+
}
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
function normalizeOptionalNumber(value) {
|
|
107
|
+
if (typeof value === 'number') {
|
|
108
|
+
return value;
|
|
109
|
+
}
|
|
110
|
+
if (typeof value === 'string' && value.length > 0) {
|
|
111
|
+
return Number(value);
|
|
112
|
+
}
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
function escapeSqlLiteral(value) {
|
|
116
|
+
return value.replaceAll("'", "''");
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=pqs-package.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pqs-package.service.js","sourceRoot":"","sources":["../../../src/packages/pqs-package.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var PqsClientFactory_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.PqsClientFactory = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const pg_1 = require("pg");
|
|
13
|
+
let PqsClientFactory = PqsClientFactory_1 = class PqsClientFactory {
|
|
14
|
+
logger = new common_1.Logger(PqsClientFactory_1.name);
|
|
15
|
+
clients = new Map();
|
|
16
|
+
getClient(node) {
|
|
17
|
+
const existing = this.clients.get(node.id);
|
|
18
|
+
if (existing) {
|
|
19
|
+
return existing;
|
|
20
|
+
}
|
|
21
|
+
const connectionString = process.env[node.pqs.connectionUriEnv];
|
|
22
|
+
if (!connectionString) {
|
|
23
|
+
throw new Error(`Missing PQS connection string env var: ${node.pqs.connectionUriEnv}`);
|
|
24
|
+
}
|
|
25
|
+
const client = new pg_1.Pool({ connectionString });
|
|
26
|
+
client.on('error', (error) => {
|
|
27
|
+
this.logger.warn(`PQS pool error for ${node.id}: ${error.code ?? 'unknown'} ${error.message}`);
|
|
28
|
+
});
|
|
29
|
+
this.clients.set(node.id, client);
|
|
30
|
+
return client;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
exports.PqsClientFactory = PqsClientFactory;
|
|
34
|
+
exports.PqsClientFactory = PqsClientFactory = PqsClientFactory_1 = __decorate([
|
|
35
|
+
(0, common_1.Injectable)()
|
|
36
|
+
], PqsClientFactory);
|
|
37
|
+
//# sourceMappingURL=pqs-client.factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pqs-client.factory.js","sourceRoot":"","sources":["../../../src/pqs/pqs-client.factory.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AACpD,2BAA0B;AAInB,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IACV,MAAM,GAAG,IAAI,eAAM,CAAC,kBAAgB,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,GAAG,IAAI,GAAG,EAAgB,CAAC;IAEnD,SAAS,CAAC,IAAgB;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,SAAI,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAgC,EAAE,EAAE;YACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,sBAAsB,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,IAAI,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,CAC7E,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AAxBY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;GACA,gBAAgB,CAwB5B"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import type { NodeConfig } from '../config/node-config.schema';
|
|
2
|
+
import { NodeConfigService } from '../config/node-config.service';
|
|
3
|
+
import type { ActivePartiesResponse, GlobalContractsResponse, GlobalRecentUpdatesResponse, NamespaceDetailResponse, NamespacePartiesResponse, NodeContractsResponse, NodeContractDetailResponse, NodePackagesResponse, PartyDetailResponse, LedgerSummary, PackageDetailResponse, PackageFamilyResponse, NodeUpdateDetailResponse, NodeRecentUpdatesResponse, PartyContractsResponse, SearchResultsResponse, TemplateFilterResponse, TokenDetailResponse, TokenHoldersResponse, TokensResponse, TokenTransferSummary, TokenTransfersResponse } from '../domain/node.types';
|
|
4
|
+
import { PqsClientFactory } from './pqs-client.factory';
|
|
5
|
+
import { DamlValueDecoderService } from '../packages/daml-value-decoder.service';
|
|
6
|
+
import { PackageCacheService } from '../packages/package-cache.service';
|
|
7
|
+
import { PackageRegistryService } from '../packages/package-registry.service';
|
|
8
|
+
import { GrpcOperationsService } from '../grpc/grpc-operations.service';
|
|
9
|
+
import { PackageSyncService } from '../packages/package-sync.service';
|
|
10
|
+
export declare class PqsSummaryService {
|
|
11
|
+
private readonly clientFactory;
|
|
12
|
+
private readonly damlValueDecoder?;
|
|
13
|
+
private readonly packageCacheService?;
|
|
14
|
+
private readonly packageRegistryService?;
|
|
15
|
+
private readonly nodeConfigService?;
|
|
16
|
+
private readonly grpcOperationsService?;
|
|
17
|
+
private readonly packageSyncService?;
|
|
18
|
+
private readonly observedTokensByNode;
|
|
19
|
+
private readonly tokenHoldersByNode;
|
|
20
|
+
private readonly tokenTransfersByNode;
|
|
21
|
+
constructor(clientFactory: PqsClientFactory, damlValueDecoder?: DamlValueDecoderService | undefined, packageCacheService?: PackageCacheService | undefined, packageRegistryService?: PackageRegistryService | undefined, nodeConfigService?: NodeConfigService | undefined, grpcOperationsService?: GrpcOperationsService | undefined, packageSyncService?: PackageSyncService | undefined);
|
|
22
|
+
fetchSummary(node: NodeConfig): Promise<LedgerSummary>;
|
|
23
|
+
search(query: string): Promise<SearchResultsResponse>;
|
|
24
|
+
fetchRecentUpdates(node: NodeConfig, options?: number | {
|
|
25
|
+
limit?: number;
|
|
26
|
+
before?: string;
|
|
27
|
+
after?: string;
|
|
28
|
+
parties?: string[];
|
|
29
|
+
templates?: string[];
|
|
30
|
+
partyMode?: string;
|
|
31
|
+
mode?: string;
|
|
32
|
+
hideSplice?: boolean;
|
|
33
|
+
}): Promise<NodeRecentUpdatesResponse>;
|
|
34
|
+
fetchGlobalRecentUpdates(nodes: NodeConfig[], limit?: number, options?: {
|
|
35
|
+
before?: string;
|
|
36
|
+
after?: string;
|
|
37
|
+
parties?: string[];
|
|
38
|
+
templates?: string[];
|
|
39
|
+
partyMode?: string;
|
|
40
|
+
mode?: string;
|
|
41
|
+
hideSplice?: boolean;
|
|
42
|
+
}): Promise<GlobalRecentUpdatesResponse>;
|
|
43
|
+
private emptySearchGroup;
|
|
44
|
+
private finalizeSearchGroup;
|
|
45
|
+
private resolveNodeSearchStatus;
|
|
46
|
+
private isExactMatch;
|
|
47
|
+
private hasPrefixMatch;
|
|
48
|
+
private searchUpdates;
|
|
49
|
+
private searchUpdatesForNode;
|
|
50
|
+
private searchContracts;
|
|
51
|
+
private searchContractsForNode;
|
|
52
|
+
private searchParties;
|
|
53
|
+
private searchPackages;
|
|
54
|
+
private querySearchUpdateMetaRows;
|
|
55
|
+
private queryRecentUpdateMetaRows;
|
|
56
|
+
fetchNodeContracts(node: NodeConfig, options?: {
|
|
57
|
+
limit?: number;
|
|
58
|
+
before?: string;
|
|
59
|
+
after?: string;
|
|
60
|
+
parties?: string[];
|
|
61
|
+
templates?: string[];
|
|
62
|
+
partyMode?: string;
|
|
63
|
+
hideSplice?: boolean;
|
|
64
|
+
}): Promise<NodeContractsResponse>;
|
|
65
|
+
fetchActivityBuckets(node: NodeConfig, days?: number, bucketMinutes?: number): Promise<Array<{
|
|
66
|
+
timestamp: string;
|
|
67
|
+
activityValue: number;
|
|
68
|
+
latestOffset: string | null;
|
|
69
|
+
}>>;
|
|
70
|
+
fetchPackageDetail(packageId: string): Promise<PackageDetailResponse>;
|
|
71
|
+
fetchPackagesByName(packageName: string): Promise<PackageFamilyResponse>;
|
|
72
|
+
fetchNodePackages(node: NodeConfig): Promise<NodePackagesResponse>;
|
|
73
|
+
fetchTemplates(): Promise<TemplateFilterResponse>;
|
|
74
|
+
fetchNodeTemplates(node: NodeConfig): Promise<TemplateFilterResponse>;
|
|
75
|
+
fetchActiveParties(nodes: NodeConfig[]): Promise<ActivePartiesResponse>;
|
|
76
|
+
fetchPartyDetail(nodes: NodeConfig[], partyId: string): Promise<PartyDetailResponse>;
|
|
77
|
+
fetchNamespaceDetail(nodes: NodeConfig[], namespaceId: string): Promise<NamespaceDetailResponse>;
|
|
78
|
+
fetchNamespaceParties(nodes: NodeConfig[], namespaceId: string, options?: {
|
|
79
|
+
limit?: number;
|
|
80
|
+
before?: string;
|
|
81
|
+
after?: string;
|
|
82
|
+
}): Promise<NamespacePartiesResponse>;
|
|
83
|
+
fetchPartyUpdates(nodes: NodeConfig[], partyId: string, options?: {
|
|
84
|
+
limit?: number;
|
|
85
|
+
before?: string;
|
|
86
|
+
after?: string;
|
|
87
|
+
templates?: string[];
|
|
88
|
+
partyMode?: string;
|
|
89
|
+
hideSplice?: boolean;
|
|
90
|
+
}): Promise<GlobalRecentUpdatesResponse>;
|
|
91
|
+
fetchGlobalContracts(nodes: NodeConfig[], limit?: number, options?: {
|
|
92
|
+
before?: string;
|
|
93
|
+
after?: string;
|
|
94
|
+
parties?: string[];
|
|
95
|
+
templates?: string[];
|
|
96
|
+
partyMode?: string;
|
|
97
|
+
hideSplice?: boolean;
|
|
98
|
+
}): Promise<GlobalContractsResponse>;
|
|
99
|
+
fetchPartyContracts(nodes: NodeConfig[], partyId: string, options?: {
|
|
100
|
+
limit?: number;
|
|
101
|
+
before?: string;
|
|
102
|
+
after?: string;
|
|
103
|
+
templates?: string[];
|
|
104
|
+
hideSplice?: boolean;
|
|
105
|
+
}): Promise<PartyContractsResponse>;
|
|
106
|
+
fetchTokens(nodes: NodeConfig[], limit?: number, options?: {
|
|
107
|
+
before?: string;
|
|
108
|
+
after?: string;
|
|
109
|
+
names?: string[];
|
|
110
|
+
excludeNames?: string[];
|
|
111
|
+
issuers?: string[];
|
|
112
|
+
}): Promise<TokensResponse>;
|
|
113
|
+
fetchLatestTokenTransfers(nodes: NodeConfig[], limit?: number, options?: {
|
|
114
|
+
before?: string;
|
|
115
|
+
after?: string;
|
|
116
|
+
fromParties?: string[];
|
|
117
|
+
toParties?: string[];
|
|
118
|
+
amountGt?: string;
|
|
119
|
+
amountLt?: string;
|
|
120
|
+
}): Promise<TokenTransfersResponse>;
|
|
121
|
+
fetchTokenTransfers(nodes: NodeConfig[], tokenId: string, limit?: number, options?: {
|
|
122
|
+
before?: string;
|
|
123
|
+
after?: string;
|
|
124
|
+
fromParties?: string[];
|
|
125
|
+
toParties?: string[];
|
|
126
|
+
amountGt?: string;
|
|
127
|
+
amountLt?: string;
|
|
128
|
+
}): Promise<TokenTransfersResponse>;
|
|
129
|
+
fetchTokenTransferDetail(nodes: NodeConfig[], transferId: string): Promise<TokenTransferSummary>;
|
|
130
|
+
fetchTokenDetail(nodes: NodeConfig[], tokenId: string): Promise<TokenDetailResponse>;
|
|
131
|
+
fetchTokenHolders(nodes: NodeConfig[], tokenId: string, limit?: number, options?: {
|
|
132
|
+
before?: string;
|
|
133
|
+
after?: string;
|
|
134
|
+
}): Promise<TokenHoldersResponse>;
|
|
135
|
+
private paginateTokenHolders;
|
|
136
|
+
private paginateTokens;
|
|
137
|
+
private filterTokens;
|
|
138
|
+
private loadMergedTokenTransfers;
|
|
139
|
+
private recoverTokenTransfersFromActiveHolders;
|
|
140
|
+
private paginateTokenTransfers;
|
|
141
|
+
private filterTokenTransfersByParties;
|
|
142
|
+
fetchUpdateDetail(node: NodeConfig, eventOffset: string): Promise<NodeUpdateDetailResponse>;
|
|
143
|
+
fetchContractDetail(node: NodeConfig, contractId: string): Promise<NodeContractDetailResponse>;
|
|
144
|
+
private querySummary;
|
|
145
|
+
private fetchPartyRecentUpdatesForNode;
|
|
146
|
+
private fetchPartyRecentContractsForNode;
|
|
147
|
+
private fetchPartyContractsForNode;
|
|
148
|
+
private shouldFallbackToParticipantTables;
|
|
149
|
+
private shouldFallbackToNormalizedEventTables;
|
|
150
|
+
private fetchActivePartiesForNode;
|
|
151
|
+
private fetchPartiesByUpdateId;
|
|
152
|
+
private loadCachedObservedTokens;
|
|
153
|
+
private fetchObservedTokensForNode;
|
|
154
|
+
private findObservedToken;
|
|
155
|
+
private normalizeObservedTokenRow;
|
|
156
|
+
private loadCachedTokenHolders;
|
|
157
|
+
private fetchTokenHoldersForNode;
|
|
158
|
+
private normalizeTokenHolderRow;
|
|
159
|
+
private loadCachedTokenTransfers;
|
|
160
|
+
private fetchTokenTransfersForNode;
|
|
161
|
+
private normalizeTokenTransferRow;
|
|
162
|
+
private fetchInferredCip112TransfersForNode;
|
|
163
|
+
private inferCip112TokenMovements;
|
|
164
|
+
private buildInferredCip112Movement;
|
|
165
|
+
private mergeTokenTransfers;
|
|
166
|
+
private mergeTokenHolders;
|
|
167
|
+
private buildTokenTransferDedupKey;
|
|
168
|
+
private normalizeTokenId;
|
|
169
|
+
private isCip112TemplateId;
|
|
170
|
+
private isSupportedObservedTokenTemplate;
|
|
171
|
+
private isShareLikeCip112Template;
|
|
172
|
+
private isHexTokenMovementUpdateId;
|
|
173
|
+
private buildTokenMovementRowId;
|
|
174
|
+
private compareNumericStrings;
|
|
175
|
+
private addNumericStrings;
|
|
176
|
+
private numericScale;
|
|
177
|
+
private parseScaledDecimal;
|
|
178
|
+
private normalizeUpdateId;
|
|
179
|
+
private extractTokenMovement;
|
|
180
|
+
private extractCip56TokenSummary;
|
|
181
|
+
private extractObservedTokenSummary;
|
|
182
|
+
private extractCip112TokenSummary;
|
|
183
|
+
private buildObservedTokenId;
|
|
184
|
+
private normalizeShareLikeIntrinsicTokenId;
|
|
185
|
+
private readConfiguredDecodedTokenMetadata;
|
|
186
|
+
private getTokenMetadataConfig;
|
|
187
|
+
private fetchEventsByUpdateId;
|
|
188
|
+
private shouldResolveRewardCoupon;
|
|
189
|
+
private fetchRewardCouponDetails;
|
|
190
|
+
private extractRawUpdateId;
|
|
191
|
+
private extractEventOffset;
|
|
192
|
+
private extractIsoRecordTime;
|
|
193
|
+
private extractMeta;
|
|
194
|
+
private normalizeEventRow;
|
|
195
|
+
private attachRewardCouponDetails;
|
|
196
|
+
private decodeRewardCouponContractInstance;
|
|
197
|
+
private decodeContractData;
|
|
198
|
+
private decodeExerciseData;
|
|
199
|
+
private retryContractDecodeAfterPackageRefresh;
|
|
200
|
+
private retryExerciseDecodeAfterPackageRefresh;
|
|
201
|
+
private extractPackageRefreshReason;
|
|
202
|
+
private shouldRetryPackageRefresh;
|
|
203
|
+
private refreshPackageForNode;
|
|
204
|
+
private normalizePackageIdentifier;
|
|
205
|
+
private decodeKnownContractData;
|
|
206
|
+
private isRecordValue;
|
|
207
|
+
private findRecordField;
|
|
208
|
+
private readScalarField;
|
|
209
|
+
private readNestedScalarField;
|
|
210
|
+
private readTextMapEntryField;
|
|
211
|
+
private getFirstLengthDelimitedField;
|
|
212
|
+
private getAllLengthDelimitedFields;
|
|
213
|
+
private unwrapScalarVarint;
|
|
214
|
+
private parseProtobufFields;
|
|
215
|
+
private readVarint;
|
|
216
|
+
private buildTemplateFilterResponse;
|
|
217
|
+
private normalizeOptionalScalar;
|
|
218
|
+
private fetchNamespaceTopologyByNode;
|
|
219
|
+
private mergeNamespaceNodeTopologies;
|
|
220
|
+
private dedupePartyTopologyParticipants;
|
|
221
|
+
private dedupePartyTopologyKeys;
|
|
222
|
+
private extractNamespaceIdentifier;
|
|
223
|
+
private paginateNamespacePartyIds;
|
|
224
|
+
private normalizeTemplateIdentifier;
|
|
225
|
+
private normalizeChoiceIdentifier;
|
|
226
|
+
private normalizeParties;
|
|
227
|
+
private normalizePartyIdentifier;
|
|
228
|
+
private defaultRow;
|
|
229
|
+
}
|