@m5kdev/backend 0.8.6 → 0.8.8

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 (383) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +33 -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.cts +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.cts +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.cts +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.cts +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.cts +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.cts +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.cts +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.cts +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.cts +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.cts +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.cts +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.cts +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.cts +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.cts +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.cts +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.cts +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.cts +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.cts +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.cts +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.cts +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.cts +1 -0
  23. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/dialect-adapter-base.d.cts +1 -0
  24. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/dialect-adapter.d.cts +1 -0
  25. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/dialect.d.cts +1 -0
  26. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/mssql/mssql-adapter.d.cts +1 -0
  27. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/mssql/mssql-dialect.d.cts +1 -0
  28. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/mssql/mssql-introspector.d.cts +1 -0
  29. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/mysql/mysql-adapter.d.cts +1 -0
  30. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/mysql/mysql-dialect.d.cts +1 -0
  31. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/mysql/mysql-introspector.d.cts +1 -0
  32. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/postgres/postgres-adapter.d.cts +1 -0
  33. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/postgres/postgres-dialect.d.cts +1 -0
  34. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/postgres/postgres-introspector.d.cts +1 -0
  35. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-adapter.d.cts +1 -0
  36. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-dialect.d.cts +1 -0
  37. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-introspector.d.cts +1 -0
  38. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/expression/expression-builder.d.cts +1 -0
  39. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/index.d.cts +1 -0
  40. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/kysely.d.cts +38 -0
  41. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/migration/file-migration-provider.d.cts +1 -0
  42. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/migration/migrator.d.cts +1 -0
  43. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/binary-operation-parser.d.cts +1 -0
  44. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/delete-from-parser.d.cts +1 -0
  45. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/expression-parser.d.cts +1 -0
  46. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/group-by-parser.d.cts +1 -0
  47. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/insert-values-parser.d.cts +1 -0
  48. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/join-parser.d.cts +1 -0
  49. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/merge-into-parser.d.cts +1 -0
  50. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/reference-parser.d.cts +1 -0
  51. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/returning-parser.d.cts +1 -0
  52. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/select-from-parser.d.cts +1 -0
  53. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/select-parser.d.cts +1 -0
  54. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/set-operation-parser.d.cts +1 -0
  55. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/tuple-parser.d.cts +1 -0
  56. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/unary-operation-parser.d.cts +1 -0
  57. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/update-parser.d.cts +1 -0
  58. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/update-set-parser.d.cts +1 -0
  59. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/value-parser.d.cts +1 -0
  60. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/parser/with-parser.d.cts +1 -0
  61. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/case-builder.d.cts +1 -0
  62. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/delete-query-builder.d.cts +1 -0
  63. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/having-interface.d.cts +1 -0
  64. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/insert-query-builder.d.cts +1 -0
  65. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/join-builder.d.cts +1 -0
  66. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/merge-query-builder.d.cts +1 -0
  67. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/on-conflict-builder.d.cts +1 -0
  68. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/output-interface.d.cts +1 -0
  69. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/returning-interface.d.cts +1 -0
  70. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/select-query-builder.d.cts +1 -0
  71. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/update-query-builder.d.cts +1 -0
  72. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-builder/where-interface.d.cts +1 -0
  73. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-creator.d.cts +1 -0
  74. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-executor/default-query-executor.d.cts +1 -0
  75. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-executor/noop-query-executor.d.cts +1 -0
  76. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-executor/query-executor-base.d.cts +1 -0
  77. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-executor/query-executor-provider.d.cts +1 -0
  78. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/query-executor/query-executor.d.cts +1 -0
  79. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/raw-builder/raw-builder.d.cts +1 -0
  80. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/raw-builder/sql.d.cts +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.cts +1 -0
  82. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/alter-table-add-index-builder.d.cts +1 -0
  83. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/alter-table-builder.d.cts +1 -0
  84. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/alter-table-drop-constraint-builder.d.cts +1 -0
  85. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/alter-table-executor.d.cts +1 -0
  86. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/create-index-builder.d.cts +1 -0
  87. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/create-schema-builder.d.cts +1 -0
  88. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/create-table-builder.d.cts +1 -0
  89. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/create-type-builder.d.cts +1 -0
  90. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/create-view-builder.d.cts +1 -0
  91. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/drop-index-builder.d.cts +1 -0
  92. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/drop-schema-builder.d.cts +1 -0
  93. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/drop-table-builder.d.cts +1 -0
  94. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/drop-type-builder.d.cts +1 -0
  95. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/drop-view-builder.d.cts +1 -0
  96. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/refresh-materialized-view-builder.d.cts +1 -0
  97. package/dist/node_modules/.pnpm/kysely@0.28.5/node_modules/kysely/dist/esm/schema/schema.d.cts +1 -0
  98. package/dist/src/lib/posthog.cjs +8 -0
  99. package/dist/src/lib/posthog.cjs.map +1 -0
  100. package/dist/src/lib/posthog.d.cts +7 -0
  101. package/dist/src/lib/sentry.cjs +11 -0
  102. package/dist/src/lib/sentry.cjs.map +1 -0
  103. package/dist/src/lib/sentry.d.cts +1 -0
  104. package/dist/src/modules/access/access.repository.cjs +26 -0
  105. package/dist/src/modules/access/access.repository.cjs.map +1 -0
  106. package/dist/src/modules/access/access.repository.d.cts +2352 -0
  107. package/dist/src/modules/access/access.service.cjs +42 -0
  108. package/dist/src/modules/access/access.service.cjs.map +1 -0
  109. package/dist/src/modules/access/access.service.d.cts +25 -0
  110. package/dist/src/modules/access/access.utils.cjs +23 -0
  111. package/dist/src/modules/access/access.utils.cjs.map +1 -0
  112. package/dist/src/modules/access/access.utils.d.cts +19 -0
  113. package/dist/src/modules/ai/ai.db.cjs +46 -0
  114. package/dist/src/modules/ai/ai.db.cjs.map +1 -0
  115. package/dist/src/modules/ai/ai.db.d.cts +401 -0
  116. package/dist/src/modules/ai/ai.prompt.cjs +33 -0
  117. package/dist/src/modules/ai/ai.prompt.cjs.map +1 -0
  118. package/dist/src/modules/ai/ai.prompt.d.cts +30 -0
  119. package/dist/src/modules/ai/ai.prompts.cjs +18 -0
  120. package/dist/src/modules/ai/ai.prompts.cjs.map +1 -0
  121. package/dist/src/modules/ai/ai.prompts.d.cts +10 -0
  122. package/dist/src/modules/ai/ai.repository.cjs +25 -0
  123. package/dist/src/modules/ai/ai.repository.cjs.map +1 -0
  124. package/dist/src/modules/ai/ai.repository.d.cts +428 -0
  125. package/dist/src/modules/ai/ai.router.cjs +0 -0
  126. package/dist/src/modules/ai/ai.router.d.cts +1 -0
  127. package/dist/src/modules/ai/ai.service.cjs +312 -0
  128. package/dist/src/modules/ai/ai.service.cjs.map +1 -0
  129. package/dist/src/modules/ai/ai.service.d.cts +141 -0
  130. package/dist/src/modules/ai/ai.trpc.cjs +19 -0
  131. package/dist/src/modules/ai/ai.trpc.cjs.map +1 -0
  132. package/dist/src/modules/ai/ai.trpc.d.cts +31 -0
  133. package/dist/src/modules/ai/ideogram/ideogram.constants.cjs +191 -0
  134. package/dist/src/modules/ai/ideogram/ideogram.constants.cjs.map +1 -0
  135. package/dist/src/modules/ai/ideogram/ideogram.constants.d.cts +11 -0
  136. package/dist/src/modules/ai/ideogram/ideogram.dto.cjs +49 -0
  137. package/dist/src/modules/ai/ideogram/ideogram.dto.cjs.map +1 -0
  138. package/dist/src/modules/ai/ideogram/ideogram.dto.d.cts +234 -0
  139. package/dist/src/modules/ai/ideogram/ideogram.prompt.cjs +862 -0
  140. package/dist/src/modules/ai/ideogram/ideogram.prompt.cjs.map +1 -0
  141. package/dist/src/modules/ai/ideogram/ideogram.prompt.d.cts +7 -0
  142. package/dist/src/modules/ai/ideogram/ideogram.repository.cjs +34 -0
  143. package/dist/src/modules/ai/ideogram/ideogram.repository.cjs.map +1 -0
  144. package/dist/src/modules/ai/ideogram/ideogram.repository.d.cts +11 -0
  145. package/dist/src/modules/ai/ideogram/ideogram.service.cjs +12 -0
  146. package/dist/src/modules/ai/ideogram/ideogram.service.cjs.map +1 -0
  147. package/dist/src/modules/ai/ideogram/ideogram.service.d.cts +14 -0
  148. package/dist/src/modules/auth/auth.db.cjs +187 -0
  149. package/dist/src/modules/auth/auth.db.cjs.map +1 -0
  150. package/dist/src/modules/auth/auth.db.d.cts +2341 -0
  151. package/dist/src/modules/auth/auth.dto.cjs +50 -0
  152. package/dist/src/modules/auth/auth.dto.cjs.map +1 -0
  153. package/dist/src/modules/auth/auth.dto.d.cts +70 -0
  154. package/dist/src/modules/auth/auth.lib.cjs +234 -0
  155. package/dist/src/modules/auth/auth.lib.cjs.map +1 -0
  156. package/dist/src/modules/auth/auth.lib.d.cts +4894 -0
  157. package/dist/src/modules/auth/auth.middleware.cjs +41 -0
  158. package/dist/src/modules/auth/auth.middleware.cjs.map +1 -0
  159. package/dist/src/modules/auth/auth.middleware.d.cts +619 -0
  160. package/dist/src/modules/auth/auth.repository.cjs +403 -0
  161. package/dist/src/modules/auth/auth.repository.cjs.map +1 -0
  162. package/dist/src/modules/auth/auth.repository.d.cts +2453 -0
  163. package/dist/src/modules/auth/auth.service.cjs +229 -0
  164. package/dist/src/modules/auth/auth.service.cjs.map +1 -0
  165. package/dist/src/modules/auth/auth.service.d.cts +105 -0
  166. package/dist/src/modules/auth/auth.trpc.cjs +110 -0
  167. package/dist/src/modules/auth/auth.trpc.cjs.map +1 -0
  168. package/dist/src/modules/auth/auth.trpc.d.cts +303 -0
  169. package/dist/src/modules/auth/auth.utils.cjs +80 -0
  170. package/dist/src/modules/auth/auth.utils.cjs.map +1 -0
  171. package/dist/src/modules/auth/auth.utils.d.cts +2356 -0
  172. package/dist/src/modules/base/base.abstract.cjs +62 -0
  173. package/dist/src/modules/base/base.abstract.cjs.map +1 -0
  174. package/dist/src/modules/base/base.abstract.d.cts +29 -0
  175. package/dist/src/modules/base/base.actor.cjs +83 -0
  176. package/dist/src/modules/base/base.actor.cjs.map +1 -0
  177. package/dist/src/modules/base/base.actor.d.cts +73 -0
  178. package/dist/src/modules/base/base.dto.cjs +98 -0
  179. package/dist/src/modules/base/base.dto.cjs.map +1 -0
  180. package/dist/src/modules/base/base.dto.d.cts +67 -0
  181. package/dist/src/modules/base/base.grants.cjs +107 -0
  182. package/dist/src/modules/base/base.grants.cjs.map +1 -0
  183. package/dist/src/modules/base/base.grants.d.cts +28 -0
  184. package/dist/src/modules/base/base.procedure.cjs +255 -0
  185. package/dist/src/modules/base/base.procedure.cjs.map +1 -0
  186. package/dist/src/modules/base/base.procedure.d.cts +111 -0
  187. package/dist/src/modules/base/base.repository.cjs +269 -0
  188. package/dist/src/modules/base/base.repository.cjs.map +1 -0
  189. package/dist/src/modules/base/base.repository.d.cts +125 -0
  190. package/dist/src/modules/base/base.repository.d.mts +2 -0
  191. package/dist/src/modules/base/base.repository.mjs +12 -0
  192. package/dist/src/modules/base/base.repository.mjs.map +1 -1
  193. package/dist/src/modules/base/base.service.cjs +119 -0
  194. package/dist/src/modules/base/base.service.cjs.map +1 -0
  195. package/dist/src/modules/base/base.service.d.cts +44 -0
  196. package/dist/src/modules/base/base.types.cjs +0 -0
  197. package/dist/src/modules/base/base.types.d.cts +5 -0
  198. package/dist/src/modules/billing/billing.db.cjs +38 -0
  199. package/dist/src/modules/billing/billing.db.cjs.map +1 -0
  200. package/dist/src/modules/billing/billing.db.d.cts +371 -0
  201. package/dist/src/modules/billing/billing.repository.cjs +190 -0
  202. package/dist/src/modules/billing/billing.repository.cjs.map +1 -0
  203. package/dist/src/modules/billing/billing.repository.d.cts +2787 -0
  204. package/dist/src/modules/billing/billing.repository.d.mts +11 -11
  205. package/dist/src/modules/billing/billing.router.cjs +43 -0
  206. package/dist/src/modules/billing/billing.router.cjs.map +1 -0
  207. package/dist/src/modules/billing/billing.router.d.cts +9 -0
  208. package/dist/src/modules/billing/billing.service.cjs +127 -0
  209. package/dist/src/modules/billing/billing.service.cjs.map +1 -0
  210. package/dist/src/modules/billing/billing.service.d.cts +53 -0
  211. package/dist/src/modules/billing/billing.service.d.mts +7 -7
  212. package/dist/src/modules/billing/billing.trpc.cjs +19 -0
  213. package/dist/src/modules/billing/billing.trpc.cjs.map +1 -0
  214. package/dist/src/modules/billing/billing.trpc.d.cts +48 -0
  215. package/dist/src/modules/clay/clay.repository.cjs +29 -0
  216. package/dist/src/modules/clay/clay.repository.cjs.map +1 -0
  217. package/dist/src/modules/clay/clay.repository.d.cts +10 -0
  218. package/dist/src/modules/clay/clay.service.cjs +24 -0
  219. package/dist/src/modules/clay/clay.service.cjs.map +1 -0
  220. package/dist/src/modules/clay/clay.service.d.cts +32 -0
  221. package/dist/src/modules/connect/connect.db.cjs +37 -0
  222. package/dist/src/modules/connect/connect.db.cjs.map +1 -0
  223. package/dist/src/modules/connect/connect.db.d.cts +362 -0
  224. package/dist/src/modules/connect/connect.dto.cjs +45 -0
  225. package/dist/src/modules/connect/connect.dto.cjs.map +1 -0
  226. package/dist/src/modules/connect/connect.dto.d.cts +79 -0
  227. package/dist/src/modules/connect/connect.linkedin.cjs +48 -0
  228. package/dist/src/modules/connect/connect.linkedin.cjs.map +1 -0
  229. package/dist/src/modules/connect/connect.linkedin.d.cts +7 -0
  230. package/dist/src/modules/connect/connect.oauth.cjs +153 -0
  231. package/dist/src/modules/connect/connect.oauth.cjs.map +1 -0
  232. package/dist/src/modules/connect/connect.oauth.d.cts +32 -0
  233. package/dist/src/modules/connect/connect.repository.cjs +42 -0
  234. package/dist/src/modules/connect/connect.repository.cjs.map +1 -0
  235. package/dist/src/modules/connect/connect.repository.d.cts +419 -0
  236. package/dist/src/modules/connect/connect.router.cjs +48 -0
  237. package/dist/src/modules/connect/connect.router.cjs.map +1 -0
  238. package/dist/src/modules/connect/connect.router.d.cts +9 -0
  239. package/dist/src/modules/connect/connect.service.cjs +90 -0
  240. package/dist/src/modules/connect/connect.service.cjs.map +1 -0
  241. package/dist/src/modules/connect/connect.service.d.cts +103 -0
  242. package/dist/src/modules/connect/connect.trpc.cjs +18 -0
  243. package/dist/src/modules/connect/connect.trpc.cjs.map +1 -0
  244. package/dist/src/modules/connect/connect.trpc.d.cts +53 -0
  245. package/dist/src/modules/connect/connect.types.cjs +0 -0
  246. package/dist/src/modules/connect/connect.types.d.cts +29 -0
  247. package/dist/src/modules/crypto/crypto.db.cjs +26 -0
  248. package/dist/src/modules/crypto/crypto.db.cjs.map +1 -0
  249. package/dist/src/modules/crypto/crypto.db.d.cts +157 -0
  250. package/dist/src/modules/crypto/crypto.repository.cjs +9 -0
  251. package/dist/src/modules/crypto/crypto.repository.cjs.map +1 -0
  252. package/dist/src/modules/crypto/crypto.repository.d.cts +163 -0
  253. package/dist/src/modules/crypto/crypto.service.cjs +46 -0
  254. package/dist/src/modules/crypto/crypto.service.cjs.map +1 -0
  255. package/dist/src/modules/crypto/crypto.service.d.cts +15 -0
  256. package/dist/src/modules/email/email.service.cjs +107 -0
  257. package/dist/src/modules/email/email.service.cjs.map +1 -0
  258. package/dist/src/modules/email/email.service.d.cts +62 -0
  259. package/dist/src/modules/file/file.repository.cjs +74 -0
  260. package/dist/src/modules/file/file.repository.cjs.map +1 -0
  261. package/dist/src/modules/file/file.repository.d.cts +17 -0
  262. package/dist/src/modules/file/file.router.cjs +94 -0
  263. package/dist/src/modules/file/file.router.cjs.map +1 -0
  264. package/dist/src/modules/file/file.router.d.cts +7 -0
  265. package/dist/src/modules/file/file.service.cjs +120 -0
  266. package/dist/src/modules/file/file.service.cjs.map +1 -0
  267. package/dist/src/modules/file/file.service.d.cts +30 -0
  268. package/dist/src/modules/recurrence/recurrence.db.cjs +55 -0
  269. package/dist/src/modules/recurrence/recurrence.db.cjs.map +1 -0
  270. package/dist/src/modules/recurrence/recurrence.db.d.cts +568 -0
  271. package/dist/src/modules/recurrence/recurrence.repository.cjs +31 -0
  272. package/dist/src/modules/recurrence/recurrence.repository.cjs.map +1 -0
  273. package/dist/src/modules/recurrence/recurrence.repository.d.cts +588 -0
  274. package/dist/src/modules/recurrence/recurrence.service.cjs +66 -0
  275. package/dist/src/modules/recurrence/recurrence.service.cjs.map +1 -0
  276. package/dist/src/modules/recurrence/recurrence.service.d.cts +88 -0
  277. package/dist/src/modules/recurrence/recurrence.service.d.mts +2 -1
  278. package/dist/src/modules/recurrence/recurrence.service.mjs +1 -1
  279. package/dist/src/modules/recurrence/recurrence.service.mjs.map +1 -1
  280. package/dist/src/modules/recurrence/recurrence.trpc.cjs +46 -0
  281. package/dist/src/modules/recurrence/recurrence.trpc.cjs.map +1 -0
  282. package/dist/src/modules/recurrence/recurrence.trpc.d.cts +216 -0
  283. package/dist/src/modules/recurrence/recurrence.trpc.d.mts +2 -1
  284. package/dist/src/modules/social/social.dto.cjs +26 -0
  285. package/dist/src/modules/social/social.dto.cjs.map +1 -0
  286. package/dist/src/modules/social/social.dto.d.cts +39 -0
  287. package/dist/src/modules/social/social.linkedin.cjs +349 -0
  288. package/dist/src/modules/social/social.linkedin.cjs.map +1 -0
  289. package/dist/src/modules/social/social.linkedin.d.cts +15 -0
  290. package/dist/src/modules/social/social.service.cjs +57 -0
  291. package/dist/src/modules/social/social.service.cjs.map +1 -0
  292. package/dist/src/modules/social/social.service.d.cts +34 -0
  293. package/dist/src/modules/social/social.types.cjs +0 -0
  294. package/dist/src/modules/social/social.types.d.cts +40 -0
  295. package/dist/src/modules/tag/tag.db.cjs +43 -0
  296. package/dist/src/modules/tag/tag.db.cjs.map +1 -0
  297. package/dist/src/modules/tag/tag.db.d.cts +352 -0
  298. package/dist/src/modules/tag/tag.dto.cjs +15 -0
  299. package/dist/src/modules/tag/tag.dto.cjs.map +1 -0
  300. package/dist/src/modules/tag/tag.dto.d.cts +1025 -0
  301. package/dist/src/modules/tag/tag.repository.cjs +116 -0
  302. package/dist/src/modules/tag/tag.repository.cjs.map +1 -0
  303. package/dist/src/modules/tag/tag.repository.d.cts +394 -0
  304. package/dist/src/modules/tag/tag.service.cjs +48 -0
  305. package/dist/src/modules/tag/tag.service.cjs.map +1 -0
  306. package/dist/src/modules/tag/tag.service.d.cts +120 -0
  307. package/dist/src/modules/tag/tag.trpc.cjs +32 -0
  308. package/dist/src/modules/tag/tag.trpc.cjs.map +1 -0
  309. package/dist/src/modules/tag/tag.trpc.d.cts +174 -0
  310. package/dist/src/modules/tag/tag.trpc.d.mts +3 -2
  311. package/dist/src/modules/utils/applyPagination.cjs +16 -0
  312. package/dist/src/modules/utils/applyPagination.cjs.map +1 -0
  313. package/dist/src/modules/utils/applyPagination.d.cts +10 -0
  314. package/dist/src/modules/utils/applySorting.cjs +20 -0
  315. package/dist/src/modules/utils/applySorting.cjs.map +1 -0
  316. package/dist/src/modules/utils/applySorting.d.cts +13 -0
  317. package/dist/src/modules/utils/getConditionsFromFilters.cjs +152 -0
  318. package/dist/src/modules/utils/getConditionsFromFilters.cjs.map +1 -0
  319. package/dist/src/modules/utils/getConditionsFromFilters.d.cts +9 -0
  320. package/dist/src/modules/utils/getGlobalSearchCondition.cjs +30 -0
  321. package/dist/src/modules/utils/getGlobalSearchCondition.cjs.map +1 -0
  322. package/dist/src/modules/utils/getGlobalSearchCondition.d.cts +18 -0
  323. package/dist/src/modules/utils/getGlobalSearchCondition.d.mts +18 -0
  324. package/dist/src/modules/utils/getGlobalSearchCondition.mjs +26 -0
  325. package/dist/src/modules/utils/getGlobalSearchCondition.mjs.map +1 -0
  326. package/dist/src/modules/video/video.service.cjs +114 -0
  327. package/dist/src/modules/video/video.service.cjs.map +1 -0
  328. package/dist/src/modules/video/video.service.d.cts +12 -0
  329. package/dist/src/modules/video/video.service.mjs +73 -13
  330. package/dist/src/modules/video/video.service.mjs.map +1 -1
  331. package/dist/src/modules/webhook/webhook.constants.cjs +13 -0
  332. package/dist/src/modules/webhook/webhook.constants.cjs.map +1 -0
  333. package/dist/src/modules/webhook/webhook.constants.d.cts +12 -0
  334. package/dist/src/modules/webhook/webhook.db.cjs +19 -0
  335. package/dist/src/modules/webhook/webhook.db.cjs.map +1 -0
  336. package/dist/src/modules/webhook/webhook.db.d.cts +142 -0
  337. package/dist/src/modules/webhook/webhook.dto.cjs +11 -0
  338. package/dist/src/modules/webhook/webhook.dto.cjs.map +1 -0
  339. package/dist/src/modules/webhook/webhook.dto.d.cts +402 -0
  340. package/dist/src/modules/webhook/webhook.repository.cjs +52 -0
  341. package/dist/src/modules/webhook/webhook.repository.cjs.map +1 -0
  342. package/dist/src/modules/webhook/webhook.repository.d.cts +154 -0
  343. package/dist/src/modules/webhook/webhook.router.cjs +26 -0
  344. package/dist/src/modules/webhook/webhook.router.cjs.map +1 -0
  345. package/dist/src/modules/webhook/webhook.router.d.cts +8 -0
  346. package/dist/src/modules/webhook/webhook.service.cjs +61 -0
  347. package/dist/src/modules/webhook/webhook.service.cjs.map +1 -0
  348. package/dist/src/modules/webhook/webhook.service.d.cts +14 -0
  349. package/dist/src/modules/workflow/workflow.db.cjs +35 -0
  350. package/dist/src/modules/workflow/workflow.db.cjs.map +1 -0
  351. package/dist/src/modules/workflow/workflow.db.d.cts +302 -0
  352. package/dist/src/modules/workflow/workflow.repository.cjs +95 -0
  353. package/dist/src/modules/workflow/workflow.repository.cjs.map +1 -0
  354. package/dist/src/modules/workflow/workflow.repository.d.cts +371 -0
  355. package/dist/src/modules/workflow/workflow.service.cjs +41 -0
  356. package/dist/src/modules/workflow/workflow.service.cjs.map +1 -0
  357. package/dist/src/modules/workflow/workflow.service.d.cts +68 -0
  358. package/dist/src/modules/workflow/workflow.trpc.cjs +19 -0
  359. package/dist/src/modules/workflow/workflow.trpc.cjs.map +1 -0
  360. package/dist/src/modules/workflow/workflow.trpc.d.cts +65 -0
  361. package/dist/src/modules/workflow/workflow.types.cjs +0 -0
  362. package/dist/src/modules/workflow/workflow.types.d.cts +25 -0
  363. package/dist/src/modules/workflow/workflow.utils.cjs +185 -0
  364. package/dist/src/modules/workflow/workflow.utils.cjs.map +1 -0
  365. package/dist/src/modules/workflow/workflow.utils.d.cts +36 -0
  366. package/dist/src/types.cjs +12 -0
  367. package/dist/src/types.cjs.map +1 -0
  368. package/dist/src/types.d.cts +344 -0
  369. package/dist/src/utils/errors.cjs +101 -0
  370. package/dist/src/utils/errors.cjs.map +1 -0
  371. package/dist/src/utils/errors.d.cts +62 -0
  372. package/dist/src/utils/logger.cjs +13 -0
  373. package/dist/src/utils/logger.cjs.map +1 -0
  374. package/dist/src/utils/logger.d.cts +7 -0
  375. package/dist/src/utils/posthog.cjs +31 -0
  376. package/dist/src/utils/posthog.cjs.map +1 -0
  377. package/dist/src/utils/posthog.d.cts +17 -0
  378. package/dist/src/utils/trpc.cjs +156 -0
  379. package/dist/src/utils/trpc.cjs.map +1 -0
  380. package/dist/src/utils/trpc.d.cts +54 -0
  381. package/dist/src/utils/types.cjs +0 -0
  382. package/dist/src/utils/types.d.cts +9 -0
  383. package/package.json +171 -47
@@ -0,0 +1,153 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
3
+ const require_src_utils_logger = require("../../utils/logger.cjs");
4
+ let openid_client = require("openid-client");
5
+ openid_client = require_runtime.__toESM(openid_client);
6
+ //#region src/modules/connect/connect.oauth.ts
7
+ const oauthStateStore = /* @__PURE__ */ new Map();
8
+ const STATE_TTL_MS = 600 * 1e3;
9
+ function getStateKey(sessionId, provider) {
10
+ return `${sessionId}:${provider}`;
11
+ }
12
+ async function generateOAuthState(sessionId, provider) {
13
+ const state = openid_client.randomState();
14
+ const codeVerifier = openid_client.randomPKCECodeVerifier();
15
+ const oauthState = {
16
+ state,
17
+ codeVerifier,
18
+ codeChallenge: await openid_client.calculatePKCECodeChallenge(codeVerifier),
19
+ sessionId,
20
+ provider
21
+ };
22
+ const key = getStateKey(sessionId, provider);
23
+ oauthStateStore.set(key, oauthState);
24
+ setTimeout(() => {
25
+ oauthStateStore.delete(key);
26
+ }, STATE_TTL_MS);
27
+ return oauthState;
28
+ }
29
+ function getOAuthState(sessionId, provider, state) {
30
+ const key = getStateKey(sessionId, provider);
31
+ const stored = oauthStateStore.get(key);
32
+ if (!stored || stored.state !== state) return null;
33
+ oauthStateStore.delete(key);
34
+ return stored;
35
+ }
36
+ async function createConfiguration(provider) {
37
+ const clientAuth = provider.clientSecret ? openid_client.ClientSecretPost(provider.clientSecret) : openid_client.None();
38
+ if (provider.issuerConfig) {
39
+ const serverMetadata = {
40
+ issuer: provider.issuerConfig.issuer,
41
+ authorization_endpoint: provider.issuerConfig.authorization_endpoint,
42
+ token_endpoint: provider.issuerConfig.token_endpoint,
43
+ ...provider.issuerConfig.userinfo_endpoint && { userinfo_endpoint: provider.issuerConfig.userinfo_endpoint },
44
+ ...provider.id === "linkedin" && { jwks_uri: "https://www.linkedin.com/oauth/openid/jwks" }
45
+ };
46
+ const clientMetadata = {
47
+ client_id: provider.clientId,
48
+ ...provider.clientSecret && { client_secret: provider.clientSecret },
49
+ redirect_uris: [provider.redirectUri]
50
+ };
51
+ return new openid_client.Configuration(serverMetadata, provider.clientId, clientMetadata, clientAuth);
52
+ }
53
+ if (!provider.issuerUrl) throw new Error("Provider must have either issuerConfig or issuerUrl");
54
+ const serverUrl = new URL(provider.issuerUrl);
55
+ return await openid_client.discovery(serverUrl, provider.clientId, void 0, clientAuth);
56
+ }
57
+ async function buildAuthorizationUrl(provider, state) {
58
+ const config = await createConfiguration(provider);
59
+ const parameters = {
60
+ scope: provider.scopes.join(" "),
61
+ state: state.state,
62
+ redirect_uri: provider.redirectUri
63
+ };
64
+ if (provider.supportsPKCE !== false) {
65
+ parameters.code_challenge = state.codeChallenge;
66
+ parameters.code_challenge_method = "S256";
67
+ }
68
+ return openid_client.buildAuthorizationUrl(config, parameters).toString();
69
+ }
70
+ async function exchangeCodeForTokens(provider, code, codeVerifier, redirectUri, state) {
71
+ const logger$1 = require_src_utils_logger.logger.child({ layer: "exchangeCodeForTokens" });
72
+ try {
73
+ if (provider.id === "linkedin" && provider.issuerConfig) {
74
+ const tokenEndpoint = provider.issuerConfig.token_endpoint;
75
+ const body = new URLSearchParams({
76
+ grant_type: "authorization_code",
77
+ code,
78
+ redirect_uri: provider.redirectUri,
79
+ client_id: provider.clientId,
80
+ client_secret: provider.clientSecret
81
+ });
82
+ const response = await fetch(tokenEndpoint, {
83
+ method: "POST",
84
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
85
+ body: body.toString()
86
+ });
87
+ if (!response.ok) {
88
+ const errorData = await response.json().catch(() => ({}));
89
+ throw new Error(`LinkedIn token exchange failed: ${response.status} ${response.statusText} - ${JSON.stringify(errorData)}`);
90
+ }
91
+ const tokenData = await response.json();
92
+ return {
93
+ accessToken: tokenData.access_token,
94
+ refreshToken: tokenData.refresh_token,
95
+ tokenType: tokenData.token_type || "bearer",
96
+ expiresAt: tokenData.expires_in ? new Date(Date.now() + tokenData.expires_in * 1e3) : void 0,
97
+ scope: tokenData.scope
98
+ };
99
+ }
100
+ const config = await createConfiguration(provider);
101
+ const currentUrl = new URL(redirectUri);
102
+ currentUrl.searchParams.set("code", code);
103
+ currentUrl.searchParams.set("state", state);
104
+ const checks = { expectedState: state };
105
+ if (provider.supportsPKCE !== false) checks.pkceCodeVerifier = codeVerifier;
106
+ const tokenSet = await openid_client.authorizationCodeGrant(config, currentUrl, checks);
107
+ return {
108
+ accessToken: tokenSet.access_token,
109
+ refreshToken: tokenSet.refresh_token,
110
+ tokenType: tokenSet.token_type,
111
+ expiresAt: tokenSet.expires_in ? new Date(Date.now() + tokenSet.expires_in * 1e3) : void 0,
112
+ scope: tokenSet.scope
113
+ };
114
+ } catch (error) {
115
+ logger$1.error("Token exchange error", {
116
+ error,
117
+ provider: provider.id
118
+ });
119
+ if (error instanceof Error) {
120
+ const errorMessage = error.message || "Unknown error";
121
+ if (provider.id === "linkedin" && errorMessage.includes("JWT claim") && error.code === "OAUTH_JWT_CLAIM_COMPARISON_FAILED") {
122
+ logger$1.warn("LinkedIn ID token validation failed, but token exchange may have succeeded. Check if access token is available.", { error: errorMessage });
123
+ throw new Error(`LinkedIn ID token validation failed: ${errorMessage}. This is a known issue with LinkedIn's OpenID Connect implementation.`);
124
+ }
125
+ const errorDetails = error.cause;
126
+ const linkedInError = errorDetails?.error;
127
+ const linkedInErrorDescription = errorDetails?.error_description;
128
+ const fullErrorMessage = linkedInError ? `LinkedIn OAuth error: ${linkedInError}${linkedInErrorDescription ? ` - ${linkedInErrorDescription}` : ""}` : `Token exchange failed: ${errorMessage}${errorDetails ? ` - Details: ${JSON.stringify(errorDetails)}` : ""}`;
129
+ throw new Error(fullErrorMessage);
130
+ }
131
+ throw error;
132
+ }
133
+ }
134
+ async function refreshAccessToken(provider, refreshToken) {
135
+ const config = await createConfiguration(provider);
136
+ const tokenSet = await openid_client.refreshTokenGrant(config, refreshToken);
137
+ return {
138
+ accessToken: tokenSet.access_token,
139
+ refreshToken: tokenSet.refresh_token || refreshToken,
140
+ tokenType: tokenSet.token_type,
141
+ expiresAt: tokenSet.expires_in ? new Date(Date.now() + tokenSet.expires_in * 1e3) : void 0,
142
+ scope: tokenSet.scope
143
+ };
144
+ }
145
+ //#endregion
146
+ exports.buildAuthorizationUrl = buildAuthorizationUrl;
147
+ exports.createConfiguration = createConfiguration;
148
+ exports.exchangeCodeForTokens = exchangeCodeForTokens;
149
+ exports.generateOAuthState = generateOAuthState;
150
+ exports.getOAuthState = getOAuthState;
151
+ exports.refreshAccessToken = refreshAccessToken;
152
+
153
+ //# sourceMappingURL=connect.oauth.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.oauth.cjs","names":["client","logger","rootLogger"],"sources":["../../../../src/modules/connect/connect.oauth.ts"],"sourcesContent":["import * as client from \"openid-client\";\r\nimport { logger as rootLogger } from \"../../utils/logger\";\r\nimport type { ConnectProvider } from \"./connect.types\";\r\n\r\nexport interface OAuthState {\r\n state: string;\r\n codeVerifier: string;\r\n codeChallenge: string;\r\n sessionId: string;\r\n provider: string;\r\n}\r\n\r\n// In-memory store for OAuth state (keyed by sessionId + provider)\r\n// In production, consider using Redis with TTL\r\nconst oauthStateStore = new Map<string, OAuthState>();\r\n\r\nconst STATE_TTL_MS = 10 * 60 * 1000; // 10 minutes\r\n\r\nfunction getStateKey(sessionId: string, provider: string): string {\r\n return `${sessionId}:${provider}`;\r\n}\r\n\r\nexport async function generateOAuthState(sessionId: string, provider: string): Promise<OAuthState> {\r\n const state = client.randomState();\r\n const codeVerifier = client.randomPKCECodeVerifier();\r\n const codeChallenge = await client.calculatePKCECodeChallenge(codeVerifier);\r\n\r\n const oauthState: OAuthState = {\r\n state,\r\n codeVerifier,\r\n codeChallenge,\r\n sessionId,\r\n provider,\r\n };\r\n\r\n const key = getStateKey(sessionId, provider);\r\n oauthStateStore.set(key, oauthState);\r\n\r\n // Clean up after TTL\r\n setTimeout(() => {\r\n oauthStateStore.delete(key);\r\n }, STATE_TTL_MS);\r\n\r\n return oauthState;\r\n}\r\n\r\nexport function getOAuthState(\r\n sessionId: string,\r\n provider: string,\r\n state: string\r\n): OAuthState | null {\r\n const key = getStateKey(sessionId, provider);\r\n const stored = oauthStateStore.get(key);\r\n\r\n if (!stored || stored.state !== state) {\r\n return null;\r\n }\r\n\r\n // Clean up after use\r\n oauthStateStore.delete(key);\r\n return stored;\r\n}\r\n\r\nexport async function createConfiguration(\r\n provider: ConnectProvider\r\n): Promise<client.Configuration> {\r\n // LinkedIn uses client_secret_post (form-encoded body parameters)\r\n // The library's ClientSecretPost handles this correctly\r\n const clientAuth = provider.clientSecret\r\n ? client.ClientSecretPost(provider.clientSecret)\r\n : client.None();\r\n\r\n if (provider.issuerConfig) {\r\n // Use manual issuer config (e.g., LinkedIn) - create Configuration directly\r\n // LinkedIn doesn't support OpenID Connect discovery\r\n const serverMetadata: client.ServerMetadata = {\r\n issuer: provider.issuerConfig.issuer,\r\n authorization_endpoint: provider.issuerConfig.authorization_endpoint,\r\n token_endpoint: provider.issuerConfig.token_endpoint,\r\n ...(provider.issuerConfig.userinfo_endpoint && {\r\n userinfo_endpoint: provider.issuerConfig.userinfo_endpoint,\r\n }),\r\n // LinkedIn JWKS URI for ID token signature verification\r\n ...(provider.id === \"linkedin\" && {\r\n jwks_uri: \"https://www.linkedin.com/oauth/openid/jwks\",\r\n }),\r\n };\r\n\r\n const clientMetadata: Partial<client.ClientMetadata> = {\r\n client_id: provider.clientId,\r\n ...(provider.clientSecret && { client_secret: provider.clientSecret }),\r\n redirect_uris: [provider.redirectUri],\r\n };\r\n\r\n return new client.Configuration(serverMetadata, provider.clientId, clientMetadata, clientAuth);\r\n }\r\n\r\n // Auto-discovery from well-known endpoint\r\n if (!provider.issuerUrl) {\r\n throw new Error(\"Provider must have either issuerConfig or issuerUrl\");\r\n }\r\n\r\n const serverUrl = new URL(provider.issuerUrl);\r\n return await client.discovery(serverUrl, provider.clientId, undefined, clientAuth);\r\n}\r\n\r\nexport async function buildAuthorizationUrl(\r\n provider: ConnectProvider,\r\n state: OAuthState\r\n): Promise<string> {\r\n const config = await createConfiguration(provider);\r\n\r\n const parameters: Record<string, string> = {\r\n scope: provider.scopes.join(\" \"),\r\n state: state.state,\r\n redirect_uri: provider.redirectUri,\r\n };\r\n\r\n // Add PKCE parameters only if provider supports it\r\n if (provider.supportsPKCE !== false) {\r\n parameters.code_challenge = state.codeChallenge;\r\n parameters.code_challenge_method = \"S256\";\r\n }\r\n\r\n const url = client.buildAuthorizationUrl(config, parameters);\r\n return url.toString();\r\n}\r\n\r\nexport async function exchangeCodeForTokens(\r\n provider: ConnectProvider,\r\n code: string,\r\n codeVerifier: string,\r\n redirectUri: string,\r\n state: string\r\n): Promise<{\r\n accessToken: string;\r\n refreshToken?: string;\r\n tokenType?: string;\r\n expiresAt?: Date;\r\n scope?: string;\r\n}> {\r\n const logger = rootLogger.child({ layer: \"exchangeCodeForTokens\" });\r\n\r\n try {\r\n // LinkedIn-specific workaround: Manual token exchange to bypass ID token validation\r\n // LinkedIn's OpenID Connect ID token has non-standard claim format\r\n if (provider.id === \"linkedin\" && provider.issuerConfig) {\r\n const tokenEndpoint = provider.issuerConfig.token_endpoint;\r\n const body = new URLSearchParams({\r\n grant_type: \"authorization_code\",\r\n code,\r\n redirect_uri: provider.redirectUri,\r\n client_id: provider.clientId,\r\n client_secret: provider.clientSecret,\r\n });\r\n\r\n const response = await fetch(tokenEndpoint, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n },\r\n body: body.toString(),\r\n });\r\n\r\n if (!response.ok) {\r\n const errorData = await response.json().catch(() => ({}));\r\n throw new Error(\r\n `LinkedIn token exchange failed: ${response.status} ${response.statusText} - ${JSON.stringify(errorData)}`\r\n );\r\n }\r\n\r\n const tokenData = (await response.json()) as {\r\n access_token: string;\r\n refresh_token?: string;\r\n token_type?: string;\r\n expires_in?: number;\r\n scope?: string;\r\n };\r\n\r\n return {\r\n accessToken: tokenData.access_token,\r\n refreshToken: tokenData.refresh_token,\r\n tokenType: tokenData.token_type || \"bearer\",\r\n expiresAt: tokenData.expires_in\r\n ? new Date(Date.now() + tokenData.expires_in * 1000)\r\n : undefined,\r\n scope: tokenData.scope,\r\n };\r\n }\r\n\r\n // Standard flow for other providers\r\n const config = await createConfiguration(provider);\r\n const currentUrl = new URL(redirectUri);\r\n currentUrl.searchParams.set(\"code\", code);\r\n currentUrl.searchParams.set(\"state\", state);\r\n\r\n const checks: {\r\n pkceCodeVerifier?: string;\r\n expectedState: string;\r\n } = {\r\n expectedState: state,\r\n };\r\n\r\n // Only include PKCE verifier if provider supports it\r\n if (provider.supportsPKCE !== false) {\r\n checks.pkceCodeVerifier = codeVerifier;\r\n }\r\n\r\n const tokenSet = await client.authorizationCodeGrant(config, currentUrl, checks);\r\n\r\n return {\r\n accessToken: tokenSet.access_token,\r\n refreshToken: tokenSet.refresh_token,\r\n tokenType: tokenSet.token_type,\r\n expiresAt: tokenSet.expires_in\r\n ? new Date(Date.now() + tokenSet.expires_in * 1000)\r\n : undefined,\r\n scope: tokenSet.scope,\r\n };\r\n } catch (error: unknown) {\r\n // Enhanced error logging for OAuth issues\r\n logger.error(\"Token exchange error\", { error, provider: provider.id });\r\n\r\n if (error instanceof Error) {\r\n const errorMessage = error.message || \"Unknown error\";\r\n\r\n // Check if this is an ID token validation error for LinkedIn\r\n // LinkedIn's ID token may have non-standard claim format, but we can still use the access token\r\n if (\r\n provider.id === \"linkedin\" &&\r\n errorMessage.includes(\"JWT claim\") &&\r\n (error as { code?: string }).code === \"OAUTH_JWT_CLAIM_COMPARISON_FAILED\"\r\n ) {\r\n // Try to extract access token from the error response if available\r\n // This is a workaround for LinkedIn's ID token validation issues\r\n logger.warn(\r\n \"LinkedIn ID token validation failed, but token exchange may have succeeded. Check if access token is available.\",\r\n { error: errorMessage }\r\n );\r\n // Re-throw for now - we need the access token to continue\r\n // In a production scenario, you might want to manually parse the token response\r\n throw new Error(\r\n `LinkedIn ID token validation failed: ${errorMessage}. This is a known issue with LinkedIn's OpenID Connect implementation.`\r\n );\r\n }\r\n\r\n // ResponseBodyError from oauth4webapi has a 'cause' property with the error details\r\n const responseBodyError = error as { cause?: Record<string, unknown> };\r\n const errorDetails = responseBodyError.cause;\r\n\r\n // Extract error and error_description from LinkedIn's response\r\n const linkedInError = errorDetails?.error as string | undefined;\r\n const linkedInErrorDescription = errorDetails?.error_description as string | undefined;\r\n\r\n const fullErrorMessage = linkedInError\r\n ? `LinkedIn OAuth error: ${linkedInError}${linkedInErrorDescription ? ` - ${linkedInErrorDescription}` : \"\"}`\r\n : `Token exchange failed: ${errorMessage}${\r\n errorDetails ? ` - Details: ${JSON.stringify(errorDetails)}` : \"\"\r\n }`;\r\n\r\n throw new Error(fullErrorMessage);\r\n }\r\n throw error;\r\n }\r\n}\r\n\r\nexport async function refreshAccessToken(\r\n provider: ConnectProvider,\r\n refreshToken: string\r\n): Promise<{\r\n accessToken: string;\r\n refreshToken?: string;\r\n tokenType?: string;\r\n expiresAt?: Date;\r\n scope?: string;\r\n}> {\r\n const config = await createConfiguration(provider);\r\n\r\n const tokenSet = await client.refreshTokenGrant(config, refreshToken);\r\n\r\n return {\r\n accessToken: tokenSet.access_token,\r\n refreshToken: tokenSet.refresh_token || refreshToken,\r\n tokenType: tokenSet.token_type,\r\n expiresAt: tokenSet.expires_in ? new Date(Date.now() + tokenSet.expires_in * 1000) : undefined,\r\n scope: tokenSet.scope,\r\n };\r\n}\r\n"],"mappings":";;;;;;AAcA,MAAM,kCAAkB,IAAI,KAAyB;AAErD,MAAM,eAAe,MAAU;AAE/B,SAAS,YAAY,WAAmB,UAA0B;AAChE,QAAO,GAAG,UAAU,GAAG;;AAGzB,eAAsB,mBAAmB,WAAmB,UAAuC;CACjG,MAAM,QAAQA,cAAO,aAAa;CAClC,MAAM,eAAeA,cAAO,wBAAwB;CAGpD,MAAM,aAAyB;EAC7B;EACA;EACA,eALoB,MAAMA,cAAO,2BAA2B,aAAa;EAMzE;EACA;EACD;CAED,MAAM,MAAM,YAAY,WAAW,SAAS;AAC5C,iBAAgB,IAAI,KAAK,WAAW;AAGpC,kBAAiB;AACf,kBAAgB,OAAO,IAAI;IAC1B,aAAa;AAEhB,QAAO;;AAGT,SAAgB,cACd,WACA,UACA,OACmB;CACnB,MAAM,MAAM,YAAY,WAAW,SAAS;CAC5C,MAAM,SAAS,gBAAgB,IAAI,IAAI;AAEvC,KAAI,CAAC,UAAU,OAAO,UAAU,MAC9B,QAAO;AAIT,iBAAgB,OAAO,IAAI;AAC3B,QAAO;;AAGT,eAAsB,oBACpB,UAC+B;CAG/B,MAAM,aAAa,SAAS,eACxBA,cAAO,iBAAiB,SAAS,aAAa,GAC9CA,cAAO,MAAM;AAEjB,KAAI,SAAS,cAAc;EAGzB,MAAM,iBAAwC;GAC5C,QAAQ,SAAS,aAAa;GAC9B,wBAAwB,SAAS,aAAa;GAC9C,gBAAgB,SAAS,aAAa;GACtC,GAAI,SAAS,aAAa,qBAAqB,EAC7C,mBAAmB,SAAS,aAAa,mBAC1C;GAED,GAAI,SAAS,OAAO,cAAc,EAChC,UAAU,8CACX;GACF;EAED,MAAM,iBAAiD;GACrD,WAAW,SAAS;GACpB,GAAI,SAAS,gBAAgB,EAAE,eAAe,SAAS,cAAc;GACrE,eAAe,CAAC,SAAS,YAAY;GACtC;AAED,SAAO,IAAIA,cAAO,cAAc,gBAAgB,SAAS,UAAU,gBAAgB,WAAW;;AAIhG,KAAI,CAAC,SAAS,UACZ,OAAM,IAAI,MAAM,sDAAsD;CAGxE,MAAM,YAAY,IAAI,IAAI,SAAS,UAAU;AAC7C,QAAO,MAAMA,cAAO,UAAU,WAAW,SAAS,UAAU,KAAA,GAAW,WAAW;;AAGpF,eAAsB,sBACpB,UACA,OACiB;CACjB,MAAM,SAAS,MAAM,oBAAoB,SAAS;CAElD,MAAM,aAAqC;EACzC,OAAO,SAAS,OAAO,KAAK,IAAI;EAChC,OAAO,MAAM;EACb,cAAc,SAAS;EACxB;AAGD,KAAI,SAAS,iBAAiB,OAAO;AACnC,aAAW,iBAAiB,MAAM;AAClC,aAAW,wBAAwB;;AAIrC,QADYA,cAAO,sBAAsB,QAAQ,WAAW,CACjD,UAAU;;AAGvB,eAAsB,sBACpB,UACA,MACA,cACA,aACA,OAOC;CACD,MAAMC,WAASC,yBAAAA,OAAW,MAAM,EAAE,OAAO,yBAAyB,CAAC;AAEnE,KAAI;AAGF,MAAI,SAAS,OAAO,cAAc,SAAS,cAAc;GACvD,MAAM,gBAAgB,SAAS,aAAa;GAC5C,MAAM,OAAO,IAAI,gBAAgB;IAC/B,YAAY;IACZ;IACA,cAAc,SAAS;IACvB,WAAW,SAAS;IACpB,eAAe,SAAS;IACzB,CAAC;GAEF,MAAM,WAAW,MAAM,MAAM,eAAe;IAC1C,QAAQ;IACR,SAAS,EACP,gBAAgB,qCACjB;IACD,MAAM,KAAK,UAAU;IACtB,CAAC;AAEF,OAAI,CAAC,SAAS,IAAI;IAChB,MAAM,YAAY,MAAM,SAAS,MAAM,CAAC,aAAa,EAAE,EAAE;AACzD,UAAM,IAAI,MACR,mCAAmC,SAAS,OAAO,GAAG,SAAS,WAAW,KAAK,KAAK,UAAU,UAAU,GACzG;;GAGH,MAAM,YAAa,MAAM,SAAS,MAAM;AAQxC,UAAO;IACL,aAAa,UAAU;IACvB,cAAc,UAAU;IACxB,WAAW,UAAU,cAAc;IACnC,WAAW,UAAU,aACjB,IAAI,KAAK,KAAK,KAAK,GAAG,UAAU,aAAa,IAAK,GAClD,KAAA;IACJ,OAAO,UAAU;IAClB;;EAIH,MAAM,SAAS,MAAM,oBAAoB,SAAS;EAClD,MAAM,aAAa,IAAI,IAAI,YAAY;AACvC,aAAW,aAAa,IAAI,QAAQ,KAAK;AACzC,aAAW,aAAa,IAAI,SAAS,MAAM;EAE3C,MAAM,SAGF,EACF,eAAe,OAChB;AAGD,MAAI,SAAS,iBAAiB,MAC5B,QAAO,mBAAmB;EAG5B,MAAM,WAAW,MAAMF,cAAO,uBAAuB,QAAQ,YAAY,OAAO;AAEhF,SAAO;GACL,aAAa,SAAS;GACtB,cAAc,SAAS;GACvB,WAAW,SAAS;GACpB,WAAW,SAAS,aAChB,IAAI,KAAK,KAAK,KAAK,GAAG,SAAS,aAAa,IAAK,GACjD,KAAA;GACJ,OAAO,SAAS;GACjB;UACM,OAAgB;AAEvB,WAAO,MAAM,wBAAwB;GAAE;GAAO,UAAU,SAAS;GAAI,CAAC;AAEtE,MAAI,iBAAiB,OAAO;GAC1B,MAAM,eAAe,MAAM,WAAW;AAItC,OACE,SAAS,OAAO,cAChB,aAAa,SAAS,YAAY,IACjC,MAA4B,SAAS,qCACtC;AAGA,aAAO,KACL,mHACA,EAAE,OAAO,cAAc,CACxB;AAGD,UAAM,IAAI,MACR,wCAAwC,aAAa,wEACtD;;GAKH,MAAM,eADoB,MACa;GAGvC,MAAM,gBAAgB,cAAc;GACpC,MAAM,2BAA2B,cAAc;GAE/C,MAAM,mBAAmB,gBACrB,yBAAyB,gBAAgB,2BAA2B,MAAM,6BAA6B,OACvG,0BAA0B,eACxB,eAAe,eAAe,KAAK,UAAU,aAAa,KAAK;AAGrE,SAAM,IAAI,MAAM,iBAAiB;;AAEnC,QAAM;;;AAIV,eAAsB,mBACpB,UACA,cAOC;CACD,MAAM,SAAS,MAAM,oBAAoB,SAAS;CAElD,MAAM,WAAW,MAAMA,cAAO,kBAAkB,QAAQ,aAAa;AAErE,QAAO;EACL,aAAa,SAAS;EACtB,cAAc,SAAS,iBAAiB;EACxC,WAAW,SAAS;EACpB,WAAW,SAAS,aAAa,IAAI,KAAK,KAAK,KAAK,GAAG,SAAS,aAAa,IAAK,GAAG,KAAA;EACrF,OAAO,SAAS;EACjB"}
@@ -0,0 +1,32 @@
1
+ import { ConnectProvider } from "./connect.types.cjs";
2
+ import * as client from "openid-client";
3
+
4
+ //#region src/modules/connect/connect.oauth.d.ts
5
+ interface OAuthState {
6
+ state: string;
7
+ codeVerifier: string;
8
+ codeChallenge: string;
9
+ sessionId: string;
10
+ provider: string;
11
+ }
12
+ declare function generateOAuthState(sessionId: string, provider: string): Promise<OAuthState>;
13
+ declare function getOAuthState(sessionId: string, provider: string, state: string): OAuthState | null;
14
+ declare function createConfiguration(provider: ConnectProvider): Promise<client.Configuration>;
15
+ declare function buildAuthorizationUrl(provider: ConnectProvider, state: OAuthState): Promise<string>;
16
+ declare function exchangeCodeForTokens(provider: ConnectProvider, code: string, codeVerifier: string, redirectUri: string, state: string): Promise<{
17
+ accessToken: string;
18
+ refreshToken?: string;
19
+ tokenType?: string;
20
+ expiresAt?: Date;
21
+ scope?: string;
22
+ }>;
23
+ declare function refreshAccessToken(provider: ConnectProvider, refreshToken: string): Promise<{
24
+ accessToken: string;
25
+ refreshToken?: string;
26
+ tokenType?: string;
27
+ expiresAt?: Date;
28
+ scope?: string;
29
+ }>;
30
+ //#endregion
31
+ export { OAuthState, buildAuthorizationUrl, createConfiguration, exchangeCodeForTokens, generateOAuthState, getOAuthState, refreshAccessToken };
32
+ //# sourceMappingURL=connect.oauth.d.cts.map
@@ -0,0 +1,42 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ require("../../../_virtual/_rolldown/runtime.cjs");
3
+ const require_src_modules_base_base_repository = require("../base/base.repository.cjs");
4
+ const require_src_modules_connect_connect_db = require("./connect.db.cjs");
5
+ let drizzle_orm = require("drizzle-orm");
6
+ let neverthrow = require("neverthrow");
7
+ //#region src/modules/connect/connect.repository.ts
8
+ ({ ...require_src_modules_connect_connect_db.connect_db_exports });
9
+ var ConnectRepository = class extends require_src_modules_base_base_repository.BaseTableRepository {
10
+ async list(data, tx) {
11
+ return this.throwableAsync(async () => {
12
+ const db = tx ?? this.orm;
13
+ const { ConditionBuilder } = this.helpers;
14
+ const conditions = new ConditionBuilder();
15
+ if (data.providers) conditions.push((0, drizzle_orm.inArray)(this.schema.connect.provider, data.providers));
16
+ if (data.inactive) conditions.push((0, drizzle_orm.isNull)(this.schema.connect.revokedAt));
17
+ conditions.push((0, drizzle_orm.eq)(this.schema.connect.userId, data.userId));
18
+ return (0, neverthrow.ok)(await db.select().from(this.schema.connect).where(conditions.join()));
19
+ });
20
+ }
21
+ async upsert(data, tx) {
22
+ return this.throwableAsync(async () => {
23
+ const db = tx ?? this.orm;
24
+ const [existing] = await db.select().from(this.schema.connect).where((0, drizzle_orm.and)((0, drizzle_orm.eq)(this.schema.connect.userId, data.userId), (0, drizzle_orm.eq)(this.schema.connect.provider, data.provider), (0, drizzle_orm.eq)(this.schema.connect.providerAccountId, data.providerAccountId))).limit(1);
25
+ if (existing) {
26
+ const [updated] = await db.update(this.schema.connect).set({
27
+ ...data,
28
+ updatedAt: /* @__PURE__ */ new Date(),
29
+ lastRefreshedAt: /* @__PURE__ */ new Date()
30
+ }).where((0, drizzle_orm.eq)(this.schema.connect.id, existing.id)).returning();
31
+ return (0, neverthrow.ok)(updated);
32
+ }
33
+ const [created] = await db.insert(this.schema.connect).values(data).returning();
34
+ if (!created) return this.error("UNPROCESSABLE_CONTENT");
35
+ return (0, neverthrow.ok)(created);
36
+ });
37
+ }
38
+ };
39
+ //#endregion
40
+ exports.ConnectRepository = ConnectRepository;
41
+
42
+ //# sourceMappingURL=connect.repository.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.repository.cjs","names":["connect","BaseTableRepository"],"sources":["../../../../src/modules/connect/connect.repository.ts"],"sourcesContent":["import type { InferInsertModel, InferSelectModel } from \"drizzle-orm\";\r\nimport { and, eq, inArray, isNull } from \"drizzle-orm\";\r\nimport type { LibSQLDatabase } from \"drizzle-orm/libsql\";\r\nimport { ok } from \"neverthrow\";\r\nimport { BaseTableRepository } from \"../base/base.repository\";\r\nimport * as connect from \"./connect.db\";\r\nimport type { ConnectListInputSchema } from \"./connect.dto\";\r\n\r\nconst schema = { ...connect };\r\ntype Schema = typeof schema;\r\ntype Orm = LibSQLDatabase<Schema>;\r\n\r\nexport type ConnectRow = InferSelectModel<Schema[\"connect\"]>;\r\nexport type ConnectInsert = InferInsertModel<Schema[\"connect\"]>;\r\n\r\nexport class ConnectRepository extends BaseTableRepository<Orm, Schema, Record<string, never>, Schema[\"connect\"]> {\r\n async list(data: ConnectListInputSchema & { userId: string }, tx?: Orm) {\r\n return this.throwableAsync(async () => {\r\n const db = tx ?? this.orm;\r\n const { ConditionBuilder } = this.helpers;\r\n const conditions = new ConditionBuilder();\r\n if (data.providers) conditions.push(inArray(this.schema.connect.provider, data.providers));\r\n if (data.inactive) conditions.push(isNull(this.schema.connect.revokedAt));\r\n conditions.push(eq(this.schema.connect.userId, data.userId));\r\n const rows = await db.select().from(this.schema.connect).where(conditions.join());\r\n return ok(rows);\r\n });\r\n }\r\n\r\n async upsert(data: ConnectInsert, tx?: Orm) {\r\n return this.throwableAsync(async () => {\r\n const db = tx ?? this.orm;\r\n const [existing] = await db\r\n .select()\r\n .from(this.schema.connect)\r\n .where(\r\n and(\r\n eq(this.schema.connect.userId, data.userId),\r\n eq(this.schema.connect.provider, data.provider),\r\n eq(this.schema.connect.providerAccountId, data.providerAccountId)\r\n )\r\n )\r\n .limit(1);\r\n\r\n if (existing) {\r\n // Update existing\r\n const [updated] = await db\r\n .update(this.schema.connect)\r\n .set({\r\n ...data,\r\n updatedAt: new Date(),\r\n lastRefreshedAt: new Date(),\r\n })\r\n .where(eq(this.schema.connect.id, existing.id))\r\n .returning();\r\n return ok(updated);\r\n }\r\n\r\n // Create new\r\n const [created] = await db.insert(this.schema.connect).values(data).returning();\r\n if (!created) return this.error(\"UNPROCESSABLE_CONTENT\");\r\n return ok(created);\r\n });\r\n }\r\n}\r\n"],"mappings":";;;;;;;CAQe,EAAE,GAAGA,uCAAAA,oBAAS;AAO7B,IAAa,oBAAb,cAAuCC,yCAAAA,oBAA2E;CAChH,MAAM,KAAK,MAAmD,IAAU;AACtE,SAAO,KAAK,eAAe,YAAY;GACrC,MAAM,KAAK,MAAM,KAAK;GACtB,MAAM,EAAE,qBAAqB,KAAK;GAClC,MAAM,aAAa,IAAI,kBAAkB;AACzC,OAAI,KAAK,UAAW,YAAW,MAAA,GAAA,YAAA,SAAa,KAAK,OAAO,QAAQ,UAAU,KAAK,UAAU,CAAC;AAC1F,OAAI,KAAK,SAAU,YAAW,MAAA,GAAA,YAAA,QAAY,KAAK,OAAO,QAAQ,UAAU,CAAC;AACzE,cAAW,MAAA,GAAA,YAAA,IAAQ,KAAK,OAAO,QAAQ,QAAQ,KAAK,OAAO,CAAC;AAE5D,WAAA,GAAA,WAAA,IADa,MAAM,GAAG,QAAQ,CAAC,KAAK,KAAK,OAAO,QAAQ,CAAC,MAAM,WAAW,MAAM,CAAC,CAClE;IACf;;CAGJ,MAAM,OAAO,MAAqB,IAAU;AAC1C,SAAO,KAAK,eAAe,YAAY;GACrC,MAAM,KAAK,MAAM,KAAK;GACtB,MAAM,CAAC,YAAY,MAAM,GACtB,QAAQ,CACR,KAAK,KAAK,OAAO,QAAQ,CACzB,OAAA,GAAA,YAAA,MAAA,GAAA,YAAA,IAEM,KAAK,OAAO,QAAQ,QAAQ,KAAK,OAAO,GAAA,GAAA,YAAA,IACxC,KAAK,OAAO,QAAQ,UAAU,KAAK,SAAS,GAAA,GAAA,YAAA,IAC5C,KAAK,OAAO,QAAQ,mBAAmB,KAAK,kBAAkB,CAClE,CACF,CACA,MAAM,EAAE;AAEX,OAAI,UAAU;IAEZ,MAAM,CAAC,WAAW,MAAM,GACrB,OAAO,KAAK,OAAO,QAAQ,CAC3B,IAAI;KACH,GAAG;KACH,2BAAW,IAAI,MAAM;KACrB,iCAAiB,IAAI,MAAM;KAC5B,CAAC,CACD,OAAA,GAAA,YAAA,IAAS,KAAK,OAAO,QAAQ,IAAI,SAAS,GAAG,CAAC,CAC9C,WAAW;AACd,YAAA,GAAA,WAAA,IAAU,QAAQ;;GAIpB,MAAM,CAAC,WAAW,MAAM,GAAG,OAAO,KAAK,OAAO,QAAQ,CAAC,OAAO,KAAK,CAAC,WAAW;AAC/E,OAAI,CAAC,QAAS,QAAO,KAAK,MAAM,wBAAwB;AACxD,WAAA,GAAA,WAAA,IAAU,QAAQ;IAClB"}