@m5kdev/backend 0.1.0 → 0.1.2

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 (294) hide show
  1. package/.cursor/rules/backend.mdc +70 -0
  2. package/.turbo/turbo-build.log +5 -0
  3. package/.turbo/turbo-check-types.log +5 -0
  4. package/.turbo/turbo-lint$colon$fix.log +255 -0
  5. package/CHANGELOG.md +19 -0
  6. package/dist/src/lib/posthog.d.ts +3 -0
  7. package/dist/src/lib/posthog.d.ts.map +1 -0
  8. package/dist/src/lib/posthog.js +7 -0
  9. package/dist/src/lib/sentry.d.ts +2 -0
  10. package/dist/src/lib/sentry.d.ts.map +1 -0
  11. package/dist/src/lib/sentry.js +9 -0
  12. package/dist/src/modules/access/access.repository.d.ts +2348 -0
  13. package/dist/src/modules/access/access.repository.d.ts.map +1 -0
  14. package/dist/src/modules/access/access.repository.js +32 -0
  15. package/dist/src/modules/access/access.service.d.ts +22 -0
  16. package/dist/src/modules/access/access.service.d.ts.map +1 -0
  17. package/dist/src/modules/access/access.service.js +51 -0
  18. package/dist/src/modules/access/access.test.d.ts +2 -0
  19. package/dist/src/modules/access/access.test.d.ts.map +1 -0
  20. package/dist/src/modules/access/access.test.js +182 -0
  21. package/dist/src/modules/access/access.utils.d.ts +17 -0
  22. package/dist/src/modules/access/access.utils.d.ts.map +1 -0
  23. package/dist/src/modules/access/access.utils.js +20 -0
  24. package/dist/src/modules/ai/ai.db.d.ts +396 -0
  25. package/dist/src/modules/ai/ai.db.d.ts.map +1 -0
  26. package/dist/src/modules/ai/ai.db.js +39 -0
  27. package/dist/src/modules/ai/ai.prompt.d.ts +28 -0
  28. package/dist/src/modules/ai/ai.prompt.d.ts.map +1 -0
  29. package/dist/src/modules/ai/ai.prompt.js +30 -0
  30. package/dist/src/modules/ai/ai.repository.d.ts +424 -0
  31. package/dist/src/modules/ai/ai.repository.d.ts.map +1 -0
  32. package/dist/src/modules/ai/ai.repository.js +26 -0
  33. package/dist/src/modules/ai/ai.router.d.ts +2 -0
  34. package/dist/src/modules/ai/ai.router.d.ts.map +1 -0
  35. package/dist/src/modules/ai/ai.router.js +132 -0
  36. package/dist/src/modules/ai/ai.service.d.ts +115 -0
  37. package/dist/src/modules/ai/ai.service.d.ts.map +1 -0
  38. package/dist/src/modules/ai/ai.service.js +207 -0
  39. package/dist/src/modules/ai/ai.trpc.d.ts +59 -0
  40. package/dist/src/modules/ai/ai.trpc.d.ts.map +1 -0
  41. package/dist/src/modules/ai/ai.trpc.js +20 -0
  42. package/dist/src/modules/ai/ideogram/ideogram.constants.d.ts +8 -0
  43. package/dist/src/modules/ai/ideogram/ideogram.constants.d.ts.map +1 -0
  44. package/dist/src/modules/ai/ideogram/ideogram.constants.js +167 -0
  45. package/dist/src/modules/ai/ideogram/ideogram.dto.d.ts +230 -0
  46. package/dist/src/modules/ai/ideogram/ideogram.dto.d.ts.map +1 -0
  47. package/dist/src/modules/ai/ideogram/ideogram.dto.js +49 -0
  48. package/dist/src/modules/ai/ideogram/ideogram.prompt.d.ts +3 -0
  49. package/dist/src/modules/ai/ideogram/ideogram.prompt.d.ts.map +1 -0
  50. package/dist/src/modules/ai/ideogram/ideogram.prompt.js +860 -0
  51. package/dist/src/modules/ai/ideogram/ideogram.repository.d.ts +7 -0
  52. package/dist/src/modules/ai/ideogram/ideogram.repository.d.ts.map +1 -0
  53. package/dist/src/modules/ai/ideogram/ideogram.repository.js +46 -0
  54. package/dist/src/modules/ai/ideogram/ideogram.service.d.ts +10 -0
  55. package/dist/src/modules/ai/ideogram/ideogram.service.d.ts.map +1 -0
  56. package/dist/src/modules/ai/ideogram/ideogram.service.js +11 -0
  57. package/dist/src/modules/auth/auth.db.d.ts +2336 -0
  58. package/dist/src/modules/auth/auth.db.d.ts.map +1 -0
  59. package/dist/src/modules/auth/auth.db.js +215 -0
  60. package/dist/src/modules/auth/auth.dto.d.ts +66 -0
  61. package/dist/src/modules/auth/auth.dto.d.ts.map +1 -0
  62. package/dist/src/modules/auth/auth.dto.js +38 -0
  63. package/dist/src/modules/auth/auth.lib.d.ts +4874 -0
  64. package/dist/src/modules/auth/auth.lib.d.ts.map +1 -0
  65. package/dist/src/modules/auth/auth.lib.js +284 -0
  66. package/dist/src/modules/auth/auth.middleware.d.ts +615 -0
  67. package/dist/src/modules/auth/auth.middleware.d.ts.map +1 -0
  68. package/dist/src/modules/auth/auth.middleware.js +52 -0
  69. package/dist/src/modules/auth/auth.repository.d.ts +2417 -0
  70. package/dist/src/modules/auth/auth.repository.d.ts.map +1 -0
  71. package/dist/src/modules/auth/auth.repository.js +541 -0
  72. package/dist/src/modules/auth/auth.service.d.ts +104 -0
  73. package/dist/src/modules/auth/auth.service.d.ts.map +1 -0
  74. package/dist/src/modules/auth/auth.service.js +201 -0
  75. package/dist/src/modules/auth/auth.trpc.d.ts +309 -0
  76. package/dist/src/modules/auth/auth.trpc.d.ts.map +1 -0
  77. package/dist/src/modules/auth/auth.trpc.js +157 -0
  78. package/dist/src/modules/auth/auth.utils.d.ts +2352 -0
  79. package/dist/src/modules/auth/auth.utils.d.ts.map +1 -0
  80. package/dist/src/modules/auth/auth.utils.js +97 -0
  81. package/dist/src/modules/base/base.abstract.d.ts +19 -0
  82. package/dist/src/modules/base/base.abstract.d.ts.map +1 -0
  83. package/dist/src/modules/base/base.abstract.js +53 -0
  84. package/dist/src/modules/base/base.dto.d.ts +70 -0
  85. package/dist/src/modules/base/base.dto.d.ts.map +1 -0
  86. package/dist/src/modules/base/base.dto.js +112 -0
  87. package/dist/src/modules/base/base.grants.d.ts +29 -0
  88. package/dist/src/modules/base/base.grants.d.ts.map +1 -0
  89. package/dist/src/modules/base/base.grants.js +123 -0
  90. package/dist/src/modules/base/base.grants.test.d.ts +2 -0
  91. package/dist/src/modules/base/base.grants.test.d.ts.map +1 -0
  92. package/dist/src/modules/base/base.grants.test.js +668 -0
  93. package/dist/src/modules/base/base.repository.d.ts +97 -0
  94. package/dist/src/modules/base/base.repository.d.ts.map +1 -0
  95. package/dist/src/modules/base/base.repository.js +307 -0
  96. package/dist/src/modules/base/base.service.d.ts +42 -0
  97. package/dist/src/modules/base/base.service.d.ts.map +1 -0
  98. package/dist/src/modules/base/base.service.js +109 -0
  99. package/dist/src/modules/base/base.types.d.ts +2 -0
  100. package/dist/src/modules/base/base.types.d.ts.map +1 -0
  101. package/dist/src/modules/base/base.types.js +2 -0
  102. package/dist/src/modules/billing/billing.db.d.ts +366 -0
  103. package/dist/src/modules/billing/billing.db.d.ts.map +1 -0
  104. package/dist/src/modules/billing/billing.db.js +29 -0
  105. package/dist/src/modules/billing/billing.repository.d.ts +2764 -0
  106. package/dist/src/modules/billing/billing.repository.d.ts.map +1 -0
  107. package/dist/src/modules/billing/billing.repository.js +235 -0
  108. package/dist/src/modules/billing/billing.router.d.ts +5 -0
  109. package/dist/src/modules/billing/billing.router.d.ts.map +1 -0
  110. package/dist/src/modules/billing/billing.router.js +56 -0
  111. package/dist/src/modules/billing/billing.service.d.ts +60 -0
  112. package/dist/src/modules/billing/billing.service.d.ts.map +1 -0
  113. package/dist/src/modules/billing/billing.service.js +147 -0
  114. package/dist/src/modules/billing/billing.trpc.d.ts +75 -0
  115. package/dist/src/modules/billing/billing.trpc.d.ts.map +1 -0
  116. package/dist/src/modules/billing/billing.trpc.js +17 -0
  117. package/dist/src/modules/clay/clay.repository.d.ts +6 -0
  118. package/dist/src/modules/clay/clay.repository.d.ts.map +1 -0
  119. package/dist/src/modules/clay/clay.repository.js +26 -0
  120. package/dist/src/modules/clay/clay.service.d.ts +29 -0
  121. package/dist/src/modules/clay/clay.service.d.ts.map +1 -0
  122. package/dist/src/modules/clay/clay.service.js +24 -0
  123. package/dist/src/modules/connect/connect.db.d.ts +357 -0
  124. package/dist/src/modules/connect/connect.db.d.ts.map +1 -0
  125. package/dist/src/modules/connect/connect.db.js +30 -0
  126. package/dist/src/modules/connect/connect.dto.d.ts +75 -0
  127. package/dist/src/modules/connect/connect.dto.d.ts.map +1 -0
  128. package/dist/src/modules/connect/connect.dto.js +36 -0
  129. package/dist/src/modules/connect/connect.linkedin.d.ts +3 -0
  130. package/dist/src/modules/connect/connect.linkedin.d.ts.map +1 -0
  131. package/dist/src/modules/connect/connect.linkedin.js +53 -0
  132. package/dist/src/modules/connect/connect.oauth.d.ts +28 -0
  133. package/dist/src/modules/connect/connect.oauth.d.ts.map +1 -0
  134. package/dist/src/modules/connect/connect.oauth.js +198 -0
  135. package/dist/src/modules/connect/connect.repository.d.ts +414 -0
  136. package/dist/src/modules/connect/connect.repository.d.ts.map +1 -0
  137. package/dist/src/modules/connect/connect.repository.js +54 -0
  138. package/dist/src/modules/connect/connect.router.d.ts +5 -0
  139. package/dist/src/modules/connect/connect.router.d.ts.map +1 -0
  140. package/dist/src/modules/connect/connect.router.js +54 -0
  141. package/dist/src/modules/connect/connect.service.d.ts +89 -0
  142. package/dist/src/modules/connect/connect.service.d.ts.map +1 -0
  143. package/dist/src/modules/connect/connect.service.js +114 -0
  144. package/dist/src/modules/connect/connect.trpc.d.ts +81 -0
  145. package/dist/src/modules/connect/connect.trpc.d.ts.map +1 -0
  146. package/dist/src/modules/connect/connect.trpc.js +21 -0
  147. package/dist/src/modules/connect/connect.types.d.ts +26 -0
  148. package/dist/src/modules/connect/connect.types.d.ts.map +1 -0
  149. package/dist/src/modules/connect/connect.types.js +2 -0
  150. package/dist/src/modules/crypto/crypto.db.d.ts +152 -0
  151. package/dist/src/modules/crypto/crypto.db.d.ts.map +1 -0
  152. package/dist/src/modules/crypto/crypto.db.js +17 -0
  153. package/dist/src/modules/crypto/crypto.repository.d.ts +160 -0
  154. package/dist/src/modules/crypto/crypto.repository.d.ts.map +1 -0
  155. package/dist/src/modules/crypto/crypto.repository.js +10 -0
  156. package/dist/src/modules/crypto/crypto.service.d.ts +11 -0
  157. package/dist/src/modules/crypto/crypto.service.d.ts.map +1 -0
  158. package/dist/src/modules/crypto/crypto.service.js +52 -0
  159. package/dist/src/modules/email/email.service.d.ts +57 -0
  160. package/dist/src/modules/email/email.service.d.ts.map +1 -0
  161. package/dist/src/modules/email/email.service.js +107 -0
  162. package/dist/src/modules/file/file.repository.d.ts +13 -0
  163. package/dist/src/modules/file/file.repository.d.ts.map +1 -0
  164. package/dist/src/modules/file/file.repository.js +79 -0
  165. package/dist/src/modules/file/file.router.d.ts +4 -0
  166. package/dist/src/modules/file/file.router.d.ts.map +1 -0
  167. package/dist/src/modules/file/file.router.js +99 -0
  168. package/dist/src/modules/file/file.service.d.ts +25 -0
  169. package/dist/src/modules/file/file.service.d.ts.map +1 -0
  170. package/dist/src/modules/file/file.service.js +150 -0
  171. package/dist/src/modules/recurrence/recurrence.db.d.ts +563 -0
  172. package/dist/src/modules/recurrence/recurrence.db.d.ts.map +1 -0
  173. package/dist/src/modules/recurrence/recurrence.db.js +66 -0
  174. package/dist/src/modules/recurrence/recurrence.repository.d.ts +585 -0
  175. package/dist/src/modules/recurrence/recurrence.repository.d.ts.map +1 -0
  176. package/dist/src/modules/recurrence/recurrence.repository.js +39 -0
  177. package/dist/src/modules/recurrence/recurrence.service.d.ts +30 -0
  178. package/dist/src/modules/recurrence/recurrence.service.d.ts.map +1 -0
  179. package/dist/src/modules/recurrence/recurrence.service.js +70 -0
  180. package/dist/src/modules/recurrence/recurrence.trpc.d.ts +243 -0
  181. package/dist/src/modules/recurrence/recurrence.trpc.d.ts.map +1 -0
  182. package/dist/src/modules/recurrence/recurrence.trpc.js +65 -0
  183. package/dist/src/modules/social/social.dto.d.ts +35 -0
  184. package/dist/src/modules/social/social.dto.d.ts.map +1 -0
  185. package/dist/src/modules/social/social.dto.js +18 -0
  186. package/dist/src/modules/social/social.linkedin.d.ts +11 -0
  187. package/dist/src/modules/social/social.linkedin.d.ts.map +1 -0
  188. package/dist/src/modules/social/social.linkedin.js +427 -0
  189. package/dist/src/modules/social/social.linkedin.test.d.ts +2 -0
  190. package/dist/src/modules/social/social.linkedin.test.d.ts.map +1 -0
  191. package/dist/src/modules/social/social.linkedin.test.js +235 -0
  192. package/dist/src/modules/social/social.service.d.ts +29 -0
  193. package/dist/src/modules/social/social.service.d.ts.map +1 -0
  194. package/dist/src/modules/social/social.service.js +76 -0
  195. package/dist/src/modules/social/social.types.d.ts +36 -0
  196. package/dist/src/modules/social/social.types.d.ts.map +1 -0
  197. package/dist/src/modules/social/social.types.js +2 -0
  198. package/dist/src/modules/tag/tag.db.d.ts +347 -0
  199. package/dist/src/modules/tag/tag.db.d.ts.map +1 -0
  200. package/dist/src/modules/tag/tag.db.js +42 -0
  201. package/dist/src/modules/tag/tag.dto.d.ts +1019 -0
  202. package/dist/src/modules/tag/tag.dto.d.ts.map +1 -0
  203. package/dist/src/modules/tag/tag.dto.js +9 -0
  204. package/dist/src/modules/tag/tag.repository.d.ts +384 -0
  205. package/dist/src/modules/tag/tag.repository.d.ts.map +1 -0
  206. package/dist/src/modules/tag/tag.repository.js +154 -0
  207. package/dist/src/modules/tag/tag.service.d.ts +36 -0
  208. package/dist/src/modules/tag/tag.service.d.ts.map +1 -0
  209. package/dist/src/modules/tag/tag.service.js +31 -0
  210. package/dist/src/modules/tag/tag.trpc.d.ts +191 -0
  211. package/dist/src/modules/tag/tag.trpc.d.ts.map +1 -0
  212. package/dist/src/modules/tag/tag.trpc.js +47 -0
  213. package/dist/src/modules/utils/applyPagination.d.ts +7 -0
  214. package/dist/src/modules/utils/applyPagination.d.ts.map +1 -0
  215. package/dist/src/modules/utils/applyPagination.js +16 -0
  216. package/dist/src/modules/utils/applySorting.d.ts +9 -0
  217. package/dist/src/modules/utils/applySorting.d.ts.map +1 -0
  218. package/dist/src/modules/utils/applySorting.js +18 -0
  219. package/dist/src/modules/utils/getConditionsFromFilters.d.ts +5 -0
  220. package/dist/src/modules/utils/getConditionsFromFilters.d.ts.map +1 -0
  221. package/dist/src/modules/utils/getConditionsFromFilters.js +200 -0
  222. package/dist/src/modules/video/video.service.d.ts +8 -0
  223. package/dist/src/modules/video/video.service.d.ts.map +1 -0
  224. package/dist/src/modules/video/video.service.js +84 -0
  225. package/dist/src/modules/webhook/webhook.constants.d.ts +9 -0
  226. package/dist/src/modules/webhook/webhook.constants.d.ts.map +1 -0
  227. package/dist/src/modules/webhook/webhook.constants.js +10 -0
  228. package/dist/src/modules/webhook/webhook.db.d.ts +137 -0
  229. package/dist/src/modules/webhook/webhook.db.d.ts.map +1 -0
  230. package/dist/src/modules/webhook/webhook.db.js +17 -0
  231. package/dist/src/modules/webhook/webhook.dto.d.ts +395 -0
  232. package/dist/src/modules/webhook/webhook.dto.d.ts.map +1 -0
  233. package/dist/src/modules/webhook/webhook.dto.js +7 -0
  234. package/dist/src/modules/webhook/webhook.repository.d.ts +149 -0
  235. package/dist/src/modules/webhook/webhook.repository.d.ts.map +1 -0
  236. package/dist/src/modules/webhook/webhook.repository.js +56 -0
  237. package/dist/src/modules/webhook/webhook.router.d.ts +4 -0
  238. package/dist/src/modules/webhook/webhook.router.d.ts.map +1 -0
  239. package/dist/src/modules/webhook/webhook.router.js +30 -0
  240. package/dist/src/modules/webhook/webhook.service.d.ts +10 -0
  241. package/dist/src/modules/webhook/webhook.service.d.ts.map +1 -0
  242. package/dist/src/modules/webhook/webhook.service.js +68 -0
  243. package/dist/src/modules/workflow/workflow.db.d.ts +297 -0
  244. package/dist/src/modules/workflow/workflow.db.d.ts.map +1 -0
  245. package/dist/src/modules/workflow/workflow.db.js +30 -0
  246. package/dist/src/modules/workflow/workflow.repository.d.ts +344 -0
  247. package/dist/src/modules/workflow/workflow.repository.d.ts.map +1 -0
  248. package/dist/src/modules/workflow/workflow.repository.js +105 -0
  249. package/dist/src/modules/workflow/workflow.service.d.ts +22 -0
  250. package/dist/src/modules/workflow/workflow.service.d.ts.map +1 -0
  251. package/dist/src/modules/workflow/workflow.service.js +37 -0
  252. package/dist/src/modules/workflow/workflow.trpc.d.ts +93 -0
  253. package/dist/src/modules/workflow/workflow.trpc.d.ts.map +1 -0
  254. package/dist/src/modules/workflow/workflow.trpc.js +21 -0
  255. package/dist/src/modules/workflow/workflow.types.d.ts +21 -0
  256. package/dist/src/modules/workflow/workflow.types.d.ts.map +1 -0
  257. package/dist/src/modules/workflow/workflow.types.js +2 -0
  258. package/dist/src/modules/workflow/workflow.utils.d.ts +22 -0
  259. package/dist/src/modules/workflow/workflow.utils.d.ts.map +1 -0
  260. package/dist/src/modules/workflow/workflow.utils.js +173 -0
  261. package/dist/src/test/stubs/utils.d.ts +3 -0
  262. package/dist/src/test/stubs/utils.d.ts.map +1 -0
  263. package/dist/src/test/stubs/utils.js +5 -0
  264. package/dist/src/trpc/context.d.ts +42 -0
  265. package/dist/src/trpc/context.d.ts.map +1 -0
  266. package/dist/src/trpc/context.js +17 -0
  267. package/dist/src/trpc/index.d.ts +4 -0
  268. package/dist/src/trpc/index.d.ts.map +1 -0
  269. package/dist/src/trpc/index.js +6 -0
  270. package/dist/src/trpc/procedures.d.ts +234 -0
  271. package/dist/src/trpc/procedures.d.ts.map +1 -0
  272. package/dist/src/trpc/procedures.js +32 -0
  273. package/dist/src/trpc/utils.d.ts +5 -0
  274. package/dist/src/trpc/utils.d.ts.map +1 -0
  275. package/dist/src/trpc/utils.js +20 -0
  276. package/dist/src/types.d.ts +486 -0
  277. package/dist/src/types.d.ts.map +1 -0
  278. package/dist/src/types.js +13 -0
  279. package/dist/src/utils/errors.d.ts +50 -0
  280. package/dist/src/utils/errors.d.ts.map +1 -0
  281. package/dist/src/utils/errors.js +104 -0
  282. package/dist/src/utils/logger.d.ts +2 -0
  283. package/dist/src/utils/logger.d.ts.map +1 -0
  284. package/dist/src/utils/logger.js +11 -0
  285. package/dist/src/utils/posthog.d.ts +14 -0
  286. package/dist/src/utils/posthog.d.ts.map +1 -0
  287. package/dist/src/utils/posthog.js +31 -0
  288. package/dist/src/utils/types.d.ts +5 -0
  289. package/dist/src/utils/types.d.ts.map +1 -0
  290. package/dist/src/utils/types.js +2 -0
  291. package/dist/tsconfig.tsbuildinfo +1 -0
  292. package/jest.config.ts +19 -0
  293. package/package.json +3 -6
  294. package/tsconfig.json +21 -0
@@ -0,0 +1,22 @@
1
+ import type { WorkflowReadOutputSchema } from "@m5kdev/commons/modules/workflow/workflow.schema";
2
+ import { type JobsOptions, type Queue, Worker, type WorkerOptions } from "bullmq";
3
+ import type { ServerResultAsync } from "../base/base.dto";
4
+ import type { WorkflowService } from "./workflow.service";
5
+ import type { WorkflowDataType, WorkflowJob, WorkflowMeta } from "./workflow.types";
6
+ export declare function createWorkflowTrigger<Jobs extends Record<string, WorkflowJob<WorkflowDataType<any>, any, string>>>(service: WorkflowService, queues: Record<string, Queue>, defaultQueue: string): {
7
+ trigger: ({ name, payload, meta, options, }: {
8
+ name: string;
9
+ payload: Parameters<Jobs[keyof Jobs & string]["run"]>[0]["data"]["payload"];
10
+ meta?: WorkflowMeta;
11
+ options?: JobsOptions;
12
+ }) => ServerResultAsync<WorkflowReadOutputSchema>;
13
+ triggerMany: ({ name, payload, meta, options, }: {
14
+ name: string;
15
+ payload: Parameters<Jobs[keyof Jobs & string]["run"]>[0]["data"]["payload"][];
16
+ meta?: WorkflowMeta;
17
+ options?: JobsOptions;
18
+ }) => ServerResultAsync<WorkflowReadOutputSchema[]>;
19
+ };
20
+ export declare function createWorkflowWorker<Jobs extends Record<string, WorkflowJob<WorkflowDataType<any>, any, string>>>(service: WorkflowService, queueName: string, workerOptions: WorkerOptions, jobs: Jobs, errorHandler?: (error: unknown) => void): Worker<any, any, string>;
21
+ export declare function createWorkflowWorkers<Jobs extends Record<string, WorkflowJob<WorkflowDataType<any>, any, string>>>(service: WorkflowService, workerSettings: Record<string, WorkerOptions>, jobs: Jobs, errorHandler?: (error: unknown) => void): Record<string, Worker<any, any, string>>;
22
+ //# sourceMappingURL=workflow.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.utils.d.ts","sourceRoot":"","sources":["../../../../src/modules/workflow/workflow.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AACjG,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,KAAK,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAMlF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAuBpF,wBAAgB,qBAAqB,CACnC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,EAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,EAAE,MAAM;iDAM1E;QACD,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5E,IAAI,CAAC,EAAE,YAAY,CAAC;QACpB,OAAO,CAAC,EAAE,WAAW,CAAC;KACvB,KAAG,iBAAiB,CAAC,wBAAwB,CAAC;qDAwD5C;QACD,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9E,IAAI,CAAC,EAAE,YAAY,CAAC;QACpB,OAAO,CAAC,EAAE,WAAW,CAAC;KACvB,KAAG,iBAAiB,CAAC,wBAAwB,EAAE,CAAC;EAwDlD;AAED,wBAAgB,oBAAoB,CAClC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,EAE5E,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,IAAI,EACV,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,4BAkExC;AAED,wBAAgB,qBAAqB,CACnC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,EAE5E,OAAO,EAAE,eAAe,EACxB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC7C,IAAI,EAAE,IAAI,EACV,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,4CAaxC"}
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createWorkflowTrigger = createWorkflowTrigger;
4
+ exports.createWorkflowWorker = createWorkflowWorker;
5
+ exports.createWorkflowWorkers = createWorkflowWorkers;
6
+ const bullmq_1 = require("bullmq");
7
+ const neverthrow_1 = require("neverthrow");
8
+ const errors_1 = require("#utils/errors");
9
+ const logger_1 = require("#utils/logger");
10
+ const posthog_1 = require("#utils/posthog");
11
+ const errorOptions = {
12
+ layer: "workflow",
13
+ layerName: "WorkflowTrigger",
14
+ };
15
+ function shouldDisablePosthogFromPayload(payload) {
16
+ if (!payload || typeof payload !== "object")
17
+ return false;
18
+ const session = payload.ctx?.session;
19
+ return Boolean(session?.impersonatedBy);
20
+ }
21
+ function createWorkflowTrigger(service, queues, defaultQueue) {
22
+ const trigger = async ({ name, payload, meta, options, }) => {
23
+ const { queue: queueName, userId, tags, timeout = 60 * 60 * 1000 } = meta || {};
24
+ const disablePosthogCapture = meta?.disablePosthogCapture ?? shouldDisablePosthogFromPayload(payload);
25
+ const compiledQueueName = queueName || defaultQueue;
26
+ if (!compiledQueueName || !Object.keys(queues).includes(compiledQueueName)) {
27
+ return (0, neverthrow_1.err)(new errors_1.ServerError({ code: "NOT_FOUND", ...errorOptions }));
28
+ }
29
+ const queue = queues[compiledQueueName];
30
+ if (!queue) {
31
+ return (0, neverthrow_1.err)(new errors_1.ServerError({ code: "NOT_FOUND", ...errorOptions }));
32
+ }
33
+ try {
34
+ const job = await queue.add(name, {
35
+ payload,
36
+ meta: { ...meta, timeout, disablePosthogCapture },
37
+ }, {
38
+ removeOnComplete: {
39
+ age: 24 * 3600, // keep up to 24 hours
40
+ },
41
+ removeOnFail: {
42
+ age: 7 * 24 * 3600, // keep up to week
43
+ },
44
+ ...options,
45
+ });
46
+ if (!job || !job.id) {
47
+ return (0, neverthrow_1.err)(new errors_1.ServerError({ code: "INTERNAL_SERVER_ERROR", ...errorOptions }));
48
+ }
49
+ return await service.added({
50
+ userId,
51
+ jobId: job.id,
52
+ jobName: name,
53
+ input: payload,
54
+ timeout,
55
+ queueName: compiledQueueName,
56
+ tags,
57
+ });
58
+ }
59
+ catch (error) {
60
+ return (0, neverthrow_1.err)(new errors_1.ServerError({ code: "INTERNAL_SERVER_ERROR", ...errorOptions }));
61
+ }
62
+ };
63
+ const triggerMany = async ({ name, payload, meta, options, }) => {
64
+ const { queue: queueName, userId, tags, timeout = 60 * 60 * 1000 } = meta || {};
65
+ const compiledQueueName = queueName || defaultQueue;
66
+ if (!compiledQueueName || !Object.keys(queues).includes(compiledQueueName)) {
67
+ return (0, neverthrow_1.err)(new errors_1.ServerError({ code: "NOT_FOUND", ...errorOptions }));
68
+ }
69
+ const queue = queues[compiledQueueName];
70
+ if (!queue) {
71
+ return (0, neverthrow_1.err)(new errors_1.ServerError({ code: "NOT_FOUND", ...errorOptions }));
72
+ }
73
+ try {
74
+ const jobs = await queue.addBulk(payload.map((p) => {
75
+ const disablePosthogCapture = meta?.disablePosthogCapture ?? shouldDisablePosthogFromPayload(p);
76
+ return {
77
+ name,
78
+ data: { payload: p, meta: { ...meta, timeout, disablePosthogCapture } },
79
+ options: {
80
+ removeOnComplete: {
81
+ age: 24 * 3600, // keep up to 24 hours
82
+ },
83
+ removeOnFail: {
84
+ age: 7 * 24 * 3600, // keep up to week
85
+ },
86
+ ...options,
87
+ },
88
+ };
89
+ }));
90
+ if (!jobs || jobs.length === 0) {
91
+ return (0, neverthrow_1.err)(new errors_1.ServerError({ code: "INTERNAL_SERVER_ERROR", ...errorOptions }));
92
+ }
93
+ return await service.addedMany(jobs.map((j) => ({
94
+ userId,
95
+ jobId: j.id,
96
+ jobName: name,
97
+ input: j.data.payload,
98
+ timeout,
99
+ queueName: compiledQueueName,
100
+ tags,
101
+ })));
102
+ }
103
+ catch (error) {
104
+ return (0, neverthrow_1.err)(new errors_1.ServerError({ code: "INTERNAL_SERVER_ERROR", ...errorOptions }));
105
+ }
106
+ };
107
+ return { trigger, triggerMany };
108
+ }
109
+ function createWorkflowWorker(service, queueName, workerOptions, jobs, errorHandler) {
110
+ const logger = logger_1.logger.child({ layer: "worker" });
111
+ const worker = new bullmq_1.Worker(queueName, async (job) => {
112
+ const { meta } = job.data;
113
+ return await (0, posthog_1.runWithPosthogRequestState)({ disableCapture: Boolean(meta?.disablePosthogCapture) }, async () => {
114
+ const timer = meta?.timeout &&
115
+ setTimeout(() => {
116
+ const error = new Error("Job timed out");
117
+ errorHandler?.(error);
118
+ throw error;
119
+ }, job.data.meta.timeout);
120
+ const handler = jobs[job.name];
121
+ if (!handler) {
122
+ const error = new Error(`Unknown job: ${job.name}`);
123
+ errorHandler?.(error);
124
+ throw error;
125
+ }
126
+ try {
127
+ await service.started(job);
128
+ const result = await handler.run(job);
129
+ if (result.isErr()) {
130
+ await handler.onFailure?.(job, result.error);
131
+ const error = new Error(result.error.message);
132
+ errorHandler?.(error);
133
+ throw error;
134
+ }
135
+ await handler.onSuccess?.(job).catch((err) => {
136
+ const error = new Error(`Job ${job.id}:${job.name} failed to run onSuccess: ${err}`);
137
+ logger.error(error.message);
138
+ errorHandler?.(error);
139
+ });
140
+ return result.value ?? null;
141
+ }
142
+ catch (err) {
143
+ await handler.onFailure?.(job, err).catch((err) => {
144
+ const error = new Error(`Job ${job.id}:${job.name} failed to run onFailure: ${err}`);
145
+ logger.error(error.message);
146
+ errorHandler?.(error);
147
+ });
148
+ if (err instanceof Error && err.message === "Job timed out")
149
+ logger.error(`Job ${job.id}:${job.name} timed out`);
150
+ throw err;
151
+ }
152
+ finally {
153
+ await handler.onComplete?.(job).catch((err) => {
154
+ const error = new Error(`Job ${job.id}:${job.name} failed to run onComplete: ${err}`);
155
+ logger.error(error.message);
156
+ errorHandler?.(error);
157
+ });
158
+ if (timer)
159
+ clearTimeout(timer);
160
+ }
161
+ });
162
+ }, workerOptions);
163
+ worker.on("completed", service.completed.bind(service));
164
+ worker.on("failed", service.failed.bind(service));
165
+ return worker;
166
+ }
167
+ function createWorkflowWorkers(service, workerSettings, jobs, errorHandler) {
168
+ const workers = {};
169
+ for (const [queueName, workerOptions] of Object.entries(workerSettings)) {
170
+ workers[queueName] = createWorkflowWorker(service, queueName, workerOptions, jobs, errorHandler);
171
+ }
172
+ return workers;
173
+ }
@@ -0,0 +1,3 @@
1
+ export * from "../../utils/errors";
2
+ export * from "../../utils/logger";
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/test/stubs/utils.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("../../utils/errors"), exports);
5
+ tslib_1.__exportStar(require("../../utils/logger"), exports);
@@ -0,0 +1,42 @@
1
+ import type { CreateExpressContextOptions } from "@trpc/server/adapters/express";
2
+ import type { BetterAuth } from "#modules/auth/auth.lib";
3
+ export type Context = Awaited<ReturnType<typeof createAuthContext>>;
4
+ export declare function createAuthContext(auth: BetterAuth): ({ req }: CreateExpressContextOptions) => Promise<{
5
+ session: {
6
+ id: string;
7
+ userId: string;
8
+ updatedAt: Date;
9
+ createdAt: Date;
10
+ expiresAt: Date;
11
+ token: string;
12
+ ipAddress: string | null;
13
+ userAgent: string | null;
14
+ impersonatedBy: string | null;
15
+ activeOrganizationId: string | null;
16
+ activeOrganizationRole: string | null;
17
+ activeTeamId: string | null;
18
+ activeTeamRole: string | null;
19
+ };
20
+ user: {
21
+ name: string;
22
+ id: string;
23
+ updatedAt: Date;
24
+ email: string;
25
+ emailVerified: boolean;
26
+ image: string | null;
27
+ createdAt: Date;
28
+ role: string | null;
29
+ banned: boolean | null;
30
+ banReason: string | null;
31
+ banExpires: Date | null;
32
+ stripeCustomerId: string | null;
33
+ paymentCustomerId: string | null;
34
+ paymentPlanTier: string | null;
35
+ paymentPlanExpiresAt: Date | null;
36
+ preferences: string | null;
37
+ metadata: Record<string, unknown>;
38
+ onboarding: number | null;
39
+ flags: string | null;
40
+ };
41
+ }>;
42
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/trpc/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAEjF,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,wBAAwB,CAAC;AAExE,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAEpE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,IACZ,SAAS,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAazE"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAuthContext = createAuthContext;
4
+ const node_1 = require("better-auth/node");
5
+ function createAuthContext(auth) {
6
+ return async function createContext({ req }) {
7
+ const data = await auth.api.getSession({
8
+ headers: (0, node_1.fromNodeHeaders)(req.headers),
9
+ });
10
+ const user = data?.user || null;
11
+ const session = data?.session || null;
12
+ return {
13
+ session,
14
+ user,
15
+ };
16
+ };
17
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./context";
2
+ export * from "./procedures";
3
+ export * from "./utils";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/trpc/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./context"), exports);
5
+ tslib_1.__exportStar(require("./procedures"), exports);
6
+ tslib_1.__exportStar(require("./utils"), exports);
@@ -0,0 +1,234 @@
1
+ import type { OpenApiMeta } from "trpc-to-openapi";
2
+ export declare const publicProcedure: import("@trpc/server").TRPCProcedureBuilder<{
3
+ session: {
4
+ id: string;
5
+ userId: string;
6
+ updatedAt: Date;
7
+ createdAt: Date;
8
+ expiresAt: Date;
9
+ token: string;
10
+ ipAddress: string | null;
11
+ userAgent: string | null;
12
+ impersonatedBy: string | null;
13
+ activeOrganizationId: string | null;
14
+ activeOrganizationRole: string | null;
15
+ activeTeamId: string | null;
16
+ activeTeamRole: string | null;
17
+ };
18
+ user: {
19
+ name: string;
20
+ id: string;
21
+ updatedAt: Date;
22
+ email: string;
23
+ emailVerified: boolean;
24
+ image: string | null;
25
+ createdAt: Date;
26
+ role: string | null;
27
+ banned: boolean | null;
28
+ banReason: string | null;
29
+ banExpires: Date | null;
30
+ stripeCustomerId: string | null;
31
+ paymentCustomerId: string | null;
32
+ paymentPlanTier: string | null;
33
+ paymentPlanExpiresAt: Date | null;
34
+ preferences: string | null;
35
+ metadata: Record<string, unknown>;
36
+ onboarding: number | null;
37
+ flags: string | null;
38
+ };
39
+ }, OpenApiMeta, {}, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
40
+ export declare const procedure: import("@trpc/server").TRPCProcedureBuilder<{
41
+ session: {
42
+ id: string;
43
+ userId: string;
44
+ updatedAt: Date;
45
+ createdAt: Date;
46
+ expiresAt: Date;
47
+ token: string;
48
+ ipAddress: string | null;
49
+ userAgent: string | null;
50
+ impersonatedBy: string | null;
51
+ activeOrganizationId: string | null;
52
+ activeOrganizationRole: string | null;
53
+ activeTeamId: string | null;
54
+ activeTeamRole: string | null;
55
+ };
56
+ user: {
57
+ name: string;
58
+ id: string;
59
+ updatedAt: Date;
60
+ email: string;
61
+ emailVerified: boolean;
62
+ image: string | null;
63
+ createdAt: Date;
64
+ role: string | null;
65
+ banned: boolean | null;
66
+ banReason: string | null;
67
+ banExpires: Date | null;
68
+ stripeCustomerId: string | null;
69
+ paymentCustomerId: string | null;
70
+ paymentPlanTier: string | null;
71
+ paymentPlanExpiresAt: Date | null;
72
+ preferences: string | null;
73
+ metadata: Record<string, unknown>;
74
+ onboarding: number | null;
75
+ flags: string | null;
76
+ };
77
+ }, OpenApiMeta, {
78
+ user: {
79
+ name: string;
80
+ id: string;
81
+ updatedAt: Date;
82
+ email: string;
83
+ emailVerified: boolean;
84
+ image: string | null;
85
+ createdAt: Date;
86
+ role: string | null;
87
+ banned: boolean | null;
88
+ banReason: string | null;
89
+ banExpires: Date | null;
90
+ stripeCustomerId: string | null;
91
+ paymentCustomerId: string | null;
92
+ paymentPlanTier: string | null;
93
+ paymentPlanExpiresAt: Date | null;
94
+ preferences: string | null;
95
+ metadata: Record<string, unknown>;
96
+ onboarding: number | null;
97
+ flags: string | null;
98
+ };
99
+ session: {
100
+ id: string;
101
+ userId: string;
102
+ updatedAt: Date;
103
+ createdAt: Date;
104
+ expiresAt: Date;
105
+ token: string;
106
+ ipAddress: string | null;
107
+ userAgent: string | null;
108
+ impersonatedBy: string | null;
109
+ activeOrganizationId: string | null;
110
+ activeOrganizationRole: string | null;
111
+ activeTeamId: string | null;
112
+ activeTeamRole: string | null;
113
+ };
114
+ }, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
115
+ export declare const adminProcedure: import("@trpc/server").TRPCProcedureBuilder<{
116
+ session: {
117
+ id: string;
118
+ userId: string;
119
+ updatedAt: Date;
120
+ createdAt: Date;
121
+ expiresAt: Date;
122
+ token: string;
123
+ ipAddress: string | null;
124
+ userAgent: string | null;
125
+ impersonatedBy: string | null;
126
+ activeOrganizationId: string | null;
127
+ activeOrganizationRole: string | null;
128
+ activeTeamId: string | null;
129
+ activeTeamRole: string | null;
130
+ };
131
+ user: {
132
+ name: string;
133
+ id: string;
134
+ updatedAt: Date;
135
+ email: string;
136
+ emailVerified: boolean;
137
+ image: string | null;
138
+ createdAt: Date;
139
+ role: string | null;
140
+ banned: boolean | null;
141
+ banReason: string | null;
142
+ banExpires: Date | null;
143
+ stripeCustomerId: string | null;
144
+ paymentCustomerId: string | null;
145
+ paymentPlanTier: string | null;
146
+ paymentPlanExpiresAt: Date | null;
147
+ preferences: string | null;
148
+ metadata: Record<string, unknown>;
149
+ onboarding: number | null;
150
+ flags: string | null;
151
+ };
152
+ }, OpenApiMeta, {
153
+ user: {
154
+ name: string;
155
+ id: string;
156
+ updatedAt: Date;
157
+ email: string;
158
+ emailVerified: boolean;
159
+ image: string | null;
160
+ createdAt: Date;
161
+ role: string | null;
162
+ banned: boolean | null;
163
+ banReason: string | null;
164
+ banExpires: Date | null;
165
+ stripeCustomerId: string | null;
166
+ paymentCustomerId: string | null;
167
+ paymentPlanTier: string | null;
168
+ paymentPlanExpiresAt: Date | null;
169
+ preferences: string | null;
170
+ metadata: Record<string, unknown>;
171
+ onboarding: number | null;
172
+ flags: string | null;
173
+ };
174
+ session: {
175
+ id: string;
176
+ userId: string;
177
+ updatedAt: Date;
178
+ createdAt: Date;
179
+ expiresAt: Date;
180
+ token: string;
181
+ ipAddress: string | null;
182
+ userAgent: string | null;
183
+ impersonatedBy: string | null;
184
+ activeOrganizationId: string | null;
185
+ activeOrganizationRole: string | null;
186
+ activeTeamId: string | null;
187
+ activeTeamRole: string | null;
188
+ };
189
+ }, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
190
+ export declare const mergeRouters: <TRouters extends import("@trpc/server").AnyRouter[]>(...routerList: TRouters) => import("@trpc/server").TRPCMergeRouters<TRouters>;
191
+ export declare const router: import("@trpc/server").TRPCRouterBuilder<{
192
+ ctx: {
193
+ session: {
194
+ id: string;
195
+ userId: string;
196
+ updatedAt: Date;
197
+ createdAt: Date;
198
+ expiresAt: Date;
199
+ token: string;
200
+ ipAddress: string | null;
201
+ userAgent: string | null;
202
+ impersonatedBy: string | null;
203
+ activeOrganizationId: string | null;
204
+ activeOrganizationRole: string | null;
205
+ activeTeamId: string | null;
206
+ activeTeamRole: string | null;
207
+ };
208
+ user: {
209
+ name: string;
210
+ id: string;
211
+ updatedAt: Date;
212
+ email: string;
213
+ emailVerified: boolean;
214
+ image: string | null;
215
+ createdAt: Date;
216
+ role: string | null;
217
+ banned: boolean | null;
218
+ banReason: string | null;
219
+ banExpires: Date | null;
220
+ stripeCustomerId: string | null;
221
+ paymentCustomerId: string | null;
222
+ paymentPlanTier: string | null;
223
+ paymentPlanExpiresAt: Date | null;
224
+ preferences: string | null;
225
+ metadata: Record<string, unknown>;
226
+ onboarding: number | null;
227
+ flags: string | null;
228
+ };
229
+ };
230
+ meta: OpenApiMeta;
231
+ errorShape: import("@trpc/server").TRPCDefaultErrorShape;
232
+ transformer: true;
233
+ }>;
234
+ //# sourceMappingURL=procedures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedures.d.ts","sourceRoot":"","sources":["../../../src/trpc/procedures.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiBnD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0LAAgB,CAAC;AAE7C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yKAMpB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yKAUzB,CAAC;AAEH,eAAO,MAAM,YAAY,qIAAiB,CAAC;AAC3C,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAW,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.router = exports.mergeRouters = exports.adminProcedure = exports.procedure = exports.publicProcedure = void 0;
4
+ const trpc_1 = require("@m5kdev/commons/utils/trpc");
5
+ const server_1 = require("@trpc/server");
6
+ const errors_1 = require("#utils/errors");
7
+ const posthog_1 = require("#utils/posthog");
8
+ const errorOptions = {
9
+ layer: "controller",
10
+ layerName: "TRPCController",
11
+ };
12
+ const t = server_1.initTRPC.meta().context().create({ transformer: trpc_1.transformer });
13
+ // Base router and procedure helpers
14
+ const baseProcedure = t.procedure.use(({ ctx, next }) => (0, posthog_1.runWithPosthogRequestState)({ disableCapture: Boolean(ctx.session?.impersonatedBy) }, () => next()));
15
+ exports.publicProcedure = baseProcedure;
16
+ exports.procedure = baseProcedure.use(({ ctx: { user, session }, next }) => {
17
+ if (!user || !session) {
18
+ throw new errors_1.ServerError({ code: "UNAUTHORIZED", ...errorOptions }).toTRPC();
19
+ }
20
+ return next({ ctx: { user, session } });
21
+ });
22
+ exports.adminProcedure = baseProcedure.use(({ ctx: { user, session }, next }) => {
23
+ if (!user || !session) {
24
+ throw new errors_1.ServerError({ code: "UNAUTHORIZED", ...errorOptions }).toTRPC();
25
+ }
26
+ if (user.role !== "admin") {
27
+ throw new errors_1.ServerError({ code: "FORBIDDEN", ...errorOptions }).toTRPC();
28
+ }
29
+ return next({ ctx: { user, session } });
30
+ });
31
+ exports.mergeRouters = t.mergeRouters;
32
+ exports.router = t.router;
@@ -0,0 +1,5 @@
1
+ import type { Result } from "neverthrow";
2
+ import type { ServerError } from "#utils/errors";
3
+ export declare function handleAsyncTRPCResult<T>(result: Promise<Result<T, ServerError>>): Promise<T>;
4
+ export declare function handleTRPCResult<T>(result: Result<T, ServerError>): T;
5
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/trpc/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,wBAAsB,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,cAErF;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,KAWjE"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleAsyncTRPCResult = handleAsyncTRPCResult;
4
+ exports.handleTRPCResult = handleTRPCResult;
5
+ const logger_1 = require("#utils/logger");
6
+ async function handleAsyncTRPCResult(result) {
7
+ return handleTRPCResult(await result);
8
+ }
9
+ function handleTRPCResult(result) {
10
+ if (result.isErr()) {
11
+ logger_1.logger.debug("Is tRPC Error");
12
+ logger_1.logger.error({
13
+ layer: result.error.layer,
14
+ layerName: result.error.layerName,
15
+ error: result.error.toJSON(),
16
+ });
17
+ throw result.error.toTRPC();
18
+ }
19
+ return result.value;
20
+ }