sa2kit 1.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 (218) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +298 -0
  3. package/dist/AliyunOSSProvider-7JLMJDXK.js +15 -0
  4. package/dist/AliyunOSSProvider-7JLMJDXK.js.map +1 -0
  5. package/dist/AliyunOSSProvider-GQMSDJGZ.mjs +6 -0
  6. package/dist/AliyunOSSProvider-GQMSDJGZ.mjs.map +1 -0
  7. package/dist/LocalStorageProvider-FVLLHBHO.mjs +6 -0
  8. package/dist/LocalStorageProvider-FVLLHBHO.mjs.map +1 -0
  9. package/dist/LocalStorageProvider-NBNHHWLY.js +15 -0
  10. package/dist/LocalStorageProvider-NBNHHWLY.js.map +1 -0
  11. package/dist/analytics/index.d.mts +1084 -0
  12. package/dist/analytics/index.d.ts +1084 -0
  13. package/dist/analytics/index.js +2595 -0
  14. package/dist/analytics/index.js.map +1 -0
  15. package/dist/analytics/index.mjs +2518 -0
  16. package/dist/analytics/index.mjs.map +1 -0
  17. package/dist/analytics/server/index.d.mts +499 -0
  18. package/dist/analytics/server/index.d.ts +499 -0
  19. package/dist/analytics/server/index.js +529 -0
  20. package/dist/analytics/server/index.js.map +1 -0
  21. package/dist/analytics/server/index.mjs +525 -0
  22. package/dist/analytics/server/index.mjs.map +1 -0
  23. package/dist/auth/client/index.d.mts +104 -0
  24. package/dist/auth/client/index.d.ts +104 -0
  25. package/dist/auth/client/index.js +21 -0
  26. package/dist/auth/client/index.js.map +1 -0
  27. package/dist/auth/client/index.mjs +4 -0
  28. package/dist/auth/client/index.mjs.map +1 -0
  29. package/dist/auth/components/index.d.mts +82 -0
  30. package/dist/auth/components/index.d.ts +82 -0
  31. package/dist/auth/components/index.js +93 -0
  32. package/dist/auth/components/index.js.map +1 -0
  33. package/dist/auth/components/index.mjs +86 -0
  34. package/dist/auth/components/index.mjs.map +1 -0
  35. package/dist/auth/hooks/index.d.mts +2 -0
  36. package/dist/auth/hooks/index.d.ts +2 -0
  37. package/dist/auth/hooks/index.js +17 -0
  38. package/dist/auth/hooks/index.js.map +1 -0
  39. package/dist/auth/hooks/index.mjs +4 -0
  40. package/dist/auth/hooks/index.mjs.map +1 -0
  41. package/dist/auth/index.d.mts +15 -0
  42. package/dist/auth/index.d.ts +15 -0
  43. package/dist/auth/index.js +110 -0
  44. package/dist/auth/index.js.map +1 -0
  45. package/dist/auth/index.mjs +9 -0
  46. package/dist/auth/index.mjs.map +1 -0
  47. package/dist/auth/middleware/index.d.mts +75 -0
  48. package/dist/auth/middleware/index.d.ts +75 -0
  49. package/dist/auth/middleware/index.js +15 -0
  50. package/dist/auth/middleware/index.js.map +1 -0
  51. package/dist/auth/middleware/index.mjs +6 -0
  52. package/dist/auth/middleware/index.mjs.map +1 -0
  53. package/dist/auth/routes/index.d.mts +163 -0
  54. package/dist/auth/routes/index.d.ts +163 -0
  55. package/dist/auth/routes/index.js +27 -0
  56. package/dist/auth/routes/index.js.map +1 -0
  57. package/dist/auth/routes/index.mjs +6 -0
  58. package/dist/auth/routes/index.mjs.map +1 -0
  59. package/dist/auth/schema/index.d.mts +789 -0
  60. package/dist/auth/schema/index.d.ts +789 -0
  61. package/dist/auth/schema/index.js +41 -0
  62. package/dist/auth/schema/index.js.map +1 -0
  63. package/dist/auth/schema/index.mjs +4 -0
  64. package/dist/auth/schema/index.mjs.map +1 -0
  65. package/dist/auth/services/index.d.mts +47 -0
  66. package/dist/auth/services/index.d.ts +47 -0
  67. package/dist/auth/services/index.js +34 -0
  68. package/dist/auth/services/index.js.map +1 -0
  69. package/dist/auth/services/index.mjs +5 -0
  70. package/dist/auth/services/index.mjs.map +1 -0
  71. package/dist/chunk-3RFBUDRA.js +507 -0
  72. package/dist/chunk-3RFBUDRA.js.map +1 -0
  73. package/dist/chunk-3XG5OHFD.mjs +37 -0
  74. package/dist/chunk-3XG5OHFD.mjs.map +1 -0
  75. package/dist/chunk-6BL3AZGD.js +285 -0
  76. package/dist/chunk-6BL3AZGD.js.map +1 -0
  77. package/dist/chunk-6FNUWAIV.js +394 -0
  78. package/dist/chunk-6FNUWAIV.js.map +1 -0
  79. package/dist/chunk-6PRFP5EG.js +171 -0
  80. package/dist/chunk-6PRFP5EG.js.map +1 -0
  81. package/dist/chunk-6VHWOPRR.mjs +90 -0
  82. package/dist/chunk-6VHWOPRR.mjs.map +1 -0
  83. package/dist/chunk-AIKEVVDR.mjs +122 -0
  84. package/dist/chunk-AIKEVVDR.mjs.map +1 -0
  85. package/dist/chunk-APY57REU.js +300 -0
  86. package/dist/chunk-APY57REU.js.map +1 -0
  87. package/dist/chunk-BJTO5JO5.mjs +10 -0
  88. package/dist/chunk-BJTO5JO5.mjs.map +1 -0
  89. package/dist/chunk-C64RY2OW.mjs +295 -0
  90. package/dist/chunk-C64RY2OW.mjs.map +1 -0
  91. package/dist/chunk-DGUM43GV.js +12 -0
  92. package/dist/chunk-DGUM43GV.js.map +1 -0
  93. package/dist/chunk-FV3FNHQY.js +92 -0
  94. package/dist/chunk-FV3FNHQY.js.map +1 -0
  95. package/dist/chunk-GSTLV3MB.mjs +316 -0
  96. package/dist/chunk-GSTLV3MB.mjs.map +1 -0
  97. package/dist/chunk-HEMA7SWK.mjs +212 -0
  98. package/dist/chunk-HEMA7SWK.mjs.map +1 -0
  99. package/dist/chunk-HWJ34NL6.js +43 -0
  100. package/dist/chunk-HWJ34NL6.js.map +1 -0
  101. package/dist/chunk-HXFFYNIF.mjs +385 -0
  102. package/dist/chunk-HXFFYNIF.mjs.map +1 -0
  103. package/dist/chunk-KGRQNEIR.mjs +183 -0
  104. package/dist/chunk-KGRQNEIR.mjs.map +1 -0
  105. package/dist/chunk-KH6RQ4J5.js +28 -0
  106. package/dist/chunk-KH6RQ4J5.js.map +1 -0
  107. package/dist/chunk-KQGP6BTS.mjs +165 -0
  108. package/dist/chunk-KQGP6BTS.mjs.map +1 -0
  109. package/dist/chunk-NMF4ANIC.js +365 -0
  110. package/dist/chunk-NMF4ANIC.js.map +1 -0
  111. package/dist/chunk-O26VCNS3.js +216 -0
  112. package/dist/chunk-O26VCNS3.js.map +1 -0
  113. package/dist/chunk-OLHGZXN3.mjs +86 -0
  114. package/dist/chunk-OLHGZXN3.mjs.map +1 -0
  115. package/dist/chunk-QU5OT4DF.js +88 -0
  116. package/dist/chunk-QU5OT4DF.js.map +1 -0
  117. package/dist/chunk-RCNNVNLT.mjs +356 -0
  118. package/dist/chunk-RCNNVNLT.mjs.map +1 -0
  119. package/dist/chunk-ROEYW4A7.js +186 -0
  120. package/dist/chunk-ROEYW4A7.js.map +1 -0
  121. package/dist/chunk-SVWQN2LR.js +131 -0
  122. package/dist/chunk-SVWQN2LR.js.map +1 -0
  123. package/dist/chunk-TKCYPDWU.js +338 -0
  124. package/dist/chunk-TKCYPDWU.js.map +1 -0
  125. package/dist/chunk-U2L6V7KD.mjs +273 -0
  126. package/dist/chunk-U2L6V7KD.mjs.map +1 -0
  127. package/dist/chunk-YVBU7QDJ.mjs +505 -0
  128. package/dist/chunk-YVBU7QDJ.mjs.map +1 -0
  129. package/dist/chunk-ZGVB35L2.mjs +25 -0
  130. package/dist/chunk-ZGVB35L2.mjs.map +1 -0
  131. package/dist/config/index.d.mts +64 -0
  132. package/dist/config/index.d.ts +64 -0
  133. package/dist/config/index.js +136 -0
  134. package/dist/config/index.js.map +1 -0
  135. package/dist/config/index.mjs +128 -0
  136. package/dist/config/index.mjs.map +1 -0
  137. package/dist/drizzle-auth-service-Bxlovhv8.d.ts +145 -0
  138. package/dist/drizzle-auth-service-DZY2F1sv.d.mts +145 -0
  139. package/dist/enums-Dume-V5Y.d.mts +16 -0
  140. package/dist/enums-Dume-V5Y.d.ts +16 -0
  141. package/dist/i18n/index.d.mts +416 -0
  142. package/dist/i18n/index.d.ts +416 -0
  143. package/dist/i18n/index.js +671 -0
  144. package/dist/i18n/index.js.map +1 -0
  145. package/dist/i18n/index.mjs +650 -0
  146. package/dist/i18n/index.mjs.map +1 -0
  147. package/dist/index-8VoHap_4.d.mts +105 -0
  148. package/dist/index-8VoHap_4.d.ts +105 -0
  149. package/dist/index.d.mts +4 -0
  150. package/dist/index.d.ts +4 -0
  151. package/dist/index.js +84 -0
  152. package/dist/index.js.map +1 -0
  153. package/dist/index.mjs +7 -0
  154. package/dist/index.mjs.map +1 -0
  155. package/dist/logger/index.d.mts +125 -0
  156. package/dist/logger/index.d.ts +125 -0
  157. package/dist/logger/index.js +29 -0
  158. package/dist/logger/index.js.map +1 -0
  159. package/dist/logger/index.mjs +4 -0
  160. package/dist/logger/index.mjs.map +1 -0
  161. package/dist/request/index.d.mts +51 -0
  162. package/dist/request/index.d.ts +51 -0
  163. package/dist/request/index.js +85 -0
  164. package/dist/request/index.js.map +1 -0
  165. package/dist/request/index.mjs +82 -0
  166. package/dist/request/index.mjs.map +1 -0
  167. package/dist/storage/index.d.mts +74 -0
  168. package/dist/storage/index.d.ts +74 -0
  169. package/dist/storage/index.js +46 -0
  170. package/dist/storage/index.js.map +1 -0
  171. package/dist/storage/index.mjs +5 -0
  172. package/dist/storage/index.mjs.map +1 -0
  173. package/dist/types-BINlP9MK.d.mts +286 -0
  174. package/dist/types-BINlP9MK.d.ts +286 -0
  175. package/dist/types-BaZccpvk.d.mts +48 -0
  176. package/dist/types-BaZccpvk.d.ts +48 -0
  177. package/dist/types-CbTsi9CZ.d.mts +31 -0
  178. package/dist/types-CbTsi9CZ.d.ts +31 -0
  179. package/dist/types-CoGG1rNV.d.mts +258 -0
  180. package/dist/types-CoGG1rNV.d.ts +258 -0
  181. package/dist/types-DAxQ1MeY.d.ts +70 -0
  182. package/dist/types-DT8LVCvE.d.mts +70 -0
  183. package/dist/types-DW9qar-w.d.mts +52 -0
  184. package/dist/types-DW9qar-w.d.ts +52 -0
  185. package/dist/universalExport/index.d.mts +235 -0
  186. package/dist/universalExport/index.d.ts +235 -0
  187. package/dist/universalExport/index.js +621 -0
  188. package/dist/universalExport/index.js.map +1 -0
  189. package/dist/universalExport/index.mjs +580 -0
  190. package/dist/universalExport/index.mjs.map +1 -0
  191. package/dist/universalExport/server/index.d.mts +429 -0
  192. package/dist/universalExport/server/index.d.ts +429 -0
  193. package/dist/universalExport/server/index.js +263 -0
  194. package/dist/universalExport/server/index.js.map +1 -0
  195. package/dist/universalExport/server/index.mjs +242 -0
  196. package/dist/universalExport/server/index.mjs.map +1 -0
  197. package/dist/universalFile/index.d.mts +310 -0
  198. package/dist/universalFile/index.d.ts +310 -0
  199. package/dist/universalFile/index.js +811 -0
  200. package/dist/universalFile/index.js.map +1 -0
  201. package/dist/universalFile/index.mjs +736 -0
  202. package/dist/universalFile/index.mjs.map +1 -0
  203. package/dist/universalFile/server/index.d.mts +2428 -0
  204. package/dist/universalFile/server/index.d.ts +2428 -0
  205. package/dist/universalFile/server/index.js +4578 -0
  206. package/dist/universalFile/server/index.js.map +1 -0
  207. package/dist/universalFile/server/index.mjs +4518 -0
  208. package/dist/universalFile/server/index.mjs.map +1 -0
  209. package/dist/useElectronStorage-Dj0rcorG.d.mts +65 -0
  210. package/dist/useElectronStorage-DwnNfIhl.d.ts +65 -0
  211. package/dist/utils/index.d.mts +188 -0
  212. package/dist/utils/index.d.ts +188 -0
  213. package/dist/utils/index.js +42 -0
  214. package/dist/utils/index.js.map +1 -0
  215. package/dist/utils/index.mjs +5 -0
  216. package/dist/utils/index.mjs.map +1 -0
  217. package/package.json +220 -0
  218. package/tailwind.animations.js +34 -0
@@ -0,0 +1,499 @@
1
+ import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
2
+
3
+ /**
4
+ * 埋点系统数据库 Schema
5
+ * Analytics Database Schema
6
+ *
7
+ * 使用方式:
8
+ * 在 backend/drizzle/migrations/schema.ts 中导入并导出:
9
+ * export { analyticsEvents } from '@lyricnote/shared/analytics/server/schema'
10
+ */
11
+ /**
12
+ * 埋点事件表
13
+ */
14
+ declare const analyticsEvents: drizzle_orm_pg_core.PgTableWithColumns<{
15
+ name: "analytics_events";
16
+ schema: undefined;
17
+ columns: {
18
+ id: drizzle_orm_pg_core.PgColumn<{
19
+ name: "id";
20
+ tableName: "analytics_events";
21
+ dataType: "string";
22
+ columnType: "PgText";
23
+ data: string;
24
+ driverParam: string;
25
+ notNull: true;
26
+ hasDefault: false;
27
+ isPrimaryKey: true;
28
+ isAutoincrement: false;
29
+ hasRuntimeDefault: false;
30
+ enumValues: [string, ...string[]];
31
+ baseColumn: never;
32
+ identity: undefined;
33
+ generated: undefined;
34
+ }, {}, {}>;
35
+ eventType: drizzle_orm_pg_core.PgColumn<{
36
+ name: "event_type";
37
+ tableName: "analytics_events";
38
+ dataType: "string";
39
+ columnType: "PgText";
40
+ data: string;
41
+ driverParam: string;
42
+ notNull: true;
43
+ hasDefault: false;
44
+ isPrimaryKey: false;
45
+ isAutoincrement: false;
46
+ hasRuntimeDefault: false;
47
+ enumValues: [string, ...string[]];
48
+ baseColumn: never;
49
+ identity: undefined;
50
+ generated: undefined;
51
+ }, {}, {}>;
52
+ eventName: drizzle_orm_pg_core.PgColumn<{
53
+ name: "event_name";
54
+ tableName: "analytics_events";
55
+ dataType: "string";
56
+ columnType: "PgText";
57
+ data: string;
58
+ driverParam: string;
59
+ notNull: true;
60
+ hasDefault: false;
61
+ isPrimaryKey: false;
62
+ isAutoincrement: false;
63
+ hasRuntimeDefault: false;
64
+ enumValues: [string, ...string[]];
65
+ baseColumn: never;
66
+ identity: undefined;
67
+ generated: undefined;
68
+ }, {}, {}>;
69
+ timestamp: drizzle_orm_pg_core.PgColumn<{
70
+ name: "timestamp";
71
+ tableName: "analytics_events";
72
+ dataType: "string";
73
+ columnType: "PgTimestampString";
74
+ data: string;
75
+ driverParam: string;
76
+ notNull: true;
77
+ hasDefault: false;
78
+ isPrimaryKey: false;
79
+ isAutoincrement: false;
80
+ hasRuntimeDefault: false;
81
+ enumValues: undefined;
82
+ baseColumn: never;
83
+ identity: undefined;
84
+ generated: undefined;
85
+ }, {}, {}>;
86
+ priority: drizzle_orm_pg_core.PgColumn<{
87
+ name: "priority";
88
+ tableName: "analytics_events";
89
+ dataType: "number";
90
+ columnType: "PgInteger";
91
+ data: number;
92
+ driverParam: string | number;
93
+ notNull: true;
94
+ hasDefault: false;
95
+ isPrimaryKey: false;
96
+ isAutoincrement: false;
97
+ hasRuntimeDefault: false;
98
+ enumValues: undefined;
99
+ baseColumn: never;
100
+ identity: undefined;
101
+ generated: undefined;
102
+ }, {}, {}>;
103
+ userId: drizzle_orm_pg_core.PgColumn<{
104
+ name: "user_id";
105
+ tableName: "analytics_events";
106
+ dataType: "string";
107
+ columnType: "PgText";
108
+ data: string;
109
+ driverParam: string;
110
+ notNull: false;
111
+ hasDefault: false;
112
+ isPrimaryKey: false;
113
+ isAutoincrement: false;
114
+ hasRuntimeDefault: false;
115
+ enumValues: [string, ...string[]];
116
+ baseColumn: never;
117
+ identity: undefined;
118
+ generated: undefined;
119
+ }, {}, {}>;
120
+ sessionId: drizzle_orm_pg_core.PgColumn<{
121
+ name: "session_id";
122
+ tableName: "analytics_events";
123
+ dataType: "string";
124
+ columnType: "PgText";
125
+ data: string;
126
+ driverParam: string;
127
+ notNull: true;
128
+ hasDefault: false;
129
+ isPrimaryKey: false;
130
+ isAutoincrement: false;
131
+ hasRuntimeDefault: false;
132
+ enumValues: [string, ...string[]];
133
+ baseColumn: never;
134
+ identity: undefined;
135
+ generated: undefined;
136
+ }, {}, {}>;
137
+ deviceId: drizzle_orm_pg_core.PgColumn<{
138
+ name: "device_id";
139
+ tableName: "analytics_events";
140
+ dataType: "string";
141
+ columnType: "PgText";
142
+ data: string;
143
+ driverParam: string;
144
+ notNull: true;
145
+ hasDefault: false;
146
+ isPrimaryKey: false;
147
+ isAutoincrement: false;
148
+ hasRuntimeDefault: false;
149
+ enumValues: [string, ...string[]];
150
+ baseColumn: never;
151
+ identity: undefined;
152
+ generated: undefined;
153
+ }, {}, {}>;
154
+ pageUrl: drizzle_orm_pg_core.PgColumn<{
155
+ name: "page_url";
156
+ tableName: "analytics_events";
157
+ dataType: "string";
158
+ columnType: "PgText";
159
+ data: string;
160
+ driverParam: string;
161
+ notNull: false;
162
+ hasDefault: false;
163
+ isPrimaryKey: false;
164
+ isAutoincrement: false;
165
+ hasRuntimeDefault: false;
166
+ enumValues: [string, ...string[]];
167
+ baseColumn: never;
168
+ identity: undefined;
169
+ generated: undefined;
170
+ }, {}, {}>;
171
+ pageTitle: drizzle_orm_pg_core.PgColumn<{
172
+ name: "page_title";
173
+ tableName: "analytics_events";
174
+ dataType: "string";
175
+ columnType: "PgText";
176
+ data: string;
177
+ driverParam: string;
178
+ notNull: false;
179
+ hasDefault: false;
180
+ isPrimaryKey: false;
181
+ isAutoincrement: false;
182
+ hasRuntimeDefault: false;
183
+ enumValues: [string, ...string[]];
184
+ baseColumn: never;
185
+ identity: undefined;
186
+ generated: undefined;
187
+ }, {}, {}>;
188
+ referrer: drizzle_orm_pg_core.PgColumn<{
189
+ name: "referrer";
190
+ tableName: "analytics_events";
191
+ dataType: "string";
192
+ columnType: "PgText";
193
+ data: string;
194
+ driverParam: string;
195
+ notNull: false;
196
+ hasDefault: false;
197
+ isPrimaryKey: false;
198
+ isAutoincrement: false;
199
+ hasRuntimeDefault: false;
200
+ enumValues: [string, ...string[]];
201
+ baseColumn: never;
202
+ identity: undefined;
203
+ generated: undefined;
204
+ }, {}, {}>;
205
+ properties: drizzle_orm_pg_core.PgColumn<{
206
+ name: "properties";
207
+ tableName: "analytics_events";
208
+ dataType: "json";
209
+ columnType: "PgJsonb";
210
+ data: unknown;
211
+ driverParam: unknown;
212
+ notNull: false;
213
+ hasDefault: false;
214
+ isPrimaryKey: false;
215
+ isAutoincrement: false;
216
+ hasRuntimeDefault: false;
217
+ enumValues: undefined;
218
+ baseColumn: never;
219
+ identity: undefined;
220
+ generated: undefined;
221
+ }, {}, {}>;
222
+ platform: drizzle_orm_pg_core.PgColumn<{
223
+ name: "platform";
224
+ tableName: "analytics_events";
225
+ dataType: "string";
226
+ columnType: "PgText";
227
+ data: string;
228
+ driverParam: string;
229
+ notNull: true;
230
+ hasDefault: false;
231
+ isPrimaryKey: false;
232
+ isAutoincrement: false;
233
+ hasRuntimeDefault: false;
234
+ enumValues: [string, ...string[]];
235
+ baseColumn: never;
236
+ identity: undefined;
237
+ generated: undefined;
238
+ }, {}, {}>;
239
+ appVersion: drizzle_orm_pg_core.PgColumn<{
240
+ name: "app_version";
241
+ tableName: "analytics_events";
242
+ dataType: "string";
243
+ columnType: "PgText";
244
+ data: string;
245
+ driverParam: string;
246
+ notNull: true;
247
+ hasDefault: false;
248
+ isPrimaryKey: false;
249
+ isAutoincrement: false;
250
+ hasRuntimeDefault: false;
251
+ enumValues: [string, ...string[]];
252
+ baseColumn: never;
253
+ identity: undefined;
254
+ generated: undefined;
255
+ }, {}, {}>;
256
+ sdkVersion: drizzle_orm_pg_core.PgColumn<{
257
+ name: "sdk_version";
258
+ tableName: "analytics_events";
259
+ dataType: "string";
260
+ columnType: "PgText";
261
+ data: string;
262
+ driverParam: string;
263
+ notNull: true;
264
+ hasDefault: false;
265
+ isPrimaryKey: false;
266
+ isAutoincrement: false;
267
+ hasRuntimeDefault: false;
268
+ enumValues: [string, ...string[]];
269
+ baseColumn: never;
270
+ identity: undefined;
271
+ generated: undefined;
272
+ }, {}, {}>;
273
+ createdAt: drizzle_orm_pg_core.PgColumn<{
274
+ name: "createdAt";
275
+ tableName: "analytics_events";
276
+ dataType: "string";
277
+ columnType: "PgTimestampString";
278
+ data: string;
279
+ driverParam: string;
280
+ notNull: true;
281
+ hasDefault: true;
282
+ isPrimaryKey: false;
283
+ isAutoincrement: false;
284
+ hasRuntimeDefault: false;
285
+ enumValues: undefined;
286
+ baseColumn: never;
287
+ identity: undefined;
288
+ generated: undefined;
289
+ }, {}, {}>;
290
+ };
291
+ dialect: "pg";
292
+ }>;
293
+
294
+ /**
295
+ * 服务端类型定义
296
+ * Server-side Types
297
+ */
298
+ interface AnalyticsEvent {
299
+ id: string;
300
+ eventType: string;
301
+ eventName: string;
302
+ timestamp: string;
303
+ priority: number;
304
+ userId?: string | null;
305
+ sessionId: string;
306
+ deviceId: string;
307
+ pageUrl?: string | null;
308
+ pageTitle?: string | null;
309
+ referrer?: string | null;
310
+ properties?: any;
311
+ platform: string;
312
+ appVersion: string;
313
+ sdkVersion: string;
314
+ }
315
+ interface AnalyticsQueryParams {
316
+ startDate?: string;
317
+ endDate?: string;
318
+ eventType?: string;
319
+ eventTypes?: string[];
320
+ userId?: string;
321
+ platform?: string;
322
+ platforms?: string[];
323
+ sessionId?: string;
324
+ limit?: number;
325
+ offset?: number;
326
+ orderBy?: 'timestamp' | 'eventType' | 'platform';
327
+ orderDirection?: 'asc' | 'desc';
328
+ }
329
+ interface AnalyticsStats {
330
+ totalEvents: number;
331
+ uniqueUsers: number;
332
+ uniqueSessions: number;
333
+ uniqueDevices: number;
334
+ eventsByType: {
335
+ eventType: string;
336
+ count: number;
337
+ }[];
338
+ eventsByPlatform: {
339
+ platform: string;
340
+ count: number;
341
+ }[];
342
+ topPages: {
343
+ pageUrl: string;
344
+ count: number;
345
+ }[];
346
+ }
347
+ interface UserBehavior {
348
+ userId: string;
349
+ eventCount: number;
350
+ lastActive: string;
351
+ platforms: string[];
352
+ topEvents: {
353
+ eventType: string;
354
+ count: number;
355
+ }[];
356
+ }
357
+ interface SessionAnalytics {
358
+ sessionId: string;
359
+ userId?: string;
360
+ deviceId: string;
361
+ platform: string;
362
+ startTime: string;
363
+ endTime: string;
364
+ duration: number;
365
+ eventCount: number;
366
+ events: AnalyticsEvent[];
367
+ }
368
+ interface DatabaseInstance {
369
+ select: (...args: any[]) => any;
370
+ insert: (...args: any[]) => any;
371
+ delete: (...args: any[]) => any;
372
+ }
373
+
374
+ /**
375
+ * 埋点分析服务
376
+ * Analytics Service
377
+ *
378
+ * 使用方式:
379
+ * import { createAnalyticsService } from '@lyricnote/shared/analytics/server'
380
+ * const service = createAnalyticsService(db, analyticsEvents, logger)
381
+ */
382
+
383
+ interface Logger {
384
+ info: (message: string, data?: any) => void;
385
+ error: (message: string, error: Error) => void;
386
+ }
387
+ /**
388
+ * 创建埋点服务实例
389
+ * @param db - Drizzle 数据库实例
390
+ * @param analyticsEventsTable - analytics_events 表定义
391
+ * @param logger - 日志实例(可选)
392
+ */
393
+ declare function createAnalyticsService(db: DatabaseInstance, analyticsEventsTable: any, logger?: Logger): {
394
+ /**
395
+ * 批量插入埋点事件
396
+ */
397
+ insertAnalyticsEvents(events: AnalyticsEvent[]): Promise<void>;
398
+ /**
399
+ * 查询埋点事件
400
+ */
401
+ queryAnalyticsEvents(params: AnalyticsQueryParams): Promise<{
402
+ events: AnalyticsEvent[];
403
+ total: number;
404
+ }>;
405
+ /**
406
+ * 获取统计数据
407
+ */
408
+ getAnalyticsStats(startDate?: string, endDate?: string, platform?: string): Promise<AnalyticsStats>;
409
+ /**
410
+ * 获取用户行为分析
411
+ */
412
+ getUserBehavior(userId: string, startDate?: string, endDate?: string): Promise<UserBehavior | null>;
413
+ /**
414
+ * 获取会话分析
415
+ */
416
+ getSessionAnalytics(sessionId: string): Promise<SessionAnalytics | null>;
417
+ /**
418
+ * 获取漏斗分析
419
+ */
420
+ getFunnelAnalysis(steps: string[], startDate?: string, endDate?: string): Promise<{
421
+ step: string;
422
+ count: number;
423
+ conversionRate: number;
424
+ }[]>;
425
+ /**
426
+ * 删除旧数据(数据清理)
427
+ */
428
+ cleanOldAnalyticsEvents(daysToKeep?: number): Promise<number>;
429
+ };
430
+
431
+ /**
432
+ * 埋点 API 路由处理器
433
+ * Analytics API Route Handlers
434
+ *
435
+ * 使用方式(Next.js):
436
+ * import { createAnalyticsHandlers } from '@lyricnote/shared/analytics/server'
437
+ * const handlers = createAnalyticsHandlers(analyticsService)
438
+ * export const POST = handlers.handleEventsPost
439
+ */
440
+
441
+ interface AnalyticsService {
442
+ insertAnalyticsEvents: (events: AnalyticsEvent[]) => Promise<void>;
443
+ queryAnalyticsEvents: (params: AnalyticsQueryParams) => Promise<{
444
+ events: AnalyticsEvent[];
445
+ total: number;
446
+ }>;
447
+ getAnalyticsStats: (startDate?: string, endDate?: string, platform?: string) => Promise<any>;
448
+ getUserBehavior: (userId: string, startDate?: string, endDate?: string) => Promise<any>;
449
+ getSessionAnalytics: (sessionId: string) => Promise<any>;
450
+ getFunnelAnalysis: (steps: string[], startDate?: string, endDate?: string) => Promise<any>;
451
+ }
452
+ interface Request {
453
+ json: () => Promise<any>;
454
+ url?: string;
455
+ nextUrl?: {
456
+ searchParams: URLSearchParams;
457
+ };
458
+ }
459
+ /**
460
+ * 创建埋点 API 处理器
461
+ */
462
+ declare function createAnalyticsHandlers(service: AnalyticsService, ResponseClass?: any): {
463
+ /**
464
+ * POST /api/analytics/events
465
+ * 处理事件上报
466
+ */
467
+ handleEventsPost(request: Request): Promise<any>;
468
+ /**
469
+ * GET /api/analytics/query
470
+ * 查询埋点事件
471
+ */
472
+ handleQueryGet(request: Request): Promise<any>;
473
+ /**
474
+ * GET /api/analytics/stats
475
+ * 获取统计数据
476
+ */
477
+ handleStatsGet(request: Request): Promise<any>;
478
+ /**
479
+ * GET /api/analytics/user/[userId]
480
+ * 获取用户行为分析
481
+ */
482
+ handleUserBehaviorGet(request: Request, params: {
483
+ userId: string;
484
+ }): Promise<any>;
485
+ /**
486
+ * GET /api/analytics/session/[sessionId]
487
+ * 获取会话分析
488
+ */
489
+ handleSessionAnalyticsGet(_request: Request, params: {
490
+ sessionId: string;
491
+ }): Promise<any>;
492
+ /**
493
+ * POST /api/analytics/funnel
494
+ * 漏斗分析
495
+ */
496
+ handleFunnelPost(request: Request): Promise<any>;
497
+ };
498
+
499
+ export { type AnalyticsEvent, type AnalyticsQueryParams, type AnalyticsStats, type DatabaseInstance, type SessionAnalytics, type UserBehavior, analyticsEvents, createAnalyticsHandlers, createAnalyticsService };