@fintekkers/ledger-models 0.4.9 → 0.4.10

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 (39) hide show
  1. package/node/wrappers/models/portfolio/portfolio.d.ts +8 -0
  2. package/node/wrappers/models/portfolio/portfolio.js +54 -1
  3. package/node/wrappers/models/portfolio/portfolio.js.map +1 -1
  4. package/node/wrappers/models/portfolio/portfolio.ts +34 -1
  5. package/node/wrappers/models/portfolio-price-transaction.lazy-hydrate.test.d.ts +1 -0
  6. package/node/wrappers/models/portfolio-price-transaction.lazy-hydrate.test.js +158 -0
  7. package/node/wrappers/models/portfolio-price-transaction.lazy-hydrate.test.js.map +1 -0
  8. package/node/wrappers/models/portfolio-price-transaction.lazy-hydrate.test.ts +153 -0
  9. package/node/wrappers/models/price/Price.d.ts +5 -0
  10. package/node/wrappers/models/price/Price.js +48 -0
  11. package/node/wrappers/models/price/Price.js.map +1 -1
  12. package/node/wrappers/models/price/Price.ts +26 -0
  13. package/node/wrappers/models/transaction/transaction.d.ts +7 -0
  14. package/node/wrappers/models/transaction/transaction.js +61 -0
  15. package/node/wrappers/models/transaction/transaction.js.map +1 -1
  16. package/node/wrappers/models/transaction/transaction.ts +40 -0
  17. package/node/wrappers/services/portfolio-service/PortfolioService.js +35 -0
  18. package/node/wrappers/services/portfolio-service/PortfolioService.js.map +1 -1
  19. package/node/wrappers/services/portfolio-service/PortfolioService.ts +14 -2
  20. package/node/wrappers/services/price-service/PriceService.js +10 -0
  21. package/node/wrappers/services/price-service/PriceService.js.map +1 -1
  22. package/node/wrappers/services/price-service/PriceService.ts +12 -2
  23. package/node/wrappers/services/security-service/SecurityService.js +15 -0
  24. package/node/wrappers/services/security-service/SecurityService.js.map +1 -1
  25. package/node/wrappers/services/security-service/SecurityService.ts +17 -2
  26. package/node/wrappers/services/service-client-writethrough.test.d.ts +1 -0
  27. package/node/wrappers/services/service-client-writethrough.test.js +147 -0
  28. package/node/wrappers/services/service-client-writethrough.test.js.map +1 -0
  29. package/node/wrappers/services/service-client-writethrough.test.ts +141 -0
  30. package/node/wrappers/services/transaction-service/TransactionService.js +36 -0
  31. package/node/wrappers/services/transaction-service/TransactionService.js.map +1 -1
  32. package/node/wrappers/services/transaction-service/TransactionService.ts +13 -0
  33. package/node/wrappers/util/link-resolver.js +52 -0
  34. package/node/wrappers/util/link-resolver.js.map +1 -1
  35. package/node/wrappers/util/link-resolver.test.js +75 -0
  36. package/node/wrappers/util/link-resolver.test.js.map +1 -1
  37. package/node/wrappers/util/link-resolver.test.ts +62 -0
  38. package/node/wrappers/util/link-resolver.ts +29 -0
  39. package/package.json +1 -1
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ // Verifies SecurityService / PortfolioService / PriceService / TransactionService
3
+ // each populate LinkCache on a successful createOrUpdate. Pure unit tests —
4
+ // the gRPC client is replaced via Object.assign on the service instance so we
5
+ // never hit the wire.
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || function (mod) {
23
+ if (mod && mod.__esModule) return mod;
24
+ var result = {};
25
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
26
+ __setModuleDefault(result, mod);
27
+ return result;
28
+ };
29
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
30
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
31
+ return new (P || (P = Promise))(function (resolve, reject) {
32
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
33
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
34
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
35
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
36
+ });
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ const uuid_1 = require("../models/utils/uuid");
43
+ const datetime_1 = require("../models/utils/datetime");
44
+ const local_timestamp_pb_1 = require("../../fintekkers/models/util/local_timestamp_pb");
45
+ const timestamp_pb_1 = require("google-protobuf/google/protobuf/timestamp_pb");
46
+ const security_pb_1 = require("../../fintekkers/models/security/security_pb");
47
+ const portfolio_pb_1 = require("../../fintekkers/models/portfolio/portfolio_pb");
48
+ const price_pb_1 = require("../../fintekkers/models/price/price_pb");
49
+ const transaction_pb_1 = require("../../fintekkers/models/transaction/transaction_pb");
50
+ const create_security_response_pb_1 = require("../../fintekkers/requests/security/create_security_response_pb");
51
+ const create_portfolio_response_pb_1 = require("../../fintekkers/requests/portfolio/create_portfolio_response_pb");
52
+ const create_price_response_pb_1 = require("../../fintekkers/requests/price/create_price_response_pb");
53
+ const create_transaction_response_pb_1 = require("../../fintekkers/requests/transaction/create_transaction_response_pb");
54
+ const SecurityService_1 = require("./security-service/SecurityService");
55
+ const PortfolioService_1 = require("./portfolio-service/PortfolioService");
56
+ const PriceService_1 = require("./price-service/PriceService");
57
+ const TransactionService_1 = require("./transaction-service/TransactionService");
58
+ const transaction_1 = __importDefault(require("../models/transaction/transaction"));
59
+ const LinkCacheModule = __importStar(require("../util/link-cache"));
60
+ function makeAsOf(epochSecondsOffset = 0) {
61
+ const ts = new timestamp_pb_1.Timestamp();
62
+ ts.setSeconds(1700000000 + epochSecondsOffset);
63
+ ts.setNanos(0);
64
+ const proto = new local_timestamp_pb_1.LocalTimestampProto();
65
+ proto.setTimestamp(ts);
66
+ proto.setTimeZone('UTC');
67
+ return proto;
68
+ }
69
+ /**
70
+ * Build a fake gRPC client that returns a pre-canned response on
71
+ * createOrUpdate. Mimics the callback shape the real grpc-js client uses,
72
+ * since the service wraps it with `promisify`.
73
+ */
74
+ function fakeClient(response) {
75
+ return {
76
+ createOrUpdate(_req, cb) {
77
+ cb(null, response);
78
+ },
79
+ };
80
+ }
81
+ beforeEach(() => {
82
+ LinkCacheModule.SECURITY.clear();
83
+ LinkCacheModule.PORTFOLIO.clear();
84
+ LinkCacheModule.PRICE.clear();
85
+ LinkCacheModule.TRANSACTION.clear();
86
+ });
87
+ test('SecurityService.createSecurity populates LinkCache.SECURITY', () => __awaiter(void 0, void 0, void 0, function* () {
88
+ const uuid = uuid_1.UUID.random();
89
+ const asOf = makeAsOf(0);
90
+ const persisted = new security_pb_1.SecurityProto();
91
+ persisted.setUuid(uuid.toUUIDProto());
92
+ persisted.setAsOf(asOf);
93
+ persisted.setIssuerName('ACME');
94
+ const response = new create_security_response_pb_1.CreateSecurityResponseProto();
95
+ response.setSecurityResponse(persisted);
96
+ const svc = new SecurityService_1.SecurityService();
97
+ svc.client = fakeClient(response);
98
+ yield svc.createSecurity(new security_pb_1.SecurityProto());
99
+ const cached = LinkCacheModule.SECURITY.get(uuid.toString(), new datetime_1.ZonedDateTime(asOf));
100
+ expect(cached).toBeDefined();
101
+ expect(cached.getIssuerName()).toBe('ACME');
102
+ }));
103
+ test('PortfolioService.createPortfolio populates LinkCache.PORTFOLIO', () => __awaiter(void 0, void 0, void 0, function* () {
104
+ const uuid = uuid_1.UUID.random();
105
+ const asOf = makeAsOf(1);
106
+ const persisted = new portfolio_pb_1.PortfolioProto();
107
+ persisted.setUuid(uuid.toUUIDProto());
108
+ persisted.setAsOf(asOf);
109
+ persisted.setPortfolioName('Strategy Z');
110
+ const response = new create_portfolio_response_pb_1.CreatePortfolioResponseProto();
111
+ response.addPortfolioResponse(persisted);
112
+ const svc = new PortfolioService_1.PortfolioService();
113
+ svc.client = fakeClient(response);
114
+ yield svc.createPortfolio(new portfolio_pb_1.PortfolioProto());
115
+ const cached = LinkCacheModule.PORTFOLIO.get(uuid.toString(), new datetime_1.ZonedDateTime(asOf));
116
+ expect(cached).toBeDefined();
117
+ expect(cached.getPortfolioName()).toBe('Strategy Z');
118
+ }));
119
+ test('PriceService.createOrUpdate populates LinkCache.PRICE', () => __awaiter(void 0, void 0, void 0, function* () {
120
+ const uuid = uuid_1.UUID.random();
121
+ const asOf = makeAsOf(2);
122
+ const persisted = new price_pb_1.PriceProto();
123
+ persisted.setUuid(uuid.toUUIDProto());
124
+ persisted.setAsOf(asOf);
125
+ const response = new create_price_response_pb_1.CreatePriceResponseProto();
126
+ response.addPriceResponse(persisted);
127
+ const svc = new PriceService_1.PriceService();
128
+ svc.client = fakeClient(response);
129
+ yield svc.createOrUpdate(new price_pb_1.PriceProto());
130
+ const cached = LinkCacheModule.PRICE.get(uuid.toString(), new datetime_1.ZonedDateTime(asOf));
131
+ expect(cached).toBeDefined();
132
+ }));
133
+ test('TransactionService.createTransaction populates LinkCache.TRANSACTION', () => __awaiter(void 0, void 0, void 0, function* () {
134
+ const uuid = uuid_1.UUID.random();
135
+ const asOf = makeAsOf(3);
136
+ const persisted = new transaction_pb_1.TransactionProto();
137
+ persisted.setUuid(uuid.toUUIDProto());
138
+ persisted.setAsOf(asOf);
139
+ const response = new create_transaction_response_pb_1.CreateTransactionResponseProto();
140
+ response.setTransactionResponse(persisted);
141
+ const svc = new TransactionService_1.TransactionService();
142
+ svc.client = fakeClient(response);
143
+ yield svc.createTransaction(new transaction_1.default(new transaction_pb_1.TransactionProto()));
144
+ const cached = LinkCacheModule.TRANSACTION.get(uuid.toString(), new datetime_1.ZonedDateTime(asOf));
145
+ expect(cached).toBeDefined();
146
+ }));
147
+ //# sourceMappingURL=service-client-writethrough.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-client-writethrough.test.js","sourceRoot":"","sources":["service-client-writethrough.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ // Verifies SecurityService / PortfolioService / PriceService / TransactionService
2
+ // each populate LinkCache on a successful createOrUpdate. Pure unit tests —
3
+ // the gRPC client is replaced via Object.assign on the service instance so we
4
+ // never hit the wire.
5
+
6
+ import { UUID } from '../models/utils/uuid';
7
+ import { ZonedDateTime } from '../models/utils/datetime';
8
+ import { LocalTimestampProto } from '../../fintekkers/models/util/local_timestamp_pb';
9
+ import { Timestamp } from 'google-protobuf/google/protobuf/timestamp_pb';
10
+
11
+ import { SecurityProto } from '../../fintekkers/models/security/security_pb';
12
+ import { PortfolioProto } from '../../fintekkers/models/portfolio/portfolio_pb';
13
+ import { PriceProto } from '../../fintekkers/models/price/price_pb';
14
+ import { TransactionProto } from '../../fintekkers/models/transaction/transaction_pb';
15
+
16
+ import { CreateSecurityResponseProto } from '../../fintekkers/requests/security/create_security_response_pb';
17
+ import { CreatePortfolioResponseProto } from '../../fintekkers/requests/portfolio/create_portfolio_response_pb';
18
+ import { CreatePriceResponseProto } from '../../fintekkers/requests/price/create_price_response_pb';
19
+ import { CreateTransactionResponseProto } from '../../fintekkers/requests/transaction/create_transaction_response_pb';
20
+
21
+ import { SecurityService } from './security-service/SecurityService';
22
+ import { PortfolioService } from './portfolio-service/PortfolioService';
23
+ import { PriceService } from './price-service/PriceService';
24
+ import { TransactionService } from './transaction-service/TransactionService';
25
+ import Transaction from '../models/transaction/transaction';
26
+
27
+ import * as LinkCacheModule from '../util/link-cache';
28
+
29
+ function makeAsOf(epochSecondsOffset = 0): LocalTimestampProto {
30
+ const ts = new Timestamp();
31
+ ts.setSeconds(1_700_000_000 + epochSecondsOffset);
32
+ ts.setNanos(0);
33
+ const proto = new LocalTimestampProto();
34
+ proto.setTimestamp(ts);
35
+ proto.setTimeZone('UTC');
36
+ return proto;
37
+ }
38
+
39
+ /**
40
+ * Build a fake gRPC client that returns a pre-canned response on
41
+ * createOrUpdate. Mimics the callback shape the real grpc-js client uses,
42
+ * since the service wraps it with `promisify`.
43
+ */
44
+ function fakeClient<TRes>(response: TRes): any {
45
+ return {
46
+ createOrUpdate(_req: unknown, cb: (err: unknown, res: TRes) => void) {
47
+ cb(null, response);
48
+ },
49
+ };
50
+ }
51
+
52
+ beforeEach(() => {
53
+ LinkCacheModule.SECURITY.clear();
54
+ LinkCacheModule.PORTFOLIO.clear();
55
+ LinkCacheModule.PRICE.clear();
56
+ LinkCacheModule.TRANSACTION.clear();
57
+ });
58
+
59
+ test('SecurityService.createSecurity populates LinkCache.SECURITY', async () => {
60
+ const uuid = UUID.random();
61
+ const asOf = makeAsOf(0);
62
+
63
+ const persisted = new SecurityProto();
64
+ persisted.setUuid(uuid.toUUIDProto());
65
+ persisted.setAsOf(asOf);
66
+ persisted.setIssuerName('ACME');
67
+
68
+ const response = new CreateSecurityResponseProto();
69
+ response.setSecurityResponse(persisted);
70
+
71
+ const svc = new SecurityService();
72
+ (svc as any).client = fakeClient(response);
73
+
74
+ await svc.createSecurity(new SecurityProto());
75
+
76
+ const cached = LinkCacheModule.SECURITY.get(uuid.toString(), new ZonedDateTime(asOf));
77
+ expect(cached).toBeDefined();
78
+ expect(cached!.getIssuerName()).toBe('ACME');
79
+ });
80
+
81
+ test('PortfolioService.createPortfolio populates LinkCache.PORTFOLIO', async () => {
82
+ const uuid = UUID.random();
83
+ const asOf = makeAsOf(1);
84
+
85
+ const persisted = new PortfolioProto();
86
+ persisted.setUuid(uuid.toUUIDProto());
87
+ persisted.setAsOf(asOf);
88
+ persisted.setPortfolioName('Strategy Z');
89
+
90
+ const response = new CreatePortfolioResponseProto();
91
+ response.addPortfolioResponse(persisted);
92
+
93
+ const svc = new PortfolioService();
94
+ (svc as any).client = fakeClient(response);
95
+
96
+ await svc.createPortfolio(new PortfolioProto());
97
+
98
+ const cached = LinkCacheModule.PORTFOLIO.get(uuid.toString(), new ZonedDateTime(asOf));
99
+ expect(cached).toBeDefined();
100
+ expect(cached!.getPortfolioName()).toBe('Strategy Z');
101
+ });
102
+
103
+ test('PriceService.createOrUpdate populates LinkCache.PRICE', async () => {
104
+ const uuid = UUID.random();
105
+ const asOf = makeAsOf(2);
106
+
107
+ const persisted = new PriceProto();
108
+ persisted.setUuid(uuid.toUUIDProto());
109
+ persisted.setAsOf(asOf);
110
+
111
+ const response = new CreatePriceResponseProto();
112
+ response.addPriceResponse(persisted);
113
+
114
+ const svc = new PriceService();
115
+ (svc as any).client = fakeClient(response);
116
+
117
+ await svc.createOrUpdate(new PriceProto());
118
+
119
+ const cached = LinkCacheModule.PRICE.get(uuid.toString(), new ZonedDateTime(asOf));
120
+ expect(cached).toBeDefined();
121
+ });
122
+
123
+ test('TransactionService.createTransaction populates LinkCache.TRANSACTION', async () => {
124
+ const uuid = UUID.random();
125
+ const asOf = makeAsOf(3);
126
+
127
+ const persisted = new TransactionProto();
128
+ persisted.setUuid(uuid.toUUIDProto());
129
+ persisted.setAsOf(asOf);
130
+
131
+ const response = new CreateTransactionResponseProto();
132
+ response.setTransactionResponse(persisted);
133
+
134
+ const svc = new TransactionService();
135
+ (svc as any).client = fakeClient(response);
136
+
137
+ await svc.createTransaction(new Transaction(new TransactionProto()));
138
+
139
+ const cached = LinkCacheModule.TRANSACTION.get(uuid.toString(), new ZonedDateTime(asOf));
140
+ expect(cached).toBeDefined();
141
+ });
@@ -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) {
@@ -23,6 +46,9 @@ const create_transaction_request_pb_1 = require("../../../fintekkers/requests/tr
23
46
  const query_transaction_request_pb_1 = require("../../../fintekkers/requests/transaction/query_transaction_request_pb");
24
47
  const requestcontext_1 = __importDefault(require("../../models/utils/requestcontext"));
25
48
  const link_resolver_1 = __importDefault(require("../../util/link-resolver"));
49
+ const LinkCacheModule = __importStar(require("../../util/link-cache"));
50
+ const uuid_1 = require("../../models/utils/uuid");
51
+ const datetime_1 = require("../../models/utils/datetime");
26
52
  class TransactionService {
27
53
  constructor(apiKey) {
28
54
  if (apiKey) {
@@ -52,6 +78,16 @@ class TransactionService {
52
78
  createRequest.setCreateTransactionInput(transaction.proto);
53
79
  const createTransactionAsync = (0, util_1.promisify)(this.client.createOrUpdate.bind(this.client));
54
80
  const response = yield createTransactionAsync(createRequest);
81
+ // Write-through to LinkCache. transactionResponse is a singular field.
82
+ const persisted = response.getTransactionResponse();
83
+ if (persisted) {
84
+ const uuidProto = persisted.getUuid();
85
+ const asOfProto = persisted.getAsOf();
86
+ if (uuidProto && asOfProto) {
87
+ const uuidKey = uuid_1.UUID.fromU8Array(uuidProto.getRawUuid_asU8()).toString();
88
+ LinkCacheModule.TRANSACTION.put(uuidKey, persisted, new datetime_1.ZonedDateTime(asOfProto));
89
+ }
90
+ }
55
91
  return response;
56
92
  });
57
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionService.js","sourceRoot":"","sources":["TransactionService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TransactionService.js","sourceRoot":"","sources":["TransactionService.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,9 @@ import { QueryTransactionRequestProto } from '../../../fintekkers/requests/trans
16
16
  import { QueryTransactionResponseProto } from '../../../fintekkers/requests/transaction/query_transaction_response_pb';
17
17
  import EnvConfig from '../../models/utils/requestcontext';
18
18
  import LinkResolver from '../../util/link-resolver';
19
+ import * as LinkCacheModule from '../../util/link-cache';
20
+ import { UUID } from '../../models/utils/uuid';
21
+ import { ZonedDateTime } from '../../models/utils/datetime';
19
22
 
20
23
 
21
24
  class TransactionService {
@@ -49,6 +52,16 @@ class TransactionService {
49
52
 
50
53
  const createTransactionAsync = promisify(this.client.createOrUpdate.bind(this.client));
51
54
  const response = await createTransactionAsync(createRequest) as CreateTransactionResponseProto;
55
+ // Write-through to LinkCache. transactionResponse is a singular field.
56
+ const persisted = response.getTransactionResponse();
57
+ if (persisted) {
58
+ const uuidProto = persisted.getUuid();
59
+ const asOfProto = persisted.getAsOf();
60
+ if (uuidProto && asOfProto) {
61
+ const uuidKey = UUID.fromU8Array(uuidProto.getRawUuid_asU8()).toString();
62
+ LinkCacheModule.TRANSACTION.put(uuidKey, persisted, new ZonedDateTime(asOfProto));
63
+ }
64
+ }
52
65
  return response;
53
66
  }
54
67
 
@@ -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) {
@@ -21,6 +44,31 @@ const security_1 = __importDefault(require("../models/security/security"));
21
44
  const portfolio_1 = __importDefault(require("../models/portfolio/portfolio"));
22
45
  const uuid_1 = require("../models/utils/uuid");
23
46
  const requestcontext_1 = __importDefault(require("../models/utils/requestcontext"));
47
+ const datetime_1 = require("../models/utils/datetime");
48
+ const LinkCacheModule = __importStar(require("./link-cache"));
49
+ /**
50
+ * Mirror a freshly-fetched SecurityProto into the process-wide
51
+ * `LinkCache.SECURITY`. The lazy-hydrate `SecurityWrapper.ensureHydrated()`
52
+ * reads from this cache, so pre-warming via LinkResolver immediately
53
+ * benefits accessor reads. Skips silently when the resolved proto lacks
54
+ * uuid or as_of — `LinkCache.put` requires both.
55
+ */
56
+ function populateSecurityLinkCache(proto) {
57
+ const uuidProto = proto.getUuid();
58
+ const asOfProto = proto.getAsOf();
59
+ if (!uuidProto || !asOfProto)
60
+ return;
61
+ const uuidKey = uuid_1.UUID.fromU8Array(uuidProto.getRawUuid_asU8()).toString();
62
+ LinkCacheModule.SECURITY.put(uuidKey, proto, new datetime_1.ZonedDateTime(asOfProto));
63
+ }
64
+ function populatePortfolioLinkCache(proto) {
65
+ const uuidProto = proto.getUuid();
66
+ const asOfProto = proto.getAsOf();
67
+ if (!uuidProto || !asOfProto)
68
+ return;
69
+ const uuidKey = uuid_1.UUID.fromU8Array(uuidProto.getRawUuid_asU8()).toString();
70
+ LinkCacheModule.PORTFOLIO.put(uuidKey, proto, new datetime_1.ZonedDateTime(asOfProto));
71
+ }
24
72
  /**
25
73
  * Tiny LRU. Map keeps insertion order; on get-hit we delete + re-insert
26
74
  * to bump to the end (most recently used). On overflow we drop the
@@ -195,6 +243,7 @@ class LinkResolver {
195
243
  continue;
196
244
  const uuidStr = uuid_1.UUID.fromU8Array(uuidProto.getRawUuid_asU8()).toString();
197
245
  this.securityCache.set(`${uuidStr}@${bucketKey}`, proto);
246
+ populateSecurityLinkCache(proto);
198
247
  }
199
248
  })));
200
249
  // Mutate each item's embedded security in place.
@@ -253,6 +302,7 @@ class LinkResolver {
253
302
  continue;
254
303
  const uuidStr = uuid_1.UUID.fromU8Array(uuidProto.getRawUuid_asU8()).toString();
255
304
  this.portfolioCache.set(`${uuidStr}@${bucketKey}`, proto);
305
+ populatePortfolioLinkCache(proto);
256
306
  }
257
307
  })));
258
308
  for (const item of items) {
@@ -294,6 +344,7 @@ class LinkResolver {
294
344
  }
295
345
  const proto = protos[0];
296
346
  this.securityCache.set(key, proto);
347
+ populateSecurityLinkCache(proto);
297
348
  return proto;
298
349
  }).finally(() => {
299
350
  this.securityInFlight.delete(key);
@@ -317,6 +368,7 @@ class LinkResolver {
317
368
  }
318
369
  const proto = protos[0];
319
370
  this.portfolioCache.set(key, proto);
371
+ populatePortfolioLinkCache(proto);
320
372
  return proto;
321
373
  }).finally(() => {
322
374
  this.portfolioInFlight.delete(key);
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAiC;AAOjC,kHAAqG;AACrG,qHAAwG;AACxG,4GAAyG;AAEzG,+GAA4G;AAG5G,2EAAmD;AACnD,8EAAsD;AACtD,+CAA4C;AAC5C,oFAAuD;AACvD,uDAAyD;AACzD,8DAAgD;AAEhD;;;;;;GAMG;AACH,SAAS,yBAAyB,CAAC,KAAoB;IACrD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAClC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS;QAAE,OAAO;IACrC,MAAM,OAAO,GAAG,WAAI,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzE,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,wBAAa,CAAC,SAAS,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAqB;IACvD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAClC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS;QAAE,OAAO;IACrC,MAAM,OAAO,GAAG,WAAI,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzE,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,wBAAa,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9E,CAAC;AA+DD;;;;;GAKG;AACH,MAAM,OAAO;IAEX,YAAoB,OAAe,EAAU,KAAc;QAAvC,YAAO,GAAP,OAAO,CAAQ;QAAU,UAAK,GAAL,KAAK,CAAS;QADnD,QAAG,GAAG,IAAI,GAAG,EAAyB,CAAC;IACe,CAAC;IAE/D,GAAG,CAAC,GAAW;QACb,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE;YAC1E,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrB,OAAO,SAAS,CAAC;SAClB;QACD,8BAA8B;QAC9B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC;YAAE,OAAO;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC5C,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM;YAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACzB;IACH,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,SAAS,OAAO,CAAC,IAAqC;IACpD,IAAI,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAC;IAC3B,sCAAsC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;IACrC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,YAAY;IAahB,YAAY,OAA4B,EAAE;;QAN1C,qEAAqE;QACrE,qEAAqE;QACrE,uCAAuC;QAC/B,qBAAgB,GAAG,IAAI,GAAG,EAAkC,CAAC;QAC7D,sBAAiB,GAAG,IAAI,GAAG,EAAmC,CAAC;QAGrE,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,SAAS,mCAAI,IAAI,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAEpD,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;SAC3C;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE;YACtB,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,wBAAS,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3F,IAAI,CAAC,cAAc,GAAG,IAAI,yCAAc,CAAC,wBAAS,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;SAC3F;aAAM;YACL,IAAI,CAAC,cAAc,GAAG,IAAI,yCAAc,CAAC,wBAAS,CAAC,MAAM,EAAE,wBAAS,CAAC,cAAc,CAAC,CAAC;SACtF;QAED,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;SAC7C;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE;YACtB,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,wBAAS,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3F,IAAI,CAAC,eAAe,GAAG,IAAI,2CAAe,CAAC,wBAAS,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;SAC7F;aAAM;YACL,IAAI,CAAC,eAAe,GAAG,IAAI,2CAAe,CAAC,wBAAS,CAAC,MAAM,EAAE,wBAAS,CAAC,cAAc,CAAC,CAAC;SACxF;IACH,CAAC;IAED;;;;;OAKG;IACG,WAAW,CAAC,IAAU,EAAE,IAA0B;;YACtD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxD,OAAO,kBAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;KAAA;IAED;;;OAGG;IACG,YAAY,CAAC,IAAU,EAAE,IAA0B;;YACvD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACzD,OAAO,IAAI,mBAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;KAAA;IAED;;;;;;;;;;;;;OAaG;IACG,iBAAiB,CAA+B,KAAU;;YAC9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAErC,oEAAoE;YACpE,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;YACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBACrC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;oBAAE,SAAS;gBACvC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChC,IAAI,CAAC,SAAS;oBAAE,SAAS;gBACzB,MAAM,IAAI,GAAG,WAAI,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC;gBAC3D,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,SAAS,EAAE,CAAC;gBACnD,uDAAuD;gBACvD,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,SAAS;gBAC/C,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACpC,IAAI,CAAC,MAAM,EAAE;oBACX,MAAM,GAAG,IAAI,GAAG,EAAgB,CAAC;oBACjC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;iBAChC;gBACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;aACvD;YAED,uDAAuD;YACvD,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAO,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE;gBAC/D,iEAAiE;gBACjE,mEAAmE;gBACnE,6BAA6B;gBAC7B,MAAM,IAAI,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;gBAClH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBACpF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;oBAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClC,IAAI,CAAC,SAAS;wBAAE,SAAS;oBACzB,MAAM,OAAO,GAAG,WAAI,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACzE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;oBACzD,yBAAyB,CAAC,KAAK,CAAC,CAAC;iBAClC;YACH,CAAC,CAAA,CAAC,CACH,CAAC;YAEF,iDAAiD;YACjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBACrC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;oBAAE,SAAS;gBACvC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChC,IAAI,CAAC,SAAS;oBAAE,SAAS;gBACzB,MAAM,OAAO,GAAG,WAAI,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACzE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,SAAS,EAAE,CAAC,CAAC;gBACnE,IAAI,QAAQ;oBAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aAChD;YAED,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IAED;;;OAGG;IACG,iBAAiB,CAAgC,KAAU;;YAC/D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAErC,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;YACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBACvC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;oBAAE,SAAS;gBACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,SAAS;oBAAE,SAAS;gBACzB,MAAM,IAAI,GAAG,WAAI,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC;gBAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,SAAS,EAAE,CAAC;gBACnD,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,SAAS;gBAChD,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACpC,IAAI,CAAC,MAAM,EAAE;oBACX,MAAM,GAAG,IAAI,GAAG,EAAgB,CAAC;oBACjC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;iBAChC;gBACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;aACvD;YAED,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAO,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE;gBAC/D,MAAM,IAAI,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,SAAS,CAAC,CAAC;gBACjH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBACpF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;oBAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClC,IAAI,CAAC,SAAS;wBAAE,SAAS;oBACzB,MAAM,OAAO,GAAG,WAAI,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACzE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;oBAC1D,0BAA0B,CAAC,KAAK,CAAC,CAAC;iBACnC;YACH,CAAC,CAAA,CAAC,CACH,CAAC;YAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBACvC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;oBAAE,SAAS;gBACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,SAAS;oBAAE,SAAS;gBACzB,MAAM,OAAO,GAAG,WAAI,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACzE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,SAAS,EAAE,CAAC,CAAC;gBACpE,IAAI,QAAQ;oBAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;aACjD;YAED,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IAED,qDAAqD;IACrD,UAAU;QACR,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,kCAAkC;IAEpB,kBAAkB,CAAC,IAAU,EAAE,IAA0B;;YACrE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAElD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAE9B,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACtE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBAC5E;gBACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACnC,yBAAyB,CAAC,KAAK,CAAC,CAAC;gBACjC,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACxC,OAAO,OAAO,CAAC;QACjB,CAAC;KAAA;IAEa,mBAAmB,CAAC,IAAU,EAAE,IAA0B;;YACtE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAElD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAE9B,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACtE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBAC7E;gBACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACpC,0BAA0B,CAAC,KAAK,CAAC,CAAC;gBAClC,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACzC,OAAO,OAAO,CAAC;QACjB,CAAC;KAAA;IAEa,oBAAoB,CAAC,KAAa,EAAE,IAA0B;;YAC1E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,qDAAyB,EAAE,CAAC;YAChD,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAC1C,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,UAAU,GAAgB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAClE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,IAAI;gBAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEhC,MAAM,aAAa,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACxF,MAAM,QAAQ,GAAG,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,CAA+B,CAAC;YAC9E,OAAO,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QAC5C,CAAC;KAAA;IAEa,oBAAoB,CAAC,KAAa,EAAE,IAA0B;;YAC1E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,uDAA0B,EAAE,CAAC;YACjD,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;YAC3C,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,UAAU,GAAgB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAClE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,IAAI;gBAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEhC,MAAM,aAAa,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YAC1F,MAAM,QAAQ,GAAG,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,CAAgC,CAAC;YAC/E,OAAO,QAAQ,CAAC,wBAAwB,EAAE,CAAC;QAC7C,CAAC;KAAA;CACF;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,KAAU,EACV,IAAgE,EAChE,SAAiB;IAEjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;YAAE,SAAS;QACvC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;KAC9C;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAoBD,kBAAe,YAAY,CAAC"}
@@ -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) {
@@ -346,4 +369,56 @@ describe('LinkResolver', () => {
346
369
  expect(callLog.count).toBe(2);
347
370
  }));
348
371
  });
372
+ const LinkCacheModule = __importStar(require("./link-cache"));
373
+ const datetime_1 = require("../models/utils/datetime");
374
+ describe('LinkResolver write-through to LinkCache', () => {
375
+ beforeEach(() => {
376
+ LinkCacheModule.SECURITY.clear();
377
+ LinkCacheModule.PORTFOLIO.clear();
378
+ });
379
+ function fullSecurityWithAsOf(uuid, issuer, asOf) {
380
+ const proto = fullSecurity(uuid, issuer);
381
+ proto.setAsOf(asOf);
382
+ return proto;
383
+ }
384
+ test('getSecurity populates LinkCache.SECURITY', () => __awaiter(void 0, void 0, void 0, function* () {
385
+ const uuid = uuid_1.UUID.random();
386
+ const asOf = makeAsOf(1700000010);
387
+ const store = new Map([
388
+ [uuid.toString(), fullSecurityWithAsOf(uuid, 'ACME', asOf)],
389
+ ]);
390
+ const resolver = new link_resolver_1.default({
391
+ securityClient: mockSecurityClient(store, newCallLog()),
392
+ portfolioClient: mockPortfolioClient(new Map(), newCallLog()),
393
+ });
394
+ const out = yield resolver.getSecurity(uuid, asOf);
395
+ expect(out.getIssuerName()).toBe('ACME');
396
+ const cached = LinkCacheModule.SECURITY.get(uuid.toString(), new datetime_1.ZonedDateTime(asOf));
397
+ expect(cached).toBeDefined();
398
+ expect(cached.getIssuerName()).toBe('ACME');
399
+ }));
400
+ test('resolveSecurities populates LinkCache.SECURITY', () => __awaiter(void 0, void 0, void 0, function* () {
401
+ const uuid = uuid_1.UUID.random();
402
+ const asOf = makeAsOf(1700000011);
403
+ const store = new Map([
404
+ [uuid.toString(), fullSecurityWithAsOf(uuid, 'BULK', asOf)],
405
+ ]);
406
+ const resolver = new link_resolver_1.default({
407
+ securityClient: mockSecurityClient(store, newCallLog()),
408
+ portfolioClient: mockPortfolioClient(new Map(), newCallLog()),
409
+ });
410
+ const linkSec = new security_pb_1.SecurityProto();
411
+ linkSec.setUuid(uuid.toUUIDProto());
412
+ linkSec.setIsLink(true);
413
+ linkSec.setAsOf(asOf);
414
+ const priceProto = new price_pb_1.PriceProto();
415
+ priceProto.setUuid(uuid_1.UUID.random().toUUIDProto());
416
+ priceProto.setSecurity(linkSec);
417
+ const price = new Price_1.default(priceProto);
418
+ yield resolver.resolveSecurities([price]);
419
+ const cached = LinkCacheModule.SECURITY.get(uuid.toString(), new datetime_1.ZonedDateTime(asOf));
420
+ expect(cached).toBeDefined();
421
+ expect(cached.getIssuerName()).toBe('BULK');
422
+ }));
423
+ });
349
424
  //# sourceMappingURL=link-resolver.test.js.map