@intlayer/backend 7.1.4 → 7.1.6

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 (925) hide show
  1. package/dist/cjs/controllers/ai.controller.cjs +2 -2
  2. package/dist/cjs/controllers/ai.controller.cjs.map +1 -1
  3. package/dist/cjs/schemas/dictionary.schema.cjs +2 -2
  4. package/dist/cjs/schemas/dictionary.schema.cjs.map +1 -1
  5. package/dist/cjs/schemas/discussion.schema.cjs +2 -2
  6. package/dist/cjs/schemas/discussion.schema.cjs.map +1 -1
  7. package/dist/cjs/schemas/oAuth2.schema.cjs +2 -2
  8. package/dist/cjs/schemas/oAuth2.schema.cjs.map +1 -1
  9. package/dist/cjs/schemas/organization.schema.cjs +2 -2
  10. package/dist/cjs/schemas/organization.schema.cjs.map +1 -1
  11. package/dist/cjs/schemas/plans.schema.cjs +2 -2
  12. package/dist/cjs/schemas/plans.schema.cjs.map +1 -1
  13. package/dist/cjs/schemas/project.schema.cjs +2 -2
  14. package/dist/cjs/schemas/project.schema.cjs.map +1 -1
  15. package/dist/cjs/schemas/session.schema.cjs +2 -2
  16. package/dist/cjs/schemas/session.schema.cjs.map +1 -1
  17. package/dist/cjs/schemas/tag.schema.cjs +2 -2
  18. package/dist/cjs/schemas/tag.schema.cjs.map +1 -1
  19. package/dist/cjs/schemas/user.schema.cjs +2 -2
  20. package/dist/cjs/schemas/user.schema.cjs.map +1 -1
  21. package/dist/cjs/services/email.service.cjs +1 -1
  22. package/dist/cjs/services/email.service.cjs.map +1 -1
  23. package/dist/cjs/services/oAuth2.service.cjs +1 -1
  24. package/dist/cjs/services/oAuth2.service.cjs.map +1 -1
  25. package/dist/cjs/utils/filtersAndPagination/getDictionaryFiltersAndPagination.cjs +1 -1
  26. package/dist/cjs/utils/filtersAndPagination/getDictionaryFiltersAndPagination.cjs.map +1 -1
  27. package/dist/cjs/utils/filtersAndPagination/getDiscussionFiltersAndPagination.cjs +1 -1
  28. package/dist/cjs/utils/filtersAndPagination/getDiscussionFiltersAndPagination.cjs.map +1 -1
  29. package/dist/cjs/utils/filtersAndPagination/getFiltersAndPaginationFromBody.cjs +1 -1
  30. package/dist/cjs/utils/filtersAndPagination/getFiltersAndPaginationFromBody.cjs.map +1 -1
  31. package/dist/cjs/utils/filtersAndPagination/getOrganizationFiltersAndPagination.cjs +1 -1
  32. package/dist/cjs/utils/filtersAndPagination/getOrganizationFiltersAndPagination.cjs.map +1 -1
  33. package/dist/cjs/utils/filtersAndPagination/getProjectFiltersAndPagination.cjs +1 -1
  34. package/dist/cjs/utils/filtersAndPagination/getProjectFiltersAndPagination.cjs.map +1 -1
  35. package/dist/cjs/utils/filtersAndPagination/getTagFiltersAndPagination.cjs +1 -1
  36. package/dist/cjs/utils/filtersAndPagination/getTagFiltersAndPagination.cjs.map +1 -1
  37. package/dist/cjs/utils/filtersAndPagination/getUserFiltersAndPagination.cjs +1 -1
  38. package/dist/cjs/utils/filtersAndPagination/getUserFiltersAndPagination.cjs.map +1 -1
  39. package/dist/cjs/utils/mapper/user.cjs +1 -1
  40. package/dist/cjs/utils/mapper/user.cjs.map +1 -1
  41. package/dist/esm/controllers/ai.controller.mjs +2 -2
  42. package/dist/esm/controllers/ai.controller.mjs.map +1 -1
  43. package/dist/esm/schemas/dictionary.schema.mjs +2 -2
  44. package/dist/esm/schemas/dictionary.schema.mjs.map +1 -1
  45. package/dist/esm/schemas/discussion.schema.mjs +2 -2
  46. package/dist/esm/schemas/discussion.schema.mjs.map +1 -1
  47. package/dist/esm/schemas/oAuth2.schema.mjs +2 -2
  48. package/dist/esm/schemas/oAuth2.schema.mjs.map +1 -1
  49. package/dist/esm/schemas/organization.schema.mjs +2 -2
  50. package/dist/esm/schemas/organization.schema.mjs.map +1 -1
  51. package/dist/esm/schemas/plans.schema.mjs +2 -2
  52. package/dist/esm/schemas/plans.schema.mjs.map +1 -1
  53. package/dist/esm/schemas/project.schema.mjs +2 -2
  54. package/dist/esm/schemas/project.schema.mjs.map +1 -1
  55. package/dist/esm/schemas/session.schema.mjs +2 -2
  56. package/dist/esm/schemas/session.schema.mjs.map +1 -1
  57. package/dist/esm/schemas/tag.schema.mjs +2 -2
  58. package/dist/esm/schemas/tag.schema.mjs.map +1 -1
  59. package/dist/esm/schemas/user.schema.mjs +2 -2
  60. package/dist/esm/schemas/user.schema.mjs.map +1 -1
  61. package/dist/esm/services/email.service.mjs +1 -1
  62. package/dist/esm/services/email.service.mjs.map +1 -1
  63. package/dist/esm/services/oAuth2.service.mjs +1 -1
  64. package/dist/esm/services/oAuth2.service.mjs.map +1 -1
  65. package/dist/esm/utils/filtersAndPagination/getDictionaryFiltersAndPagination.mjs +1 -1
  66. package/dist/esm/utils/filtersAndPagination/getDictionaryFiltersAndPagination.mjs.map +1 -1
  67. package/dist/esm/utils/filtersAndPagination/getDiscussionFiltersAndPagination.mjs +1 -1
  68. package/dist/esm/utils/filtersAndPagination/getDiscussionFiltersAndPagination.mjs.map +1 -1
  69. package/dist/esm/utils/filtersAndPagination/getFiltersAndPaginationFromBody.mjs +1 -1
  70. package/dist/esm/utils/filtersAndPagination/getFiltersAndPaginationFromBody.mjs.map +1 -1
  71. package/dist/esm/utils/filtersAndPagination/getOrganizationFiltersAndPagination.mjs +1 -1
  72. package/dist/esm/utils/filtersAndPagination/getOrganizationFiltersAndPagination.mjs.map +1 -1
  73. package/dist/esm/utils/filtersAndPagination/getProjectFiltersAndPagination.mjs +1 -1
  74. package/dist/esm/utils/filtersAndPagination/getProjectFiltersAndPagination.mjs.map +1 -1
  75. package/dist/esm/utils/filtersAndPagination/getTagFiltersAndPagination.mjs +1 -1
  76. package/dist/esm/utils/filtersAndPagination/getTagFiltersAndPagination.mjs.map +1 -1
  77. package/dist/esm/utils/filtersAndPagination/getUserFiltersAndPagination.mjs +1 -1
  78. package/dist/esm/utils/filtersAndPagination/getUserFiltersAndPagination.mjs.map +1 -1
  79. package/dist/esm/utils/mapper/user.mjs +1 -1
  80. package/dist/esm/utils/mapper/user.mjs.map +1 -1
  81. package/dist/types/controllers/ai.controller.d.ts.map +1 -1
  82. package/dist/types/controllers/project.controller.d.ts.map +1 -1
  83. package/dist/types/controllers/projectAccessKey.controller.d.ts.map +1 -1
  84. package/dist/types/emails/InviteUserEmail.d.ts +4 -4
  85. package/dist/types/emails/MagicLinkEmail.d.ts +4 -4
  86. package/dist/types/emails/MagicLinkEmail.d.ts.map +1 -1
  87. package/dist/types/emails/OAuthTokenCreatedEmail.d.ts +4 -4
  88. package/dist/types/emails/PasswordChangeConfirmation.d.ts +4 -4
  89. package/dist/types/emails/ResetUserPassword.d.ts +4 -4
  90. package/dist/types/emails/SubscriptionPaymentCancellation.d.ts +4 -4
  91. package/dist/types/emails/SubscriptionPaymentError.d.ts +4 -4
  92. package/dist/types/emails/SubscriptionPaymentSuccess.d.ts +4 -4
  93. package/dist/types/emails/ValidateUserEmail.d.ts +4 -4
  94. package/dist/types/emails/ValidateUserEmail.d.ts.map +1 -1
  95. package/dist/types/models/dictionary.model.d.ts +4 -4
  96. package/dist/types/models/dictionary.model.d.ts.map +1 -1
  97. package/dist/types/models/discussion.model.d.ts +2 -2
  98. package/dist/types/models/discussion.model.d.ts.map +1 -1
  99. package/dist/types/models/oAuth2.model.d.ts +3 -3
  100. package/dist/types/models/oAuth2.model.d.ts.map +1 -1
  101. package/dist/types/schemas/dictionary.schema.d.ts +6 -6
  102. package/dist/types/schemas/discussion.schema.d.ts +6 -6
  103. package/dist/types/schemas/discussion.schema.d.ts.map +1 -1
  104. package/dist/types/schemas/oAuth2.schema.d.ts +5 -5
  105. package/dist/types/schemas/oAuth2.schema.d.ts.map +1 -1
  106. package/dist/types/schemas/organization.schema.d.ts +6 -6
  107. package/dist/types/schemas/plans.schema.d.ts +6 -6
  108. package/dist/types/schemas/project.schema.d.ts +6 -6
  109. package/dist/types/schemas/session.schema.d.ts +6 -6
  110. package/dist/types/schemas/tag.schema.d.ts +6 -6
  111. package/dist/types/schemas/user.schema.d.ts +6 -6
  112. package/dist/types/schemas/user.schema.d.ts.map +1 -1
  113. package/dist/types/utils/filtersAndPagination/getDictionaryFiltersAndPagination.d.ts +2 -2
  114. package/dist/types/utils/filtersAndPagination/getDiscussionFiltersAndPagination.d.ts +2 -2
  115. package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts +2 -2
  116. package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts +2 -2
  117. package/dist/types/utils/filtersAndPagination/getTagFiltersAndPagination.d.ts +2 -2
  118. package/package.json +7 -7
  119. package/dist/cjs/controllers/audit.controller.cjs +0 -186
  120. package/dist/cjs/controllers/audit.controller.cjs.map +0 -1
  121. package/dist/cjs/models/audit.model.cjs +0 -10
  122. package/dist/cjs/models/audit.model.cjs.map +0 -1
  123. package/dist/cjs/node_modules/@authenio/xml-encryption/lib/index.cjs +0 -16
  124. package/dist/cjs/node_modules/@authenio/xml-encryption/lib/index.cjs.map +0 -1
  125. package/dist/cjs/node_modules/@authenio/xml-encryption/lib/templates/encrypted-key.tpl.xml.cjs +0 -25
  126. package/dist/cjs/node_modules/@authenio/xml-encryption/lib/templates/encrypted-key.tpl.xml.cjs.map +0 -1
  127. package/dist/cjs/node_modules/@authenio/xml-encryption/lib/templates/keyinfo.tpl.xml.cjs +0 -31
  128. package/dist/cjs/node_modules/@authenio/xml-encryption/lib/templates/keyinfo.tpl.xml.cjs.map +0 -1
  129. package/dist/cjs/node_modules/@authenio/xml-encryption/lib/utils.cjs +0 -38
  130. package/dist/cjs/node_modules/@authenio/xml-encryption/lib/utils.cjs.map +0 -1
  131. package/dist/cjs/node_modules/@authenio/xml-encryption/lib/xmlenc.cjs +0 -231
  132. package/dist/cjs/node_modules/@authenio/xml-encryption/lib/xmlenc.cjs.map +0 -1
  133. package/dist/cjs/node_modules/@better-auth/sso/dist/index.cjs +0 -1210
  134. package/dist/cjs/node_modules/@better-auth/sso/dist/index.cjs.map +0 -1
  135. package/dist/cjs/node_modules/@better-fetch/fetch/dist/index.cjs +0 -362
  136. package/dist/cjs/node_modules/@better-fetch/fetch/dist/index.cjs.map +0 -1
  137. package/dist/cjs/node_modules/@xmldom/is-dom-node/dist/index.cjs +0 -89
  138. package/dist/cjs/node_modules/@xmldom/is-dom-node/dist/index.cjs.map +0 -1
  139. package/dist/cjs/node_modules/@xmldom/xmldom/lib/conventions.cjs +0 -110
  140. package/dist/cjs/node_modules/@xmldom/xmldom/lib/conventions.cjs.map +0 -1
  141. package/dist/cjs/node_modules/@xmldom/xmldom/lib/dom-parser.cjs +0 -248
  142. package/dist/cjs/node_modules/@xmldom/xmldom/lib/dom-parser.cjs.map +0 -1
  143. package/dist/cjs/node_modules/@xmldom/xmldom/lib/dom.cjs +0 -1309
  144. package/dist/cjs/node_modules/@xmldom/xmldom/lib/dom.cjs.map +0 -1
  145. package/dist/cjs/node_modules/@xmldom/xmldom/lib/entities.cjs +0 -2176
  146. package/dist/cjs/node_modules/@xmldom/xmldom/lib/entities.cjs.map +0 -1
  147. package/dist/cjs/node_modules/@xmldom/xmldom/lib/index.cjs +0 -20
  148. package/dist/cjs/node_modules/@xmldom/xmldom/lib/index.cjs.map +0 -1
  149. package/dist/cjs/node_modules/@xmldom/xmldom/lib/sax.cjs +0 -499
  150. package/dist/cjs/node_modules/@xmldom/xmldom/lib/sax.cjs.map +0 -1
  151. package/dist/cjs/node_modules/asn1/lib/ber/errors.cjs +0 -20
  152. package/dist/cjs/node_modules/asn1/lib/ber/errors.cjs.map +0 -1
  153. package/dist/cjs/node_modules/asn1/lib/ber/index.cjs +0 -28
  154. package/dist/cjs/node_modules/asn1/lib/ber/index.cjs.map +0 -1
  155. package/dist/cjs/node_modules/asn1/lib/ber/reader.cjs +0 -167
  156. package/dist/cjs/node_modules/asn1/lib/ber/reader.cjs.map +0 -1
  157. package/dist/cjs/node_modules/asn1/lib/ber/types.cjs +0 -47
  158. package/dist/cjs/node_modules/asn1/lib/ber/types.cjs.map +0 -1
  159. package/dist/cjs/node_modules/asn1/lib/ber/writer.cjs +0 -223
  160. package/dist/cjs/node_modules/asn1/lib/ber/writer.cjs.map +0 -1
  161. package/dist/cjs/node_modules/asn1/lib/index.cjs +0 -21
  162. package/dist/cjs/node_modules/asn1/lib/index.cjs.map +0 -1
  163. package/dist/cjs/node_modules/camelcase/index.cjs +0 -78
  164. package/dist/cjs/node_modules/camelcase/index.cjs.map +0 -1
  165. package/dist/cjs/node_modules/escape-html/index.cjs +0 -71
  166. package/dist/cjs/node_modules/escape-html/index.cjs.map +0 -1
  167. package/dist/cjs/node_modules/fast-xml-parser/src/fxp.cjs +0 -9
  168. package/dist/cjs/node_modules/fast-xml-parser/src/fxp.cjs.map +0 -1
  169. package/dist/cjs/node_modules/fast-xml-parser/src/util.cjs +0 -29
  170. package/dist/cjs/node_modules/fast-xml-parser/src/util.cjs.map +0 -1
  171. package/dist/cjs/node_modules/fast-xml-parser/src/validator.cjs +0 -244
  172. package/dist/cjs/node_modules/fast-xml-parser/src/validator.cjs.map +0 -1
  173. package/dist/cjs/node_modules/jose/dist/webapi/lib/base64.cjs +0 -14
  174. package/dist/cjs/node_modules/jose/dist/webapi/lib/base64.cjs.map +0 -1
  175. package/dist/cjs/node_modules/jose/dist/webapi/lib/buffer_utils.cjs +0 -10
  176. package/dist/cjs/node_modules/jose/dist/webapi/lib/buffer_utils.cjs.map +0 -1
  177. package/dist/cjs/node_modules/jose/dist/webapi/lib/is_object.cjs +0 -17
  178. package/dist/cjs/node_modules/jose/dist/webapi/lib/is_object.cjs.map +0 -1
  179. package/dist/cjs/node_modules/jose/dist/webapi/util/base64url.cjs +0 -20
  180. package/dist/cjs/node_modules/jose/dist/webapi/util/base64url.cjs.map +0 -1
  181. package/dist/cjs/node_modules/jose/dist/webapi/util/decode_jwt.cjs +0 -32
  182. package/dist/cjs/node_modules/jose/dist/webapi/util/decode_jwt.cjs.map +0 -1
  183. package/dist/cjs/node_modules/jose/dist/webapi/util/errors.cjs +0 -28
  184. package/dist/cjs/node_modules/jose/dist/webapi/util/errors.cjs.map +0 -1
  185. package/dist/cjs/node_modules/node-forge/lib/aes.cjs +0 -604
  186. package/dist/cjs/node_modules/node-forge/lib/aes.cjs.map +0 -1
  187. package/dist/cjs/node_modules/node-forge/lib/aesCipherSuites.cjs +0 -202
  188. package/dist/cjs/node_modules/node-forge/lib/aesCipherSuites.cjs.map +0 -1
  189. package/dist/cjs/node_modules/node-forge/lib/asn1-validator.cjs +0 -83
  190. package/dist/cjs/node_modules/node-forge/lib/asn1-validator.cjs.map +0 -1
  191. package/dist/cjs/node_modules/node-forge/lib/asn1.cjs +0 -945
  192. package/dist/cjs/node_modules/node-forge/lib/asn1.cjs.map +0 -1
  193. package/dist/cjs/node_modules/node-forge/lib/baseN.cjs +0 -144
  194. package/dist/cjs/node_modules/node-forge/lib/baseN.cjs.map +0 -1
  195. package/dist/cjs/node_modules/node-forge/lib/cipher.cjs +0 -193
  196. package/dist/cjs/node_modules/node-forge/lib/cipher.cjs.map +0 -1
  197. package/dist/cjs/node_modules/node-forge/lib/cipherModes.cjs +0 -604
  198. package/dist/cjs/node_modules/node-forge/lib/cipherModes.cjs.map +0 -1
  199. package/dist/cjs/node_modules/node-forge/lib/des.cjs +0 -1194
  200. package/dist/cjs/node_modules/node-forge/lib/des.cjs.map +0 -1
  201. package/dist/cjs/node_modules/node-forge/lib/ed25519.cjs +0 -1027
  202. package/dist/cjs/node_modules/node-forge/lib/ed25519.cjs.map +0 -1
  203. package/dist/cjs/node_modules/node-forge/lib/forge.cjs +0 -22
  204. package/dist/cjs/node_modules/node-forge/lib/forge.cjs.map +0 -1
  205. package/dist/cjs/node_modules/node-forge/lib/hmac.cjs +0 -114
  206. package/dist/cjs/node_modules/node-forge/lib/hmac.cjs.map +0 -1
  207. package/dist/cjs/node_modules/node-forge/lib/index.cjs +0 -73
  208. package/dist/cjs/node_modules/node-forge/lib/index.cjs.map +0 -1
  209. package/dist/cjs/node_modules/node-forge/lib/jsbn.cjs +0 -1263
  210. package/dist/cjs/node_modules/node-forge/lib/jsbn.cjs.map +0 -1
  211. package/dist/cjs/node_modules/node-forge/lib/kem.cjs +0 -153
  212. package/dist/cjs/node_modules/node-forge/lib/kem.cjs.map +0 -1
  213. package/dist/cjs/node_modules/node-forge/lib/log.cjs +0 -248
  214. package/dist/cjs/node_modules/node-forge/lib/log.cjs.map +0 -1
  215. package/dist/cjs/node_modules/node-forge/lib/md.all.cjs +0 -31
  216. package/dist/cjs/node_modules/node-forge/lib/md.all.cjs.map +0 -1
  217. package/dist/cjs/node_modules/node-forge/lib/md.cjs +0 -25
  218. package/dist/cjs/node_modules/node-forge/lib/md.cjs.map +0 -1
  219. package/dist/cjs/node_modules/node-forge/lib/md5.cjs +0 -331
  220. package/dist/cjs/node_modules/node-forge/lib/md5.cjs.map +0 -1
  221. package/dist/cjs/node_modules/node-forge/lib/mgf.cjs +0 -27
  222. package/dist/cjs/node_modules/node-forge/lib/mgf.cjs.map +0 -1
  223. package/dist/cjs/node_modules/node-forge/lib/mgf1.cjs +0 -51
  224. package/dist/cjs/node_modules/node-forge/lib/mgf1.cjs.map +0 -1
  225. package/dist/cjs/node_modules/node-forge/lib/oids.cjs +0 -160
  226. package/dist/cjs/node_modules/node-forge/lib/oids.cjs.map +0 -1
  227. package/dist/cjs/node_modules/node-forge/lib/pbe.cjs +0 -822
  228. package/dist/cjs/node_modules/node-forge/lib/pbe.cjs.map +0 -1
  229. package/dist/cjs/node_modules/node-forge/lib/pbkdf2.cjs +0 -132
  230. package/dist/cjs/node_modules/node-forge/lib/pbkdf2.cjs.map +0 -1
  231. package/dist/cjs/node_modules/node-forge/lib/pem.cjs +0 -182
  232. package/dist/cjs/node_modules/node-forge/lib/pem.cjs.map +0 -1
  233. package/dist/cjs/node_modules/node-forge/lib/pkcs1.cjs +0 -207
  234. package/dist/cjs/node_modules/node-forge/lib/pkcs1.cjs.map +0 -1
  235. package/dist/cjs/node_modules/node-forge/lib/pkcs12.cjs +0 -730
  236. package/dist/cjs/node_modules/node-forge/lib/pkcs12.cjs.map +0 -1
  237. package/dist/cjs/node_modules/node-forge/lib/pkcs7.cjs +0 -648
  238. package/dist/cjs/node_modules/node-forge/lib/pkcs7.cjs.map +0 -1
  239. package/dist/cjs/node_modules/node-forge/lib/pkcs7asn1.cjs +0 -412
  240. package/dist/cjs/node_modules/node-forge/lib/pkcs7asn1.cjs.map +0 -1
  241. package/dist/cjs/node_modules/node-forge/lib/pki.cjs +0 -108
  242. package/dist/cjs/node_modules/node-forge/lib/pki.cjs.map +0 -1
  243. package/dist/cjs/node_modules/node-forge/lib/prime.cjs +0 -200
  244. package/dist/cjs/node_modules/node-forge/lib/prime.cjs.map +0 -1
  245. package/dist/cjs/node_modules/node-forge/lib/prng.cjs +0 -297
  246. package/dist/cjs/node_modules/node-forge/lib/prng.cjs.map +0 -1
  247. package/dist/cjs/node_modules/node-forge/lib/pss.cjs +0 -148
  248. package/dist/cjs/node_modules/node-forge/lib/pss.cjs.map +0 -1
  249. package/dist/cjs/node_modules/node-forge/lib/random.cjs +0 -148
  250. package/dist/cjs/node_modules/node-forge/lib/random.cjs.map +0 -1
  251. package/dist/cjs/node_modules/node-forge/lib/rc2.cjs +0 -545
  252. package/dist/cjs/node_modules/node-forge/lib/rc2.cjs.map +0 -1
  253. package/dist/cjs/node_modules/node-forge/lib/rsa.cjs +0 -1306
  254. package/dist/cjs/node_modules/node-forge/lib/rsa.cjs.map +0 -1
  255. package/dist/cjs/node_modules/node-forge/lib/sha1.cjs +0 -237
  256. package/dist/cjs/node_modules/node-forge/lib/sha1.cjs.map +0 -1
  257. package/dist/cjs/node_modules/node-forge/lib/sha256.cjs +0 -274
  258. package/dist/cjs/node_modules/node-forge/lib/sha256.cjs.map +0 -1
  259. package/dist/cjs/node_modules/node-forge/lib/sha512.cjs +0 -420
  260. package/dist/cjs/node_modules/node-forge/lib/sha512.cjs.map +0 -1
  261. package/dist/cjs/node_modules/node-forge/lib/ssh.cjs +0 -201
  262. package/dist/cjs/node_modules/node-forge/lib/ssh.cjs.map +0 -1
  263. package/dist/cjs/node_modules/node-forge/lib/tls.cjs +0 -3662
  264. package/dist/cjs/node_modules/node-forge/lib/tls.cjs.map +0 -1
  265. package/dist/cjs/node_modules/node-forge/lib/util.cjs +0 -2124
  266. package/dist/cjs/node_modules/node-forge/lib/util.cjs.map +0 -1
  267. package/dist/cjs/node_modules/node-forge/lib/x509.cjs +0 -2171
  268. package/dist/cjs/node_modules/node-forge/lib/x509.cjs.map +0 -1
  269. package/dist/cjs/node_modules/node-rsa/src/NodeRSA.cjs +0 -341
  270. package/dist/cjs/node_modules/node-rsa/src/NodeRSA.cjs.map +0 -1
  271. package/dist/cjs/node_modules/node-rsa/src/encryptEngines/encryptEngines.cjs +0 -26
  272. package/dist/cjs/node_modules/node-rsa/src/encryptEngines/encryptEngines.cjs.map +0 -1
  273. package/dist/cjs/node_modules/node-rsa/src/encryptEngines/io.cjs +0 -65
  274. package/dist/cjs/node_modules/node-rsa/src/encryptEngines/io.cjs.map +0 -1
  275. package/dist/cjs/node_modules/node-rsa/src/encryptEngines/js.cjs +0 -44
  276. package/dist/cjs/node_modules/node-rsa/src/encryptEngines/js.cjs.map +0 -1
  277. package/dist/cjs/node_modules/node-rsa/src/encryptEngines/node12.cjs +0 -49
  278. package/dist/cjs/node_modules/node-rsa/src/encryptEngines/node12.cjs.map +0 -1
  279. package/dist/cjs/node_modules/node-rsa/src/formats/components.cjs +0 -55
  280. package/dist/cjs/node_modules/node-rsa/src/formats/components.cjs.map +0 -1
  281. package/dist/cjs/node_modules/node-rsa/src/formats/formats.cjs +0 -86
  282. package/dist/cjs/node_modules/node-rsa/src/formats/formats.cjs.map +0 -1
  283. package/dist/cjs/node_modules/node-rsa/src/formats/openssh.cjs +0 -177
  284. package/dist/cjs/node_modules/node-rsa/src/formats/openssh.cjs.map +0 -1
  285. package/dist/cjs/node_modules/node-rsa/src/formats/pkcs1.cjs +0 -104
  286. package/dist/cjs/node_modules/node-rsa/src/formats/pkcs1.cjs.map +0 -1
  287. package/dist/cjs/node_modules/node-rsa/src/formats/pkcs8.cjs +0 -131
  288. package/dist/cjs/node_modules/node-rsa/src/formats/pkcs8.cjs.map +0 -1
  289. package/dist/cjs/node_modules/node-rsa/src/libs/jsbn.cjs +0 -1347
  290. package/dist/cjs/node_modules/node-rsa/src/libs/jsbn.cjs.map +0 -1
  291. package/dist/cjs/node_modules/node-rsa/src/libs/rsa.cjs +0 -231
  292. package/dist/cjs/node_modules/node-rsa/src/libs/rsa.cjs.map +0 -1
  293. package/dist/cjs/node_modules/node-rsa/src/schemes/oaep.cjs +0 -123
  294. package/dist/cjs/node_modules/node-rsa/src/schemes/oaep.cjs.map +0 -1
  295. package/dist/cjs/node_modules/node-rsa/src/schemes/pkcs1.cjs +0 -175
  296. package/dist/cjs/node_modules/node-rsa/src/schemes/pkcs1.cjs.map +0 -1
  297. package/dist/cjs/node_modules/node-rsa/src/schemes/pss.cjs +0 -123
  298. package/dist/cjs/node_modules/node-rsa/src/schemes/pss.cjs.map +0 -1
  299. package/dist/cjs/node_modules/node-rsa/src/schemes/schemes.cjs +0 -28
  300. package/dist/cjs/node_modules/node-rsa/src/schemes/schemes.cjs.map +0 -1
  301. package/dist/cjs/node_modules/node-rsa/src/utils.cjs +0 -84
  302. package/dist/cjs/node_modules/node-rsa/src/utils.cjs.map +0 -1
  303. package/dist/cjs/node_modules/pako/index.cjs +0 -25
  304. package/dist/cjs/node_modules/pako/index.cjs.map +0 -1
  305. package/dist/cjs/node_modules/pako/lib/deflate.cjs +0 -311
  306. package/dist/cjs/node_modules/pako/lib/deflate.cjs.map +0 -1
  307. package/dist/cjs/node_modules/pako/lib/inflate.cjs +0 -317
  308. package/dist/cjs/node_modules/pako/lib/inflate.cjs.map +0 -1
  309. package/dist/cjs/node_modules/pako/lib/utils/common.cjs +0 -77
  310. package/dist/cjs/node_modules/pako/lib/utils/common.cjs.map +0 -1
  311. package/dist/cjs/node_modules/pako/lib/utils/strings.cjs +0 -131
  312. package/dist/cjs/node_modules/pako/lib/utils/strings.cjs.map +0 -1
  313. package/dist/cjs/node_modules/pako/lib/zlib/adler32.cjs +0 -29
  314. package/dist/cjs/node_modules/pako/lib/zlib/adler32.cjs.map +0 -1
  315. package/dist/cjs/node_modules/pako/lib/zlib/constants.cjs +0 -43
  316. package/dist/cjs/node_modules/pako/lib/zlib/constants.cjs.map +0 -1
  317. package/dist/cjs/node_modules/pako/lib/zlib/crc32.cjs +0 -31
  318. package/dist/cjs/node_modules/pako/lib/zlib/crc32.cjs.map +0 -1
  319. package/dist/cjs/node_modules/pako/lib/zlib/deflate.cjs +0 -889
  320. package/dist/cjs/node_modules/pako/lib/zlib/deflate.cjs.map +0 -1
  321. package/dist/cjs/node_modules/pako/lib/zlib/gzheader.cjs +0 -27
  322. package/dist/cjs/node_modules/pako/lib/zlib/gzheader.cjs.map +0 -1
  323. package/dist/cjs/node_modules/pako/lib/zlib/inffast.cjs +0 -227
  324. package/dist/cjs/node_modules/pako/lib/zlib/inffast.cjs.map +0 -1
  325. package/dist/cjs/node_modules/pako/lib/zlib/inflate.cjs +0 -1038
  326. package/dist/cjs/node_modules/pako/lib/zlib/inflate.cjs.map +0 -1
  327. package/dist/cjs/node_modules/pako/lib/zlib/inftrees.cjs +0 -278
  328. package/dist/cjs/node_modules/pako/lib/zlib/inftrees.cjs.map +0 -1
  329. package/dist/cjs/node_modules/pako/lib/zlib/messages.cjs +0 -25
  330. package/dist/cjs/node_modules/pako/lib/zlib/messages.cjs.map +0 -1
  331. package/dist/cjs/node_modules/pako/lib/zlib/trees.cjs +0 -626
  332. package/dist/cjs/node_modules/pako/lib/zlib/trees.cjs.map +0 -1
  333. package/dist/cjs/node_modules/pako/lib/zlib/zstream.cjs +0 -29
  334. package/dist/cjs/node_modules/pako/lib/zlib/zstream.cjs.map +0 -1
  335. package/dist/cjs/node_modules/safer-buffer/safer.cjs +0 -52
  336. package/dist/cjs/node_modules/safer-buffer/safer.cjs.map +0 -1
  337. package/dist/cjs/node_modules/samlify/build/index.cjs +0 -120
  338. package/dist/cjs/node_modules/samlify/build/index.cjs.map +0 -1
  339. package/dist/cjs/node_modules/samlify/build/src/api.cjs +0 -36
  340. package/dist/cjs/node_modules/samlify/build/src/api.cjs.map +0 -1
  341. package/dist/cjs/node_modules/samlify/build/src/binding-post.cjs +0 -507
  342. package/dist/cjs/node_modules/samlify/build/src/binding-post.cjs.map +0 -1
  343. package/dist/cjs/node_modules/samlify/build/src/binding-redirect.cjs +0 -342
  344. package/dist/cjs/node_modules/samlify/build/src/binding-redirect.cjs.map +0 -1
  345. package/dist/cjs/node_modules/samlify/build/src/binding-simplesign.cjs +0 -361
  346. package/dist/cjs/node_modules/samlify/build/src/binding-simplesign.cjs.map +0 -1
  347. package/dist/cjs/node_modules/samlify/build/src/entity-idp.cjs +0 -282
  348. package/dist/cjs/node_modules/samlify/build/src/entity-idp.cjs.map +0 -1
  349. package/dist/cjs/node_modules/samlify/build/src/entity-sp.cjs +0 -145
  350. package/dist/cjs/node_modules/samlify/build/src/entity-sp.cjs.map +0 -1
  351. package/dist/cjs/node_modules/samlify/build/src/entity.cjs +0 -256
  352. package/dist/cjs/node_modules/samlify/build/src/entity.cjs.map +0 -1
  353. package/dist/cjs/node_modules/samlify/build/src/extractor.cjs +0 -355
  354. package/dist/cjs/node_modules/samlify/build/src/extractor.cjs.map +0 -1
  355. package/dist/cjs/node_modules/samlify/build/src/flow.cjs +0 -392
  356. package/dist/cjs/node_modules/samlify/build/src/flow.cjs.map +0 -1
  357. package/dist/cjs/node_modules/samlify/build/src/libsaml.cjs +0 -547
  358. package/dist/cjs/node_modules/samlify/build/src/libsaml.cjs.map +0 -1
  359. package/dist/cjs/node_modules/samlify/build/src/metadata-idp.cjs +0 -174
  360. package/dist/cjs/node_modules/samlify/build/src/metadata-idp.cjs.map +0 -1
  361. package/dist/cjs/node_modules/samlify/build/src/metadata-sp.cjs +0 -217
  362. package/dist/cjs/node_modules/samlify/build/src/metadata-sp.cjs.map +0 -1
  363. package/dist/cjs/node_modules/samlify/build/src/metadata.cjs +0 -203
  364. package/dist/cjs/node_modules/samlify/build/src/metadata.cjs.map +0 -1
  365. package/dist/cjs/node_modules/samlify/build/src/urn.cjs +0 -228
  366. package/dist/cjs/node_modules/samlify/build/src/urn.cjs.map +0 -1
  367. package/dist/cjs/node_modules/samlify/build/src/utility.cjs +0 -280
  368. package/dist/cjs/node_modules/samlify/build/src/utility.cjs.map +0 -1
  369. package/dist/cjs/node_modules/samlify/build/src/validator.cjs +0 -56
  370. package/dist/cjs/node_modules/samlify/build/src/validator.cjs.map +0 -1
  371. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/index.cjs +0 -50
  372. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/index.cjs.map +0 -1
  373. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/md5.cjs +0 -25
  374. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/md5.cjs.map +0 -1
  375. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/nil.cjs +0 -18
  376. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/nil.cjs.map +0 -1
  377. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/parse.cjs +0 -42
  378. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/parse.cjs.map +0 -1
  379. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/regex.cjs +0 -18
  380. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/regex.cjs.map +0 -1
  381. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/rng.cjs +0 -28
  382. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/rng.cjs.map +0 -1
  383. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/sha1.cjs +0 -25
  384. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/sha1.cjs.map +0 -1
  385. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/stringify.cjs +0 -27
  386. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/stringify.cjs.map +0 -1
  387. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v1.cjs +0 -69
  388. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v1.cjs.map +0 -1
  389. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v3.cjs +0 -23
  390. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v3.cjs.map +0 -1
  391. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v35.cjs +0 -54
  392. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v35.cjs.map +0 -1
  393. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v4.cjs +0 -34
  394. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v4.cjs.map +0 -1
  395. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v5.cjs +0 -23
  396. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v5.cjs.map +0 -1
  397. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/validate.cjs +0 -23
  398. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/validate.cjs.map +0 -1
  399. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/version.cjs +0 -24
  400. package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/version.cjs.map +0 -1
  401. package/dist/cjs/node_modules/xml/lib/escapeForXML.cjs +0 -27
  402. package/dist/cjs/node_modules/xml/lib/escapeForXML.cjs.map +0 -1
  403. package/dist/cjs/node_modules/xml/lib/xml.cjs +0 -186
  404. package/dist/cjs/node_modules/xml/lib/xml.cjs.map +0 -1
  405. package/dist/cjs/node_modules/xml-crypto/lib/c14n-canonicalization.cjs +0 -202
  406. package/dist/cjs/node_modules/xml-crypto/lib/c14n-canonicalization.cjs.map +0 -1
  407. package/dist/cjs/node_modules/xml-crypto/lib/enveloped-signature.cjs +0 -52
  408. package/dist/cjs/node_modules/xml-crypto/lib/enveloped-signature.cjs.map +0 -1
  409. package/dist/cjs/node_modules/xml-crypto/lib/exclusive-canonicalization.cjs +0 -223
  410. package/dist/cjs/node_modules/xml-crypto/lib/exclusive-canonicalization.cjs.map +0 -1
  411. package/dist/cjs/node_modules/xml-crypto/lib/hash-algorithms.cjs +0 -56
  412. package/dist/cjs/node_modules/xml-crypto/lib/hash-algorithms.cjs.map +0 -1
  413. package/dist/cjs/node_modules/xml-crypto/lib/index.cjs +0 -73
  414. package/dist/cjs/node_modules/xml-crypto/lib/index.cjs.map +0 -1
  415. package/dist/cjs/node_modules/xml-crypto/lib/signature-algorithms.cjs +0 -91
  416. package/dist/cjs/node_modules/xml-crypto/lib/signature-algorithms.cjs.map +0 -1
  417. package/dist/cjs/node_modules/xml-crypto/lib/signed-xml.cjs +0 -695
  418. package/dist/cjs/node_modules/xml-crypto/lib/signed-xml.cjs.map +0 -1
  419. package/dist/cjs/node_modules/xml-crypto/lib/types.cjs +0 -58
  420. package/dist/cjs/node_modules/xml-crypto/lib/types.cjs.map +0 -1
  421. package/dist/cjs/node_modules/xml-crypto/lib/utils.cjs +0 -213
  422. package/dist/cjs/node_modules/xml-crypto/lib/utils.cjs.map +0 -1
  423. package/dist/cjs/node_modules/xml-crypto/node_modules/xpath/xpath.cjs +0 -3445
  424. package/dist/cjs/node_modules/xml-crypto/node_modules/xpath/xpath.cjs.map +0 -1
  425. package/dist/cjs/node_modules/xml-escape/index.cjs +0 -30
  426. package/dist/cjs/node_modules/xml-escape/index.cjs.map +0 -1
  427. package/dist/cjs/node_modules/xpath/xpath.cjs +0 -3410
  428. package/dist/cjs/node_modules/xpath/xpath.cjs.map +0 -1
  429. package/dist/cjs/node_modules/zod/v4/classic/errors.cjs +0 -31
  430. package/dist/cjs/node_modules/zod/v4/classic/errors.cjs.map +0 -1
  431. package/dist/cjs/node_modules/zod/v4/classic/iso.cjs +0 -42
  432. package/dist/cjs/node_modules/zod/v4/classic/iso.cjs.map +0 -1
  433. package/dist/cjs/node_modules/zod/v4/classic/parse.cjs +0 -32
  434. package/dist/cjs/node_modules/zod/v4/classic/parse.cjs.map +0 -1
  435. package/dist/cjs/node_modules/zod/v4/classic/schemas.cjs +0 -527
  436. package/dist/cjs/node_modules/zod/v4/classic/schemas.cjs.map +0 -1
  437. package/dist/cjs/node_modules/zod/v4/core/api.cjs +0 -443
  438. package/dist/cjs/node_modules/zod/v4/core/api.cjs.map +0 -1
  439. package/dist/cjs/node_modules/zod/v4/core/checks.cjs +0 -238
  440. package/dist/cjs/node_modules/zod/v4/core/checks.cjs.map +0 -1
  441. package/dist/cjs/node_modules/zod/v4/core/core.cjs +0 -63
  442. package/dist/cjs/node_modules/zod/v4/core/core.cjs.map +0 -1
  443. package/dist/cjs/node_modules/zod/v4/core/doc.cjs +0 -36
  444. package/dist/cjs/node_modules/zod/v4/core/doc.cjs.map +0 -1
  445. package/dist/cjs/node_modules/zod/v4/core/errors.cjs +0 -67
  446. package/dist/cjs/node_modules/zod/v4/core/errors.cjs.map +0 -1
  447. package/dist/cjs/node_modules/zod/v4/core/parse.cjs +0 -124
  448. package/dist/cjs/node_modules/zod/v4/core/parse.cjs.map +0 -1
  449. package/dist/cjs/node_modules/zod/v4/core/regexes.cjs +0 -87
  450. package/dist/cjs/node_modules/zod/v4/core/regexes.cjs.map +0 -1
  451. package/dist/cjs/node_modules/zod/v4/core/registries.cjs +0 -55
  452. package/dist/cjs/node_modules/zod/v4/core/registries.cjs.map +0 -1
  453. package/dist/cjs/node_modules/zod/v4/core/schemas.cjs +0 -1115
  454. package/dist/cjs/node_modules/zod/v4/core/schemas.cjs.map +0 -1
  455. package/dist/cjs/node_modules/zod/v4/core/util.cjs +0 -333
  456. package/dist/cjs/node_modules/zod/v4/core/util.cjs.map +0 -1
  457. package/dist/cjs/node_modules/zod/v4/core/versions.cjs +0 -12
  458. package/dist/cjs/node_modules/zod/v4/core/versions.cjs.map +0 -1
  459. package/dist/esm/_virtual/rolldown_runtime.mjs +0 -43
  460. package/dist/esm/controllers/audit.controller.mjs +0 -182
  461. package/dist/esm/controllers/audit.controller.mjs.map +0 -1
  462. package/dist/esm/models/audit.model.mjs +0 -9
  463. package/dist/esm/models/audit.model.mjs.map +0 -1
  464. package/dist/esm/node_modules/@authenio/xml-encryption/lib/index.mjs +0 -13
  465. package/dist/esm/node_modules/@authenio/xml-encryption/lib/index.mjs.map +0 -1
  466. package/dist/esm/node_modules/@authenio/xml-encryption/lib/templates/encrypted-key.tpl.xml.mjs +0 -22
  467. package/dist/esm/node_modules/@authenio/xml-encryption/lib/templates/encrypted-key.tpl.xml.mjs.map +0 -1
  468. package/dist/esm/node_modules/@authenio/xml-encryption/lib/templates/keyinfo.tpl.xml.mjs +0 -28
  469. package/dist/esm/node_modules/@authenio/xml-encryption/lib/templates/keyinfo.tpl.xml.mjs.map +0 -1
  470. package/dist/esm/node_modules/@authenio/xml-encryption/lib/utils.mjs +0 -35
  471. package/dist/esm/node_modules/@authenio/xml-encryption/lib/utils.mjs.map +0 -1
  472. package/dist/esm/node_modules/@authenio/xml-encryption/lib/xmlenc.mjs +0 -228
  473. package/dist/esm/node_modules/@authenio/xml-encryption/lib/xmlenc.mjs.map +0 -1
  474. package/dist/esm/node_modules/@better-auth/sso/dist/index.mjs +0 -1210
  475. package/dist/esm/node_modules/@better-auth/sso/dist/index.mjs.map +0 -1
  476. package/dist/esm/node_modules/@better-fetch/fetch/dist/index.mjs +0 -359
  477. package/dist/esm/node_modules/@better-fetch/fetch/dist/index.mjs.map +0 -1
  478. package/dist/esm/node_modules/@xmldom/is-dom-node/dist/index.mjs +0 -86
  479. package/dist/esm/node_modules/@xmldom/is-dom-node/dist/index.mjs.map +0 -1
  480. package/dist/esm/node_modules/@xmldom/xmldom/lib/conventions.mjs +0 -107
  481. package/dist/esm/node_modules/@xmldom/xmldom/lib/conventions.mjs.map +0 -1
  482. package/dist/esm/node_modules/@xmldom/xmldom/lib/dom-parser.mjs +0 -245
  483. package/dist/esm/node_modules/@xmldom/xmldom/lib/dom-parser.mjs.map +0 -1
  484. package/dist/esm/node_modules/@xmldom/xmldom/lib/dom.mjs +0 -1306
  485. package/dist/esm/node_modules/@xmldom/xmldom/lib/dom.mjs.map +0 -1
  486. package/dist/esm/node_modules/@xmldom/xmldom/lib/entities.mjs +0 -2173
  487. package/dist/esm/node_modules/@xmldom/xmldom/lib/entities.mjs.map +0 -1
  488. package/dist/esm/node_modules/@xmldom/xmldom/lib/index.mjs +0 -17
  489. package/dist/esm/node_modules/@xmldom/xmldom/lib/index.mjs.map +0 -1
  490. package/dist/esm/node_modules/@xmldom/xmldom/lib/sax.mjs +0 -496
  491. package/dist/esm/node_modules/@xmldom/xmldom/lib/sax.mjs.map +0 -1
  492. package/dist/esm/node_modules/asn1/lib/ber/errors.mjs +0 -17
  493. package/dist/esm/node_modules/asn1/lib/ber/errors.mjs.map +0 -1
  494. package/dist/esm/node_modules/asn1/lib/ber/index.mjs +0 -25
  495. package/dist/esm/node_modules/asn1/lib/ber/index.mjs.map +0 -1
  496. package/dist/esm/node_modules/asn1/lib/ber/reader.mjs +0 -164
  497. package/dist/esm/node_modules/asn1/lib/ber/reader.mjs.map +0 -1
  498. package/dist/esm/node_modules/asn1/lib/ber/types.mjs +0 -44
  499. package/dist/esm/node_modules/asn1/lib/ber/types.mjs.map +0 -1
  500. package/dist/esm/node_modules/asn1/lib/ber/writer.mjs +0 -220
  501. package/dist/esm/node_modules/asn1/lib/ber/writer.mjs.map +0 -1
  502. package/dist/esm/node_modules/asn1/lib/index.mjs +0 -18
  503. package/dist/esm/node_modules/asn1/lib/index.mjs.map +0 -1
  504. package/dist/esm/node_modules/available-typed-arrays/index.mjs +0 -20
  505. package/dist/esm/node_modules/available-typed-arrays/index.mjs.map +0 -1
  506. package/dist/esm/node_modules/base64-js/index.mjs +0 -95
  507. package/dist/esm/node_modules/base64-js/index.mjs.map +0 -1
  508. package/dist/esm/node_modules/buffer/index.mjs +0 -1114
  509. package/dist/esm/node_modules/buffer/index.mjs.map +0 -1
  510. package/dist/esm/node_modules/call-bind/index.mjs +0 -26
  511. package/dist/esm/node_modules/call-bind/index.mjs.map +0 -1
  512. package/dist/esm/node_modules/call-bind-apply-helpers/actualApply.mjs +0 -21
  513. package/dist/esm/node_modules/call-bind-apply-helpers/actualApply.mjs.map +0 -1
  514. package/dist/esm/node_modules/call-bind-apply-helpers/applyBind.mjs +0 -21
  515. package/dist/esm/node_modules/call-bind-apply-helpers/applyBind.mjs.map +0 -1
  516. package/dist/esm/node_modules/call-bind-apply-helpers/functionApply.mjs +0 -13
  517. package/dist/esm/node_modules/call-bind-apply-helpers/functionApply.mjs.map +0 -1
  518. package/dist/esm/node_modules/call-bind-apply-helpers/functionCall.mjs +0 -13
  519. package/dist/esm/node_modules/call-bind-apply-helpers/functionCall.mjs.map +0 -1
  520. package/dist/esm/node_modules/call-bind-apply-helpers/index.mjs +0 -24
  521. package/dist/esm/node_modules/call-bind-apply-helpers/index.mjs.map +0 -1
  522. package/dist/esm/node_modules/call-bind-apply-helpers/reflectApply.mjs +0 -13
  523. package/dist/esm/node_modules/call-bind-apply-helpers/reflectApply.mjs.map +0 -1
  524. package/dist/esm/node_modules/call-bound/index.mjs +0 -23
  525. package/dist/esm/node_modules/call-bound/index.mjs.map +0 -1
  526. package/dist/esm/node_modules/camelcase/index.mjs +0 -75
  527. package/dist/esm/node_modules/camelcase/index.mjs.map +0 -1
  528. package/dist/esm/node_modules/define-data-property/index.mjs +0 -41
  529. package/dist/esm/node_modules/define-data-property/index.mjs.map +0 -1
  530. package/dist/esm/node_modules/dunder-proto/get.mjs +0 -28
  531. package/dist/esm/node_modules/dunder-proto/get.mjs.map +0 -1
  532. package/dist/esm/node_modules/es-define-property/index.mjs +0 -19
  533. package/dist/esm/node_modules/es-define-property/index.mjs.map +0 -1
  534. package/dist/esm/node_modules/es-errors/eval.mjs +0 -13
  535. package/dist/esm/node_modules/es-errors/eval.mjs.map +0 -1
  536. package/dist/esm/node_modules/es-errors/index.mjs +0 -13
  537. package/dist/esm/node_modules/es-errors/index.mjs.map +0 -1
  538. package/dist/esm/node_modules/es-errors/range.mjs +0 -13
  539. package/dist/esm/node_modules/es-errors/range.mjs.map +0 -1
  540. package/dist/esm/node_modules/es-errors/ref.mjs +0 -13
  541. package/dist/esm/node_modules/es-errors/ref.mjs.map +0 -1
  542. package/dist/esm/node_modules/es-errors/syntax.mjs +0 -13
  543. package/dist/esm/node_modules/es-errors/syntax.mjs.map +0 -1
  544. package/dist/esm/node_modules/es-errors/type.mjs +0 -13
  545. package/dist/esm/node_modules/es-errors/type.mjs.map +0 -1
  546. package/dist/esm/node_modules/es-errors/uri.mjs +0 -13
  547. package/dist/esm/node_modules/es-errors/uri.mjs.map +0 -1
  548. package/dist/esm/node_modules/es-object-atoms/index.mjs +0 -13
  549. package/dist/esm/node_modules/es-object-atoms/index.mjs.map +0 -1
  550. package/dist/esm/node_modules/escape-html/index.mjs +0 -68
  551. package/dist/esm/node_modules/escape-html/index.mjs.map +0 -1
  552. package/dist/esm/node_modules/fast-xml-parser/src/fxp.mjs +0 -8
  553. package/dist/esm/node_modules/fast-xml-parser/src/fxp.mjs.map +0 -1
  554. package/dist/esm/node_modules/fast-xml-parser/src/util.mjs +0 -26
  555. package/dist/esm/node_modules/fast-xml-parser/src/util.mjs.map +0 -1
  556. package/dist/esm/node_modules/fast-xml-parser/src/validator.mjs +0 -243
  557. package/dist/esm/node_modules/fast-xml-parser/src/validator.mjs.map +0 -1
  558. package/dist/esm/node_modules/for-each/index.mjs +0 -43
  559. package/dist/esm/node_modules/for-each/index.mjs.map +0 -1
  560. package/dist/esm/node_modules/function-bind/implementation.mjs +0 -59
  561. package/dist/esm/node_modules/function-bind/implementation.mjs.map +0 -1
  562. package/dist/esm/node_modules/function-bind/index.mjs +0 -14
  563. package/dist/esm/node_modules/function-bind/index.mjs.map +0 -1
  564. package/dist/esm/node_modules/generator-function/index.mjs +0 -14
  565. package/dist/esm/node_modules/generator-function/index.mjs.map +0 -1
  566. package/dist/esm/node_modules/get-intrinsic/index.mjs +0 -358
  567. package/dist/esm/node_modules/get-intrinsic/index.mjs.map +0 -1
  568. package/dist/esm/node_modules/get-proto/Object.getPrototypeOf.mjs +0 -15
  569. package/dist/esm/node_modules/get-proto/Object.getPrototypeOf.mjs.map +0 -1
  570. package/dist/esm/node_modules/get-proto/Reflect.getPrototypeOf.mjs +0 -13
  571. package/dist/esm/node_modules/get-proto/Reflect.getPrototypeOf.mjs.map +0 -1
  572. package/dist/esm/node_modules/get-proto/index.mjs +0 -26
  573. package/dist/esm/node_modules/get-proto/index.mjs.map +0 -1
  574. package/dist/esm/node_modules/gopd/gOPD.mjs +0 -13
  575. package/dist/esm/node_modules/gopd/gOPD.mjs.map +0 -1
  576. package/dist/esm/node_modules/gopd/index.mjs +0 -20
  577. package/dist/esm/node_modules/gopd/index.mjs.map +0 -1
  578. package/dist/esm/node_modules/has-property-descriptors/index.mjs +0 -25
  579. package/dist/esm/node_modules/has-property-descriptors/index.mjs.map +0 -1
  580. package/dist/esm/node_modules/has-symbols/index.mjs +0 -22
  581. package/dist/esm/node_modules/has-symbols/index.mjs.map +0 -1
  582. package/dist/esm/node_modules/has-symbols/shams.mjs +0 -36
  583. package/dist/esm/node_modules/has-symbols/shams.mjs.map +0 -1
  584. package/dist/esm/node_modules/has-tostringtag/shams.mjs +0 -17
  585. package/dist/esm/node_modules/has-tostringtag/shams.mjs.map +0 -1
  586. package/dist/esm/node_modules/hasown/index.mjs +0 -17
  587. package/dist/esm/node_modules/hasown/index.mjs.map +0 -1
  588. package/dist/esm/node_modules/ieee754/index.mjs +0 -80
  589. package/dist/esm/node_modules/ieee754/index.mjs.map +0 -1
  590. package/dist/esm/node_modules/inherits/inherits_browser.mjs +0 -31
  591. package/dist/esm/node_modules/inherits/inherits_browser.mjs.map +0 -1
  592. package/dist/esm/node_modules/is-arguments/index.mjs +0 -31
  593. package/dist/esm/node_modules/is-arguments/index.mjs.map +0 -1
  594. package/dist/esm/node_modules/is-callable/index.mjs +0 -87
  595. package/dist/esm/node_modules/is-callable/index.mjs.map +0 -1
  596. package/dist/esm/node_modules/is-generator-function/index.mjs +0 -32
  597. package/dist/esm/node_modules/is-generator-function/index.mjs.map +0 -1
  598. package/dist/esm/node_modules/is-regex/index.mjs +0 -58
  599. package/dist/esm/node_modules/is-regex/index.mjs.map +0 -1
  600. package/dist/esm/node_modules/is-typed-array/index.mjs +0 -17
  601. package/dist/esm/node_modules/is-typed-array/index.mjs.map +0 -1
  602. package/dist/esm/node_modules/jose/dist/webapi/lib/base64.mjs +0 -12
  603. package/dist/esm/node_modules/jose/dist/webapi/lib/base64.mjs.map +0 -1
  604. package/dist/esm/node_modules/jose/dist/webapi/lib/buffer_utils.mjs +0 -8
  605. package/dist/esm/node_modules/jose/dist/webapi/lib/buffer_utils.mjs.map +0 -1
  606. package/dist/esm/node_modules/jose/dist/webapi/lib/is_object.mjs +0 -15
  607. package/dist/esm/node_modules/jose/dist/webapi/lib/is_object.mjs.map +0 -1
  608. package/dist/esm/node_modules/jose/dist/webapi/util/base64url.mjs +0 -19
  609. package/dist/esm/node_modules/jose/dist/webapi/util/base64url.mjs.map +0 -1
  610. package/dist/esm/node_modules/jose/dist/webapi/util/decode_jwt.mjs +0 -31
  611. package/dist/esm/node_modules/jose/dist/webapi/util/decode_jwt.mjs.map +0 -1
  612. package/dist/esm/node_modules/jose/dist/webapi/util/errors.mjs +0 -26
  613. package/dist/esm/node_modules/jose/dist/webapi/util/errors.mjs.map +0 -1
  614. package/dist/esm/node_modules/math-intrinsics/abs.mjs +0 -13
  615. package/dist/esm/node_modules/math-intrinsics/abs.mjs.map +0 -1
  616. package/dist/esm/node_modules/math-intrinsics/floor.mjs +0 -13
  617. package/dist/esm/node_modules/math-intrinsics/floor.mjs.map +0 -1
  618. package/dist/esm/node_modules/math-intrinsics/isNaN.mjs +0 -15
  619. package/dist/esm/node_modules/math-intrinsics/isNaN.mjs.map +0 -1
  620. package/dist/esm/node_modules/math-intrinsics/max.mjs +0 -13
  621. package/dist/esm/node_modules/math-intrinsics/max.mjs.map +0 -1
  622. package/dist/esm/node_modules/math-intrinsics/min.mjs +0 -13
  623. package/dist/esm/node_modules/math-intrinsics/min.mjs.map +0 -1
  624. package/dist/esm/node_modules/math-intrinsics/pow.mjs +0 -13
  625. package/dist/esm/node_modules/math-intrinsics/pow.mjs.map +0 -1
  626. package/dist/esm/node_modules/math-intrinsics/round.mjs +0 -13
  627. package/dist/esm/node_modules/math-intrinsics/round.mjs.map +0 -1
  628. package/dist/esm/node_modules/math-intrinsics/sign.mjs +0 -18
  629. package/dist/esm/node_modules/math-intrinsics/sign.mjs.map +0 -1
  630. package/dist/esm/node_modules/node-forge/lib/aes.mjs +0 -601
  631. package/dist/esm/node_modules/node-forge/lib/aes.mjs.map +0 -1
  632. package/dist/esm/node_modules/node-forge/lib/aesCipherSuites.mjs +0 -199
  633. package/dist/esm/node_modules/node-forge/lib/aesCipherSuites.mjs.map +0 -1
  634. package/dist/esm/node_modules/node-forge/lib/asn1-validator.mjs +0 -80
  635. package/dist/esm/node_modules/node-forge/lib/asn1-validator.mjs.map +0 -1
  636. package/dist/esm/node_modules/node-forge/lib/asn1.mjs +0 -942
  637. package/dist/esm/node_modules/node-forge/lib/asn1.mjs.map +0 -1
  638. package/dist/esm/node_modules/node-forge/lib/baseN.mjs +0 -141
  639. package/dist/esm/node_modules/node-forge/lib/baseN.mjs.map +0 -1
  640. package/dist/esm/node_modules/node-forge/lib/cipher.mjs +0 -190
  641. package/dist/esm/node_modules/node-forge/lib/cipher.mjs.map +0 -1
  642. package/dist/esm/node_modules/node-forge/lib/cipherModes.mjs +0 -601
  643. package/dist/esm/node_modules/node-forge/lib/cipherModes.mjs.map +0 -1
  644. package/dist/esm/node_modules/node-forge/lib/des.mjs +0 -1191
  645. package/dist/esm/node_modules/node-forge/lib/des.mjs.map +0 -1
  646. package/dist/esm/node_modules/node-forge/lib/ed25519.mjs +0 -1024
  647. package/dist/esm/node_modules/node-forge/lib/ed25519.mjs.map +0 -1
  648. package/dist/esm/node_modules/node-forge/lib/forge.mjs +0 -19
  649. package/dist/esm/node_modules/node-forge/lib/forge.mjs.map +0 -1
  650. package/dist/esm/node_modules/node-forge/lib/hmac.mjs +0 -111
  651. package/dist/esm/node_modules/node-forge/lib/hmac.mjs.map +0 -1
  652. package/dist/esm/node_modules/node-forge/lib/index.mjs +0 -70
  653. package/dist/esm/node_modules/node-forge/lib/index.mjs.map +0 -1
  654. package/dist/esm/node_modules/node-forge/lib/jsbn.mjs +0 -1260
  655. package/dist/esm/node_modules/node-forge/lib/jsbn.mjs.map +0 -1
  656. package/dist/esm/node_modules/node-forge/lib/kem.mjs +0 -150
  657. package/dist/esm/node_modules/node-forge/lib/kem.mjs.map +0 -1
  658. package/dist/esm/node_modules/node-forge/lib/log.mjs +0 -245
  659. package/dist/esm/node_modules/node-forge/lib/log.mjs.map +0 -1
  660. package/dist/esm/node_modules/node-forge/lib/md.all.mjs +0 -28
  661. package/dist/esm/node_modules/node-forge/lib/md.all.mjs.map +0 -1
  662. package/dist/esm/node_modules/node-forge/lib/md.mjs +0 -22
  663. package/dist/esm/node_modules/node-forge/lib/md.mjs.map +0 -1
  664. package/dist/esm/node_modules/node-forge/lib/md5.mjs +0 -328
  665. package/dist/esm/node_modules/node-forge/lib/md5.mjs.map +0 -1
  666. package/dist/esm/node_modules/node-forge/lib/mgf.mjs +0 -24
  667. package/dist/esm/node_modules/node-forge/lib/mgf.mjs.map +0 -1
  668. package/dist/esm/node_modules/node-forge/lib/mgf1.mjs +0 -48
  669. package/dist/esm/node_modules/node-forge/lib/mgf1.mjs.map +0 -1
  670. package/dist/esm/node_modules/node-forge/lib/oids.mjs +0 -157
  671. package/dist/esm/node_modules/node-forge/lib/oids.mjs.map +0 -1
  672. package/dist/esm/node_modules/node-forge/lib/pbe.mjs +0 -819
  673. package/dist/esm/node_modules/node-forge/lib/pbe.mjs.map +0 -1
  674. package/dist/esm/node_modules/node-forge/lib/pbkdf2.mjs +0 -130
  675. package/dist/esm/node_modules/node-forge/lib/pbkdf2.mjs.map +0 -1
  676. package/dist/esm/node_modules/node-forge/lib/pem.mjs +0 -179
  677. package/dist/esm/node_modules/node-forge/lib/pem.mjs.map +0 -1
  678. package/dist/esm/node_modules/node-forge/lib/pkcs1.mjs +0 -204
  679. package/dist/esm/node_modules/node-forge/lib/pkcs1.mjs.map +0 -1
  680. package/dist/esm/node_modules/node-forge/lib/pkcs12.mjs +0 -727
  681. package/dist/esm/node_modules/node-forge/lib/pkcs12.mjs.map +0 -1
  682. package/dist/esm/node_modules/node-forge/lib/pkcs7.mjs +0 -645
  683. package/dist/esm/node_modules/node-forge/lib/pkcs7.mjs.map +0 -1
  684. package/dist/esm/node_modules/node-forge/lib/pkcs7asn1.mjs +0 -409
  685. package/dist/esm/node_modules/node-forge/lib/pkcs7asn1.mjs.map +0 -1
  686. package/dist/esm/node_modules/node-forge/lib/pki.mjs +0 -105
  687. package/dist/esm/node_modules/node-forge/lib/pki.mjs.map +0 -1
  688. package/dist/esm/node_modules/node-forge/lib/prime.mjs +0 -197
  689. package/dist/esm/node_modules/node-forge/lib/prime.mjs.map +0 -1
  690. package/dist/esm/node_modules/node-forge/lib/prng.mjs +0 -295
  691. package/dist/esm/node_modules/node-forge/lib/prng.mjs.map +0 -1
  692. package/dist/esm/node_modules/node-forge/lib/pss.mjs +0 -145
  693. package/dist/esm/node_modules/node-forge/lib/pss.mjs.map +0 -1
  694. package/dist/esm/node_modules/node-forge/lib/random.mjs +0 -145
  695. package/dist/esm/node_modules/node-forge/lib/random.mjs.map +0 -1
  696. package/dist/esm/node_modules/node-forge/lib/rc2.mjs +0 -542
  697. package/dist/esm/node_modules/node-forge/lib/rc2.mjs.map +0 -1
  698. package/dist/esm/node_modules/node-forge/lib/rsa.mjs +0 -1304
  699. package/dist/esm/node_modules/node-forge/lib/rsa.mjs.map +0 -1
  700. package/dist/esm/node_modules/node-forge/lib/sha1.mjs +0 -234
  701. package/dist/esm/node_modules/node-forge/lib/sha1.mjs.map +0 -1
  702. package/dist/esm/node_modules/node-forge/lib/sha256.mjs +0 -271
  703. package/dist/esm/node_modules/node-forge/lib/sha256.mjs.map +0 -1
  704. package/dist/esm/node_modules/node-forge/lib/sha512.mjs +0 -417
  705. package/dist/esm/node_modules/node-forge/lib/sha512.mjs.map +0 -1
  706. package/dist/esm/node_modules/node-forge/lib/ssh.mjs +0 -198
  707. package/dist/esm/node_modules/node-forge/lib/ssh.mjs.map +0 -1
  708. package/dist/esm/node_modules/node-forge/lib/tls.mjs +0 -3659
  709. package/dist/esm/node_modules/node-forge/lib/tls.mjs.map +0 -1
  710. package/dist/esm/node_modules/node-forge/lib/util.mjs +0 -2121
  711. package/dist/esm/node_modules/node-forge/lib/util.mjs.map +0 -1
  712. package/dist/esm/node_modules/node-forge/lib/x509.mjs +0 -2168
  713. package/dist/esm/node_modules/node-forge/lib/x509.mjs.map +0 -1
  714. package/dist/esm/node_modules/node-forge/lib.mjs +0 -10
  715. package/dist/esm/node_modules/node-forge/lib.mjs.map +0 -1
  716. package/dist/esm/node_modules/node-rsa/src/NodeRSA.mjs +0 -338
  717. package/dist/esm/node_modules/node-rsa/src/NodeRSA.mjs.map +0 -1
  718. package/dist/esm/node_modules/node-rsa/src/encryptEngines/encryptEngines.mjs +0 -23
  719. package/dist/esm/node_modules/node-rsa/src/encryptEngines/encryptEngines.mjs.map +0 -1
  720. package/dist/esm/node_modules/node-rsa/src/encryptEngines/io.mjs +0 -62
  721. package/dist/esm/node_modules/node-rsa/src/encryptEngines/io.mjs.map +0 -1
  722. package/dist/esm/node_modules/node-rsa/src/encryptEngines/js.mjs +0 -41
  723. package/dist/esm/node_modules/node-rsa/src/encryptEngines/js.mjs.map +0 -1
  724. package/dist/esm/node_modules/node-rsa/src/encryptEngines/node12.mjs +0 -46
  725. package/dist/esm/node_modules/node-rsa/src/encryptEngines/node12.mjs.map +0 -1
  726. package/dist/esm/node_modules/node-rsa/src/formats/components.mjs +0 -52
  727. package/dist/esm/node_modules/node-rsa/src/formats/components.mjs.map +0 -1
  728. package/dist/esm/node_modules/node-rsa/src/formats/formats.mjs +0 -83
  729. package/dist/esm/node_modules/node-rsa/src/formats/formats.mjs.map +0 -1
  730. package/dist/esm/node_modules/node-rsa/src/formats/openssh.mjs +0 -174
  731. package/dist/esm/node_modules/node-rsa/src/formats/openssh.mjs.map +0 -1
  732. package/dist/esm/node_modules/node-rsa/src/formats/pkcs1.mjs +0 -101
  733. package/dist/esm/node_modules/node-rsa/src/formats/pkcs1.mjs.map +0 -1
  734. package/dist/esm/node_modules/node-rsa/src/formats/pkcs8.mjs +0 -128
  735. package/dist/esm/node_modules/node-rsa/src/formats/pkcs8.mjs.map +0 -1
  736. package/dist/esm/node_modules/node-rsa/src/libs/jsbn.mjs +0 -1344
  737. package/dist/esm/node_modules/node-rsa/src/libs/jsbn.mjs.map +0 -1
  738. package/dist/esm/node_modules/node-rsa/src/libs/rsa.mjs +0 -228
  739. package/dist/esm/node_modules/node-rsa/src/libs/rsa.mjs.map +0 -1
  740. package/dist/esm/node_modules/node-rsa/src/schemes/oaep.mjs +0 -120
  741. package/dist/esm/node_modules/node-rsa/src/schemes/oaep.mjs.map +0 -1
  742. package/dist/esm/node_modules/node-rsa/src/schemes/pkcs1.mjs +0 -172
  743. package/dist/esm/node_modules/node-rsa/src/schemes/pkcs1.mjs.map +0 -1
  744. package/dist/esm/node_modules/node-rsa/src/schemes/pss.mjs +0 -120
  745. package/dist/esm/node_modules/node-rsa/src/schemes/pss.mjs.map +0 -1
  746. package/dist/esm/node_modules/node-rsa/src/schemes/schemes.mjs +0 -25
  747. package/dist/esm/node_modules/node-rsa/src/schemes/schemes.mjs.map +0 -1
  748. package/dist/esm/node_modules/node-rsa/src/utils.mjs +0 -81
  749. package/dist/esm/node_modules/node-rsa/src/utils.mjs.map +0 -1
  750. package/dist/esm/node_modules/pako/index.mjs +0 -22
  751. package/dist/esm/node_modules/pako/index.mjs.map +0 -1
  752. package/dist/esm/node_modules/pako/lib/deflate.mjs +0 -308
  753. package/dist/esm/node_modules/pako/lib/deflate.mjs.map +0 -1
  754. package/dist/esm/node_modules/pako/lib/inflate.mjs +0 -314
  755. package/dist/esm/node_modules/pako/lib/inflate.mjs.map +0 -1
  756. package/dist/esm/node_modules/pako/lib/utils/common.mjs +0 -74
  757. package/dist/esm/node_modules/pako/lib/utils/common.mjs.map +0 -1
  758. package/dist/esm/node_modules/pako/lib/utils/strings.mjs +0 -128
  759. package/dist/esm/node_modules/pako/lib/utils/strings.mjs.map +0 -1
  760. package/dist/esm/node_modules/pako/lib/zlib/adler32.mjs +0 -26
  761. package/dist/esm/node_modules/pako/lib/zlib/adler32.mjs.map +0 -1
  762. package/dist/esm/node_modules/pako/lib/zlib/constants.mjs +0 -40
  763. package/dist/esm/node_modules/pako/lib/zlib/constants.mjs.map +0 -1
  764. package/dist/esm/node_modules/pako/lib/zlib/crc32.mjs +0 -28
  765. package/dist/esm/node_modules/pako/lib/zlib/crc32.mjs.map +0 -1
  766. package/dist/esm/node_modules/pako/lib/zlib/deflate.mjs +0 -886
  767. package/dist/esm/node_modules/pako/lib/zlib/deflate.mjs.map +0 -1
  768. package/dist/esm/node_modules/pako/lib/zlib/gzheader.mjs +0 -24
  769. package/dist/esm/node_modules/pako/lib/zlib/gzheader.mjs.map +0 -1
  770. package/dist/esm/node_modules/pako/lib/zlib/inffast.mjs +0 -224
  771. package/dist/esm/node_modules/pako/lib/zlib/inffast.mjs.map +0 -1
  772. package/dist/esm/node_modules/pako/lib/zlib/inflate.mjs +0 -1035
  773. package/dist/esm/node_modules/pako/lib/zlib/inflate.mjs.map +0 -1
  774. package/dist/esm/node_modules/pako/lib/zlib/inftrees.mjs +0 -275
  775. package/dist/esm/node_modules/pako/lib/zlib/inftrees.mjs.map +0 -1
  776. package/dist/esm/node_modules/pako/lib/zlib/messages.mjs +0 -22
  777. package/dist/esm/node_modules/pako/lib/zlib/messages.mjs.map +0 -1
  778. package/dist/esm/node_modules/pako/lib/zlib/trees.mjs +0 -623
  779. package/dist/esm/node_modules/pako/lib/zlib/trees.mjs.map +0 -1
  780. package/dist/esm/node_modules/pako/lib/zlib/zstream.mjs +0 -26
  781. package/dist/esm/node_modules/pako/lib/zlib/zstream.mjs.map +0 -1
  782. package/dist/esm/node_modules/possible-typed-array-names/index.mjs +0 -26
  783. package/dist/esm/node_modules/possible-typed-array-names/index.mjs.map +0 -1
  784. package/dist/esm/node_modules/safe-regex-test/index.mjs +0 -25
  785. package/dist/esm/node_modules/safe-regex-test/index.mjs.map +0 -1
  786. package/dist/esm/node_modules/safer-buffer/safer.mjs +0 -50
  787. package/dist/esm/node_modules/safer-buffer/safer.mjs.map +0 -1
  788. package/dist/esm/node_modules/samlify/build/index.mjs +0 -117
  789. package/dist/esm/node_modules/samlify/build/index.mjs.map +0 -1
  790. package/dist/esm/node_modules/samlify/build/src/api.mjs +0 -33
  791. package/dist/esm/node_modules/samlify/build/src/api.mjs.map +0 -1
  792. package/dist/esm/node_modules/samlify/build/src/binding-post.mjs +0 -504
  793. package/dist/esm/node_modules/samlify/build/src/binding-post.mjs.map +0 -1
  794. package/dist/esm/node_modules/samlify/build/src/binding-redirect.mjs +0 -339
  795. package/dist/esm/node_modules/samlify/build/src/binding-redirect.mjs.map +0 -1
  796. package/dist/esm/node_modules/samlify/build/src/binding-simplesign.mjs +0 -358
  797. package/dist/esm/node_modules/samlify/build/src/binding-simplesign.mjs.map +0 -1
  798. package/dist/esm/node_modules/samlify/build/src/entity-idp.mjs +0 -279
  799. package/dist/esm/node_modules/samlify/build/src/entity-idp.mjs.map +0 -1
  800. package/dist/esm/node_modules/samlify/build/src/entity-sp.mjs +0 -142
  801. package/dist/esm/node_modules/samlify/build/src/entity-sp.mjs.map +0 -1
  802. package/dist/esm/node_modules/samlify/build/src/entity.mjs +0 -253
  803. package/dist/esm/node_modules/samlify/build/src/entity.mjs.map +0 -1
  804. package/dist/esm/node_modules/samlify/build/src/extractor.mjs +0 -352
  805. package/dist/esm/node_modules/samlify/build/src/extractor.mjs.map +0 -1
  806. package/dist/esm/node_modules/samlify/build/src/flow.mjs +0 -389
  807. package/dist/esm/node_modules/samlify/build/src/flow.mjs.map +0 -1
  808. package/dist/esm/node_modules/samlify/build/src/libsaml.mjs +0 -544
  809. package/dist/esm/node_modules/samlify/build/src/libsaml.mjs.map +0 -1
  810. package/dist/esm/node_modules/samlify/build/src/metadata-idp.mjs +0 -171
  811. package/dist/esm/node_modules/samlify/build/src/metadata-idp.mjs.map +0 -1
  812. package/dist/esm/node_modules/samlify/build/src/metadata-sp.mjs +0 -214
  813. package/dist/esm/node_modules/samlify/build/src/metadata-sp.mjs.map +0 -1
  814. package/dist/esm/node_modules/samlify/build/src/metadata.mjs +0 -200
  815. package/dist/esm/node_modules/samlify/build/src/metadata.mjs.map +0 -1
  816. package/dist/esm/node_modules/samlify/build/src/urn.mjs +0 -225
  817. package/dist/esm/node_modules/samlify/build/src/urn.mjs.map +0 -1
  818. package/dist/esm/node_modules/samlify/build/src/utility.mjs +0 -277
  819. package/dist/esm/node_modules/samlify/build/src/utility.mjs.map +0 -1
  820. package/dist/esm/node_modules/samlify/build/src/validator.mjs +0 -53
  821. package/dist/esm/node_modules/samlify/build/src/validator.mjs.map +0 -1
  822. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/index.mjs +0 -39
  823. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/index.mjs.map +0 -1
  824. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/md5.mjs +0 -154
  825. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/md5.mjs.map +0 -1
  826. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/nil.mjs +0 -12
  827. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/nil.mjs.map +0 -1
  828. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/parse.mjs +0 -36
  829. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/parse.mjs.map +0 -1
  830. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/regex.mjs +0 -12
  831. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/regex.mjs.map +0 -1
  832. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/rng.mjs +0 -20
  833. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/rng.mjs.map +0 -1
  834. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/sha1.mjs +0 -101
  835. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/sha1.mjs.map +0 -1
  836. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/stringify.mjs +0 -22
  837. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/stringify.mjs.map +0 -1
  838. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v1.mjs +0 -63
  839. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v1.mjs.map +0 -1
  840. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v3.mjs +0 -17
  841. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v3.mjs.map +0 -1
  842. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v35.mjs +0 -48
  843. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v35.mjs.map +0 -1
  844. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v4.mjs +0 -28
  845. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v4.mjs.map +0 -1
  846. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v5.mjs +0 -17
  847. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v5.mjs.map +0 -1
  848. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/validate.mjs +0 -17
  849. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/validate.mjs.map +0 -1
  850. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/version.mjs +0 -18
  851. package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/version.mjs.map +0 -1
  852. package/dist/esm/node_modules/set-function-length/index.mjs +0 -38
  853. package/dist/esm/node_modules/set-function-length/index.mjs.map +0 -1
  854. package/dist/esm/node_modules/util/support/isBufferBrowser.mjs +0 -14
  855. package/dist/esm/node_modules/util/support/isBufferBrowser.mjs.map +0 -1
  856. package/dist/esm/node_modules/util/support/types.mjs +0 -218
  857. package/dist/esm/node_modules/util/support/types.mjs.map +0 -1
  858. package/dist/esm/node_modules/util/util.mjs +0 -443
  859. package/dist/esm/node_modules/util/util.mjs.map +0 -1
  860. package/dist/esm/node_modules/which-typed-array/index.mjs +0 -93
  861. package/dist/esm/node_modules/which-typed-array/index.mjs.map +0 -1
  862. package/dist/esm/node_modules/xml/lib/escapeForXML.mjs +0 -24
  863. package/dist/esm/node_modules/xml/lib/escapeForXML.mjs.map +0 -1
  864. package/dist/esm/node_modules/xml/lib/xml.mjs +0 -183
  865. package/dist/esm/node_modules/xml/lib/xml.mjs.map +0 -1
  866. package/dist/esm/node_modules/xml-crypto/lib/c14n-canonicalization.mjs +0 -199
  867. package/dist/esm/node_modules/xml-crypto/lib/c14n-canonicalization.mjs.map +0 -1
  868. package/dist/esm/node_modules/xml-crypto/lib/enveloped-signature.mjs +0 -49
  869. package/dist/esm/node_modules/xml-crypto/lib/enveloped-signature.mjs.map +0 -1
  870. package/dist/esm/node_modules/xml-crypto/lib/exclusive-canonicalization.mjs +0 -220
  871. package/dist/esm/node_modules/xml-crypto/lib/exclusive-canonicalization.mjs.map +0 -1
  872. package/dist/esm/node_modules/xml-crypto/lib/hash-algorithms.mjs +0 -53
  873. package/dist/esm/node_modules/xml-crypto/lib/hash-algorithms.mjs.map +0 -1
  874. package/dist/esm/node_modules/xml-crypto/lib/index.mjs +0 -70
  875. package/dist/esm/node_modules/xml-crypto/lib/index.mjs.map +0 -1
  876. package/dist/esm/node_modules/xml-crypto/lib/signature-algorithms.mjs +0 -88
  877. package/dist/esm/node_modules/xml-crypto/lib/signature-algorithms.mjs.map +0 -1
  878. package/dist/esm/node_modules/xml-crypto/lib/signed-xml.mjs +0 -693
  879. package/dist/esm/node_modules/xml-crypto/lib/signed-xml.mjs.map +0 -1
  880. package/dist/esm/node_modules/xml-crypto/lib/types.mjs +0 -55
  881. package/dist/esm/node_modules/xml-crypto/lib/types.mjs.map +0 -1
  882. package/dist/esm/node_modules/xml-crypto/lib/utils.mjs +0 -210
  883. package/dist/esm/node_modules/xml-crypto/lib/utils.mjs.map +0 -1
  884. package/dist/esm/node_modules/xml-crypto/node_modules/xpath/xpath.mjs +0 -3442
  885. package/dist/esm/node_modules/xml-crypto/node_modules/xpath/xpath.mjs.map +0 -1
  886. package/dist/esm/node_modules/xml-escape/index.mjs +0 -27
  887. package/dist/esm/node_modules/xml-escape/index.mjs.map +0 -1
  888. package/dist/esm/node_modules/xpath/xpath.mjs +0 -3407
  889. package/dist/esm/node_modules/xpath/xpath.mjs.map +0 -1
  890. package/dist/esm/node_modules/zod/v4/classic/errors.mjs +0 -30
  891. package/dist/esm/node_modules/zod/v4/classic/errors.mjs.map +0 -1
  892. package/dist/esm/node_modules/zod/v4/classic/iso.mjs +0 -38
  893. package/dist/esm/node_modules/zod/v4/classic/iso.mjs.map +0 -1
  894. package/dist/esm/node_modules/zod/v4/classic/parse.mjs +0 -20
  895. package/dist/esm/node_modules/zod/v4/classic/parse.mjs.map +0 -1
  896. package/dist/esm/node_modules/zod/v4/classic/schemas.mjs +0 -519
  897. package/dist/esm/node_modules/zod/v4/classic/schemas.mjs.map +0 -1
  898. package/dist/esm/node_modules/zod/v4/core/api.mjs +0 -395
  899. package/dist/esm/node_modules/zod/v4/core/api.mjs.map +0 -1
  900. package/dist/esm/node_modules/zod/v4/core/checks.mjs +0 -226
  901. package/dist/esm/node_modules/zod/v4/core/checks.mjs.map +0 -1
  902. package/dist/esm/node_modules/zod/v4/core/core.mjs +0 -57
  903. package/dist/esm/node_modules/zod/v4/core/core.mjs.map +0 -1
  904. package/dist/esm/node_modules/zod/v4/core/doc.mjs +0 -34
  905. package/dist/esm/node_modules/zod/v4/core/doc.mjs.map +0 -1
  906. package/dist/esm/node_modules/zod/v4/core/errors.mjs +0 -63
  907. package/dist/esm/node_modules/zod/v4/core/errors.mjs.map +0 -1
  908. package/dist/esm/node_modules/zod/v4/core/parse.mjs +0 -110
  909. package/dist/esm/node_modules/zod/v4/core/parse.mjs.map +0 -1
  910. package/dist/esm/node_modules/zod/v4/core/regexes.mjs +0 -60
  911. package/dist/esm/node_modules/zod/v4/core/regexes.mjs.map +0 -1
  912. package/dist/esm/node_modules/zod/v4/core/registries.mjs +0 -53
  913. package/dist/esm/node_modules/zod/v4/core/registries.mjs.map +0 -1
  914. package/dist/esm/node_modules/zod/v4/core/schemas.mjs +0 -1069
  915. package/dist/esm/node_modules/zod/v4/core/schemas.mjs.map +0 -1
  916. package/dist/esm/node_modules/zod/v4/core/util.mjs +0 -302
  917. package/dist/esm/node_modules/zod/v4/core/util.mjs.map +0 -1
  918. package/dist/esm/node_modules/zod/v4/core/versions.mjs +0 -10
  919. package/dist/esm/node_modules/zod/v4/core/versions.mjs.map +0 -1
  920. package/dist/types/MagicLinkEmail.d.ts +0 -8
  921. package/dist/types/MagicLinkEmail.d.ts.map +0 -1
  922. package/dist/types/controllers/audit.controller.d.ts +0 -32
  923. package/dist/types/controllers/audit.controller.d.ts.map +0 -1
  924. package/dist/types/models/audit.model.d.ts +0 -5
  925. package/dist/types/models/audit.model.d.ts.map +0 -1
@@ -16,7 +16,7 @@ const require_models_discussion_model = require('../models/discussion.model.cjs'
16
16
 
17
17
  //#region src/controllers/ai.controller.ts
18
18
  const customQuery = async (req, res, _next) => {
19
- const { aiOptions, tagsKeys,...rest } = req.body;
19
+ const { aiOptions, tagsKeys, ...rest } = req.body;
20
20
  let aiConfig;
21
21
  try {
22
22
  aiConfig = await require_utils_AI_aiSdk.getAIConfig(res, {
@@ -48,7 +48,7 @@ const customQuery = async (req, res, _next) => {
48
48
  };
49
49
  const translateJSON = async (req, res, _next) => {
50
50
  const { project } = res.locals;
51
- const { aiOptions, tagsKeys,...rest } = req.body;
51
+ const { aiOptions, tagsKeys, ...rest } = req.body;
52
52
  let aiConfig;
53
53
  try {
54
54
  aiConfig = await require_utils_AI_aiSdk.getAIConfig(res, {
@@ -1 +1 @@
1
- {"version":3,"file":"ai.controller.cjs","names":["aiConfig: AIConfig","getAIConfig","formatResponse","tags: Tag[]","getTagsByKeys","dictionaries: Dictionary[]","getDictionariesByTags","DiscussionModel","getDiscussionFiltersAndPagination","numberOfMessagesById: Record<string, number>","formatPaginatedResponse"],"sources":["../../../src/controllers/ai.controller.ts"],"sourcesContent":["import type { KeyPath, Locale } from '@intlayer/types';\nimport type { ResponseWithSession } from '@middlewares/sessionAuth.middleware';\nimport { getDictionariesByTags } from '@services/dictionary.service';\nimport * as tagService from '@services/tag.service';\nimport { getTagsByKeys } from '@services/tag.service';\nimport {\n type AIConfig,\n type AIOptions,\n type ChatCompletionRequestMessage,\n getAIConfig,\n} from '@utils/AI/aiSdk';\nimport * as askDocQuestionUtil from '@utils/AI/askDocQuestion/askDocQuestion';\nimport * as auditContentDeclarationUtil from '@utils/AI/auditDictionary';\nimport * as auditContentDeclarationFieldUtil from '@utils/AI/auditDictionaryField';\nimport * as auditContentDeclarationMetadataUtil from '@utils/AI/auditDictionaryMetadata';\nimport * as auditTagUtil from '@utils/AI/auditTag';\nimport * as autocompleteUtil from '@utils/AI/autocomplete';\nimport * as customQueryUtil from '@utils/AI/customQuery';\nimport * as translateJSONUtil from '@utils/AI/translateJSON';\nimport { type AppError, ErrorHandler } from '@utils/errors';\nimport {\n type DiscussionFiltersParams,\n getDiscussionFiltersAndPagination,\n} from '@utils/filtersAndPagination/getDiscussionFiltersAndPagination';\nimport {\n formatPaginatedResponse,\n formatResponse,\n type PaginatedResponse,\n type ResponseData,\n} from '@utils/responseData';\nimport type { NextFunction, Request } from 'express';\nimport { DiscussionModel } from '@/models/discussion.model';\nimport type { Dictionary } from '@/types/dictionary.types';\nimport type { DiscussionAPI } from '@/types/discussion.types';\nimport type { Tag, TagAPI } from '@/types/tag.types';\n\ntype ReplaceAIConfigByOptions<T> = Omit<T, 'aiConfig'> & {\n aiOptions?: AIOptions;\n};\n\nexport type CustomQueryBody =\n ReplaceAIConfigByOptions<customQueryUtil.CustomQueryOptions> & {\n tagsKeys?: string[];\n applicationContext?: string;\n };\nexport type CustomQueryResult =\n ResponseData<customQueryUtil.CustomQueryResultData>;\n\nexport const customQuery = async (\n req: Request<CustomQueryBody>,\n res: ResponseWithSession<CustomQueryResult>,\n _next: NextFunction\n): Promise<void> => {\n // biome-ignore lint/correctness/noUnusedVariables: Just filter out tagsKeys\n const { aiOptions, tagsKeys, ...rest } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(res, {\n userOptions: aiOptions,\n defaultOptions: customQueryUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n });\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n const auditResponse = await customQueryUtil.customQuery({\n ...rest,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'QUERY_FAILED');\n return;\n }\n\n const responseData = formatResponse<customQueryUtil.CustomQueryResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type TranslateJSONBody = Omit<\n ReplaceAIConfigByOptions<translateJSONUtil.TranslateJSONOptions>,\n 'tags'\n> & {\n tagsKeys?: string[];\n};\nexport type TranslateJSONResult =\n ResponseData<translateJSONUtil.TranslateJSONResultData>;\n\nexport const translateJSON = async (\n req: Request<TranslateJSONBody>,\n res: ResponseWithSession<TranslateJSONResult>,\n _next: NextFunction\n): Promise<void> => {\n const { project } = res.locals;\n const { aiOptions, tagsKeys, ...rest } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(res, {\n userOptions: aiOptions,\n defaultOptions: translateJSONUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n });\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n let tags: Tag[] = [];\n\n if (project?.organizationId && tagsKeys) {\n tags = await getTagsByKeys(tagsKeys, project.organizationId);\n }\n\n const auditResponse = await translateJSONUtil.translateJSON({\n ...rest,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n tags,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData =\n formatResponse<translateJSONUtil.TranslateJSONResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AuditContentDeclarationBody = {\n aiOptions?: AIOptions;\n locales: Locale[];\n defaultLocale: Locale;\n fileContent: string;\n filePath?: string;\n tagsKeys?: string[];\n};\nexport type AuditContentDeclarationResult =\n ResponseData<auditContentDeclarationUtil.AuditFileResultData>;\n\n/**\n * Retrieves a list of dictionaries based on filters and pagination.\n */\nexport const auditContentDeclaration = async (\n req: Request<AuditContentDeclarationBody>,\n res: ResponseWithSession<AuditContentDeclarationResult>,\n _next: NextFunction\n): Promise<void> => {\n const { project } = res.locals;\n const { fileContent, filePath, aiOptions, locales, defaultLocale, tagsKeys } =\n req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(res, {\n userOptions: aiOptions,\n defaultOptions: auditContentDeclarationUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n });\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n let tags: Tag[] = [];\n\n if (project?.organizationId) {\n tags = await getTagsByKeys(tagsKeys, project.organizationId);\n }\n\n const auditResponse = await auditContentDeclarationUtil.auditDictionary({\n fileContent,\n filePath,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n locales,\n defaultLocale,\n tags,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData =\n formatResponse<auditContentDeclarationUtil.AuditFileResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AuditContentDeclarationFieldBody = {\n aiOptions?: AIOptions;\n locales: Locale[];\n fileContent: string;\n filePath?: string;\n tagsKeys?: string[];\n keyPath: KeyPath[];\n};\nexport type AuditContentDeclarationFieldResult =\n ResponseData<auditContentDeclarationFieldUtil.AuditDictionaryFieldResultData>;\n\n/**\n * Retrieves a list of dictionaries based on filters and pagination.\n */\nexport const auditContentDeclarationField = async (\n req: Request<AuditContentDeclarationFieldBody>,\n res: ResponseWithSession<AuditContentDeclarationFieldResult>,\n _next: NextFunction\n): Promise<void> => {\n const { project } = res.locals;\n const { fileContent, aiOptions, locales, tagsKeys, keyPath } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(res, {\n userOptions: aiOptions,\n defaultOptions: auditContentDeclarationFieldUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n });\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n let tags: Tag[] = [];\n\n if (project?.organizationId) {\n tags = await getTagsByKeys(tagsKeys, project.organizationId);\n }\n\n const auditResponse =\n await auditContentDeclarationFieldUtil.auditDictionaryField({\n fileContent,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n locales,\n tags,\n keyPath,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData =\n formatResponse<auditContentDeclarationFieldUtil.AuditDictionaryFieldResultData>(\n {\n data: auditResponse,\n }\n );\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AuditContentDeclarationMetadataBody = {\n aiOptions?: AIOptions;\n fileContent: string;\n};\n\nexport type AuditContentDeclarationMetadataResult =\n ResponseData<auditContentDeclarationMetadataUtil.AuditFileResultData>;\n\n/**\n * Retrieves a list of dictionaries based on filters and pagination.\n */\nexport const auditContentDeclarationMetadata = async (\n req: Request<AuditContentDeclarationMetadataBody>,\n res: ResponseWithSession<AuditContentDeclarationMetadataResult>,\n _next: NextFunction\n): Promise<void> => {\n const { organization } = res.locals;\n const { fileContent, aiOptions } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(res, {\n userOptions: aiOptions,\n defaultOptions: auditContentDeclarationMetadataUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n });\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n const tags: Tag[] = await tagService.findTags(\n {\n organizationId: organization?.id,\n },\n 0,\n 1000\n );\n\n const auditResponse =\n await auditContentDeclarationMetadataUtil.auditDictionaryMetadata({\n fileContent,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n tags,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData =\n formatResponse<auditContentDeclarationMetadataUtil.AuditFileResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AuditTagBody = {\n aiOptions?: AIOptions;\n tag: TagAPI;\n};\nexport type AuditTagResult = ResponseData<auditTagUtil.TranslateJSONResultData>;\n\n/**\n * Retrieves a list of dictionaries based on filters and pagination.\n */\nexport const auditTag = async (\n req: Request<undefined, undefined, AuditTagBody>,\n res: ResponseWithSession<AuditTagResult>,\n _next: NextFunction\n): Promise<void> => {\n const { project } = res.locals;\n const { aiOptions, tag } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(res, {\n userOptions: aiOptions,\n defaultOptions: auditTagUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n });\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n let dictionaries: Dictionary[] = [];\n if (project?.organizationId) {\n dictionaries = await getDictionariesByTags([tag.key], project.id);\n }\n\n const auditResponse = await auditTagUtil.auditTag({\n aiConfig,\n dictionaries,\n tag,\n applicationContext: aiOptions?.applicationContext,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData = formatResponse<auditTagUtil.TranslateJSONResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AskDocQuestionBody = {\n messages: ChatCompletionRequestMessage[];\n discussionId: string;\n};\nexport type AskDocQuestionResult =\n ResponseData<askDocQuestionUtil.AskDocQuestionResult>;\n\nexport const askDocQuestion = async (\n req: Request<undefined, undefined, AskDocQuestionBody>,\n res: ResponseWithSession<AskDocQuestionResult>,\n _next: NextFunction\n): Promise<void> => {\n const { messages = [], discussionId } = req.body;\n const { user, project, organization } = res.locals;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(res, {\n userOptions: {},\n defaultOptions: askDocQuestionUtil.aiDefaultOptions,\n accessType: ['public'],\n });\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n // 1. Prepare SSE headers and flush them NOW\n res.setHeader('Content-Type', 'text/event-stream; charset=utf-8');\n res.setHeader('Cache-Control', 'no-cache, no-transform');\n res.setHeader('Connection', 'keep-alive');\n res.setHeader('X-Accel-Buffering', 'no'); // disable nginx buffering\n res.flushHeaders?.();\n res.write(': connected\\n\\n'); // initial comment keeps some browsers happy\n res.flush?.();\n\n // 2. Kick off the upstream stream WITHOUT awaiting it\n askDocQuestionUtil\n .askDocQuestion(messages, aiConfig, {\n onMessage: (chunk) => {\n res.write(`data: ${JSON.stringify({ chunk })}\\n\\n`);\n res.flush?.();\n },\n })\n .then(async (fullResponse) => {\n const lastUserMessageContent = messages.findLast(\n (message) => message.role === 'user'\n )?.content;\n const lastUserMessageNbWords = lastUserMessageContent\n ? lastUserMessageContent.split(' ').length\n : 0;\n if (lastUserMessageNbWords > 2) {\n // If the last user message is less than 3 words, don't persist the discussion\n // Example: \"Hello\", \"Hi\", \"Hey\", \"test\", etc.\n\n // 3. Persist discussion while the client already has all chunks\n await DiscussionModel.findOneAndUpdate(\n { discussionId },\n {\n $set: {\n discussionId,\n userId: user?.id,\n projectId: project?.id,\n organizationId: organization?.id,\n messages: [\n ...messages.map((msg) => ({\n role: msg.role,\n content: msg.content,\n timestamp: msg.timestamp,\n })),\n {\n role: 'assistant',\n content: fullResponse.response,\n relatedFiles: fullResponse.relatedFiles,\n timestamp: new Date(),\n },\n ],\n },\n },\n { upsert: true, new: true }\n );\n }\n\n // 4. Tell the client we're done and close the stream\n res.write(\n `data: ${JSON.stringify({ done: true, response: fullResponse })}\\n\\n`\n );\n res.end();\n })\n .catch((err) => {\n // propagate error as an SSE event so the client knows why it closed\n res.write(\n `event: error\\ndata: ${JSON.stringify({ message: err.message })}\\n\\n`\n );\n res.end();\n });\n};\n\nexport type AutocompleteBody = {\n text: string;\n aiOptions?: AIOptions;\n contextBefore?: string;\n currentLine?: string;\n contextAfter?: string;\n};\n\nexport type AutocompleteResponse = ResponseData<{\n autocompletion: string;\n}>;\n\nexport const autocomplete = async (\n req: Request<AutocompleteBody>,\n res: ResponseWithSession<AutocompleteResponse>,\n _next: NextFunction\n): Promise<void> => {\n try {\n const { text, aiOptions, contextBefore, currentLine, contextAfter } =\n req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(res, {\n userOptions: aiOptions,\n defaultOptions: autocompleteUtil.aiDefaultOptions,\n accessType: ['public'],\n });\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n const response = (await autocompleteUtil.autocomplete({\n text,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n contextBefore,\n currentLine,\n contextAfter,\n })) ?? {\n autocompletion: '',\n tokenUsed: 0,\n };\n\n const responseData =\n formatResponse<autocompleteUtil.AutocompleteFileResultData>({\n data: response,\n });\n\n res.json(responseData);\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type GetDiscussionsParams =\n | ({\n page?: string | number;\n pageSize?: string | number;\n includeMessages?: 'true' | 'false';\n } & DiscussionFiltersParams)\n | undefined;\n\nexport type GetDiscussionsResult = PaginatedResponse<DiscussionAPI>;\n\n/**\n * Retrieves a list of discussions with filters and pagination.\n * Only the owner or admins can access. By default, users only see their own.\n */\nexport const getDiscussions = async (\n req: Request<GetDiscussionsParams>,\n res: ResponseWithSession<GetDiscussionsResult>,\n _next: NextFunction\n): Promise<void> => {\n const { user, roles } = res.locals;\n const { filters, sortOptions, pageSize, skip, page, getNumberOfPages } =\n getDiscussionFiltersAndPagination(req, res);\n const includeMessagesParam = (req.query as any)?.includeMessages as\n | 'true'\n | 'false'\n | undefined;\n const includeMessages = includeMessagesParam !== 'false';\n\n if (!user) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_NOT_DEFINED');\n return;\n }\n\n try {\n const projection = includeMessages ? {} : { messages: 0 };\n const discussions = await DiscussionModel.find(filters, projection)\n .sort(sortOptions)\n .skip(skip)\n .limit(pageSize)\n .lean();\n\n // Compute number of messages for each discussion\n const numberOfMessagesById: Record<string, number> = {};\n if (!includeMessages && discussions.length > 0) {\n const ids = discussions.map((d: any) => d._id);\n const counts = await DiscussionModel.aggregate([\n { $match: { _id: { $in: ids } } },\n {\n $project: {\n numberOfMessages: { $size: { $ifNull: ['$messages', []] } },\n },\n },\n ]);\n for (const c of counts as any[]) {\n numberOfMessagesById[String(c._id)] = c.numberOfMessages ?? 0;\n }\n }\n\n // Permission: allow admin, or the owner for all returned entries\n const allOwnedByUser = discussions.every(\n (d) => String(d.userId) === String(user.id)\n );\n const isAllowed = roles.includes('admin') || allOwnedByUser;\n\n if (!isAllowed) {\n ErrorHandler.handleGenericErrorResponse(res, 'PERMISSION_DENIED');\n return;\n }\n\n const totalItems = await DiscussionModel.countDocuments(filters);\n\n const responseData = formatPaginatedResponse({\n data: discussions.map((d: any) => ({\n ...d,\n id: String(d._id ?? d.id),\n numberOfMessages: includeMessages\n ? Array.isArray(d.messages)\n ? d.messages.length\n : 0\n : (numberOfMessagesById[String(d._id ?? d.id)] ?? 0),\n })),\n page,\n pageSize,\n totalPages: getNumberOfPages(totalItems),\n totalItems,\n });\n\n res.json(responseData as any);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ai.controller.cjs","names":["aiConfig: AIConfig","getAIConfig","formatResponse","tags: Tag[]","getTagsByKeys","dictionaries: Dictionary[]","getDictionariesByTags","DiscussionModel","getDiscussionFiltersAndPagination","numberOfMessagesById: Record<string, number>","formatPaginatedResponse"],"sources":["../../../src/controllers/ai.controller.ts"],"sourcesContent":["import type { KeyPath, Locale } from '@intlayer/types';\nimport type { ResponseWithSession } from '@middlewares/sessionAuth.middleware';\nimport { getDictionariesByTags } from '@services/dictionary.service';\nimport * as tagService from '@services/tag.service';\nimport { getTagsByKeys } from '@services/tag.service';\nimport {\n type AIConfig,\n type AIOptions,\n type ChatCompletionRequestMessage,\n getAIConfig,\n} from '@utils/AI/aiSdk';\nimport * as askDocQuestionUtil from '@utils/AI/askDocQuestion/askDocQuestion';\nimport * as auditContentDeclarationUtil from '@utils/AI/auditDictionary';\nimport * as auditContentDeclarationFieldUtil from '@utils/AI/auditDictionaryField';\nimport * as auditContentDeclarationMetadataUtil from '@utils/AI/auditDictionaryMetadata';\nimport * as auditTagUtil from '@utils/AI/auditTag';\nimport * as autocompleteUtil from '@utils/AI/autocomplete';\nimport * as customQueryUtil from '@utils/AI/customQuery';\nimport * as translateJSONUtil from '@utils/AI/translateJSON';\nimport { type AppError, ErrorHandler } from '@utils/errors';\nimport {\n type DiscussionFiltersParams,\n getDiscussionFiltersAndPagination,\n} from '@utils/filtersAndPagination/getDiscussionFiltersAndPagination';\nimport {\n formatPaginatedResponse,\n formatResponse,\n type PaginatedResponse,\n type ResponseData,\n} from '@utils/responseData';\nimport type { NextFunction, Request } from 'express';\nimport { DiscussionModel } from '@/models/discussion.model';\nimport type { Dictionary } from '@/types/dictionary.types';\nimport type { DiscussionAPI } from '@/types/discussion.types';\nimport type { Tag, TagAPI } from '@/types/tag.types';\n\ntype ReplaceAIConfigByOptions<T> = Omit<T, 'aiConfig'> & {\n aiOptions?: AIOptions;\n};\n\nexport type CustomQueryBody =\n ReplaceAIConfigByOptions<customQueryUtil.CustomQueryOptions> & {\n tagsKeys?: string[];\n applicationContext?: string;\n };\nexport type CustomQueryResult =\n ResponseData<customQueryUtil.CustomQueryResultData>;\n\nexport const customQuery = async (\n req: Request<CustomQueryBody>,\n res: ResponseWithSession<CustomQueryResult>,\n _next: NextFunction\n): Promise<void> => {\n // biome-ignore lint/correctness/noUnusedVariables: Just filter out tagsKeys\n const { aiOptions, tagsKeys, ...rest } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(res, {\n userOptions: aiOptions,\n defaultOptions: customQueryUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n });\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n const auditResponse = await customQueryUtil.customQuery({\n ...rest,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'QUERY_FAILED');\n return;\n }\n\n const responseData = formatResponse<customQueryUtil.CustomQueryResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type TranslateJSONBody = Omit<\n ReplaceAIConfigByOptions<translateJSONUtil.TranslateJSONOptions>,\n 'tags'\n> & {\n tagsKeys?: string[];\n};\nexport type TranslateJSONResult =\n ResponseData<translateJSONUtil.TranslateJSONResultData>;\n\nexport const translateJSON = async (\n req: Request<TranslateJSONBody>,\n res: ResponseWithSession<TranslateJSONResult>,\n _next: NextFunction\n): Promise<void> => {\n const { project } = res.locals;\n const { aiOptions, tagsKeys, ...rest } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(res, {\n userOptions: aiOptions,\n defaultOptions: translateJSONUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n });\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n let tags: Tag[] = [];\n\n if (project?.organizationId && tagsKeys) {\n tags = await getTagsByKeys(tagsKeys, project.organizationId);\n }\n\n const auditResponse = await translateJSONUtil.translateJSON({\n ...rest,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n tags,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData =\n formatResponse<translateJSONUtil.TranslateJSONResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AuditContentDeclarationBody = {\n aiOptions?: AIOptions;\n locales: Locale[];\n defaultLocale: Locale;\n fileContent: string;\n filePath?: string;\n tagsKeys?: string[];\n};\nexport type AuditContentDeclarationResult =\n ResponseData<auditContentDeclarationUtil.AuditFileResultData>;\n\n/**\n * Retrieves a list of dictionaries based on filters and pagination.\n */\nexport const auditContentDeclaration = async (\n req: Request<AuditContentDeclarationBody>,\n res: ResponseWithSession<AuditContentDeclarationResult>,\n _next: NextFunction\n): Promise<void> => {\n const { project } = res.locals;\n const { fileContent, filePath, aiOptions, locales, defaultLocale, tagsKeys } =\n req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(res, {\n userOptions: aiOptions,\n defaultOptions: auditContentDeclarationUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n });\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n let tags: Tag[] = [];\n\n if (project?.organizationId) {\n tags = await getTagsByKeys(tagsKeys, project.organizationId);\n }\n\n const auditResponse = await auditContentDeclarationUtil.auditDictionary({\n fileContent,\n filePath,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n locales,\n defaultLocale,\n tags,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData =\n formatResponse<auditContentDeclarationUtil.AuditFileResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AuditContentDeclarationFieldBody = {\n aiOptions?: AIOptions;\n locales: Locale[];\n fileContent: string;\n filePath?: string;\n tagsKeys?: string[];\n keyPath: KeyPath[];\n};\nexport type AuditContentDeclarationFieldResult =\n ResponseData<auditContentDeclarationFieldUtil.AuditDictionaryFieldResultData>;\n\n/**\n * Retrieves a list of dictionaries based on filters and pagination.\n */\nexport const auditContentDeclarationField = async (\n req: Request<AuditContentDeclarationFieldBody>,\n res: ResponseWithSession<AuditContentDeclarationFieldResult>,\n _next: NextFunction\n): Promise<void> => {\n const { project } = res.locals;\n const { fileContent, aiOptions, locales, tagsKeys, keyPath } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(res, {\n userOptions: aiOptions,\n defaultOptions: auditContentDeclarationFieldUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n });\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n let tags: Tag[] = [];\n\n if (project?.organizationId) {\n tags = await getTagsByKeys(tagsKeys, project.organizationId);\n }\n\n const auditResponse =\n await auditContentDeclarationFieldUtil.auditDictionaryField({\n fileContent,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n locales,\n tags,\n keyPath,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData =\n formatResponse<auditContentDeclarationFieldUtil.AuditDictionaryFieldResultData>(\n {\n data: auditResponse,\n }\n );\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AuditContentDeclarationMetadataBody = {\n aiOptions?: AIOptions;\n fileContent: string;\n};\n\nexport type AuditContentDeclarationMetadataResult =\n ResponseData<auditContentDeclarationMetadataUtil.AuditFileResultData>;\n\n/**\n * Retrieves a list of dictionaries based on filters and pagination.\n */\nexport const auditContentDeclarationMetadata = async (\n req: Request<AuditContentDeclarationMetadataBody>,\n res: ResponseWithSession<AuditContentDeclarationMetadataResult>,\n _next: NextFunction\n): Promise<void> => {\n const { organization } = res.locals;\n const { fileContent, aiOptions } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(res, {\n userOptions: aiOptions,\n defaultOptions: auditContentDeclarationMetadataUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n });\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n const tags: Tag[] = await tagService.findTags(\n {\n organizationId: organization?.id,\n },\n 0,\n 1000\n );\n\n const auditResponse =\n await auditContentDeclarationMetadataUtil.auditDictionaryMetadata({\n fileContent,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n tags,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData =\n formatResponse<auditContentDeclarationMetadataUtil.AuditFileResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AuditTagBody = {\n aiOptions?: AIOptions;\n tag: TagAPI;\n};\nexport type AuditTagResult = ResponseData<auditTagUtil.TranslateJSONResultData>;\n\n/**\n * Retrieves a list of dictionaries based on filters and pagination.\n */\nexport const auditTag = async (\n req: Request<undefined, undefined, AuditTagBody>,\n res: ResponseWithSession<AuditTagResult>,\n _next: NextFunction\n): Promise<void> => {\n const { project } = res.locals;\n const { aiOptions, tag } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(res, {\n userOptions: aiOptions,\n defaultOptions: auditTagUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n });\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n let dictionaries: Dictionary[] = [];\n if (project?.organizationId) {\n dictionaries = await getDictionariesByTags([tag.key], project.id);\n }\n\n const auditResponse = await auditTagUtil.auditTag({\n aiConfig,\n dictionaries,\n tag,\n applicationContext: aiOptions?.applicationContext,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData = formatResponse<auditTagUtil.TranslateJSONResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AskDocQuestionBody = {\n messages: ChatCompletionRequestMessage[];\n discussionId: string;\n};\nexport type AskDocQuestionResult =\n ResponseData<askDocQuestionUtil.AskDocQuestionResult>;\n\nexport const askDocQuestion = async (\n req: Request<undefined, undefined, AskDocQuestionBody>,\n res: ResponseWithSession<AskDocQuestionResult>,\n _next: NextFunction\n): Promise<void> => {\n const { messages = [], discussionId } = req.body;\n const { user, project, organization } = res.locals;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(res, {\n userOptions: {},\n defaultOptions: askDocQuestionUtil.aiDefaultOptions,\n accessType: ['public'],\n });\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n // 1. Prepare SSE headers and flush them NOW\n res.setHeader('Content-Type', 'text/event-stream; charset=utf-8');\n res.setHeader('Cache-Control', 'no-cache, no-transform');\n res.setHeader('Connection', 'keep-alive');\n res.setHeader('X-Accel-Buffering', 'no'); // disable nginx buffering\n res.flushHeaders?.();\n res.write(': connected\\n\\n'); // initial comment keeps some browsers happy\n res.flush?.();\n\n // 2. Kick off the upstream stream WITHOUT awaiting it\n askDocQuestionUtil\n .askDocQuestion(messages, aiConfig, {\n onMessage: (chunk) => {\n res.write(`data: ${JSON.stringify({ chunk })}\\n\\n`);\n res.flush?.();\n },\n })\n .then(async (fullResponse) => {\n const lastUserMessageContent = messages.findLast(\n (message) => message.role === 'user'\n )?.content;\n const lastUserMessageNbWords = lastUserMessageContent\n ? lastUserMessageContent.split(' ').length\n : 0;\n if (lastUserMessageNbWords > 2) {\n // If the last user message is less than 3 words, don't persist the discussion\n // Example: \"Hello\", \"Hi\", \"Hey\", \"test\", etc.\n\n // 3. Persist discussion while the client already has all chunks\n await DiscussionModel.findOneAndUpdate(\n { discussionId },\n {\n $set: {\n discussionId,\n userId: user?.id,\n projectId: project?.id,\n organizationId: organization?.id,\n messages: [\n ...messages.map((msg) => ({\n role: msg.role,\n content: msg.content,\n timestamp: msg.timestamp,\n })),\n {\n role: 'assistant',\n content: fullResponse.response,\n relatedFiles: fullResponse.relatedFiles,\n timestamp: new Date(),\n },\n ],\n },\n },\n { upsert: true, new: true }\n );\n }\n\n // 4. Tell the client we're done and close the stream\n res.write(\n `data: ${JSON.stringify({ done: true, response: fullResponse })}\\n\\n`\n );\n res.end();\n })\n .catch((err) => {\n // propagate error as an SSE event so the client knows why it closed\n res.write(\n `event: error\\ndata: ${JSON.stringify({ message: err.message })}\\n\\n`\n );\n res.end();\n });\n};\n\nexport type AutocompleteBody = {\n text: string;\n aiOptions?: AIOptions;\n contextBefore?: string;\n currentLine?: string;\n contextAfter?: string;\n};\n\nexport type AutocompleteResponse = ResponseData<{\n autocompletion: string;\n}>;\n\nexport const autocomplete = async (\n req: Request<AutocompleteBody>,\n res: ResponseWithSession<AutocompleteResponse>,\n _next: NextFunction\n): Promise<void> => {\n try {\n const { text, aiOptions, contextBefore, currentLine, contextAfter } =\n req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(res, {\n userOptions: aiOptions,\n defaultOptions: autocompleteUtil.aiDefaultOptions,\n accessType: ['public'],\n });\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n const response = (await autocompleteUtil.autocomplete({\n text,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n contextBefore,\n currentLine,\n contextAfter,\n })) ?? {\n autocompletion: '',\n tokenUsed: 0,\n };\n\n const responseData =\n formatResponse<autocompleteUtil.AutocompleteFileResultData>({\n data: response,\n });\n\n res.json(responseData);\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type GetDiscussionsParams =\n | ({\n page?: string | number;\n pageSize?: string | number;\n includeMessages?: 'true' | 'false';\n } & DiscussionFiltersParams)\n | undefined;\n\nexport type GetDiscussionsResult = PaginatedResponse<DiscussionAPI>;\n\n/**\n * Retrieves a list of discussions with filters and pagination.\n * Only the owner or admins can access. By default, users only see their own.\n */\nexport const getDiscussions = async (\n req: Request<GetDiscussionsParams>,\n res: ResponseWithSession<GetDiscussionsResult>,\n _next: NextFunction\n): Promise<void> => {\n const { user, roles } = res.locals;\n const { filters, sortOptions, pageSize, skip, page, getNumberOfPages } =\n getDiscussionFiltersAndPagination(req, res);\n const includeMessagesParam = (req.query as any)?.includeMessages as\n | 'true'\n | 'false'\n | undefined;\n const includeMessages = includeMessagesParam !== 'false';\n\n if (!user) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_NOT_DEFINED');\n return;\n }\n\n try {\n const projection = includeMessages ? {} : { messages: 0 };\n const discussions = await DiscussionModel.find(filters, projection)\n .sort(sortOptions)\n .skip(skip)\n .limit(pageSize)\n .lean();\n\n // Compute number of messages for each discussion\n const numberOfMessagesById: Record<string, number> = {};\n if (!includeMessages && discussions.length > 0) {\n const ids = discussions.map((d: any) => d._id);\n const counts = await DiscussionModel.aggregate([\n { $match: { _id: { $in: ids } } },\n {\n $project: {\n numberOfMessages: { $size: { $ifNull: ['$messages', []] } },\n },\n },\n ]);\n for (const c of counts as any[]) {\n numberOfMessagesById[String(c._id)] = c.numberOfMessages ?? 0;\n }\n }\n\n // Permission: allow admin, or the owner for all returned entries\n const allOwnedByUser = discussions.every(\n (d) => String(d.userId) === String(user.id)\n );\n const isAllowed = roles.includes('admin') || allOwnedByUser;\n\n if (!isAllowed) {\n ErrorHandler.handleGenericErrorResponse(res, 'PERMISSION_DENIED');\n return;\n }\n\n const totalItems = await DiscussionModel.countDocuments(filters);\n\n const responseData = formatPaginatedResponse({\n data: discussions.map((d: any) => ({\n ...d,\n id: String(d._id ?? d.id),\n numberOfMessages: includeMessages\n ? Array.isArray(d.messages)\n ? d.messages.length\n : 0\n : (numberOfMessagesById[String(d._id ?? d.id)] ?? 0),\n })),\n page,\n pageSize,\n totalPages: getNumberOfPages(totalItems),\n totalItems,\n });\n\n res.json(responseData as any);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n"],"mappings":"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"}
@@ -49,7 +49,7 @@ const dictionarySchema = new mongoose.Schema({
49
49
  virtuals: true,
50
50
  versionKey: false,
51
51
  transform(_doc, ret) {
52
- const { _id,...rest } = ret;
52
+ const { _id, ...rest } = ret;
53
53
  return {
54
54
  ...rest,
55
55
  id: _id.toString()
@@ -59,7 +59,7 @@ const dictionarySchema = new mongoose.Schema({
59
59
  toObject: {
60
60
  virtuals: true,
61
61
  transform(_doc, ret) {
62
- const { _id,...rest } = ret;
62
+ const { _id, ...rest } = ret;
63
63
  return {
64
64
  ...rest,
65
65
  id: _id
@@ -1 +1 @@
1
- {"version":3,"file":"dictionary.schema.cjs","names":["Schema"],"sources":["../../../src/schemas/dictionary.schema.ts"],"sourcesContent":["import { Schema } from 'mongoose';\nimport type {\n DictionarySchema,\n VersionedContentEl,\n} from '@/types/dictionary.types';\n\nconst versionedContentElSchema = new Schema<VersionedContentEl>(\n {\n name: {\n type: String,\n },\n description: {\n type: String,\n },\n content: {\n type: Schema.Types.Mixed,\n required: true,\n },\n },\n {\n timestamps: true,\n }\n);\n\nexport const dictionarySchema = new Schema<DictionarySchema>(\n {\n projectIds: {\n type: [Schema.Types.ObjectId],\n ref: 'Project',\n required: true,\n },\n key: {\n type: String,\n required: true,\n },\n title: {\n type: String,\n default: '',\n },\n description: {\n type: String,\n default: '',\n },\n tags: {\n type: [String],\n default: [],\n },\n content: {\n type: Map,\n of: versionedContentElSchema,\n required: true,\n default: null,\n },\n creatorId: {\n type: Schema.Types.ObjectId,\n ref: 'User',\n required: true,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n"],"mappings":";;;;AAMA,MAAM,2BAA2B,IAAIA,gBACnC;CACE,MAAM,EACJ,MAAM,QACP;CACD,aAAa,EACX,MAAM,QACP;CACD,SAAS;EACP,MAAMA,gBAAO,MAAM;EACnB,UAAU;EACX;CACF,EACD,EACE,YAAY,MACb,CACF;AAED,MAAa,mBAAmB,IAAIA,gBAClC;CACE,YAAY;EACV,MAAM,CAACA,gBAAO,MAAM,SAAS;EAC7B,KAAK;EACL,UAAU;EACX;CACD,KAAK;EACH,MAAM;EACN,UAAU;EACX;CACD,OAAO;EACL,MAAM;EACN,SAAS;EACV;CACD,aAAa;EACX,MAAM;EACN,SAAS;EACV;CACD,MAAM;EACJ,MAAM,CAAC,OAAO;EACd,SAAS,EAAE;EACZ;CACD,SAAS;EACP,MAAM;EACN,IAAI;EACJ,UAAU;EACV,SAAS;EACV;CACD,WAAW;EACT,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF"}
1
+ {"version":3,"file":"dictionary.schema.cjs","names":["Schema"],"sources":["../../../src/schemas/dictionary.schema.ts"],"sourcesContent":["import { Schema } from 'mongoose';\nimport type {\n DictionarySchema,\n VersionedContentEl,\n} from '@/types/dictionary.types';\n\nconst versionedContentElSchema = new Schema<VersionedContentEl>(\n {\n name: {\n type: String,\n },\n description: {\n type: String,\n },\n content: {\n type: Schema.Types.Mixed,\n required: true,\n },\n },\n {\n timestamps: true,\n }\n);\n\nexport const dictionarySchema = new Schema<DictionarySchema>(\n {\n projectIds: {\n type: [Schema.Types.ObjectId],\n ref: 'Project',\n required: true,\n },\n key: {\n type: String,\n required: true,\n },\n title: {\n type: String,\n default: '',\n },\n description: {\n type: String,\n default: '',\n },\n tags: {\n type: [String],\n default: [],\n },\n content: {\n type: Map,\n of: versionedContentElSchema,\n required: true,\n default: null,\n },\n creatorId: {\n type: Schema.Types.ObjectId,\n ref: 'User',\n required: true,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n"],"mappings":";;;;AAMA,MAAM,2BAA2B,IAAIA,gBACnC;CACE,MAAM,EACJ,MAAM,QACP;CACD,aAAa,EACX,MAAM,QACP;CACD,SAAS;EACP,MAAMA,gBAAO,MAAM;EACnB,UAAU;EACX;CACF,EACD,EACE,YAAY,MACb,CACF;AAED,MAAa,mBAAmB,IAAIA,gBAClC;CACE,YAAY;EACV,MAAM,CAACA,gBAAO,MAAM,SAAS;EAC7B,KAAK;EACL,UAAU;EACX;CACD,KAAK;EACH,MAAM;EACN,UAAU;EACX;CACD,OAAO;EACL,MAAM;EACN,SAAS;EACV;CACD,aAAa;EACX,MAAM;EACN,SAAS;EACV;CACD,MAAM;EACJ,MAAM,CAAC,OAAO;EACd,SAAS,EAAE;EACZ;CACD,SAAS;EACP,MAAM;EACN,IAAI;EACJ,UAAU;EACV,SAAS;EACV;CACD,WAAW;EACT,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF"}
@@ -57,7 +57,7 @@ const discussionSchema = new mongoose.Schema({
57
57
  virtuals: true,
58
58
  versionKey: false,
59
59
  transform(_doc, ret) {
60
- const { _id,...rest } = ret;
60
+ const { _id, ...rest } = ret;
61
61
  return {
62
62
  ...rest,
63
63
  id: _id.toString()
@@ -67,7 +67,7 @@ const discussionSchema = new mongoose.Schema({
67
67
  toObject: {
68
68
  virtuals: true,
69
69
  transform(_doc, ret) {
70
- const { _id,...rest } = ret;
70
+ const { _id, ...rest } = ret;
71
71
  return {
72
72
  ...rest,
73
73
  id: _id
@@ -1 +1 @@
1
- {"version":3,"file":"discussion.schema.cjs","names":["Schema"],"sources":["../../../src/schemas/discussion.schema.ts"],"sourcesContent":["import { Schema } from 'mongoose';\nimport type { DiscussionSchema } from '@/types/discussion.types';\n\nexport const discussionSchema = new Schema<DiscussionSchema>(\n {\n discussionId: {\n type: String,\n required: true,\n unique: true,\n },\n messages: [\n {\n role: {\n type: String,\n required: true,\n enum: ['user', 'assistant', 'system'],\n },\n content: {\n type: String,\n required: true,\n },\n timestamp: {\n type: Date,\n default: Date.now,\n },\n relatedFiles: {\n type: [String],\n },\n },\n ],\n userId: {\n type: Schema.Types.ObjectId,\n ref: 'user',\n required: true,\n },\n projectId: {\n type: Schema.Types.ObjectId,\n ref: 'project',\n required: true,\n },\n organizationId: {\n type: Schema.Types.ObjectId,\n ref: 'organization',\n required: true,\n },\n title: {\n type: String,\n required: false,\n },\n isArchived: {\n type: Boolean,\n default: false,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n"],"mappings":";;;;AAGA,MAAa,mBAAmB,IAAIA,gBAClC;CACE,cAAc;EACZ,MAAM;EACN,UAAU;EACV,QAAQ;EACT;CACD,UAAU,CACR;EACE,MAAM;GACJ,MAAM;GACN,UAAU;GACV,MAAM;IAAC;IAAQ;IAAa;IAAS;GACtC;EACD,SAAS;GACP,MAAM;GACN,UAAU;GACX;EACD,WAAW;GACT,MAAM;GACN,SAAS,KAAK;GACf;EACD,cAAc,EACZ,MAAM,CAAC,OAAO,EACf;EACF,CACF;CACD,QAAQ;EACN,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,WAAW;EACT,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,gBAAgB;EACd,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,OAAO;EACL,MAAM;EACN,UAAU;EACX;CACD,YAAY;EACV,MAAM;EACN,SAAS;EACV;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF"}
1
+ {"version":3,"file":"discussion.schema.cjs","names":["Schema"],"sources":["../../../src/schemas/discussion.schema.ts"],"sourcesContent":["import { Schema } from 'mongoose';\nimport type { DiscussionSchema } from '@/types/discussion.types';\n\nexport const discussionSchema = new Schema<DiscussionSchema>(\n {\n discussionId: {\n type: String,\n required: true,\n unique: true,\n },\n messages: [\n {\n role: {\n type: String,\n required: true,\n enum: ['user', 'assistant', 'system'],\n },\n content: {\n type: String,\n required: true,\n },\n timestamp: {\n type: Date,\n default: Date.now,\n },\n relatedFiles: {\n type: [String],\n },\n },\n ],\n userId: {\n type: Schema.Types.ObjectId,\n ref: 'user',\n required: true,\n },\n projectId: {\n type: Schema.Types.ObjectId,\n ref: 'project',\n required: true,\n },\n organizationId: {\n type: Schema.Types.ObjectId,\n ref: 'organization',\n required: true,\n },\n title: {\n type: String,\n required: false,\n },\n isArchived: {\n type: Boolean,\n default: false,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n"],"mappings":";;;;AAGA,MAAa,mBAAmB,IAAIA,gBAClC;CACE,cAAc;EACZ,MAAM;EACN,UAAU;EACV,QAAQ;EACT;CACD,UAAU,CACR;EACE,MAAM;GACJ,MAAM;GACN,UAAU;GACV,MAAM;IAAC;IAAQ;IAAa;IAAS;GACtC;EACD,SAAS;GACP,MAAM;GACN,UAAU;GACX;EACD,WAAW;GACT,MAAM;GACN,SAAS,KAAK;GACf;EACD,cAAc,EACZ,MAAM,CAAC,OAAO,EACf;EACF,CACF;CACD,QAAQ;EACN,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,WAAW;EACT,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,gBAAgB;EACd,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,OAAO;EACL,MAAM;EACN,UAAU;EACX;CACD,YAAY;EACV,MAAM;EACN,SAAS;EACV;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF"}
@@ -24,7 +24,7 @@ const accessTokenSchema = new mongoose.Schema({
24
24
  virtuals: true,
25
25
  versionKey: false,
26
26
  transform(_doc, ret) {
27
- const { _id,...rest } = ret;
27
+ const { _id, ...rest } = ret;
28
28
  return {
29
29
  ...rest,
30
30
  id: _id.toString()
@@ -34,7 +34,7 @@ const accessTokenSchema = new mongoose.Schema({
34
34
  toObject: {
35
35
  virtuals: true,
36
36
  transform(_doc, ret) {
37
- const { _id,...rest } = ret;
37
+ const { _id, ...rest } = ret;
38
38
  return {
39
39
  ...rest,
40
40
  id: _id
@@ -1 +1 @@
1
- {"version":3,"file":"oAuth2.schema.cjs","names":["Schema"],"sources":["../../../src/schemas/oAuth2.schema.ts"],"sourcesContent":["import { Schema } from 'mongoose';\nimport type { Client, Token as TokenType } from 'oauth2-server';\nimport type { User } from '@/types/user.types';\n\nexport type Token = Omit<TokenType, 'client' | 'user'> & {\n clientId: Client['id'];\n userId: User['id'];\n};\n\nexport const accessTokenSchema = new Schema<Token>(\n {\n accessToken: {\n type: String,\n required: true,\n },\n accessTokenExpiresAt: {\n type: Date,\n },\n clientId: {\n type: String,\n ref: 'Project',\n required: true,\n },\n userId: {\n type: Schema.Types.ObjectId,\n ref: 'User',\n required: true,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n\naccessTokenSchema.index(\n { createdAt: 1 },\n {\n expireAfterSeconds: 60 * 60 * 24 * 10, // 10 Days\n }\n);\n"],"mappings":";;;;AASA,MAAa,oBAAoB,IAAIA,gBACnC;CACE,aAAa;EACX,MAAM;EACN,UAAU;EACX;CACD,sBAAsB,EACpB,MAAM,MACP;CACD,UAAU;EACR,MAAM;EACN,KAAK;EACL,UAAU;EACX;CACD,QAAQ;EACN,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF;AAED,kBAAkB,MAChB,EAAE,WAAW,GAAG,EAChB,EACE,oBAAoB,OAAU,KAAK,IACpC,CACF"}
1
+ {"version":3,"file":"oAuth2.schema.cjs","names":["Schema"],"sources":["../../../src/schemas/oAuth2.schema.ts"],"sourcesContent":["import { Schema } from 'mongoose';\nimport type { Client, Token as TokenType } from 'oauth2-server';\nimport type { User } from '@/types/user.types';\n\nexport type Token = Omit<TokenType, 'client' | 'user'> & {\n clientId: Client['id'];\n userId: User['id'];\n};\n\nexport const accessTokenSchema = new Schema<Token>(\n {\n accessToken: {\n type: String,\n required: true,\n },\n accessTokenExpiresAt: {\n type: Date,\n },\n clientId: {\n type: String,\n ref: 'Project',\n required: true,\n },\n userId: {\n type: Schema.Types.ObjectId,\n ref: 'User',\n required: true,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n\naccessTokenSchema.index(\n { createdAt: 1 },\n {\n expireAfterSeconds: 60 * 60 * 24 * 10, // 10 Days\n }\n);\n"],"mappings":";;;;AASA,MAAa,oBAAoB,IAAIA,gBACnC;CACE,aAAa;EACX,MAAM;EACN,UAAU;EACX;CACD,sBAAsB,EACpB,MAAM,MACP;CACD,UAAU;EACR,MAAM;EACN,KAAK;EACL,UAAU;EACX;CACD,QAAQ;EACN,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF;AAED,kBAAkB,MAChB,EAAE,WAAW,GAAG,EAChB,EACE,oBAAoB,OAAU,KAAK,IACpC,CACF"}
@@ -35,7 +35,7 @@ const organizationSchema = new mongoose.Schema({
35
35
  virtuals: true,
36
36
  versionKey: false,
37
37
  transform(_doc, ret) {
38
- const { _id,...rest } = ret;
38
+ const { _id, ...rest } = ret;
39
39
  return {
40
40
  ...rest,
41
41
  id: _id.toString()
@@ -45,7 +45,7 @@ const organizationSchema = new mongoose.Schema({
45
45
  toObject: {
46
46
  virtuals: true,
47
47
  transform(_doc, ret) {
48
- const { _id,...rest } = ret;
48
+ const { _id, ...rest } = ret;
49
49
  return {
50
50
  ...rest,
51
51
  id: _id
@@ -1 +1 @@
1
- {"version":3,"file":"organization.schema.cjs","names":["Schema","NAME_MIN_LENGTH","NAME_MAX_LENGTH","MEMBERS_MIN_LENGTH","planSchema"],"sources":["../../../src/schemas/organization.schema.ts"],"sourcesContent":["import {\n MEMBERS_MIN_LENGTH,\n NAME_MAX_LENGTH,\n NAME_MIN_LENGTH,\n} from '@utils/validation/validateOrganization';\nimport { Schema } from 'mongoose';\nimport type { OrganizationSchema } from '@/types/organization.types';\nimport { planSchema } from './plans.schema';\n\nexport const organizationSchema = new Schema<OrganizationSchema>(\n {\n name: {\n type: String,\n required: true,\n minlength: NAME_MIN_LENGTH,\n maxlength: NAME_MAX_LENGTH,\n },\n membersIds: {\n type: [Schema.Types.ObjectId],\n ref: 'User',\n required: true,\n minlength: MEMBERS_MIN_LENGTH,\n },\n adminsIds: {\n type: [Schema.Types.ObjectId],\n ref: 'User',\n required: true,\n minlength: MEMBERS_MIN_LENGTH,\n },\n creatorId: {\n type: Schema.Types.ObjectId,\n ref: 'User',\n required: true,\n },\n plan: {\n type: planSchema,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n\n// Add virtual field for id\norganizationSchema.virtual('id').get(function () {\n return this._id.toString();\n});\n"],"mappings":";;;;;;AASA,MAAa,qBAAqB,IAAIA,gBACpC;CACE,MAAM;EACJ,MAAM;EACN,UAAU;EACV,WAAWC;EACX,WAAWC;EACZ;CACD,YAAY;EACV,MAAM,CAACF,gBAAO,MAAM,SAAS;EAC7B,KAAK;EACL,UAAU;EACV,WAAWG;EACZ;CACD,WAAW;EACT,MAAM,CAACH,gBAAO,MAAM,SAAS;EAC7B,KAAK;EACL,UAAU;EACV,WAAWG;EACZ;CACD,WAAW;EACT,MAAMH,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,MAAM,EACJ,MAAMI,yCACP;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF;AAGD,mBAAmB,QAAQ,KAAK,CAAC,IAAI,WAAY;AAC/C,QAAO,KAAK,IAAI,UAAU;EAC1B"}
1
+ {"version":3,"file":"organization.schema.cjs","names":["Schema","NAME_MIN_LENGTH","NAME_MAX_LENGTH","MEMBERS_MIN_LENGTH","planSchema"],"sources":["../../../src/schemas/organization.schema.ts"],"sourcesContent":["import {\n MEMBERS_MIN_LENGTH,\n NAME_MAX_LENGTH,\n NAME_MIN_LENGTH,\n} from '@utils/validation/validateOrganization';\nimport { Schema } from 'mongoose';\nimport type { OrganizationSchema } from '@/types/organization.types';\nimport { planSchema } from './plans.schema';\n\nexport const organizationSchema = new Schema<OrganizationSchema>(\n {\n name: {\n type: String,\n required: true,\n minlength: NAME_MIN_LENGTH,\n maxlength: NAME_MAX_LENGTH,\n },\n membersIds: {\n type: [Schema.Types.ObjectId],\n ref: 'User',\n required: true,\n minlength: MEMBERS_MIN_LENGTH,\n },\n adminsIds: {\n type: [Schema.Types.ObjectId],\n ref: 'User',\n required: true,\n minlength: MEMBERS_MIN_LENGTH,\n },\n creatorId: {\n type: Schema.Types.ObjectId,\n ref: 'User',\n required: true,\n },\n plan: {\n type: planSchema,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n\n// Add virtual field for id\norganizationSchema.virtual('id').get(function () {\n return this._id.toString();\n});\n"],"mappings":";;;;;;AASA,MAAa,qBAAqB,IAAIA,gBACpC;CACE,MAAM;EACJ,MAAM;EACN,UAAU;EACV,WAAWC;EACX,WAAWC;EACZ;CACD,YAAY;EACV,MAAM,CAACF,gBAAO,MAAM,SAAS;EAC7B,KAAK;EACL,UAAU;EACV,WAAWG;EACZ;CACD,WAAW;EACT,MAAM,CAACH,gBAAO,MAAM,SAAS;EAC7B,KAAK;EACL,UAAU;EACV,WAAWG;EACZ;CACD,WAAW;EACT,MAAMH,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,MAAM,EACJ,MAAMI,yCACP;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF;AAGD,mBAAmB,QAAQ,KAAK,CAAC,IAAI,WAAY;AAC/C,QAAO,KAAK,IAAI,UAAU;EAC1B"}
@@ -51,7 +51,7 @@ const planSchema = new mongoose.Schema({
51
51
  virtuals: true,
52
52
  versionKey: false,
53
53
  transform(_doc, ret) {
54
- const { _id,...rest } = ret;
54
+ const { _id, ...rest } = ret;
55
55
  return {
56
56
  ...rest,
57
57
  id: _id.toString()
@@ -61,7 +61,7 @@ const planSchema = new mongoose.Schema({
61
61
  toObject: {
62
62
  virtuals: true,
63
63
  transform(_doc, ret) {
64
- const { _id,...rest } = ret;
64
+ const { _id, ...rest } = ret;
65
65
  return {
66
66
  ...rest,
67
67
  id: _id
@@ -1 +1 @@
1
- {"version":3,"file":"plans.schema.cjs","names":["Schema"],"sources":["../../../src/schemas/plans.schema.ts"],"sourcesContent":["import { Schema } from 'mongoose';\nimport type { PlanSchema } from '@/types/plan.types';\n\nexport const planSchema = new Schema<PlanSchema>(\n {\n type: {\n type: String,\n required: true,\n enum: ['PREMIUM', 'ENTERPRISE'],\n },\n period: {\n type: String,\n required: true,\n enum: ['MONTHLY', 'YEARLY'],\n default: 'MONTHLY',\n },\n creatorId: {\n type: Schema.Types.ObjectId,\n ref: 'User',\n required: true,\n },\n subscriptionId: {\n type: String,\n required: true,\n },\n customerId: {\n type: String,\n required: true,\n },\n priceId: {\n type: String,\n required: true,\n },\n status: {\n type: String,\n required: true,\n enum: [\n 'active',\n 'canceled',\n 'past_due',\n 'unpaid',\n 'incomplete',\n 'incomplete_expired',\n 'paused',\n 'trialing',\n ],\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n"],"mappings":";;;;AAGA,MAAa,aAAa,IAAIA,gBAC5B;CACE,MAAM;EACJ,MAAM;EACN,UAAU;EACV,MAAM,CAAC,WAAW,aAAa;EAChC;CACD,QAAQ;EACN,MAAM;EACN,UAAU;EACV,MAAM,CAAC,WAAW,SAAS;EAC3B,SAAS;EACV;CACD,WAAW;EACT,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,gBAAgB;EACd,MAAM;EACN,UAAU;EACX;CACD,YAAY;EACV,MAAM;EACN,UAAU;EACX;CACD,SAAS;EACP,MAAM;EACN,UAAU;EACX;CACD,QAAQ;EACN,MAAM;EACN,UAAU;EACV,MAAM;GACJ;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD;EACF;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF"}
1
+ {"version":3,"file":"plans.schema.cjs","names":["Schema"],"sources":["../../../src/schemas/plans.schema.ts"],"sourcesContent":["import { Schema } from 'mongoose';\nimport type { PlanSchema } from '@/types/plan.types';\n\nexport const planSchema = new Schema<PlanSchema>(\n {\n type: {\n type: String,\n required: true,\n enum: ['PREMIUM', 'ENTERPRISE'],\n },\n period: {\n type: String,\n required: true,\n enum: ['MONTHLY', 'YEARLY'],\n default: 'MONTHLY',\n },\n creatorId: {\n type: Schema.Types.ObjectId,\n ref: 'User',\n required: true,\n },\n subscriptionId: {\n type: String,\n required: true,\n },\n customerId: {\n type: String,\n required: true,\n },\n priceId: {\n type: String,\n required: true,\n },\n status: {\n type: String,\n required: true,\n enum: [\n 'active',\n 'canceled',\n 'past_due',\n 'unpaid',\n 'incomplete',\n 'incomplete_expired',\n 'paused',\n 'trialing',\n ],\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n"],"mappings":";;;;AAGA,MAAa,aAAa,IAAIA,gBAC5B;CACE,MAAM;EACJ,MAAM;EACN,UAAU;EACV,MAAM,CAAC,WAAW,aAAa;EAChC;CACD,QAAQ;EACN,MAAM;EACN,UAAU;EACV,MAAM,CAAC,WAAW,SAAS;EAC3B,SAAS;EACV;CACD,WAAW;EACT,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,gBAAgB;EACd,MAAM;EACN,UAAU;EACX;CACD,YAAY;EACV,MAAM;EACN,UAAU;EACX;CACD,SAAS;EACP,MAAM;EACN,UAAU;EACX;CACD,QAAQ;EACN,MAAM;EACN,UAAU;EACV,MAAM;GACJ;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD;EACF;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF"}
@@ -88,7 +88,7 @@ const projectSchema = new mongoose.Schema({
88
88
  virtuals: true,
89
89
  versionKey: false,
90
90
  transform(_doc, ret) {
91
- const { _id,...rest } = ret;
91
+ const { _id, ...rest } = ret;
92
92
  return {
93
93
  ...rest,
94
94
  id: _id.toString()
@@ -98,7 +98,7 @@ const projectSchema = new mongoose.Schema({
98
98
  toObject: {
99
99
  virtuals: true,
100
100
  transform(_doc, ret) {
101
- const { _id,...rest } = ret;
101
+ const { _id, ...rest } = ret;
102
102
  return {
103
103
  ...rest,
104
104
  id: _id
@@ -1 +1 @@
1
- {"version":3,"file":"project.schema.cjs","names":["Schema","Locales","NAME_MIN_LENGTH","NAME_MAX_LENGTH","MEMBERS_MIN_LENGTH"],"sources":["../../../src/schemas/project.schema.ts"],"sourcesContent":["import { Locales } from '@intlayer/types';\nimport type { RenameId } from '@utils/mongoDB/types';\nimport {\n MEMBERS_MIN_LENGTH,\n NAME_MAX_LENGTH,\n NAME_MIN_LENGTH,\n} from '@utils/validation/validateProject';\nimport { Schema } from 'mongoose';\nimport type {\n OAuth2Access,\n Project,\n ProjectSchema,\n} from '@/types/project.types';\n\n// Define the oAuth2Access subdocument schema with timestamps\nconst oAuth2AccessSchema = new Schema<RenameId<OAuth2Access>>(\n {\n clientId: { type: String, required: true },\n clientSecret: { type: String, required: true },\n userId: { type: Schema.Types.ObjectId, ref: 'User', required: true },\n name: { type: String, required: true },\n expiresAt: { type: Date },\n accessToken: { type: [String], required: true, default: [] },\n grants: { type: [String], required: true, default: [] },\n },\n {\n timestamps: true,\n }\n);\n\nconst projectConfigSchema = new Schema<Project['configuration']>(\n {\n internationalization: {\n locales: {\n type: [String],\n enum: Object.values(Locales.ALL_LOCALES),\n required: true,\n },\n defaultLocale: {\n type: String,\n enum: Object.values(Locales.ALL_LOCALES),\n },\n },\n editor: {\n applicationURL: {\n type: String,\n },\n cmsURL: {\n type: String,\n },\n },\n },\n {\n _id: false, // Prevents the generation of an _id field for this subdocument\n }\n);\n\nexport const projectSchema = new Schema<ProjectSchema>(\n {\n organizationId: {\n type: Schema.Types.ObjectId,\n ref: 'Organization',\n required: true,\n },\n name: {\n type: String,\n required: true,\n minlength: NAME_MIN_LENGTH,\n maxlength: NAME_MAX_LENGTH,\n },\n configuration: projectConfigSchema,\n oAuth2Access: [oAuth2AccessSchema],\n membersIds: {\n type: [Schema.Types.ObjectId],\n ref: 'User',\n required: true,\n minlength: MEMBERS_MIN_LENGTH,\n },\n adminsIds: {\n type: [Schema.Types.ObjectId],\n ref: 'User',\n required: true,\n minlength: MEMBERS_MIN_LENGTH,\n },\n creatorId: {\n type: Schema.Types.ObjectId,\n ref: 'User',\n required: true,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n"],"mappings":";;;;;;AAeA,MAAM,qBAAqB,IAAIA,gBAC7B;CACE,UAAU;EAAE,MAAM;EAAQ,UAAU;EAAM;CAC1C,cAAc;EAAE,MAAM;EAAQ,UAAU;EAAM;CAC9C,QAAQ;EAAE,MAAMA,gBAAO,MAAM;EAAU,KAAK;EAAQ,UAAU;EAAM;CACpE,MAAM;EAAE,MAAM;EAAQ,UAAU;EAAM;CACtC,WAAW,EAAE,MAAM,MAAM;CACzB,aAAa;EAAE,MAAM,CAAC,OAAO;EAAE,UAAU;EAAM,SAAS,EAAE;EAAE;CAC5D,QAAQ;EAAE,MAAM,CAAC,OAAO;EAAE,UAAU;EAAM,SAAS,EAAE;EAAE;CACxD,EACD,EACE,YAAY,MACb,CACF;AAED,MAAM,sBAAsB,IAAIA,gBAC9B;CACE,sBAAsB;EACpB,SAAS;GACP,MAAM,CAAC,OAAO;GACd,MAAM,OAAO,OAAOC,yBAAQ,YAAY;GACxC,UAAU;GACX;EACD,eAAe;GACb,MAAM;GACN,MAAM,OAAO,OAAOA,yBAAQ,YAAY;GACzC;EACF;CACD,QAAQ;EACN,gBAAgB,EACd,MAAM,QACP;EACD,QAAQ,EACN,MAAM,QACP;EACF;CACF,EACD,EACE,KAAK,OACN,CACF;AAED,MAAa,gBAAgB,IAAID,gBAC/B;CACE,gBAAgB;EACd,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,MAAM;EACJ,MAAM;EACN,UAAU;EACV,WAAWE;EACX,WAAWC;EACZ;CACD,eAAe;CACf,cAAc,CAAC,mBAAmB;CAClC,YAAY;EACV,MAAM,CAACH,gBAAO,MAAM,SAAS;EAC7B,KAAK;EACL,UAAU;EACV,WAAWI;EACZ;CACD,WAAW;EACT,MAAM,CAACJ,gBAAO,MAAM,SAAS;EAC7B,KAAK;EACL,UAAU;EACV,WAAWI;EACZ;CACD,WAAW;EACT,MAAMJ,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF"}
1
+ {"version":3,"file":"project.schema.cjs","names":["Schema","Locales","NAME_MIN_LENGTH","NAME_MAX_LENGTH","MEMBERS_MIN_LENGTH"],"sources":["../../../src/schemas/project.schema.ts"],"sourcesContent":["import { Locales } from '@intlayer/types';\nimport type { RenameId } from '@utils/mongoDB/types';\nimport {\n MEMBERS_MIN_LENGTH,\n NAME_MAX_LENGTH,\n NAME_MIN_LENGTH,\n} from '@utils/validation/validateProject';\nimport { Schema } from 'mongoose';\nimport type {\n OAuth2Access,\n Project,\n ProjectSchema,\n} from '@/types/project.types';\n\n// Define the oAuth2Access subdocument schema with timestamps\nconst oAuth2AccessSchema = new Schema<RenameId<OAuth2Access>>(\n {\n clientId: { type: String, required: true },\n clientSecret: { type: String, required: true },\n userId: { type: Schema.Types.ObjectId, ref: 'User', required: true },\n name: { type: String, required: true },\n expiresAt: { type: Date },\n accessToken: { type: [String], required: true, default: [] },\n grants: { type: [String], required: true, default: [] },\n },\n {\n timestamps: true,\n }\n);\n\nconst projectConfigSchema = new Schema<Project['configuration']>(\n {\n internationalization: {\n locales: {\n type: [String],\n enum: Object.values(Locales.ALL_LOCALES),\n required: true,\n },\n defaultLocale: {\n type: String,\n enum: Object.values(Locales.ALL_LOCALES),\n },\n },\n editor: {\n applicationURL: {\n type: String,\n },\n cmsURL: {\n type: String,\n },\n },\n },\n {\n _id: false, // Prevents the generation of an _id field for this subdocument\n }\n);\n\nexport const projectSchema = new Schema<ProjectSchema>(\n {\n organizationId: {\n type: Schema.Types.ObjectId,\n ref: 'Organization',\n required: true,\n },\n name: {\n type: String,\n required: true,\n minlength: NAME_MIN_LENGTH,\n maxlength: NAME_MAX_LENGTH,\n },\n configuration: projectConfigSchema,\n oAuth2Access: [oAuth2AccessSchema],\n membersIds: {\n type: [Schema.Types.ObjectId],\n ref: 'User',\n required: true,\n minlength: MEMBERS_MIN_LENGTH,\n },\n adminsIds: {\n type: [Schema.Types.ObjectId],\n ref: 'User',\n required: true,\n minlength: MEMBERS_MIN_LENGTH,\n },\n creatorId: {\n type: Schema.Types.ObjectId,\n ref: 'User',\n required: true,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n"],"mappings":";;;;;;AAeA,MAAM,qBAAqB,IAAIA,gBAC7B;CACE,UAAU;EAAE,MAAM;EAAQ,UAAU;EAAM;CAC1C,cAAc;EAAE,MAAM;EAAQ,UAAU;EAAM;CAC9C,QAAQ;EAAE,MAAMA,gBAAO,MAAM;EAAU,KAAK;EAAQ,UAAU;EAAM;CACpE,MAAM;EAAE,MAAM;EAAQ,UAAU;EAAM;CACtC,WAAW,EAAE,MAAM,MAAM;CACzB,aAAa;EAAE,MAAM,CAAC,OAAO;EAAE,UAAU;EAAM,SAAS,EAAE;EAAE;CAC5D,QAAQ;EAAE,MAAM,CAAC,OAAO;EAAE,UAAU;EAAM,SAAS,EAAE;EAAE;CACxD,EACD,EACE,YAAY,MACb,CACF;AAED,MAAM,sBAAsB,IAAIA,gBAC9B;CACE,sBAAsB;EACpB,SAAS;GACP,MAAM,CAAC,OAAO;GACd,MAAM,OAAO,OAAOC,yBAAQ,YAAY;GACxC,UAAU;GACX;EACD,eAAe;GACb,MAAM;GACN,MAAM,OAAO,OAAOA,yBAAQ,YAAY;GACzC;EACF;CACD,QAAQ;EACN,gBAAgB,EACd,MAAM,QACP;EACD,QAAQ,EACN,MAAM,QACP;EACF;CACF,EACD,EACE,KAAK,OACN,CACF;AAED,MAAa,gBAAgB,IAAID,gBAC/B;CACE,gBAAgB;EACd,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,MAAM;EACJ,MAAM;EACN,UAAU;EACV,WAAWE;EACX,WAAWC;EACZ;CACD,eAAe;CACf,cAAc,CAAC,mBAAmB;CAClC,YAAY;EACV,MAAM,CAACH,gBAAO,MAAM,SAAS;EAC7B,KAAK;EACL,UAAU;EACV,WAAWI;EACZ;CACD,WAAW;EACT,MAAM,CAACJ,gBAAO,MAAM,SAAS;EAC7B,KAAK;EACL,UAAU;EACV,WAAWI;EACZ;CACD,WAAW;EACT,MAAMJ,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF"}
@@ -19,7 +19,7 @@ const sessionSchema = new mongoose.Schema({
19
19
  virtuals: true,
20
20
  versionKey: false,
21
21
  transform(_doc, ret) {
22
- const { _id,...rest } = ret;
22
+ const { _id, ...rest } = ret;
23
23
  return {
24
24
  ...rest,
25
25
  id: _id.toString()
@@ -29,7 +29,7 @@ const sessionSchema = new mongoose.Schema({
29
29
  toObject: {
30
30
  virtuals: true,
31
31
  transform(_doc, ret) {
32
- const { _id,...rest } = ret;
32
+ const { _id, ...rest } = ret;
33
33
  return {
34
34
  ...rest,
35
35
  id: _id
@@ -1 +1 @@
1
- {"version":3,"file":"session.schema.cjs","names":["Schema"],"sources":["../../../src/schemas/session.schema.ts"],"sourcesContent":["import { Schema } from 'mongoose';\nimport type { SessionSchema } from '@/types/session.types';\n\nexport const sessionSchema = new Schema<SessionSchema>(\n {\n activeOrganizationId: {\n type: Schema.Types.ObjectId,\n ref: 'Organization',\n required: false,\n },\n activeProjectId: {\n type: Schema.Types.ObjectId,\n ref: 'Project',\n required: false,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n"],"mappings":";;;;AAGA,MAAa,gBAAgB,IAAIA,gBAC/B;CACE,sBAAsB;EACpB,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,iBAAiB;EACf,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF"}
1
+ {"version":3,"file":"session.schema.cjs","names":["Schema"],"sources":["../../../src/schemas/session.schema.ts"],"sourcesContent":["import { Schema } from 'mongoose';\nimport type { SessionSchema } from '@/types/session.types';\n\nexport const sessionSchema = new Schema<SessionSchema>(\n {\n activeOrganizationId: {\n type: Schema.Types.ObjectId,\n ref: 'Organization',\n required: false,\n },\n activeProjectId: {\n type: Schema.Types.ObjectId,\n ref: 'Project',\n required: false,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n"],"mappings":";;;;AAGA,MAAa,gBAAgB,IAAIA,gBAC/B;CACE,sBAAsB;EACpB,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,iBAAiB;EACf,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF"}
@@ -38,7 +38,7 @@ const tagSchema = new mongoose.Schema({
38
38
  virtuals: true,
39
39
  versionKey: false,
40
40
  transform(_doc, ret) {
41
- const { _id,...rest } = ret;
41
+ const { _id, ...rest } = ret;
42
42
  return {
43
43
  ...rest,
44
44
  id: _id.toString()
@@ -48,7 +48,7 @@ const tagSchema = new mongoose.Schema({
48
48
  toObject: {
49
49
  virtuals: true,
50
50
  transform(_doc, ret) {
51
- const { _id,...rest } = ret;
51
+ const { _id, ...rest } = ret;
52
52
  return {
53
53
  ...rest,
54
54
  id: _id
@@ -1 +1 @@
1
- {"version":3,"file":"tag.schema.cjs","names":["Schema","KEY_MIN_LENGTH","KEY_MAX_LENGTH","NAME_MIN_LENGTH","NAME_MAX_LENGTH"],"sources":["../../../src/schemas/tag.schema.ts"],"sourcesContent":["import {\n KEY_MAX_LENGTH,\n KEY_MIN_LENGTH,\n NAME_MAX_LENGTH,\n NAME_MIN_LENGTH,\n} from '@utils/validation/validateTag';\nimport { Schema } from 'mongoose';\nimport type { TagSchema } from '@/types/tag.types';\n\nexport const tagSchema = new Schema<TagSchema>(\n {\n organizationId: {\n type: Schema.Types.ObjectId,\n ref: 'Organization',\n required: true,\n },\n projectId: {\n type: Schema.Types.ObjectId,\n ref: 'Project',\n required: true,\n },\n key: {\n type: String,\n required: true,\n minlength: KEY_MIN_LENGTH,\n maxlength: KEY_MAX_LENGTH,\n },\n name: {\n type: String,\n minlength: NAME_MIN_LENGTH,\n maxlength: NAME_MAX_LENGTH,\n },\n description: {\n type: String,\n },\n instructions: {\n type: String,\n },\n creatorId: {\n type: Schema.Types.ObjectId,\n ref: 'User',\n required: true,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n"],"mappings":";;;;;AASA,MAAa,YAAY,IAAIA,gBAC3B;CACE,gBAAgB;EACd,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,WAAW;EACT,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,KAAK;EACH,MAAM;EACN,UAAU;EACV,WAAWC;EACX,WAAWC;EACZ;CACD,MAAM;EACJ,MAAM;EACN,WAAWC;EACX,WAAWC;EACZ;CACD,aAAa,EACX,MAAM,QACP;CACD,cAAc,EACZ,MAAM,QACP;CACD,WAAW;EACT,MAAMJ,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF"}
1
+ {"version":3,"file":"tag.schema.cjs","names":["Schema","KEY_MIN_LENGTH","KEY_MAX_LENGTH","NAME_MIN_LENGTH","NAME_MAX_LENGTH"],"sources":["../../../src/schemas/tag.schema.ts"],"sourcesContent":["import {\n KEY_MAX_LENGTH,\n KEY_MIN_LENGTH,\n NAME_MAX_LENGTH,\n NAME_MIN_LENGTH,\n} from '@utils/validation/validateTag';\nimport { Schema } from 'mongoose';\nimport type { TagSchema } from '@/types/tag.types';\n\nexport const tagSchema = new Schema<TagSchema>(\n {\n organizationId: {\n type: Schema.Types.ObjectId,\n ref: 'Organization',\n required: true,\n },\n projectId: {\n type: Schema.Types.ObjectId,\n ref: 'Project',\n required: true,\n },\n key: {\n type: String,\n required: true,\n minlength: KEY_MIN_LENGTH,\n maxlength: KEY_MAX_LENGTH,\n },\n name: {\n type: String,\n minlength: NAME_MIN_LENGTH,\n maxlength: NAME_MAX_LENGTH,\n },\n description: {\n type: String,\n },\n instructions: {\n type: String,\n },\n creatorId: {\n type: Schema.Types.ObjectId,\n ref: 'User',\n required: true,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n"],"mappings":";;;;;AASA,MAAa,YAAY,IAAIA,gBAC3B;CACE,gBAAgB;EACd,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,WAAW;EACT,MAAMA,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,KAAK;EACH,MAAM;EACN,UAAU;EACV,WAAWC;EACX,WAAWC;EACZ;CACD,MAAM;EACJ,MAAM;EACN,WAAWC;EACX,WAAWC;EACZ;CACD,aAAa,EACX,MAAM,QACP;CACD,cAAc,EACZ,MAAM,QACP;CACD,WAAW;EACT,MAAMJ,gBAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF"}
@@ -63,7 +63,7 @@ const userSchema = new mongoose.Schema({
63
63
  virtuals: true,
64
64
  versionKey: false,
65
65
  transform(_doc, ret) {
66
- const { _id,...rest } = ret;
66
+ const { _id, ...rest } = ret;
67
67
  return {
68
68
  ...rest,
69
69
  id: _id.toString()
@@ -73,7 +73,7 @@ const userSchema = new mongoose.Schema({
73
73
  toObject: {
74
74
  virtuals: true,
75
75
  transform(_doc, ret) {
76
- const { _id,...rest } = ret;
76
+ const { _id, ...rest } = ret;
77
77
  return {
78
78
  ...rest,
79
79
  id: _id
@@ -1 +1 @@
1
- {"version":3,"file":"user.schema.cjs","names":["Schema","NAMES_MAX_LENGTH","NAMES_MIN_LENGTH"],"sources":["../../../src/schemas/user.schema.ts"],"sourcesContent":["import {\n NAMES_MAX_LENGTH,\n NAMES_MIN_LENGTH,\n} from '@utils/validation/validateUser';\nimport { Schema } from 'mongoose';\nimport validator from 'validator';\nimport type { UserSchema } from '@/types/user.types';\n\nexport const userSchema = new Schema<UserSchema>(\n {\n email: {\n type: String,\n required: true,\n unique: true,\n validate: [validator.isEmail, 'Please fill a valid email address'],\n lowercase: true,\n trim: true,\n },\n name: {\n type: String,\n maxlength: NAMES_MAX_LENGTH,\n minlength: NAMES_MIN_LENGTH,\n },\n phone: {\n type: String,\n maxlength: 20,\n },\n\n customerId: {\n type: String,\n required: false,\n },\n\n emailsList: {\n type: {\n newsLetter: {\n type: Boolean,\n default: false,\n },\n },\n required: false,\n },\n role: {\n type: String,\n enum: ['admin', 'user'],\n default: 'user',\n required: false,\n },\n lastLoginMethod: {\n type: String,\n enum: ['email', 'google', 'github'],\n required: false,\n },\n lang: {\n type: String,\n required: false,\n },\n dateOfBirth: {\n type: Date,\n required: false,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n"],"mappings":";;;;;;;AAQA,MAAa,aAAa,IAAIA,gBAC5B;CACE,OAAO;EACL,MAAM;EACN,UAAU;EACV,QAAQ;EACR,UAAU,CAAC,kBAAU,SAAS,oCAAoC;EAClE,WAAW;EACX,MAAM;EACP;CACD,MAAM;EACJ,MAAM;EACN,WAAWC;EACX,WAAWC;EACZ;CACD,OAAO;EACL,MAAM;EACN,WAAW;EACZ;CAED,YAAY;EACV,MAAM;EACN,UAAU;EACX;CAED,YAAY;EACV,MAAM,EACJ,YAAY;GACV,MAAM;GACN,SAAS;GACV,EACF;EACD,UAAU;EACX;CACD,MAAM;EACJ,MAAM;EACN,MAAM,CAAC,SAAS,OAAO;EACvB,SAAS;EACT,UAAU;EACX;CACD,iBAAiB;EACf,MAAM;EACN,MAAM;GAAC;GAAS;GAAU;GAAS;EACnC,UAAU;EACX;CACD,MAAM;EACJ,MAAM;EACN,UAAU;EACX;CACD,aAAa;EACX,MAAM;EACN,UAAU;EACX;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF"}
1
+ {"version":3,"file":"user.schema.cjs","names":["Schema","NAMES_MAX_LENGTH","NAMES_MIN_LENGTH"],"sources":["../../../src/schemas/user.schema.ts"],"sourcesContent":["import {\n NAMES_MAX_LENGTH,\n NAMES_MIN_LENGTH,\n} from '@utils/validation/validateUser';\nimport { Schema } from 'mongoose';\nimport validator from 'validator';\nimport type { UserSchema } from '@/types/user.types';\n\nexport const userSchema = new Schema<UserSchema>(\n {\n email: {\n type: String,\n required: true,\n unique: true,\n validate: [validator.isEmail, 'Please fill a valid email address'],\n lowercase: true,\n trim: true,\n },\n name: {\n type: String,\n maxlength: NAMES_MAX_LENGTH,\n minlength: NAMES_MIN_LENGTH,\n },\n phone: {\n type: String,\n maxlength: 20,\n },\n\n customerId: {\n type: String,\n required: false,\n },\n\n emailsList: {\n type: {\n newsLetter: {\n type: Boolean,\n default: false,\n },\n },\n required: false,\n },\n role: {\n type: String,\n enum: ['admin', 'user'],\n default: 'user',\n required: false,\n },\n lastLoginMethod: {\n type: String,\n enum: ['email', 'google', 'github'],\n required: false,\n },\n lang: {\n type: String,\n required: false,\n },\n dateOfBirth: {\n type: Date,\n required: false,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n"],"mappings":";;;;;;;AAQA,MAAa,aAAa,IAAIA,gBAC5B;CACE,OAAO;EACL,MAAM;EACN,UAAU;EACV,QAAQ;EACR,UAAU,CAAC,kBAAU,SAAS,oCAAoC;EAClE,WAAW;EACX,MAAM;EACP;CACD,MAAM;EACJ,MAAM;EACN,WAAWC;EACX,WAAWC;EACZ;CACD,OAAO;EACL,MAAM;EACN,WAAW;EACZ;CAED,YAAY;EACV,MAAM;EACN,UAAU;EACX;CAED,YAAY;EACV,MAAM,EACJ,YAAY;GACV,MAAM;GACN,SAAS;GACV,EACF;EACD,UAAU;EACX;CACD,MAAM;EACJ,MAAM;EACN,MAAM,CAAC,SAAS,OAAO;EACvB,SAAS;EACT,UAAU;EACX;CACD,iBAAiB;EACf,MAAM;EACN,MAAM;GAAC;GAAS;GAAU;GAAS;EACnC,UAAU;EACX;CACD,MAAM;EACJ,MAAM;EACN,UAAU;EACX;CACD,aAAa;EACX,MAAM;EACN,UAAU;EACX;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,KAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF"}
@@ -137,7 +137,7 @@ const getEmailComponents = (locale) => ({
137
137
  })
138
138
  }
139
139
  });
140
- const sendEmail = async ({ type, to, subject, locale,...props }) => {
140
+ const sendEmail = async ({ type, to, subject, locale, ...props }) => {
141
141
  const resend$1 = new resend.Resend(process.env.RESEND_API_KEY);
142
142
  const { template, subject: baseSubject } = getEmailComponents(locale)[type];
143
143
  const react = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(template, { ...props });
@@ -1 +1 @@
1
- {"version":3,"file":"email.service.cjs","names":["InviteUserEmailEN","InviteUserEmailFR","InviteUserEmailES","ValidateUserEmailEN","ValidateUserEmailFR","ValidateUserEmailES","ResetPasswordEmailEN","ResetPasswordEmailFR","ResetPasswordEmailES","WelcomeEmailEN","WelcomeEmailFR","WelcomeEmailES","MagicLinkEmailEN","MagicLinkEmailFR","MagicLinkEmailES","PasswordChangeConfirmationEmailEN","PasswordChangeConfirmationEmailFR","PasswordChangeConfirmationEmailES","SubscriptionPaymentSuccessEN","SubscriptionPaymentSuccessFR","SubscriptionPaymentSuccessES","SubscriptionPaymentCancellationEN","SubscriptionPaymentCancellationFR","SubscriptionPaymentCancellationES","SubscriptionPaymentErrorEN","SubscriptionPaymentErrorFR","SubscriptionPaymentErrorES","OAuthTokenCreatedEmailEN","OAuthTokenCreatedEmailFR","OAuthTokenCreatedEmailES","resend","Resend","logger"],"sources":["../../../src/services/email.service.tsx"],"sourcesContent":["import {\n InviteUserEmailEN,\n InviteUserEmailES,\n InviteUserEmailFR,\n} from '@emails/InviteUserEmail';\nimport {\n MagicLinkEmailEN,\n MagicLinkEmailES,\n MagicLinkEmailFR,\n} from '@emails/MagicLinkEmail';\nimport {\n OAuthTokenCreatedEmailEN,\n OAuthTokenCreatedEmailES,\n OAuthTokenCreatedEmailFR,\n} from '@emails/OAuthTokenCreatedEmail';\nimport {\n PasswordChangeConfirmationEmailEN,\n PasswordChangeConfirmationEmailES,\n PasswordChangeConfirmationEmailFR,\n} from '@emails/PasswordChangeConfirmation';\nimport {\n ResetPasswordEmailEN,\n ResetPasswordEmailES,\n ResetPasswordEmailFR,\n} from '@emails/ResetUserPassword';\n\nimport {\n SubscriptionPaymentCancellationEN,\n SubscriptionPaymentCancellationES,\n SubscriptionPaymentCancellationFR,\n} from '@emails/SubscriptionPaymentCancellation';\nimport {\n SubscriptionPaymentErrorEN,\n SubscriptionPaymentErrorES,\n SubscriptionPaymentErrorFR,\n} from '@emails/SubscriptionPaymentError';\nimport {\n SubscriptionPaymentSuccessEN,\n SubscriptionPaymentSuccessES,\n SubscriptionPaymentSuccessFR,\n} from '@emails/SubscriptionPaymentSuccess';\nimport {\n ValidateUserEmailEN,\n ValidateUserEmailES,\n ValidateUserEmailFR,\n} from '@emails/ValidateUserEmail';\nimport {\n WelcomeEmailEN,\n WelcomeEmailES,\n WelcomeEmailFR,\n} from '@emails/Welcome';\nimport type { Locale } from '@intlayer/types';\nimport { logger } from '@logger';\nimport { t } from 'express-intlayer';\nimport type { ComponentProps, JSX } from 'react';\nimport { Resend } from 'resend';\n\ntype EmailComponentsType = (...props: any) => JSX.Element;\ntype EmailComponents = {\n [key: string]: {\n template: EmailComponentsType;\n subject: string;\n };\n};\n\nconst getEmailComponents = (locale?: Locale) =>\n ({\n invite: {\n template: t(\n {\n en: InviteUserEmailEN,\n fr: InviteUserEmailFR,\n es: InviteUserEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'You have been invited to join Intlayer',\n fr: 'Vous êtes invité à rejoindre Intlayer',\n es: 'Has sido invitado a unirte a Intlayer',\n },\n locale\n ),\n },\n validate: {\n template: t(\n {\n en: ValidateUserEmailEN,\n fr: ValidateUserEmailFR,\n es: ValidateUserEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Validate your email for Intlayer',\n fr: 'Validez votre email pour Intlayer',\n es: 'Valida tu correo electrónico para Intlayer',\n },\n locale\n ),\n },\n resetPassword: {\n template: t(\n {\n en: ResetPasswordEmailEN,\n fr: ResetPasswordEmailFR,\n es: ResetPasswordEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Reset your password for Intlayer',\n fr: 'Réinitialisez votre mot de passe pour Intlayer',\n es: 'Restablece tu contraseña para Intlayer',\n },\n locale\n ),\n },\n welcome: {\n template: t(\n {\n en: WelcomeEmailEN,\n fr: WelcomeEmailFR,\n es: WelcomeEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Welcome to Intlayer!',\n fr: 'Bienvenue chez Intlayer!',\n es: '¡Bienvenido a Intlayer!',\n },\n locale\n ),\n },\n magicLink: {\n template: t(\n {\n en: MagicLinkEmailEN,\n fr: MagicLinkEmailFR,\n es: MagicLinkEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Sign in to Intlayer',\n fr: 'Connectez-vous à Intlayer',\n es: 'Inicia sesión en Intlayer',\n },\n locale\n ),\n },\n passwordChangeConfirmation: {\n template: t(\n {\n en: PasswordChangeConfirmationEmailEN,\n fr: PasswordChangeConfirmationEmailFR,\n es: PasswordChangeConfirmationEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Your Intlayer password has been changed',\n fr: 'Votre mot de passe Intlayer a été modifié',\n es: 'Tu contraseña de Intlayer ha sido cambiada',\n },\n locale\n ),\n },\n subscriptionPaymentSuccess: {\n template: t({\n en: SubscriptionPaymentSuccessEN,\n fr: SubscriptionPaymentSuccessFR,\n es: SubscriptionPaymentSuccessES,\n }),\n subject: t({\n en: 'Your payment for Intlayer subscription is confirmed',\n fr: \"Votre paiement pour l'abonnement Intlayer est confirmé\",\n es: 'Tu pago por la suscripción de Intlayer ha sido confirmado',\n }),\n },\n subscriptionPaymentCancellation: {\n template: t({\n en: SubscriptionPaymentCancellationEN,\n fr: SubscriptionPaymentCancellationFR,\n es: SubscriptionPaymentCancellationES,\n }),\n subject: t({\n en: 'Your Intlayer subscription has been canceled',\n fr: 'Votre abonnement Intlayer a été annulé',\n es: 'Tu suscripción de Intlayer ha sido cancelada',\n }),\n },\n subscriptionPaymentError: {\n template: t({\n en: SubscriptionPaymentErrorEN,\n fr: SubscriptionPaymentErrorFR,\n es: SubscriptionPaymentErrorES,\n }),\n subject: t({\n en: 'There was an issue with your Intlayer subscription payment',\n fr: \"Un problème est survenu avec votre paiement pour l'abonnement Intlayer\",\n es: 'Hubo un problema con el pago de tu suscripción de Intlayer',\n }),\n },\n oAuthTokenCreated: {\n template: t({\n en: OAuthTokenCreatedEmailEN,\n fr: OAuthTokenCreatedEmailFR,\n es: OAuthTokenCreatedEmailES,\n }),\n subject: t({\n en: 'A third-party OAuth application has been added to your Intlayer account',\n fr: 'Une application OAuth tierce a été ajoutée à votre compte Intlayer',\n es: 'Una aplicación OAuth de terceros ha sido añadida a tu cuenta de Intlayer',\n }),\n },\n }) satisfies EmailComponents;\n\ntype EmailType = keyof ReturnType<typeof getEmailComponents>;\n\nexport type SendEmailProps<T extends EmailType> = {\n type: T;\n to: string;\n subject?: string;\n locale?: Locale;\n} & ComponentProps<ReturnType<typeof getEmailComponents>[T]['template']>;\n\nexport const sendEmail = async <T extends EmailType>({\n type,\n to,\n subject,\n locale,\n ...props\n}: SendEmailProps<T>) => {\n const resend = new Resend(process.env.RESEND_API_KEY);\n\n const emailComponents = getEmailComponents(locale);\n\n const { template, subject: baseSubject } = emailComponents[type];\n\n type EmailComponentType = (typeof emailComponents)[T]['template'];\n\n const EmailComponent: EmailComponentType = template;\n\n const react = <EmailComponent {...(props as any)} />;\n\n await resend.emails\n .send({\n from: 'Intlayer <no-reply@intlayer.org>',\n to,\n subject: subject ?? baseSubject,\n react,\n })\n .catch((err) => logger.error(err));\n\n logger.info(`Email sent ${type} to ${to}`);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAiEA,MAAM,sBAAsB,YACzB;CACC,QAAQ;EACN,kCACE;GACE,IAAIA;GACJ,IAAIC;GACJ,IAAIC;GACL,EACD,OACD;EACD,iCACE;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,UAAU;EACR,kCACE;GACE,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,EACD,OACD;EACD,iCACE;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,eAAe;EACb,kCACE;GACE,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,EACD,OACD;EACD,iCACE;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,SAAS;EACP,kCACE;GACE,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,EACD,OACD;EACD,iCACE;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,WAAW;EACT,kCACE;GACE,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,EACD,OACD;EACD,iCACE;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,4BAA4B;EAC1B,kCACE;GACE,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,EACD,OACD;EACD,iCACE;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,4BAA4B;EAC1B,kCAAY;GACV,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,CAAC;EACF,iCAAW;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,iCAAiC;EAC/B,kCAAY;GACV,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,CAAC;EACF,iCAAW;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,0BAA0B;EACxB,kCAAY;GACV,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,CAAC;EACF,iCAAW;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,mBAAmB;EACjB,kCAAY;GACV,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,CAAC;EACF,iCAAW;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACF;AAWH,MAAa,YAAY,OAA4B,EACnD,MACA,IACA,SACA,OACA,GAAG,YACoB;CACvB,MAAMC,WAAS,IAAIC,cAAO,QAAQ,IAAI,eAAe;CAIrD,MAAM,EAAE,UAAU,SAAS,gBAFH,mBAAmB,OAAO,CAES;CAM3D,MAAM,QAAQ,2CAF6B,YAEb,GAAK,QAAiB;AAEpD,OAAMD,SAAO,OACV,KAAK;EACJ,MAAM;EACN;EACA,SAAS,WAAW;EACpB;EACD,CAAC,CACD,OAAO,QAAQE,4BAAO,MAAM,IAAI,CAAC;AAEpC,6BAAO,KAAK,cAAc,KAAK,MAAM,KAAK"}
1
+ {"version":3,"file":"email.service.cjs","names":["InviteUserEmailEN","InviteUserEmailFR","InviteUserEmailES","ValidateUserEmailEN","ValidateUserEmailFR","ValidateUserEmailES","ResetPasswordEmailEN","ResetPasswordEmailFR","ResetPasswordEmailES","WelcomeEmailEN","WelcomeEmailFR","WelcomeEmailES","MagicLinkEmailEN","MagicLinkEmailFR","MagicLinkEmailES","PasswordChangeConfirmationEmailEN","PasswordChangeConfirmationEmailFR","PasswordChangeConfirmationEmailES","SubscriptionPaymentSuccessEN","SubscriptionPaymentSuccessFR","SubscriptionPaymentSuccessES","SubscriptionPaymentCancellationEN","SubscriptionPaymentCancellationFR","SubscriptionPaymentCancellationES","SubscriptionPaymentErrorEN","SubscriptionPaymentErrorFR","SubscriptionPaymentErrorES","OAuthTokenCreatedEmailEN","OAuthTokenCreatedEmailFR","OAuthTokenCreatedEmailES","resend","Resend","logger"],"sources":["../../../src/services/email.service.tsx"],"sourcesContent":["import {\n InviteUserEmailEN,\n InviteUserEmailES,\n InviteUserEmailFR,\n} from '@emails/InviteUserEmail';\nimport {\n MagicLinkEmailEN,\n MagicLinkEmailES,\n MagicLinkEmailFR,\n} from '@emails/MagicLinkEmail';\nimport {\n OAuthTokenCreatedEmailEN,\n OAuthTokenCreatedEmailES,\n OAuthTokenCreatedEmailFR,\n} from '@emails/OAuthTokenCreatedEmail';\nimport {\n PasswordChangeConfirmationEmailEN,\n PasswordChangeConfirmationEmailES,\n PasswordChangeConfirmationEmailFR,\n} from '@emails/PasswordChangeConfirmation';\nimport {\n ResetPasswordEmailEN,\n ResetPasswordEmailES,\n ResetPasswordEmailFR,\n} from '@emails/ResetUserPassword';\n\nimport {\n SubscriptionPaymentCancellationEN,\n SubscriptionPaymentCancellationES,\n SubscriptionPaymentCancellationFR,\n} from '@emails/SubscriptionPaymentCancellation';\nimport {\n SubscriptionPaymentErrorEN,\n SubscriptionPaymentErrorES,\n SubscriptionPaymentErrorFR,\n} from '@emails/SubscriptionPaymentError';\nimport {\n SubscriptionPaymentSuccessEN,\n SubscriptionPaymentSuccessES,\n SubscriptionPaymentSuccessFR,\n} from '@emails/SubscriptionPaymentSuccess';\nimport {\n ValidateUserEmailEN,\n ValidateUserEmailES,\n ValidateUserEmailFR,\n} from '@emails/ValidateUserEmail';\nimport {\n WelcomeEmailEN,\n WelcomeEmailES,\n WelcomeEmailFR,\n} from '@emails/Welcome';\nimport type { Locale } from '@intlayer/types';\nimport { logger } from '@logger';\nimport { t } from 'express-intlayer';\nimport type { ComponentProps, JSX } from 'react';\nimport { Resend } from 'resend';\n\ntype EmailComponentsType = (...props: any) => JSX.Element;\ntype EmailComponents = {\n [key: string]: {\n template: EmailComponentsType;\n subject: string;\n };\n};\n\nconst getEmailComponents = (locale?: Locale) =>\n ({\n invite: {\n template: t(\n {\n en: InviteUserEmailEN,\n fr: InviteUserEmailFR,\n es: InviteUserEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'You have been invited to join Intlayer',\n fr: 'Vous êtes invité à rejoindre Intlayer',\n es: 'Has sido invitado a unirte a Intlayer',\n },\n locale\n ),\n },\n validate: {\n template: t(\n {\n en: ValidateUserEmailEN,\n fr: ValidateUserEmailFR,\n es: ValidateUserEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Validate your email for Intlayer',\n fr: 'Validez votre email pour Intlayer',\n es: 'Valida tu correo electrónico para Intlayer',\n },\n locale\n ),\n },\n resetPassword: {\n template: t(\n {\n en: ResetPasswordEmailEN,\n fr: ResetPasswordEmailFR,\n es: ResetPasswordEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Reset your password for Intlayer',\n fr: 'Réinitialisez votre mot de passe pour Intlayer',\n es: 'Restablece tu contraseña para Intlayer',\n },\n locale\n ),\n },\n welcome: {\n template: t(\n {\n en: WelcomeEmailEN,\n fr: WelcomeEmailFR,\n es: WelcomeEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Welcome to Intlayer!',\n fr: 'Bienvenue chez Intlayer!',\n es: '¡Bienvenido a Intlayer!',\n },\n locale\n ),\n },\n magicLink: {\n template: t(\n {\n en: MagicLinkEmailEN,\n fr: MagicLinkEmailFR,\n es: MagicLinkEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Sign in to Intlayer',\n fr: 'Connectez-vous à Intlayer',\n es: 'Inicia sesión en Intlayer',\n },\n locale\n ),\n },\n passwordChangeConfirmation: {\n template: t(\n {\n en: PasswordChangeConfirmationEmailEN,\n fr: PasswordChangeConfirmationEmailFR,\n es: PasswordChangeConfirmationEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Your Intlayer password has been changed',\n fr: 'Votre mot de passe Intlayer a été modifié',\n es: 'Tu contraseña de Intlayer ha sido cambiada',\n },\n locale\n ),\n },\n subscriptionPaymentSuccess: {\n template: t({\n en: SubscriptionPaymentSuccessEN,\n fr: SubscriptionPaymentSuccessFR,\n es: SubscriptionPaymentSuccessES,\n }),\n subject: t({\n en: 'Your payment for Intlayer subscription is confirmed',\n fr: \"Votre paiement pour l'abonnement Intlayer est confirmé\",\n es: 'Tu pago por la suscripción de Intlayer ha sido confirmado',\n }),\n },\n subscriptionPaymentCancellation: {\n template: t({\n en: SubscriptionPaymentCancellationEN,\n fr: SubscriptionPaymentCancellationFR,\n es: SubscriptionPaymentCancellationES,\n }),\n subject: t({\n en: 'Your Intlayer subscription has been canceled',\n fr: 'Votre abonnement Intlayer a été annulé',\n es: 'Tu suscripción de Intlayer ha sido cancelada',\n }),\n },\n subscriptionPaymentError: {\n template: t({\n en: SubscriptionPaymentErrorEN,\n fr: SubscriptionPaymentErrorFR,\n es: SubscriptionPaymentErrorES,\n }),\n subject: t({\n en: 'There was an issue with your Intlayer subscription payment',\n fr: \"Un problème est survenu avec votre paiement pour l'abonnement Intlayer\",\n es: 'Hubo un problema con el pago de tu suscripción de Intlayer',\n }),\n },\n oAuthTokenCreated: {\n template: t({\n en: OAuthTokenCreatedEmailEN,\n fr: OAuthTokenCreatedEmailFR,\n es: OAuthTokenCreatedEmailES,\n }),\n subject: t({\n en: 'A third-party OAuth application has been added to your Intlayer account',\n fr: 'Une application OAuth tierce a été ajoutée à votre compte Intlayer',\n es: 'Una aplicación OAuth de terceros ha sido añadida a tu cuenta de Intlayer',\n }),\n },\n }) satisfies EmailComponents;\n\ntype EmailType = keyof ReturnType<typeof getEmailComponents>;\n\nexport type SendEmailProps<T extends EmailType> = {\n type: T;\n to: string;\n subject?: string;\n locale?: Locale;\n} & ComponentProps<ReturnType<typeof getEmailComponents>[T]['template']>;\n\nexport const sendEmail = async <T extends EmailType>({\n type,\n to,\n subject,\n locale,\n ...props\n}: SendEmailProps<T>) => {\n const resend = new Resend(process.env.RESEND_API_KEY);\n\n const emailComponents = getEmailComponents(locale);\n\n const { template, subject: baseSubject } = emailComponents[type];\n\n type EmailComponentType = (typeof emailComponents)[T]['template'];\n\n const EmailComponent: EmailComponentType = template;\n\n const react = <EmailComponent {...(props as any)} />;\n\n await resend.emails\n .send({\n from: 'Intlayer <no-reply@intlayer.org>',\n to,\n subject: subject ?? baseSubject,\n react,\n })\n .catch((err) => logger.error(err));\n\n logger.info(`Email sent ${type} to ${to}`);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAiEA,MAAM,sBAAsB,YACzB;CACC,QAAQ;EACN,kCACE;GACE,IAAIA;GACJ,IAAIC;GACJ,IAAIC;GACL,EACD,OACD;EACD,iCACE;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,UAAU;EACR,kCACE;GACE,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,EACD,OACD;EACD,iCACE;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,eAAe;EACb,kCACE;GACE,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,EACD,OACD;EACD,iCACE;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,SAAS;EACP,kCACE;GACE,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,EACD,OACD;EACD,iCACE;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,WAAW;EACT,kCACE;GACE,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,EACD,OACD;EACD,iCACE;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,4BAA4B;EAC1B,kCACE;GACE,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,EACD,OACD;EACD,iCACE;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,4BAA4B;EAC1B,kCAAY;GACV,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,CAAC;EACF,iCAAW;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,iCAAiC;EAC/B,kCAAY;GACV,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,CAAC;EACF,iCAAW;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,0BAA0B;EACxB,kCAAY;GACV,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,CAAC;EACF,iCAAW;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,mBAAmB;EACjB,kCAAY;GACV,IAAIC;GACJ,IAAIC;GACJ,IAAIC;GACL,CAAC;EACF,iCAAW;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACF;AAWH,MAAa,YAAY,OAA4B,EACnD,MACA,IACA,SACA,QACA,GAAG,YACoB;CACvB,MAAMC,WAAS,IAAIC,cAAO,QAAQ,IAAI,eAAe;CAIrD,MAAM,EAAE,UAAU,SAAS,gBAFH,mBAAmB,OAAO,CAES;CAM3D,MAAM,QAAQ,2CAF6B,YAEb,GAAK,QAAiB;AAEpD,OAAMD,SAAO,OACV,KAAK;EACJ,MAAM;EACN;EACA,SAAS,WAAW;EACpB;EACD,CAAC,CACD,OAAO,QAAQE,4BAAO,MAAM,IAAI,CAAC;AAEpC,6BAAO,KAAK,cAAc,KAAK,MAAM,KAAK"}
@@ -73,7 +73,7 @@ const getClient = async (clientId, clientSecret) => {
73
73
  * @returns The formatted token
74
74
  */
75
75
  const formatOAuth2Token = (token, client, user, project, organization, grants) => {
76
- const { clientId, userId,...restToken } = token;
76
+ const { clientId, userId, ...restToken } = token;
77
77
  if (String(userId) !== String(user.id)) throw new require_utils_errors_ErrorsClass.GenericError("USER_ID_MISMATCH");
78
78
  return {
79
79
  ...restToken,
@@ -1 +1 @@
1
- {"version":3,"file":"oAuth2.service.cjs","names":["ProjectModel","GenericError","mapUserToAPI","mapOrganizationToAPI","mapProjectToAPI","getTokenExpireAt","formattedAccessToken: Token","OAuth2AccessTokenModel","getOrganizationById","getUserById","ensureMongoDocumentToObject"],"sources":["../../../src/services/oAuth2.service.ts"],"sourcesContent":["import { randomBytes } from 'node:crypto';\nimport { OAuth2AccessTokenModel } from '@models/oAuth2.model';\nimport { ProjectModel } from '@models/project.model';\nimport { ensureMongoDocumentToObject } from '@utils/ensureMongoDocumentToObject';\nimport { GenericError } from '@utils/errors';\nimport { mapOrganizationToAPI } from '@utils/mapper/organization';\nimport { mapProjectToAPI } from '@utils/mapper/project';\nimport { mapUserToAPI } from '@utils/mapper/user';\nimport { getTokenExpireAt } from '@utils/oAuth2';\nimport type { Types } from 'mongoose';\nimport type { Callback, Client } from 'oauth2-server';\nimport type { OAuth2Token } from '@/types/oAuth2.types';\nimport type { Organization } from '@/types/organization.types';\nimport type {\n OAuth2Access,\n OAuth2AccessContext,\n Project,\n ProjectDocument,\n} from '@/types/project.types';\nimport type { User, UserAPI, UserDocument } from '@/types/user.types';\nimport type { Token } from '../schemas/oAuth2.schema';\nimport { getOrganizationById } from './organization.service';\nimport { getUserById } from './user.service';\n\n/**\n * Function to generate client credentials\n *\n * @returns The client id and client secret\n */\nexport const generateClientCredentials = (): {\n clientId: string;\n clientSecret: string;\n} => {\n const clientId = randomBytes(16).toString('hex'); // Generate a 16 character hexadecimal string\n const clientSecret = randomBytes(32).toString('hex'); // Generate a 32 character hexadecimal string\n\n return { clientId, clientSecret };\n};\n\n/**\n * Method to get the client and the project\n *\n * @param clientId - The client id\n * @param clientSecret - The client secret\n * @returns The an object containing the client, the rights and the project or false if not found\n */\nexport const getClientAndProjectByClientId = async (\n clientId: string\n): Promise<\n | {\n client: Client;\n oAuth2Access: OAuth2Access;\n project: ProjectDocument;\n grants: Token['grants'];\n }\n | false\n> => {\n const project = await ProjectModel.findOne({\n 'oAuth2Access.clientId': clientId,\n });\n\n if (!project) {\n return false;\n }\n\n const oAuth2Access = project.oAuth2Access.find(\n (access) => access.clientId === clientId\n );\n\n if (!oAuth2Access) {\n return false;\n }\n\n const formattedClient: Client = {\n id: oAuth2Access.clientId,\n clientId,\n clientSecret: oAuth2Access.clientSecret,\n grants: ['client_credentials'],\n };\n\n return {\n client: formattedClient,\n oAuth2Access,\n grants: oAuth2Access.grants,\n project,\n };\n};\n\n/**\n * Get the client and verify that the client secret is correct\n *\n * @param clientId - The client id\n * @param clientSecret - The client secret\n * @returns The client or false if not found\n */\nexport const getClient = async (\n clientId: string,\n clientSecret: string\n): Promise<Client | false> => {\n const result = await getClientAndProjectByClientId(clientId);\n\n if (!result) {\n return false;\n }\n\n const { client } = result;\n\n if (!client || client.clientSecret !== clientSecret) {\n return false;\n }\n\n return client;\n};\n\n/**\n * Format an OAuth2Token\n *\n * @param token - The token to format\n * @param client - The client\n * @param user - The user\n * @param project - The project\n * @param organization - The organization\n * @param grants - The grants\n * @returns The formatted token\n */\nexport const formatOAuth2Token = (\n token: Token,\n client: Client,\n user: UserAPI,\n project: Project,\n organization: Organization,\n grants: Token['grants']\n): OAuth2Token => {\n // biome-ignore lint/correctness/noUnusedVariables: Just filter out clientId\n const { clientId, userId, ...restToken } = token;\n\n if (String(userId) !== String(user.id)) {\n throw new GenericError('USER_ID_MISMATCH');\n }\n\n const formattedToken: OAuth2Token = {\n ...restToken,\n client,\n user: mapUserToAPI(user),\n organization: mapOrganizationToAPI(organization),\n project: mapProjectToAPI(project),\n accessToken: token.accessToken,\n accessTokenExpiresAt: token.accessTokenExpiresAt ?? new Date('999-99-99'),\n grants,\n };\n\n return formattedToken;\n};\n\n/**\n * Format a auth token for the database\n *\n * @param token - The oAuth2 token to format\n * @param clientId - The client ID\n * @param userId - The user ID\n * @returns\n */\nexport const formatDBToken = (\n token: OAuth2Token,\n clientId: Client['id'],\n userId: User['id'] | string\n): Token => {\n const formattedToken: Token = {\n id: token.id,\n clientId: clientId,\n userId: userId as Types.ObjectId,\n accessToken: token.accessToken,\n expiresIn: token.accessTokenExpiresAt ?? getTokenExpireAt(),\n };\n\n return formattedToken;\n};\n\n/**\n * Method to save the token\n *\n * @param token - The token\n * @param client - The client\n * @param user - The user\n * @returns The saved token or false if not saved\n */\nexport const saveToken = async (\n token: OAuth2Token,\n client: Client,\n user: UserAPI\n): Promise<OAuth2Token | false> => {\n const formattedAccessToken: Token = formatDBToken(token, client.id, user.id);\n\n const result = await OAuth2AccessTokenModel.create(formattedAccessToken);\n\n if (!result) {\n return false;\n }\n\n const result2 = await getClientAndProjectByClientId(result.clientId);\n\n if (!result2) {\n return false;\n }\n\n const { project } = result2;\n\n const organization = await getOrganizationById(project.organizationId);\n\n if (!organization) {\n return false;\n }\n\n const formattedResult = formatOAuth2Token(\n formattedAccessToken,\n client,\n user,\n project,\n organization,\n token.rights\n );\n return formattedResult;\n};\n\n/**\n * Method to get the access token\n *\n * @param accessToken - The access token\n * @returns The access token or false if not found\n */\nexport const getAccessToken = async (\n accessToken: string\n): Promise<OAuth2Token | false> => {\n const token = await OAuth2AccessTokenModel.findOne({\n accessToken,\n });\n\n if (!token) {\n return false;\n }\n\n const { userId, clientId } = token;\n\n const user = await getUserById(userId);\n\n if (!user) {\n return false;\n }\n\n const result = await getClientAndProjectByClientId(clientId);\n\n if (!result) {\n return false;\n }\n\n const { client, project, grants } = result;\n\n const organization = await getOrganizationById(project.organizationId);\n\n if (!organization) {\n return false;\n }\n\n const formattedAccessToken = formatOAuth2Token(\n token,\n client,\n user,\n project,\n organization,\n grants\n );\n\n return formattedAccessToken;\n};\n\n/**\n * Method to get the user from the client\n *\n * @param client - The client\n * @returns The user or false if not found\n */\nexport const getUserFromClient = async (\n client: Client\n): Promise<UserDocument | false> => {\n const response = await getClientAndProjectByClientId(client.id);\n\n if (!response) {\n return false;\n }\n\n const { userId } = response.oAuth2Access;\n\n if (!userId) {\n return false;\n }\n\n const user = await getUserById(userId);\n\n return user ?? false;\n};\n\n/**\n * Method to verify the permissions (grants)\n *\n * @param token - The token\n * @param scope - The scope\n * @returns True if the token has the required scope, false otherwise\n */\nexport const verifyScope = async (\n _token: OAuth2Token,\n _scope: string,\n _callback?: Callback<boolean> | undefined\n): Promise<boolean> => {\n // Implement the verification of scopes if necessary\n return true;\n};\n\n/**\n * Validate OAuth2 access token and return user context\n */\nexport const validateOAuth2AccessToken = async (\n accessToken: string\n): Promise<Token> => {\n try {\n const token = await OAuth2AccessTokenModel.findOne({\n accessToken,\n });\n\n if (!token) {\n throw new GenericError('INVALID_ACCESS_TOKEN');\n }\n\n // Check if token is expired\n if (new Date() > new Date(token.expiresIn)) {\n throw new GenericError('EXPIRED_ACCESS_TOKEN');\n }\n\n return ensureMongoDocumentToObject(token);\n } catch (_error) {\n throw new GenericError('INVALID_ACCESS_TOKEN');\n }\n};\n\n/**\n * Validate OAuth2 access token and return user context\n */\nexport const getOAuth2AccessTokenContext = async (\n token: Token\n): Promise<OAuth2AccessContext> => {\n const { userId, clientId } = token;\n\n const user = await getUserById(String(userId));\n\n const result = await getClientAndProjectByClientId(clientId);\n\n if (!result) {\n throw new GenericError('INVALID_ACCESS_TOKEN');\n }\n\n const { project, grants } = result;\n\n const organization = await getOrganizationById(project.organizationId);\n\n return {\n accessToken: token.accessToken,\n user: user ? mapUserToAPI(user) : undefined,\n project: project ? mapProjectToAPI(project) : undefined,\n organization: organization ? mapOrganizationToAPI(organization) : undefined,\n grants,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"oAuth2.service.cjs","names":["ProjectModel","GenericError","mapUserToAPI","mapOrganizationToAPI","mapProjectToAPI","getTokenExpireAt","formattedAccessToken: Token","OAuth2AccessTokenModel","getOrganizationById","getUserById","ensureMongoDocumentToObject"],"sources":["../../../src/services/oAuth2.service.ts"],"sourcesContent":["import { randomBytes } from 'node:crypto';\nimport { OAuth2AccessTokenModel } from '@models/oAuth2.model';\nimport { ProjectModel } from '@models/project.model';\nimport { ensureMongoDocumentToObject } from '@utils/ensureMongoDocumentToObject';\nimport { GenericError } from '@utils/errors';\nimport { mapOrganizationToAPI } from '@utils/mapper/organization';\nimport { mapProjectToAPI } from '@utils/mapper/project';\nimport { mapUserToAPI } from '@utils/mapper/user';\nimport { getTokenExpireAt } from '@utils/oAuth2';\nimport type { Types } from 'mongoose';\nimport type { Callback, Client } from 'oauth2-server';\nimport type { OAuth2Token } from '@/types/oAuth2.types';\nimport type { Organization } from '@/types/organization.types';\nimport type {\n OAuth2Access,\n OAuth2AccessContext,\n Project,\n ProjectDocument,\n} from '@/types/project.types';\nimport type { User, UserAPI, UserDocument } from '@/types/user.types';\nimport type { Token } from '../schemas/oAuth2.schema';\nimport { getOrganizationById } from './organization.service';\nimport { getUserById } from './user.service';\n\n/**\n * Function to generate client credentials\n *\n * @returns The client id and client secret\n */\nexport const generateClientCredentials = (): {\n clientId: string;\n clientSecret: string;\n} => {\n const clientId = randomBytes(16).toString('hex'); // Generate a 16 character hexadecimal string\n const clientSecret = randomBytes(32).toString('hex'); // Generate a 32 character hexadecimal string\n\n return { clientId, clientSecret };\n};\n\n/**\n * Method to get the client and the project\n *\n * @param clientId - The client id\n * @param clientSecret - The client secret\n * @returns The an object containing the client, the rights and the project or false if not found\n */\nexport const getClientAndProjectByClientId = async (\n clientId: string\n): Promise<\n | {\n client: Client;\n oAuth2Access: OAuth2Access;\n project: ProjectDocument;\n grants: Token['grants'];\n }\n | false\n> => {\n const project = await ProjectModel.findOne({\n 'oAuth2Access.clientId': clientId,\n });\n\n if (!project) {\n return false;\n }\n\n const oAuth2Access = project.oAuth2Access.find(\n (access) => access.clientId === clientId\n );\n\n if (!oAuth2Access) {\n return false;\n }\n\n const formattedClient: Client = {\n id: oAuth2Access.clientId,\n clientId,\n clientSecret: oAuth2Access.clientSecret,\n grants: ['client_credentials'],\n };\n\n return {\n client: formattedClient,\n oAuth2Access,\n grants: oAuth2Access.grants,\n project,\n };\n};\n\n/**\n * Get the client and verify that the client secret is correct\n *\n * @param clientId - The client id\n * @param clientSecret - The client secret\n * @returns The client or false if not found\n */\nexport const getClient = async (\n clientId: string,\n clientSecret: string\n): Promise<Client | false> => {\n const result = await getClientAndProjectByClientId(clientId);\n\n if (!result) {\n return false;\n }\n\n const { client } = result;\n\n if (!client || client.clientSecret !== clientSecret) {\n return false;\n }\n\n return client;\n};\n\n/**\n * Format an OAuth2Token\n *\n * @param token - The token to format\n * @param client - The client\n * @param user - The user\n * @param project - The project\n * @param organization - The organization\n * @param grants - The grants\n * @returns The formatted token\n */\nexport const formatOAuth2Token = (\n token: Token,\n client: Client,\n user: UserAPI,\n project: Project,\n organization: Organization,\n grants: Token['grants']\n): OAuth2Token => {\n // biome-ignore lint/correctness/noUnusedVariables: Just filter out clientId\n const { clientId, userId, ...restToken } = token;\n\n if (String(userId) !== String(user.id)) {\n throw new GenericError('USER_ID_MISMATCH');\n }\n\n const formattedToken: OAuth2Token = {\n ...restToken,\n client,\n user: mapUserToAPI(user),\n organization: mapOrganizationToAPI(organization),\n project: mapProjectToAPI(project),\n accessToken: token.accessToken,\n accessTokenExpiresAt: token.accessTokenExpiresAt ?? new Date('999-99-99'),\n grants,\n };\n\n return formattedToken;\n};\n\n/**\n * Format a auth token for the database\n *\n * @param token - The oAuth2 token to format\n * @param clientId - The client ID\n * @param userId - The user ID\n * @returns\n */\nexport const formatDBToken = (\n token: OAuth2Token,\n clientId: Client['id'],\n userId: User['id'] | string\n): Token => {\n const formattedToken: Token = {\n id: token.id,\n clientId: clientId,\n userId: userId as Types.ObjectId,\n accessToken: token.accessToken,\n expiresIn: token.accessTokenExpiresAt ?? getTokenExpireAt(),\n };\n\n return formattedToken;\n};\n\n/**\n * Method to save the token\n *\n * @param token - The token\n * @param client - The client\n * @param user - The user\n * @returns The saved token or false if not saved\n */\nexport const saveToken = async (\n token: OAuth2Token,\n client: Client,\n user: UserAPI\n): Promise<OAuth2Token | false> => {\n const formattedAccessToken: Token = formatDBToken(token, client.id, user.id);\n\n const result = await OAuth2AccessTokenModel.create(formattedAccessToken);\n\n if (!result) {\n return false;\n }\n\n const result2 = await getClientAndProjectByClientId(result.clientId);\n\n if (!result2) {\n return false;\n }\n\n const { project } = result2;\n\n const organization = await getOrganizationById(project.organizationId);\n\n if (!organization) {\n return false;\n }\n\n const formattedResult = formatOAuth2Token(\n formattedAccessToken,\n client,\n user,\n project,\n organization,\n token.rights\n );\n return formattedResult;\n};\n\n/**\n * Method to get the access token\n *\n * @param accessToken - The access token\n * @returns The access token or false if not found\n */\nexport const getAccessToken = async (\n accessToken: string\n): Promise<OAuth2Token | false> => {\n const token = await OAuth2AccessTokenModel.findOne({\n accessToken,\n });\n\n if (!token) {\n return false;\n }\n\n const { userId, clientId } = token;\n\n const user = await getUserById(userId);\n\n if (!user) {\n return false;\n }\n\n const result = await getClientAndProjectByClientId(clientId);\n\n if (!result) {\n return false;\n }\n\n const { client, project, grants } = result;\n\n const organization = await getOrganizationById(project.organizationId);\n\n if (!organization) {\n return false;\n }\n\n const formattedAccessToken = formatOAuth2Token(\n token,\n client,\n user,\n project,\n organization,\n grants\n );\n\n return formattedAccessToken;\n};\n\n/**\n * Method to get the user from the client\n *\n * @param client - The client\n * @returns The user or false if not found\n */\nexport const getUserFromClient = async (\n client: Client\n): Promise<UserDocument | false> => {\n const response = await getClientAndProjectByClientId(client.id);\n\n if (!response) {\n return false;\n }\n\n const { userId } = response.oAuth2Access;\n\n if (!userId) {\n return false;\n }\n\n const user = await getUserById(userId);\n\n return user ?? false;\n};\n\n/**\n * Method to verify the permissions (grants)\n *\n * @param token - The token\n * @param scope - The scope\n * @returns True if the token has the required scope, false otherwise\n */\nexport const verifyScope = async (\n _token: OAuth2Token,\n _scope: string,\n _callback?: Callback<boolean> | undefined\n): Promise<boolean> => {\n // Implement the verification of scopes if necessary\n return true;\n};\n\n/**\n * Validate OAuth2 access token and return user context\n */\nexport const validateOAuth2AccessToken = async (\n accessToken: string\n): Promise<Token> => {\n try {\n const token = await OAuth2AccessTokenModel.findOne({\n accessToken,\n });\n\n if (!token) {\n throw new GenericError('INVALID_ACCESS_TOKEN');\n }\n\n // Check if token is expired\n if (new Date() > new Date(token.expiresIn)) {\n throw new GenericError('EXPIRED_ACCESS_TOKEN');\n }\n\n return ensureMongoDocumentToObject(token);\n } catch (_error) {\n throw new GenericError('INVALID_ACCESS_TOKEN');\n }\n};\n\n/**\n * Validate OAuth2 access token and return user context\n */\nexport const getOAuth2AccessTokenContext = async (\n token: Token\n): Promise<OAuth2AccessContext> => {\n const { userId, clientId } = token;\n\n const user = await getUserById(String(userId));\n\n const result = await getClientAndProjectByClientId(clientId);\n\n if (!result) {\n throw new GenericError('INVALID_ACCESS_TOKEN');\n }\n\n const { project, grants } = result;\n\n const organization = await getOrganizationById(project.organizationId);\n\n return {\n accessToken: token.accessToken,\n user: user ? mapUserToAPI(user) : undefined,\n project: project ? mapProjectToAPI(project) : undefined,\n organization: organization ? mapOrganizationToAPI(organization) : undefined,\n grants,\n };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA6BA,MAAa,kCAGR;AAIH,QAAO;EAAE,uCAHoB,GAAG,CAAC,SAAS,MAAM;EAG7B,2CAFc,GAAG,CAAC,SAAS,MAAM;EAEnB;;;;;;;;;AAUnC,MAAa,gCAAgC,OAC3C,aASG;CACH,MAAM,UAAU,MAAMA,0CAAa,QAAQ,EACzC,yBAAyB,UAC1B,CAAC;AAEF,KAAI,CAAC,QACH,QAAO;CAGT,MAAM,eAAe,QAAQ,aAAa,MACvC,WAAW,OAAO,aAAa,SACjC;AAED,KAAI,CAAC,aACH,QAAO;AAUT,QAAO;EACL,QAR8B;GAC9B,IAAI,aAAa;GACjB;GACA,cAAc,aAAa;GAC3B,QAAQ,CAAC,qBAAqB;GAC/B;EAIC;EACA,QAAQ,aAAa;EACrB;EACD;;;;;;;;;AAUH,MAAa,YAAY,OACvB,UACA,iBAC4B;CAC5B,MAAM,SAAS,MAAM,8BAA8B,SAAS;AAE5D,KAAI,CAAC,OACH,QAAO;CAGT,MAAM,EAAE,WAAW;AAEnB,KAAI,CAAC,UAAU,OAAO,iBAAiB,aACrC,QAAO;AAGT,QAAO;;;;;;;;;;;;;AAcT,MAAa,qBACX,OACA,QACA,MACA,SACA,cACA,WACgB;CAEhB,MAAM,EAAE,UAAU,QAAQ,GAAG,cAAc;AAE3C,KAAI,OAAO,OAAO,KAAK,OAAO,KAAK,GAAG,CACpC,OAAM,IAAIC,8CAAa,mBAAmB;AAc5C,QAXoC;EAClC,GAAG;EACH;EACA,MAAMC,uCAAa,KAAK;EACxB,cAAcC,uDAAqB,aAAa;EAChD,SAASC,6CAAgB,QAAQ;EACjC,aAAa,MAAM;EACnB,sBAAsB,MAAM,wCAAwB,IAAI,KAAK,YAAY;EACzE;EACD;;;;;;;;;;AAaH,MAAa,iBACX,OACA,UACA,WACU;AASV,QAR8B;EAC5B,IAAI,MAAM;EACA;EACF;EACR,aAAa,MAAM;EACnB,WAAW,MAAM,wBAAwBC,uCAAkB;EAC5D;;;;;;;;;;AAaH,MAAa,YAAY,OACvB,OACA,QACA,SACiC;CACjC,MAAMC,uBAA8B,cAAc,OAAO,OAAO,IAAI,KAAK,GAAG;CAE5E,MAAM,SAAS,MAAMC,mDAAuB,OAAO,qBAAqB;AAExE,KAAI,CAAC,OACH,QAAO;CAGT,MAAM,UAAU,MAAM,8BAA8B,OAAO,SAAS;AAEpE,KAAI,CAAC,QACH,QAAO;CAGT,MAAM,EAAE,YAAY;CAEpB,MAAM,eAAe,MAAMC,0DAAoB,QAAQ,eAAe;AAEtE,KAAI,CAAC,aACH,QAAO;AAWT,QARwB,kBACtB,sBACA,QACA,MACA,SACA,cACA,MAAM,OACP;;;;;;;;AAUH,MAAa,iBAAiB,OAC5B,gBACiC;CACjC,MAAM,QAAQ,MAAMD,mDAAuB,QAAQ,EACjD,aACD,CAAC;AAEF,KAAI,CAAC,MACH,QAAO;CAGT,MAAM,EAAE,QAAQ,aAAa;CAE7B,MAAM,OAAO,MAAME,0CAAY,OAAO;AAEtC,KAAI,CAAC,KACH,QAAO;CAGT,MAAM,SAAS,MAAM,8BAA8B,SAAS;AAE5D,KAAI,CAAC,OACH,QAAO;CAGT,MAAM,EAAE,QAAQ,SAAS,WAAW;CAEpC,MAAM,eAAe,MAAMD,0DAAoB,QAAQ,eAAe;AAEtE,KAAI,CAAC,aACH,QAAO;AAYT,QAT6B,kBAC3B,OACA,QACA,MACA,SACA,cACA,OACD;;;;;;;;AAWH,MAAa,oBAAoB,OAC/B,WACkC;CAClC,MAAM,WAAW,MAAM,8BAA8B,OAAO,GAAG;AAE/D,KAAI,CAAC,SACH,QAAO;CAGT,MAAM,EAAE,WAAW,SAAS;AAE5B,KAAI,CAAC,OACH,QAAO;AAKT,QAFa,MAAMC,0CAAY,OAAO,IAEvB;;;;;;;;;AAUjB,MAAa,cAAc,OACzB,QACA,QACA,cACqB;AAErB,QAAO;;;;;AAMT,MAAa,4BAA4B,OACvC,gBACmB;AACnB,KAAI;EACF,MAAM,QAAQ,MAAMF,mDAAuB,QAAQ,EACjD,aACD,CAAC;AAEF,MAAI,CAAC,MACH,OAAM,IAAIN,8CAAa,uBAAuB;AAIhD,sBAAI,IAAI,MAAM,GAAG,IAAI,KAAK,MAAM,UAAU,CACxC,OAAM,IAAIA,8CAAa,uBAAuB;AAGhD,SAAOS,sEAA4B,MAAM;UAClC,QAAQ;AACf,QAAM,IAAIT,8CAAa,uBAAuB;;;;;;AAOlD,MAAa,8BAA8B,OACzC,UACiC;CACjC,MAAM,EAAE,QAAQ,aAAa;CAE7B,MAAM,OAAO,MAAMQ,0CAAY,OAAO,OAAO,CAAC;CAE9C,MAAM,SAAS,MAAM,8BAA8B,SAAS;AAE5D,KAAI,CAAC,OACH,OAAM,IAAIR,8CAAa,uBAAuB;CAGhD,MAAM,EAAE,SAAS,WAAW;CAE5B,MAAM,eAAe,MAAMO,0DAAoB,QAAQ,eAAe;AAEtE,QAAO;EACL,aAAa,MAAM;EACnB,MAAM,OAAON,uCAAa,KAAK,GAAG;EAClC,SAAS,UAAUE,6CAAgB,QAAQ,GAAG;EAC9C,cAAc,eAAeD,uDAAqB,aAAa,GAAG;EAClE;EACD"}