@m5kdev/backend 0.7.0 → 0.8.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 (559) hide show
  1. package/dist/_virtual/_rolldown/runtime.mjs +13 -0
  2. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/api/index.d.mts +1 -0
  3. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/db/adapter/factory.d.mts +1 -0
  4. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/db/adapter/get-field-attributes.d.mts +1 -0
  5. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/db/adapter/get-id-field.d.mts +1 -0
  6. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/db/adapter/index.d.mts +1 -0
  7. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/db/adapter/types.d.mts +1 -0
  8. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/db/get-tables.d.mts +1 -0
  9. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/db/index.d.mts +1 -0
  10. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/db/schema/account.d.mts +1 -0
  11. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/db/schema/rate-limit.d.mts +1 -0
  12. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/db/schema/session.d.mts +1 -0
  13. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/db/schema/shared.d.mts +1 -0
  14. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/db/schema/user.d.mts +1 -0
  15. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/db/schema/verification.d.mts +1 -0
  16. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/index.d.mts +1 -0
  17. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/social-providers/index.d.mts +1 -0
  18. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/types/context.d.mts +1 -0
  19. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/types/helper.d.mts +7 -0
  20. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/types/init-options.d.mts +1 -0
  21. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/types/plugin-client.d.mts +1 -0
  22. package/dist/node_modules/.pnpm/@better-auth_core@1.4.18_@better-auth_utils@0.3.0_@better-fetch_fetch@1.1.21_better-cal_347838d331444e5371f256b914727290/node_modules/@better-auth/core/dist/types/plugin.d.mts +1 -0
  23. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/dialect-adapter-base.d.mts +1 -0
  24. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/dialect-adapter.d.mts +1 -0
  25. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/dialect.d.mts +1 -0
  26. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/mssql/mssql-adapter.d.mts +1 -0
  27. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/mssql/mssql-dialect.d.mts +1 -0
  28. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/mssql/mssql-introspector.d.mts +1 -0
  29. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/mysql/mysql-adapter.d.mts +1 -0
  30. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/mysql/mysql-dialect.d.mts +1 -0
  31. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/mysql/mysql-introspector.d.mts +1 -0
  32. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/postgres/postgres-adapter.d.mts +1 -0
  33. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/postgres/postgres-dialect.d.mts +1 -0
  34. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/postgres/postgres-introspector.d.mts +1 -0
  35. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-adapter.d.mts +1 -0
  36. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-dialect.d.mts +1 -0
  37. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-introspector.d.mts +1 -0
  38. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/expression/expression-builder.d.mts +1 -0
  39. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/index.d.mts +1 -0
  40. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/kysely.d.mts +38 -0
  41. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/migration/file-migration-provider.d.mts +1 -0
  42. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/migration/migrator.d.mts +1 -0
  43. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/binary-operation-parser.d.mts +1 -0
  44. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/delete-from-parser.d.mts +1 -0
  45. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/expression-parser.d.mts +1 -0
  46. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/group-by-parser.d.mts +1 -0
  47. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/insert-values-parser.d.mts +1 -0
  48. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/join-parser.d.mts +1 -0
  49. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/merge-into-parser.d.mts +1 -0
  50. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/reference-parser.d.mts +1 -0
  51. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/returning-parser.d.mts +1 -0
  52. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/select-from-parser.d.mts +1 -0
  53. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/select-parser.d.mts +1 -0
  54. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/set-operation-parser.d.mts +1 -0
  55. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/tuple-parser.d.mts +1 -0
  56. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/unary-operation-parser.d.mts +1 -0
  57. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/update-parser.d.mts +1 -0
  58. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/update-set-parser.d.mts +1 -0
  59. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/value-parser.d.mts +1 -0
  60. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/with-parser.d.mts +1 -0
  61. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/case-builder.d.mts +1 -0
  62. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/delete-query-builder.d.mts +1 -0
  63. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/having-interface.d.mts +1 -0
  64. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/insert-query-builder.d.mts +1 -0
  65. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/join-builder.d.mts +1 -0
  66. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/merge-query-builder.d.mts +1 -0
  67. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/on-conflict-builder.d.mts +1 -0
  68. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/output-interface.d.mts +1 -0
  69. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/returning-interface.d.mts +1 -0
  70. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/select-query-builder.d.mts +1 -0
  71. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/update-query-builder.d.mts +1 -0
  72. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/where-interface.d.mts +1 -0
  73. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-creator.d.mts +1 -0
  74. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-executor/default-query-executor.d.mts +1 -0
  75. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-executor/noop-query-executor.d.mts +1 -0
  76. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-executor/query-executor-base.d.mts +1 -0
  77. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-executor/query-executor-provider.d.mts +1 -0
  78. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-executor/query-executor.d.mts +1 -0
  79. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/raw-builder/raw-builder.d.mts +1 -0
  80. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/raw-builder/sql.d.mts +1 -0
  81. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.mts +1 -0
  82. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/alter-table-add-index-builder.d.mts +1 -0
  83. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/alter-table-builder.d.mts +1 -0
  84. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/alter-table-drop-constraint-builder.d.mts +1 -0
  85. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/alter-table-executor.d.mts +1 -0
  86. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/create-index-builder.d.mts +1 -0
  87. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/create-schema-builder.d.mts +1 -0
  88. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/create-table-builder.d.mts +1 -0
  89. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/create-type-builder.d.mts +1 -0
  90. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/create-view-builder.d.mts +1 -0
  91. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/drop-index-builder.d.mts +1 -0
  92. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/drop-schema-builder.d.mts +1 -0
  93. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/drop-table-builder.d.mts +1 -0
  94. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/drop-type-builder.d.mts +1 -0
  95. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/drop-view-builder.d.mts +1 -0
  96. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/refresh-materialized-view-builder.d.mts +1 -0
  97. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/schema.d.mts +1 -0
  98. package/dist/src/lib/posthog.d.mts +7 -0
  99. package/dist/src/lib/posthog.mjs +7 -0
  100. package/dist/src/lib/posthog.mjs.map +1 -0
  101. package/dist/src/lib/sentry.d.mts +1 -0
  102. package/dist/src/lib/sentry.mjs +10 -0
  103. package/dist/src/lib/sentry.mjs.map +1 -0
  104. package/dist/src/modules/access/access.repository.d.mts +2352 -0
  105. package/dist/src/modules/access/access.repository.mjs +24 -0
  106. package/dist/src/modules/access/access.repository.mjs.map +1 -0
  107. package/dist/src/modules/access/access.service.d.mts +25 -0
  108. package/dist/src/modules/access/access.service.mjs +40 -0
  109. package/dist/src/modules/access/access.service.mjs.map +1 -0
  110. package/dist/src/modules/access/access.utils.d.mts +19 -0
  111. package/dist/src/modules/access/access.utils.mjs +21 -0
  112. package/dist/src/modules/access/access.utils.mjs.map +1 -0
  113. package/dist/src/modules/ai/ai.db.d.mts +401 -0
  114. package/dist/src/modules/ai/ai.db.mjs +38 -0
  115. package/dist/src/modules/ai/ai.db.mjs.map +1 -0
  116. package/dist/src/modules/ai/ai.prompt.d.mts +30 -0
  117. package/dist/src/modules/ai/ai.prompt.mjs +30 -0
  118. package/dist/src/modules/ai/ai.prompt.mjs.map +1 -0
  119. package/dist/src/modules/ai/ai.prompts.d.mts +10 -0
  120. package/dist/src/modules/ai/{ai.prompts.js → ai.prompts.mjs} +17 -15
  121. package/dist/src/modules/ai/ai.prompts.mjs.map +1 -0
  122. package/dist/src/modules/ai/ai.repository.d.mts +428 -0
  123. package/dist/src/modules/ai/ai.repository.mjs +23 -0
  124. package/dist/src/modules/ai/ai.repository.mjs.map +1 -0
  125. package/dist/src/modules/ai/ai.router.d.mts +1 -0
  126. package/dist/src/modules/ai/ai.service.d.mts +128 -0
  127. package/dist/src/modules/ai/ai.service.mjs +267 -0
  128. package/dist/src/modules/ai/ai.service.mjs.map +1 -0
  129. package/dist/src/modules/ai/ai.trpc.d.mts +31 -0
  130. package/dist/src/modules/ai/ai.trpc.mjs +17 -0
  131. package/dist/src/modules/ai/ai.trpc.mjs.map +1 -0
  132. package/dist/src/modules/ai/ideogram/ideogram.constants.d.mts +11 -0
  133. package/dist/src/modules/ai/ideogram/ideogram.constants.mjs +184 -0
  134. package/dist/src/modules/ai/ideogram/ideogram.constants.mjs.map +1 -0
  135. package/dist/src/modules/ai/ideogram/ideogram.dto.d.mts +234 -0
  136. package/dist/src/modules/ai/ideogram/ideogram.dto.mjs +45 -0
  137. package/dist/src/modules/ai/ideogram/ideogram.dto.mjs.map +1 -0
  138. package/dist/src/modules/ai/ideogram/ideogram.prompt.d.mts +7 -0
  139. package/dist/src/modules/ai/ideogram/{ideogram.prompt.js → ideogram.prompt.mjs} +861 -859
  140. package/dist/src/modules/ai/ideogram/ideogram.prompt.mjs.map +1 -0
  141. package/dist/src/modules/ai/ideogram/ideogram.repository.d.mts +11 -0
  142. package/dist/src/modules/ai/ideogram/ideogram.repository.mjs +32 -0
  143. package/dist/src/modules/ai/ideogram/ideogram.repository.mjs.map +1 -0
  144. package/dist/src/modules/ai/ideogram/ideogram.service.d.mts +14 -0
  145. package/dist/src/modules/ai/ideogram/ideogram.service.mjs +11 -0
  146. package/dist/src/modules/ai/ideogram/ideogram.service.mjs.map +1 -0
  147. package/dist/src/modules/auth/auth.db.d.mts +2341 -0
  148. package/dist/src/modules/auth/auth.db.mjs +169 -0
  149. package/dist/src/modules/auth/auth.db.mjs.map +1 -0
  150. package/dist/src/modules/auth/auth.dto.d.mts +70 -0
  151. package/dist/src/modules/auth/auth.dto.mjs +43 -0
  152. package/dist/src/modules/auth/auth.dto.mjs.map +1 -0
  153. package/dist/src/modules/auth/auth.lib.d.mts +4894 -0
  154. package/dist/src/modules/auth/auth.lib.mjs +232 -0
  155. package/dist/src/modules/auth/auth.lib.mjs.map +1 -0
  156. package/dist/src/modules/auth/auth.middleware.d.mts +619 -0
  157. package/dist/src/modules/auth/auth.middleware.mjs +38 -0
  158. package/dist/src/modules/auth/auth.middleware.mjs.map +1 -0
  159. package/dist/src/modules/auth/auth.repository.d.mts +2453 -0
  160. package/dist/src/modules/auth/auth.repository.mjs +401 -0
  161. package/dist/src/modules/auth/auth.repository.mjs.map +1 -0
  162. package/dist/src/modules/auth/auth.service.d.mts +105 -0
  163. package/dist/src/modules/auth/auth.service.mjs +227 -0
  164. package/dist/src/modules/auth/auth.service.mjs.map +1 -0
  165. package/dist/src/modules/auth/auth.trpc.d.mts +303 -0
  166. package/dist/src/modules/auth/auth.trpc.mjs +108 -0
  167. package/dist/src/modules/auth/auth.trpc.mjs.map +1 -0
  168. package/dist/src/modules/auth/auth.utils.d.mts +2356 -0
  169. package/dist/src/modules/auth/auth.utils.mjs +77 -0
  170. package/dist/src/modules/auth/auth.utils.mjs.map +1 -0
  171. package/dist/src/modules/base/base.abstract.d.mts +29 -0
  172. package/dist/src/modules/base/base.abstract.mjs +60 -0
  173. package/dist/src/modules/base/base.abstract.mjs.map +1 -0
  174. package/dist/src/modules/base/base.actor.d.mts +73 -0
  175. package/dist/src/modules/base/base.actor.mjs +78 -0
  176. package/dist/src/modules/base/base.actor.mjs.map +1 -0
  177. package/dist/src/modules/base/base.dto.d.mts +67 -0
  178. package/dist/src/modules/base/base.dto.mjs +79 -0
  179. package/dist/src/modules/base/base.dto.mjs.map +1 -0
  180. package/dist/src/modules/base/base.grants.d.mts +28 -0
  181. package/dist/src/modules/base/base.grants.mjs +103 -0
  182. package/dist/src/modules/base/base.grants.mjs.map +1 -0
  183. package/dist/src/modules/base/base.procedure.d.mts +111 -0
  184. package/dist/src/modules/base/base.procedure.mjs +252 -0
  185. package/dist/src/modules/base/base.procedure.mjs.map +1 -0
  186. package/dist/src/modules/base/base.repository.d.mts +123 -0
  187. package/dist/src/modules/base/base.repository.mjs +250 -0
  188. package/dist/src/modules/base/base.repository.mjs.map +1 -0
  189. package/dist/src/modules/base/base.service.d.mts +44 -0
  190. package/dist/src/modules/base/base.service.mjs +116 -0
  191. package/dist/src/modules/base/base.service.mjs.map +1 -0
  192. package/dist/src/modules/base/base.types.d.mts +5 -0
  193. package/dist/src/modules/billing/billing.db.d.mts +371 -0
  194. package/dist/src/modules/billing/billing.db.mjs +31 -0
  195. package/dist/src/modules/billing/billing.db.mjs.map +1 -0
  196. package/dist/src/modules/billing/billing.repository.d.mts +2787 -0
  197. package/dist/src/modules/billing/billing.repository.mjs +188 -0
  198. package/dist/src/modules/billing/billing.repository.mjs.map +1 -0
  199. package/dist/src/modules/billing/billing.router.d.mts +9 -0
  200. package/dist/src/modules/billing/billing.router.mjs +40 -0
  201. package/dist/src/modules/billing/billing.router.mjs.map +1 -0
  202. package/dist/src/modules/billing/billing.service.d.mts +53 -0
  203. package/dist/src/modules/billing/billing.service.mjs +125 -0
  204. package/dist/src/modules/billing/billing.service.mjs.map +1 -0
  205. package/dist/src/modules/billing/billing.trpc.d.mts +29 -0
  206. package/dist/src/modules/billing/billing.trpc.mjs +17 -0
  207. package/dist/src/modules/billing/billing.trpc.mjs.map +1 -0
  208. package/dist/src/modules/clay/clay.repository.d.mts +10 -0
  209. package/dist/src/modules/clay/clay.repository.mjs +27 -0
  210. package/dist/src/modules/clay/clay.repository.mjs.map +1 -0
  211. package/dist/src/modules/clay/clay.service.d.mts +32 -0
  212. package/dist/src/modules/clay/clay.service.mjs +23 -0
  213. package/dist/src/modules/clay/clay.service.mjs.map +1 -0
  214. package/dist/src/modules/connect/connect.db.d.mts +362 -0
  215. package/dist/src/modules/connect/connect.db.mjs +30 -0
  216. package/dist/src/modules/connect/connect.db.mjs.map +1 -0
  217. package/dist/src/modules/connect/connect.dto.d.mts +79 -0
  218. package/dist/src/modules/connect/connect.dto.mjs +38 -0
  219. package/dist/src/modules/connect/connect.dto.mjs.map +1 -0
  220. package/dist/src/modules/connect/connect.linkedin.d.mts +7 -0
  221. package/dist/src/modules/connect/connect.linkedin.mjs +47 -0
  222. package/dist/src/modules/connect/connect.linkedin.mjs.map +1 -0
  223. package/dist/src/modules/connect/connect.oauth.d.mts +32 -0
  224. package/dist/src/modules/connect/connect.oauth.mjs +145 -0
  225. package/dist/src/modules/connect/connect.oauth.mjs.map +1 -0
  226. package/dist/src/modules/connect/connect.repository.d.mts +419 -0
  227. package/dist/src/modules/connect/connect.repository.mjs +40 -0
  228. package/dist/src/modules/connect/connect.repository.mjs.map +1 -0
  229. package/dist/src/modules/connect/connect.router.d.mts +9 -0
  230. package/dist/src/modules/connect/connect.router.mjs +46 -0
  231. package/dist/src/modules/connect/connect.router.mjs.map +1 -0
  232. package/dist/src/modules/connect/connect.service.d.mts +103 -0
  233. package/dist/src/modules/connect/connect.service.mjs +88 -0
  234. package/dist/src/modules/connect/connect.service.mjs.map +1 -0
  235. package/dist/src/modules/connect/connect.trpc.d.mts +53 -0
  236. package/dist/src/modules/connect/connect.trpc.mjs +17 -0
  237. package/dist/src/modules/connect/connect.trpc.mjs.map +1 -0
  238. package/dist/src/modules/connect/connect.types.d.mts +29 -0
  239. package/dist/src/modules/crypto/crypto.db.d.mts +157 -0
  240. package/dist/src/modules/crypto/crypto.db.mjs +19 -0
  241. package/dist/src/modules/crypto/crypto.db.mjs.map +1 -0
  242. package/dist/src/modules/crypto/crypto.repository.d.mts +163 -0
  243. package/dist/src/modules/crypto/crypto.repository.mjs +9 -0
  244. package/dist/src/modules/crypto/crypto.repository.mjs.map +1 -0
  245. package/dist/src/modules/crypto/crypto.service.d.mts +15 -0
  246. package/dist/src/modules/crypto/crypto.service.mjs +40 -0
  247. package/dist/src/modules/crypto/crypto.service.mjs.map +1 -0
  248. package/dist/src/modules/email/email.service.d.mts +62 -0
  249. package/dist/src/modules/email/email.service.mjs +105 -0
  250. package/dist/src/modules/email/email.service.mjs.map +1 -0
  251. package/dist/src/modules/file/file.repository.d.mts +17 -0
  252. package/dist/src/modules/file/file.repository.mjs +72 -0
  253. package/dist/src/modules/file/file.repository.mjs.map +1 -0
  254. package/dist/src/modules/file/{file.router.d.ts → file.router.d.mts} +4 -0
  255. package/dist/src/modules/file/file.router.mjs +88 -0
  256. package/dist/src/modules/file/file.router.mjs.map +1 -0
  257. package/dist/src/modules/file/file.service.d.mts +30 -0
  258. package/dist/src/modules/file/file.service.mjs +117 -0
  259. package/dist/src/modules/file/file.service.mjs.map +1 -0
  260. package/dist/src/modules/recurrence/recurrence.db.d.mts +568 -0
  261. package/dist/src/modules/recurrence/recurrence.db.mjs +47 -0
  262. package/dist/src/modules/recurrence/recurrence.db.mjs.map +1 -0
  263. package/dist/src/modules/recurrence/recurrence.repository.d.mts +588 -0
  264. package/dist/src/modules/recurrence/recurrence.repository.mjs +28 -0
  265. package/dist/src/modules/recurrence/recurrence.repository.mjs.map +1 -0
  266. package/dist/src/modules/recurrence/recurrence.service.d.mts +51 -0
  267. package/dist/src/modules/recurrence/recurrence.service.mjs +64 -0
  268. package/dist/src/modules/recurrence/recurrence.service.mjs.map +1 -0
  269. package/dist/src/modules/recurrence/recurrence.trpc.d.mts +65 -0
  270. package/dist/src/modules/recurrence/recurrence.trpc.mjs +44 -0
  271. package/dist/src/modules/recurrence/recurrence.trpc.mjs.map +1 -0
  272. package/dist/src/modules/social/social.dto.d.mts +39 -0
  273. package/dist/src/modules/social/social.dto.mjs +22 -0
  274. package/dist/src/modules/social/social.dto.mjs.map +1 -0
  275. package/dist/src/modules/social/{social.linkedin.d.ts → social.linkedin.d.mts} +8 -3
  276. package/dist/src/modules/social/social.linkedin.mjs +346 -0
  277. package/dist/src/modules/social/social.linkedin.mjs.map +1 -0
  278. package/dist/src/modules/social/social.service.d.mts +34 -0
  279. package/dist/src/modules/social/social.service.mjs +55 -0
  280. package/dist/src/modules/social/social.service.mjs.map +1 -0
  281. package/dist/src/modules/social/social.types.d.mts +40 -0
  282. package/dist/src/modules/tag/tag.db.d.mts +352 -0
  283. package/dist/src/modules/tag/tag.db.mjs +35 -0
  284. package/dist/src/modules/tag/tag.db.mjs.map +1 -0
  285. package/dist/src/modules/tag/tag.dto.d.mts +1025 -0
  286. package/dist/src/modules/tag/tag.dto.mjs +11 -0
  287. package/dist/src/modules/tag/tag.dto.mjs.map +1 -0
  288. package/dist/src/modules/tag/tag.repository.d.mts +394 -0
  289. package/dist/src/modules/tag/tag.repository.mjs +114 -0
  290. package/dist/src/modules/tag/tag.repository.mjs.map +1 -0
  291. package/dist/src/modules/tag/tag.service.d.mts +93 -0
  292. package/dist/src/modules/tag/tag.service.mjs +47 -0
  293. package/dist/src/modules/tag/tag.service.mjs.map +1 -0
  294. package/dist/src/modules/tag/tag.trpc.d.mts +109 -0
  295. package/dist/src/modules/tag/tag.trpc.mjs +30 -0
  296. package/dist/src/modules/tag/tag.trpc.mjs.map +1 -0
  297. package/dist/src/modules/utils/{applyPagination.d.ts → applyPagination.d.mts} +5 -1
  298. package/dist/src/modules/utils/applyPagination.mjs +15 -0
  299. package/dist/src/modules/utils/applyPagination.mjs.map +1 -0
  300. package/dist/src/modules/utils/applySorting.d.mts +13 -0
  301. package/dist/src/modules/utils/applySorting.mjs +18 -0
  302. package/dist/src/modules/utils/applySorting.mjs.map +1 -0
  303. package/dist/src/modules/utils/getConditionsFromFilters.d.mts +9 -0
  304. package/dist/src/modules/utils/getConditionsFromFilters.mjs +150 -0
  305. package/dist/src/modules/utils/getConditionsFromFilters.mjs.map +1 -0
  306. package/dist/src/modules/video/video.service.d.mts +12 -0
  307. package/dist/src/modules/video/video.service.mjs +50 -0
  308. package/dist/src/modules/video/video.service.mjs.map +1 -0
  309. package/dist/src/modules/webhook/webhook.constants.d.mts +12 -0
  310. package/dist/src/modules/webhook/webhook.constants.mjs +12 -0
  311. package/dist/src/modules/webhook/webhook.constants.mjs.map +1 -0
  312. package/dist/src/modules/webhook/webhook.db.d.mts +142 -0
  313. package/dist/src/modules/webhook/webhook.db.mjs +17 -0
  314. package/dist/src/modules/webhook/webhook.db.mjs.map +1 -0
  315. package/dist/src/modules/webhook/webhook.dto.d.mts +402 -0
  316. package/dist/src/modules/webhook/webhook.dto.mjs +9 -0
  317. package/dist/src/modules/webhook/webhook.dto.mjs.map +1 -0
  318. package/dist/src/modules/webhook/webhook.repository.d.mts +154 -0
  319. package/dist/src/modules/webhook/webhook.repository.mjs +50 -0
  320. package/dist/src/modules/webhook/webhook.repository.mjs.map +1 -0
  321. package/dist/src/modules/webhook/webhook.router.d.mts +8 -0
  322. package/dist/src/modules/webhook/webhook.router.mjs +23 -0
  323. package/dist/src/modules/webhook/webhook.router.mjs.map +1 -0
  324. package/dist/src/modules/webhook/webhook.service.d.mts +14 -0
  325. package/dist/src/modules/webhook/webhook.service.mjs +59 -0
  326. package/dist/src/modules/webhook/webhook.service.mjs.map +1 -0
  327. package/dist/src/modules/workflow/workflow.db.d.mts +302 -0
  328. package/dist/src/modules/workflow/workflow.db.mjs +28 -0
  329. package/dist/src/modules/workflow/workflow.db.mjs.map +1 -0
  330. package/dist/src/modules/workflow/workflow.repository.d.mts +371 -0
  331. package/dist/src/modules/workflow/workflow.repository.mjs +93 -0
  332. package/dist/src/modules/workflow/workflow.repository.mjs.map +1 -0
  333. package/dist/src/modules/workflow/workflow.service.d.mts +31 -0
  334. package/dist/src/modules/workflow/workflow.service.mjs +40 -0
  335. package/dist/src/modules/workflow/workflow.service.mjs.map +1 -0
  336. package/dist/src/modules/workflow/workflow.trpc.d.mts +28 -0
  337. package/dist/src/modules/workflow/workflow.trpc.mjs +17 -0
  338. package/dist/src/modules/workflow/workflow.trpc.mjs.map +1 -0
  339. package/dist/src/modules/workflow/workflow.types.d.mts +25 -0
  340. package/dist/src/modules/workflow/workflow.utils.d.mts +36 -0
  341. package/dist/src/modules/workflow/workflow.utils.mjs +181 -0
  342. package/dist/src/modules/workflow/workflow.utils.mjs.map +1 -0
  343. package/dist/src/types.d.mts +346 -0
  344. package/dist/src/types.mjs +13 -0
  345. package/dist/src/types.mjs.map +1 -0
  346. package/dist/src/utils/errors.d.mts +62 -0
  347. package/dist/src/utils/errors.mjs +96 -0
  348. package/dist/src/utils/errors.mjs.map +1 -0
  349. package/dist/src/utils/logger.d.mts +7 -0
  350. package/dist/src/utils/logger.mjs +10 -0
  351. package/dist/src/utils/logger.mjs.map +1 -0
  352. package/dist/src/utils/posthog.d.mts +17 -0
  353. package/dist/src/utils/posthog.mjs +25 -0
  354. package/dist/src/utils/posthog.mjs.map +1 -0
  355. package/dist/src/utils/trpc.d.mts +54 -0
  356. package/dist/src/utils/trpc.mjs +146 -0
  357. package/dist/src/utils/trpc.mjs.map +1 -0
  358. package/dist/src/utils/types.d.mts +9 -0
  359. package/package.json +5 -4
  360. package/dist/src/lib/posthog.d.ts +0 -2
  361. package/dist/src/lib/posthog.js +0 -7
  362. package/dist/src/lib/sentry.d.ts +0 -1
  363. package/dist/src/lib/sentry.js +0 -9
  364. package/dist/src/modules/access/access.repository.d.ts +0 -2347
  365. package/dist/src/modules/access/access.repository.js +0 -32
  366. package/dist/src/modules/access/access.service.d.ts +0 -21
  367. package/dist/src/modules/access/access.service.js +0 -51
  368. package/dist/src/modules/access/access.test.d.ts +0 -1
  369. package/dist/src/modules/access/access.test.js +0 -182
  370. package/dist/src/modules/access/access.utils.d.ts +0 -16
  371. package/dist/src/modules/access/access.utils.js +0 -20
  372. package/dist/src/modules/ai/ai.db.d.ts +0 -395
  373. package/dist/src/modules/ai/ai.db.js +0 -39
  374. package/dist/src/modules/ai/ai.prompt.d.ts +0 -26
  375. package/dist/src/modules/ai/ai.prompt.js +0 -30
  376. package/dist/src/modules/ai/ai.prompts.d.ts +0 -5
  377. package/dist/src/modules/ai/ai.repository.d.ts +0 -423
  378. package/dist/src/modules/ai/ai.repository.js +0 -26
  379. package/dist/src/modules/ai/ai.router.js +0 -132
  380. package/dist/src/modules/ai/ai.service.d.ts +0 -125
  381. package/dist/src/modules/ai/ai.service.js +0 -297
  382. package/dist/src/modules/ai/ai.trpc.d.ts +0 -22
  383. package/dist/src/modules/ai/ai.trpc.js +0 -20
  384. package/dist/src/modules/ai/ideogram/ideogram.constants.d.ts +0 -7
  385. package/dist/src/modules/ai/ideogram/ideogram.constants.js +0 -167
  386. package/dist/src/modules/ai/ideogram/ideogram.dto.d.ts +0 -229
  387. package/dist/src/modules/ai/ideogram/ideogram.dto.js +0 -49
  388. package/dist/src/modules/ai/ideogram/ideogram.prompt.d.ts +0 -2
  389. package/dist/src/modules/ai/ideogram/ideogram.repository.d.ts +0 -6
  390. package/dist/src/modules/ai/ideogram/ideogram.repository.js +0 -46
  391. package/dist/src/modules/ai/ideogram/ideogram.service.d.ts +0 -9
  392. package/dist/src/modules/ai/ideogram/ideogram.service.js +0 -11
  393. package/dist/src/modules/auth/auth.db.d.ts +0 -2335
  394. package/dist/src/modules/auth/auth.db.js +0 -215
  395. package/dist/src/modules/auth/auth.dto.d.ts +0 -65
  396. package/dist/src/modules/auth/auth.dto.js +0 -38
  397. package/dist/src/modules/auth/auth.lib.d.ts +0 -4869
  398. package/dist/src/modules/auth/auth.lib.js +0 -284
  399. package/dist/src/modules/auth/auth.middleware.d.ts +0 -614
  400. package/dist/src/modules/auth/auth.middleware.js +0 -52
  401. package/dist/src/modules/auth/auth.repository.d.ts +0 -2421
  402. package/dist/src/modules/auth/auth.repository.js +0 -636
  403. package/dist/src/modules/auth/auth.service.d.ts +0 -78
  404. package/dist/src/modules/auth/auth.service.js +0 -259
  405. package/dist/src/modules/auth/auth.trpc.d.ts +0 -292
  406. package/dist/src/modules/auth/auth.trpc.js +0 -179
  407. package/dist/src/modules/auth/auth.utils.d.ts +0 -2351
  408. package/dist/src/modules/auth/auth.utils.js +0 -97
  409. package/dist/src/modules/base/base.abstract.d.ts +0 -19
  410. package/dist/src/modules/base/base.abstract.js +0 -62
  411. package/dist/src/modules/base/base.actor.d.ts +0 -68
  412. package/dist/src/modules/base/base.actor.js +0 -99
  413. package/dist/src/modules/base/base.actor.test.js +0 -58
  414. package/dist/src/modules/base/base.dto.d.ts +0 -69
  415. package/dist/src/modules/base/base.dto.js +0 -112
  416. package/dist/src/modules/base/base.grants.d.ts +0 -24
  417. package/dist/src/modules/base/base.grants.js +0 -135
  418. package/dist/src/modules/base/base.grants.test.js +0 -639
  419. package/dist/src/modules/base/base.procedure.d.ts +0 -109
  420. package/dist/src/modules/base/base.procedure.js +0 -301
  421. package/dist/src/modules/base/base.repository.d.ts +0 -97
  422. package/dist/src/modules/base/base.repository.js +0 -317
  423. package/dist/src/modules/base/base.service.d.ts +0 -40
  424. package/dist/src/modules/base/base.service.js +0 -123
  425. package/dist/src/modules/base/base.service.test.js +0 -443
  426. package/dist/src/modules/base/base.types.d.ts +0 -1
  427. package/dist/src/modules/base/base.types.js +0 -2
  428. package/dist/src/modules/billing/billing.db.d.ts +0 -365
  429. package/dist/src/modules/billing/billing.db.js +0 -29
  430. package/dist/src/modules/billing/billing.repository.d.ts +0 -2763
  431. package/dist/src/modules/billing/billing.repository.js +0 -235
  432. package/dist/src/modules/billing/billing.router.d.ts +0 -4
  433. package/dist/src/modules/billing/billing.router.js +0 -56
  434. package/dist/src/modules/billing/billing.service.d.ts +0 -38
  435. package/dist/src/modules/billing/billing.service.js +0 -147
  436. package/dist/src/modules/billing/billing.trpc.d.ts +0 -38
  437. package/dist/src/modules/billing/billing.trpc.js +0 -15
  438. package/dist/src/modules/clay/clay.repository.d.ts +0 -5
  439. package/dist/src/modules/clay/clay.repository.js +0 -26
  440. package/dist/src/modules/clay/clay.service.d.ts +0 -28
  441. package/dist/src/modules/clay/clay.service.js +0 -24
  442. package/dist/src/modules/connect/connect.db.d.ts +0 -356
  443. package/dist/src/modules/connect/connect.db.js +0 -30
  444. package/dist/src/modules/connect/connect.dto.d.ts +0 -74
  445. package/dist/src/modules/connect/connect.dto.js +0 -36
  446. package/dist/src/modules/connect/connect.linkedin.d.ts +0 -2
  447. package/dist/src/modules/connect/connect.linkedin.js +0 -53
  448. package/dist/src/modules/connect/connect.oauth.d.ts +0 -27
  449. package/dist/src/modules/connect/connect.oauth.js +0 -198
  450. package/dist/src/modules/connect/connect.repository.d.ts +0 -413
  451. package/dist/src/modules/connect/connect.repository.js +0 -54
  452. package/dist/src/modules/connect/connect.router.d.ts +0 -4
  453. package/dist/src/modules/connect/connect.router.js +0 -54
  454. package/dist/src/modules/connect/connect.service.d.ts +0 -96
  455. package/dist/src/modules/connect/connect.service.js +0 -116
  456. package/dist/src/modules/connect/connect.trpc.d.ts +0 -44
  457. package/dist/src/modules/connect/connect.trpc.js +0 -21
  458. package/dist/src/modules/connect/connect.types.d.ts +0 -25
  459. package/dist/src/modules/connect/connect.types.js +0 -2
  460. package/dist/src/modules/crypto/crypto.db.d.ts +0 -151
  461. package/dist/src/modules/crypto/crypto.db.js +0 -17
  462. package/dist/src/modules/crypto/crypto.repository.d.ts +0 -159
  463. package/dist/src/modules/crypto/crypto.repository.js +0 -10
  464. package/dist/src/modules/crypto/crypto.service.d.ts +0 -10
  465. package/dist/src/modules/crypto/crypto.service.js +0 -52
  466. package/dist/src/modules/email/email.service.d.ts +0 -56
  467. package/dist/src/modules/email/email.service.js +0 -106
  468. package/dist/src/modules/file/file.repository.d.ts +0 -12
  469. package/dist/src/modules/file/file.repository.js +0 -79
  470. package/dist/src/modules/file/file.router.js +0 -99
  471. package/dist/src/modules/file/file.service.d.ts +0 -24
  472. package/dist/src/modules/file/file.service.js +0 -150
  473. package/dist/src/modules/recurrence/recurrence.db.d.ts +0 -562
  474. package/dist/src/modules/recurrence/recurrence.db.js +0 -66
  475. package/dist/src/modules/recurrence/recurrence.repository.d.ts +0 -584
  476. package/dist/src/modules/recurrence/recurrence.repository.js +0 -39
  477. package/dist/src/modules/recurrence/recurrence.service.d.ts +0 -80
  478. package/dist/src/modules/recurrence/recurrence.service.js +0 -72
  479. package/dist/src/modules/recurrence/recurrence.trpc.d.ts +0 -206
  480. package/dist/src/modules/recurrence/recurrence.trpc.js +0 -65
  481. package/dist/src/modules/social/social.dto.d.ts +0 -34
  482. package/dist/src/modules/social/social.dto.js +0 -18
  483. package/dist/src/modules/social/social.linkedin.js +0 -427
  484. package/dist/src/modules/social/social.linkedin.test.js +0 -235
  485. package/dist/src/modules/social/social.service.d.ts +0 -27
  486. package/dist/src/modules/social/social.service.js +0 -76
  487. package/dist/src/modules/social/social.types.d.ts +0 -35
  488. package/dist/src/modules/social/social.types.js +0 -2
  489. package/dist/src/modules/tag/tag.db.d.ts +0 -346
  490. package/dist/src/modules/tag/tag.db.js +0 -42
  491. package/dist/src/modules/tag/tag.dto.d.ts +0 -1018
  492. package/dist/src/modules/tag/tag.dto.js +0 -9
  493. package/dist/src/modules/tag/tag.repository.d.ts +0 -383
  494. package/dist/src/modules/tag/tag.repository.js +0 -156
  495. package/dist/src/modules/tag/tag.service.d.ts +0 -113
  496. package/dist/src/modules/tag/tag.service.js +0 -42
  497. package/dist/src/modules/tag/tag.trpc.d.ts +0 -164
  498. package/dist/src/modules/tag/tag.trpc.js +0 -53
  499. package/dist/src/modules/utils/applyPagination.js +0 -16
  500. package/dist/src/modules/utils/applySorting.d.ts +0 -8
  501. package/dist/src/modules/utils/applySorting.js +0 -18
  502. package/dist/src/modules/utils/getConditionsFromFilters.d.ts +0 -4
  503. package/dist/src/modules/utils/getConditionsFromFilters.js +0 -200
  504. package/dist/src/modules/video/video.service.d.ts +0 -7
  505. package/dist/src/modules/video/video.service.js +0 -84
  506. package/dist/src/modules/webhook/webhook.constants.d.ts +0 -8
  507. package/dist/src/modules/webhook/webhook.constants.js +0 -10
  508. package/dist/src/modules/webhook/webhook.db.d.ts +0 -136
  509. package/dist/src/modules/webhook/webhook.db.js +0 -17
  510. package/dist/src/modules/webhook/webhook.dto.d.ts +0 -394
  511. package/dist/src/modules/webhook/webhook.dto.js +0 -7
  512. package/dist/src/modules/webhook/webhook.repository.d.ts +0 -148
  513. package/dist/src/modules/webhook/webhook.repository.js +0 -56
  514. package/dist/src/modules/webhook/webhook.router.d.ts +0 -3
  515. package/dist/src/modules/webhook/webhook.router.js +0 -30
  516. package/dist/src/modules/webhook/webhook.service.d.ts +0 -9
  517. package/dist/src/modules/webhook/webhook.service.js +0 -68
  518. package/dist/src/modules/workflow/workflow.db.d.ts +0 -296
  519. package/dist/src/modules/workflow/workflow.db.js +0 -30
  520. package/dist/src/modules/workflow/workflow.repository.d.ts +0 -343
  521. package/dist/src/modules/workflow/workflow.repository.js +0 -105
  522. package/dist/src/modules/workflow/workflow.service.d.ts +0 -61
  523. package/dist/src/modules/workflow/workflow.service.js +0 -37
  524. package/dist/src/modules/workflow/workflow.trpc.d.ts +0 -56
  525. package/dist/src/modules/workflow/workflow.trpc.js +0 -21
  526. package/dist/src/modules/workflow/workflow.types.d.ts +0 -20
  527. package/dist/src/modules/workflow/workflow.types.js +0 -2
  528. package/dist/src/modules/workflow/workflow.utils.d.ts +0 -21
  529. package/dist/src/modules/workflow/workflow.utils.js +0 -173
  530. package/dist/src/test/stubs/utils.d.ts +0 -2
  531. package/dist/src/test/stubs/utils.js +0 -5
  532. package/dist/src/trpc/context.d.ts +0 -41
  533. package/dist/src/trpc/context.js +0 -17
  534. package/dist/src/trpc/index.d.ts +0 -3
  535. package/dist/src/trpc/index.js +0 -6
  536. package/dist/src/trpc/procedures.d.ts +0 -233
  537. package/dist/src/trpc/procedures.js +0 -32
  538. package/dist/src/trpc/utils.d.ts +0 -4
  539. package/dist/src/trpc/utils.js +0 -20
  540. package/dist/src/types.d.ts +0 -358
  541. package/dist/src/types.js +0 -12
  542. package/dist/src/utils/errors.d.ts +0 -49
  543. package/dist/src/utils/errors.js +0 -104
  544. package/dist/src/utils/logger.d.ts +0 -1
  545. package/dist/src/utils/logger.js +0 -11
  546. package/dist/src/utils/posthog.d.ts +0 -13
  547. package/dist/src/utils/posthog.js +0 -31
  548. package/dist/src/utils/trpc.d.ts +0 -48
  549. package/dist/src/utils/trpc.js +0 -158
  550. package/dist/src/utils/trpc.test.js +0 -154
  551. package/dist/src/utils/types.d.ts +0 -4
  552. package/dist/src/utils/types.js +0 -2
  553. package/dist/tsconfig.tsbuildinfo +0 -1
  554. /package/dist/src/{utils/trpc.test.d.ts → modules/ai/ai.router.mjs} +0 -0
  555. /package/dist/src/modules/{social/social.linkedin.test.d.ts → base/base.types.mjs} +0 -0
  556. /package/dist/src/modules/{base/base.service.test.d.ts → connect/connect.types.mjs} +0 -0
  557. /package/dist/src/modules/{base/base.grants.test.d.ts → social/social.types.mjs} +0 -0
  558. /package/dist/src/modules/{base/base.actor.test.d.ts → workflow/workflow.types.mjs} +0 -0
  559. /package/dist/src/{modules/ai/ai.router.d.ts → utils/types.mjs} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"social.linkedin.mjs","names":[],"sources":["../../../../src/modules/social/social.linkedin.ts"],"sourcesContent":["import { createReadStream } from \"node:fs\";\r\nimport { stat, unlink } from \"node:fs/promises\";\r\nimport type { ConnectRow } from \"../connect/connect.repository\";\r\nimport type { FileService } from \"../file/file.service\";\r\nimport type { SocialMediaDescriptor, SocialPostPayload, SocialProvider } from \"./social.types\";\r\n\r\nconst LINKEDIN_API_BASE = \"https://api.linkedin.com/rest\";\r\nconst LINKEDIN_VERSION = \"202601\";\r\n\r\nconst IMAGES_URL = `${LINKEDIN_API_BASE}/images?action=initializeUpload`;\r\nconst VIDEOS_URL = `${LINKEDIN_API_BASE}/videos?action=initializeUpload`;\r\nconst VIDEOS_FINALIZE_URL = `${LINKEDIN_API_BASE}/videos?action=finalizeUpload`;\r\nconst DOCUMENTS_URL = `${LINKEDIN_API_BASE}/documents?action=initializeUpload`;\r\nconst POSTS_URL = `${LINKEDIN_API_BASE}/posts`;\r\n\r\ninterface LinkedInMetadata {\r\n linkedInUrn?: string;\r\n [key: string]: unknown;\r\n}\r\n\r\ninterface UploadedAsset {\r\n assetUrn: string;\r\n mediaType: \"image\" | \"video\" | \"document\";\r\n title?: string;\r\n description?: string;\r\n}\r\n\r\ninterface ImageInitResponse {\r\n value: {\r\n uploadUrlExpiresAt: number;\r\n uploadUrl: string;\r\n image: string;\r\n };\r\n}\r\n\r\ninterface VideoInitResponse {\r\n value: {\r\n uploadUrlsExpireAt: number;\r\n video: string;\r\n uploadInstructions: Array<{\r\n uploadUrl: string;\r\n lastByte: number;\r\n firstByte: number;\r\n }>;\r\n uploadToken: string;\r\n };\r\n}\r\n\r\ninterface DocumentInitResponse {\r\n value: {\r\n uploadUrlExpiresAt: number;\r\n uploadUrl: string;\r\n document: string;\r\n };\r\n}\r\n\r\nfunction getApiHeaders(accessToken: string): Record<string, string> {\r\n return {\r\n Authorization: `Bearer ${accessToken}`,\r\n \"Content-Type\": \"application/json\",\r\n \"Linkedin-Version\": LINKEDIN_VERSION,\r\n \"X-Restli-Protocol-Version\": \"2.0.0\",\r\n };\r\n}\r\n\r\nexport function createLinkedInSocialProvider(): SocialProvider {\r\n return {\r\n id: \"linkedin\",\r\n async post({ deps, context, payload }) {\r\n const personUrn = resolveAuthorUrn(context.connection);\r\n const mediaDescriptors = payload.media ?? [];\r\n\r\n let uploadedAssets: UploadedAsset[] = [];\r\n if (mediaDescriptors.length > 0) {\r\n uploadedAssets = await uploadMediaAssets({\r\n accessToken: context.accessToken,\r\n fileService: deps.fileService,\r\n mediaDescriptors,\r\n personUrn,\r\n });\r\n }\r\n\r\n const response = await publishPost({\r\n accessToken: context.accessToken,\r\n personUrn,\r\n payload,\r\n uploadedAssets,\r\n });\r\n\r\n return {\r\n shareUrn: response.postUrn,\r\n rawResponse: response.raw,\r\n };\r\n },\r\n };\r\n}\r\n\r\nfunction resolveAuthorUrn(connection: ConnectRow): string {\r\n if (connection.metadataJson) {\r\n try {\r\n const metadata = connection.metadataJson as LinkedInMetadata;\r\n if (metadata.linkedInUrn && typeof metadata.linkedInUrn === \"string\") {\r\n return metadata.linkedInUrn;\r\n }\r\n } catch {\r\n throw new Error(\"Failed to parse LinkedIn connection metadata\");\r\n }\r\n }\r\n\r\n if (connection.providerAccountId) {\r\n return `urn:li:person:${connection.providerAccountId}`;\r\n }\r\n\r\n throw new Error(\"LinkedIn connection is missing a person URN\");\r\n}\r\n\r\nasync function uploadMediaAssets(params: {\r\n accessToken: string;\r\n fileService: FileService;\r\n mediaDescriptors: readonly SocialMediaDescriptor[];\r\n personUrn: string;\r\n}): Promise<UploadedAsset[]> {\r\n const results: UploadedAsset[] = [];\r\n\r\n for (const descriptor of params.mediaDescriptors) {\r\n const download = await params.fileService.downloadS3ToFile(descriptor.s3Path);\r\n if (download.isErr()) {\r\n throw download.error;\r\n }\r\n\r\n const localPath = download.value;\r\n try {\r\n const mediaType = determineMediaType(descriptor.mediaType, localPath);\r\n\r\n let assetUrn: string;\r\n switch (mediaType) {\r\n case \"image\":\r\n assetUrn = await uploadImage({\r\n accessToken: params.accessToken,\r\n personUrn: params.personUrn,\r\n localPath,\r\n });\r\n break;\r\n case \"video\":\r\n assetUrn = await uploadVideo({\r\n accessToken: params.accessToken,\r\n personUrn: params.personUrn,\r\n localPath,\r\n });\r\n break;\r\n case \"document\":\r\n assetUrn = await uploadDocument({\r\n accessToken: params.accessToken,\r\n personUrn: params.personUrn,\r\n localPath,\r\n });\r\n break;\r\n }\r\n\r\n results.push({\r\n assetUrn,\r\n mediaType,\r\n title: descriptor.title,\r\n description: descriptor.description,\r\n });\r\n } finally {\r\n await unlink(localPath).catch(() => undefined);\r\n }\r\n }\r\n\r\n return results;\r\n}\r\n\r\nfunction determineMediaType(\r\n explicitType: SocialMediaDescriptor[\"mediaType\"],\r\n localPath: string\r\n): \"image\" | \"video\" | \"document\" {\r\n if (explicitType) {\r\n return explicitType;\r\n }\r\n\r\n const extension = localPath.split(\".\").pop()?.toLowerCase();\r\n if (!extension) {\r\n throw new Error(\"Unable to determine media type from file extension\");\r\n }\r\n\r\n const imageExtensions = new Set([\"jpg\", \"jpeg\", \"png\", \"gif\", \"webp\"]);\r\n const videoExtensions = new Set([\"mp4\", \"mov\", \"m4v\", \"avi\", \"mkv\", \"webm\"]);\r\n const documentExtensions = new Set([\"pdf\", \"ppt\", \"pptx\", \"doc\", \"docx\"]);\r\n\r\n if (imageExtensions.has(extension)) {\r\n return \"image\";\r\n }\r\n if (videoExtensions.has(extension)) {\r\n return \"video\";\r\n }\r\n if (documentExtensions.has(extension)) {\r\n return \"document\";\r\n }\r\n\r\n throw new Error(`Unsupported media extension: ${extension}`);\r\n}\r\n\r\nasync function uploadImage(params: {\r\n accessToken: string;\r\n personUrn: string;\r\n localPath: string;\r\n}): Promise<string> {\r\n const initResponse = await fetch(IMAGES_URL, {\r\n method: \"POST\",\r\n headers: getApiHeaders(params.accessToken),\r\n body: JSON.stringify({\r\n initializeUploadRequest: {\r\n owner: params.personUrn,\r\n },\r\n }),\r\n });\r\n\r\n if (!initResponse.ok) {\r\n const errorText = await initResponse.text().catch(() => \"\");\r\n throw new Error(\r\n `LinkedIn image upload initialization failed: ${initResponse.status} ${errorText}`\r\n );\r\n }\r\n\r\n const initJson = (await initResponse.json()) as ImageInitResponse;\r\n const { uploadUrl, image } = initJson.value;\r\n\r\n if (!uploadUrl || !image) {\r\n throw new Error(\"LinkedIn image initialization response missing required fields\");\r\n }\r\n\r\n await uploadBinaryToLinkedIn({\r\n uploadUrl,\r\n localPath: params.localPath,\r\n mimeType: inferImageMime(params.localPath),\r\n });\r\n\r\n return image;\r\n}\r\n\r\nasync function uploadVideo(params: {\r\n accessToken: string;\r\n personUrn: string;\r\n localPath: string;\r\n}): Promise<string> {\r\n const fileSizeBytes = await getFileSize(params.localPath);\r\n\r\n const initResponse = await fetch(VIDEOS_URL, {\r\n method: \"POST\",\r\n headers: getApiHeaders(params.accessToken),\r\n body: JSON.stringify({\r\n initializeUploadRequest: {\r\n owner: params.personUrn,\r\n fileSizeBytes,\r\n uploadCaptions: false,\r\n uploadThumbnail: false,\r\n },\r\n }),\r\n });\r\n\r\n if (!initResponse.ok) {\r\n const errorText = await initResponse.text().catch(() => \"\");\r\n throw new Error(\r\n `LinkedIn video upload initialization failed: ${initResponse.status} ${errorText}`\r\n );\r\n }\r\n\r\n const initJson = (await initResponse.json()) as VideoInitResponse;\r\n const { uploadInstructions, video, uploadToken } = initJson.value;\r\n\r\n if (!uploadInstructions || !video || !uploadToken) {\r\n throw new Error(\"LinkedIn video initialization response missing required fields\");\r\n }\r\n\r\n const uploadedPartIds = await uploadVideoMultipart({\r\n localPath: params.localPath,\r\n uploadInstructions,\r\n });\r\n\r\n await finalizeVideoUpload({\r\n accessToken: params.accessToken,\r\n video,\r\n uploadToken,\r\n uploadedPartIds,\r\n });\r\n\r\n return video;\r\n}\r\n\r\nasync function uploadVideoMultipart(params: {\r\n localPath: string;\r\n uploadInstructions: VideoInitResponse[\"value\"][\"uploadInstructions\"];\r\n}): Promise<string[]> {\r\n const uploadedPartIds: string[] = [];\r\n\r\n for (const instruction of params.uploadInstructions) {\r\n const chunkStream = createReadStream(params.localPath, {\r\n start: instruction.firstByte,\r\n end: instruction.lastByte,\r\n });\r\n\r\n const uploadResponse = await fetch(instruction.uploadUrl, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/octet-stream\",\r\n },\r\n body: chunkStream,\r\n duplex: \"half\",\r\n });\r\n\r\n if (!uploadResponse.ok) {\r\n const errorText = await uploadResponse.text().catch(() => \"\");\r\n throw new Error(`LinkedIn video part upload failed: ${uploadResponse.status} ${errorText}`);\r\n }\r\n\r\n const etag = uploadResponse.headers.get(\"etag\");\r\n if (!etag) {\r\n throw new Error(\"LinkedIn video part upload response missing ETag header\");\r\n }\r\n\r\n uploadedPartIds.push(etag.replace(/\"/g, \"\"));\r\n }\r\n\r\n return uploadedPartIds;\r\n}\r\n\r\nasync function finalizeVideoUpload(params: {\r\n accessToken: string;\r\n video: string;\r\n uploadToken: string;\r\n uploadedPartIds: string[];\r\n}): Promise<void> {\r\n const response = await fetch(VIDEOS_FINALIZE_URL, {\r\n method: \"POST\",\r\n headers: getApiHeaders(params.accessToken),\r\n body: JSON.stringify({\r\n finalizeUploadRequest: {\r\n video: params.video,\r\n uploadToken: params.uploadToken,\r\n uploadedPartIds: params.uploadedPartIds,\r\n },\r\n }),\r\n });\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text().catch(() => \"\");\r\n throw new Error(`LinkedIn video finalize failed: ${response.status} ${errorText}`);\r\n }\r\n}\r\n\r\nasync function uploadDocument(params: {\r\n accessToken: string;\r\n personUrn: string;\r\n localPath: string;\r\n}): Promise<string> {\r\n const initResponse = await fetch(DOCUMENTS_URL, {\r\n method: \"POST\",\r\n headers: getApiHeaders(params.accessToken),\r\n body: JSON.stringify({\r\n initializeUploadRequest: {\r\n owner: params.personUrn,\r\n },\r\n }),\r\n });\r\n\r\n if (!initResponse.ok) {\r\n const errorText = await initResponse.text().catch(() => \"\");\r\n throw new Error(\r\n `LinkedIn document upload initialization failed: ${initResponse.status} ${errorText}`\r\n );\r\n }\r\n\r\n const initJson = (await initResponse.json()) as DocumentInitResponse;\r\n const { uploadUrl, document } = initJson.value;\r\n\r\n if (!uploadUrl || !document) {\r\n throw new Error(\"LinkedIn document initialization response missing required fields\");\r\n }\r\n\r\n await uploadBinaryToLinkedIn({\r\n uploadUrl,\r\n localPath: params.localPath,\r\n mimeType: inferDocumentMime(params.localPath),\r\n });\r\n\r\n return document;\r\n}\r\n\r\nasync function uploadBinaryToLinkedIn(params: {\r\n uploadUrl: string;\r\n localPath: string;\r\n mimeType: string;\r\n}): Promise<void> {\r\n const uploadResponse = await fetch(params.uploadUrl, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": params.mimeType,\r\n },\r\n body: createReadStream(params.localPath),\r\n duplex: \"half\",\r\n });\r\n\r\n if (!uploadResponse.ok) {\r\n const errorText = await uploadResponse.text().catch(() => \"\");\r\n throw new Error(`LinkedIn media upload failed: ${uploadResponse.status} ${errorText}`);\r\n }\r\n}\r\n\r\nasync function getFileSize(filePath: string): Promise<number> {\r\n const stats = await stat(filePath);\r\n return stats.size;\r\n}\r\n\r\nfunction inferImageMime(localPath: string): string {\r\n const extension = localPath.split(\".\").pop()?.toLowerCase();\r\n switch (extension) {\r\n case \"png\":\r\n return \"image/png\";\r\n case \"webp\":\r\n return \"image/webp\";\r\n case \"gif\":\r\n return \"image/gif\";\r\n case \"jpg\":\r\n case \"jpeg\":\r\n return \"image/jpeg\";\r\n default:\r\n return \"application/octet-stream\";\r\n }\r\n}\r\n\r\nfunction inferDocumentMime(localPath: string): string {\r\n const extension = localPath.split(\".\").pop()?.toLowerCase();\r\n switch (extension) {\r\n case \"pdf\":\r\n return \"application/pdf\";\r\n case \"doc\":\r\n return \"application/msword\";\r\n case \"docx\":\r\n return \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\";\r\n case \"ppt\":\r\n return \"application/vnd.ms-powerpoint\";\r\n case \"pptx\":\r\n return \"application/vnd.openxmlformats-officedocument.presentationml.presentation\";\r\n default:\r\n return \"application/octet-stream\";\r\n }\r\n}\r\n\r\nasync function publishPost(params: {\r\n accessToken: string;\r\n personUrn: string;\r\n payload: SocialPostPayload;\r\n uploadedAssets: UploadedAsset[];\r\n}): Promise<{ postUrn?: string; raw: unknown }> {\r\n const body = buildPostBody(params);\r\n\r\n const response = await fetch(POSTS_URL, {\r\n method: \"POST\",\r\n headers: getApiHeaders(params.accessToken),\r\n body: JSON.stringify(body),\r\n });\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text().catch(() => \"\");\r\n throw new Error(`LinkedIn post failed: ${response.status} ${errorText}`);\r\n }\r\n\r\n const postUrn = response.headers.get(\"x-restli-id\") ?? undefined;\r\n const raw = await safeJson(response);\r\n\r\n return { postUrn, raw };\r\n}\r\n\r\n/**\r\n * Escapes special characters in text for LinkedIn's post commentary field.\r\n * LinkedIn requires certain characters to be backslash-escaped.\r\n * Preserves mentions (@[Name](urn:li:...)) and hashtag templates ({hashtag|#|tag}).\r\n * Converts simple hashtags (#tag) to the template format.\r\n * @see https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/little-text-format\r\n */\r\nexport function escapeLinkedInText(text: string): string {\r\n // Patterns for LinkedIn elements that should not be escaped\r\n // MentionElement: @[FallbackText](urn:li:...)\r\n const mentionPattern = /@\\[[^\\]]*\\]\\(urn:li:[^)]+\\)/g;\r\n // HashtagTemplate: {hashtag|#|text} or {hashtag|#|text} (with optional escaped #)\r\n const hashtagTemplatePattern = /\\{hashtag\\|\\\\?[##]\\|[^}]+\\}/g;\r\n // Simple hashtag: #word (must start with a letter, not digit-only)\r\n const simpleHashtagPattern =\r\n /#([a-zA-Z\\u00C0-\\u024F\\u1E00-\\u1EFF][\\w\\u00C0-\\u024F\\u1E00-\\u1EFF]*)/g;\r\n\r\n // Store matches in array, use index-based placeholders with null character delimiters\r\n const preserved: string[] = [];\r\n\r\n const createPlaceholder = (content: string): string => {\r\n const index = preserved.length;\r\n preserved.push(content);\r\n return `\\x00${index}\\x00`;\r\n };\r\n\r\n // Replace mentions with placeholders (preserve as-is)\r\n let result = text.replace(mentionPattern, (match) => createPlaceholder(match));\r\n\r\n // Replace hashtag templates with placeholders (preserve as-is)\r\n result = result.replace(hashtagTemplatePattern, (match) => createPlaceholder(match));\r\n\r\n // Convert simple hashtags to template format with escaped #\r\n result = result.replace(simpleHashtagPattern, (_match, tag: string) =>\r\n createPlaceholder(`{hashtag|\\\\#|${tag}}`)\r\n );\r\n\r\n // Escape remaining special characters (order matters: backslash first)\r\n result = result\r\n .replace(/\\\\/g, \"\\\\\\\\\")\r\n .replace(/\\|/g, \"\\\\|\")\r\n .replace(/\\{/g, \"\\\\{\")\r\n .replace(/\\}/g, \"\\\\}\")\r\n .replace(/@/g, \"\\\\@\")\r\n .replace(/\\[/g, \"\\\\[\")\r\n .replace(/\\]/g, \"\\\\]\")\r\n .replace(/\\(/g, \"\\\\(\")\r\n .replace(/\\)/g, \"\\\\)\")\r\n .replace(/</g, \"\\\\<\")\r\n .replace(/>/g, \"\\\\>\")\r\n .replace(/#/g, \"\\\\#\")\r\n .replace(/\\*/g, \"\\\\*\")\r\n .replace(/_/g, \"\\\\_\")\r\n .replace(/~/g, \"\\\\~\");\r\n\r\n // Restore placeholders with preserved/transformed content\r\n // biome-ignore lint/suspicious/noControlCharactersInRegex: null chars are intentional placeholders\r\n result = result.replace(/\\x00(\\d+)\\x00/g, (_match, index: string) => preserved[Number(index)]);\r\n\r\n return result;\r\n}\r\n\r\nfunction buildPostBody(params: {\r\n personUrn: string;\r\n payload: SocialPostPayload;\r\n uploadedAssets: UploadedAsset[];\r\n}): Record<string, unknown> {\r\n const { personUrn, payload, uploadedAssets } = params;\r\n\r\n const basePost = {\r\n author: personUrn,\r\n commentary: escapeLinkedInText(payload.text),\r\n visibility: payload.visibility,\r\n distribution: {\r\n feedDistribution: \"MAIN_FEED\",\r\n targetEntities: [],\r\n thirdPartyDistributionChannels: [],\r\n },\r\n lifecycleState: \"PUBLISHED\",\r\n isReshareDisabledByAuthor: false,\r\n };\r\n\r\n if (uploadedAssets.length === 0) {\r\n return basePost;\r\n }\r\n\r\n if (uploadedAssets.length > 1) {\r\n throw new Error(\"LinkedIn Posts API currently supports only a single media asset per post\");\r\n }\r\n\r\n const asset = uploadedAssets[0];\r\n\r\n const mediaContent: Record<string, unknown> = {\r\n id: asset.assetUrn,\r\n };\r\n\r\n if (asset.title) {\r\n mediaContent.title = asset.title;\r\n }\r\n\r\n if (asset.description && asset.mediaType === \"image\") {\r\n mediaContent.altText = asset.description;\r\n }\r\n\r\n return {\r\n ...basePost,\r\n content: {\r\n media: mediaContent,\r\n },\r\n };\r\n}\r\n\r\nasync function safeJson(response: globalThis.Response): Promise<unknown> {\r\n try {\r\n return await response.json();\r\n } catch {\r\n return undefined;\r\n }\r\n}\r\n"],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { ServerResultAsync } from "../base/base.dto.mjs";
2
+ import { RequiredServiceActor } from "../base/base.actor.mjs";
3
+ import { BaseService } from "../base/base.service.mjs";
4
+ import { ConnectRepository } from "../connect/connect.repository.mjs";
5
+ import { ConnectService } from "../connect/connect.service.mjs";
6
+ import { FileService } from "../file/file.service.mjs";
7
+ import { SocialPostInput } from "./social.dto.mjs";
8
+ import { SocialPostResult, SocialProvider } from "./social.types.mjs";
9
+
10
+ //#region src/modules/social/social.service.d.ts
11
+ declare class SocialService extends BaseService<{
12
+ connect: ConnectRepository;
13
+ }, {
14
+ connect: ConnectService;
15
+ file: FileService;
16
+ }> {
17
+ private providers;
18
+ constructor(repositories: {
19
+ connect: ConnectRepository;
20
+ }, services: {
21
+ connect: ConnectService;
22
+ file: FileService;
23
+ }, providers: SocialProvider[]);
24
+ getProvider(id: string): SocialProvider | null;
25
+ postToProvider(providerId: string, input: SocialPostInput, {
26
+ actor
27
+ }: {
28
+ actor: RequiredServiceActor<"user">;
29
+ }): ServerResultAsync<SocialPostResult>;
30
+ private ensureFreshConnection;
31
+ }
32
+ //#endregion
33
+ export { SocialService };
34
+ //# sourceMappingURL=social.service.d.mts.map
@@ -0,0 +1,55 @@
1
+ import { BaseService } from "../base/base.service.mjs";
2
+ import { ok } from "neverthrow";
3
+ //#region src/modules/social/social.service.ts
4
+ var SocialService = class extends BaseService {
5
+ providers = /* @__PURE__ */ new Map();
6
+ constructor(repositories, services, providers) {
7
+ super(repositories, services);
8
+ this.providers = new Map(providers.map((provider) => [provider.id, provider]));
9
+ }
10
+ getProvider(id) {
11
+ return this.providers.get(id) ?? null;
12
+ }
13
+ async postToProvider(providerId, input, { actor }) {
14
+ return this.throwableAsync(async () => {
15
+ const provider = this.getProvider(providerId);
16
+ if (!provider) return this.error("BAD_REQUEST", `Unknown provider: ${providerId}`);
17
+ const connectionResult = await this.repository.connect.list({
18
+ userId: actor.userId,
19
+ providers: [providerId]
20
+ });
21
+ if (connectionResult.isErr()) return this.error("INTERNAL_SERVER_ERROR", "Failed to load connection", { cause: connectionResult.error });
22
+ const activeConnection = connectionResult.value.sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime())[0];
23
+ const connection = await this.ensureFreshConnection(activeConnection);
24
+ if (connection.isErr()) return this.error("INTERNAL_SERVER_ERROR", "Failed to refresh connection", { cause: connection.error });
25
+ const payload = {
26
+ text: input.text,
27
+ media: input.media,
28
+ visibility: input.visibility ?? "PUBLIC"
29
+ };
30
+ const accessToken = connection.value.accessToken;
31
+ if (!accessToken) return this.error("BAD_REQUEST", "Missing access token for connection");
32
+ return ok(await provider.post({
33
+ deps: { fileService: this.service.file },
34
+ context: {
35
+ userId: actor.userId,
36
+ connection: connection.value,
37
+ accessToken
38
+ },
39
+ payload
40
+ }));
41
+ });
42
+ }
43
+ async ensureFreshConnection(connection) {
44
+ if (!connection.expiresAt || !connection.refreshToken) return ok(connection);
45
+ const expiresAt = new Date(connection.expiresAt);
46
+ if (Date.now() < expiresAt.getTime() - 60 * 1e3) return ok(connection);
47
+ const refreshed = await this.service.connect.refreshToken(connection.id);
48
+ if (refreshed.isErr()) return this.error("INTERNAL_SERVER_ERROR", "Failed to refresh access token", { cause: refreshed.error });
49
+ return ok(refreshed.value);
50
+ }
51
+ };
52
+ //#endregion
53
+ export { SocialService };
54
+
55
+ //# sourceMappingURL=social.service.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"social.service.mjs","names":[],"sources":["../../../../src/modules/social/social.service.ts"],"sourcesContent":["import { ok } from \"neverthrow\";\r\nimport type { RequiredServiceActor } from \"../base/base.actor\";\r\nimport type { ServerResultAsync } from \"../base/base.dto\";\r\nimport { BaseService } from \"../base/base.service\";\r\nimport type { ConnectRepository, ConnectRow } from \"../connect/connect.repository\";\r\nimport type { ConnectService } from \"../connect/connect.service\";\r\nimport type { FileService } from \"../file/file.service\";\r\nimport type { SocialPostInput } from \"./social.dto\";\r\nimport type { SocialPostPayload, SocialPostResult, SocialProvider } from \"./social.types\";\r\n\r\nexport class SocialService extends BaseService<\r\n {\r\n connect: ConnectRepository;\r\n },\r\n {\r\n connect: ConnectService;\r\n file: FileService;\r\n }\r\n> {\r\n private providers = new Map<string, SocialProvider>();\r\n\r\n constructor(\r\n repositories: { connect: ConnectRepository },\r\n services: { connect: ConnectService; file: FileService },\r\n providers: SocialProvider[]\r\n ) {\r\n super(repositories, services);\r\n this.providers = new Map(providers.map((provider) => [provider.id, provider]));\r\n }\r\n\r\n getProvider(id: string): SocialProvider | null {\r\n return this.providers.get(id) ?? null;\r\n }\r\n\r\n async postToProvider(\r\n providerId: string,\r\n input: SocialPostInput,\r\n { actor }: { actor: RequiredServiceActor<\"user\"> }\r\n ): ServerResultAsync<SocialPostResult> {\r\n return this.throwableAsync(async () => {\r\n const provider = this.getProvider(providerId);\r\n if (!provider) {\r\n return this.error(\"BAD_REQUEST\", `Unknown provider: ${providerId}`);\r\n }\r\n\r\n const connectionResult = await this.repository.connect.list({\r\n userId: actor.userId,\r\n providers: [providerId],\r\n });\r\n\r\n if (connectionResult.isErr()) {\r\n return this.error(\"INTERNAL_SERVER_ERROR\", \"Failed to load connection\", {\r\n cause: connectionResult.error,\r\n });\r\n }\r\n\r\n const activeConnection = connectionResult.value.sort(\r\n (a, b) => a.createdAt.getTime() - b.createdAt.getTime()\r\n )[0];\r\n\r\n const connection = await this.ensureFreshConnection(activeConnection);\r\n if (connection.isErr()) {\r\n return this.error(\"INTERNAL_SERVER_ERROR\", \"Failed to refresh connection\", {\r\n cause: connection.error,\r\n });\r\n }\r\n\r\n const payload: SocialPostPayload = {\r\n text: input.text,\r\n media: input.media,\r\n visibility: input.visibility ?? \"PUBLIC\",\r\n };\r\n\r\n const accessToken = connection.value.accessToken;\r\n if (!accessToken) {\r\n return this.error(\"BAD_REQUEST\", \"Missing access token for connection\");\r\n }\r\n\r\n const result = await provider.post({\r\n deps: { fileService: this.service.file },\r\n context: {\r\n userId: actor.userId,\r\n connection: connection.value,\r\n accessToken,\r\n },\r\n payload,\r\n });\r\n\r\n return ok(result);\r\n });\r\n }\r\n\r\n private async ensureFreshConnection(connection: ConnectRow): ServerResultAsync<ConnectRow> {\r\n if (!connection.expiresAt || !connection.refreshToken) {\r\n return ok(connection);\r\n }\r\n\r\n const expiresAt = new Date(connection.expiresAt);\r\n const bufferMs = 60 * 1000; // Refresh 1 minute before expiry\r\n if (Date.now() < expiresAt.getTime() - bufferMs) {\r\n return ok(connection);\r\n }\r\n\r\n const refreshed = await this.service.connect.refreshToken(connection.id);\r\n if (refreshed.isErr()) {\r\n return this.error(\"INTERNAL_SERVER_ERROR\", \"Failed to refresh access token\", {\r\n cause: refreshed.error,\r\n });\r\n }\r\n\r\n return ok(refreshed.value);\r\n }\r\n}\r\n"],"mappings":";;;AAUA,IAAa,gBAAb,cAAmC,YAQjC;CACA,4BAAoB,IAAI,KAA6B;CAErD,YACE,cACA,UACA,WACA;AACA,QAAM,cAAc,SAAS;AAC7B,OAAK,YAAY,IAAI,IAAI,UAAU,KAAK,aAAa,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC;;CAGhF,YAAY,IAAmC;AAC7C,SAAO,KAAK,UAAU,IAAI,GAAG,IAAI;;CAGnC,MAAM,eACJ,YACA,OACA,EAAE,SACmC;AACrC,SAAO,KAAK,eAAe,YAAY;GACrC,MAAM,WAAW,KAAK,YAAY,WAAW;AAC7C,OAAI,CAAC,SACH,QAAO,KAAK,MAAM,eAAe,qBAAqB,aAAa;GAGrE,MAAM,mBAAmB,MAAM,KAAK,WAAW,QAAQ,KAAK;IAC1D,QAAQ,MAAM;IACd,WAAW,CAAC,WAAW;IACxB,CAAC;AAEF,OAAI,iBAAiB,OAAO,CAC1B,QAAO,KAAK,MAAM,yBAAyB,6BAA6B,EACtE,OAAO,iBAAiB,OACzB,CAAC;GAGJ,MAAM,mBAAmB,iBAAiB,MAAM,MAC7C,GAAG,MAAM,EAAE,UAAU,SAAS,GAAG,EAAE,UAAU,SAAS,CACxD,CAAC;GAEF,MAAM,aAAa,MAAM,KAAK,sBAAsB,iBAAiB;AACrE,OAAI,WAAW,OAAO,CACpB,QAAO,KAAK,MAAM,yBAAyB,gCAAgC,EACzE,OAAO,WAAW,OACnB,CAAC;GAGJ,MAAM,UAA6B;IACjC,MAAM,MAAM;IACZ,OAAO,MAAM;IACb,YAAY,MAAM,cAAc;IACjC;GAED,MAAM,cAAc,WAAW,MAAM;AACrC,OAAI,CAAC,YACH,QAAO,KAAK,MAAM,eAAe,sCAAsC;AAazE,UAAO,GAVQ,MAAM,SAAS,KAAK;IACjC,MAAM,EAAE,aAAa,KAAK,QAAQ,MAAM;IACxC,SAAS;KACP,QAAQ,MAAM;KACd,YAAY,WAAW;KACvB;KACD;IACD;IACD,CAAC,CAEe;IACjB;;CAGJ,MAAc,sBAAsB,YAAuD;AACzF,MAAI,CAAC,WAAW,aAAa,CAAC,WAAW,aACvC,QAAO,GAAG,WAAW;EAGvB,MAAM,YAAY,IAAI,KAAK,WAAW,UAAU;AAEhD,MAAI,KAAK,KAAK,GAAG,UAAU,SAAS,GADnB,KAAK,IAEpB,QAAO,GAAG,WAAW;EAGvB,MAAM,YAAY,MAAM,KAAK,QAAQ,QAAQ,aAAa,WAAW,GAAG;AACxE,MAAI,UAAU,OAAO,CACnB,QAAO,KAAK,MAAM,yBAAyB,kCAAkC,EAC3E,OAAO,UAAU,OAClB,CAAC;AAGJ,SAAO,GAAG,UAAU,MAAM"}
@@ -0,0 +1,40 @@
1
+ import { ConnectRow } from "../connect/connect.repository.mjs";
2
+ import { FileService } from "../file/file.service.mjs";
3
+
4
+ //#region src/modules/social/social.types.d.ts
5
+ type SocialMediaType = "image" | "video" | "document";
6
+ interface SocialMediaDescriptor {
7
+ readonly s3Path: string;
8
+ readonly mediaType?: SocialMediaType;
9
+ readonly title?: string;
10
+ readonly description?: string;
11
+ }
12
+ type SocialVisibility = "PUBLIC" | "CONNECTIONS";
13
+ interface SocialPostPayload {
14
+ readonly text: string;
15
+ readonly media?: readonly SocialMediaDescriptor[];
16
+ readonly visibility: SocialVisibility;
17
+ }
18
+ interface SocialProviderContext {
19
+ readonly userId: string;
20
+ readonly connection: ConnectRow;
21
+ readonly accessToken: string;
22
+ }
23
+ interface SocialProviderDeps {
24
+ readonly fileService: FileService;
25
+ }
26
+ interface SocialPostResult {
27
+ readonly shareUrn?: string;
28
+ readonly rawResponse?: unknown;
29
+ }
30
+ interface SocialProvider {
31
+ readonly id: string;
32
+ post(options: {
33
+ deps: SocialProviderDeps;
34
+ context: SocialProviderContext;
35
+ payload: SocialPostPayload;
36
+ }): Promise<SocialPostResult>;
37
+ }
38
+ //#endregion
39
+ export { SocialMediaDescriptor, SocialMediaType, SocialPostPayload, SocialPostResult, SocialProvider, SocialProviderContext, SocialProviderDeps, SocialVisibility };
40
+ //# sourceMappingURL=social.types.d.mts.map
@@ -0,0 +1,352 @@
1
+ import * as _$drizzle_orm_sqlite_core0 from "drizzle-orm/sqlite-core";
2
+
3
+ //#region src/modules/tag/tag.db.d.ts
4
+ declare const tags: _$drizzle_orm_sqlite_core0.SQLiteTableWithColumns<{
5
+ name: "tags";
6
+ schema: undefined;
7
+ columns: {
8
+ id: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
9
+ name: "id";
10
+ tableName: "tags";
11
+ dataType: "string";
12
+ columnType: "SQLiteText";
13
+ data: string;
14
+ driverParam: string;
15
+ notNull: true;
16
+ hasDefault: true;
17
+ isPrimaryKey: true;
18
+ isAutoincrement: false;
19
+ hasRuntimeDefault: true;
20
+ enumValues: [string, ...string[]];
21
+ baseColumn: never;
22
+ identity: undefined;
23
+ generated: undefined;
24
+ }, {}, {
25
+ length: number | undefined;
26
+ }>;
27
+ createdAt: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
28
+ name: "created_at";
29
+ tableName: "tags";
30
+ dataType: "date";
31
+ columnType: "SQLiteTimestamp";
32
+ data: Date;
33
+ driverParam: number;
34
+ notNull: true;
35
+ hasDefault: true;
36
+ isPrimaryKey: false;
37
+ isAutoincrement: false;
38
+ hasRuntimeDefault: true;
39
+ enumValues: undefined;
40
+ baseColumn: never;
41
+ identity: undefined;
42
+ generated: undefined;
43
+ }, {}, {}>;
44
+ updatedAt: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
45
+ name: "updated_at";
46
+ tableName: "tags";
47
+ dataType: "date";
48
+ columnType: "SQLiteTimestamp";
49
+ data: Date;
50
+ driverParam: number;
51
+ notNull: false;
52
+ hasDefault: false;
53
+ isPrimaryKey: false;
54
+ isAutoincrement: false;
55
+ hasRuntimeDefault: false;
56
+ enumValues: undefined;
57
+ baseColumn: never;
58
+ identity: undefined;
59
+ generated: undefined;
60
+ }, {}, {}>;
61
+ deletedAt: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
62
+ name: "deleted_at";
63
+ tableName: "tags";
64
+ dataType: "date";
65
+ columnType: "SQLiteTimestamp";
66
+ data: Date;
67
+ driverParam: number;
68
+ notNull: false;
69
+ hasDefault: false;
70
+ isPrimaryKey: false;
71
+ isAutoincrement: false;
72
+ hasRuntimeDefault: false;
73
+ enumValues: undefined;
74
+ baseColumn: never;
75
+ identity: undefined;
76
+ generated: undefined;
77
+ }, {}, {}>;
78
+ userId: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
79
+ name: "user_id";
80
+ tableName: "tags";
81
+ dataType: "string";
82
+ columnType: "SQLiteText";
83
+ data: string;
84
+ driverParam: string;
85
+ notNull: true;
86
+ hasDefault: false;
87
+ isPrimaryKey: false;
88
+ isAutoincrement: false;
89
+ hasRuntimeDefault: false;
90
+ enumValues: [string, ...string[]];
91
+ baseColumn: never;
92
+ identity: undefined;
93
+ generated: undefined;
94
+ }, {}, {
95
+ length: number | undefined;
96
+ }>;
97
+ organizationId: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
98
+ name: "organization_id";
99
+ tableName: "tags";
100
+ dataType: "string";
101
+ columnType: "SQLiteText";
102
+ data: string;
103
+ driverParam: string;
104
+ notNull: false;
105
+ hasDefault: false;
106
+ isPrimaryKey: false;
107
+ isAutoincrement: false;
108
+ hasRuntimeDefault: false;
109
+ enumValues: [string, ...string[]];
110
+ baseColumn: never;
111
+ identity: undefined;
112
+ generated: undefined;
113
+ }, {}, {
114
+ length: number | undefined;
115
+ }>;
116
+ teamId: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
117
+ name: "team_id";
118
+ tableName: "tags";
119
+ dataType: "string";
120
+ columnType: "SQLiteText";
121
+ data: string;
122
+ driverParam: string;
123
+ notNull: false;
124
+ hasDefault: false;
125
+ isPrimaryKey: false;
126
+ isAutoincrement: false;
127
+ hasRuntimeDefault: false;
128
+ enumValues: [string, ...string[]];
129
+ baseColumn: never;
130
+ identity: undefined;
131
+ generated: undefined;
132
+ }, {}, {
133
+ length: number | undefined;
134
+ }>;
135
+ name: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
136
+ name: "name";
137
+ tableName: "tags";
138
+ dataType: "string";
139
+ columnType: "SQLiteText";
140
+ data: string;
141
+ driverParam: string;
142
+ notNull: true;
143
+ hasDefault: false;
144
+ isPrimaryKey: false;
145
+ isAutoincrement: false;
146
+ hasRuntimeDefault: false;
147
+ enumValues: [string, ...string[]];
148
+ baseColumn: never;
149
+ identity: undefined;
150
+ generated: undefined;
151
+ }, {}, {
152
+ length: number | undefined;
153
+ }>;
154
+ color: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
155
+ name: "color";
156
+ tableName: "tags";
157
+ dataType: "string";
158
+ columnType: "SQLiteText";
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
+ length: number | undefined;
172
+ }>;
173
+ type: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
174
+ name: "type";
175
+ tableName: "tags";
176
+ dataType: "string";
177
+ columnType: "SQLiteText";
178
+ data: string;
179
+ driverParam: string;
180
+ notNull: false;
181
+ hasDefault: false;
182
+ isPrimaryKey: false;
183
+ isAutoincrement: false;
184
+ hasRuntimeDefault: false;
185
+ enumValues: [string, ...string[]];
186
+ baseColumn: never;
187
+ identity: undefined;
188
+ generated: undefined;
189
+ }, {}, {
190
+ length: number | undefined;
191
+ }>;
192
+ isEnabled: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
193
+ name: "is_enabled";
194
+ tableName: "tags";
195
+ dataType: "boolean";
196
+ columnType: "SQLiteBoolean";
197
+ data: boolean;
198
+ driverParam: number;
199
+ notNull: true;
200
+ hasDefault: true;
201
+ isPrimaryKey: false;
202
+ isAutoincrement: false;
203
+ hasRuntimeDefault: false;
204
+ enumValues: undefined;
205
+ baseColumn: never;
206
+ identity: undefined;
207
+ generated: undefined;
208
+ }, {}, {}>;
209
+ parentId: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
210
+ name: "parent_id";
211
+ tableName: "tags";
212
+ dataType: "string";
213
+ columnType: "SQLiteText";
214
+ data: string;
215
+ driverParam: string;
216
+ notNull: false;
217
+ hasDefault: false;
218
+ isPrimaryKey: false;
219
+ isAutoincrement: false;
220
+ hasRuntimeDefault: false;
221
+ enumValues: [string, ...string[]];
222
+ baseColumn: never;
223
+ identity: undefined;
224
+ generated: undefined;
225
+ }, {}, {
226
+ length: number | undefined;
227
+ }>;
228
+ assignableTo: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
229
+ name: "assignable_to";
230
+ tableName: "tags";
231
+ dataType: "json";
232
+ columnType: "SQLiteTextJson";
233
+ data: string[];
234
+ driverParam: string;
235
+ notNull: true;
236
+ hasDefault: false;
237
+ isPrimaryKey: false;
238
+ isAutoincrement: false;
239
+ hasRuntimeDefault: false;
240
+ enumValues: undefined;
241
+ baseColumn: never;
242
+ identity: undefined;
243
+ generated: undefined;
244
+ }, {}, {
245
+ $type: string[];
246
+ }>;
247
+ };
248
+ dialect: "sqlite";
249
+ }>;
250
+ declare const taggings: _$drizzle_orm_sqlite_core0.SQLiteTableWithColumns<{
251
+ name: "taggings";
252
+ schema: undefined;
253
+ columns: {
254
+ id: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
255
+ name: "id";
256
+ tableName: "taggings";
257
+ dataType: "string";
258
+ columnType: "SQLiteText";
259
+ data: string;
260
+ driverParam: string;
261
+ notNull: true;
262
+ hasDefault: true;
263
+ isPrimaryKey: true;
264
+ isAutoincrement: false;
265
+ hasRuntimeDefault: true;
266
+ enumValues: [string, ...string[]];
267
+ baseColumn: never;
268
+ identity: undefined;
269
+ generated: undefined;
270
+ }, {}, {
271
+ length: number | undefined;
272
+ }>;
273
+ createdAt: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
274
+ name: "created_at";
275
+ tableName: "taggings";
276
+ dataType: "date";
277
+ columnType: "SQLiteTimestamp";
278
+ data: Date;
279
+ driverParam: number;
280
+ notNull: true;
281
+ hasDefault: true;
282
+ isPrimaryKey: false;
283
+ isAutoincrement: false;
284
+ hasRuntimeDefault: true;
285
+ enumValues: undefined;
286
+ baseColumn: never;
287
+ identity: undefined;
288
+ generated: undefined;
289
+ }, {}, {}>;
290
+ tagId: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
291
+ name: "tag_id";
292
+ tableName: "taggings";
293
+ dataType: "string";
294
+ columnType: "SQLiteText";
295
+ data: string;
296
+ driverParam: string;
297
+ notNull: true;
298
+ hasDefault: false;
299
+ isPrimaryKey: false;
300
+ isAutoincrement: false;
301
+ hasRuntimeDefault: false;
302
+ enumValues: [string, ...string[]];
303
+ baseColumn: never;
304
+ identity: undefined;
305
+ generated: undefined;
306
+ }, {}, {
307
+ length: number | undefined;
308
+ }>;
309
+ resourceType: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
310
+ name: "resource_type";
311
+ tableName: "taggings";
312
+ dataType: "string";
313
+ columnType: "SQLiteText";
314
+ data: string;
315
+ driverParam: string;
316
+ notNull: true;
317
+ hasDefault: false;
318
+ isPrimaryKey: false;
319
+ isAutoincrement: false;
320
+ hasRuntimeDefault: false;
321
+ enumValues: [string, ...string[]];
322
+ baseColumn: never;
323
+ identity: undefined;
324
+ generated: undefined;
325
+ }, {}, {
326
+ length: number | undefined;
327
+ }>;
328
+ resourceId: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
329
+ name: "resource_id";
330
+ tableName: "taggings";
331
+ dataType: "string";
332
+ columnType: "SQLiteText";
333
+ data: string;
334
+ driverParam: string;
335
+ notNull: true;
336
+ hasDefault: false;
337
+ isPrimaryKey: false;
338
+ isAutoincrement: false;
339
+ hasRuntimeDefault: false;
340
+ enumValues: [string, ...string[]];
341
+ baseColumn: never;
342
+ identity: undefined;
343
+ generated: undefined;
344
+ }, {}, {
345
+ length: number | undefined;
346
+ }>;
347
+ };
348
+ dialect: "sqlite";
349
+ }>;
350
+ //#endregion
351
+ export { taggings, tags };
352
+ //# sourceMappingURL=tag.db.d.mts.map
@@ -0,0 +1,35 @@
1
+ import { __exportAll } from "../../../_virtual/_rolldown/runtime.mjs";
2
+ import { organizations, teams, users } from "../auth/auth.db.mjs";
3
+ import { integer, sqliteTable, text } from "drizzle-orm/sqlite-core";
4
+ import { v4 } from "uuid";
5
+ //#region src/modules/tag/tag.db.ts
6
+ var tag_db_exports = /* @__PURE__ */ __exportAll({
7
+ taggings: () => taggings,
8
+ tags: () => tags
9
+ });
10
+ const tags = sqliteTable("tags", {
11
+ id: text("id").primaryKey().$default(v4),
12
+ createdAt: integer("created_at", { mode: "timestamp" }).notNull().$default(() => /* @__PURE__ */ new Date()),
13
+ updatedAt: integer("updated_at", { mode: "timestamp" }),
14
+ deletedAt: integer("deleted_at", { mode: "timestamp" }),
15
+ userId: text("user_id").notNull().references(() => users.id, { onDelete: "cascade" }),
16
+ organizationId: text("organization_id").references(() => organizations.id, { onDelete: "cascade" }),
17
+ teamId: text("team_id").references(() => teams.id, { onDelete: "cascade" }),
18
+ name: text("name").notNull(),
19
+ color: text("color"),
20
+ type: text("type"),
21
+ isEnabled: integer("is_enabled", { mode: "boolean" }).notNull().default(true),
22
+ parentId: text("parent_id").references(() => tags.id, { onDelete: "set null" }),
23
+ assignableTo: text("assignable_to", { mode: "json" }).notNull().$type()
24
+ });
25
+ const taggings = sqliteTable("taggings", {
26
+ id: text("id").primaryKey().$default(v4),
27
+ createdAt: integer("created_at", { mode: "timestamp" }).notNull().$default(() => /* @__PURE__ */ new Date()),
28
+ tagId: text("tag_id").notNull().references(() => tags.id, { onDelete: "cascade" }),
29
+ resourceType: text("resource_type").notNull(),
30
+ resourceId: text("resource_id").notNull()
31
+ });
32
+ //#endregion
33
+ export { tag_db_exports, taggings, tags };
34
+
35
+ //# sourceMappingURL=tag.db.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag.db.mjs","names":["uuidv4"],"sources":["../../../../src/modules/tag/tag.db.ts"],"sourcesContent":["import { type AnySQLiteColumn, integer, sqliteTable, text } from \"drizzle-orm/sqlite-core\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport { organizations, teams, users } from \"../auth/auth.db\";\r\n\r\nexport const tags = sqliteTable(\"tags\", {\r\n id: text(\"id\").primaryKey().$default(uuidv4),\r\n createdAt: integer(\"created_at\", { mode: \"timestamp\" })\r\n .notNull()\r\n .$default(() => new Date()),\r\n updatedAt: integer(\"updated_at\", { mode: \"timestamp\" }),\r\n deletedAt: integer(\"deleted_at\", { mode: \"timestamp\" }),\r\n userId: text(\"user_id\")\r\n .notNull()\r\n .references(() => users.id, { onDelete: \"cascade\" }),\r\n organizationId: text(\"organization_id\").references(() => organizations.id, {\r\n onDelete: \"cascade\",\r\n }),\r\n teamId: text(\"team_id\").references(() => teams.id, { onDelete: \"cascade\" }),\r\n name: text(\"name\").notNull(),\r\n color: text(\"color\"),\r\n type: text(\"type\"),\r\n isEnabled: integer(\"is_enabled\", { mode: \"boolean\" }).notNull().default(true),\r\n parentId: text(\"parent_id\").references((): AnySQLiteColumn => tags.id, { onDelete: \"set null\" }),\r\n assignableTo: text(\"assignable_to\", {\r\n mode: \"json\",\r\n })\r\n .notNull()\r\n .$type<string[]>(),\r\n});\r\n\r\nexport const taggings = sqliteTable(\"taggings\", {\r\n id: text(\"id\").primaryKey().$default(uuidv4),\r\n createdAt: integer(\"created_at\", { mode: \"timestamp\" })\r\n .notNull()\r\n .$default(() => new Date()),\r\n tagId: text(\"tag_id\")\r\n .notNull()\r\n .references(() => tags.id, { onDelete: \"cascade\" }),\r\n resourceType: text(\"resource_type\").notNull(), // e.g., \"post\", \"image\"\r\n resourceId: text(\"resource_id\").notNull(), // id in the resource table\r\n});\r\n"],"mappings":";;;;;;;;;AAIA,MAAa,OAAO,YAAY,QAAQ;CACtC,IAAI,KAAK,KAAK,CAAC,YAAY,CAAC,SAASA,GAAO;CAC5C,WAAW,QAAQ,cAAc,EAAE,MAAM,aAAa,CAAC,CACpD,SAAS,CACT,+BAAe,IAAI,MAAM,CAAC;CAC7B,WAAW,QAAQ,cAAc,EAAE,MAAM,aAAa,CAAC;CACvD,WAAW,QAAQ,cAAc,EAAE,MAAM,aAAa,CAAC;CACvD,QAAQ,KAAK,UAAU,CACpB,SAAS,CACT,iBAAiB,MAAM,IAAI,EAAE,UAAU,WAAW,CAAC;CACtD,gBAAgB,KAAK,kBAAkB,CAAC,iBAAiB,cAAc,IAAI,EACzE,UAAU,WACX,CAAC;CACF,QAAQ,KAAK,UAAU,CAAC,iBAAiB,MAAM,IAAI,EAAE,UAAU,WAAW,CAAC;CAC3E,MAAM,KAAK,OAAO,CAAC,SAAS;CAC5B,OAAO,KAAK,QAAQ;CACpB,MAAM,KAAK,OAAO;CAClB,WAAW,QAAQ,cAAc,EAAE,MAAM,WAAW,CAAC,CAAC,SAAS,CAAC,QAAQ,KAAK;CAC7E,UAAU,KAAK,YAAY,CAAC,iBAAkC,KAAK,IAAI,EAAE,UAAU,YAAY,CAAC;CAChG,cAAc,KAAK,iBAAiB,EAClC,MAAM,QACP,CAAC,CACC,SAAS,CACT,OAAiB;CACrB,CAAC;AAEF,MAAa,WAAW,YAAY,YAAY;CAC9C,IAAI,KAAK,KAAK,CAAC,YAAY,CAAC,SAASA,GAAO;CAC5C,WAAW,QAAQ,cAAc,EAAE,MAAM,aAAa,CAAC,CACpD,SAAS,CACT,+BAAe,IAAI,MAAM,CAAC;CAC7B,OAAO,KAAK,SAAS,CAClB,SAAS,CACT,iBAAiB,KAAK,IAAI,EAAE,UAAU,WAAW,CAAC;CACrD,cAAc,KAAK,gBAAgB,CAAC,SAAS;CAC7C,YAAY,KAAK,cAAc,CAAC,SAAS;CAC1C,CAAC"}