@fintekkers/ledger-models 0.4.9 → 0.4.11
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/node/wrappers/models/hydrate.test.d.ts +1 -0
- package/node/wrappers/models/hydrate.test.js +204 -0
- package/node/wrappers/models/hydrate.test.js.map +1 -0
- package/node/wrappers/models/hydrate.test.ts +214 -0
- package/node/wrappers/models/lazy-hydrate-race.test.d.ts +1 -0
- package/node/wrappers/models/lazy-hydrate-race.test.js +153 -0
- package/node/wrappers/models/lazy-hydrate-race.test.js.map +1 -0
- package/node/wrappers/models/lazy-hydrate-race.test.ts +144 -0
- package/node/wrappers/models/lazy-hydrate.bench.test.d.ts +1 -0
- package/node/wrappers/models/lazy-hydrate.bench.test.js +121 -0
- package/node/wrappers/models/lazy-hydrate.bench.test.js.map +1 -0
- package/node/wrappers/models/lazy-hydrate.bench.test.ts +103 -0
- package/node/wrappers/models/portfolio/portfolio.d.ts +18 -0
- package/node/wrappers/models/portfolio/portfolio.js +93 -1
- package/node/wrappers/models/portfolio/portfolio.js.map +1 -1
- package/node/wrappers/models/portfolio/portfolio.ts +58 -1
- package/node/wrappers/models/portfolio-price-transaction.lazy-hydrate.test.d.ts +1 -0
- package/node/wrappers/models/portfolio-price-transaction.lazy-hydrate.test.js +158 -0
- package/node/wrappers/models/portfolio-price-transaction.lazy-hydrate.test.js.map +1 -0
- package/node/wrappers/models/portfolio-price-transaction.lazy-hydrate.test.ts +153 -0
- package/node/wrappers/models/price/Price.d.ts +5 -0
- package/node/wrappers/models/price/Price.js +48 -0
- package/node/wrappers/models/price/Price.js.map +1 -1
- package/node/wrappers/models/price/Price.ts +26 -0
- package/node/wrappers/models/security/identifier-validation.test.d.ts +1 -0
- package/node/wrappers/models/security/identifier-validation.test.js +104 -0
- package/node/wrappers/models/security/identifier-validation.test.js.map +1 -0
- package/node/wrappers/models/security/identifier-validation.test.ts +133 -0
- package/node/wrappers/models/security/identifier.d.ts +26 -0
- package/node/wrappers/models/security/identifier.js +54 -1
- package/node/wrappers/models/security/identifier.js.map +1 -1
- package/node/wrappers/models/security/identifier.test.js +6 -9
- package/node/wrappers/models/security/identifier.test.js.map +1 -1
- package/node/wrappers/models/security/identifier.test.ts +6 -9
- package/node/wrappers/models/security/identifier.ts +58 -0
- package/node/wrappers/models/security/security.d.ts +23 -5
- package/node/wrappers/models/security/security.js +53 -6
- package/node/wrappers/models/security/security.js.map +1 -1
- package/node/wrappers/models/security/security.ts +38 -6
- package/node/wrappers/models/transaction/transaction.d.ts +18 -0
- package/node/wrappers/models/transaction/transaction.js +98 -0
- package/node/wrappers/models/transaction/transaction.js.map +1 -1
- package/node/wrappers/models/transaction/transaction.ts +65 -0
- package/node/wrappers/services/portfolio-service/PortfolioService.js +35 -0
- package/node/wrappers/services/portfolio-service/PortfolioService.js.map +1 -1
- package/node/wrappers/services/portfolio-service/PortfolioService.ts +14 -2
- package/node/wrappers/services/price-service/PriceService.js +10 -0
- package/node/wrappers/services/price-service/PriceService.js.map +1 -1
- package/node/wrappers/services/price-service/PriceService.ts +12 -2
- package/node/wrappers/services/security-service/SecurityService.js +23 -0
- package/node/wrappers/services/security-service/SecurityService.js.map +1 -1
- package/node/wrappers/services/security-service/SecurityService.ts +27 -2
- package/node/wrappers/services/security.identifier-guard.test.d.ts +1 -0
- package/node/wrappers/services/security.identifier-guard.test.js +63 -0
- package/node/wrappers/services/security.identifier-guard.test.js.map +1 -0
- package/node/wrappers/services/security.identifier-guard.test.ts +70 -0
- package/node/wrappers/services/service-client-writethrough.test.d.ts +1 -0
- package/node/wrappers/services/service-client-writethrough.test.js +147 -0
- package/node/wrappers/services/service-client-writethrough.test.js.map +1 -0
- package/node/wrappers/services/service-client-writethrough.test.ts +141 -0
- package/node/wrappers/services/transaction-service/TransactionService.js +36 -0
- package/node/wrappers/services/transaction-service/TransactionService.js.map +1 -1
- package/node/wrappers/services/transaction-service/TransactionService.ts +13 -0
- package/node/wrappers/util/link-cache.d.ts +13 -6
- package/node/wrappers/util/link-cache.js +51 -15
- package/node/wrappers/util/link-cache.js.map +1 -1
- package/node/wrappers/util/link-cache.ts +51 -17
- package/node/wrappers/util/link-resolver.d.ts +39 -31
- package/node/wrappers/util/link-resolver.js +157 -97
- package/node/wrappers/util/link-resolver.js.map +1 -1
- package/node/wrappers/util/link-resolver.test.js +88 -2
- package/node/wrappers/util/link-resolver.test.js.map +1 -1
- package/node/wrappers/util/link-resolver.test.ts +76 -2
- package/node/wrappers/util/link-resolver.ts +143 -124
- package/package.json +1 -1
|
@@ -1,4 +1,27 @@
|
|
|
1
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
|
+
};
|
|
2
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -15,88 +38,67 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
38
|
const util_1 = require("util");
|
|
16
39
|
const security_service_grpc_pb_1 = require("../../fintekkers/services/security-service/security_service_grpc_pb");
|
|
17
40
|
const portfolio_service_grpc_pb_1 = require("../../fintekkers/services/portfolio-service/portfolio_service_grpc_pb");
|
|
41
|
+
const transaction_service_grpc_pb_1 = require("../../fintekkers/services/transaction-service/transaction_service_grpc_pb");
|
|
18
42
|
const query_security_request_pb_1 = require("../../fintekkers/requests/security/query_security_request_pb");
|
|
19
43
|
const query_portfolio_request_pb_1 = require("../../fintekkers/requests/portfolio/query_portfolio_request_pb");
|
|
44
|
+
const query_transaction_request_pb_1 = require("../../fintekkers/requests/transaction/query_transaction_request_pb");
|
|
20
45
|
const security_1 = __importDefault(require("../models/security/security"));
|
|
21
46
|
const portfolio_1 = __importDefault(require("../models/portfolio/portfolio"));
|
|
47
|
+
const transaction_1 = __importDefault(require("../models/transaction/transaction"));
|
|
22
48
|
const uuid_1 = require("../models/utils/uuid");
|
|
23
49
|
const requestcontext_1 = __importDefault(require("../models/utils/requestcontext"));
|
|
50
|
+
const datetime_1 = require("../models/utils/datetime");
|
|
51
|
+
const LinkCacheModule = __importStar(require("./link-cache"));
|
|
24
52
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* oldest entry (first key in the Map). Avoids pulling in lru-cache as a
|
|
28
|
-
* dependency for ~30 lines of logic.
|
|
29
|
-
*/
|
|
30
|
-
class TinyLRU {
|
|
31
|
-
constructor(maxSize, ttlMs) {
|
|
32
|
-
this.maxSize = maxSize;
|
|
33
|
-
this.ttlMs = ttlMs;
|
|
34
|
-
this.map = new Map();
|
|
35
|
-
}
|
|
36
|
-
get(key) {
|
|
37
|
-
if (this.maxSize === 0)
|
|
38
|
-
return undefined;
|
|
39
|
-
const entry = this.map.get(key);
|
|
40
|
-
if (!entry)
|
|
41
|
-
return undefined;
|
|
42
|
-
if (this.ttlMs !== undefined && Date.now() - entry.insertedAt > this.ttlMs) {
|
|
43
|
-
this.map.delete(key);
|
|
44
|
-
return undefined;
|
|
45
|
-
}
|
|
46
|
-
// Bump to most-recently-used.
|
|
47
|
-
this.map.delete(key);
|
|
48
|
-
this.map.set(key, entry);
|
|
49
|
-
return entry.value;
|
|
50
|
-
}
|
|
51
|
-
set(key, value) {
|
|
52
|
-
if (this.maxSize === 0)
|
|
53
|
-
return;
|
|
54
|
-
if (this.map.has(key))
|
|
55
|
-
this.map.delete(key);
|
|
56
|
-
this.map.set(key, { value, insertedAt: Date.now() });
|
|
57
|
-
while (this.map.size > this.maxSize) {
|
|
58
|
-
const oldest = this.map.keys().next().value;
|
|
59
|
-
if (oldest === undefined)
|
|
60
|
-
break;
|
|
61
|
-
this.map.delete(oldest);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
size() {
|
|
65
|
-
return this.map.size;
|
|
66
|
-
}
|
|
67
|
-
clear() {
|
|
68
|
-
this.map.clear();
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Stable serialization of a LocalTimestampProto for use in cache keys
|
|
73
|
-
* and as_of-bucket grouping. Uses the proto's binary form (Uint8Array
|
|
53
|
+
* Stable serialization of a LocalTimestampProto for use in in-flight dedup
|
|
54
|
+
* keys and as_of-bucket grouping. Uses the proto's binary form (Uint8Array
|
|
74
55
|
* → base64). Returns the literal "latest" when as_of is undefined so
|
|
75
56
|
* unset and explicit-undefined collapse to the same bucket.
|
|
76
|
-
*
|
|
77
|
-
* Two LocalTimestampProto instances representing the same moment will
|
|
78
|
-
* produce the same key as long as the underlying nanos/seconds match —
|
|
79
|
-
* proto3 binary encoding is canonical for unset fields.
|
|
80
57
|
*/
|
|
81
58
|
function asOfKey(asOf) {
|
|
82
59
|
if (!asOf)
|
|
83
60
|
return 'latest';
|
|
84
|
-
// serializeBinary returns Uint8Array.
|
|
85
61
|
const bytes = asOf.serializeBinary();
|
|
86
62
|
return Buffer.from(bytes).toString('base64');
|
|
87
63
|
}
|
|
64
|
+
function asOfToZdt(asOf) {
|
|
65
|
+
return asOf ? new datetime_1.ZonedDateTime(asOf) : null;
|
|
66
|
+
}
|
|
67
|
+
// Process-wide default singleton — lazily constructed on first
|
|
68
|
+
// `LinkResolver.getDefault()` call. Used by the wrapper `hydrate()`
|
|
69
|
+
// methods so callers don't have to thread a resolver instance through
|
|
70
|
+
// their code. Override the default by calling `LinkResolver.setDefault(...)`
|
|
71
|
+
// at process start (tests with mocked clients, alternate endpoints, etc.).
|
|
72
|
+
let defaultLinkResolver;
|
|
88
73
|
class LinkResolver {
|
|
74
|
+
/**
|
|
75
|
+
* Process-wide singleton — lazily constructed with default options
|
|
76
|
+
* (env-derived endpoint via `EnvConfig`). The wrapper `hydrate()`
|
|
77
|
+
* methods reach for this when no resolver is passed explicitly, so
|
|
78
|
+
* users get auto-resolve on link-mode wrappers without threading a
|
|
79
|
+
* resolver through every call site.
|
|
80
|
+
*/
|
|
81
|
+
static getDefault() {
|
|
82
|
+
if (!defaultLinkResolver) {
|
|
83
|
+
defaultLinkResolver = new LinkResolver();
|
|
84
|
+
}
|
|
85
|
+
return defaultLinkResolver;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Replace the process-wide default. Call once at process start for
|
|
89
|
+
* tests with mocked clients or to point at a non-default endpoint.
|
|
90
|
+
* Pass `undefined` to clear (next `getDefault()` call rebuilds).
|
|
91
|
+
*/
|
|
92
|
+
static setDefault(resolver) {
|
|
93
|
+
defaultLinkResolver = resolver;
|
|
94
|
+
}
|
|
89
95
|
constructor(opts = {}) {
|
|
90
|
-
var _a;
|
|
91
96
|
// Concurrent-call dedupe: a UUID currently being fetched maps to the
|
|
92
97
|
// promise the *first* caller is awaiting. Subsequent callers for the
|
|
93
98
|
// same UUID receive that same promise.
|
|
94
99
|
this.securityInFlight = new Map();
|
|
95
100
|
this.portfolioInFlight = new Map();
|
|
96
|
-
|
|
97
|
-
const ttlMs = opts.ttlMs;
|
|
98
|
-
this.securityCache = new TinyLRU(cacheSize, ttlMs);
|
|
99
|
-
this.portfolioCache = new TinyLRU(cacheSize, ttlMs);
|
|
101
|
+
this.transactionInFlight = new Map();
|
|
100
102
|
if (opts.securityClient) {
|
|
101
103
|
this.securityClient = opts.securityClient;
|
|
102
104
|
}
|
|
@@ -117,6 +119,16 @@ class LinkResolver {
|
|
|
117
119
|
else {
|
|
118
120
|
this.portfolioClient = new portfolio_service_grpc_pb_1.PortfolioClient(requestcontext_1.default.apiURL, requestcontext_1.default.apiCredentials);
|
|
119
121
|
}
|
|
122
|
+
if (opts.transactionClient) {
|
|
123
|
+
this.transactionClient = opts.transactionClient;
|
|
124
|
+
}
|
|
125
|
+
else if (opts.apiKey) {
|
|
126
|
+
const { credentials, interceptors } = requestcontext_1.default.getAuthenticatedClientOptions(opts.apiKey);
|
|
127
|
+
this.transactionClient = new transaction_service_grpc_pb_1.TransactionClient(requestcontext_1.default.apiURL, credentials, { interceptors });
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
this.transactionClient = new transaction_service_grpc_pb_1.TransactionClient(requestcontext_1.default.apiURL, requestcontext_1.default.apiCredentials);
|
|
131
|
+
}
|
|
120
132
|
}
|
|
121
133
|
/**
|
|
122
134
|
* Resolve a single SecurityProto by UUID. If `asOf` is supplied, fetch
|
|
@@ -140,6 +152,16 @@ class LinkResolver {
|
|
|
140
152
|
return new portfolio_1.default(proto);
|
|
141
153
|
});
|
|
142
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Resolve a single TransactionProto by UUID, optionally as of `asOf`.
|
|
157
|
+
* Cached + concurrent-deduped on (uuid, asOf).
|
|
158
|
+
*/
|
|
159
|
+
getTransaction(uuid, asOf) {
|
|
160
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
161
|
+
const proto = yield this.fetchTransactionProto(uuid, asOf);
|
|
162
|
+
return new transaction_1.default(proto);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
143
165
|
/**
|
|
144
166
|
* Walk `items`, find the ones whose embedded security is `is_link=true`,
|
|
145
167
|
* batch-fetch the unique (uuid, as_of) pairs (grouped by as_of so each
|
|
@@ -147,10 +169,6 @@ class LinkResolver {
|
|
|
147
169
|
* place so subsequent `item.getSecurity()` calls return the full entity.
|
|
148
170
|
* Returns the same array for chaining.
|
|
149
171
|
*
|
|
150
|
-
* Honors per-link `as_of`: if the embedded sub-message has `as_of` set,
|
|
151
|
-
* the resolver fetches the version of the entity at that timestamp,
|
|
152
|
-
* not the latest.
|
|
153
|
-
*
|
|
154
172
|
* `T` is structural: anything with a `proto` field that exposes
|
|
155
173
|
* `getSecurity()` / `setSecurity()` works (Price, Transaction, etc).
|
|
156
174
|
*/
|
|
@@ -158,7 +176,7 @@ class LinkResolver {
|
|
|
158
176
|
return __awaiter(this, void 0, void 0, function* () {
|
|
159
177
|
if (items.length === 0)
|
|
160
178
|
return items;
|
|
161
|
-
// Group: as_of bucket → (
|
|
179
|
+
// Group: as_of bucket → (uuid string → UUID) for items not yet cached.
|
|
162
180
|
const buckets = new Map();
|
|
163
181
|
for (const item of items) {
|
|
164
182
|
const sec = item.proto.getSecurity();
|
|
@@ -169,32 +187,29 @@ class LinkResolver {
|
|
|
169
187
|
continue;
|
|
170
188
|
const uuid = uuid_1.UUID.fromU8Array(uuidProto.getRawUuid_asU8());
|
|
171
189
|
const asOf = sec.getAsOf();
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
// Skip if already cached for this exact (uuid, as_of).
|
|
175
|
-
if (this.securityCache.get(cacheKey))
|
|
190
|
+
const uuidStr = uuid.toString();
|
|
191
|
+
if (LinkCacheModule.SECURITY.get(uuidStr, asOfToZdt(asOf)))
|
|
176
192
|
continue;
|
|
193
|
+
const bucketKey = asOfKey(asOf);
|
|
177
194
|
let bucket = buckets.get(bucketKey);
|
|
178
195
|
if (!bucket) {
|
|
179
196
|
bucket = new Map();
|
|
180
197
|
buckets.set(bucketKey, bucket);
|
|
181
198
|
}
|
|
182
|
-
if (!bucket.has(
|
|
183
|
-
bucket.set(
|
|
199
|
+
if (!bucket.has(uuidStr))
|
|
200
|
+
bucket.set(uuidStr, uuid);
|
|
184
201
|
}
|
|
185
202
|
// One GetByIds RPC per as_of bucket. Fire in parallel.
|
|
186
203
|
yield Promise.all(Array.from(buckets.entries()).map(([bucketKey, uuidMap]) => __awaiter(this, void 0, void 0, function* () {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
// but it's cheap to re-find.
|
|
190
|
-
const asOf = bucketKey === 'latest' ? undefined : findAsOfForBucket(items, (sec) => sec.getSecurity(), bucketKey);
|
|
204
|
+
const asOf = bucketKey === 'latest' ? undefined : findAsOfForBucket(items, (proto) => proto.getSecurity(), bucketKey);
|
|
205
|
+
const asOfZdt = asOfToZdt(asOf);
|
|
191
206
|
const fetched = yield this.batchFetchSecurities(Array.from(uuidMap.values()), asOf);
|
|
192
207
|
for (const proto of fetched) {
|
|
193
208
|
const uuidProto = proto.getUuid();
|
|
194
209
|
if (!uuidProto)
|
|
195
210
|
continue;
|
|
196
211
|
const uuidStr = uuid_1.UUID.fromU8Array(uuidProto.getRawUuid_asU8()).toString();
|
|
197
|
-
|
|
212
|
+
LinkCacheModule.SECURITY.put(uuidStr, proto, asOfZdt);
|
|
198
213
|
}
|
|
199
214
|
})));
|
|
200
215
|
// Mutate each item's embedded security in place.
|
|
@@ -206,8 +221,7 @@ class LinkResolver {
|
|
|
206
221
|
if (!uuidProto)
|
|
207
222
|
continue;
|
|
208
223
|
const uuidStr = uuid_1.UUID.fromU8Array(uuidProto.getRawUuid_asU8()).toString();
|
|
209
|
-
const
|
|
210
|
-
const resolved = this.securityCache.get(`${uuidStr}@${bucketKey}`);
|
|
224
|
+
const resolved = LinkCacheModule.SECURITY.get(uuidStr, asOfToZdt(sec.getAsOf()));
|
|
211
225
|
if (resolved)
|
|
212
226
|
item.proto.setSecurity(resolved);
|
|
213
227
|
}
|
|
@@ -232,27 +246,28 @@ class LinkResolver {
|
|
|
232
246
|
continue;
|
|
233
247
|
const uuid = uuid_1.UUID.fromU8Array(uuidProto.getRawUuid_asU8());
|
|
234
248
|
const asOf = port.getAsOf();
|
|
235
|
-
const
|
|
236
|
-
|
|
237
|
-
if (this.portfolioCache.get(cacheKey))
|
|
249
|
+
const uuidStr = uuid.toString();
|
|
250
|
+
if (LinkCacheModule.PORTFOLIO.get(uuidStr, asOfToZdt(asOf)))
|
|
238
251
|
continue;
|
|
252
|
+
const bucketKey = asOfKey(asOf);
|
|
239
253
|
let bucket = buckets.get(bucketKey);
|
|
240
254
|
if (!bucket) {
|
|
241
255
|
bucket = new Map();
|
|
242
256
|
buckets.set(bucketKey, bucket);
|
|
243
257
|
}
|
|
244
|
-
if (!bucket.has(
|
|
245
|
-
bucket.set(
|
|
258
|
+
if (!bucket.has(uuidStr))
|
|
259
|
+
bucket.set(uuidStr, uuid);
|
|
246
260
|
}
|
|
247
261
|
yield Promise.all(Array.from(buckets.entries()).map(([bucketKey, uuidMap]) => __awaiter(this, void 0, void 0, function* () {
|
|
248
|
-
const asOf = bucketKey === 'latest' ? undefined : findAsOfForBucket(items, (
|
|
262
|
+
const asOf = bucketKey === 'latest' ? undefined : findAsOfForBucket(items, (proto) => proto.getPortfolio(), bucketKey);
|
|
263
|
+
const asOfZdt = asOfToZdt(asOf);
|
|
249
264
|
const fetched = yield this.batchFetchPortfolios(Array.from(uuidMap.values()), asOf);
|
|
250
265
|
for (const proto of fetched) {
|
|
251
266
|
const uuidProto = proto.getUuid();
|
|
252
267
|
if (!uuidProto)
|
|
253
268
|
continue;
|
|
254
269
|
const uuidStr = uuid_1.UUID.fromU8Array(uuidProto.getRawUuid_asU8()).toString();
|
|
255
|
-
|
|
270
|
+
LinkCacheModule.PORTFOLIO.put(uuidStr, proto, asOfZdt);
|
|
256
271
|
}
|
|
257
272
|
})));
|
|
258
273
|
for (const item of items) {
|
|
@@ -263,37 +278,39 @@ class LinkResolver {
|
|
|
263
278
|
if (!uuidProto)
|
|
264
279
|
continue;
|
|
265
280
|
const uuidStr = uuid_1.UUID.fromU8Array(uuidProto.getRawUuid_asU8()).toString();
|
|
266
|
-
const
|
|
267
|
-
const resolved = this.portfolioCache.get(`${uuidStr}@${bucketKey}`);
|
|
281
|
+
const resolved = LinkCacheModule.PORTFOLIO.get(uuidStr, asOfToZdt(port.getAsOf()));
|
|
268
282
|
if (resolved)
|
|
269
283
|
item.proto.setPortfolio(resolved);
|
|
270
284
|
}
|
|
271
285
|
return items;
|
|
272
286
|
});
|
|
273
287
|
}
|
|
274
|
-
/** Test/debug helper.
|
|
288
|
+
/** Test/debug helper. Clears in-flight maps; the process-wide LinkCache
|
|
289
|
+
* is left alone (tests that need to drop a specific cached entry call
|
|
290
|
+
* `LinkCache.SECURITY.evict(uuid)` directly). */
|
|
275
291
|
clearCache() {
|
|
276
|
-
this.securityCache.clear();
|
|
277
|
-
this.portfolioCache.clear();
|
|
278
292
|
this.securityInFlight.clear();
|
|
279
293
|
this.portfolioInFlight.clear();
|
|
294
|
+
this.transactionInFlight.clear();
|
|
280
295
|
}
|
|
281
296
|
// ---------- internals ----------
|
|
282
297
|
fetchSecurityProto(uuid, asOf) {
|
|
283
298
|
return __awaiter(this, void 0, void 0, function* () {
|
|
284
|
-
const
|
|
285
|
-
const
|
|
299
|
+
const uuidStr = uuid.toString();
|
|
300
|
+
const asOfZdt = asOfToZdt(asOf);
|
|
301
|
+
const cached = LinkCacheModule.SECURITY.get(uuidStr, asOfZdt);
|
|
286
302
|
if (cached)
|
|
287
303
|
return cached;
|
|
304
|
+
const key = `${uuidStr}@${asOfKey(asOf)}`;
|
|
288
305
|
const inFlight = this.securityInFlight.get(key);
|
|
289
306
|
if (inFlight)
|
|
290
307
|
return inFlight;
|
|
291
308
|
const promise = this.batchFetchSecurities([uuid], asOf).then((protos) => {
|
|
292
309
|
if (protos.length === 0) {
|
|
293
|
-
throw new Error(`Security not found: ${
|
|
310
|
+
throw new Error(`Security not found: ${key}`);
|
|
294
311
|
}
|
|
295
312
|
const proto = protos[0];
|
|
296
|
-
|
|
313
|
+
LinkCacheModule.SECURITY.put(uuidStr, proto, asOfZdt);
|
|
297
314
|
return proto;
|
|
298
315
|
}).finally(() => {
|
|
299
316
|
this.securityInFlight.delete(key);
|
|
@@ -304,19 +321,21 @@ class LinkResolver {
|
|
|
304
321
|
}
|
|
305
322
|
fetchPortfolioProto(uuid, asOf) {
|
|
306
323
|
return __awaiter(this, void 0, void 0, function* () {
|
|
307
|
-
const
|
|
308
|
-
const
|
|
324
|
+
const uuidStr = uuid.toString();
|
|
325
|
+
const asOfZdt = asOfToZdt(asOf);
|
|
326
|
+
const cached = LinkCacheModule.PORTFOLIO.get(uuidStr, asOfZdt);
|
|
309
327
|
if (cached)
|
|
310
328
|
return cached;
|
|
329
|
+
const key = `${uuidStr}@${asOfKey(asOf)}`;
|
|
311
330
|
const inFlight = this.portfolioInFlight.get(key);
|
|
312
331
|
if (inFlight)
|
|
313
332
|
return inFlight;
|
|
314
333
|
const promise = this.batchFetchPortfolios([uuid], asOf).then((protos) => {
|
|
315
334
|
if (protos.length === 0) {
|
|
316
|
-
throw new Error(`Portfolio not found: ${
|
|
335
|
+
throw new Error(`Portfolio not found: ${key}`);
|
|
317
336
|
}
|
|
318
337
|
const proto = protos[0];
|
|
319
|
-
|
|
338
|
+
LinkCacheModule.PORTFOLIO.put(uuidStr, proto, asOfZdt);
|
|
320
339
|
return proto;
|
|
321
340
|
}).finally(() => {
|
|
322
341
|
this.portfolioInFlight.delete(key);
|
|
@@ -325,6 +344,31 @@ class LinkResolver {
|
|
|
325
344
|
return promise;
|
|
326
345
|
});
|
|
327
346
|
}
|
|
347
|
+
fetchTransactionProto(uuid, asOf) {
|
|
348
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
349
|
+
const uuidStr = uuid.toString();
|
|
350
|
+
const asOfZdt = asOfToZdt(asOf);
|
|
351
|
+
const cached = LinkCacheModule.TRANSACTION.get(uuidStr, asOfZdt);
|
|
352
|
+
if (cached)
|
|
353
|
+
return cached;
|
|
354
|
+
const key = `${uuidStr}@${asOfKey(asOf)}`;
|
|
355
|
+
const inFlight = this.transactionInFlight.get(key);
|
|
356
|
+
if (inFlight)
|
|
357
|
+
return inFlight;
|
|
358
|
+
const promise = this.batchFetchTransactions([uuid], asOf).then((protos) => {
|
|
359
|
+
if (protos.length === 0) {
|
|
360
|
+
throw new Error(`Transaction not found: ${key}`);
|
|
361
|
+
}
|
|
362
|
+
const proto = protos[0];
|
|
363
|
+
LinkCacheModule.TRANSACTION.put(uuidStr, proto, asOfZdt);
|
|
364
|
+
return proto;
|
|
365
|
+
}).finally(() => {
|
|
366
|
+
this.transactionInFlight.delete(key);
|
|
367
|
+
});
|
|
368
|
+
this.transactionInFlight.set(key, promise);
|
|
369
|
+
return promise;
|
|
370
|
+
});
|
|
371
|
+
}
|
|
328
372
|
batchFetchSecurities(uuids, asOf) {
|
|
329
373
|
return __awaiter(this, void 0, void 0, function* () {
|
|
330
374
|
if (uuids.length === 0)
|
|
@@ -341,6 +385,22 @@ class LinkResolver {
|
|
|
341
385
|
return response.getSecurityResponseList();
|
|
342
386
|
});
|
|
343
387
|
}
|
|
388
|
+
batchFetchTransactions(uuids, asOf) {
|
|
389
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
390
|
+
if (uuids.length === 0)
|
|
391
|
+
return [];
|
|
392
|
+
const request = new query_transaction_request_pb_1.QueryTransactionRequestProto();
|
|
393
|
+
request.setObjectClass('TransactionRequest');
|
|
394
|
+
request.setVersion('0.0.1');
|
|
395
|
+
const uuidProtos = uuids.map((u) => u.toUUIDProto());
|
|
396
|
+
request.setUuidsList(uuidProtos);
|
|
397
|
+
if (asOf)
|
|
398
|
+
request.setAsOf(asOf);
|
|
399
|
+
const getByIdsAsync = (0, util_1.promisify)(this.transactionClient.getByIds.bind(this.transactionClient));
|
|
400
|
+
const response = (yield getByIdsAsync(request));
|
|
401
|
+
return response.getTransactionResponseList();
|
|
402
|
+
});
|
|
403
|
+
}
|
|
344
404
|
batchFetchPortfolios(uuids, asOf) {
|
|
345
405
|
return __awaiter(this, void 0, void 0, function* () {
|
|
346
406
|
if (uuids.length === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-resolver.js","sourceRoot":"","sources":["link-resolver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"link-resolver.js","sourceRoot":"","sources":["link-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,27 @@
|
|
|
1
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
|
+
};
|
|
2
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -15,6 +38,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
38
|
const link_resolver_1 = __importDefault(require("./link-resolver"));
|
|
16
39
|
const Price_1 = __importDefault(require("../models/price/Price"));
|
|
17
40
|
const uuid_1 = require("../models/utils/uuid");
|
|
41
|
+
const LinkCacheModuleTop = __importStar(require("./link-cache"));
|
|
18
42
|
const security_pb_1 = require("../../fintekkers/models/security/security_pb");
|
|
19
43
|
const price_pb_1 = require("../../fintekkers/models/price/price_pb");
|
|
20
44
|
const decimal_value_pb_1 = require("../../fintekkers/models/util/decimal_value_pb");
|
|
@@ -114,6 +138,13 @@ function linkPrice(securityUuid, priceValue, asOf) {
|
|
|
114
138
|
return new Price_1.default(priceProto);
|
|
115
139
|
}
|
|
116
140
|
describe('LinkResolver', () => {
|
|
141
|
+
// Process-wide LinkCache singletons survive across tests, so clear them
|
|
142
|
+
// between cases to keep tests independent (post-W4 the resolver no longer
|
|
143
|
+
// owns its own cache).
|
|
144
|
+
beforeEach(() => {
|
|
145
|
+
LinkCacheModuleTop.SECURITY.clear();
|
|
146
|
+
LinkCacheModuleTop.PORTFOLIO.clear();
|
|
147
|
+
});
|
|
117
148
|
test('bulk resolveSecurities dedupes UUIDs (5 prices, 3 unique → 1 RPC, 3 UUIDs)', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
118
149
|
const uuidA = uuid_1.UUID.random();
|
|
119
150
|
const uuidB = uuid_1.UUID.random();
|
|
@@ -182,18 +213,21 @@ describe('LinkResolver', () => {
|
|
|
182
213
|
for (const r of results)
|
|
183
214
|
expect(r.getIssuerName()).toBe('AAPL');
|
|
184
215
|
}));
|
|
185
|
-
test('
|
|
216
|
+
test('LinkCache evict between calls forces refetch', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
217
|
+
// Post-W4 the resolver no longer owns its cache. Evict the entry from
|
|
218
|
+
// LinkCache.SECURITY between calls to force a refetch — the equivalent
|
|
219
|
+
// of the old `cacheSize=0` semantic.
|
|
186
220
|
const uuid = uuid_1.UUID.random();
|
|
187
221
|
const store = new Map([
|
|
188
222
|
[uuid.toString(), fullSecurity(uuid, 'AAPL')],
|
|
189
223
|
]);
|
|
190
224
|
const callLog = newCallLog();
|
|
191
225
|
const resolver = new link_resolver_1.default({
|
|
192
|
-
cacheSize: 0,
|
|
193
226
|
securityClient: mockSecurityClient(store, callLog),
|
|
194
227
|
portfolioClient: mockPortfolioClient(new Map(), newCallLog()),
|
|
195
228
|
});
|
|
196
229
|
yield resolver.getSecurity(uuid);
|
|
230
|
+
LinkCacheModuleTop.SECURITY.evict(uuid.toString());
|
|
197
231
|
yield resolver.getSecurity(uuid);
|
|
198
232
|
expect(callLog.count).toBe(2);
|
|
199
233
|
}));
|
|
@@ -346,4 +380,56 @@ describe('LinkResolver', () => {
|
|
|
346
380
|
expect(callLog.count).toBe(2);
|
|
347
381
|
}));
|
|
348
382
|
});
|
|
383
|
+
const LinkCacheModule = __importStar(require("./link-cache"));
|
|
384
|
+
const datetime_1 = require("../models/utils/datetime");
|
|
385
|
+
describe('LinkResolver write-through to LinkCache', () => {
|
|
386
|
+
beforeEach(() => {
|
|
387
|
+
LinkCacheModule.SECURITY.clear();
|
|
388
|
+
LinkCacheModule.PORTFOLIO.clear();
|
|
389
|
+
});
|
|
390
|
+
function fullSecurityWithAsOf(uuid, issuer, asOf) {
|
|
391
|
+
const proto = fullSecurity(uuid, issuer);
|
|
392
|
+
proto.setAsOf(asOf);
|
|
393
|
+
return proto;
|
|
394
|
+
}
|
|
395
|
+
test('getSecurity populates LinkCache.SECURITY', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
396
|
+
const uuid = uuid_1.UUID.random();
|
|
397
|
+
const asOf = makeAsOf(1700000010);
|
|
398
|
+
const store = new Map([
|
|
399
|
+
[uuid.toString(), fullSecurityWithAsOf(uuid, 'ACME', asOf)],
|
|
400
|
+
]);
|
|
401
|
+
const resolver = new link_resolver_1.default({
|
|
402
|
+
securityClient: mockSecurityClient(store, newCallLog()),
|
|
403
|
+
portfolioClient: mockPortfolioClient(new Map(), newCallLog()),
|
|
404
|
+
});
|
|
405
|
+
const out = yield resolver.getSecurity(uuid, asOf);
|
|
406
|
+
expect(out.getIssuerName()).toBe('ACME');
|
|
407
|
+
const cached = LinkCacheModule.SECURITY.get(uuid.toString(), new datetime_1.ZonedDateTime(asOf));
|
|
408
|
+
expect(cached).toBeDefined();
|
|
409
|
+
expect(cached.getIssuerName()).toBe('ACME');
|
|
410
|
+
}));
|
|
411
|
+
test('resolveSecurities populates LinkCache.SECURITY', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
412
|
+
const uuid = uuid_1.UUID.random();
|
|
413
|
+
const asOf = makeAsOf(1700000011);
|
|
414
|
+
const store = new Map([
|
|
415
|
+
[uuid.toString(), fullSecurityWithAsOf(uuid, 'BULK', asOf)],
|
|
416
|
+
]);
|
|
417
|
+
const resolver = new link_resolver_1.default({
|
|
418
|
+
securityClient: mockSecurityClient(store, newCallLog()),
|
|
419
|
+
portfolioClient: mockPortfolioClient(new Map(), newCallLog()),
|
|
420
|
+
});
|
|
421
|
+
const linkSec = new security_pb_1.SecurityProto();
|
|
422
|
+
linkSec.setUuid(uuid.toUUIDProto());
|
|
423
|
+
linkSec.setIsLink(true);
|
|
424
|
+
linkSec.setAsOf(asOf);
|
|
425
|
+
const priceProto = new price_pb_1.PriceProto();
|
|
426
|
+
priceProto.setUuid(uuid_1.UUID.random().toUUIDProto());
|
|
427
|
+
priceProto.setSecurity(linkSec);
|
|
428
|
+
const price = new Price_1.default(priceProto);
|
|
429
|
+
yield resolver.resolveSecurities([price]);
|
|
430
|
+
const cached = LinkCacheModule.SECURITY.get(uuid.toString(), new datetime_1.ZonedDateTime(asOf));
|
|
431
|
+
expect(cached).toBeDefined();
|
|
432
|
+
expect(cached.getIssuerName()).toBe('BULK');
|
|
433
|
+
}));
|
|
434
|
+
});
|
|
349
435
|
//# sourceMappingURL=link-resolver.test.js.map
|