@m5kdev/backend 0.6.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 (553) 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.js +0 -9
  363. package/dist/src/modules/access/access.repository.d.ts +0 -2347
  364. package/dist/src/modules/access/access.repository.js +0 -32
  365. package/dist/src/modules/access/access.service.d.ts +0 -21
  366. package/dist/src/modules/access/access.service.js +0 -51
  367. package/dist/src/modules/access/access.test.js +0 -182
  368. package/dist/src/modules/access/access.utils.d.ts +0 -16
  369. package/dist/src/modules/access/access.utils.js +0 -20
  370. package/dist/src/modules/ai/ai.db.d.ts +0 -395
  371. package/dist/src/modules/ai/ai.db.js +0 -39
  372. package/dist/src/modules/ai/ai.prompt.d.ts +0 -26
  373. package/dist/src/modules/ai/ai.prompt.js +0 -30
  374. package/dist/src/modules/ai/ai.prompts.d.ts +0 -5
  375. package/dist/src/modules/ai/ai.repository.d.ts +0 -423
  376. package/dist/src/modules/ai/ai.repository.js +0 -26
  377. package/dist/src/modules/ai/ai.router.js +0 -132
  378. package/dist/src/modules/ai/ai.service.d.ts +0 -127
  379. package/dist/src/modules/ai/ai.service.js +0 -297
  380. package/dist/src/modules/ai/ai.trpc.d.ts +0 -22
  381. package/dist/src/modules/ai/ai.trpc.js +0 -20
  382. package/dist/src/modules/ai/ideogram/ideogram.constants.d.ts +0 -7
  383. package/dist/src/modules/ai/ideogram/ideogram.constants.js +0 -167
  384. package/dist/src/modules/ai/ideogram/ideogram.dto.d.ts +0 -229
  385. package/dist/src/modules/ai/ideogram/ideogram.dto.js +0 -49
  386. package/dist/src/modules/ai/ideogram/ideogram.prompt.d.ts +0 -2
  387. package/dist/src/modules/ai/ideogram/ideogram.repository.d.ts +0 -6
  388. package/dist/src/modules/ai/ideogram/ideogram.repository.js +0 -46
  389. package/dist/src/modules/ai/ideogram/ideogram.service.d.ts +0 -9
  390. package/dist/src/modules/ai/ideogram/ideogram.service.js +0 -11
  391. package/dist/src/modules/auth/auth.db.d.ts +0 -2335
  392. package/dist/src/modules/auth/auth.db.js +0 -215
  393. package/dist/src/modules/auth/auth.dto.d.ts +0 -65
  394. package/dist/src/modules/auth/auth.dto.js +0 -38
  395. package/dist/src/modules/auth/auth.lib.d.ts +0 -4873
  396. package/dist/src/modules/auth/auth.lib.js +0 -284
  397. package/dist/src/modules/auth/auth.middleware.d.ts +0 -614
  398. package/dist/src/modules/auth/auth.middleware.js +0 -52
  399. package/dist/src/modules/auth/auth.repository.d.ts +0 -2421
  400. package/dist/src/modules/auth/auth.repository.js +0 -636
  401. package/dist/src/modules/auth/auth.service.d.ts +0 -108
  402. package/dist/src/modules/auth/auth.service.js +0 -246
  403. package/dist/src/modules/auth/auth.trpc.d.ts +0 -292
  404. package/dist/src/modules/auth/auth.trpc.js +0 -179
  405. package/dist/src/modules/auth/auth.utils.d.ts +0 -2351
  406. package/dist/src/modules/auth/auth.utils.js +0 -97
  407. package/dist/src/modules/base/base.abstract.d.ts +0 -19
  408. package/dist/src/modules/base/base.abstract.js +0 -62
  409. package/dist/src/modules/base/base.dto.d.ts +0 -69
  410. package/dist/src/modules/base/base.dto.js +0 -112
  411. package/dist/src/modules/base/base.grants.d.ts +0 -28
  412. package/dist/src/modules/base/base.grants.js +0 -123
  413. package/dist/src/modules/base/base.grants.test.js +0 -668
  414. package/dist/src/modules/base/base.procedure.d.ts +0 -112
  415. package/dist/src/modules/base/base.procedure.js +0 -289
  416. package/dist/src/modules/base/base.repository.d.ts +0 -97
  417. package/dist/src/modules/base/base.repository.js +0 -317
  418. package/dist/src/modules/base/base.service.d.ts +0 -52
  419. package/dist/src/modules/base/base.service.js +0 -116
  420. package/dist/src/modules/base/base.service.test.js +0 -415
  421. package/dist/src/modules/base/base.types.d.ts +0 -1
  422. package/dist/src/modules/base/base.types.js +0 -2
  423. package/dist/src/modules/billing/billing.db.d.ts +0 -365
  424. package/dist/src/modules/billing/billing.db.js +0 -29
  425. package/dist/src/modules/billing/billing.repository.d.ts +0 -2763
  426. package/dist/src/modules/billing/billing.repository.js +0 -235
  427. package/dist/src/modules/billing/billing.router.d.ts +0 -4
  428. package/dist/src/modules/billing/billing.router.js +0 -56
  429. package/dist/src/modules/billing/billing.service.d.ts +0 -59
  430. package/dist/src/modules/billing/billing.service.js +0 -147
  431. package/dist/src/modules/billing/billing.trpc.d.ts +0 -38
  432. package/dist/src/modules/billing/billing.trpc.js +0 -17
  433. package/dist/src/modules/clay/clay.repository.d.ts +0 -5
  434. package/dist/src/modules/clay/clay.repository.js +0 -26
  435. package/dist/src/modules/clay/clay.service.d.ts +0 -28
  436. package/dist/src/modules/clay/clay.service.js +0 -24
  437. package/dist/src/modules/connect/connect.db.d.ts +0 -356
  438. package/dist/src/modules/connect/connect.db.js +0 -30
  439. package/dist/src/modules/connect/connect.dto.d.ts +0 -74
  440. package/dist/src/modules/connect/connect.dto.js +0 -36
  441. package/dist/src/modules/connect/connect.linkedin.d.ts +0 -2
  442. package/dist/src/modules/connect/connect.linkedin.js +0 -53
  443. package/dist/src/modules/connect/connect.oauth.d.ts +0 -27
  444. package/dist/src/modules/connect/connect.oauth.js +0 -198
  445. package/dist/src/modules/connect/connect.repository.d.ts +0 -413
  446. package/dist/src/modules/connect/connect.repository.js +0 -54
  447. package/dist/src/modules/connect/connect.router.d.ts +0 -4
  448. package/dist/src/modules/connect/connect.router.js +0 -54
  449. package/dist/src/modules/connect/connect.service.d.ts +0 -88
  450. package/dist/src/modules/connect/connect.service.js +0 -114
  451. package/dist/src/modules/connect/connect.trpc.d.ts +0 -44
  452. package/dist/src/modules/connect/connect.trpc.js +0 -21
  453. package/dist/src/modules/connect/connect.types.d.ts +0 -25
  454. package/dist/src/modules/connect/connect.types.js +0 -2
  455. package/dist/src/modules/crypto/crypto.db.d.ts +0 -151
  456. package/dist/src/modules/crypto/crypto.db.js +0 -17
  457. package/dist/src/modules/crypto/crypto.repository.d.ts +0 -159
  458. package/dist/src/modules/crypto/crypto.repository.js +0 -10
  459. package/dist/src/modules/crypto/crypto.service.d.ts +0 -10
  460. package/dist/src/modules/crypto/crypto.service.js +0 -52
  461. package/dist/src/modules/email/email.service.d.ts +0 -56
  462. package/dist/src/modules/email/email.service.js +0 -106
  463. package/dist/src/modules/file/file.repository.d.ts +0 -12
  464. package/dist/src/modules/file/file.repository.js +0 -79
  465. package/dist/src/modules/file/file.router.js +0 -99
  466. package/dist/src/modules/file/file.service.d.ts +0 -24
  467. package/dist/src/modules/file/file.service.js +0 -150
  468. package/dist/src/modules/recurrence/recurrence.db.d.ts +0 -562
  469. package/dist/src/modules/recurrence/recurrence.db.js +0 -66
  470. package/dist/src/modules/recurrence/recurrence.repository.d.ts +0 -584
  471. package/dist/src/modules/recurrence/recurrence.repository.js +0 -39
  472. package/dist/src/modules/recurrence/recurrence.service.d.ts +0 -50
  473. package/dist/src/modules/recurrence/recurrence.service.js +0 -69
  474. package/dist/src/modules/recurrence/recurrence.trpc.d.ts +0 -206
  475. package/dist/src/modules/recurrence/recurrence.trpc.js +0 -65
  476. package/dist/src/modules/social/social.dto.d.ts +0 -34
  477. package/dist/src/modules/social/social.dto.js +0 -18
  478. package/dist/src/modules/social/social.linkedin.js +0 -427
  479. package/dist/src/modules/social/social.linkedin.test.js +0 -235
  480. package/dist/src/modules/social/social.service.d.ts +0 -28
  481. package/dist/src/modules/social/social.service.js +0 -76
  482. package/dist/src/modules/social/social.types.d.ts +0 -35
  483. package/dist/src/modules/social/social.types.js +0 -2
  484. package/dist/src/modules/tag/tag.db.d.ts +0 -346
  485. package/dist/src/modules/tag/tag.db.js +0 -42
  486. package/dist/src/modules/tag/tag.dto.d.ts +0 -1018
  487. package/dist/src/modules/tag/tag.dto.js +0 -9
  488. package/dist/src/modules/tag/tag.repository.d.ts +0 -383
  489. package/dist/src/modules/tag/tag.repository.js +0 -156
  490. package/dist/src/modules/tag/tag.service.d.ts +0 -109
  491. package/dist/src/modules/tag/tag.service.js +0 -42
  492. package/dist/src/modules/tag/tag.trpc.d.ts +0 -164
  493. package/dist/src/modules/tag/tag.trpc.js +0 -53
  494. package/dist/src/modules/utils/applyPagination.js +0 -16
  495. package/dist/src/modules/utils/applySorting.d.ts +0 -8
  496. package/dist/src/modules/utils/applySorting.js +0 -18
  497. package/dist/src/modules/utils/getConditionsFromFilters.d.ts +0 -4
  498. package/dist/src/modules/utils/getConditionsFromFilters.js +0 -200
  499. package/dist/src/modules/video/video.service.d.ts +0 -7
  500. package/dist/src/modules/video/video.service.js +0 -84
  501. package/dist/src/modules/webhook/webhook.constants.d.ts +0 -8
  502. package/dist/src/modules/webhook/webhook.constants.js +0 -10
  503. package/dist/src/modules/webhook/webhook.db.d.ts +0 -136
  504. package/dist/src/modules/webhook/webhook.db.js +0 -17
  505. package/dist/src/modules/webhook/webhook.dto.d.ts +0 -394
  506. package/dist/src/modules/webhook/webhook.dto.js +0 -7
  507. package/dist/src/modules/webhook/webhook.repository.d.ts +0 -148
  508. package/dist/src/modules/webhook/webhook.repository.js +0 -56
  509. package/dist/src/modules/webhook/webhook.router.d.ts +0 -3
  510. package/dist/src/modules/webhook/webhook.router.js +0 -30
  511. package/dist/src/modules/webhook/webhook.service.d.ts +0 -9
  512. package/dist/src/modules/webhook/webhook.service.js +0 -68
  513. package/dist/src/modules/workflow/workflow.db.d.ts +0 -296
  514. package/dist/src/modules/workflow/workflow.db.js +0 -30
  515. package/dist/src/modules/workflow/workflow.repository.d.ts +0 -343
  516. package/dist/src/modules/workflow/workflow.repository.js +0 -105
  517. package/dist/src/modules/workflow/workflow.service.d.ts +0 -21
  518. package/dist/src/modules/workflow/workflow.service.js +0 -37
  519. package/dist/src/modules/workflow/workflow.trpc.d.ts +0 -56
  520. package/dist/src/modules/workflow/workflow.trpc.js +0 -21
  521. package/dist/src/modules/workflow/workflow.types.d.ts +0 -20
  522. package/dist/src/modules/workflow/workflow.types.js +0 -2
  523. package/dist/src/modules/workflow/workflow.utils.d.ts +0 -21
  524. package/dist/src/modules/workflow/workflow.utils.js +0 -173
  525. package/dist/src/test/stubs/utils.d.ts +0 -2
  526. package/dist/src/test/stubs/utils.js +0 -5
  527. package/dist/src/trpc/context.d.ts +0 -41
  528. package/dist/src/trpc/context.js +0 -17
  529. package/dist/src/trpc/index.d.ts +0 -3
  530. package/dist/src/trpc/index.js +0 -6
  531. package/dist/src/trpc/procedures.d.ts +0 -233
  532. package/dist/src/trpc/procedures.js +0 -32
  533. package/dist/src/trpc/utils.d.ts +0 -4
  534. package/dist/src/trpc/utils.js +0 -20
  535. package/dist/src/types.d.ts +0 -358
  536. package/dist/src/types.js +0 -12
  537. package/dist/src/utils/errors.d.ts +0 -49
  538. package/dist/src/utils/errors.js +0 -104
  539. package/dist/src/utils/logger.d.ts +0 -1
  540. package/dist/src/utils/logger.js +0 -11
  541. package/dist/src/utils/posthog.d.ts +0 -13
  542. package/dist/src/utils/posthog.js +0 -31
  543. package/dist/src/utils/trpc.d.ts +0 -58
  544. package/dist/src/utils/trpc.js +0 -63
  545. package/dist/src/utils/types.d.ts +0 -4
  546. package/dist/src/utils/types.js +0 -2
  547. package/dist/tsconfig.tsbuildinfo +0 -1
  548. /package/dist/src/{lib/sentry.d.ts → modules/ai/ai.router.mjs} +0 -0
  549. /package/dist/src/modules/{access/access.test.d.ts → base/base.types.mjs} +0 -0
  550. /package/dist/src/modules/{ai/ai.router.d.ts → connect/connect.types.mjs} +0 -0
  551. /package/dist/src/modules/{base/base.grants.test.d.ts → social/social.types.mjs} +0 -0
  552. /package/dist/src/modules/{base/base.service.test.d.ts → workflow/workflow.types.mjs} +0 -0
  553. /package/dist/src/{modules/social/social.linkedin.test.d.ts → utils/types.mjs} +0 -0
@@ -1,668 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const neverthrow_1 = require("neverthrow");
4
- const base_grants_1 = require("./base.grants");
5
- const errors_1 = require("../../utils/errors");
6
- // ============================================
7
- // Mock Factories
8
- // ============================================
9
- function createMockUser(overrides = {}) {
10
- return {
11
- id: "user-123",
12
- role: "member",
13
- email: "test@example.com",
14
- emailVerified: true,
15
- name: "Test User",
16
- createdAt: new Date(),
17
- updatedAt: new Date(),
18
- image: null,
19
- onboarding: null,
20
- preferences: null,
21
- flags: null,
22
- stripeCustomerId: null,
23
- paymentCustomerId: null,
24
- paymentPlanTier: null,
25
- paymentPlanExpiresAt: null,
26
- ...overrides,
27
- };
28
- }
29
- function createMockSession(overrides = {}) {
30
- return {
31
- id: "session-123",
32
- userId: "user-123",
33
- token: "token-123",
34
- expiresAt: new Date(Date.now() + 86400000),
35
- createdAt: new Date(),
36
- updatedAt: new Date(),
37
- ipAddress: null,
38
- userAgent: null,
39
- activeOrganizationId: null,
40
- activeTeamId: null,
41
- activeOrganizationRole: null,
42
- activeTeamRole: null,
43
- ...overrides,
44
- };
45
- }
46
- function createMockContext(userOverrides = {}, sessionOverrides = {}) {
47
- return {
48
- user: createMockUser(userOverrides),
49
- session: createMockSession(sessionOverrides),
50
- };
51
- }
52
- function createMockEntity(overrides = {}) {
53
- return {
54
- userId: "user-123",
55
- teamId: undefined,
56
- organizationId: undefined,
57
- ...overrides,
58
- };
59
- }
60
- // ============================================
61
- // flattenNestedGrants
62
- // ============================================
63
- describe("flattenNestedGrants", () => {
64
- it("converts permission object to grants array", () => {
65
- const permission = {
66
- posts: {
67
- user: {
68
- member: { read: "own", create: "own" },
69
- },
70
- team: {
71
- admin: { write: "all" },
72
- },
73
- },
74
- };
75
- const result = (0, base_grants_1.flattenNestedGrants)(permission);
76
- expect(result).toHaveLength(3);
77
- expect(result).toContainEqual({
78
- resource: "posts",
79
- level: "user",
80
- role: "member",
81
- action: "read",
82
- access: "own",
83
- });
84
- expect(result).toContainEqual({
85
- resource: "posts",
86
- level: "user",
87
- role: "member",
88
- action: "create",
89
- access: "own",
90
- });
91
- expect(result).toContainEqual({
92
- resource: "posts",
93
- level: "team",
94
- role: "admin",
95
- action: "write",
96
- access: "all",
97
- });
98
- });
99
- it("handles multiple resources", () => {
100
- const permission = {
101
- posts: {
102
- user: { member: { read: "own" } },
103
- },
104
- comments: {
105
- team: { admin: { delete: "all" } },
106
- },
107
- };
108
- const result = (0, base_grants_1.flattenNestedGrants)(permission);
109
- expect(result).toHaveLength(2);
110
- expect(result).toContainEqual({
111
- resource: "posts",
112
- level: "user",
113
- role: "member",
114
- action: "read",
115
- access: "own",
116
- });
117
- expect(result).toContainEqual({
118
- resource: "comments",
119
- level: "team",
120
- role: "admin",
121
- action: "delete",
122
- access: "all",
123
- });
124
- });
125
- it("handles permission with only some levels defined", () => {
126
- const permission = {
127
- posts: {
128
- organization: {
129
- owner: { delete: "all" },
130
- },
131
- },
132
- };
133
- const result = (0, base_grants_1.flattenNestedGrants)(permission);
134
- expect(result).toHaveLength(1);
135
- expect(result[0]).toEqual({
136
- resource: "posts",
137
- level: "organization",
138
- role: "owner",
139
- action: "delete",
140
- access: "all",
141
- });
142
- });
143
- it("returns empty array for empty permission", () => {
144
- const result = (0, base_grants_1.flattenNestedGrants)({});
145
- expect(result).toEqual([]);
146
- });
147
- it("handles multiple roles per level", () => {
148
- const permission = {
149
- posts: {
150
- user: {
151
- member: { read: "own" },
152
- admin: { read: "all", write: "all" },
153
- },
154
- },
155
- };
156
- const result = (0, base_grants_1.flattenNestedGrants)(permission);
157
- expect(result).toHaveLength(3);
158
- expect(result).toContainEqual({
159
- resource: "posts",
160
- level: "user",
161
- role: "member",
162
- action: "read",
163
- access: "own",
164
- });
165
- expect(result).toContainEqual({
166
- resource: "posts",
167
- level: "user",
168
- role: "admin",
169
- action: "read",
170
- access: "all",
171
- });
172
- expect(result).toContainEqual({
173
- resource: "posts",
174
- level: "user",
175
- role: "admin",
176
- action: "write",
177
- access: "all",
178
- });
179
- });
180
- });
181
- // ============================================
182
- // checkPermissionSync
183
- // ============================================
184
- describe("checkPermissionSync", () => {
185
- describe("edge cases", () => {
186
- it("returns false for empty grants array", () => {
187
- const ctx = createMockContext();
188
- const result = (0, base_grants_1.checkPermissionSync)(ctx, []);
189
- expect(result).toBe(false);
190
- });
191
- it("returns false for undefined grants", () => {
192
- const ctx = createMockContext();
193
- const result = (0, base_grants_1.checkPermissionSync)(ctx, undefined);
194
- expect(result).toBe(false);
195
- });
196
- });
197
- describe("user-level permissions", () => {
198
- it("grants access with 'all' access regardless of entity", () => {
199
- const ctx = createMockContext({ role: "member" });
200
- const grants = [{ level: "user", role: "member", access: "all" }];
201
- // No entity provided
202
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants)).toBe(true);
203
- // Entity with different userId - still allowed because "all" access
204
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, { userId: "other-user" })).toBe(true);
205
- });
206
- it("grants access with 'own' access when userId matches", () => {
207
- const ctx = createMockContext({ id: "user-123", role: "member" });
208
- const grants = [{ level: "user", role: "member", access: "own" }];
209
- const entity = createMockEntity({ userId: "user-123" });
210
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, entity)).toBe(true);
211
- });
212
- it("denies access with 'own' access when userId does not match", () => {
213
- const ctx = createMockContext({ id: "user-123", role: "member" });
214
- const grants = [{ level: "user", role: "member", access: "own" }];
215
- const entity = createMockEntity({ userId: "other-user" });
216
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, entity)).toBe(false);
217
- });
218
- it("denies access with 'own' access when no entity provided", () => {
219
- const ctx = createMockContext({ id: "user-123", role: "member" });
220
- const grants = [{ level: "user", role: "member", access: "own" }];
221
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants)).toBe(false);
222
- });
223
- it("denies access when user role does not match grant role", () => {
224
- const ctx = createMockContext({ role: "viewer" });
225
- const grants = [{ level: "user", role: "admin", access: "all" }];
226
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants)).toBe(false);
227
- });
228
- });
229
- describe("team-level permissions", () => {
230
- it("grants access with 'all' access when team role matches", () => {
231
- const ctx = createMockContext({}, { activeTeamId: "team-1", activeTeamRole: "admin" });
232
- const grants = [{ level: "team", role: "admin", access: "all" }];
233
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants)).toBe(true);
234
- });
235
- it("grants access with 'own' access when teamId matches", () => {
236
- const ctx = createMockContext({}, { activeTeamId: "team-1", activeTeamRole: "member" });
237
- const grants = [{ level: "team", role: "member", access: "own" }];
238
- const entity = createMockEntity({ teamId: "team-1" });
239
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, entity)).toBe(true);
240
- });
241
- it("denies access with 'own' access when teamId does not match", () => {
242
- const ctx = createMockContext({}, { activeTeamId: "team-1", activeTeamRole: "member" });
243
- const grants = [{ level: "team", role: "member", access: "own" }];
244
- const entity = createMockEntity({ teamId: "team-2" });
245
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, entity)).toBe(false);
246
- });
247
- it("denies access when team role does not match", () => {
248
- const ctx = createMockContext({}, { activeTeamId: "team-1", activeTeamRole: "viewer" });
249
- const grants = [{ level: "team", role: "admin", access: "all" }];
250
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants)).toBe(false);
251
- });
252
- it("denies access when no active team", () => {
253
- const ctx = createMockContext({}, { activeTeamId: null, activeTeamRole: null });
254
- const grants = [{ level: "team", role: "admin", access: "all" }];
255
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants)).toBe(false);
256
- });
257
- });
258
- describe("organization-level permissions", () => {
259
- it("grants access with 'all' access when organization role matches", () => {
260
- const ctx = createMockContext({}, { activeOrganizationId: "org-1", activeOrganizationRole: "owner" });
261
- const grants = [
262
- { level: "organization", role: "owner", access: "all" },
263
- ];
264
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants)).toBe(true);
265
- });
266
- it("grants access with 'own' access when organizationId matches", () => {
267
- const ctx = createMockContext({}, { activeOrganizationId: "org-1", activeOrganizationRole: "member" });
268
- const grants = [
269
- { level: "organization", role: "member", access: "own" },
270
- ];
271
- const entity = createMockEntity({ organizationId: "org-1" });
272
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, entity)).toBe(true);
273
- });
274
- it("denies access with 'own' access when organizationId does not match", () => {
275
- const ctx = createMockContext({}, { activeOrganizationId: "org-1", activeOrganizationRole: "member" });
276
- const grants = [
277
- { level: "organization", role: "member", access: "own" },
278
- ];
279
- const entity = createMockEntity({ organizationId: "org-2" });
280
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, entity)).toBe(false);
281
- });
282
- });
283
- describe("multiple grants", () => {
284
- it("checks 'all' access before 'own' access (optimization)", () => {
285
- const ctx = createMockContext({ id: "user-123", role: "admin" });
286
- const grants = [
287
- { level: "user", role: "member", access: "own" }, // Would need entity check
288
- { level: "user", role: "admin", access: "all" }, // Should match first in pass 1
289
- ];
290
- // No entity provided, but should still pass because "all" is checked first
291
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants)).toBe(true);
292
- });
293
- it("falls back to 'own' access if no 'all' access matches", () => {
294
- const ctx = createMockContext({ id: "user-123", role: "member" });
295
- const grants = [
296
- { level: "user", role: "admin", access: "all" }, // Role doesn't match
297
- { level: "user", role: "member", access: "own" }, // Should match in pass 2
298
- ];
299
- const entity = createMockEntity({ userId: "user-123" });
300
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, entity)).toBe(true);
301
- });
302
- it("grants access if any level matches with 'all'", () => {
303
- const ctx = createMockContext({ role: "viewer" }, { activeTeamId: "team-1", activeTeamRole: "admin" });
304
- const grants = [
305
- { level: "user", role: "member", access: "all" }, // User role doesn't match
306
- { level: "team", role: "admin", access: "all" }, // Team role matches
307
- ];
308
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants)).toBe(true);
309
- });
310
- });
311
- describe("multiple entities", () => {
312
- it("requires all entities to match for 'own' access", () => {
313
- const ctx = createMockContext({ id: "user-123", role: "member" });
314
- const grants = [{ level: "user", role: "member", access: "own" }];
315
- const matchingEntities = [{ userId: "user-123" }, { userId: "user-123" }];
316
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, matchingEntities)).toBe(true);
317
- const mixedEntities = [{ userId: "user-123" }, { userId: "other-user" }];
318
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, mixedEntities)).toBe(false);
319
- });
320
- it("denies access if any entity does not match", () => {
321
- const ctx = createMockContext({}, { activeTeamId: "team-1", activeTeamRole: "member" });
322
- const grants = [{ level: "team", role: "member", access: "own" }];
323
- const entities = [{ teamId: "team-1" }, { teamId: "team-1" }, { teamId: "team-2" }];
324
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, entities)).toBe(false);
325
- });
326
- });
327
- describe("level priority (user -> team -> organization)", () => {
328
- it("checks user level before team level", () => {
329
- const ctx = createMockContext({ id: "user-123", role: "member" }, { activeTeamId: "team-1", activeTeamRole: "member" });
330
- // Both levels have matching grants, but user should be checked first
331
- const grants = [
332
- { level: "team", role: "member", access: "own" },
333
- { level: "user", role: "member", access: "all" },
334
- ];
335
- // Should return true from user-level "all" without needing entity
336
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants)).toBe(true);
337
- });
338
- it("checks team level before organization level", () => {
339
- const ctx = createMockContext({ role: "viewer" }, {
340
- activeTeamId: "team-1",
341
- activeTeamRole: "admin",
342
- activeOrganizationId: "org-1",
343
- activeOrganizationRole: "admin",
344
- });
345
- const grants = [
346
- { level: "organization", role: "admin", access: "all" },
347
- { level: "team", role: "admin", access: "all" },
348
- ];
349
- // Both would match, but team is checked before org in the priority
350
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants)).toBe(true);
351
- });
352
- });
353
- describe("multi-level grants with different roles per level", () => {
354
- it("user with different roles at each level - matches user level", () => {
355
- const ctx = createMockContext({ id: "user-123", role: "viewer" }, {
356
- activeTeamId: "team-1",
357
- activeTeamRole: "member",
358
- activeOrganizationId: "org-1",
359
- activeOrganizationRole: "admin",
360
- });
361
- // Grant requires "viewer" at user level
362
- const grants = [{ level: "user", role: "viewer", access: "all" }];
363
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants)).toBe(true);
364
- });
365
- it("user with different roles at each level - matches team level only", () => {
366
- const ctx = createMockContext({ id: "user-123", role: "viewer" }, {
367
- activeTeamId: "team-1",
368
- activeTeamRole: "manager",
369
- activeOrganizationId: "org-1",
370
- activeOrganizationRole: "member",
371
- });
372
- // Grant requires "admin" at user level (no match) or "manager" at team level (match)
373
- const grants = [
374
- { level: "user", role: "admin", access: "all" },
375
- { level: "team", role: "manager", access: "all" },
376
- ];
377
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants)).toBe(true);
378
- });
379
- it("user with different roles at each level - matches organization level only", () => {
380
- const ctx = createMockContext({ id: "user-123", role: "viewer" }, {
381
- activeTeamId: "team-1",
382
- activeTeamRole: "member",
383
- activeOrganizationId: "org-1",
384
- activeOrganizationRole: "owner",
385
- });
386
- // Grant requires roles that only match at organization level
387
- const grants = [
388
- { level: "user", role: "admin", access: "all" },
389
- { level: "team", role: "admin", access: "all" },
390
- { level: "organization", role: "owner", access: "all" },
391
- ];
392
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants)).toBe(true);
393
- });
394
- it("user with different roles at each level - no level matches", () => {
395
- const ctx = createMockContext({ id: "user-123", role: "viewer" }, {
396
- activeTeamId: "team-1",
397
- activeTeamRole: "member",
398
- activeOrganizationId: "org-1",
399
- activeOrganizationRole: "member",
400
- });
401
- // Grant requires roles that don't match any level
402
- const grants = [
403
- { level: "user", role: "admin", access: "all" },
404
- { level: "team", role: "admin", access: "all" },
405
- { level: "organization", role: "owner", access: "all" },
406
- ];
407
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants)).toBe(false);
408
- });
409
- it("user with mixed 'all' and 'own' grants across levels - 'all' wins", () => {
410
- const ctx = createMockContext({ id: "user-123", role: "member" }, {
411
- activeTeamId: "team-1",
412
- activeTeamRole: "admin",
413
- activeOrganizationId: "org-1",
414
- activeOrganizationRole: "member",
415
- });
416
- // User level has "own" (would need entity), team level has "all" (no entity needed)
417
- const grants = [
418
- { level: "user", role: "member", access: "own" },
419
- { level: "team", role: "admin", access: "all" },
420
- { level: "organization", role: "owner", access: "own" },
421
- ];
422
- // Should pass because team-level "all" is checked in pass 1
423
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants)).toBe(true);
424
- });
425
- it("user with 'own' grants at multiple levels - first matching level wins", () => {
426
- const ctx = createMockContext({ id: "user-123", role: "member" }, {
427
- activeTeamId: "team-1",
428
- activeTeamRole: "member",
429
- activeOrganizationId: "org-1",
430
- activeOrganizationRole: "member",
431
- });
432
- // All levels have "own" access, entity matches user level
433
- const grants = [
434
- { level: "user", role: "member", access: "own" },
435
- { level: "team", role: "member", access: "own" },
436
- { level: "organization", role: "member", access: "own" },
437
- ];
438
- const entity = createMockEntity({
439
- userId: "user-123",
440
- teamId: "team-2",
441
- organizationId: "org-2",
442
- });
443
- // Should pass because user-level "own" matches (checked first in pass 2)
444
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, entity)).toBe(true);
445
- });
446
- it("user with 'own' grants - team level matches when user level does not", () => {
447
- const ctx = createMockContext({ id: "user-123", role: "member" }, {
448
- activeTeamId: "team-1",
449
- activeTeamRole: "member",
450
- activeOrganizationId: "org-1",
451
- activeOrganizationRole: "member",
452
- });
453
- const grants = [
454
- { level: "user", role: "member", access: "own" },
455
- { level: "team", role: "member", access: "own" },
456
- { level: "organization", role: "member", access: "own" },
457
- ];
458
- // Entity belongs to a different user but same team
459
- const entity = createMockEntity({
460
- userId: "other-user",
461
- teamId: "team-1",
462
- organizationId: "org-2",
463
- });
464
- // User-level fails (userId mismatch), team-level passes (teamId matches)
465
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, entity)).toBe(true);
466
- });
467
- it("user with 'own' grants - organization level matches when user and team do not", () => {
468
- const ctx = createMockContext({ id: "user-123", role: "member" }, {
469
- activeTeamId: "team-1",
470
- activeTeamRole: "member",
471
- activeOrganizationId: "org-1",
472
- activeOrganizationRole: "member",
473
- });
474
- const grants = [
475
- { level: "user", role: "member", access: "own" },
476
- { level: "team", role: "member", access: "own" },
477
- { level: "organization", role: "member", access: "own" },
478
- ];
479
- // Entity belongs to a different user and team, but same organization
480
- const entity = createMockEntity({
481
- userId: "other-user",
482
- teamId: "team-2",
483
- organizationId: "org-1",
484
- });
485
- // User-level fails, team-level fails, organization-level passes
486
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, entity)).toBe(true);
487
- });
488
- it("complex scenario: admin user bypasses ownership checks", () => {
489
- const ctx = createMockContext({ id: "admin-user", role: "admin" }, {
490
- activeTeamId: "team-1",
491
- activeTeamRole: "member",
492
- activeOrganizationId: "org-1",
493
- activeOrganizationRole: "member",
494
- });
495
- // Grant allows admins to access all, or regular members to access own
496
- const grants = [
497
- { level: "user", role: "admin", access: "all" },
498
- { level: "user", role: "member", access: "own" },
499
- ];
500
- // Entity belongs to someone else, but admin has "all" access
501
- const entity = createMockEntity({ userId: "other-user" });
502
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, entity)).toBe(true);
503
- });
504
- it("complex scenario: regular user limited to own resources", () => {
505
- const ctx = createMockContext({ id: "user-123", role: "member" }, {
506
- activeTeamId: "team-1",
507
- activeTeamRole: "member",
508
- activeOrganizationId: "org-1",
509
- activeOrganizationRole: "member",
510
- });
511
- // Grant allows admins to access all, or regular members to access own
512
- const grants = [
513
- { level: "user", role: "admin", access: "all" },
514
- { level: "user", role: "member", access: "own" },
515
- ];
516
- // Entity belongs to someone else - member can't access
517
- const otherEntity = createMockEntity({ userId: "other-user" });
518
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, otherEntity)).toBe(false);
519
- // Entity belongs to the user - member can access
520
- const ownEntity = createMockEntity({ userId: "user-123" });
521
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, ownEntity)).toBe(true);
522
- });
523
- it("team admin can access all team resources regardless of user ownership", () => {
524
- const ctx = createMockContext({ id: "user-123", role: "member" }, {
525
- activeTeamId: "team-1",
526
- activeTeamRole: "admin",
527
- activeOrganizationId: "org-1",
528
- activeOrganizationRole: "member",
529
- });
530
- // Grant: user-level own OR team-level all for admins
531
- const grants = [
532
- { level: "user", role: "member", access: "own" },
533
- { level: "team", role: "admin", access: "all" },
534
- ];
535
- // Entity belongs to another user in the same team
536
- const entity = createMockEntity({ userId: "other-user", teamId: "team-1" });
537
- // Team admin has "all" access, so ownership doesn't matter
538
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, entity)).toBe(true);
539
- });
540
- it("organization owner can access all organization resources", () => {
541
- const ctx = createMockContext({ id: "user-123", role: "member" }, {
542
- activeTeamId: "team-1",
543
- activeTeamRole: "member",
544
- activeOrganizationId: "org-1",
545
- activeOrganizationRole: "owner",
546
- });
547
- // Grant: owner at org level has all access
548
- const grants = [
549
- { level: "user", role: "member", access: "own" },
550
- { level: "team", role: "admin", access: "own" },
551
- { level: "organization", role: "owner", access: "all" },
552
- ];
553
- // Entity belongs to another user and team, but in the same org
554
- const entity = createMockEntity({
555
- userId: "other-user",
556
- teamId: "team-2",
557
- organizationId: "org-1",
558
- });
559
- // Org owner has "all" access
560
- expect((0, base_grants_1.checkPermissionSync)(ctx, grants, entity)).toBe(true);
561
- });
562
- });
563
- });
564
- // ============================================
565
- // checkPermissionAsync
566
- // ============================================
567
- describe("checkPermissionAsync", () => {
568
- describe("edge cases", () => {
569
- it("returns ok(false) for empty grants array", async () => {
570
- const ctx = createMockContext();
571
- const getEntities = jest.fn();
572
- const result = await (0, base_grants_1.checkPermissionAsync)(ctx, [], getEntities);
573
- expect(result.isOk()).toBe(true);
574
- if (result.isOk())
575
- expect(result.value).toBe(false);
576
- expect(getEntities).not.toHaveBeenCalled();
577
- });
578
- });
579
- describe("'all' access optimization", () => {
580
- it("returns ok(true) without calling getEntities when 'all' access matches", async () => {
581
- const ctx = createMockContext({ role: "admin" });
582
- const grants = [{ level: "user", role: "admin", access: "all" }];
583
- const getEntities = jest.fn();
584
- const result = await (0, base_grants_1.checkPermissionAsync)(ctx, grants, getEntities);
585
- expect(result.isOk()).toBe(true);
586
- if (result.isOk())
587
- expect(result.value).toBe(true);
588
- expect(getEntities).not.toHaveBeenCalled();
589
- });
590
- });
591
- describe("'own' access with entity fetch", () => {
592
- it("calls getEntities and grants access when ownership matches", async () => {
593
- const ctx = createMockContext({ id: "user-123", role: "member" });
594
- const grants = [{ level: "user", role: "member", access: "own" }];
595
- const entity = createMockEntity({ userId: "user-123" });
596
- const getEntities = jest.fn().mockResolvedValue((0, neverthrow_1.ok)(entity));
597
- const result = await (0, base_grants_1.checkPermissionAsync)(ctx, grants, getEntities);
598
- expect(result.isOk()).toBe(true);
599
- if (result.isOk())
600
- expect(result.value).toBe(true);
601
- expect(getEntities).toHaveBeenCalledTimes(1);
602
- });
603
- it("calls getEntities and denies access when ownership does not match", async () => {
604
- const ctx = createMockContext({ id: "user-123", role: "member" });
605
- const grants = [{ level: "user", role: "member", access: "own" }];
606
- const entity = createMockEntity({ userId: "other-user" });
607
- const getEntities = jest.fn().mockResolvedValue((0, neverthrow_1.ok)(entity));
608
- const result = await (0, base_grants_1.checkPermissionAsync)(ctx, grants, getEntities);
609
- expect(result.isOk()).toBe(true);
610
- if (result.isOk())
611
- expect(result.value).toBe(false);
612
- expect(getEntities).toHaveBeenCalledTimes(1);
613
- });
614
- it("handles undefined entities from getEntities", async () => {
615
- const ctx = createMockContext({ id: "user-123", role: "member" });
616
- const grants = [{ level: "user", role: "member", access: "own" }];
617
- const getEntities = jest.fn().mockResolvedValue((0, neverthrow_1.ok)(undefined));
618
- const result = await (0, base_grants_1.checkPermissionAsync)(ctx, grants, getEntities);
619
- expect(result.isOk()).toBe(true);
620
- if (result.isOk())
621
- expect(result.value).toBe(false);
622
- });
623
- });
624
- describe("error propagation", () => {
625
- it("propagates errors from getEntities", async () => {
626
- const ctx = createMockContext({ id: "user-123", role: "member" });
627
- const grants = [{ level: "user", role: "member", access: "own" }];
628
- const mockError = new errors_1.ServerError({
629
- layer: "service",
630
- layerName: "BasePermissionService",
631
- code: "NOT_FOUND",
632
- message: "Entity not found",
633
- cause: null,
634
- });
635
- const getEntities = jest.fn().mockResolvedValue((0, neverthrow_1.err)(mockError));
636
- const result = await (0, base_grants_1.checkPermissionAsync)(ctx, grants, getEntities);
637
- expect(result.isErr()).toBe(true);
638
- if (result.isErr()) {
639
- expect(result.error.code).toBe("NOT_FOUND");
640
- expect(result.error.message).toBe("Entity not found");
641
- }
642
- });
643
- });
644
- describe("team and organization levels", () => {
645
- it("checks team-level 'own' access correctly", async () => {
646
- const ctx = createMockContext({}, { activeTeamId: "team-1", activeTeamRole: "member" });
647
- const grants = [{ level: "team", role: "member", access: "own" }];
648
- const entity = createMockEntity({ teamId: "team-1" });
649
- const getEntities = jest.fn().mockResolvedValue((0, neverthrow_1.ok)(entity));
650
- const result = await (0, base_grants_1.checkPermissionAsync)(ctx, grants, getEntities);
651
- expect(result.isOk()).toBe(true);
652
- if (result.isOk())
653
- expect(result.value).toBe(true);
654
- });
655
- it("checks organization-level 'all' access without fetching entities", async () => {
656
- const ctx = createMockContext({}, { activeOrganizationId: "org-1", activeOrganizationRole: "owner" });
657
- const grants = [
658
- { level: "organization", role: "owner", access: "all" },
659
- ];
660
- const getEntities = jest.fn();
661
- const result = await (0, base_grants_1.checkPermissionAsync)(ctx, grants, getEntities);
662
- expect(result.isOk()).toBe(true);
663
- if (result.isOk())
664
- expect(result.value).toBe(true);
665
- expect(getEntities).not.toHaveBeenCalled();
666
- });
667
- });
668
- });