@adaptic/backend-legacy 0.0.959 → 0.0.961
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/ABTest.cjs +180 -66
- package/Account.cjs +180 -66
- package/AccountDecisionRecord.cjs +180 -66
- package/AccountLinkingRequest.cjs +180 -66
- package/Action.cjs +180 -66
- package/Alert.cjs +180 -66
- package/Allocation.cjs +180 -66
- package/AlpacaAccount.cjs +180 -66
- package/AnalyticsConfiguration.cjs +180 -66
- package/AnalyticsSnapshot.cjs +180 -66
- package/Asset.cjs +180 -66
- package/AuditLog.cjs +180 -66
- package/Authenticator.cjs +180 -66
- package/Configuration.cjs +180 -66
- package/ConflictEvent.cjs +180 -66
- package/ConnectionHealthSnapshot.cjs +180 -66
- package/Customer.cjs +180 -66
- package/DeadLetterMessage.cjs +180 -66
- package/DecisionMemorySummary.cjs +180 -66
- package/EconomicEvent.cjs +180 -66
- package/EquityBar.cjs +180 -66
- package/Event.cjs +180 -66
- package/EventSnapshot.cjs +180 -66
- package/FeatureImportanceAnalysis.cjs +180 -66
- package/InstitutionalFlowSignal.cjs +180 -66
- package/InstitutionalHolding.cjs +180 -66
- package/InstitutionalSentimentAlerts.cjs +180 -66
- package/InstitutionalSentimentErrors.cjs +180 -66
- package/InstitutionalSentimentHistory.cjs +180 -66
- package/InstitutionalSentimentMetrics.cjs +180 -66
- package/InviteToken.cjs +180 -66
- package/LinkedProvider.cjs +180 -66
- package/LlmConfiguration.cjs +180 -66
- package/MLModelVersion.cjs +180 -66
- package/MLTrainingData.cjs +180 -66
- package/MarketSentiment.cjs +180 -66
- package/ModelArtifact.cjs +180 -66
- package/ModelVersion.cjs +180 -66
- package/ModelVersionArtifact.cjs +180 -66
- package/NewsArticle.cjs +180 -66
- package/NewsArticleAssetSentiment.cjs +180 -66
- package/OptionsContract.cjs +180 -66
- package/OptionsGreeksHistory.cjs +180 -66
- package/OptionsPosition.cjs +180 -66
- package/OptionsPositionEvent.cjs +180 -66
- package/OptionsTradeExecution.cjs +180 -66
- package/PolicyOverlay.cjs +180 -66
- package/PortfolioGreeksHistory.cjs +180 -66
- package/ScheduledOptionOrder.cjs +180 -66
- package/Session.cjs +180 -66
- package/SignalGeneratorMetrics.cjs +180 -66
- package/SignalLineage.cjs +180 -66
- package/SignalOutcome.cjs +180 -66
- package/SignalPriorityQueue.cjs +180 -66
- package/SyncEvent.cjs +180 -66
- package/SystemAlert.cjs +180 -66
- package/Trade.cjs +180 -66
- package/TradeAuditEvent.cjs +180 -66
- package/TradeExecutionHistory.cjs +180 -66
- package/TradeOutcome.cjs +180 -66
- package/TradingPolicy.cjs +180 -66
- package/User.cjs +180 -66
- package/VerificationToken.cjs +180 -66
- package/WaitlistEntry.cjs +180 -66
- package/esm/ABTest.d.ts.map +1 -1
- package/esm/ABTest.js.map +1 -1
- package/esm/ABTest.mjs +180 -66
- package/esm/Account.d.ts.map +1 -1
- package/esm/Account.js.map +1 -1
- package/esm/Account.mjs +180 -66
- package/esm/AccountDecisionRecord.d.ts.map +1 -1
- package/esm/AccountDecisionRecord.js.map +1 -1
- package/esm/AccountDecisionRecord.mjs +180 -66
- package/esm/AccountLinkingRequest.d.ts.map +1 -1
- package/esm/AccountLinkingRequest.js.map +1 -1
- package/esm/AccountLinkingRequest.mjs +180 -66
- package/esm/Action.d.ts.map +1 -1
- package/esm/Action.js.map +1 -1
- package/esm/Action.mjs +180 -66
- package/esm/Alert.d.ts.map +1 -1
- package/esm/Alert.js.map +1 -1
- package/esm/Alert.mjs +180 -66
- package/esm/Allocation.d.ts.map +1 -1
- package/esm/Allocation.js.map +1 -1
- package/esm/Allocation.mjs +180 -66
- package/esm/AlpacaAccount.d.ts.map +1 -1
- package/esm/AlpacaAccount.js.map +1 -1
- package/esm/AlpacaAccount.mjs +180 -66
- package/esm/AnalyticsConfiguration.d.ts.map +1 -1
- package/esm/AnalyticsConfiguration.js.map +1 -1
- package/esm/AnalyticsConfiguration.mjs +180 -66
- package/esm/AnalyticsSnapshot.d.ts.map +1 -1
- package/esm/AnalyticsSnapshot.js.map +1 -1
- package/esm/AnalyticsSnapshot.mjs +180 -66
- package/esm/Asset.d.ts.map +1 -1
- package/esm/Asset.js.map +1 -1
- package/esm/Asset.mjs +180 -66
- package/esm/AuditLog.d.ts.map +1 -1
- package/esm/AuditLog.js.map +1 -1
- package/esm/AuditLog.mjs +180 -66
- package/esm/Authenticator.d.ts.map +1 -1
- package/esm/Authenticator.js.map +1 -1
- package/esm/Authenticator.mjs +180 -66
- package/esm/Configuration.d.ts.map +1 -1
- package/esm/Configuration.js.map +1 -1
- package/esm/Configuration.mjs +180 -66
- package/esm/ConflictEvent.d.ts.map +1 -1
- package/esm/ConflictEvent.js.map +1 -1
- package/esm/ConflictEvent.mjs +180 -66
- package/esm/ConnectionHealthSnapshot.d.ts.map +1 -1
- package/esm/ConnectionHealthSnapshot.js.map +1 -1
- package/esm/ConnectionHealthSnapshot.mjs +180 -66
- package/esm/Customer.d.ts.map +1 -1
- package/esm/Customer.js.map +1 -1
- package/esm/Customer.mjs +180 -66
- package/esm/DeadLetterMessage.d.ts.map +1 -1
- package/esm/DeadLetterMessage.js.map +1 -1
- package/esm/DeadLetterMessage.mjs +180 -66
- package/esm/DecisionMemorySummary.d.ts.map +1 -1
- package/esm/DecisionMemorySummary.js.map +1 -1
- package/esm/DecisionMemorySummary.mjs +180 -66
- package/esm/EconomicEvent.d.ts.map +1 -1
- package/esm/EconomicEvent.js.map +1 -1
- package/esm/EconomicEvent.mjs +180 -66
- package/esm/EquityBar.d.ts.map +1 -1
- package/esm/EquityBar.js.map +1 -1
- package/esm/EquityBar.mjs +180 -66
- package/esm/Event.d.ts.map +1 -1
- package/esm/Event.js.map +1 -1
- package/esm/Event.mjs +180 -66
- package/esm/EventSnapshot.d.ts.map +1 -1
- package/esm/EventSnapshot.js.map +1 -1
- package/esm/EventSnapshot.mjs +180 -66
- package/esm/FeatureImportanceAnalysis.d.ts.map +1 -1
- package/esm/FeatureImportanceAnalysis.js.map +1 -1
- package/esm/FeatureImportanceAnalysis.mjs +180 -66
- package/esm/InstitutionalFlowSignal.d.ts.map +1 -1
- package/esm/InstitutionalFlowSignal.js.map +1 -1
- package/esm/InstitutionalFlowSignal.mjs +180 -66
- package/esm/InstitutionalHolding.d.ts.map +1 -1
- package/esm/InstitutionalHolding.js.map +1 -1
- package/esm/InstitutionalHolding.mjs +180 -66
- package/esm/InstitutionalSentimentAlerts.d.ts.map +1 -1
- package/esm/InstitutionalSentimentAlerts.js.map +1 -1
- package/esm/InstitutionalSentimentAlerts.mjs +180 -66
- package/esm/InstitutionalSentimentErrors.d.ts.map +1 -1
- package/esm/InstitutionalSentimentErrors.js.map +1 -1
- package/esm/InstitutionalSentimentErrors.mjs +180 -66
- package/esm/InstitutionalSentimentHistory.d.ts.map +1 -1
- package/esm/InstitutionalSentimentHistory.js.map +1 -1
- package/esm/InstitutionalSentimentHistory.mjs +180 -66
- package/esm/InstitutionalSentimentMetrics.d.ts.map +1 -1
- package/esm/InstitutionalSentimentMetrics.js.map +1 -1
- package/esm/InstitutionalSentimentMetrics.mjs +180 -66
- package/esm/InviteToken.d.ts.map +1 -1
- package/esm/InviteToken.js.map +1 -1
- package/esm/InviteToken.mjs +180 -66
- package/esm/LinkedProvider.d.ts.map +1 -1
- package/esm/LinkedProvider.js.map +1 -1
- package/esm/LinkedProvider.mjs +180 -66
- package/esm/LlmConfiguration.d.ts.map +1 -1
- package/esm/LlmConfiguration.js.map +1 -1
- package/esm/LlmConfiguration.mjs +180 -66
- package/esm/MLModelVersion.d.ts.map +1 -1
- package/esm/MLModelVersion.js.map +1 -1
- package/esm/MLModelVersion.mjs +180 -66
- package/esm/MLTrainingData.d.ts.map +1 -1
- package/esm/MLTrainingData.js.map +1 -1
- package/esm/MLTrainingData.mjs +180 -66
- package/esm/MarketSentiment.d.ts.map +1 -1
- package/esm/MarketSentiment.js.map +1 -1
- package/esm/MarketSentiment.mjs +180 -66
- package/esm/ModelArtifact.d.ts.map +1 -1
- package/esm/ModelArtifact.js.map +1 -1
- package/esm/ModelArtifact.mjs +180 -66
- package/esm/ModelVersion.d.ts.map +1 -1
- package/esm/ModelVersion.js.map +1 -1
- package/esm/ModelVersion.mjs +180 -66
- package/esm/ModelVersionArtifact.d.ts.map +1 -1
- package/esm/ModelVersionArtifact.js.map +1 -1
- package/esm/ModelVersionArtifact.mjs +180 -66
- package/esm/NewsArticle.d.ts.map +1 -1
- package/esm/NewsArticle.js.map +1 -1
- package/esm/NewsArticle.mjs +180 -66
- package/esm/NewsArticleAssetSentiment.d.ts.map +1 -1
- package/esm/NewsArticleAssetSentiment.js.map +1 -1
- package/esm/NewsArticleAssetSentiment.mjs +180 -66
- package/esm/OptionsContract.d.ts.map +1 -1
- package/esm/OptionsContract.js.map +1 -1
- package/esm/OptionsContract.mjs +180 -66
- package/esm/OptionsGreeksHistory.d.ts.map +1 -1
- package/esm/OptionsGreeksHistory.js.map +1 -1
- package/esm/OptionsGreeksHistory.mjs +180 -66
- package/esm/OptionsPosition.d.ts.map +1 -1
- package/esm/OptionsPosition.js.map +1 -1
- package/esm/OptionsPosition.mjs +180 -66
- package/esm/OptionsPositionEvent.d.ts.map +1 -1
- package/esm/OptionsPositionEvent.js.map +1 -1
- package/esm/OptionsPositionEvent.mjs +180 -66
- package/esm/OptionsTradeExecution.d.ts.map +1 -1
- package/esm/OptionsTradeExecution.js.map +1 -1
- package/esm/OptionsTradeExecution.mjs +180 -66
- package/esm/PolicyOverlay.d.ts.map +1 -1
- package/esm/PolicyOverlay.js.map +1 -1
- package/esm/PolicyOverlay.mjs +180 -66
- package/esm/PortfolioGreeksHistory.d.ts.map +1 -1
- package/esm/PortfolioGreeksHistory.js.map +1 -1
- package/esm/PortfolioGreeksHistory.mjs +180 -66
- package/esm/ScheduledOptionOrder.d.ts.map +1 -1
- package/esm/ScheduledOptionOrder.js.map +1 -1
- package/esm/ScheduledOptionOrder.mjs +180 -66
- package/esm/Session.d.ts.map +1 -1
- package/esm/Session.js.map +1 -1
- package/esm/Session.mjs +180 -66
- package/esm/SignalGeneratorMetrics.d.ts.map +1 -1
- package/esm/SignalGeneratorMetrics.js.map +1 -1
- package/esm/SignalGeneratorMetrics.mjs +180 -66
- package/esm/SignalLineage.d.ts.map +1 -1
- package/esm/SignalLineage.js.map +1 -1
- package/esm/SignalLineage.mjs +180 -66
- package/esm/SignalOutcome.d.ts.map +1 -1
- package/esm/SignalOutcome.js.map +1 -1
- package/esm/SignalOutcome.mjs +180 -66
- package/esm/SignalPriorityQueue.d.ts.map +1 -1
- package/esm/SignalPriorityQueue.js.map +1 -1
- package/esm/SignalPriorityQueue.mjs +180 -66
- package/esm/SyncEvent.d.ts.map +1 -1
- package/esm/SyncEvent.js.map +1 -1
- package/esm/SyncEvent.mjs +180 -66
- package/esm/SystemAlert.d.ts.map +1 -1
- package/esm/SystemAlert.js.map +1 -1
- package/esm/SystemAlert.mjs +180 -66
- package/esm/Trade.d.ts.map +1 -1
- package/esm/Trade.js.map +1 -1
- package/esm/Trade.mjs +180 -66
- package/esm/TradeAuditEvent.d.ts.map +1 -1
- package/esm/TradeAuditEvent.js.map +1 -1
- package/esm/TradeAuditEvent.mjs +180 -66
- package/esm/TradeExecutionHistory.d.ts.map +1 -1
- package/esm/TradeExecutionHistory.js.map +1 -1
- package/esm/TradeExecutionHistory.mjs +180 -66
- package/esm/TradeOutcome.d.ts.map +1 -1
- package/esm/TradeOutcome.js.map +1 -1
- package/esm/TradeOutcome.mjs +180 -66
- package/esm/TradingPolicy.d.ts.map +1 -1
- package/esm/TradingPolicy.js.map +1 -1
- package/esm/TradingPolicy.mjs +180 -66
- package/esm/User.d.ts.map +1 -1
- package/esm/User.js.map +1 -1
- package/esm/User.mjs +180 -66
- package/esm/VerificationToken.d.ts.map +1 -1
- package/esm/VerificationToken.js.map +1 -1
- package/esm/VerificationToken.mjs +180 -66
- package/esm/WaitlistEntry.d.ts.map +1 -1
- package/esm/WaitlistEntry.js.map +1 -1
- package/esm/WaitlistEntry.mjs +180 -66
- package/esm/index.d.ts.map +1 -1
- package/package.json +1 -1
package/Trade.cjs
CHANGED
|
@@ -236,13 +236,28 @@ exports.Trade = {
|
|
|
236
236
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
237
237
|
continue;
|
|
238
238
|
}
|
|
239
|
-
// Log structured error details and rethrow
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
239
|
+
// Log structured error details and rethrow.
|
|
240
|
+
// Demote transient failures to WARN with explicit transient+recoveryHint
|
|
241
|
+
// metadata so log analytics can distinguish recoverable upstream retries
|
|
242
|
+
// from true defects.
|
|
243
|
+
if (isConnectionError) {
|
|
244
|
+
logger_1.logger.warn("Database create operation failed (transient after retries)", {
|
|
245
|
+
operation: 'createOneTrade',
|
|
246
|
+
model: 'Trade',
|
|
247
|
+
error: String(error),
|
|
248
|
+
isRetryable: true,
|
|
249
|
+
transient: true,
|
|
250
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
logger_1.logger.error("Database create operation failed", {
|
|
255
|
+
operation: 'createOneTrade',
|
|
256
|
+
model: 'Trade',
|
|
257
|
+
error: String(error),
|
|
258
|
+
isRetryable: false,
|
|
259
|
+
});
|
|
260
|
+
}
|
|
246
261
|
throw error;
|
|
247
262
|
}
|
|
248
263
|
}
|
|
@@ -388,13 +403,25 @@ exports.Trade = {
|
|
|
388
403
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
389
404
|
continue;
|
|
390
405
|
}
|
|
391
|
-
// Log structured error details and rethrow
|
|
392
|
-
|
|
393
|
-
operation
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
406
|
+
// Log structured error details and rethrow (transient -> WARN).
|
|
407
|
+
if (isConnectionError) {
|
|
408
|
+
logger_1.logger.warn("Database createMany operation failed (transient after retries)", {
|
|
409
|
+
operation: 'createManyTrade',
|
|
410
|
+
model: 'Trade',
|
|
411
|
+
error: String(error),
|
|
412
|
+
isRetryable: true,
|
|
413
|
+
transient: true,
|
|
414
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
else {
|
|
418
|
+
logger_1.logger.error("Database createMany operation failed", {
|
|
419
|
+
operation: 'createManyTrade',
|
|
420
|
+
model: 'Trade',
|
|
421
|
+
error: String(error),
|
|
422
|
+
isRetryable: false,
|
|
423
|
+
});
|
|
424
|
+
}
|
|
398
425
|
throw error;
|
|
399
426
|
}
|
|
400
427
|
}
|
|
@@ -676,14 +703,27 @@ exports.Trade = {
|
|
|
676
703
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
677
704
|
continue;
|
|
678
705
|
}
|
|
679
|
-
// Log structured error details and rethrow
|
|
680
|
-
|
|
681
|
-
operation
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
706
|
+
// Log structured error details and rethrow (transient -> WARN).
|
|
707
|
+
if (isConnectionError) {
|
|
708
|
+
logger_1.logger.warn("Database update operation failed (transient after retries)", {
|
|
709
|
+
operation: 'updateOneTrade',
|
|
710
|
+
model: 'Trade',
|
|
711
|
+
error: String(error),
|
|
712
|
+
recordId: props.id,
|
|
713
|
+
isRetryable: true,
|
|
714
|
+
transient: true,
|
|
715
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
716
|
+
});
|
|
717
|
+
}
|
|
718
|
+
else {
|
|
719
|
+
logger_1.logger.error("Database update operation failed", {
|
|
720
|
+
operation: 'updateOneTrade',
|
|
721
|
+
model: 'Trade',
|
|
722
|
+
error: String(error),
|
|
723
|
+
recordId: props.id,
|
|
724
|
+
isRetryable: false,
|
|
725
|
+
});
|
|
726
|
+
}
|
|
687
727
|
throw error;
|
|
688
728
|
}
|
|
689
729
|
}
|
|
@@ -1028,14 +1068,27 @@ exports.Trade = {
|
|
|
1028
1068
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1029
1069
|
continue;
|
|
1030
1070
|
}
|
|
1031
|
-
// Log structured error details and rethrow
|
|
1032
|
-
|
|
1033
|
-
operation
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1071
|
+
// Log structured error details and rethrow (transient -> WARN).
|
|
1072
|
+
if (isConnectionError) {
|
|
1073
|
+
logger_1.logger.warn("Database upsert operation failed (transient after retries)", {
|
|
1074
|
+
operation: 'upsertOneTrade',
|
|
1075
|
+
model: 'Trade',
|
|
1076
|
+
error: String(error),
|
|
1077
|
+
recordId: props.id,
|
|
1078
|
+
isRetryable: true,
|
|
1079
|
+
transient: true,
|
|
1080
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
1081
|
+
});
|
|
1082
|
+
}
|
|
1083
|
+
else {
|
|
1084
|
+
logger_1.logger.error("Database upsert operation failed", {
|
|
1085
|
+
operation: 'upsertOneTrade',
|
|
1086
|
+
model: 'Trade',
|
|
1087
|
+
error: String(error),
|
|
1088
|
+
recordId: props.id,
|
|
1089
|
+
isRetryable: false,
|
|
1090
|
+
});
|
|
1091
|
+
}
|
|
1039
1092
|
throw error;
|
|
1040
1093
|
}
|
|
1041
1094
|
}
|
|
@@ -1315,13 +1368,25 @@ exports.Trade = {
|
|
|
1315
1368
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1316
1369
|
continue;
|
|
1317
1370
|
}
|
|
1318
|
-
// Log structured error details and rethrow
|
|
1319
|
-
|
|
1320
|
-
operation
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1371
|
+
// Log structured error details and rethrow (transient -> WARN).
|
|
1372
|
+
if (isConnectionError) {
|
|
1373
|
+
logger_1.logger.warn("Database updateMany operation failed (transient after retries)", {
|
|
1374
|
+
operation: 'updateManyTrade',
|
|
1375
|
+
model: 'Trade',
|
|
1376
|
+
error: String(error),
|
|
1377
|
+
isRetryable: true,
|
|
1378
|
+
transient: true,
|
|
1379
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
1380
|
+
});
|
|
1381
|
+
}
|
|
1382
|
+
else {
|
|
1383
|
+
logger_1.logger.error("Database updateMany operation failed", {
|
|
1384
|
+
operation: 'updateManyTrade',
|
|
1385
|
+
model: 'Trade',
|
|
1386
|
+
error: String(error),
|
|
1387
|
+
isRetryable: false,
|
|
1388
|
+
});
|
|
1389
|
+
}
|
|
1325
1390
|
throw error;
|
|
1326
1391
|
}
|
|
1327
1392
|
}
|
|
@@ -1444,14 +1509,27 @@ exports.Trade = {
|
|
|
1444
1509
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1445
1510
|
continue;
|
|
1446
1511
|
}
|
|
1447
|
-
// Log structured error details and rethrow
|
|
1448
|
-
|
|
1449
|
-
operation
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1512
|
+
// Log structured error details and rethrow (transient -> WARN).
|
|
1513
|
+
if (isConnectionError) {
|
|
1514
|
+
logger_1.logger.warn("Database delete operation failed (transient after retries)", {
|
|
1515
|
+
operation: 'deleteOneTrade',
|
|
1516
|
+
model: 'Trade',
|
|
1517
|
+
error: String(error),
|
|
1518
|
+
recordId: props.id,
|
|
1519
|
+
isRetryable: true,
|
|
1520
|
+
transient: true,
|
|
1521
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
1522
|
+
});
|
|
1523
|
+
}
|
|
1524
|
+
else {
|
|
1525
|
+
logger_1.logger.error("Database delete operation failed", {
|
|
1526
|
+
operation: 'deleteOneTrade',
|
|
1527
|
+
model: 'Trade',
|
|
1528
|
+
error: String(error),
|
|
1529
|
+
recordId: props.id,
|
|
1530
|
+
isRetryable: false,
|
|
1531
|
+
});
|
|
1532
|
+
}
|
|
1455
1533
|
throw error;
|
|
1456
1534
|
}
|
|
1457
1535
|
}
|
|
@@ -1556,13 +1634,25 @@ exports.Trade = {
|
|
|
1556
1634
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1557
1635
|
continue;
|
|
1558
1636
|
}
|
|
1559
|
-
// Log structured error details and rethrow
|
|
1560
|
-
|
|
1561
|
-
operation
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1637
|
+
// Log structured error details and rethrow (transient -> WARN).
|
|
1638
|
+
if (isConnectionError) {
|
|
1639
|
+
logger_1.logger.warn("Database get operation failed (transient after retries)", {
|
|
1640
|
+
operation: 'getTrade',
|
|
1641
|
+
model: 'Trade',
|
|
1642
|
+
error: String(error),
|
|
1643
|
+
isRetryable: true,
|
|
1644
|
+
transient: true,
|
|
1645
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
1646
|
+
});
|
|
1647
|
+
}
|
|
1648
|
+
else {
|
|
1649
|
+
logger_1.logger.error("Database get operation failed", {
|
|
1650
|
+
operation: 'getTrade',
|
|
1651
|
+
model: 'Trade',
|
|
1652
|
+
error: String(error),
|
|
1653
|
+
isRetryable: false,
|
|
1654
|
+
});
|
|
1655
|
+
}
|
|
1566
1656
|
throw error;
|
|
1567
1657
|
}
|
|
1568
1658
|
}
|
|
@@ -1649,13 +1739,25 @@ exports.Trade = {
|
|
|
1649
1739
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1650
1740
|
continue;
|
|
1651
1741
|
}
|
|
1652
|
-
// Log structured error details and rethrow
|
|
1653
|
-
|
|
1654
|
-
operation
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1742
|
+
// Log structured error details and rethrow (transient -> WARN).
|
|
1743
|
+
if (isConnectionError) {
|
|
1744
|
+
logger_1.logger.warn("Database getAll operation failed (transient after retries)", {
|
|
1745
|
+
operation: 'getAllTrade',
|
|
1746
|
+
model: 'Trade',
|
|
1747
|
+
error: String(error),
|
|
1748
|
+
isRetryable: true,
|
|
1749
|
+
transient: true,
|
|
1750
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
1751
|
+
});
|
|
1752
|
+
}
|
|
1753
|
+
else {
|
|
1754
|
+
logger_1.logger.error("Database getAll operation failed", {
|
|
1755
|
+
operation: 'getAllTrade',
|
|
1756
|
+
model: 'Trade',
|
|
1757
|
+
error: String(error),
|
|
1758
|
+
isRetryable: false,
|
|
1759
|
+
});
|
|
1760
|
+
}
|
|
1659
1761
|
throw error;
|
|
1660
1762
|
}
|
|
1661
1763
|
}
|
|
@@ -1772,13 +1874,25 @@ exports.Trade = {
|
|
|
1772
1874
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1773
1875
|
continue;
|
|
1774
1876
|
}
|
|
1775
|
-
// Log structured error details and rethrow
|
|
1776
|
-
|
|
1777
|
-
operation
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1877
|
+
// Log structured error details and rethrow (transient -> WARN).
|
|
1878
|
+
if (isConnectionError) {
|
|
1879
|
+
logger_1.logger.warn("Database findMany operation failed (transient after retries)", {
|
|
1880
|
+
operation: 'findManyTrade',
|
|
1881
|
+
model: 'Trade',
|
|
1882
|
+
error: String(error),
|
|
1883
|
+
isRetryable: true,
|
|
1884
|
+
transient: true,
|
|
1885
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
1886
|
+
});
|
|
1887
|
+
}
|
|
1888
|
+
else {
|
|
1889
|
+
logger_1.logger.error("Database findMany operation failed", {
|
|
1890
|
+
operation: 'findManyTrade',
|
|
1891
|
+
model: 'Trade',
|
|
1892
|
+
error: String(error),
|
|
1893
|
+
isRetryable: false,
|
|
1894
|
+
});
|
|
1895
|
+
}
|
|
1782
1896
|
throw error;
|
|
1783
1897
|
}
|
|
1784
1898
|
}
|
package/TradeAuditEvent.cjs
CHANGED
|
@@ -175,13 +175,28 @@ exports.TradeAuditEvent = {
|
|
|
175
175
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
176
176
|
continue;
|
|
177
177
|
}
|
|
178
|
-
// Log structured error details and rethrow
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
178
|
+
// Log structured error details and rethrow.
|
|
179
|
+
// Demote transient failures to WARN with explicit transient+recoveryHint
|
|
180
|
+
// metadata so log analytics can distinguish recoverable upstream retries
|
|
181
|
+
// from true defects.
|
|
182
|
+
if (isConnectionError) {
|
|
183
|
+
logger_1.logger.warn("Database create operation failed (transient after retries)", {
|
|
184
|
+
operation: 'createOneTradeAuditEvent',
|
|
185
|
+
model: 'TradeAuditEvent',
|
|
186
|
+
error: String(error),
|
|
187
|
+
isRetryable: true,
|
|
188
|
+
transient: true,
|
|
189
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
logger_1.logger.error("Database create operation failed", {
|
|
194
|
+
operation: 'createOneTradeAuditEvent',
|
|
195
|
+
model: 'TradeAuditEvent',
|
|
196
|
+
error: String(error),
|
|
197
|
+
isRetryable: false,
|
|
198
|
+
});
|
|
199
|
+
}
|
|
185
200
|
throw error;
|
|
186
201
|
}
|
|
187
202
|
}
|
|
@@ -321,13 +336,25 @@ exports.TradeAuditEvent = {
|
|
|
321
336
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
322
337
|
continue;
|
|
323
338
|
}
|
|
324
|
-
// Log structured error details and rethrow
|
|
325
|
-
|
|
326
|
-
operation
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
339
|
+
// Log structured error details and rethrow (transient -> WARN).
|
|
340
|
+
if (isConnectionError) {
|
|
341
|
+
logger_1.logger.warn("Database createMany operation failed (transient after retries)", {
|
|
342
|
+
operation: 'createManyTradeAuditEvent',
|
|
343
|
+
model: 'TradeAuditEvent',
|
|
344
|
+
error: String(error),
|
|
345
|
+
isRetryable: true,
|
|
346
|
+
transient: true,
|
|
347
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
logger_1.logger.error("Database createMany operation failed", {
|
|
352
|
+
operation: 'createManyTradeAuditEvent',
|
|
353
|
+
model: 'TradeAuditEvent',
|
|
354
|
+
error: String(error),
|
|
355
|
+
isRetryable: false,
|
|
356
|
+
});
|
|
357
|
+
}
|
|
331
358
|
throw error;
|
|
332
359
|
}
|
|
333
360
|
}
|
|
@@ -511,14 +538,27 @@ exports.TradeAuditEvent = {
|
|
|
511
538
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
512
539
|
continue;
|
|
513
540
|
}
|
|
514
|
-
// Log structured error details and rethrow
|
|
515
|
-
|
|
516
|
-
operation
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
541
|
+
// Log structured error details and rethrow (transient -> WARN).
|
|
542
|
+
if (isConnectionError) {
|
|
543
|
+
logger_1.logger.warn("Database update operation failed (transient after retries)", {
|
|
544
|
+
operation: 'updateOneTradeAuditEvent',
|
|
545
|
+
model: 'TradeAuditEvent',
|
|
546
|
+
error: String(error),
|
|
547
|
+
recordId: props.id,
|
|
548
|
+
isRetryable: true,
|
|
549
|
+
transient: true,
|
|
550
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
551
|
+
});
|
|
552
|
+
}
|
|
553
|
+
else {
|
|
554
|
+
logger_1.logger.error("Database update operation failed", {
|
|
555
|
+
operation: 'updateOneTradeAuditEvent',
|
|
556
|
+
model: 'TradeAuditEvent',
|
|
557
|
+
error: String(error),
|
|
558
|
+
recordId: props.id,
|
|
559
|
+
isRetryable: false,
|
|
560
|
+
});
|
|
561
|
+
}
|
|
522
562
|
throw error;
|
|
523
563
|
}
|
|
524
564
|
}
|
|
@@ -745,14 +785,27 @@ exports.TradeAuditEvent = {
|
|
|
745
785
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
746
786
|
continue;
|
|
747
787
|
}
|
|
748
|
-
// Log structured error details and rethrow
|
|
749
|
-
|
|
750
|
-
operation
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
788
|
+
// Log structured error details and rethrow (transient -> WARN).
|
|
789
|
+
if (isConnectionError) {
|
|
790
|
+
logger_1.logger.warn("Database upsert operation failed (transient after retries)", {
|
|
791
|
+
operation: 'upsertOneTradeAuditEvent',
|
|
792
|
+
model: 'TradeAuditEvent',
|
|
793
|
+
error: String(error),
|
|
794
|
+
recordId: props.id,
|
|
795
|
+
isRetryable: true,
|
|
796
|
+
transient: true,
|
|
797
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
798
|
+
});
|
|
799
|
+
}
|
|
800
|
+
else {
|
|
801
|
+
logger_1.logger.error("Database upsert operation failed", {
|
|
802
|
+
operation: 'upsertOneTradeAuditEvent',
|
|
803
|
+
model: 'TradeAuditEvent',
|
|
804
|
+
error: String(error),
|
|
805
|
+
recordId: props.id,
|
|
806
|
+
isRetryable: false,
|
|
807
|
+
});
|
|
808
|
+
}
|
|
756
809
|
throw error;
|
|
757
810
|
}
|
|
758
811
|
}
|
|
@@ -934,13 +987,25 @@ exports.TradeAuditEvent = {
|
|
|
934
987
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
935
988
|
continue;
|
|
936
989
|
}
|
|
937
|
-
// Log structured error details and rethrow
|
|
938
|
-
|
|
939
|
-
operation
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
990
|
+
// Log structured error details and rethrow (transient -> WARN).
|
|
991
|
+
if (isConnectionError) {
|
|
992
|
+
logger_1.logger.warn("Database updateMany operation failed (transient after retries)", {
|
|
993
|
+
operation: 'updateManyTradeAuditEvent',
|
|
994
|
+
model: 'TradeAuditEvent',
|
|
995
|
+
error: String(error),
|
|
996
|
+
isRetryable: true,
|
|
997
|
+
transient: true,
|
|
998
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
999
|
+
});
|
|
1000
|
+
}
|
|
1001
|
+
else {
|
|
1002
|
+
logger_1.logger.error("Database updateMany operation failed", {
|
|
1003
|
+
operation: 'updateManyTradeAuditEvent',
|
|
1004
|
+
model: 'TradeAuditEvent',
|
|
1005
|
+
error: String(error),
|
|
1006
|
+
isRetryable: false,
|
|
1007
|
+
});
|
|
1008
|
+
}
|
|
944
1009
|
throw error;
|
|
945
1010
|
}
|
|
946
1011
|
}
|
|
@@ -1063,14 +1128,27 @@ exports.TradeAuditEvent = {
|
|
|
1063
1128
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1064
1129
|
continue;
|
|
1065
1130
|
}
|
|
1066
|
-
// Log structured error details and rethrow
|
|
1067
|
-
|
|
1068
|
-
operation
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1131
|
+
// Log structured error details and rethrow (transient -> WARN).
|
|
1132
|
+
if (isConnectionError) {
|
|
1133
|
+
logger_1.logger.warn("Database delete operation failed (transient after retries)", {
|
|
1134
|
+
operation: 'deleteOneTradeAuditEvent',
|
|
1135
|
+
model: 'TradeAuditEvent',
|
|
1136
|
+
error: String(error),
|
|
1137
|
+
recordId: props.id,
|
|
1138
|
+
isRetryable: true,
|
|
1139
|
+
transient: true,
|
|
1140
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
1141
|
+
});
|
|
1142
|
+
}
|
|
1143
|
+
else {
|
|
1144
|
+
logger_1.logger.error("Database delete operation failed", {
|
|
1145
|
+
operation: 'deleteOneTradeAuditEvent',
|
|
1146
|
+
model: 'TradeAuditEvent',
|
|
1147
|
+
error: String(error),
|
|
1148
|
+
recordId: props.id,
|
|
1149
|
+
isRetryable: false,
|
|
1150
|
+
});
|
|
1151
|
+
}
|
|
1074
1152
|
throw error;
|
|
1075
1153
|
}
|
|
1076
1154
|
}
|
|
@@ -1191,13 +1269,25 @@ exports.TradeAuditEvent = {
|
|
|
1191
1269
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1192
1270
|
continue;
|
|
1193
1271
|
}
|
|
1194
|
-
// Log structured error details and rethrow
|
|
1195
|
-
|
|
1196
|
-
operation
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1272
|
+
// Log structured error details and rethrow (transient -> WARN).
|
|
1273
|
+
if (isConnectionError) {
|
|
1274
|
+
logger_1.logger.warn("Database get operation failed (transient after retries)", {
|
|
1275
|
+
operation: 'getTradeAuditEvent',
|
|
1276
|
+
model: 'TradeAuditEvent',
|
|
1277
|
+
error: String(error),
|
|
1278
|
+
isRetryable: true,
|
|
1279
|
+
transient: true,
|
|
1280
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
1281
|
+
});
|
|
1282
|
+
}
|
|
1283
|
+
else {
|
|
1284
|
+
logger_1.logger.error("Database get operation failed", {
|
|
1285
|
+
operation: 'getTradeAuditEvent',
|
|
1286
|
+
model: 'TradeAuditEvent',
|
|
1287
|
+
error: String(error),
|
|
1288
|
+
isRetryable: false,
|
|
1289
|
+
});
|
|
1290
|
+
}
|
|
1201
1291
|
throw error;
|
|
1202
1292
|
}
|
|
1203
1293
|
}
|
|
@@ -1284,13 +1374,25 @@ exports.TradeAuditEvent = {
|
|
|
1284
1374
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1285
1375
|
continue;
|
|
1286
1376
|
}
|
|
1287
|
-
// Log structured error details and rethrow
|
|
1288
|
-
|
|
1289
|
-
operation
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1377
|
+
// Log structured error details and rethrow (transient -> WARN).
|
|
1378
|
+
if (isConnectionError) {
|
|
1379
|
+
logger_1.logger.warn("Database getAll operation failed (transient after retries)", {
|
|
1380
|
+
operation: 'getAllTradeAuditEvent',
|
|
1381
|
+
model: 'TradeAuditEvent',
|
|
1382
|
+
error: String(error),
|
|
1383
|
+
isRetryable: true,
|
|
1384
|
+
transient: true,
|
|
1385
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
1386
|
+
});
|
|
1387
|
+
}
|
|
1388
|
+
else {
|
|
1389
|
+
logger_1.logger.error("Database getAll operation failed", {
|
|
1390
|
+
operation: 'getAllTradeAuditEvent',
|
|
1391
|
+
model: 'TradeAuditEvent',
|
|
1392
|
+
error: String(error),
|
|
1393
|
+
isRetryable: false,
|
|
1394
|
+
});
|
|
1395
|
+
}
|
|
1294
1396
|
throw error;
|
|
1295
1397
|
}
|
|
1296
1398
|
}
|
|
@@ -1425,13 +1527,25 @@ exports.TradeAuditEvent = {
|
|
|
1425
1527
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1426
1528
|
continue;
|
|
1427
1529
|
}
|
|
1428
|
-
// Log structured error details and rethrow
|
|
1429
|
-
|
|
1430
|
-
operation
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1530
|
+
// Log structured error details and rethrow (transient -> WARN).
|
|
1531
|
+
if (isConnectionError) {
|
|
1532
|
+
logger_1.logger.warn("Database findMany operation failed (transient after retries)", {
|
|
1533
|
+
operation: 'findManyTradeAuditEvent',
|
|
1534
|
+
model: 'TradeAuditEvent',
|
|
1535
|
+
error: String(error),
|
|
1536
|
+
isRetryable: true,
|
|
1537
|
+
transient: true,
|
|
1538
|
+
recoveryHint: "Upstream caller should retry on next cycle",
|
|
1539
|
+
});
|
|
1540
|
+
}
|
|
1541
|
+
else {
|
|
1542
|
+
logger_1.logger.error("Database findMany operation failed", {
|
|
1543
|
+
operation: 'findManyTradeAuditEvent',
|
|
1544
|
+
model: 'TradeAuditEvent',
|
|
1545
|
+
error: String(error),
|
|
1546
|
+
isRetryable: false,
|
|
1547
|
+
});
|
|
1548
|
+
}
|
|
1435
1549
|
throw error;
|
|
1436
1550
|
}
|
|
1437
1551
|
}
|