@adaptic/backend-legacy 0.0.45 → 0.0.47

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 (268) hide show
  1. package/ABTest.cjs +19 -18
  2. package/Account.cjs +19 -18
  3. package/AccountLinkingRequest.cjs +19 -18
  4. package/Action.cjs +19 -18
  5. package/Alert.cjs +19 -18
  6. package/Allocation.cjs +19 -18
  7. package/AlpacaAccount.cjs +19 -18
  8. package/AnalyticsConfiguration.cjs +19 -18
  9. package/AnalyticsSnapshot.cjs +19 -18
  10. package/Asset.cjs +19 -18
  11. package/Authenticator.cjs +19 -18
  12. package/Configuration.cjs +19 -18
  13. package/ConflictEvent.cjs +19 -18
  14. package/ConnectionHealthSnapshot.cjs +19 -18
  15. package/Customer.cjs +19 -18
  16. package/DeadLetterMessage.cjs +19 -18
  17. package/EconomicEvent.cjs +19 -18
  18. package/Event.cjs +19 -18
  19. package/EventSnapshot.cjs +19 -18
  20. package/FeatureImportanceAnalysis.cjs +19 -18
  21. package/InstitutionalFlowSignal.cjs +19 -18
  22. package/InstitutionalHolding.cjs +19 -18
  23. package/InstitutionalSentimentAlerts.cjs +19 -18
  24. package/InstitutionalSentimentErrors.cjs +19 -18
  25. package/InstitutionalSentimentHistory.cjs +19 -18
  26. package/InstitutionalSentimentMetrics.cjs +19 -18
  27. package/InviteToken.cjs +19 -18
  28. package/LinkedProvider.cjs +19 -18
  29. package/MLTrainingData.cjs +19 -18
  30. package/MarketSentiment.cjs +19 -18
  31. package/ModelArtifact.cjs +19 -18
  32. package/ModelVersion.cjs +19 -18
  33. package/ModelVersionArtifact.cjs +19 -18
  34. package/NewsArticle.cjs +19 -18
  35. package/NewsArticleAssetSentiment.cjs +19 -18
  36. package/OptionsContract.cjs +19 -18
  37. package/OptionsGreeksHistory.cjs +19 -18
  38. package/OptionsPosition.cjs +19 -18
  39. package/OptionsTradeExecution.cjs +19 -18
  40. package/PortfolioGreeksHistory.cjs +19 -18
  41. package/ScheduledOptionOrder.cjs +19 -18
  42. package/Session.cjs +19 -18
  43. package/SignalGeneratorMetrics.cjs +19 -18
  44. package/SignalLineage.cjs +19 -18
  45. package/SignalOutcome.cjs +19 -18
  46. package/SignalPriorityQueue.cjs +19 -18
  47. package/SyncEvent.cjs +19 -18
  48. package/SystemAlert.cjs +19 -18
  49. package/Trade.cjs +19 -18
  50. package/TradeAuditEvent.cjs +19 -18
  51. package/TradeExecutionHistory.cjs +19 -18
  52. package/User.cjs +19 -18
  53. package/VerificationToken.cjs +19 -18
  54. package/WaitlistEntry.cjs +19 -18
  55. package/client.cjs +11 -10
  56. package/esm/ABTest.d.ts.map +1 -1
  57. package/esm/ABTest.js.map +1 -1
  58. package/esm/ABTest.mjs +19 -18
  59. package/esm/Account.d.ts.map +1 -1
  60. package/esm/Account.js.map +1 -1
  61. package/esm/Account.mjs +19 -18
  62. package/esm/AccountLinkingRequest.d.ts.map +1 -1
  63. package/esm/AccountLinkingRequest.js.map +1 -1
  64. package/esm/AccountLinkingRequest.mjs +19 -18
  65. package/esm/Action.d.ts.map +1 -1
  66. package/esm/Action.js.map +1 -1
  67. package/esm/Action.mjs +19 -18
  68. package/esm/Alert.d.ts.map +1 -1
  69. package/esm/Alert.js.map +1 -1
  70. package/esm/Alert.mjs +19 -18
  71. package/esm/Allocation.d.ts.map +1 -1
  72. package/esm/Allocation.js.map +1 -1
  73. package/esm/Allocation.mjs +19 -18
  74. package/esm/AlpacaAccount.d.ts.map +1 -1
  75. package/esm/AlpacaAccount.js.map +1 -1
  76. package/esm/AlpacaAccount.mjs +19 -18
  77. package/esm/AnalyticsConfiguration.d.ts.map +1 -1
  78. package/esm/AnalyticsConfiguration.js.map +1 -1
  79. package/esm/AnalyticsConfiguration.mjs +19 -18
  80. package/esm/AnalyticsSnapshot.d.ts.map +1 -1
  81. package/esm/AnalyticsSnapshot.js.map +1 -1
  82. package/esm/AnalyticsSnapshot.mjs +19 -18
  83. package/esm/Asset.d.ts.map +1 -1
  84. package/esm/Asset.js.map +1 -1
  85. package/esm/Asset.mjs +19 -18
  86. package/esm/Authenticator.d.ts.map +1 -1
  87. package/esm/Authenticator.js.map +1 -1
  88. package/esm/Authenticator.mjs +19 -18
  89. package/esm/Configuration.d.ts.map +1 -1
  90. package/esm/Configuration.js.map +1 -1
  91. package/esm/Configuration.mjs +19 -18
  92. package/esm/ConflictEvent.d.ts.map +1 -1
  93. package/esm/ConflictEvent.js.map +1 -1
  94. package/esm/ConflictEvent.mjs +19 -18
  95. package/esm/ConnectionHealthSnapshot.d.ts.map +1 -1
  96. package/esm/ConnectionHealthSnapshot.js.map +1 -1
  97. package/esm/ConnectionHealthSnapshot.mjs +19 -18
  98. package/esm/Customer.d.ts.map +1 -1
  99. package/esm/Customer.js.map +1 -1
  100. package/esm/Customer.mjs +19 -18
  101. package/esm/DeadLetterMessage.d.ts.map +1 -1
  102. package/esm/DeadLetterMessage.js.map +1 -1
  103. package/esm/DeadLetterMessage.mjs +19 -18
  104. package/esm/EconomicEvent.d.ts.map +1 -1
  105. package/esm/EconomicEvent.js.map +1 -1
  106. package/esm/EconomicEvent.mjs +19 -18
  107. package/esm/Event.d.ts.map +1 -1
  108. package/esm/Event.js.map +1 -1
  109. package/esm/Event.mjs +19 -18
  110. package/esm/EventSnapshot.d.ts.map +1 -1
  111. package/esm/EventSnapshot.js.map +1 -1
  112. package/esm/EventSnapshot.mjs +19 -18
  113. package/esm/FeatureImportanceAnalysis.d.ts.map +1 -1
  114. package/esm/FeatureImportanceAnalysis.js.map +1 -1
  115. package/esm/FeatureImportanceAnalysis.mjs +19 -18
  116. package/esm/InstitutionalFlowSignal.d.ts.map +1 -1
  117. package/esm/InstitutionalFlowSignal.js.map +1 -1
  118. package/esm/InstitutionalFlowSignal.mjs +19 -18
  119. package/esm/InstitutionalHolding.d.ts.map +1 -1
  120. package/esm/InstitutionalHolding.js.map +1 -1
  121. package/esm/InstitutionalHolding.mjs +19 -18
  122. package/esm/InstitutionalSentimentAlerts.d.ts.map +1 -1
  123. package/esm/InstitutionalSentimentAlerts.js.map +1 -1
  124. package/esm/InstitutionalSentimentAlerts.mjs +19 -18
  125. package/esm/InstitutionalSentimentErrors.d.ts.map +1 -1
  126. package/esm/InstitutionalSentimentErrors.js.map +1 -1
  127. package/esm/InstitutionalSentimentErrors.mjs +19 -18
  128. package/esm/InstitutionalSentimentHistory.d.ts.map +1 -1
  129. package/esm/InstitutionalSentimentHistory.js.map +1 -1
  130. package/esm/InstitutionalSentimentHistory.mjs +19 -18
  131. package/esm/InstitutionalSentimentMetrics.d.ts.map +1 -1
  132. package/esm/InstitutionalSentimentMetrics.js.map +1 -1
  133. package/esm/InstitutionalSentimentMetrics.mjs +19 -18
  134. package/esm/InviteToken.d.ts.map +1 -1
  135. package/esm/InviteToken.js.map +1 -1
  136. package/esm/InviteToken.mjs +19 -18
  137. package/esm/LinkedProvider.d.ts.map +1 -1
  138. package/esm/LinkedProvider.js.map +1 -1
  139. package/esm/LinkedProvider.mjs +19 -18
  140. package/esm/MLTrainingData.d.ts.map +1 -1
  141. package/esm/MLTrainingData.js.map +1 -1
  142. package/esm/MLTrainingData.mjs +19 -18
  143. package/esm/MarketSentiment.d.ts.map +1 -1
  144. package/esm/MarketSentiment.js.map +1 -1
  145. package/esm/MarketSentiment.mjs +19 -18
  146. package/esm/ModelArtifact.d.ts.map +1 -1
  147. package/esm/ModelArtifact.js.map +1 -1
  148. package/esm/ModelArtifact.mjs +19 -18
  149. package/esm/ModelVersion.d.ts.map +1 -1
  150. package/esm/ModelVersion.js.map +1 -1
  151. package/esm/ModelVersion.mjs +19 -18
  152. package/esm/ModelVersionArtifact.d.ts.map +1 -1
  153. package/esm/ModelVersionArtifact.js.map +1 -1
  154. package/esm/ModelVersionArtifact.mjs +19 -18
  155. package/esm/NewsArticle.d.ts.map +1 -1
  156. package/esm/NewsArticle.js.map +1 -1
  157. package/esm/NewsArticle.mjs +19 -18
  158. package/esm/NewsArticleAssetSentiment.d.ts.map +1 -1
  159. package/esm/NewsArticleAssetSentiment.js.map +1 -1
  160. package/esm/NewsArticleAssetSentiment.mjs +19 -18
  161. package/esm/OptionsContract.d.ts.map +1 -1
  162. package/esm/OptionsContract.js.map +1 -1
  163. package/esm/OptionsContract.mjs +19 -18
  164. package/esm/OptionsGreeksHistory.d.ts.map +1 -1
  165. package/esm/OptionsGreeksHistory.js.map +1 -1
  166. package/esm/OptionsGreeksHistory.mjs +19 -18
  167. package/esm/OptionsPosition.d.ts.map +1 -1
  168. package/esm/OptionsPosition.js.map +1 -1
  169. package/esm/OptionsPosition.mjs +19 -18
  170. package/esm/OptionsTradeExecution.d.ts.map +1 -1
  171. package/esm/OptionsTradeExecution.js.map +1 -1
  172. package/esm/OptionsTradeExecution.mjs +19 -18
  173. package/esm/PortfolioGreeksHistory.d.ts.map +1 -1
  174. package/esm/PortfolioGreeksHistory.js.map +1 -1
  175. package/esm/PortfolioGreeksHistory.mjs +19 -18
  176. package/esm/ScheduledOptionOrder.d.ts.map +1 -1
  177. package/esm/ScheduledOptionOrder.js.map +1 -1
  178. package/esm/ScheduledOptionOrder.mjs +19 -18
  179. package/esm/Session.d.ts.map +1 -1
  180. package/esm/Session.js.map +1 -1
  181. package/esm/Session.mjs +19 -18
  182. package/esm/SignalGeneratorMetrics.d.ts.map +1 -1
  183. package/esm/SignalGeneratorMetrics.js.map +1 -1
  184. package/esm/SignalGeneratorMetrics.mjs +19 -18
  185. package/esm/SignalLineage.d.ts.map +1 -1
  186. package/esm/SignalLineage.js.map +1 -1
  187. package/esm/SignalLineage.mjs +19 -18
  188. package/esm/SignalOutcome.d.ts.map +1 -1
  189. package/esm/SignalOutcome.js.map +1 -1
  190. package/esm/SignalOutcome.mjs +19 -18
  191. package/esm/SignalPriorityQueue.d.ts.map +1 -1
  192. package/esm/SignalPriorityQueue.js.map +1 -1
  193. package/esm/SignalPriorityQueue.mjs +19 -18
  194. package/esm/SyncEvent.d.ts.map +1 -1
  195. package/esm/SyncEvent.js.map +1 -1
  196. package/esm/SyncEvent.mjs +19 -18
  197. package/esm/SystemAlert.d.ts.map +1 -1
  198. package/esm/SystemAlert.js.map +1 -1
  199. package/esm/SystemAlert.mjs +19 -18
  200. package/esm/Trade.d.ts.map +1 -1
  201. package/esm/Trade.js.map +1 -1
  202. package/esm/Trade.mjs +19 -18
  203. package/esm/TradeAuditEvent.d.ts.map +1 -1
  204. package/esm/TradeAuditEvent.js.map +1 -1
  205. package/esm/TradeAuditEvent.mjs +19 -18
  206. package/esm/TradeExecutionHistory.d.ts.map +1 -1
  207. package/esm/TradeExecutionHistory.js.map +1 -1
  208. package/esm/TradeExecutionHistory.mjs +19 -18
  209. package/esm/User.d.ts.map +1 -1
  210. package/esm/User.js.map +1 -1
  211. package/esm/User.mjs +19 -18
  212. package/esm/VerificationToken.d.ts.map +1 -1
  213. package/esm/VerificationToken.js.map +1 -1
  214. package/esm/VerificationToken.mjs +19 -18
  215. package/esm/WaitlistEntry.d.ts.map +1 -1
  216. package/esm/WaitlistEntry.js.map +1 -1
  217. package/esm/WaitlistEntry.mjs +19 -18
  218. package/esm/client.d.ts.map +1 -1
  219. package/esm/client.js.map +1 -1
  220. package/esm/client.mjs +11 -10
  221. package/esm/config/jwtConfig.d.ts.map +1 -1
  222. package/esm/config/jwtConfig.js.map +1 -1
  223. package/esm/config/jwtConfig.mjs +5 -4
  224. package/esm/getToken.d.ts.map +1 -1
  225. package/esm/getToken.js.map +1 -1
  226. package/esm/getToken.mjs +3 -2
  227. package/esm/health.d.ts +16 -0
  228. package/esm/health.d.ts.map +1 -0
  229. package/esm/health.js.map +1 -0
  230. package/esm/health.mjs +74 -0
  231. package/esm/middleware/auth.d.ts.map +1 -1
  232. package/esm/middleware/auth.js.map +1 -1
  233. package/esm/middleware/auth.mjs +3 -2
  234. package/esm/middleware/rate-limiter.d.ts +8 -4
  235. package/esm/middleware/rate-limiter.d.ts.map +1 -1
  236. package/esm/middleware/rate-limiter.js.map +1 -1
  237. package/esm/middleware/rate-limiter.mjs +53 -16
  238. package/esm/plugins/error-sanitizer.d.ts.map +1 -1
  239. package/esm/plugins/error-sanitizer.js.map +1 -1
  240. package/esm/plugins/error-sanitizer.mjs +6 -5
  241. package/esm/plugins/query-depth-limiter.d.ts.map +1 -1
  242. package/esm/plugins/query-depth-limiter.js.map +1 -1
  243. package/esm/plugins/query-depth-limiter.mjs +2 -2
  244. package/esm/resolvers/custom/OptionsGreeksHistoryCustomResolver.d.ts +7 -1
  245. package/esm/resolvers/custom/OptionsGreeksHistoryCustomResolver.d.ts.map +1 -1
  246. package/esm/resolvers/custom/OptionsGreeksHistoryCustomResolver.js.map +1 -1
  247. package/esm/scripts/migrate-openai-model-enum.js.map +1 -1
  248. package/esm/scripts/migrate-openai-model-enum.mjs +11 -10
  249. package/esm/scripts/set-default-openai-model.js.map +1 -1
  250. package/esm/scripts/set-default-openai-model.mjs +7 -6
  251. package/esm/utils/logger.d.ts +9 -0
  252. package/esm/utils/logger.d.ts.map +1 -0
  253. package/esm/utils/logger.js.map +1 -0
  254. package/esm/utils/logger.mjs +28 -0
  255. package/esm/utils.d.ts +12 -1
  256. package/esm/utils.d.ts.map +1 -1
  257. package/esm/utils.js.map +1 -1
  258. package/esm/utils.mjs +20 -7
  259. package/getToken.cjs +3 -2
  260. package/health.cjs +80 -0
  261. package/health.d.ts +16 -0
  262. package/package.json +1 -1
  263. package/resolvers/custom/OptionsGreeksHistoryCustomResolver.d.ts +7 -1
  264. package/resolvers/custom/OptionsGreeksHistoryCustomResolver.d.ts.map +1 -1
  265. package/resolvers/custom/OptionsGreeksHistoryCustomResolver.js.map +1 -1
  266. package/server.cjs +35 -39
  267. package/utils.cjs +20 -7
  268. package/utils.d.ts +12 -1
@@ -1,6 +1,32 @@
1
1
  // Integration: add to server.ts - app.use('/graphql', graphqlRateLimiter) and app.use('/auth', authRateLimiter)
2
2
  /**
3
- * Creates a simple in-memory rate limiter middleware
3
+ * Checks whether a request carries a valid-looking authentication token.
4
+ * Does not verify the token -- only checks for its presence in the
5
+ * Authorization header as a Bearer token with three dot-separated parts
6
+ * (standard JWT structure).
7
+ */
8
+ function isAuthenticated(req) {
9
+ const authHeader = req.headers.authorization || '';
10
+ if (!authHeader.startsWith('Bearer ')) {
11
+ return false;
12
+ }
13
+ const token = authHeader.slice(7);
14
+ // Google OAuth tokens (ya29.) and JWTs (three dot-separated segments) count
15
+ if (token.startsWith('ya29.')) {
16
+ return true;
17
+ }
18
+ return token.split('.').length === 3;
19
+ }
20
+ /**
21
+ * Creates a simple in-memory rate limiter middleware with separate limits
22
+ * for authenticated and unauthenticated requests.
23
+ *
24
+ * Response headers (when standardHeaders is enabled):
25
+ * X-RateLimit-Limit - maximum requests allowed in the current window
26
+ * X-RateLimit-Remaining - requests remaining in the current window
27
+ * X-RateLimit-Reset - seconds until the current window resets
28
+ * Retry-After - seconds to wait before retrying (only on 429)
29
+ *
4
30
  * @param config - Rate limit configuration
5
31
  * @returns Express middleware function
6
32
  */
@@ -17,26 +43,31 @@ function createRateLimiter(config) {
17
43
  }, 60000);
18
44
  return (req, res, next) => {
19
45
  const identifier = req.ip || req.connection.remoteAddress || 'unknown';
46
+ const authenticated = isAuthenticated(req);
47
+ const effectiveMax = authenticated ? config.maxAuthenticated : config.maxUnauthenticated;
48
+ const storeKey = `${identifier}:${authenticated ? 'auth' : 'anon'}`;
20
49
  const now = Date.now();
21
- if (!store[identifier] || store[identifier].resetTime < now) {
22
- store[identifier] = {
50
+ if (!store[storeKey] || store[storeKey].resetTime < now) {
51
+ store[storeKey] = {
23
52
  count: 1,
24
53
  resetTime: now + config.windowMs,
25
54
  };
26
55
  }
27
56
  else {
28
- store[identifier].count += 1;
57
+ store[storeKey].count += 1;
29
58
  }
30
- const current = store[identifier];
31
- const remaining = Math.max(0, config.max - current.count);
32
- const resetTime = Math.ceil((current.resetTime - now) / 1000);
59
+ const current = store[storeKey];
60
+ const remaining = Math.max(0, effectiveMax - current.count);
61
+ const resetSeconds = Math.ceil((current.resetTime - now) / 1000);
33
62
  // Add rate limit headers
34
63
  if (config.standardHeaders !== false) {
35
- res.setHeader('X-RateLimit-Limit', config.max.toString());
64
+ res.setHeader('X-RateLimit-Limit', effectiveMax.toString());
36
65
  res.setHeader('X-RateLimit-Remaining', remaining.toString());
37
- res.setHeader('X-RateLimit-Reset', resetTime.toString());
66
+ res.setHeader('X-RateLimit-Reset', resetSeconds.toString());
38
67
  }
39
- if (current.count > config.max) {
68
+ if (current.count > effectiveMax) {
69
+ // Include Retry-After header on 429 responses (RFC 6585 / RFC 7231)
70
+ res.setHeader('Retry-After', resetSeconds.toString());
40
71
  res.status(429).json(config.message);
41
72
  return;
42
73
  }
@@ -44,23 +75,29 @@ function createRateLimiter(config) {
44
75
  };
45
76
  }
46
77
  /**
47
- * Rate limiter for GraphQL endpoint
48
- * Allows 1000 requests per 15 minutes by default (configurable via RATE_LIMIT_MAX env var)
78
+ * Rate limiter for GraphQL endpoint.
79
+ *
80
+ * Authenticated requests: 1000 requests per 15 minutes (configurable via RATE_LIMIT_MAX)
81
+ * Unauthenticated requests: 200 requests per 15 minutes (configurable via RATE_LIMIT_MAX_UNAUTH)
49
82
  */
50
83
  export const graphqlRateLimiter = createRateLimiter({
51
84
  windowMs: 15 * 60 * 1000, // 15 minutes
52
- max: parseInt(process.env.RATE_LIMIT_MAX || '1000', 10),
85
+ maxAuthenticated: parseInt(process.env.RATE_LIMIT_MAX || '1000', 10),
86
+ maxUnauthenticated: parseInt(process.env.RATE_LIMIT_MAX_UNAUTH || '200', 10),
53
87
  standardHeaders: true,
54
88
  legacyHeaders: false,
55
89
  message: { errors: [{ message: 'Too many requests, please try again later.' }] },
56
90
  });
57
91
  /**
58
- * Rate limiter for authentication endpoints
59
- * Allows 50 requests per 15 minutes (stricter for auth)
92
+ * Rate limiter for authentication endpoints.
93
+ *
94
+ * Authenticated requests: 50 requests per 15 minutes
95
+ * Unauthenticated requests: 20 requests per 15 minutes
60
96
  */
61
97
  export const authRateLimiter = createRateLimiter({
62
98
  windowMs: 15 * 60 * 1000, // 15 minutes
63
- max: 50,
99
+ maxAuthenticated: 50,
100
+ maxUnauthenticated: 20,
64
101
  standardHeaders: true,
65
102
  legacyHeaders: false,
66
103
  message: { errors: [{ message: 'Too many authentication attempts.' }] },
@@ -1 +1 @@
1
- {"version":3,"file":"error-sanitizer.d.ts","sourceRoot":"","sources":["../../../src/plugins/error-sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAgB,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAqJ9D;;GAEG;AACH,wBAAgB,oBAAoB,KAIhC,gBAAgB,qBAAqB,EACrC,OAAO,OAAO,KACb,qBAAqB,CAiDzB;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,mBAzDJ,qBAAqB,SAC9B,OAAO,KACb,qBAuD4C,CAAC"}
1
+ {"version":3,"file":"error-sanitizer.d.ts","sourceRoot":"","sources":["../../../src/plugins/error-sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAgB,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAsJ9D;;GAEG;AACH,wBAAgB,oBAAoB,KAIhC,gBAAgB,qBAAqB,EACrC,OAAO,OAAO,KACb,qBAAqB,CAiDzB;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,mBAzDJ,qBAAqB,SAC9B,OAAO,KACb,qBAuD4C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"error-sanitizer.js","sourceRoot":"","sources":["../../../src/plugins/error-sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,YAAY,EAAyB,MAAM,SAAS,CAAC;AAyB9D;;GAEG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,sBAAsB;IACtB,2BAA2B;IAC3B,gBAAgB;IAChB,iBAAiB;IACjB,WAAW;IACX,2BAA2B;IAC3B,+BAA+B;IAC/B,aAAa;IACb,4BAA4B;CAC7B,CAAC,CAAC;AAEH;;GAEG;AACH,SAAS,WAAW,CAAC,IAAwB;IAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,KAAmB;IAIzC,MAAM,UAAU,GAAG,KAAK,CAAC,UAA6B,CAAC;IAEvD,qCAAqC;IACrC,MAAM,OAAO,GAAG,UAAU,EAAE,OAAmC,CAAC;IAEhE,MAAM,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,WAAW,CAAC;IACzE,MAAM,SAAS,GAAG,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC;IAEvE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,KAAmB,EAAE,YAAqB;IAC1D,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,KAAK,CAAC,UAA6B,CAAC;IAEvD,MAAM,OAAO,GAAG;QACd,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,uBAAuB;QACjD,MAAM;QACN,SAAS;QACT,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IAEF,iDAAiD;IACjD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE;YAC/B,GAAG,OAAO;YACV,UAAU;YACV,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK;SAClC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,yEAAyE;QACzE,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE;YAC/B,GAAG,OAAO;YACV,0DAA0D;YAC1D,KAAK,EAAE,WAAW,CAAC,UAAU,EAAE,IAAc,CAAC;gBAC5C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK;SAC/B,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,UAAuC,EACvC,YAAqB;IAErB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,uBAAuB,CAAC;IAExD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,wCAAwC;QACxC,OAAO,UAAqC,CAAC;IAC/C,CAAC;IAED,uCAAuC;IACvC,MAAM,SAAS,GAA4B;QACzC,IAAI;KACL,CAAC;IAEF,8CAA8C;IAC9C,IAAI,WAAW,CAAC,IAAc,CAAC,EAAE,CAAC;QAChC,kDAAkD;QAClD,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACnC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QACrC,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACtC,SAAS,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC3C,CAAC;QACD,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC1C,SAAS,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;QACnD,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,OAAO,SAAS,CAAC,SAAS,CAAC;IAC3B,OAAO,SAAS,CAAC,UAAU,CAAC;IAE5B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IAE3D,OAAO,CACL,cAAqC,EACrC,KAAc,EACS,EAAE;QACzB,MAAM,YAAY,GAAG,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAElE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,gDAAgD;YAChD,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;YAE5C,OAAO;gBACL,OAAO,EAAE,YAAY;oBACnB,CAAC,CAAC,uBAAuB;oBACzB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBACjB,UAAU,EAAE;oBACV,IAAI,EAAE,uBAAuB;iBAC9B;aACF,CAAC;QACJ,CAAC;QAED,iCAAiC;QACjC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAErC,MAAM,UAAU,GAAG,YAAY,CAAC,UAAyC,CAAC;QAC1E,MAAM,IAAI,GAAG,UAAU,EAAE,IAA0B,CAAC;QAEpD,kDAAkD;QAClD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,8CAA8C;QAC9C,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,+DAA+D;YAC/D,OAAO;gBACL,OAAO,EAAE,cAAc,CAAC,OAAO;gBAC/B,SAAS,EAAE,cAAc,CAAC,SAAS;gBACnC,IAAI,EAAE,cAAc,CAAC,IAAI;gBACzB,UAAU,EAAE,kBAAkB,CAAC,UAAU,EAAE,YAAY,CAAC;aACzD,CAAC;QACJ,CAAC;QAED,gCAAgC;QAChC,OAAO;YACL,OAAO,EAAE,uBAAuB;YAChC,SAAS,EAAE,cAAc,CAAC,SAAS;YACnC,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,UAAU,EAAE;gBACV,IAAI,EAAE,uBAAuB;aAC9B;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"error-sanitizer.js","sourceRoot":"","sources":["../../../src/plugins/error-sanitizer.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@
25
25
  * - In development: shows full error details
26
26
  */
27
27
  import { GraphQLError } from 'graphql';
28
+ import { logger } from '../utils/logger.mjs';
28
29
  /**
29
30
  * Error codes that are considered safe to expose to clients
30
31
  */
@@ -76,16 +77,16 @@ function logError(error, isProduction) {
76
77
  };
77
78
  // In development, include the full error details
78
79
  if (!isProduction) {
79
- console.error('[GraphQL Error]', {
80
+ logger.error('[GraphQL Error]', {
80
81
  ...logData,
81
- extensions,
82
- originalError: error.originalError,
82
+ extensions: extensions,
83
+ originalError: String(error.originalError),
83
84
  stack: error.originalError?.stack,
84
85
  });
85
86
  }
86
87
  else {
87
88
  // In production, log full details but without stack traces in some cases
88
- console.error('[GraphQL Error]', {
89
+ logger.error('[GraphQL Error]', {
89
90
  ...logData,
90
91
  // Only include stack for internal errors (not validation)
91
92
  stack: isSafeError(extensions?.code)
@@ -137,7 +138,7 @@ export function createErrorSanitizer() {
137
138
  const graphqlError = error instanceof GraphQLError ? error : null;
138
139
  if (!graphqlError) {
139
140
  // If it's not a GraphQL error, log and sanitize
140
- console.error('[Non-GraphQL Error]', error);
141
+ logger.error('[Non-GraphQL Error]', { error: String(error) });
141
142
  return {
142
143
  message: isProduction
143
144
  ? 'Internal server error'
@@ -1 +1 @@
1
- {"version":3,"file":"query-depth-limiter.d.ts","sourceRoot":"","sources":["../../../src/plugins/query-depth-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,kBAAkB,EAA0B,MAAM,gBAAgB,CAAC;AAa5E,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE;QACJ,OAAO,CAAC,EAAE;YACR,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,cAAc,CAAC,EAAE,MAAM,CAAC;SACzB,CAAC;KACH,CAAC;IACF,IAAI,CAAC,EAAE;QACL,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,UAAU,wBAAwB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA+GD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,wBAA6B,GACrC,kBAAkB,CAAC,mBAAmB,CAAC,CAiDzC"}
1
+ {"version":3,"file":"query-depth-limiter.d.ts","sourceRoot":"","sources":["../../../src/plugins/query-depth-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,kBAAkB,EAA0B,MAAM,gBAAgB,CAAC;AAa5E,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE;QACJ,OAAO,CAAC,EAAE;YACR,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,cAAc,CAAC,EAAE,MAAM,CAAC;SACzB,CAAC;KACH,CAAC;IACF,IAAI,CAAC,EAAE;QACL,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,UAAU,wBAAwB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA+GD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,wBAA6B,GACrC,kBAAkB,CAAC,mBAAmB,CAAC,CAgDzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"query-depth-limiter.js","sourceRoot":"","sources":["../../../src/plugins/query-depth-limiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-depth-limiter.js","sourceRoot":"","sources":["../../../src/plugins/query-depth-limiter.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@
21
21
  * Configuration:
22
22
  * - Set GRAPHQL_MAX_DEPTH environment variable (default: 6)
23
23
  */
24
+ import { logger } from '../utils/logger.mjs';
24
25
  import { GraphQLError } from 'graphql';
25
26
  /**
26
27
  * Calculates the depth of a GraphQL query by traversing its AST
@@ -121,14 +122,13 @@ export function queryDepthLimiterPlugin(options = {}) {
121
122
  const userId = contextValue?.user?.sub || contextValue?.user?.email || 'anonymous';
122
123
  const requestId = contextValue?.req?.headers?.['x-request-id'] || 'unknown';
123
124
  // Log the rejected query
124
- console.error('[QueryDepthLimiter] Query rejected', {
125
+ logger.error('[QueryDepthLimiter] Query rejected', {
125
126
  depth,
126
127
  maxDepth,
127
128
  queryName,
128
129
  userId,
129
130
  requestId,
130
131
  query: truncatedQuery,
131
- timestamp: new Date().toISOString(),
132
132
  });
133
133
  throw new GraphQLError(`Query depth of ${depth} exceeds maximum allowed depth of ${maxDepth}`, {
134
134
  extensions: {
@@ -1,4 +1,9 @@
1
+ import type { PrismaClient } from '@prisma/client';
1
2
  import { OptionsGreeksHistorySystemSummary } from './OptionsGreeksHistorySystemSummary';
3
+ /** GraphQL resolver context containing the Prisma client instance */
4
+ interface GraphQLContext {
5
+ prisma: PrismaClient;
6
+ }
2
7
  /**
3
8
  * Custom resolver for PortfolioGreeksHistory aggregation queries
4
9
  * Provides system-wide analytics and summary statistics
@@ -9,6 +14,7 @@ export declare class OptionsGreeksHistoryCustomResolver {
9
14
  * Get system-wide summary statistics for OptionsGreeksHistory
10
15
  * Executes aggregation query to get total accounts, snapshots, and time range
11
16
  */
12
- optionsGreeksHistorySystemSummary(ctx: any): Promise<OptionsGreeksHistorySystemSummary>;
17
+ optionsGreeksHistorySystemSummary(ctx: GraphQLContext): Promise<OptionsGreeksHistorySystemSummary>;
13
18
  }
19
+ export {};
14
20
  //# sourceMappingURL=OptionsGreeksHistoryCustomResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OptionsGreeksHistoryCustomResolver.d.ts","sourceRoot":"","sources":["../../../../src/resolvers/custom/OptionsGreeksHistoryCustomResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AAGxF;;;;GAIG;AACH,qBACa,kCAAkC;IAC7C;;;OAGG;IAKG,iCAAiC,CAClB,GAAG,EAAE,GAAG,GAC1B,OAAO,CAAC,iCAAiC,CAAC;CAsC9C"}
1
+ {"version":3,"file":"OptionsGreeksHistoryCustomResolver.d.ts","sourceRoot":"","sources":["../../../../src/resolvers/custom/OptionsGreeksHistoryCustomResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AAGxF,qEAAqE;AACrE,UAAU,cAAc;IACtB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED;;;;GAIG;AACH,qBACa,kCAAkC;IAC7C;;;OAGG;IAKG,iCAAiC,CAClB,GAAG,EAAE,cAAc,GACrC,OAAO,CAAC,iCAAiC,CAAC;CAsC9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"OptionsGreeksHistoryCustomResolver.js","sourceRoot":"","sources":["../../../../src/resolvers/custom/OptionsGreeksHistoryCustomResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAC1G,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAElF;;;;GAIG;AAEI,IAAM,kCAAkC,GAAxC,MAAM,kCAAkC;IAC7C;;;OAGG;IAKG,AAAN,KAAK,CAAC,iCAAiC,CAClB,GAAQ;QAE3B,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAEzC,4BAA4B;QAC5B,yBAAyB;QACzB,SAAS;QACT,kDAAkD;QAClD,iCAAiC;QACjC,uCAAuC;QACvC,sCAAsC;QACtC,gCAAgC;QAChC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACtD,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC;gBACtC,IAAI,EAAE;oBACJ,SAAS,EAAE,IAAI;iBAChB;gBACD,IAAI,EAAE;oBACJ,SAAS,EAAE,IAAI;iBAChB;aACF,CAAC;YACF,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE;SACtC,CAAC,CAAC;QAEH,iDAAiD;QACjD,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC;YACnE,EAAE,EAAE,CAAC,WAAW,CAAC;YACjB,MAAM,EAAE;gBACN,SAAS,EAAE,IAAI;aAChB;SACF,CAAC,CAAC;QAEH,OAAO;YACL,aAAa,EAAE,gBAAgB,CAAC,MAAM;YACtC,cAAc,EAAE,UAAU;YAC1B,cAAc,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS;YAC9C,cAAc,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS;SAC/C,CAAC;IACJ,CAAC;CACF,CAAA;AAxCO;IAJL,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,iCAAiC,EAAE;QAChE,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,4DAA4D;KAC1E,CAAC;IAEC,WAAA,WAAW,CAAC,GAAG,EAAE,CAAA;;;;2FAsCnB;AAhDU,kCAAkC;IAD9C,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,sBAAsB,CAAC;GACvC,kCAAkC,CAiD9C"}
1
+ {"version":3,"file":"OptionsGreeksHistoryCustomResolver.js","sourceRoot":"","sources":["../../../../src/resolvers/custom/OptionsGreeksHistoryCustomResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAC1G,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAOlF;;;;GAIG;AAEI,IAAM,kCAAkC,GAAxC,MAAM,kCAAkC;IAC7C;;;OAGG;IAKG,AAAN,KAAK,CAAC,iCAAiC,CAClB,GAAmB;QAEtC,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAEzC,4BAA4B;QAC5B,yBAAyB;QACzB,SAAS;QACT,kDAAkD;QAClD,iCAAiC;QACjC,uCAAuC;QACvC,sCAAsC;QACtC,gCAAgC;QAChC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACtD,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC;gBACtC,IAAI,EAAE;oBACJ,SAAS,EAAE,IAAI;iBAChB;gBACD,IAAI,EAAE;oBACJ,SAAS,EAAE,IAAI;iBAChB;aACF,CAAC;YACF,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE;SACtC,CAAC,CAAC;QAEH,iDAAiD;QACjD,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC;YACnE,EAAE,EAAE,CAAC,WAAW,CAAC;YACjB,MAAM,EAAE;gBACN,SAAS,EAAE,IAAI;aAChB;SACF,CAAC,CAAC;QAEH,OAAO;YACL,aAAa,EAAE,gBAAgB,CAAC,MAAM;YACtC,cAAc,EAAE,UAAU;YAC1B,cAAc,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS;YAC9C,cAAc,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS;SAC/C,CAAC;IACJ,CAAC;CACF,CAAA;AAxCO;IAJL,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,iCAAiC,EAAE;QAChE,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,4DAA4D;KAC1E,CAAC;IAEC,WAAA,WAAW,CAAC,GAAG,EAAE,CAAA;;;;2FAsCnB;AAhDU,kCAAkC;IAD9C,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,sBAAsB,CAAC;GACvC,kCAAkC,CAiD9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrate-openai-model-enum.js","sourceRoot":"","sources":["../../../src/scripts/migrate-openai-model-enum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAElC,KAAK,UAAU,sBAAsB;IACnC,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAEtD,IAAI,CAAC;QACH,6DAA6D;QAC7D,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,SAAS,CAE3C;;;;;KAKA,CAAC;QAEF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACzD,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC/B,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QAC3E,CAAC;QAED,yDAAyD;QACzD,qDAAqD;QACrD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAA;;;;KAItC,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,mEAAmE,CAAC,CAAC;QAClG,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,oBAAoB;AACpB,sBAAsB,EAAE;KACrB,IAAI,CAAC,GAAG,EAAE;IACT,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACf,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"migrate-openai-model-enum.js","sourceRoot":"","sources":["../../../src/scripts/migrate-openai-model-enum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAElC,KAAK,UAAU,sBAAsB;IACnC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAEtD,IAAI,CAAC;QACH,6DAA6D;QAC7D,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,SAAS,CAE3C;;;;;KAKA,CAAC;QAEF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YACzD,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QAC3E,CAAC;QAED,yDAAyD;QACzD,qDAAqD;QACrD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAA;;;;KAItC,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,mEAAmE,CAAC,CAAC;QAClG,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,oBAAoB;AACpB,sBAAsB,EAAE;KACrB,IAAI,CAAC,GAAG,EAAE;IACT,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACf,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import { PrismaClient } from '@prisma/client';
2
+ import { logger } from '../utils/logger.mjs';
2
3
  const prisma = new PrismaClient();
3
4
  async function migrateOpenaiModelEnum() {
4
- console.log('Starting OpenaiModel enum migration...');
5
+ logger.info('Starting OpenaiModel enum migration...');
5
6
  try {
6
7
  // Check which models are currently in use in the users table
7
8
  const currentModels = await prisma.$queryRaw `
@@ -11,14 +12,14 @@ async function migrateOpenaiModelEnum() {
11
12
  GROUP BY "openaiModel"
12
13
  `;
13
14
  if (currentModels.length > 0) {
14
- console.log('Found users with deprecated model values:');
15
+ logger.info('Found users with deprecated model values:');
15
16
  currentModels.forEach((record) => {
16
- console.log(` - ${record.openaiModel}: ${record.count} users`);
17
+ logger.info(` - ${record.openaiModel}: ${record.count} users`);
17
18
  });
18
19
  }
19
20
  else {
20
- console.log('No users found with deprecated model values.');
21
- console.log('Migration not needed, but will proceed anyway for safety.');
21
+ logger.info('No users found with deprecated model values.');
22
+ logger.info('Migration not needed, but will proceed anyway for safety.');
22
23
  }
23
24
  // Update all deprecated model values to NULL temporarily
24
25
  // This allows the schema migration to proceed safely
@@ -27,11 +28,11 @@ async function migrateOpenaiModelEnum() {
27
28
  SET "openaiModel" = NULL
28
29
  WHERE "openaiModel" IN ('GPT_4O', 'GPT_4O_MINI', 'O1_PREVIEW', 'O1_MINI', 'O1', 'O3_MINI')
29
30
  `;
30
- console.log(`Updated ${result} users to NULL (will be set to GPT_5_MINI after schema migration)`);
31
- console.log('Migration completed successfully!');
31
+ logger.info(`Updated ${result} users to NULL (will be set to GPT_5_MINI after schema migration)`);
32
+ logger.info('Migration completed successfully!');
32
33
  }
33
34
  catch (error) {
34
- console.error('Migration failed:', error);
35
+ logger.error('Migration failed', { error: String(error) });
35
36
  throw error;
36
37
  }
37
38
  finally {
@@ -41,11 +42,11 @@ async function migrateOpenaiModelEnum() {
41
42
  // Run the migration
42
43
  migrateOpenaiModelEnum()
43
44
  .then(() => {
44
- console.log('Script finished successfully');
45
+ logger.info('Script finished successfully');
45
46
  process.exit(0);
46
47
  })
47
48
  .catch((error) => {
48
- console.error('Script failed:', error);
49
+ logger.error('Script failed', { error: String(error) });
49
50
  process.exit(1);
50
51
  });
51
52
  //# sourceMappingURL=migrate-openai-model-enum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"set-default-openai-model.js","sourceRoot":"","sources":["../../../src/scripts/set-default-openai-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAElC,KAAK,UAAU,qBAAqB;IAClC,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IAEtE,IAAI,CAAC;QACH,uDAAuD;QACvD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAA;;;;KAItC,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,sBAAsB,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,iBAAiB;AACjB,qBAAqB,EAAE;KACpB,IAAI,CAAC,GAAG,EAAE;IACT,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACf,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"set-default-openai-model.js","sourceRoot":"","sources":["../../../src/scripts/set-default-openai-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAElC,KAAK,UAAU,qBAAqB;IAClC,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IAEtE,IAAI,CAAC;QACH,uDAAuD;QACvD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAA;;;;KAItC,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,sBAAsB,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtE,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,iBAAiB;AACjB,qBAAqB,EAAE;KACpB,IAAI,CAAC,GAAG,EAAE;IACT,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACf,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import { PrismaClient } from '@prisma/client';
2
+ import { logger } from '../utils/logger.mjs';
2
3
  const prisma = new PrismaClient();
3
4
  async function setDefaultOpenaiModel() {
4
- console.log('Setting default OpenaiModel to GPT_5_MINI for users...');
5
+ logger.info('Setting default OpenaiModel to GPT_5_MINI for users...');
5
6
  try {
6
7
  // Update all users with NULL openaiModel to GPT_5_MINI
7
8
  const result = await prisma.$executeRaw `
@@ -9,11 +10,11 @@ async function setDefaultOpenaiModel() {
9
10
  SET "openaiModel" = 'GPT_5_MINI'
10
11
  WHERE "openaiModel" IS NULL
11
12
  `;
12
- console.log(`Updated ${result} users to GPT_5_MINI`);
13
- console.log('Default model set successfully!');
13
+ logger.info(`Updated ${result} users to GPT_5_MINI`);
14
+ logger.info('Default model set successfully!');
14
15
  }
15
16
  catch (error) {
16
- console.error('Failed to set default model:', error);
17
+ logger.error('Failed to set default model', { error: String(error) });
17
18
  throw error;
18
19
  }
19
20
  finally {
@@ -23,11 +24,11 @@ async function setDefaultOpenaiModel() {
23
24
  // Run the script
24
25
  setDefaultOpenaiModel()
25
26
  .then(() => {
26
- console.log('Script finished successfully');
27
+ logger.info('Script finished successfully');
27
28
  process.exit(0);
28
29
  })
29
30
  .catch((error) => {
30
- console.error('Script failed:', error);
31
+ logger.error('Script failed', { error: String(error) });
31
32
  process.exit(1);
32
33
  });
33
34
  //# sourceMappingURL=set-default-openai-model.js.map
@@ -0,0 +1,9 @@
1
+ interface Logger {
2
+ info: (message: string, meta?: Record<string, unknown>) => void;
3
+ warn: (message: string, meta?: Record<string, unknown>) => void;
4
+ error: (message: string, meta?: Record<string, unknown>) => void;
5
+ debug: (message: string, meta?: Record<string, unknown>) => void;
6
+ }
7
+ export declare const logger: Logger;
8
+ export {};
9
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAUA,UAAU,MAAM;IACd,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAChE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAChE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAClE;AAmCD,eAAO,MAAM,MAAM,QAAiC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAiBA,SAAS,cAAc,CACrB,KAAe,EACf,OAAe,EACf,OAAe,EACf,IAA8B;IAE9B,MAAM,KAAK,GAAa;QACtB,KAAK;QACL,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,OAAO;QACP,GAAG,IAAI;KACR,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO;QACL,IAAI,EAAE,CAAC,OAAe,EAAE,IAA8B,EAAQ,EAAE;YAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,EAAE,CAAC,OAAe,EAAE,IAA8B,EAAQ,EAAE;YAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9E,CAAC;QACD,KAAK,EAAE,CAAC,OAAe,EAAE,IAA8B,EAAQ,EAAE;YAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/E,CAAC;QACD,KAAK,EAAE,CAAC,OAAe,EAAE,IAA8B,EAAQ,EAAE;YAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/E,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ function formatLogEntry(level, service, message, meta) {
2
+ const entry = {
3
+ level,
4
+ message,
5
+ timestamp: new Date().toISOString(),
6
+ service,
7
+ ...meta,
8
+ };
9
+ return JSON.stringify(entry);
10
+ }
11
+ function createLogger(service) {
12
+ return {
13
+ info: (message, meta) => {
14
+ process.stdout.write(formatLogEntry('info', service, message, meta) + '\n');
15
+ },
16
+ warn: (message, meta) => {
17
+ process.stdout.write(formatLogEntry('warn', service, message, meta) + '\n');
18
+ },
19
+ error: (message, meta) => {
20
+ process.stderr.write(formatLogEntry('error', service, message, meta) + '\n');
21
+ },
22
+ debug: (message, meta) => {
23
+ process.stdout.write(formatLogEntry('debug', service, message, meta) + '\n');
24
+ },
25
+ };
26
+ }
27
+ export const logger = createLogger('backend-legacy');
28
+ //# sourceMappingURL=logger.js.map
package/esm/utils.d.ts CHANGED
@@ -1,2 +1,13 @@
1
- export declare function removeUndefinedProps(obj: any): any;
1
+ /**
2
+ * Recursively removes undefined and null properties from an object or array.
3
+ *
4
+ * This utility is called by generated CRUD functions to clean GraphQL variables
5
+ * before passing them to Apollo Client. The input objects contain Prisma-typed
6
+ * fields (Date, Decimal, bigint, JsonValue, nested relations, etc.) which cannot
7
+ * be enumerated exhaustively. The return value is used as Apollo OperationVariables.
8
+ *
9
+ * We use Record<string, unknown> for the parameter to accept all generated Prisma
10
+ * input shapes without needing to enumerate every possible field type.
11
+ */
12
+ export declare function removeUndefinedProps(obj: Record<string, unknown> | Record<string, unknown>[] | unknown): Record<string, unknown> | undefined;
2
13
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CA4ClD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CA8C5I"}
package/esm/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB,CAAC,GAAQ;IAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG;aACP,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;aACvC,MAAM,CACL,IAAI,CAAC,EAAE,CACL,IAAI,KAAK,SAAS;YAClB,IAAI,KAAK,IAAI;YACb,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAC7D,CAAC;IACN,CAAC;SAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,GAAG,EAAE,EAAE;YAC/C,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAErB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,IAAI,YAAY,CAAC;gBAEjB,IAAI,GAAG,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACnE,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;wBACzD,4CAA4C;wBAC5C,YAAY,GAAG,EAAE,EAAE,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;oBACxD,CAAC;yBAAM,CAAC;wBACN,wEAAwE;wBACxE,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,8BAA8B;oBAC9B,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBAC7C,CAAC;gBAED,IACE,YAAY,KAAK,SAAS;oBAC1B,YAAY,KAAK,IAAI;oBACrB,CAAC,OAAO,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAC1E,CAAC;oBACD,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAkE;IACrG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG;aACP,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;aACvC,MAAM,CACL,IAAI,CAAC,EAAE,CACL,IAAI,KAAK,SAAS;YAClB,IAAI,KAAK,IAAI;YACb,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAA+B,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAClD,CAAC;IAC5C,CAAC;SAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,EAAE,CAAC;QAC7E,MAAM,MAAM,GAAG,GAA8B,CAAC;QAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAA4B,EAAE,GAAG,EAAE,EAAE;YACtE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAE1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,IAAI,YAAqB,CAAC;gBAE1B,IAAI,GAAG,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,EAAE,CAAC;oBAC/F,MAAM,QAAQ,GAAG,KAAgC,CAAC;oBAClD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;wBACtF,4CAA4C;wBAC5C,YAAY,GAAG,EAAE,EAAE,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EAA6B,CAAC,EAAE,CAAC;oBACtF,CAAC;yBAAM,CAAC;wBACN,wEAAwE;wBACxE,YAAY,GAAG,oBAAoB,CAAC,KAAgC,CAAC,CAAC;oBACxE,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,8BAA8B;oBAC9B,YAAY,GAAG,oBAAoB,CAAC,KAAgC,CAAC,CAAC;gBACxE,CAAC;gBAED,IACE,YAAY,KAAK,SAAS;oBAC1B,YAAY,KAAK,IAAI;oBACrB,CAAC,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,YAAY,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,YAAuC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EACrI,CAAC;oBACD,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAA8B,CAAC,CAAC,CAAC,SAAS,CAAC;AACxF,CAAC"}
package/esm/utils.mjs CHANGED
@@ -1,3 +1,14 @@
1
+ /**
2
+ * Recursively removes undefined and null properties from an object or array.
3
+ *
4
+ * This utility is called by generated CRUD functions to clean GraphQL variables
5
+ * before passing them to Apollo Client. The input objects contain Prisma-typed
6
+ * fields (Date, Decimal, bigint, JsonValue, nested relations, etc.) which cannot
7
+ * be enumerated exhaustively. The return value is used as Apollo OperationVariables.
8
+ *
9
+ * We use Record<string, unknown> for the parameter to accept all generated Prisma
10
+ * input shapes without needing to enumerate every possible field type.
11
+ */
1
12
  export function removeUndefinedProps(obj) {
2
13
  if (Array.isArray(obj)) {
3
14
  return obj
@@ -6,15 +17,17 @@ export function removeUndefinedProps(obj) {
6
17
  item !== null &&
7
18
  (typeof item !== 'object' || Object.keys(item).length > 0));
8
19
  }
9
- else if (typeof obj === 'object' && obj !== null) {
10
- return Object.keys(obj).reduce((acc, key) => {
11
- let value = obj[key];
20
+ else if (typeof obj === 'object' && obj !== null && !(obj instanceof Date)) {
21
+ const record = obj;
22
+ return Object.keys(record).reduce((acc, key) => {
23
+ const value = record[key];
12
24
  if (value !== undefined && value !== null) {
13
25
  let cleanedValue;
14
- if (key === 'where' && typeof value === 'object' && value !== null) {
15
- if (value.hasOwnProperty('id') && value.id !== undefined) {
26
+ if (key === 'where' && typeof value === 'object' && value !== null && !(value instanceof Date)) {
27
+ const whereObj = value;
28
+ if (Object.prototype.hasOwnProperty.call(whereObj, 'id') && whereObj.id !== undefined) {
16
29
  // Retain only the 'id' field within 'where'
17
- cleanedValue = { id: removeUndefinedProps(value.id) };
30
+ cleanedValue = { id: removeUndefinedProps(whereObj.id) };
18
31
  }
19
32
  else {
20
33
  // Process 'where' object normally if 'id' is undefined or doesn't exist
@@ -27,7 +40,7 @@ export function removeUndefinedProps(obj) {
27
40
  }
28
41
  if (cleanedValue !== undefined &&
29
42
  cleanedValue !== null &&
30
- (typeof cleanedValue !== 'object' || Object.keys(cleanedValue).length > 0)) {
43
+ (typeof cleanedValue !== 'object' || cleanedValue instanceof Date || Object.keys(cleanedValue).length > 0)) {
31
44
  acc[key] = cleanedValue;
32
45
  }
33
46
  }
package/getToken.cjs CHANGED
@@ -39,6 +39,7 @@ exports.getToken = getToken;
39
39
  const buffer_1 = require("buffer");
40
40
  const crypto = __importStar(require("crypto"));
41
41
  const jwtConfig_1 = require("./config/jwtConfig.cjs");
42
+ const logger_1 = require("./utils/logger.cjs");
42
43
  /**
43
44
  * Default maximum age for JWT (30 days)
44
45
  */
@@ -183,8 +184,8 @@ async function decode(params) {
183
184
  * Default Logger using Console
184
185
  */
185
186
  const defaultLogger = {
186
- info: console.info,
187
- error: console.error
187
+ info: (message) => logger_1.logger.info(message),
188
+ error: (message) => logger_1.logger.error(message),
188
189
  };
189
190
  /**
190
191
  * SessionStore equivalent to manage cookies
package/health.cjs ADDED
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createHealthRouter = createHealthRouter;
7
+ const express_1 = require("express");
8
+ const prismaClient_1 = __importDefault(require("./prismaClient.cjs"));
9
+ const logger_1 = require("./utils/logger.cjs");
10
+ const SERVICE_NAME = 'backend-legacy';
11
+ /**
12
+ * Reads the package version from package.json at startup.
13
+ * Falls back to 'unknown' if the version cannot be determined.
14
+ */
15
+ function getPackageVersion() {
16
+ try {
17
+ const pkg = require('../package.json');
18
+ return pkg.version || 'unknown';
19
+ }
20
+ catch (_a) {
21
+ return 'unknown';
22
+ }
23
+ }
24
+ const PACKAGE_VERSION = getPackageVersion();
25
+ /** Tracks the process start time for uptime calculation */
26
+ const startedAt = Date.now();
27
+ /**
28
+ * Checks database connectivity by issuing a lightweight query.
29
+ * Returns 'connected' or 'disconnected'. Never throws.
30
+ */
31
+ async function checkDatabase() {
32
+ try {
33
+ await prismaClient_1.default.$queryRaw `SELECT 1`;
34
+ return 'connected';
35
+ }
36
+ catch (dbError) {
37
+ logger_1.logger.warn('Health check: database connectivity test failed', {
38
+ error: dbError instanceof Error ? dbError.message : String(dbError),
39
+ });
40
+ return 'disconnected';
41
+ }
42
+ }
43
+ /**
44
+ * Creates an Express router with a GET /health endpoint.
45
+ *
46
+ * The endpoint returns HTTP 200 when healthy (database reachable)
47
+ * and HTTP 503 when degraded (database unreachable).
48
+ *
49
+ * Response includes: service name, version, uptime in seconds,
50
+ * memory usage (RSS, heap used, heap total in MB), database status,
51
+ * and an ISO 8601 timestamp.
52
+ *
53
+ * This endpoint should be mounted before auth middleware so it
54
+ * remains accessible without authentication.
55
+ */
56
+ function createHealthRouter() {
57
+ const router = (0, express_1.Router)();
58
+ router.get('/health', async (_req, res) => {
59
+ const databaseStatus = await checkDatabase();
60
+ const isHealthy = databaseStatus === 'connected';
61
+ const statusCode = isHealthy ? 200 : 503;
62
+ const memoryUsage = process.memoryUsage();
63
+ const body = {
64
+ status: isHealthy ? 'ok' : 'degraded',
65
+ service: SERVICE_NAME,
66
+ version: PACKAGE_VERSION,
67
+ timestamp: new Date().toISOString(),
68
+ uptime: Math.floor((Date.now() - startedAt) / 1000),
69
+ memory: {
70
+ rss: Math.round(memoryUsage.rss / 1024 / 1024),
71
+ heapUsed: Math.round(memoryUsage.heapUsed / 1024 / 1024),
72
+ heapTotal: Math.round(memoryUsage.heapTotal / 1024 / 1024),
73
+ },
74
+ database: databaseStatus,
75
+ };
76
+ res.status(statusCode).json(body);
77
+ });
78
+ return router;
79
+ }
80
+ //# sourceMappingURL=health.js.map
package/health.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ import { Router } from 'express';
2
+ /**
3
+ * Creates an Express router with a GET /health endpoint.
4
+ *
5
+ * The endpoint returns HTTP 200 when healthy (database reachable)
6
+ * and HTTP 503 when degraded (database unreachable).
7
+ *
8
+ * Response includes: service name, version, uptime in seconds,
9
+ * memory usage (RSS, heap used, heap total in MB), database status,
10
+ * and an ISO 8601 timestamp.
11
+ *
12
+ * This endpoint should be mounted before auth middleware so it
13
+ * remains accessible without authentication.
14
+ */
15
+ export declare function createHealthRouter(): Router;
16
+ //# sourceMappingURL=health.d.ts.map