@windrun-huaiin/backend-core 26.0.2 → 28.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/dist/app/api/ai/route.d.ts +2 -0
  2. package/dist/app/api/ai/route.d.ts.map +1 -0
  3. package/dist/app/api/ai/route.js +10 -0
  4. package/dist/app/api/ai/route.mjs +1 -0
  5. package/dist/app/api/stripe/checkout/route.js +1 -1
  6. package/dist/app/api/stripe/checkout/route.mjs +1 -1
  7. package/dist/app/api/stripe/customer-portal/route.js +1 -1
  8. package/dist/app/api/stripe/customer-portal/route.mjs +1 -1
  9. package/dist/app/api/webhook/clerk/user/route.js +1 -1
  10. package/dist/app/api/webhook/clerk/user/route.mjs +1 -1
  11. package/dist/auth/auth-utils.js +1 -1
  12. package/dist/auth/auth-utils.mjs +1 -1
  13. package/dist/config/fingerprint.d.ts +2 -0
  14. package/dist/config/fingerprint.d.ts.map +1 -0
  15. package/dist/config/fingerprint.js +7 -0
  16. package/dist/config/fingerprint.mjs +1 -0
  17. package/dist/config/money-price.d.ts +2 -0
  18. package/dist/config/money-price.d.ts.map +1 -0
  19. package/dist/config/money-price.js +10 -0
  20. package/dist/config/money-price.mjs +1 -0
  21. package/dist/core-prisma/browser.d.ts +40 -0
  22. package/dist/core-prisma/browser.d.ts.map +1 -0
  23. package/dist/core-prisma/client.d.ts +57 -0
  24. package/dist/core-prisma/client.d.ts.map +1 -0
  25. package/dist/core-prisma/client.js +55 -0
  26. package/dist/core-prisma/client.mjs +33 -0
  27. package/dist/core-prisma/commonInputTypes.d.ts +495 -0
  28. package/dist/core-prisma/commonInputTypes.d.ts.map +1 -0
  29. package/dist/core-prisma/enums.d.ts +2 -0
  30. package/dist/core-prisma/enums.d.ts.map +1 -0
  31. package/dist/core-prisma/internal/class.d.ts +193 -0
  32. package/dist/core-prisma/internal/class.d.ts.map +1 -0
  33. package/dist/core-prisma/internal/class.js +108 -0
  34. package/dist/core-prisma/internal/class.mjs +87 -0
  35. package/dist/core-prisma/internal/prismaNamespace.d.ts +1180 -0
  36. package/dist/core-prisma/internal/prismaNamespace.d.ts.map +1 -0
  37. package/dist/core-prisma/internal/prismaNamespace.js +278 -0
  38. package/dist/core-prisma/internal/prismaNamespace.mjs +226 -0
  39. package/dist/core-prisma/internal/prismaNamespaceBrowser.d.ts +233 -0
  40. package/dist/core-prisma/internal/prismaNamespaceBrowser.d.ts.map +1 -0
  41. package/dist/core-prisma/models/Apilog.d.ts +1088 -0
  42. package/dist/core-prisma/models/Apilog.d.ts.map +1 -0
  43. package/dist/core-prisma/models/Credit.d.ts +1554 -0
  44. package/dist/core-prisma/models/Credit.d.ts.map +1 -0
  45. package/dist/core-prisma/models/CreditAuditLog.d.ts +1362 -0
  46. package/dist/core-prisma/models/CreditAuditLog.d.ts.map +1 -0
  47. package/dist/core-prisma/models/Subscription.d.ts +1441 -0
  48. package/dist/core-prisma/models/Subscription.d.ts.map +1 -0
  49. package/dist/core-prisma/models/Transaction.d.ts +2222 -0
  50. package/dist/core-prisma/models/Transaction.d.ts.map +1 -0
  51. package/dist/core-prisma/models/User.d.ts +1775 -0
  52. package/dist/core-prisma/models/User.d.ts.map +1 -0
  53. package/dist/core-prisma/models/UserBackup.d.ts +1228 -0
  54. package/dist/core-prisma/models/UserBackup.d.ts.map +1 -0
  55. package/dist/core-prisma/models.d.ts +9 -0
  56. package/dist/core-prisma/models.d.ts.map +1 -0
  57. package/dist/credit/server.d.ts +2 -0
  58. package/dist/credit/server.d.ts.map +1 -0
  59. package/dist/credit/server.js +11 -0
  60. package/dist/credit/server.mjs +1 -0
  61. package/dist/index.d.ts +0 -1
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +7 -98
  64. package/dist/index.mjs +5 -14
  65. package/dist/lib/money-price-helper.d.ts.map +1 -1
  66. package/dist/lib/money-price-helper.js +1 -0
  67. package/dist/lib/money-price-helper.mjs +2 -1
  68. package/dist/lib/stripe-config.js +1 -1
  69. package/dist/lib/stripe-config.mjs +1 -1
  70. package/dist/pricing/server.d.ts +2 -0
  71. package/dist/pricing/server.d.ts.map +1 -0
  72. package/dist/pricing/server.js +7 -0
  73. package/dist/pricing/server.mjs +1 -0
  74. package/dist/prisma/index.d.ts +4 -1
  75. package/dist/prisma/index.d.ts.map +1 -1
  76. package/dist/prisma/index.js +6 -0
  77. package/dist/prisma/index.mjs +4 -1
  78. package/dist/prisma/prisma-transaction-util.d.ts +1 -1
  79. package/dist/prisma/prisma-transaction-util.d.ts.map +1 -1
  80. package/dist/prisma/prisma-transaction-util.js +1 -1
  81. package/dist/prisma/prisma-transaction-util.mjs +2 -2
  82. package/dist/prisma/prisma.d.ts +22 -3
  83. package/dist/prisma/prisma.d.ts.map +1 -1
  84. package/dist/prisma/prisma.js +83 -20
  85. package/dist/prisma/prisma.mjs +81 -21
  86. package/dist/services/aggregate/anonymous.aggregate.service.d.ts +2 -2
  87. package/dist/services/aggregate/anonymous.aggregate.service.d.ts.map +1 -1
  88. package/dist/services/aggregate/anonymous.aggregate.service.js +3 -2
  89. package/dist/services/aggregate/anonymous.aggregate.service.mjs +3 -2
  90. package/dist/services/aggregate/billing.aggregate.service.d.ts +2 -2
  91. package/dist/services/aggregate/billing.aggregate.service.d.ts.map +1 -1
  92. package/dist/services/aggregate/billing.aggregate.service.js +1 -1
  93. package/dist/services/aggregate/billing.aggregate.service.mjs +1 -1
  94. package/dist/services/aggregate/user.aggregate.service.d.ts +1 -1
  95. package/dist/services/aggregate/user.aggregate.service.d.ts.map +1 -1
  96. package/dist/services/aggregate/user.aggregate.service.js +3 -3
  97. package/dist/services/aggregate/user.aggregate.service.mjs +3 -3
  98. package/dist/services/context/index.js +1 -0
  99. package/dist/services/context/index.mjs +1 -1
  100. package/dist/services/context/user-context-finalizer.d.ts +1 -0
  101. package/dist/services/context/user-context-finalizer.d.ts.map +1 -1
  102. package/dist/services/context/user-context-finalizer.js +17 -0
  103. package/dist/services/context/user-context-finalizer.mjs +17 -1
  104. package/dist/services/context/user-context-service.js +1 -1
  105. package/dist/services/context/user-context-service.mjs +1 -1
  106. package/dist/services/database/apilog.service.d.ts +2 -2
  107. package/dist/services/database/apilog.service.d.ts.map +1 -1
  108. package/dist/services/database/apilog.service.js +1 -0
  109. package/dist/services/database/apilog.service.mjs +1 -0
  110. package/dist/services/database/credit.service.d.ts +2 -2
  111. package/dist/services/database/credit.service.d.ts.map +1 -1
  112. package/dist/services/database/credit.service.js +5 -4
  113. package/dist/services/database/credit.service.mjs +3 -2
  114. package/dist/services/database/creditAuditLog.service.d.ts +2 -2
  115. package/dist/services/database/creditAuditLog.service.d.ts.map +1 -1
  116. package/dist/services/database/creditAuditLog.service.js +5 -4
  117. package/dist/services/database/creditAuditLog.service.mjs +3 -2
  118. package/dist/services/database/prisma-model-type.d.ts +2 -2
  119. package/dist/services/database/prisma-model-type.d.ts.map +1 -1
  120. package/dist/services/database/subscription.service.d.ts +1 -1
  121. package/dist/services/database/subscription.service.d.ts.map +1 -1
  122. package/dist/services/database/subscription.service.js +1 -0
  123. package/dist/services/database/subscription.service.mjs +1 -0
  124. package/dist/services/database/transaction.service.d.ts +3 -3
  125. package/dist/services/database/transaction.service.d.ts.map +1 -1
  126. package/dist/services/database/transaction.service.js +5 -4
  127. package/dist/services/database/transaction.service.mjs +3 -2
  128. package/dist/services/database/user.service.d.ts +2 -2
  129. package/dist/services/database/user.service.d.ts.map +1 -1
  130. package/dist/services/database/user.service.js +1 -0
  131. package/dist/services/database/user.service.mjs +1 -0
  132. package/dist/services/database/userBackup.service.d.ts +2 -2
  133. package/dist/services/database/userBackup.service.d.ts.map +1 -1
  134. package/dist/services/database/userBackup.service.js +1 -0
  135. package/dist/services/database/userBackup.service.mjs +1 -0
  136. package/dist/services/stripe/webhook-handler.js +1 -1
  137. package/dist/services/stripe/webhook-handler.mjs +1 -1
  138. package/dist/upstash/server.d.ts +3 -0
  139. package/dist/upstash/server.d.ts.map +1 -0
  140. package/dist/{lib/index.js → upstash/server.js} +7 -32
  141. package/dist/upstash/server.mjs +7 -0
  142. package/package.json +44 -12
  143. package/prisma/schema.prisma +3 -1
  144. package/src/app/api/ai/route.ts +6 -0
  145. package/src/app/api/stripe/checkout/route.ts +4 -4
  146. package/src/app/api/stripe/customer-portal/route.ts +3 -3
  147. package/src/app/api/user/anonymous/init/route.ts +5 -5
  148. package/src/app/api/webhook/clerk/user/route.ts +3 -3
  149. package/src/app/api/webhook/stripe/route.ts +3 -3
  150. package/src/config/fingerprint.ts +1 -0
  151. package/src/config/money-price.ts +1 -0
  152. package/src/core-prisma/browser.ts +54 -0
  153. package/src/core-prisma/client.ts +78 -0
  154. package/src/core-prisma/commonInputTypes.ts +565 -0
  155. package/src/core-prisma/enums.ts +15 -0
  156. package/src/core-prisma/internal/class.ts +293 -0
  157. package/src/core-prisma/internal/prismaNamespace.ts +1419 -0
  158. package/src/core-prisma/internal/prismaNamespaceBrowser.ts +259 -0
  159. package/src/core-prisma/models/Apilog.ts +1244 -0
  160. package/src/core-prisma/models/Credit.ts +1722 -0
  161. package/src/core-prisma/models/CreditAuditLog.ts +1536 -0
  162. package/src/core-prisma/models/Subscription.ts +1610 -0
  163. package/src/core-prisma/models/Transaction.ts +2398 -0
  164. package/src/core-prisma/models/User.ts +1982 -0
  165. package/src/core-prisma/models/UserBackup.ts +1384 -0
  166. package/src/core-prisma/models.ts +18 -0
  167. package/src/credit/server.ts +1 -0
  168. package/src/index.ts +0 -1
  169. package/src/lib/money-price-helper.ts +3 -0
  170. package/src/pricing/server.ts +1 -0
  171. package/src/prisma/index.ts +18 -1
  172. package/src/prisma/prisma-transaction-util.ts +3 -3
  173. package/src/prisma/prisma.ts +130 -21
  174. package/src/services/aggregate/anonymous.aggregate.service.ts +7 -7
  175. package/src/services/aggregate/billing.aggregate.service.ts +3 -3
  176. package/src/services/aggregate/user.aggregate.service.ts +7 -6
  177. package/src/services/context/user-context-finalizer.ts +16 -0
  178. package/src/services/database/apilog.service.ts +3 -3
  179. package/src/services/database/credit.service.ts +7 -7
  180. package/src/services/database/creditAuditLog.service.ts +4 -4
  181. package/src/services/database/prisma-model-type.ts +2 -2
  182. package/src/services/database/subscription.service.ts +3 -3
  183. package/src/services/database/transaction.service.ts +4 -4
  184. package/src/services/database/user.service.ts +4 -4
  185. package/src/services/database/userBackup.service.ts +4 -4
  186. package/src/services/stripe/webhook-handler.ts +6 -6
  187. package/src/upstash/server.ts +2 -0
  188. package/dist/lib/index.d.ts +0 -8
  189. package/dist/lib/index.d.ts.map +0 -1
  190. package/dist/lib/index.mjs +0 -12
  191. package/src/lib/index.ts +0 -7
@@ -1,20 +1,21 @@
1
1
  'use strict';
2
2
 
3
- var client = require('@prisma/client');
3
+ var adapterPg = require('@prisma/adapter-pg');
4
+ var client = require('../core-prisma/client.js');
4
5
 
5
- var _a;
6
6
  const globalForPrisma = globalThis;
7
7
  // ==================== 日志配置 ====================
8
8
  const getLogConfig = () => {
9
+ if (process.env.PRISMA_DEBUG === 'true') {
10
+ return [
11
+ { emit: 'event', level: 'query' },
12
+ { emit: 'stdout', level: 'info' },
13
+ { emit: 'stdout', level: 'warn' },
14
+ { emit: 'stdout', level: 'error' },
15
+ ];
16
+ }
9
17
  const env = process.env.NODE_ENV || 'development';
10
18
  switch (env) {
11
- case 'development':
12
- return [
13
- { emit: 'event', level: 'query' },
14
- { emit: 'stdout', level: 'info' },
15
- { emit: 'stdout', level: 'warn' },
16
- { emit: 'stdout', level: 'error' },
17
- ];
18
19
  case 'test':
19
20
  return [
20
21
  { emit: 'stdout', level: 'warn' },
@@ -25,22 +26,80 @@ const getLogConfig = () => {
25
26
  }
26
27
  };
27
28
  const logConfig = getLogConfig();
28
- // ==================== 创建 Prisma 全局单例 ====================
29
- const prisma = (_a = globalForPrisma.prisma) !== null && _a !== void 0 ? _a : new client.PrismaClient({
30
- log: logConfig,
31
- });
32
- if (process.env.NODE_ENV !== 'production') {
33
- globalForPrisma.prisma = prisma;
29
+ function isPrismaDebugEnabled() {
30
+ return process.env.PRISMA_DEBUG === 'true';
31
+ }
32
+ function createPrismaInstanceId(prefix = 'core-prisma') {
33
+ return `${prefix}_${Date.now()}_${Math.random().toString(36).slice(2, 7)}`;
34
+ }
35
+ function createPrismaPgConfig(databaseUrl) {
36
+ const ca = process.env.SUPABASE_DB_CA_CERT;
37
+ if (!ca && !globalForPrisma.__prisma_ssl_warning_logged) {
38
+ console.warn('SUPABASE_DB_CA_CERT is not configured. Prisma will request TLS without certificate verification unless DATABASE_URL SSL parameters override this behavior. Configure SUPABASE_DB_CA_CERT for certificate verification.');
39
+ globalForPrisma.__prisma_ssl_warning_logged = true;
40
+ }
41
+ return {
42
+ connectionString: databaseUrl,
43
+ ssl: ca
44
+ ? {
45
+ ca,
46
+ rejectUnauthorized: true,
47
+ }
48
+ : {
49
+ rejectUnauthorized: false,
50
+ },
51
+ };
52
+ }
53
+ function createPrismaClient(databaseUrl = process.env.DATABASE_URL) {
54
+ if (!databaseUrl) {
55
+ throw new Error('DATABASE_URL is required to create PrismaClient');
56
+ }
57
+ const adapter = new adapterPg.PrismaPg(createPrismaPgConfig(databaseUrl));
58
+ const instanceId = createPrismaInstanceId();
59
+ if (isPrismaDebugEnabled()) {
60
+ console.log(`Prisma Client Created | ID: ${instanceId}`);
61
+ }
62
+ const client$1 = new client.PrismaClient({
63
+ adapter,
64
+ log: logConfig,
65
+ });
66
+ return configureBackendCorePrisma(client$1, instanceId);
67
+ }
68
+ function configureBackendCorePrisma(prismaClient, instanceId) {
69
+ var _a;
70
+ if (instanceId === void 0) { instanceId = (_a = globalForPrisma.__prisma_instance_id) !== null && _a !== void 0 ? _a : createPrismaInstanceId(); }
71
+ globalForPrisma.prisma = prismaClient;
72
+ globalForPrisma.__prisma_instance_id = instanceId;
73
+ registerDevelopmentQueryLogger(prismaClient, instanceId);
74
+ return prismaClient;
34
75
  }
35
- if (process.env.NODE_ENV === 'development') {
76
+ function getBackendCorePrisma() {
77
+ if (!globalForPrisma.prisma) {
78
+ configureBackendCorePrisma(createPrismaClient());
79
+ }
80
+ return globalForPrisma.prisma;
81
+ }
82
+ // Backward-compatible lazy export. Accessing a property creates the client,
83
+ // importing this module does not.
84
+ const prisma = new Proxy({}, {
85
+ get(_target, property, receiver) {
86
+ return Reflect.get(getBackendCorePrisma(), property, receiver);
87
+ },
88
+ });
89
+ function registerDevelopmentQueryLogger(prismaClient, instanceId) {
90
+ var _a;
91
+ if (!isPrismaDebugEnabled()) {
92
+ return;
93
+ }
36
94
  const REGISTERED_KEY = '__prisma_query_logger_registered';
37
95
  const ID_KEY = '__prisma_query_logger_id';
38
96
  if (globalForPrisma[REGISTERED_KEY]) {
39
- console.log(`Prisma Query Logger Already Registered | ID: ${globalForPrisma[ID_KEY]}`);
97
+ console.log(`Prisma Query Logger Already Registered | Listener ID: ${globalForPrisma[ID_KEY]} | Instance ID: ${globalForPrisma.__prisma_instance_id}`);
40
98
  }
41
99
  else {
42
100
  const listenerId = `listener_${Date.now()}_${Math.random().toString(36).substr(2, 5)}`;
43
101
  globalForPrisma[ID_KEY] = listenerId;
102
+ console.log(`Prisma Query Logger Registered | Listener ID: ${listenerId} | Instance ID: ${instanceId}`);
44
103
  // --- 自定义SQL拼接 ---
45
104
  const interpolate = (query, params) => {
46
105
  // 1. 【核心修改】:安全检查和参数解析
@@ -84,7 +143,7 @@ if (process.env.NODE_ENV === 'development') {
84
143
  return sql;
85
144
  };
86
145
  const wrappedHandler = (event) => {
87
- const ms = event.duration;
146
+ const ms = Math.round(event.duration);
88
147
  const slow = ms >= 200 ? '🐌 SLOW SQL ' : '🚀 SQL';
89
148
  const interpolatedSql = interpolate(event.query, event.params);
90
149
  const clean = interpolatedSql
@@ -92,18 +151,22 @@ if (process.env.NODE_ENV === 'development') {
92
151
  .replace(/= '([^']+)'/g, `= '$1'`) // 已经替换成单引号,此处可以优化
93
152
  .replace(/"/g, ''); // 彻底灭双引号
94
153
  console.log('─'.repeat(60));
154
+ console.log(`Prisma Instance ID: ${instanceId} | Listener ID: ${listenerId}`);
95
155
  console.log(`${clean};`);
96
156
  console.log(`⏰ 耗时: ${ms}ms, ${slow}`);
97
157
  };
98
158
  // 注册包装后的 handler
99
- prisma.$on('query', wrappedHandler);
159
+ (_a = prismaClient.$on) === null || _a === void 0 ? void 0 : _a.call(prismaClient, 'query', wrappedHandler);
100
160
  globalForPrisma[REGISTERED_KEY] = true;
101
161
  }
102
162
  }
103
163
  // ==================== 便捷方法, 入参事务客户端不存在或者不传, 就返回全局非事务客户端 ====================
104
164
  function checkAndFallbackWithNonTCClient(tx) {
105
- return tx !== null && tx !== void 0 ? tx : prisma;
165
+ return tx !== null && tx !== void 0 ? tx : getBackendCorePrisma();
106
166
  }
107
167
 
108
168
  exports.checkAndFallbackWithNonTCClient = checkAndFallbackWithNonTCClient;
169
+ exports.configureBackendCorePrisma = configureBackendCorePrisma;
170
+ exports.createPrismaClient = createPrismaClient;
171
+ exports.getBackendCorePrisma = getBackendCorePrisma;
109
172
  exports.prisma = prisma;
@@ -1,18 +1,19 @@
1
- import { PrismaClient } from '@prisma/client';
1
+ import { PrismaPg } from '@prisma/adapter-pg';
2
+ import { PrismaClient } from '../core-prisma/client.mjs';
2
3
 
3
- var _a;
4
4
  const globalForPrisma = globalThis;
5
5
  // ==================== 日志配置 ====================
6
6
  const getLogConfig = () => {
7
+ if (process.env.PRISMA_DEBUG === 'true') {
8
+ return [
9
+ { emit: 'event', level: 'query' },
10
+ { emit: 'stdout', level: 'info' },
11
+ { emit: 'stdout', level: 'warn' },
12
+ { emit: 'stdout', level: 'error' },
13
+ ];
14
+ }
7
15
  const env = process.env.NODE_ENV || 'development';
8
16
  switch (env) {
9
- case 'development':
10
- return [
11
- { emit: 'event', level: 'query' },
12
- { emit: 'stdout', level: 'info' },
13
- { emit: 'stdout', level: 'warn' },
14
- { emit: 'stdout', level: 'error' },
15
- ];
16
17
  case 'test':
17
18
  return [
18
19
  { emit: 'stdout', level: 'warn' },
@@ -23,22 +24,80 @@ const getLogConfig = () => {
23
24
  }
24
25
  };
25
26
  const logConfig = getLogConfig();
26
- // ==================== 创建 Prisma 全局单例 ====================
27
- const prisma = (_a = globalForPrisma.prisma) !== null && _a !== void 0 ? _a : new PrismaClient({
28
- log: logConfig,
29
- });
30
- if (process.env.NODE_ENV !== 'production') {
31
- globalForPrisma.prisma = prisma;
27
+ function isPrismaDebugEnabled() {
28
+ return process.env.PRISMA_DEBUG === 'true';
29
+ }
30
+ function createPrismaInstanceId(prefix = 'core-prisma') {
31
+ return `${prefix}_${Date.now()}_${Math.random().toString(36).slice(2, 7)}`;
32
+ }
33
+ function createPrismaPgConfig(databaseUrl) {
34
+ const ca = process.env.SUPABASE_DB_CA_CERT;
35
+ if (!ca && !globalForPrisma.__prisma_ssl_warning_logged) {
36
+ console.warn('SUPABASE_DB_CA_CERT is not configured. Prisma will request TLS without certificate verification unless DATABASE_URL SSL parameters override this behavior. Configure SUPABASE_DB_CA_CERT for certificate verification.');
37
+ globalForPrisma.__prisma_ssl_warning_logged = true;
38
+ }
39
+ return {
40
+ connectionString: databaseUrl,
41
+ ssl: ca
42
+ ? {
43
+ ca,
44
+ rejectUnauthorized: true,
45
+ }
46
+ : {
47
+ rejectUnauthorized: false,
48
+ },
49
+ };
50
+ }
51
+ function createPrismaClient(databaseUrl = process.env.DATABASE_URL) {
52
+ if (!databaseUrl) {
53
+ throw new Error('DATABASE_URL is required to create PrismaClient');
54
+ }
55
+ const adapter = new PrismaPg(createPrismaPgConfig(databaseUrl));
56
+ const instanceId = createPrismaInstanceId();
57
+ if (isPrismaDebugEnabled()) {
58
+ console.log(`Prisma Client Created | ID: ${instanceId}`);
59
+ }
60
+ const client = new PrismaClient({
61
+ adapter,
62
+ log: logConfig,
63
+ });
64
+ return configureBackendCorePrisma(client, instanceId);
65
+ }
66
+ function configureBackendCorePrisma(prismaClient, instanceId) {
67
+ var _a;
68
+ if (instanceId === void 0) { instanceId = (_a = globalForPrisma.__prisma_instance_id) !== null && _a !== void 0 ? _a : createPrismaInstanceId(); }
69
+ globalForPrisma.prisma = prismaClient;
70
+ globalForPrisma.__prisma_instance_id = instanceId;
71
+ registerDevelopmentQueryLogger(prismaClient, instanceId);
72
+ return prismaClient;
32
73
  }
33
- if (process.env.NODE_ENV === 'development') {
74
+ function getBackendCorePrisma() {
75
+ if (!globalForPrisma.prisma) {
76
+ configureBackendCorePrisma(createPrismaClient());
77
+ }
78
+ return globalForPrisma.prisma;
79
+ }
80
+ // Backward-compatible lazy export. Accessing a property creates the client,
81
+ // importing this module does not.
82
+ const prisma = new Proxy({}, {
83
+ get(_target, property, receiver) {
84
+ return Reflect.get(getBackendCorePrisma(), property, receiver);
85
+ },
86
+ });
87
+ function registerDevelopmentQueryLogger(prismaClient, instanceId) {
88
+ var _a;
89
+ if (!isPrismaDebugEnabled()) {
90
+ return;
91
+ }
34
92
  const REGISTERED_KEY = '__prisma_query_logger_registered';
35
93
  const ID_KEY = '__prisma_query_logger_id';
36
94
  if (globalForPrisma[REGISTERED_KEY]) {
37
- console.log(`Prisma Query Logger Already Registered | ID: ${globalForPrisma[ID_KEY]}`);
95
+ console.log(`Prisma Query Logger Already Registered | Listener ID: ${globalForPrisma[ID_KEY]} | Instance ID: ${globalForPrisma.__prisma_instance_id}`);
38
96
  }
39
97
  else {
40
98
  const listenerId = `listener_${Date.now()}_${Math.random().toString(36).substr(2, 5)}`;
41
99
  globalForPrisma[ID_KEY] = listenerId;
100
+ console.log(`Prisma Query Logger Registered | Listener ID: ${listenerId} | Instance ID: ${instanceId}`);
42
101
  // --- 自定义SQL拼接 ---
43
102
  const interpolate = (query, params) => {
44
103
  // 1. 【核心修改】:安全检查和参数解析
@@ -82,7 +141,7 @@ if (process.env.NODE_ENV === 'development') {
82
141
  return sql;
83
142
  };
84
143
  const wrappedHandler = (event) => {
85
- const ms = event.duration;
144
+ const ms = Math.round(event.duration);
86
145
  const slow = ms >= 200 ? '🐌 SLOW SQL ' : '🚀 SQL';
87
146
  const interpolatedSql = interpolate(event.query, event.params);
88
147
  const clean = interpolatedSql
@@ -90,17 +149,18 @@ if (process.env.NODE_ENV === 'development') {
90
149
  .replace(/= '([^']+)'/g, `= '$1'`) // 已经替换成单引号,此处可以优化
91
150
  .replace(/"/g, ''); // 彻底灭双引号
92
151
  console.log('─'.repeat(60));
152
+ console.log(`Prisma Instance ID: ${instanceId} | Listener ID: ${listenerId}`);
93
153
  console.log(`${clean};`);
94
154
  console.log(`⏰ 耗时: ${ms}ms, ${slow}`);
95
155
  };
96
156
  // 注册包装后的 handler
97
- prisma.$on('query', wrappedHandler);
157
+ (_a = prismaClient.$on) === null || _a === void 0 ? void 0 : _a.call(prismaClient, 'query', wrappedHandler);
98
158
  globalForPrisma[REGISTERED_KEY] = true;
99
159
  }
100
160
  }
101
161
  // ==================== 便捷方法, 入参事务客户端不存在或者不传, 就返回全局非事务客户端 ====================
102
162
  function checkAndFallbackWithNonTCClient(tx) {
103
- return tx !== null && tx !== void 0 ? tx : prisma;
163
+ return tx !== null && tx !== void 0 ? tx : getBackendCorePrisma();
104
164
  }
105
165
 
106
- export { checkAndFallbackWithNonTCClient, prisma };
166
+ export { checkAndFallbackWithNonTCClient, configureBackendCorePrisma, createPrismaClient, getBackendCorePrisma, prisma };
@@ -1,5 +1,5 @@
1
- import type { Credit, Subscription, User } from '@/db/prisma-model-type';
2
- import { Prisma } from '@/db/prisma-model-type';
1
+ import type { Credit, Subscription, User } from '@core/db/prisma-model-type';
2
+ import { Prisma } from '@core/db/prisma-model-type';
3
3
  type AnonymousInitContext = {
4
4
  user: User;
5
5
  credit: Credit | null;
@@ -1 +1 @@
1
- {"version":3,"file":"anonymous.aggregate.service.d.ts","sourceRoot":"","sources":["../../../src/services/aggregate/anonymous.aggregate.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAIzE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAIhD,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,cAAM,yBAAyB;YACf,mBAAmB;YAYnB,oCAAoC;YAyBpC,mBAAmB;IAsC3B,0BAA0B,CAC9B,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;KAAE,GAC/C,OAAO,CAAC,oBAAoB,CAAC;CAYjC;AAED,eAAO,MAAM,yBAAyB,2BAAkC,CAAC"}
1
+ {"version":3,"file":"anonymous.aggregate.service.d.ts","sourceRoot":"","sources":["../../../src/services/aggregate/anonymous.aggregate.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAI7E,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAIpD,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,cAAM,yBAAyB;YACf,mBAAmB;YAYnB,oCAAoC;YAyBpC,mBAAmB;IAsC3B,0BAA0B,CAC9B,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;KAAE,GAC/C,OAAO,CAAC,oBAAoB,CAAC;CAYjC;AAED,eAAO,MAAM,yBAAyB,2BAAkC,CAAC"}
@@ -4,11 +4,12 @@ var tslib = require('tslib');
4
4
  var user_service = require('../database/user.service.js');
5
5
  var subscription_service = require('../database/subscription.service.js');
6
6
  var credit_service = require('../database/credit.service.js');
7
- var client = require('@prisma/client');
7
+ require('../../core-prisma/client.js');
8
8
  var constants = require('../database/constants.js');
9
9
  require('../../prisma/prisma.js');
10
10
  var prismaTransactionUtil = require('../../prisma/prisma-transaction-util.js');
11
11
  var creditInit = require('../../lib/credit-init.js');
12
+ var prismaNamespace = require('../../core-prisma/internal/prismaNamespace.js');
12
13
 
13
14
  const ANONYMOUS_INIT_LOCK_NAMESPACE = 92831;
14
15
  class AnonymousAggregateService {
@@ -16,7 +17,7 @@ class AnonymousAggregateService {
16
17
  return tslib.__awaiter(this, void 0, void 0, function* () {
17
18
  yield tx.$executeRaw `
18
19
  SELECT pg_advisory_xact_lock(
19
- ${client.Prisma.raw(String(ANONYMOUS_INIT_LOCK_NAMESPACE))},
20
+ ${prismaNamespace.raw(String(ANONYMOUS_INIT_LOCK_NAMESPACE))},
20
21
  hashtext(${fingerprintId})
21
22
  )
22
23
  `;
@@ -2,11 +2,12 @@ import { __awaiter } from 'tslib';
2
2
  import { userService } from '../database/user.service.mjs';
3
3
  import { subscriptionService } from '../database/subscription.service.mjs';
4
4
  import { creditService } from '../database/credit.service.mjs';
5
- import { Prisma } from '@prisma/client';
5
+ import '../../core-prisma/client.mjs';
6
6
  import { UserStatus, OperationType, CreditType } from '../database/constants.mjs';
7
7
  import '../../prisma/prisma.mjs';
8
8
  import { runInTransaction } from '../../prisma/prisma-transaction-util.mjs';
9
9
  import { freeAmount } from '../../lib/credit-init.mjs';
10
+ import { raw } from '../../core-prisma/internal/prismaNamespace.mjs';
10
11
 
11
12
  const ANONYMOUS_INIT_LOCK_NAMESPACE = 92831;
12
13
  class AnonymousAggregateService {
@@ -14,7 +15,7 @@ class AnonymousAggregateService {
14
15
  return __awaiter(this, void 0, void 0, function* () {
15
16
  yield tx.$executeRaw `
16
17
  SELECT pg_advisory_xact_lock(
17
- ${Prisma.raw(String(ANONYMOUS_INIT_LOCK_NAMESPACE))},
18
+ ${raw(String(ANONYMOUS_INIT_LOCK_NAMESPACE))},
18
19
  hashtext(${fingerprintId})
19
20
  )
20
21
  `;
@@ -1,5 +1,5 @@
1
- import { PaymentStatus } from '@/db/index';
2
- import type { Subscription, Transaction } from '@/db/prisma-model-type';
1
+ import { PaymentStatus } from '@core/db/index';
2
+ import type { Subscription, Transaction } from '@core/db/prisma-model-type';
3
3
  type NullableString = string | null | undefined;
4
4
  type BasicOrderContext = {
5
5
  userId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"billing.aggregate.service.d.ts","sourceRoot":"","sources":["../../../src/services/aggregate/billing.aggregate.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billing.aggregate.service.d.ts","sourceRoot":"","sources":["../../../src/services/aggregate/billing.aggregate.service.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,10 @@ var tslib = require('tslib');
4
4
  var constants = require('../database/constants.js');
5
5
  require('../../prisma/prisma.js');
6
6
  var prismaTransactionUtil = require('../../prisma/prisma-transaction-util.js');
7
+ require('../../core-prisma/client.js');
7
8
  var subscription_service = require('../database/subscription.service.js');
8
9
  var credit_service = require('../database/credit.service.js');
9
10
  var transaction_service = require('../database/transaction.service.js');
10
- require('@prisma/client');
11
11
 
12
12
  class BillingAggregateService {
13
13
  recordSubscriptionInitPayment(context) {
@@ -2,10 +2,10 @@ import { __awaiter } from 'tslib';
2
2
  import { SubscriptionStatus, PaymentStatus, OrderStatus, TransactionType, PaySupplier, OperationType, CreditType } from '../database/constants.mjs';
3
3
  import '../../prisma/prisma.mjs';
4
4
  import { runInTransaction } from '../../prisma/prisma-transaction-util.mjs';
5
+ import '../../core-prisma/client.mjs';
5
6
  import { subscriptionService } from '../database/subscription.service.mjs';
6
7
  import { creditService } from '../database/credit.service.mjs';
7
8
  import { transactionService } from '../database/transaction.service.mjs';
8
- import '@prisma/client';
9
9
 
10
10
  class BillingAggregateService {
11
11
  recordSubscriptionInitPayment(context) {
@@ -1,4 +1,4 @@
1
- import type { Credit, Prisma, User } from '@/db/prisma-model-type';
1
+ import type { Credit, Prisma, User } from '@core/db/prisma-model-type';
2
2
  export declare class UserAggregateService {
3
3
  initAnonymousUser(fingerprintId: string, options?: {
4
4
  sourceRef?: Prisma.InputJsonValue;
@@ -1 +1 @@
1
- {"version":3,"file":"user.aggregate.service.d.ts","sourceRoot":"","sources":["../../../src/services/aggregate/user.aggregate.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAKnE,qBAAa,oBAAoB;IAEzB,iBAAiB,CACrB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;KAAE,GAC/C,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;KAAE,CAAC;IA6B9C;;;;;;;;;;;;OAYG;IACG,uBAAuB,CAC3B,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,CAAC,cAAc,GAChC,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;KAAE,CAAC;IA+BxC,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,UAAU,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;KAAE,CAAC;IA+B3C,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YAwBzD,qBAAqB;CAcpC;AAED,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
1
+ {"version":3,"file":"user.aggregate.service.d.ts","sourceRoot":"","sources":["../../../src/services/aggregate/user.aggregate.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAKvE,qBAAa,oBAAoB;IAEzB,iBAAiB,CACrB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;KAAE,GAC/C,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;KAAE,CAAC;IA6B9C;;;;;;;;;;;;OAYG;IACG,uBAAuB,CAC3B,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,CAAC,cAAc,GAChC,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;KAAE,CAAC;IAgCxC,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,UAAU,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;KAAE,CAAC;IA+B3C,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YAwBzD,qBAAqB;CAcpC;AAED,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
@@ -5,7 +5,7 @@ var constants = require('../database/constants.js');
5
5
  var user_service = require('../database/user.service.js');
6
6
  var subscription_service = require('../database/subscription.service.js');
7
7
  var credit_service = require('../database/credit.service.js');
8
- require('@prisma/client');
8
+ require('../../core-prisma/client.js');
9
9
  require('../../prisma/prisma.js');
10
10
  var prismaTransactionUtil = require('../../prisma/prisma-transaction-util.js');
11
11
  var creditInit = require('../../lib/credit-init.js');
@@ -63,7 +63,7 @@ class UserAggregateService {
63
63
  operationType: constants.OperationType.SYS_GIFT,
64
64
  operationReferId: newUser.userId,
65
65
  creditsChange: creditInit.freeRegisterAmount,
66
- });
66
+ }, tx);
67
67
  yield subscription_service.subscriptionService.initializeSubscription(newUser.userId, tx);
68
68
  return { newUser, credit };
69
69
  }));
@@ -104,7 +104,7 @@ class UserAggregateService {
104
104
  }
105
105
  const userId = user.userId;
106
106
  // 更改用户状态,保留user信息尤其是FingerprintId,防止反复注册薅羊毛
107
- yield user_service.userService.unregister(user.userId);
107
+ yield user_service.userService.unregister(user.userId, tx);
108
108
  // 清空积分
109
109
  yield credit_service.creditService.purgeCredit(userId, 'soft_delete_user', userId, tx);
110
110
  const subscription = yield subscription_service.subscriptionService.getActiveSubscription(userId, tx);
@@ -3,7 +3,7 @@ import { UserStatus, OperationType, CreditType } from '../database/constants.mjs
3
3
  import { userService } from '../database/user.service.mjs';
4
4
  import { subscriptionService } from '../database/subscription.service.mjs';
5
5
  import { creditService } from '../database/credit.service.mjs';
6
- import '@prisma/client';
6
+ import '../../core-prisma/client.mjs';
7
7
  import '../../prisma/prisma.mjs';
8
8
  import { runInTransaction } from '../../prisma/prisma-transaction-util.mjs';
9
9
  import { freeAmount, freeRegisterAmount } from '../../lib/credit-init.mjs';
@@ -61,7 +61,7 @@ class UserAggregateService {
61
61
  operationType: OperationType.SYS_GIFT,
62
62
  operationReferId: newUser.userId,
63
63
  creditsChange: freeRegisterAmount,
64
- });
64
+ }, tx);
65
65
  yield subscriptionService.initializeSubscription(newUser.userId, tx);
66
66
  return { newUser, credit };
67
67
  }));
@@ -102,7 +102,7 @@ class UserAggregateService {
102
102
  }
103
103
  const userId = user.userId;
104
104
  // 更改用户状态,保留user信息尤其是FingerprintId,防止反复注册薅羊毛
105
- yield userService.unregister(user.userId);
105
+ yield userService.unregister(user.userId, tx);
106
106
  // 清空积分
107
107
  yield creditService.purgeCredit(userId, 'soft_delete_user', userId, tx);
108
108
  const subscription = yield subscriptionService.getActiveSubscription(userId, tx);
@@ -11,4 +11,5 @@ exports.fetchUserContextByClerkUserId = userContextService.fetchUserContextByCle
11
11
  exports.mapCreditToXCredit = userContextService.mapCreditToXCredit;
12
12
  exports.mapSubscriptionToXSubscription = userContextService.mapSubscriptionToXSubscription;
13
13
  exports.mapUserToXUser = userContextService.mapUserToXUser;
14
+ exports.applyMoneyPriceMockUserDelay = userContextFinalizer.applyMoneyPriceMockUserDelay;
14
15
  exports.finalizeUserContext = userContextFinalizer.finalizeUserContext;
@@ -1,2 +1,2 @@
1
1
  export { buildInitUserContextFromEntities, fetchLatestUserContextByFingerprintId, fetchUserContextByClerkUserId, mapCreditToXCredit, mapSubscriptionToXSubscription, mapUserToXUser } from './user-context-service.mjs';
2
- export { finalizeUserContext } from './user-context-finalizer.mjs';
2
+ export { applyMoneyPriceMockUserDelay, finalizeUserContext } from './user-context-finalizer.mjs';
@@ -3,6 +3,7 @@ type FinalizableUserContext = {
3
3
  xUser: XUser | null;
4
4
  xSubscription: XSubscription | null;
5
5
  };
6
+ export declare function applyMoneyPriceMockUserDelay(): Promise<void>;
6
7
  /**
7
8
  * Output finalizer for user-context payloads.
8
9
  * Real data assembly should stay in user-context-service; any optional test-only
@@ -1 +1 @@
1
- {"version":3,"file":"user-context-finalizer.d.ts","sourceRoot":"","sources":["../../../src/services/context/user-context-finalizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAEjF,KAAK,sBAAsB,GAAG;IAC5B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,sBAAsB,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAsEnF"}
1
+ {"version":3,"file":"user-context-finalizer.d.ts","sourceRoot":"","sources":["../../../src/services/context/user-context-finalizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAEjF,KAAK,sBAAsB,GAAG;IAC5B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;CACrC,CAAC;AAIF,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAYlE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,sBAAsB,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAsEnF"}
@@ -1,7 +1,23 @@
1
1
  'use strict';
2
2
 
3
+ var tslib = require('tslib');
3
4
  var utils = require('@windrun-huaiin/lib/utils');
4
5
 
6
+ const MAX_MONEY_PRICE_MOCK_DELAY_MS = 10000;
7
+ function applyMoneyPriceMockUserDelay() {
8
+ return tslib.__awaiter(this, void 0, void 0, function* () {
9
+ var _a;
10
+ if (process.env.MONEY_PRICE_MOCK_USER_ENABLED !== 'true') {
11
+ return;
12
+ }
13
+ const delaySeconds = Number((_a = process.env.MONEY_PRICE_MOCK_USER_DELAY_SECONDS) !== null && _a !== void 0 ? _a : 0);
14
+ if (!Number.isFinite(delaySeconds) || delaySeconds <= 0) {
15
+ return;
16
+ }
17
+ const delayMs = Math.min(Math.floor(delaySeconds * 1000), MAX_MONEY_PRICE_MOCK_DELAY_MS);
18
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
19
+ });
20
+ }
5
21
  /**
6
22
  * Output finalizer for user-context payloads.
7
23
  * Real data assembly should stay in user-context-service; any optional test-only
@@ -71,4 +87,5 @@ function finalizeUserContext(context) {
71
87
  return context;
72
88
  }
73
89
 
90
+ exports.applyMoneyPriceMockUserDelay = applyMoneyPriceMockUserDelay;
74
91
  exports.finalizeUserContext = finalizeUserContext;
@@ -1,5 +1,21 @@
1
+ import { __awaiter } from 'tslib';
1
2
  import { viewLocalTime } from '@windrun-huaiin/lib/utils';
2
3
 
4
+ const MAX_MONEY_PRICE_MOCK_DELAY_MS = 10000;
5
+ function applyMoneyPriceMockUserDelay() {
6
+ return __awaiter(this, void 0, void 0, function* () {
7
+ var _a;
8
+ if (process.env.MONEY_PRICE_MOCK_USER_ENABLED !== 'true') {
9
+ return;
10
+ }
11
+ const delaySeconds = Number((_a = process.env.MONEY_PRICE_MOCK_USER_DELAY_SECONDS) !== null && _a !== void 0 ? _a : 0);
12
+ if (!Number.isFinite(delaySeconds) || delaySeconds <= 0) {
13
+ return;
14
+ }
15
+ const delayMs = Math.min(Math.floor(delaySeconds * 1000), MAX_MONEY_PRICE_MOCK_DELAY_MS);
16
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
17
+ });
18
+ }
3
19
  /**
4
20
  * Output finalizer for user-context payloads.
5
21
  * Real data assembly should stay in user-context-service; any optional test-only
@@ -69,4 +85,4 @@ function finalizeUserContext(context) {
69
85
  return context;
70
86
  }
71
87
 
72
- export { finalizeUserContext };
88
+ export { applyMoneyPriceMockUserDelay, finalizeUserContext };
@@ -4,7 +4,7 @@ var tslib = require('tslib');
4
4
  var user_service = require('../database/user.service.js');
5
5
  var subscription_service = require('../database/subscription.service.js');
6
6
  var credit_service = require('../database/credit.service.js');
7
- require('@prisma/client');
7
+ require('../../core-prisma/client.js');
8
8
  require('../../prisma/prisma.js');
9
9
  var utils = require('@windrun-huaiin/lib/utils');
10
10
 
@@ -2,7 +2,7 @@ import { __awaiter } from 'tslib';
2
2
  import { userService } from '../database/user.service.mjs';
3
3
  import { subscriptionService } from '../database/subscription.service.mjs';
4
4
  import { creditService } from '../database/credit.service.mjs';
5
- import '@prisma/client';
5
+ import '../../core-prisma/client.mjs';
6
6
  import '../../prisma/prisma.mjs';
7
7
  import { viewLocalTime } from '@windrun-huaiin/lib/utils';
8
8
 
@@ -1,5 +1,5 @@
1
- import type { Prisma } from '@/db/prisma-model-type';
2
- import type { Apilog } from '@/db/prisma-model-type';
1
+ import type { Prisma } from '@core/db/prisma-model-type';
2
+ import type { Apilog } from '@core/db/prisma-model-type';
3
3
  export type ApiType = 'from_clerk_in' | 'to_clerk_out' | 'from_stripe_in' | 'to_stripe_out';
4
4
  export interface CreateApiLogData {
5
5
  methodName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"apilog.service.d.ts","sourceRoot":"","sources":["../../../src/services/database/apilog.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGrD,MAAM,MAAM,OAAO,GAAG,eAAe,GAAG,cAAc,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAE5F,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,aAAa;IAGlB,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAcpF,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWhG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ/E,aAAa,CAAC,MAAM,EAAE;QAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiB9C,gBAAgB,CAAC,OAAO,GAAE,MAAW,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBtF,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC;QAC3D,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CAkBH;AAGD,qBAAa,SAAS;WACP,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WAS9D,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;WAchE,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WASlG,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WAS1F,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WASnG,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASxG,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI;CAKjE;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
1
+ {"version":3,"file":"apilog.service.d.ts","sourceRoot":"","sources":["../../../src/services/database/apilog.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGzD,MAAM,MAAM,OAAO,GAAG,eAAe,GAAG,cAAc,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAE5F,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,aAAa;IAGlB,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAcpF,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWhG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ/E,aAAa,CAAC,MAAM,EAAE;QAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiB9C,gBAAgB,CAAC,OAAO,GAAE,MAAW,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBtF,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC;QAC3D,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CAkBH;AAGD,qBAAa,SAAS;WACP,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WAS9D,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;WAchE,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WASlG,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WAS1F,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WASnG,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASxG,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI;CAKjE;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
@@ -2,6 +2,7 @@
2
2
 
3
3
  var tslib = require('tslib');
4
4
  var prisma = require('../../prisma/prisma.js');
5
+ require('../../core-prisma/client.js');
5
6
 
6
7
  /* eslint-disable @typescript-eslint/no-explicit-any */
7
8
  class ApilogService {
@@ -1,5 +1,6 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import { checkAndFallbackWithNonTCClient } from '../../prisma/prisma.mjs';
3
+ import '../../core-prisma/client.mjs';
3
4
 
4
5
  /* eslint-disable @typescript-eslint/no-explicit-any */
5
6
  class ApilogService {