@intlayer/backend 7.5.9 → 7.5.10

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 (222) hide show
  1. package/README.md +9 -2
  2. package/dist/assets/utils/AI/askDocQuestion/PROMPT.md +1 -1
  3. package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/intlayer_with_fastify.json +9 -0
  4. package/dist/esm/controllers/ai.controller.mjs +95 -128
  5. package/dist/esm/controllers/ai.controller.mjs.map +1 -1
  6. package/dist/esm/controllers/dictionary.controller.mjs +86 -198
  7. package/dist/esm/controllers/dictionary.controller.mjs.map +1 -1
  8. package/dist/esm/controllers/eventListener.controller.mjs +13 -19
  9. package/dist/esm/controllers/eventListener.controller.mjs.map +1 -1
  10. package/dist/esm/controllers/github.controller.mjs +77 -0
  11. package/dist/esm/controllers/github.controller.mjs.map +1 -0
  12. package/dist/esm/controllers/newsletter.controller.mjs +30 -60
  13. package/dist/esm/controllers/newsletter.controller.mjs.map +1 -1
  14. package/dist/esm/controllers/oAuth2.controller.mjs +11 -8
  15. package/dist/esm/controllers/oAuth2.controller.mjs.map +1 -1
  16. package/dist/esm/controllers/organization.controller.mjs +100 -225
  17. package/dist/esm/controllers/organization.controller.mjs.map +1 -1
  18. package/dist/esm/controllers/project.controller.mjs +87 -204
  19. package/dist/esm/controllers/project.controller.mjs.map +1 -1
  20. package/dist/esm/controllers/projectAccessKey.controller.mjs +38 -71
  21. package/dist/esm/controllers/projectAccessKey.controller.mjs.map +1 -1
  22. package/dist/esm/controllers/search.controller.mjs +3 -3
  23. package/dist/esm/controllers/search.controller.mjs.map +1 -1
  24. package/dist/esm/controllers/stripe.controller.mjs +34 -67
  25. package/dist/esm/controllers/stripe.controller.mjs.map +1 -1
  26. package/dist/esm/controllers/tag.controller.mjs +51 -113
  27. package/dist/esm/controllers/tag.controller.mjs.map +1 -1
  28. package/dist/esm/controllers/user.controller.mjs +64 -113
  29. package/dist/esm/controllers/user.controller.mjs.map +1 -1
  30. package/dist/esm/export.mjs +2 -1
  31. package/dist/esm/index.mjs +101 -41
  32. package/dist/esm/index.mjs.map +1 -1
  33. package/dist/esm/middlewares/oAuth2.middleware.mjs +19 -14
  34. package/dist/esm/middlewares/oAuth2.middleware.mjs.map +1 -1
  35. package/dist/esm/middlewares/sessionAuth.middleware.mjs +6 -7
  36. package/dist/esm/middlewares/sessionAuth.middleware.mjs.map +1 -1
  37. package/dist/esm/routes/ai.routes.mjs +19 -15
  38. package/dist/esm/routes/ai.routes.mjs.map +1 -1
  39. package/dist/esm/routes/dictionary.routes.mjs +10 -10
  40. package/dist/esm/routes/dictionary.routes.mjs.map +1 -1
  41. package/dist/esm/routes/eventListener.routes.mjs +3 -3
  42. package/dist/esm/routes/eventListener.routes.mjs.map +1 -1
  43. package/dist/esm/routes/github.routes.mjs +43 -0
  44. package/dist/esm/routes/github.routes.mjs.map +1 -0
  45. package/dist/esm/routes/newsletter.routes.mjs +5 -5
  46. package/dist/esm/routes/newsletter.routes.mjs.map +1 -1
  47. package/dist/esm/routes/organization.routes.mjs +11 -11
  48. package/dist/esm/routes/organization.routes.mjs.map +1 -1
  49. package/dist/esm/routes/project.routes.mjs +13 -13
  50. package/dist/esm/routes/project.routes.mjs.map +1 -1
  51. package/dist/esm/routes/search.routes.mjs +3 -3
  52. package/dist/esm/routes/search.routes.mjs.map +1 -1
  53. package/dist/esm/routes/stripe.routes.mjs +5 -5
  54. package/dist/esm/routes/stripe.routes.mjs.map +1 -1
  55. package/dist/esm/routes/tags.routes.mjs +6 -6
  56. package/dist/esm/routes/tags.routes.mjs.map +1 -1
  57. package/dist/esm/routes/user.routes.mjs +9 -9
  58. package/dist/esm/routes/user.routes.mjs.map +1 -1
  59. package/dist/esm/schemas/project.schema.mjs +35 -1
  60. package/dist/esm/schemas/project.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/github.service.mjs +130 -0
  64. package/dist/esm/services/github.service.mjs.map +1 -0
  65. package/dist/esm/services/oAuth2.service.mjs +1 -1
  66. package/dist/esm/services/subscription.service.mjs +1 -1
  67. package/dist/esm/services/subscription.service.mjs.map +1 -1
  68. package/dist/esm/utils/auth/getAuth.mjs +14 -8
  69. package/dist/esm/utils/auth/getAuth.mjs.map +1 -1
  70. package/dist/esm/utils/cors.mjs +15 -5
  71. package/dist/esm/utils/cors.mjs.map +1 -1
  72. package/dist/esm/utils/errors/ErrorHandler.mjs +32 -4
  73. package/dist/esm/utils/errors/ErrorHandler.mjs.map +1 -1
  74. package/dist/esm/utils/errors/ErrorsClass.mjs +1 -1
  75. package/dist/esm/utils/errors/ErrorsClass.mjs.map +1 -1
  76. package/dist/esm/utils/errors/errorCodes.mjs +78 -0
  77. package/dist/esm/utils/errors/errorCodes.mjs.map +1 -1
  78. package/dist/esm/utils/filtersAndPagination/getDictionaryFiltersAndPagination.mjs +3 -2
  79. package/dist/esm/utils/filtersAndPagination/getDictionaryFiltersAndPagination.mjs.map +1 -1
  80. package/dist/esm/utils/filtersAndPagination/getDiscussionFiltersAndPagination.mjs +1 -1
  81. package/dist/esm/utils/filtersAndPagination/getDiscussionFiltersAndPagination.mjs.map +1 -1
  82. package/dist/esm/utils/filtersAndPagination/getFiltersAndPaginationFromBody.mjs +1 -1
  83. package/dist/esm/utils/filtersAndPagination/getFiltersAndPaginationFromBody.mjs.map +1 -1
  84. package/dist/esm/utils/filtersAndPagination/getOrganizationFiltersAndPagination.mjs +3 -2
  85. package/dist/esm/utils/filtersAndPagination/getOrganizationFiltersAndPagination.mjs.map +1 -1
  86. package/dist/esm/utils/filtersAndPagination/getProjectFiltersAndPagination.mjs +3 -2
  87. package/dist/esm/utils/filtersAndPagination/getProjectFiltersAndPagination.mjs.map +1 -1
  88. package/dist/esm/utils/filtersAndPagination/getTagFiltersAndPagination.mjs +3 -2
  89. package/dist/esm/utils/filtersAndPagination/getTagFiltersAndPagination.mjs.map +1 -1
  90. package/dist/esm/utils/filtersAndPagination/getUserFiltersAndPagination.mjs +3 -2
  91. package/dist/esm/utils/filtersAndPagination/getUserFiltersAndPagination.mjs.map +1 -1
  92. package/dist/esm/utils/mapper/project.mjs +28 -1
  93. package/dist/esm/utils/mapper/project.mjs.map +1 -1
  94. package/dist/esm/utils/mongoDB/connectDB.mjs +1 -1
  95. package/dist/esm/utils/rateLimiter.mjs +40 -30
  96. package/dist/esm/utils/rateLimiter.mjs.map +1 -1
  97. package/dist/esm/webhooks/stripe.webhook.mjs +2 -2
  98. package/dist/esm/webhooks/stripe.webhook.mjs.map +1 -1
  99. package/dist/types/controllers/ai.controller.d.ts +29 -12
  100. package/dist/types/controllers/ai.controller.d.ts.map +1 -1
  101. package/dist/types/controllers/dictionary.controller.d.ts +23 -13
  102. package/dist/types/controllers/dictionary.controller.d.ts.map +1 -1
  103. package/dist/types/controllers/eventListener.controller.d.ts +4 -2
  104. package/dist/types/controllers/eventListener.controller.d.ts.map +1 -1
  105. package/dist/types/controllers/github.controller.d.ts +63 -0
  106. package/dist/types/controllers/github.controller.d.ts.map +1 -0
  107. package/dist/types/controllers/newsletter.controller.d.ts +8 -7
  108. package/dist/types/controllers/newsletter.controller.d.ts.map +1 -1
  109. package/dist/types/controllers/oAuth2.controller.d.ts +4 -2
  110. package/dist/types/controllers/oAuth2.controller.d.ts.map +1 -1
  111. package/dist/types/controllers/organization.controller.d.ts +28 -12
  112. package/dist/types/controllers/organization.controller.d.ts.map +1 -1
  113. package/dist/types/controllers/project.controller.d.ts +21 -16
  114. package/dist/types/controllers/project.controller.d.ts.map +1 -1
  115. package/dist/types/controllers/projectAccessKey.controller.d.ts +10 -5
  116. package/dist/types/controllers/projectAccessKey.controller.d.ts.map +1 -1
  117. package/dist/types/controllers/search.controller.d.ts +4 -2
  118. package/dist/types/controllers/search.controller.d.ts.map +1 -1
  119. package/dist/types/controllers/stripe.controller.d.ts +11 -12
  120. package/dist/types/controllers/stripe.controller.d.ts.map +1 -1
  121. package/dist/types/controllers/tag.controller.d.ts +14 -9
  122. package/dist/types/controllers/tag.controller.d.ts.map +1 -1
  123. package/dist/types/controllers/user.controller.d.ts +22 -9
  124. package/dist/types/controllers/user.controller.d.ts.map +1 -1
  125. package/dist/types/emails/InviteUserEmail.d.ts +4 -4
  126. package/dist/types/emails/MagicLinkEmail.d.ts +4 -4
  127. package/dist/types/emails/MagicLinkEmail.d.ts.map +1 -1
  128. package/dist/types/emails/OAuthTokenCreatedEmail.d.ts +4 -4
  129. package/dist/types/emails/PasswordChangeConfirmation.d.ts +4 -4
  130. package/dist/types/emails/PasswordChangeConfirmation.d.ts.map +1 -1
  131. package/dist/types/emails/ResetUserPassword.d.ts +4 -4
  132. package/dist/types/emails/SubscriptionPaymentCancellation.d.ts +4 -4
  133. package/dist/types/emails/SubscriptionPaymentCancellation.d.ts.map +1 -1
  134. package/dist/types/emails/SubscriptionPaymentError.d.ts +4 -4
  135. package/dist/types/emails/SubscriptionPaymentSuccess.d.ts +4 -4
  136. package/dist/types/emails/ValidateUserEmail.d.ts +4 -4
  137. package/dist/types/emails/ValidateUserEmail.d.ts.map +1 -1
  138. package/dist/types/emails/Welcome.d.ts +4 -4
  139. package/dist/types/export.d.ts +6 -4
  140. package/dist/types/middlewares/oAuth2.middleware.d.ts +9 -4
  141. package/dist/types/middlewares/oAuth2.middleware.d.ts.map +1 -1
  142. package/dist/types/middlewares/sessionAuth.middleware.d.ts +13 -3
  143. package/dist/types/middlewares/sessionAuth.middleware.d.ts.map +1 -1
  144. package/dist/types/models/dictionary.model.d.ts +4 -4
  145. package/dist/types/models/dictionary.model.d.ts.map +1 -1
  146. package/dist/types/models/discussion.model.d.ts +2 -2
  147. package/dist/types/models/discussion.model.d.ts.map +1 -1
  148. package/dist/types/models/oAuth2.model.d.ts +3 -3
  149. package/dist/types/models/oAuth2.model.d.ts.map +1 -1
  150. package/dist/types/routes/ai.routes.d.ts +2 -2
  151. package/dist/types/routes/ai.routes.d.ts.map +1 -1
  152. package/dist/types/routes/dictionary.routes.d.ts +2 -2
  153. package/dist/types/routes/dictionary.routes.d.ts.map +1 -1
  154. package/dist/types/routes/eventListener.routes.d.ts +2 -2
  155. package/dist/types/routes/eventListener.routes.d.ts.map +1 -1
  156. package/dist/types/routes/github.routes.d.ts +35 -0
  157. package/dist/types/routes/github.routes.d.ts.map +1 -0
  158. package/dist/types/routes/newsletter.routes.d.ts +2 -2
  159. package/dist/types/routes/newsletter.routes.d.ts.map +1 -1
  160. package/dist/types/routes/organization.routes.d.ts +2 -2
  161. package/dist/types/routes/organization.routes.d.ts.map +1 -1
  162. package/dist/types/routes/project.routes.d.ts +2 -2
  163. package/dist/types/routes/project.routes.d.ts.map +1 -1
  164. package/dist/types/routes/search.routes.d.ts +2 -2
  165. package/dist/types/routes/search.routes.d.ts.map +1 -1
  166. package/dist/types/routes/stripe.routes.d.ts +2 -2
  167. package/dist/types/routes/stripe.routes.d.ts.map +1 -1
  168. package/dist/types/routes/tags.routes.d.ts +2 -2
  169. package/dist/types/routes/tags.routes.d.ts.map +1 -1
  170. package/dist/types/routes/user.routes.d.ts +2 -2
  171. package/dist/types/routes/user.routes.d.ts.map +1 -1
  172. package/dist/types/schemas/dictionary.schema.d.ts +6 -6
  173. package/dist/types/schemas/discussion.schema.d.ts +6 -6
  174. package/dist/types/schemas/oAuth2.schema.d.ts +5 -5
  175. package/dist/types/schemas/organization.schema.d.ts +6 -6
  176. package/dist/types/schemas/plans.schema.d.ts +6 -6
  177. package/dist/types/schemas/plans.schema.d.ts.map +1 -1
  178. package/dist/types/schemas/project.schema.d.ts +6 -6
  179. package/dist/types/schemas/project.schema.d.ts.map +1 -1
  180. package/dist/types/schemas/session.schema.d.ts +6 -6
  181. package/dist/types/schemas/tag.schema.d.ts +6 -6
  182. package/dist/types/schemas/user.schema.d.ts +6 -6
  183. package/dist/types/schemas/user.schema.d.ts.map +1 -1
  184. package/dist/types/services/email.service.d.ts +11 -11
  185. package/dist/types/services/github.service.d.ts +21 -0
  186. package/dist/types/services/github.service.d.ts.map +1 -0
  187. package/dist/types/types/project.types.d.ts +18 -5
  188. package/dist/types/types/project.types.d.ts.map +1 -1
  189. package/dist/types/types/session.types.d.ts +1 -1
  190. package/dist/types/types/user.types.d.ts +1 -1
  191. package/dist/types/utils/AI/auditTag/index.d.ts +1 -1
  192. package/dist/types/utils/auth/getAuth.d.ts.map +1 -1
  193. package/dist/types/utils/cors.d.ts +2 -2
  194. package/dist/types/utils/errors/ErrorHandler.d.ts +31 -3
  195. package/dist/types/utils/errors/ErrorHandler.d.ts.map +1 -1
  196. package/dist/types/utils/errors/ErrorsClass.d.ts +1 -1
  197. package/dist/types/utils/errors/errorCodes.d.ts +78 -0
  198. package/dist/types/utils/errors/errorCodes.d.ts.map +1 -1
  199. package/dist/types/utils/filtersAndPagination/getDictionaryFiltersAndPagination.d.ts +8 -4
  200. package/dist/types/utils/filtersAndPagination/getDictionaryFiltersAndPagination.d.ts.map +1 -1
  201. package/dist/types/utils/filtersAndPagination/getDiscussionFiltersAndPagination.d.ts +6 -3
  202. package/dist/types/utils/filtersAndPagination/getDiscussionFiltersAndPagination.d.ts.map +1 -1
  203. package/dist/types/utils/filtersAndPagination/getFiltersAndPaginationFromBody.d.ts +6 -2
  204. package/dist/types/utils/filtersAndPagination/getFiltersAndPaginationFromBody.d.ts.map +1 -1
  205. package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts +8 -4
  206. package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts.map +1 -1
  207. package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts +8 -4
  208. package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts.map +1 -1
  209. package/dist/types/utils/filtersAndPagination/getTagFiltersAndPagination.d.ts +8 -4
  210. package/dist/types/utils/filtersAndPagination/getTagFiltersAndPagination.d.ts.map +1 -1
  211. package/dist/types/utils/filtersAndPagination/getUserFiltersAndPagination.d.ts +6 -2
  212. package/dist/types/utils/filtersAndPagination/getUserFiltersAndPagination.d.ts.map +1 -1
  213. package/dist/types/utils/mapper/project.d.ts.map +1 -1
  214. package/dist/types/utils/mergeFunctionTypes.d.ts.map +1 -1
  215. package/dist/types/utils/permissions.d.ts +1 -1
  216. package/dist/types/utils/rateLimiter.d.ts +4 -2
  217. package/dist/types/utils/rateLimiter.d.ts.map +1 -1
  218. package/package.json +23 -27
  219. package/dist/esm/middlewares/request.middleware.mjs +0 -17
  220. package/dist/esm/middlewares/request.middleware.mjs.map +0 -1
  221. package/dist/types/middlewares/request.middleware.d.ts +0 -7
  222. package/dist/types/middlewares/request.middleware.d.ts.map +0 -1
@@ -0,0 +1,43 @@
1
+ import { authCallback, checkConfig, getAuthUrl, getConfigFile, listRepos } from "../controllers/github.controller.mjs";
2
+
3
+ //#region src/routes/github.routes.ts
4
+ const githubRoute = "/api/github";
5
+ const baseURL = () => `${process.env.BACKEND_URL}${githubRoute}`;
6
+ const getGithubRoutes = () => ({
7
+ getAuthUrl: {
8
+ urlModel: "/auth-url",
9
+ url: `${baseURL()}/auth-url`,
10
+ method: "GET"
11
+ },
12
+ authCallback: {
13
+ urlModel: "/auth",
14
+ url: `${baseURL()}/auth`,
15
+ method: "POST"
16
+ },
17
+ listRepos: {
18
+ urlModel: "/repos",
19
+ url: `${baseURL()}/repos`,
20
+ method: "GET"
21
+ },
22
+ checkConfig: {
23
+ urlModel: "/check-config",
24
+ url: `${baseURL()}/check-config`,
25
+ method: "POST"
26
+ },
27
+ getConfigFile: {
28
+ urlModel: "/get-config-file",
29
+ url: `${baseURL()}/get-config-file`,
30
+ method: "POST"
31
+ }
32
+ });
33
+ const githubRouter = async (fastify) => {
34
+ fastify.get(getGithubRoutes().getAuthUrl.urlModel, getAuthUrl);
35
+ fastify.post(getGithubRoutes().authCallback.urlModel, authCallback);
36
+ fastify.get(getGithubRoutes().listRepos.urlModel, listRepos);
37
+ fastify.post(getGithubRoutes().checkConfig.urlModel, checkConfig);
38
+ fastify.post(getGithubRoutes().getConfigFile.urlModel, getConfigFile);
39
+ };
40
+
41
+ //#endregion
42
+ export { getGithubRoutes, githubRoute, githubRouter };
43
+ //# sourceMappingURL=github.routes.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.routes.mjs","names":[],"sources":["../../../src/routes/github.routes.ts"],"sourcesContent":["import {\n authCallback,\n checkConfig,\n getAuthUrl,\n getConfigFile,\n listRepos,\n} from '@controllers/github.controller';\nimport type { FastifyInstance } from 'fastify';\nimport type { Routes } from '@/types/Routes';\n\nexport const githubRoute = '/api/github';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${githubRoute}`;\n\nexport const getGithubRoutes = () =>\n ({\n getAuthUrl: {\n urlModel: '/auth-url',\n url: `${baseURL()}/auth-url`,\n method: 'GET',\n },\n authCallback: {\n urlModel: '/auth',\n url: `${baseURL()}/auth`,\n method: 'POST',\n },\n listRepos: {\n urlModel: '/repos',\n url: `${baseURL()}/repos`,\n method: 'GET',\n },\n checkConfig: {\n urlModel: '/check-config',\n url: `${baseURL()}/check-config`,\n method: 'POST',\n },\n getConfigFile: {\n urlModel: '/get-config-file',\n url: `${baseURL()}/get-config-file`,\n method: 'POST',\n },\n }) satisfies Routes;\n\nexport const githubRouter = async (fastify: FastifyInstance) => {\n fastify.get(getGithubRoutes().getAuthUrl.urlModel, getAuthUrl);\n fastify.post(getGithubRoutes().authCallback.urlModel, authCallback);\n fastify.get(getGithubRoutes().listRepos.urlModel, listRepos);\n fastify.post(getGithubRoutes().checkConfig.urlModel, checkConfig);\n fastify.post(getGithubRoutes().getConfigFile.urlModel, getConfigFile);\n};\n"],"mappings":";;;AAUA,MAAa,cAAc;AAE3B,MAAM,gBAAgB,GAAG,QAAQ,IAAI,cAAc;AAEnD,MAAa,yBACV;CACC,YAAY;EACV,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,cAAc;EACZ,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,WAAW;EACT,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,aAAa;EACX,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,eAAe;EACb,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACF;AAEH,MAAa,eAAe,OAAO,YAA6B;AAC9D,SAAQ,IAAI,iBAAiB,CAAC,WAAW,UAAU,WAAW;AAC9D,SAAQ,KAAK,iBAAiB,CAAC,aAAa,UAAU,aAAa;AACnE,SAAQ,IAAI,iBAAiB,CAAC,UAAU,UAAU,UAAU;AAC5D,SAAQ,KAAK,iBAAiB,CAAC,YAAY,UAAU,YAAY;AACjE,SAAQ,KAAK,iBAAiB,CAAC,cAAc,UAAU,cAAc"}
@@ -1,8 +1,6 @@
1
1
  import { getNewsletterStatus, subscribeToNewsletter, unsubscribeFromNewsletter } from "../controllers/newsletter.controller.mjs";
2
- import { Router } from "express";
3
2
 
4
3
  //#region src/routes/newsletter.routes.ts
5
- const newsletterRouter = Router();
6
4
  const newsletterRoute = "/api/newsletter";
7
5
  const baseURL = () => `${process.env.BACKEND_URL}${newsletterRoute}`;
8
6
  const getNewsletterRoutes = () => ({
@@ -22,9 +20,11 @@ const getNewsletterRoutes = () => ({
22
20
  method: "GET"
23
21
  }
24
22
  });
25
- newsletterRouter.post(getNewsletterRoutes().subscribeToNewsletter.urlModel, subscribeToNewsletter);
26
- newsletterRouter.post(getNewsletterRoutes().unsubscribeFromNewsletter.urlModel, unsubscribeFromNewsletter);
27
- newsletterRouter.get(getNewsletterRoutes().getNewsletterStatus.urlModel, getNewsletterStatus);
23
+ const newsletterRouter = async (fastify) => {
24
+ fastify.post(getNewsletterRoutes().subscribeToNewsletter.urlModel, subscribeToNewsletter);
25
+ fastify.post(getNewsletterRoutes().unsubscribeFromNewsletter.urlModel, unsubscribeFromNewsletter);
26
+ fastify.get(getNewsletterRoutes().getNewsletterStatus.urlModel, getNewsletterStatus);
27
+ };
28
28
 
29
29
  //#endregion
30
30
  export { getNewsletterRoutes, newsletterRoute, newsletterRouter };
@@ -1 +1 @@
1
- {"version":3,"file":"newsletter.routes.mjs","names":["newsletterRouter: Router"],"sources":["../../../src/routes/newsletter.routes.ts"],"sourcesContent":["import {\n getNewsletterStatus,\n subscribeToNewsletter,\n unsubscribeFromNewsletter,\n} from '@controllers/newsletter.controller';\nimport { Router } from 'express';\nimport type { Routes } from '@/types/Routes';\n\nexport const newsletterRouter: Router = Router();\n\nexport const newsletterRoute = '/api/newsletter';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${newsletterRoute}`;\n\nexport const getNewsletterRoutes = () =>\n ({\n subscribeToNewsletter: {\n urlModel: '/subscribe',\n url: `${baseURL()}/subscribe`,\n method: 'POST',\n },\n unsubscribeFromNewsletter: {\n urlModel: '/unsubscribe',\n url: `${baseURL()}/unsubscribe`,\n method: 'POST',\n },\n getNewsletterStatus: {\n urlModel: '/status',\n url: `${baseURL()}/status`,\n method: 'GET',\n },\n }) satisfies Routes;\n\nnewsletterRouter.post(\n getNewsletterRoutes().subscribeToNewsletter.urlModel,\n subscribeToNewsletter\n);\nnewsletterRouter.post(\n getNewsletterRoutes().unsubscribeFromNewsletter.urlModel,\n unsubscribeFromNewsletter\n);\nnewsletterRouter.get(\n getNewsletterRoutes().getNewsletterStatus.urlModel,\n getNewsletterStatus\n);\n"],"mappings":";;;;AAQA,MAAaA,mBAA2B,QAAQ;AAEhD,MAAa,kBAAkB;AAE/B,MAAM,gBAAgB,GAAG,QAAQ,IAAI,cAAc;AAEnD,MAAa,6BACV;CACC,uBAAuB;EACrB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,2BAA2B;EACzB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,qBAAqB;EACnB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACF;AAEH,iBAAiB,KACf,qBAAqB,CAAC,sBAAsB,UAC5C,sBACD;AACD,iBAAiB,KACf,qBAAqB,CAAC,0BAA0B,UAChD,0BACD;AACD,iBAAiB,IACf,qBAAqB,CAAC,oBAAoB,UAC1C,oBACD"}
1
+ {"version":3,"file":"newsletter.routes.mjs","names":[],"sources":["../../../src/routes/newsletter.routes.ts"],"sourcesContent":["import {\n getNewsletterStatus,\n subscribeToNewsletter,\n unsubscribeFromNewsletter,\n} from '@controllers/newsletter.controller';\nimport type { FastifyInstance } from 'fastify';\nimport type { Routes } from '@/types/Routes';\n\nexport const newsletterRoute = '/api/newsletter';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${newsletterRoute}`;\n\nexport const getNewsletterRoutes = () =>\n ({\n subscribeToNewsletter: {\n urlModel: '/subscribe',\n url: `${baseURL()}/subscribe`,\n method: 'POST',\n },\n unsubscribeFromNewsletter: {\n urlModel: '/unsubscribe',\n url: `${baseURL()}/unsubscribe`,\n method: 'POST',\n },\n getNewsletterStatus: {\n urlModel: '/status',\n url: `${baseURL()}/status`,\n method: 'GET',\n },\n }) satisfies Routes;\n\nexport const newsletterRouter = async (fastify: FastifyInstance) => {\n fastify.post(\n getNewsletterRoutes().subscribeToNewsletter.urlModel,\n subscribeToNewsletter\n );\n fastify.post(\n getNewsletterRoutes().unsubscribeFromNewsletter.urlModel,\n unsubscribeFromNewsletter\n );\n fastify.get(\n getNewsletterRoutes().getNewsletterStatus.urlModel,\n getNewsletterStatus\n );\n};\n"],"mappings":";;;AAQA,MAAa,kBAAkB;AAE/B,MAAM,gBAAgB,GAAG,QAAQ,IAAI,cAAc;AAEnD,MAAa,6BACV;CACC,uBAAuB;EACrB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,2BAA2B;EACzB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,qBAAqB;EACnB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACF;AAEH,MAAa,mBAAmB,OAAO,YAA6B;AAClE,SAAQ,KACN,qBAAqB,CAAC,sBAAsB,UAC5C,sBACD;AACD,SAAQ,KACN,qBAAqB,CAAC,0BAA0B,UAChD,0BACD;AACD,SAAQ,IACN,qBAAqB,CAAC,oBAAoB,UAC1C,oBACD"}
@@ -1,8 +1,6 @@
1
1
  import { addOrganization, addOrganizationMember, deleteOrganization, getOrganizations, selectOrganization, unselectOrganization, updateOrganization, updateOrganizationMembers, updateOrganizationMembersById } from "../controllers/organization.controller.mjs";
2
- import { Router } from "express";
3
2
 
4
3
  //#region src/routes/organization.routes.ts
5
- const organizationRouter = Router();
6
4
  const organizationRoute = "/api/organization";
7
5
  const baseURL = () => `${process.env.BACKEND_URL}${organizationRoute}`;
8
6
  const getOrganizationRoutes = () => ({
@@ -52,15 +50,17 @@ const getOrganizationRoutes = () => ({
52
50
  method: "POST"
53
51
  }
54
52
  });
55
- organizationRouter.get(getOrganizationRoutes().getOrganizations.urlModel, getOrganizations);
56
- organizationRouter.post(getOrganizationRoutes().addOrganization.urlModel, addOrganization);
57
- organizationRouter.put(getOrganizationRoutes().updateOrganization.urlModel, updateOrganization);
58
- organizationRouter.put(getOrganizationRoutes().updateOrganizationMembers.urlModel, updateOrganizationMembers);
59
- organizationRouter.put(getOrganizationRoutes().updateOrganizationMembersById.urlModel, updateOrganizationMembersById);
60
- organizationRouter.post(getOrganizationRoutes().addOrganizationMember.urlModel, addOrganizationMember);
61
- organizationRouter.delete(getOrganizationRoutes().deleteOrganization.urlModel, deleteOrganization);
62
- organizationRouter.put(getOrganizationRoutes().selectOrganization.urlModel, selectOrganization);
63
- organizationRouter.post(getOrganizationRoutes().unselectOrganization.urlModel, unselectOrganization);
53
+ const organizationRouter = async (fastify) => {
54
+ fastify.get(getOrganizationRoutes().getOrganizations.urlModel, getOrganizations);
55
+ fastify.post(getOrganizationRoutes().addOrganization.urlModel, addOrganization);
56
+ fastify.put(getOrganizationRoutes().updateOrganization.urlModel, updateOrganization);
57
+ fastify.put(getOrganizationRoutes().updateOrganizationMembers.urlModel, updateOrganizationMembers);
58
+ fastify.put(getOrganizationRoutes().updateOrganizationMembersById.urlModel, updateOrganizationMembersById);
59
+ fastify.post(getOrganizationRoutes().addOrganizationMember.urlModel, addOrganizationMember);
60
+ fastify.delete(getOrganizationRoutes().deleteOrganization.urlModel, deleteOrganization);
61
+ fastify.put(getOrganizationRoutes().selectOrganization.urlModel, selectOrganization);
62
+ fastify.post(getOrganizationRoutes().unselectOrganization.urlModel, unselectOrganization);
63
+ };
64
64
 
65
65
  //#endregion
66
66
  export { getOrganizationRoutes, organizationRoute, organizationRouter };
@@ -1 +1 @@
1
- {"version":3,"file":"organization.routes.mjs","names":["organizationRouter: Router"],"sources":["../../../src/routes/organization.routes.ts"],"sourcesContent":["import {\n addOrganization,\n addOrganizationMember,\n deleteOrganization,\n getOrganizations,\n selectOrganization,\n unselectOrganization,\n updateOrganization,\n updateOrganizationMembers,\n updateOrganizationMembersById,\n} from '@controllers/organization.controller';\nimport { Router } from 'express';\nimport type { Routes } from '@/types/Routes';\n\nexport const organizationRouter: Router = Router();\n\nexport const organizationRoute = '/api/organization';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${organizationRoute}`;\n\nexport const getOrganizationRoutes = () =>\n ({\n getOrganizations: {\n urlModel: '/',\n url: baseURL(),\n method: 'GET',\n },\n addOrganization: {\n urlModel: '/',\n url: baseURL(),\n method: 'POST',\n },\n updateOrganization: {\n urlModel: '/',\n url: baseURL(),\n\n method: 'PUT',\n },\n updateOrganizationMembers: {\n urlModel: '/members',\n url: `${baseURL()}/members`,\n method: 'PUT',\n },\n updateOrganizationMembersById: {\n urlModel: '/:organizationId/members',\n url: ({ organizationId }: { organizationId: string }) =>\n `${baseURL()}/${organizationId}/members`,\n method: 'PUT',\n },\n addOrganizationMember: {\n urlModel: '/member',\n url: `${baseURL()}/member`,\n method: 'POST',\n },\n deleteOrganization: {\n urlModel: '/',\n url: baseURL(),\n method: 'DELETE',\n },\n selectOrganization: {\n urlModel: '/:organizationId',\n url: ({ organizationId }: { organizationId: string }) =>\n `${baseURL()}/${organizationId}`,\n method: 'PUT',\n },\n unselectOrganization: {\n urlModel: '/logout',\n url: `${baseURL()}/logout`,\n method: 'POST',\n },\n }) satisfies Routes;\n\norganizationRouter.get(\n getOrganizationRoutes().getOrganizations.urlModel,\n getOrganizations\n);\n\norganizationRouter.post(\n getOrganizationRoutes().addOrganization.urlModel,\n addOrganization\n);\norganizationRouter.put(\n getOrganizationRoutes().updateOrganization.urlModel,\n updateOrganization\n);\norganizationRouter.put(\n getOrganizationRoutes().updateOrganizationMembers.urlModel,\n updateOrganizationMembers\n);\norganizationRouter.put(\n getOrganizationRoutes().updateOrganizationMembersById.urlModel,\n updateOrganizationMembersById\n);\norganizationRouter.post(\n getOrganizationRoutes().addOrganizationMember.urlModel,\n addOrganizationMember\n);\norganizationRouter.delete(\n getOrganizationRoutes().deleteOrganization.urlModel,\n deleteOrganization\n);\norganizationRouter.put(\n getOrganizationRoutes().selectOrganization.urlModel,\n selectOrganization\n);\n\norganizationRouter.post(\n getOrganizationRoutes().unselectOrganization.urlModel,\n unselectOrganization\n);\n"],"mappings":";;;;AAcA,MAAaA,qBAA6B,QAAQ;AAElD,MAAa,oBAAoB;AAEjC,MAAM,gBAAgB,GAAG,QAAQ,IAAI,cAAc;AAEnD,MAAa,+BACV;CACC,kBAAkB;EAChB,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,iBAAiB;EACf,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,oBAAoB;EAClB,UAAU;EACV,KAAK,SAAS;EAEd,QAAQ;EACT;CACD,2BAA2B;EACzB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,+BAA+B;EAC7B,UAAU;EACV,MAAM,EAAE,qBACN,GAAG,SAAS,CAAC,GAAG,eAAe;EACjC,QAAQ;EACT;CACD,uBAAuB;EACrB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,oBAAoB;EAClB,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,oBAAoB;EAClB,UAAU;EACV,MAAM,EAAE,qBACN,GAAG,SAAS,CAAC,GAAG;EAClB,QAAQ;EACT;CACD,sBAAsB;EACpB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACF;AAEH,mBAAmB,IACjB,uBAAuB,CAAC,iBAAiB,UACzC,iBACD;AAED,mBAAmB,KACjB,uBAAuB,CAAC,gBAAgB,UACxC,gBACD;AACD,mBAAmB,IACjB,uBAAuB,CAAC,mBAAmB,UAC3C,mBACD;AACD,mBAAmB,IACjB,uBAAuB,CAAC,0BAA0B,UAClD,0BACD;AACD,mBAAmB,IACjB,uBAAuB,CAAC,8BAA8B,UACtD,8BACD;AACD,mBAAmB,KACjB,uBAAuB,CAAC,sBAAsB,UAC9C,sBACD;AACD,mBAAmB,OACjB,uBAAuB,CAAC,mBAAmB,UAC3C,mBACD;AACD,mBAAmB,IACjB,uBAAuB,CAAC,mBAAmB,UAC3C,mBACD;AAED,mBAAmB,KACjB,uBAAuB,CAAC,qBAAqB,UAC7C,qBACD"}
1
+ {"version":3,"file":"organization.routes.mjs","names":[],"sources":["../../../src/routes/organization.routes.ts"],"sourcesContent":["import {\n addOrganization,\n addOrganizationMember,\n deleteOrganization,\n getOrganizations,\n selectOrganization,\n unselectOrganization,\n updateOrganization,\n updateOrganizationMembers,\n updateOrganizationMembersById,\n} from '@controllers/organization.controller';\nimport type { FastifyInstance } from 'fastify';\nimport type { Routes } from '@/types/Routes';\n\nexport const organizationRoute = '/api/organization';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${organizationRoute}`;\n\nexport const getOrganizationRoutes = () =>\n ({\n getOrganizations: {\n urlModel: '/',\n url: baseURL(),\n method: 'GET',\n },\n addOrganization: {\n urlModel: '/',\n url: baseURL(),\n method: 'POST',\n },\n updateOrganization: {\n urlModel: '/',\n url: baseURL(),\n\n method: 'PUT',\n },\n updateOrganizationMembers: {\n urlModel: '/members',\n url: `${baseURL()}/members`,\n method: 'PUT',\n },\n updateOrganizationMembersById: {\n urlModel: '/:organizationId/members',\n url: ({ organizationId }: { organizationId: string }) =>\n `${baseURL()}/${organizationId}/members`,\n method: 'PUT',\n },\n addOrganizationMember: {\n urlModel: '/member',\n url: `${baseURL()}/member`,\n method: 'POST',\n },\n deleteOrganization: {\n urlModel: '/',\n url: baseURL(),\n method: 'DELETE',\n },\n selectOrganization: {\n urlModel: '/:organizationId',\n url: ({ organizationId }: { organizationId: string }) =>\n `${baseURL()}/${organizationId}`,\n method: 'PUT',\n },\n unselectOrganization: {\n urlModel: '/logout',\n url: `${baseURL()}/logout`,\n method: 'POST',\n },\n }) satisfies Routes;\n\nexport const organizationRouter = async (fastify: FastifyInstance) => {\n fastify.get(\n getOrganizationRoutes().getOrganizations.urlModel,\n getOrganizations\n );\n fastify.post(\n getOrganizationRoutes().addOrganization.urlModel,\n addOrganization\n );\n fastify.put(\n getOrganizationRoutes().updateOrganization.urlModel,\n updateOrganization\n );\n fastify.put(\n getOrganizationRoutes().updateOrganizationMembers.urlModel,\n updateOrganizationMembers\n );\n fastify.put(\n getOrganizationRoutes().updateOrganizationMembersById.urlModel,\n updateOrganizationMembersById\n );\n fastify.post(\n getOrganizationRoutes().addOrganizationMember.urlModel,\n addOrganizationMember\n );\n fastify.delete(\n getOrganizationRoutes().deleteOrganization.urlModel,\n deleteOrganization\n );\n fastify.put(\n getOrganizationRoutes().selectOrganization.urlModel,\n selectOrganization\n );\n fastify.post(\n getOrganizationRoutes().unselectOrganization.urlModel,\n unselectOrganization\n );\n};\n"],"mappings":";;;AAcA,MAAa,oBAAoB;AAEjC,MAAM,gBAAgB,GAAG,QAAQ,IAAI,cAAc;AAEnD,MAAa,+BACV;CACC,kBAAkB;EAChB,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,iBAAiB;EACf,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,oBAAoB;EAClB,UAAU;EACV,KAAK,SAAS;EAEd,QAAQ;EACT;CACD,2BAA2B;EACzB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,+BAA+B;EAC7B,UAAU;EACV,MAAM,EAAE,qBACN,GAAG,SAAS,CAAC,GAAG,eAAe;EACjC,QAAQ;EACT;CACD,uBAAuB;EACrB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,oBAAoB;EAClB,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,oBAAoB;EAClB,UAAU;EACV,MAAM,EAAE,qBACN,GAAG,SAAS,CAAC,GAAG;EAClB,QAAQ;EACT;CACD,sBAAsB;EACpB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACF;AAEH,MAAa,qBAAqB,OAAO,YAA6B;AACpE,SAAQ,IACN,uBAAuB,CAAC,iBAAiB,UACzC,iBACD;AACD,SAAQ,KACN,uBAAuB,CAAC,gBAAgB,UACxC,gBACD;AACD,SAAQ,IACN,uBAAuB,CAAC,mBAAmB,UAC3C,mBACD;AACD,SAAQ,IACN,uBAAuB,CAAC,0BAA0B,UAClD,0BACD;AACD,SAAQ,IACN,uBAAuB,CAAC,8BAA8B,UACtD,8BACD;AACD,SAAQ,KACN,uBAAuB,CAAC,sBAAsB,UAC9C,sBACD;AACD,SAAQ,OACN,uBAAuB,CAAC,mBAAmB,UAC3C,mBACD;AACD,SAAQ,IACN,uBAAuB,CAAC,mBAAmB,UAC3C,mBACD;AACD,SAAQ,KACN,uBAAuB,CAAC,qBAAqB,UAC7C,qBACD"}
@@ -1,9 +1,7 @@
1
1
  import { addProject, deleteProject, getProjects, pushProjectConfiguration, selectProject, unselectProject, updateProject, updateProjectMembers } from "../controllers/project.controller.mjs";
2
2
  import { addNewAccessKey, deleteAccessKey, refreshAccessKey } from "../controllers/projectAccessKey.controller.mjs";
3
- import { Router } from "express";
4
3
 
5
4
  //#region src/routes/project.routes.ts
6
- const projectRouter = Router();
7
5
  const projectRoute = "/api/project";
8
6
  const baseURL = () => `${process.env.BACKEND_URL}${projectRoute}`;
9
7
  const getProjectRoutes = () => ({
@@ -63,17 +61,19 @@ const getProjectRoutes = () => ({
63
61
  method: "DELETE"
64
62
  }
65
63
  });
66
- projectRouter.get(getProjectRoutes().getProjects.urlModel, getProjects);
67
- projectRouter.post(getProjectRoutes().addProject.urlModel, addProject);
68
- projectRouter.put(getProjectRoutes().updateProject.urlModel, updateProject);
69
- projectRouter.put(getProjectRoutes().updateProjectMembers.urlModel, updateProjectMembers);
70
- projectRouter.put(getProjectRoutes().pushProjectConfiguration.urlModel, pushProjectConfiguration);
71
- projectRouter.delete(getProjectRoutes().deleteProject.urlModel, deleteProject);
72
- projectRouter.post(getProjectRoutes().addNewAccessKey.urlModel, addNewAccessKey);
73
- projectRouter.patch(getProjectRoutes().refreshAccessKey.urlModel, refreshAccessKey);
74
- projectRouter.delete(getProjectRoutes().deleteAccessKey.urlModel, deleteAccessKey);
75
- projectRouter.post(getProjectRoutes().unselectProject.urlModel, unselectProject);
76
- projectRouter.put(getProjectRoutes().selectProject.urlModel, selectProject);
64
+ const projectRouter = async (fastify) => {
65
+ fastify.get(getProjectRoutes().getProjects.urlModel, getProjects);
66
+ fastify.post(getProjectRoutes().addProject.urlModel, addProject);
67
+ fastify.put(getProjectRoutes().updateProject.urlModel, updateProject);
68
+ fastify.put(getProjectRoutes().updateProjectMembers.urlModel, updateProjectMembers);
69
+ fastify.put(getProjectRoutes().pushProjectConfiguration.urlModel, pushProjectConfiguration);
70
+ fastify.delete(getProjectRoutes().deleteProject.urlModel, deleteProject);
71
+ fastify.post(getProjectRoutes().addNewAccessKey.urlModel, addNewAccessKey);
72
+ fastify.patch(getProjectRoutes().refreshAccessKey.urlModel, refreshAccessKey);
73
+ fastify.delete(getProjectRoutes().deleteAccessKey.urlModel, deleteAccessKey);
74
+ fastify.post(getProjectRoutes().unselectProject.urlModel, unselectProject);
75
+ fastify.put(getProjectRoutes().selectProject.urlModel, selectProject);
76
+ };
77
77
 
78
78
  //#endregion
79
79
  export { getProjectRoutes, projectRoute, projectRouter };
@@ -1 +1 @@
1
- {"version":3,"file":"project.routes.mjs","names":["projectRouter: Router"],"sources":["../../../src/routes/project.routes.ts"],"sourcesContent":["import {\n addProject,\n deleteProject,\n getProjects,\n pushProjectConfiguration,\n selectProject,\n unselectProject,\n updateProject,\n updateProjectMembers,\n} from '@controllers/project.controller';\nimport {\n addNewAccessKey,\n deleteAccessKey,\n refreshAccessKey,\n} from '@controllers/projectAccessKey.controller';\nimport { Router } from 'express';\nimport type { Routes } from '@/types/Routes';\n\nexport const projectRouter: Router = Router();\n\nexport const projectRoute = '/api/project';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${projectRoute}`;\n\nexport const getProjectRoutes = () =>\n ({\n getProjects: {\n urlModel: '/',\n url: baseURL(),\n method: 'GET',\n },\n addProject: {\n urlModel: '/',\n url: baseURL(),\n method: 'POST',\n },\n updateProject: {\n urlModel: '/',\n url: baseURL(),\n method: 'PUT',\n },\n updateProjectMembers: {\n urlModel: '/members',\n url: `${baseURL()}/members`,\n method: 'PUT',\n },\n pushProjectConfiguration: {\n urlModel: '/configuration',\n url: `${baseURL()}/configuration`,\n method: 'PUT',\n },\n deleteProject: {\n urlModel: '/',\n url: baseURL(),\n method: 'DELETE',\n },\n selectProject: {\n urlModel: '/:projectId',\n url: ({ projectId }: { projectId: string }) =>\n `${baseURL()}/${projectId}`,\n method: 'PUT',\n },\n unselectProject: {\n urlModel: '/logout',\n url: `${baseURL()}/logout`,\n method: 'POST',\n },\n addNewAccessKey: {\n urlModel: '/access_key',\n url: `${baseURL()}/access_key`,\n method: 'POST',\n },\n refreshAccessKey: {\n urlModel: '/access_key',\n url: `${baseURL()}/access_key`,\n method: 'PATCH',\n },\n deleteAccessKey: {\n urlModel: '/access_key',\n url: `${baseURL()}/access_key`,\n method: 'DELETE',\n },\n }) satisfies Routes;\n\nprojectRouter.get(getProjectRoutes().getProjects.urlModel, getProjects);\n\nprojectRouter.post(getProjectRoutes().addProject.urlModel, addProject);\nprojectRouter.put(getProjectRoutes().updateProject.urlModel, updateProject);\nprojectRouter.put(\n getProjectRoutes().updateProjectMembers.urlModel,\n updateProjectMembers\n);\nprojectRouter.put(\n getProjectRoutes().pushProjectConfiguration.urlModel,\n pushProjectConfiguration\n);\nprojectRouter.delete(getProjectRoutes().deleteProject.urlModel, deleteProject);\n\nprojectRouter.post(\n getProjectRoutes().addNewAccessKey.urlModel,\n addNewAccessKey\n);\n\nprojectRouter.patch(\n getProjectRoutes().refreshAccessKey.urlModel,\n refreshAccessKey\n);\n\nprojectRouter.delete(\n getProjectRoutes().deleteAccessKey.urlModel,\n deleteAccessKey\n);\n\nprojectRouter.post(\n getProjectRoutes().unselectProject.urlModel,\n unselectProject\n);\n\nprojectRouter.put(getProjectRoutes().selectProject.urlModel, selectProject);\n"],"mappings":";;;;;AAkBA,MAAaA,gBAAwB,QAAQ;AAE7C,MAAa,eAAe;AAE5B,MAAM,gBAAgB,GAAG,QAAQ,IAAI,cAAc;AAEnD,MAAa,0BACV;CACC,aAAa;EACX,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,YAAY;EACV,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,eAAe;EACb,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,sBAAsB;EACpB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,0BAA0B;EACxB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,eAAe;EACb,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,eAAe;EACb,UAAU;EACV,MAAM,EAAE,gBACN,GAAG,SAAS,CAAC,GAAG;EAClB,QAAQ;EACT;CACD,iBAAiB;EACf,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,iBAAiB;EACf,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,kBAAkB;EAChB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,iBAAiB;EACf,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACF;AAEH,cAAc,IAAI,kBAAkB,CAAC,YAAY,UAAU,YAAY;AAEvE,cAAc,KAAK,kBAAkB,CAAC,WAAW,UAAU,WAAW;AACtE,cAAc,IAAI,kBAAkB,CAAC,cAAc,UAAU,cAAc;AAC3E,cAAc,IACZ,kBAAkB,CAAC,qBAAqB,UACxC,qBACD;AACD,cAAc,IACZ,kBAAkB,CAAC,yBAAyB,UAC5C,yBACD;AACD,cAAc,OAAO,kBAAkB,CAAC,cAAc,UAAU,cAAc;AAE9E,cAAc,KACZ,kBAAkB,CAAC,gBAAgB,UACnC,gBACD;AAED,cAAc,MACZ,kBAAkB,CAAC,iBAAiB,UACpC,iBACD;AAED,cAAc,OACZ,kBAAkB,CAAC,gBAAgB,UACnC,gBACD;AAED,cAAc,KACZ,kBAAkB,CAAC,gBAAgB,UACnC,gBACD;AAED,cAAc,IAAI,kBAAkB,CAAC,cAAc,UAAU,cAAc"}
1
+ {"version":3,"file":"project.routes.mjs","names":[],"sources":["../../../src/routes/project.routes.ts"],"sourcesContent":["import {\n addProject,\n deleteProject,\n getProjects,\n pushProjectConfiguration,\n selectProject,\n unselectProject,\n updateProject,\n updateProjectMembers,\n} from '@controllers/project.controller';\nimport {\n addNewAccessKey,\n deleteAccessKey,\n refreshAccessKey,\n} from '@controllers/projectAccessKey.controller';\nimport type { FastifyInstance } from 'fastify';\nimport type { Routes } from '@/types/Routes';\n\nexport const projectRoute = '/api/project';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${projectRoute}`;\n\nexport const getProjectRoutes = () =>\n ({\n getProjects: {\n urlModel: '/',\n url: baseURL(),\n method: 'GET',\n },\n addProject: {\n urlModel: '/',\n url: baseURL(),\n method: 'POST',\n },\n updateProject: {\n urlModel: '/',\n url: baseURL(),\n method: 'PUT',\n },\n updateProjectMembers: {\n urlModel: '/members',\n url: `${baseURL()}/members`,\n method: 'PUT',\n },\n pushProjectConfiguration: {\n urlModel: '/configuration',\n url: `${baseURL()}/configuration`,\n method: 'PUT',\n },\n deleteProject: {\n urlModel: '/',\n url: baseURL(),\n method: 'DELETE',\n },\n selectProject: {\n urlModel: '/:projectId',\n url: ({ projectId }: { projectId: string }) =>\n `${baseURL()}/${projectId}`,\n method: 'PUT',\n },\n unselectProject: {\n urlModel: '/logout',\n url: `${baseURL()}/logout`,\n method: 'POST',\n },\n addNewAccessKey: {\n urlModel: '/access_key',\n url: `${baseURL()}/access_key`,\n method: 'POST',\n },\n refreshAccessKey: {\n urlModel: '/access_key',\n url: `${baseURL()}/access_key`,\n method: 'PATCH',\n },\n deleteAccessKey: {\n urlModel: '/access_key',\n url: `${baseURL()}/access_key`,\n method: 'DELETE',\n },\n }) satisfies Routes;\n\nexport const projectRouter = async (fastify: FastifyInstance) => {\n fastify.get(getProjectRoutes().getProjects.urlModel, getProjects);\n fastify.post(getProjectRoutes().addProject.urlModel, addProject);\n fastify.put(getProjectRoutes().updateProject.urlModel, updateProject);\n fastify.put(\n getProjectRoutes().updateProjectMembers.urlModel,\n updateProjectMembers\n );\n fastify.put(\n getProjectRoutes().pushProjectConfiguration.urlModel,\n pushProjectConfiguration\n );\n fastify.delete(getProjectRoutes().deleteProject.urlModel, deleteProject);\n fastify.post(getProjectRoutes().addNewAccessKey.urlModel, addNewAccessKey);\n fastify.patch(getProjectRoutes().refreshAccessKey.urlModel, refreshAccessKey);\n fastify.delete(getProjectRoutes().deleteAccessKey.urlModel, deleteAccessKey);\n fastify.post(getProjectRoutes().unselectProject.urlModel, unselectProject);\n fastify.put(getProjectRoutes().selectProject.urlModel, selectProject);\n};\n"],"mappings":";;;;AAkBA,MAAa,eAAe;AAE5B,MAAM,gBAAgB,GAAG,QAAQ,IAAI,cAAc;AAEnD,MAAa,0BACV;CACC,aAAa;EACX,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,YAAY;EACV,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,eAAe;EACb,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,sBAAsB;EACpB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,0BAA0B;EACxB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,eAAe;EACb,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,eAAe;EACb,UAAU;EACV,MAAM,EAAE,gBACN,GAAG,SAAS,CAAC,GAAG;EAClB,QAAQ;EACT;CACD,iBAAiB;EACf,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,iBAAiB;EACf,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,kBAAkB;EAChB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,iBAAiB;EACf,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACF;AAEH,MAAa,gBAAgB,OAAO,YAA6B;AAC/D,SAAQ,IAAI,kBAAkB,CAAC,YAAY,UAAU,YAAY;AACjE,SAAQ,KAAK,kBAAkB,CAAC,WAAW,UAAU,WAAW;AAChE,SAAQ,IAAI,kBAAkB,CAAC,cAAc,UAAU,cAAc;AACrE,SAAQ,IACN,kBAAkB,CAAC,qBAAqB,UACxC,qBACD;AACD,SAAQ,IACN,kBAAkB,CAAC,yBAAyB,UAC5C,yBACD;AACD,SAAQ,OAAO,kBAAkB,CAAC,cAAc,UAAU,cAAc;AACxE,SAAQ,KAAK,kBAAkB,CAAC,gBAAgB,UAAU,gBAAgB;AAC1E,SAAQ,MAAM,kBAAkB,CAAC,iBAAiB,UAAU,iBAAiB;AAC7E,SAAQ,OAAO,kBAAkB,CAAC,gBAAgB,UAAU,gBAAgB;AAC5E,SAAQ,KAAK,kBAAkB,CAAC,gBAAgB,UAAU,gBAAgB;AAC1E,SAAQ,IAAI,kBAAkB,CAAC,cAAc,UAAU,cAAc"}
@@ -1,8 +1,6 @@
1
1
  import { searchDocUtil } from "../controllers/search.controller.mjs";
2
- import { Router } from "express";
3
2
 
4
3
  //#region src/routes/search.routes.ts
5
- const searchRouter = Router();
6
4
  const searchRoute = "/api/search";
7
5
  const baseURL = () => `${process.env.BACKEND_URL}${searchRoute}`;
8
6
  const getSearchRoutes = () => ({ doc: {
@@ -10,7 +8,9 @@ const getSearchRoutes = () => ({ doc: {
10
8
  url: `${baseURL()}/doc`,
11
9
  method: "GET"
12
10
  } });
13
- searchRouter.get(getSearchRoutes().doc.urlModel, searchDocUtil);
11
+ const searchRouter = async (fastify) => {
12
+ fastify.get(getSearchRoutes().doc.urlModel, searchDocUtil);
13
+ };
14
14
 
15
15
  //#endregion
16
16
  export { getSearchRoutes, searchRoute, searchRouter };
@@ -1 +1 @@
1
- {"version":3,"file":"search.routes.mjs","names":["searchRouter: Router"],"sources":["../../../src/routes/search.routes.ts"],"sourcesContent":["import { searchDocUtil } from '@controllers/search.controller';\nimport { Router } from 'express';\nimport type { Routes } from '@/types/Routes';\n\nexport const searchRouter: Router = Router();\n\nexport const searchRoute = '/api/search';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${searchRoute}`;\n\nexport const getSearchRoutes = () =>\n ({\n doc: {\n urlModel: '/doc',\n url: `${baseURL()}/doc`,\n method: 'GET',\n },\n }) satisfies Routes;\n\nsearchRouter.get(getSearchRoutes().doc.urlModel, searchDocUtil);\n"],"mappings":";;;;AAIA,MAAaA,eAAuB,QAAQ;AAE5C,MAAa,cAAc;AAE3B,MAAM,gBAAgB,GAAG,QAAQ,IAAI,cAAc;AAEnD,MAAa,yBACV,EACC,KAAK;CACH,UAAU;CACV,KAAK,GAAG,SAAS,CAAC;CAClB,QAAQ;CACT,EACF;AAEH,aAAa,IAAI,iBAAiB,CAAC,IAAI,UAAU,cAAc"}
1
+ {"version":3,"file":"search.routes.mjs","names":[],"sources":["../../../src/routes/search.routes.ts"],"sourcesContent":["import { searchDocUtil } from '@controllers/search.controller';\nimport type { FastifyInstance } from 'fastify';\nimport type { Routes } from '@/types/Routes';\n\nexport const searchRoute = '/api/search';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${searchRoute}`;\n\nexport const getSearchRoutes = () =>\n ({\n doc: {\n urlModel: '/doc',\n url: `${baseURL()}/doc`,\n method: 'GET',\n },\n }) satisfies Routes;\n\nexport const searchRouter = async (fastify: FastifyInstance) => {\n fastify.get(getSearchRoutes().doc.urlModel, searchDocUtil);\n};\n"],"mappings":";;;AAIA,MAAa,cAAc;AAE3B,MAAM,gBAAgB,GAAG,QAAQ,IAAI,cAAc;AAEnD,MAAa,yBACV,EACC,KAAK;CACH,UAAU;CACV,KAAK,GAAG,SAAS,CAAC;CAClB,QAAQ;CACT,EACF;AAEH,MAAa,eAAe,OAAO,YAA6B;AAC9D,SAAQ,IAAI,iBAAiB,CAAC,IAAI,UAAU,cAAc"}
@@ -1,8 +1,6 @@
1
1
  import { cancelSubscription, getPricing, getSubscription } from "../controllers/stripe.controller.mjs";
2
- import { Router } from "express";
3
2
 
4
3
  //#region src/routes/stripe.routes.ts
5
- const stripeRouter = Router();
6
4
  const stripeRoute = "/api/stripe";
7
5
  const baseURL = () => `${process.env.BACKEND_URL}${stripeRoute}`;
8
6
  const getStripeRoutes = () => ({
@@ -22,9 +20,11 @@ const getStripeRoutes = () => ({
22
20
  method: "POST"
23
21
  }
24
22
  });
25
- stripeRouter.post(getStripeRoutes().getPricing.urlModel, getPricing);
26
- stripeRouter.post(getStripeRoutes().createSubscription.urlModel, getSubscription);
27
- stripeRouter.post(getStripeRoutes().cancelSubscription.urlModel, cancelSubscription);
23
+ const stripeRouter = async (fastify) => {
24
+ fastify.post(getStripeRoutes().getPricing.urlModel, getPricing);
25
+ fastify.post(getStripeRoutes().createSubscription.urlModel, getSubscription);
26
+ fastify.post(getStripeRoutes().cancelSubscription.urlModel, cancelSubscription);
27
+ };
28
28
 
29
29
  //#endregion
30
30
  export { getStripeRoutes, stripeRoute, stripeRouter };
@@ -1 +1 @@
1
- {"version":3,"file":"stripe.routes.mjs","names":["stripeRouter: Router"],"sources":["../../../src/routes/stripe.routes.ts"],"sourcesContent":["import {\n cancelSubscription,\n getPricing,\n getSubscription,\n} from '@controllers/stripe.controller';\nimport { Router } from 'express';\nimport type { Routes } from '@/types/Routes';\n\nexport const stripeRouter: Router = Router();\n\nexport const stripeRoute = '/api/stripe';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${stripeRoute}`;\n\nexport const getStripeRoutes = () =>\n ({\n getPricing: {\n urlModel: '/pricing',\n url: `${baseURL()}/pricing`,\n method: 'POST',\n },\n createSubscription: {\n urlModel: '/create-subscription',\n url: `${baseURL()}/create-subscription`,\n method: 'POST',\n },\n cancelSubscription: {\n urlModel: '/cancel-subscription',\n url: `${baseURL()}/cancel-subscription`,\n method: 'POST',\n },\n }) satisfies Routes;\n\nstripeRouter.post(getStripeRoutes().getPricing.urlModel, getPricing);\n\nstripeRouter.post(\n getStripeRoutes().createSubscription.urlModel,\n getSubscription\n);\n\nstripeRouter.post(\n getStripeRoutes().cancelSubscription.urlModel,\n cancelSubscription\n);\n"],"mappings":";;;;AAQA,MAAaA,eAAuB,QAAQ;AAE5C,MAAa,cAAc;AAE3B,MAAM,gBAAgB,GAAG,QAAQ,IAAI,cAAc;AAEnD,MAAa,yBACV;CACC,YAAY;EACV,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,oBAAoB;EAClB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,oBAAoB;EAClB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACF;AAEH,aAAa,KAAK,iBAAiB,CAAC,WAAW,UAAU,WAAW;AAEpE,aAAa,KACX,iBAAiB,CAAC,mBAAmB,UACrC,gBACD;AAED,aAAa,KACX,iBAAiB,CAAC,mBAAmB,UACrC,mBACD"}
1
+ {"version":3,"file":"stripe.routes.mjs","names":[],"sources":["../../../src/routes/stripe.routes.ts"],"sourcesContent":["import {\n cancelSubscription,\n getPricing,\n getSubscription,\n} from '@controllers/stripe.controller';\nimport type { FastifyInstance } from 'fastify';\nimport type { Routes } from '@/types/Routes';\n\nexport const stripeRoute = '/api/stripe';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${stripeRoute}`;\n\nexport const getStripeRoutes = () =>\n ({\n getPricing: {\n urlModel: '/pricing',\n url: `${baseURL()}/pricing`,\n method: 'POST',\n },\n createSubscription: {\n urlModel: '/create-subscription',\n url: `${baseURL()}/create-subscription`,\n method: 'POST',\n },\n cancelSubscription: {\n urlModel: '/cancel-subscription',\n url: `${baseURL()}/cancel-subscription`,\n method: 'POST',\n },\n }) satisfies Routes;\n\nexport const stripeRouter = async (fastify: FastifyInstance) => {\n fastify.post(getStripeRoutes().getPricing.urlModel, getPricing);\n fastify.post(getStripeRoutes().createSubscription.urlModel, getSubscription);\n fastify.post(\n getStripeRoutes().cancelSubscription.urlModel,\n cancelSubscription\n );\n};\n"],"mappings":";;;AAQA,MAAa,cAAc;AAE3B,MAAM,gBAAgB,GAAG,QAAQ,IAAI,cAAc;AAEnD,MAAa,yBACV;CACC,YAAY;EACV,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,oBAAoB;EAClB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACD,oBAAoB;EAClB,UAAU;EACV,KAAK,GAAG,SAAS,CAAC;EAClB,QAAQ;EACT;CACF;AAEH,MAAa,eAAe,OAAO,YAA6B;AAC9D,SAAQ,KAAK,iBAAiB,CAAC,WAAW,UAAU,WAAW;AAC/D,SAAQ,KAAK,iBAAiB,CAAC,mBAAmB,UAAU,gBAAgB;AAC5E,SAAQ,KACN,iBAAiB,CAAC,mBAAmB,UACrC,mBACD"}
@@ -1,8 +1,6 @@
1
1
  import { addTag, deleteTag, getTags, updateTag } from "../controllers/tag.controller.mjs";
2
- import { Router } from "express";
3
2
 
4
3
  //#region src/routes/tags.routes.ts
5
- const tagRouter = Router();
6
4
  const tagRoute = "/api/tag";
7
5
  const baseURL = () => `${process.env.BACKEND_URL}${tagRoute}`;
8
6
  const getTagRoutes = () => ({
@@ -27,10 +25,12 @@ const getTagRoutes = () => ({
27
25
  method: "DELETE"
28
26
  }
29
27
  });
30
- tagRouter.get(getTagRoutes().getTags.urlModel, getTags);
31
- tagRouter.post(getTagRoutes().addTag.urlModel, addTag);
32
- tagRouter.put(getTagRoutes().updateTag.urlModel, updateTag);
33
- tagRouter.delete(getTagRoutes().deleteTag.urlModel, deleteTag);
28
+ const tagRouter = async (fastify) => {
29
+ fastify.get(getTagRoutes().getTags.urlModel, getTags);
30
+ fastify.post(getTagRoutes().addTag.urlModel, addTag);
31
+ fastify.put(getTagRoutes().updateTag.urlModel, updateTag);
32
+ fastify.delete(getTagRoutes().deleteTag.urlModel, deleteTag);
33
+ };
34
34
 
35
35
  //#endregion
36
36
  export { getTagRoutes, tagRoute, tagRouter };
@@ -1 +1 @@
1
- {"version":3,"file":"tags.routes.mjs","names":["tagRouter: Router"],"sources":["../../../src/routes/tags.routes.ts"],"sourcesContent":["import {\n addTag,\n deleteTag,\n getTags,\n updateTag,\n} from '@controllers/tag.controller';\nimport { Router } from 'express';\nimport type { Routes } from '@/types/Routes';\n\nexport const tagRouter: Router = Router();\n\nexport const tagRoute = '/api/tag';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${tagRoute}`;\n\nexport const getTagRoutes = () =>\n ({\n getTags: {\n urlModel: '/',\n url: baseURL(),\n method: 'GET',\n },\n addTag: {\n urlModel: '/',\n url: baseURL(),\n method: 'POST',\n },\n updateTag: {\n urlModel: '/:tagId',\n url: ({ tagId }: { tagId: string }) => `${baseURL()}/${tagId}`,\n method: 'PUT',\n },\n deleteTag: {\n urlModel: '/:tagId',\n url: ({ tagId }: { tagId: string }) => `${baseURL()}/${tagId}`,\n method: 'DELETE',\n },\n }) satisfies Routes;\n\ntagRouter.get(getTagRoutes().getTags.urlModel, getTags);\ntagRouter.post(getTagRoutes().addTag.urlModel, addTag);\ntagRouter.put(getTagRoutes().updateTag.urlModel, updateTag);\ntagRouter.delete(getTagRoutes().deleteTag.urlModel, deleteTag);\n"],"mappings":";;;;AASA,MAAaA,YAAoB,QAAQ;AAEzC,MAAa,WAAW;AAExB,MAAM,gBAAgB,GAAG,QAAQ,IAAI,cAAc;AAEnD,MAAa,sBACV;CACC,SAAS;EACP,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,QAAQ;EACN,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,WAAW;EACT,UAAU;EACV,MAAM,EAAE,YAA+B,GAAG,SAAS,CAAC,GAAG;EACvD,QAAQ;EACT;CACD,WAAW;EACT,UAAU;EACV,MAAM,EAAE,YAA+B,GAAG,SAAS,CAAC,GAAG;EACvD,QAAQ;EACT;CACF;AAEH,UAAU,IAAI,cAAc,CAAC,QAAQ,UAAU,QAAQ;AACvD,UAAU,KAAK,cAAc,CAAC,OAAO,UAAU,OAAO;AACtD,UAAU,IAAI,cAAc,CAAC,UAAU,UAAU,UAAU;AAC3D,UAAU,OAAO,cAAc,CAAC,UAAU,UAAU,UAAU"}
1
+ {"version":3,"file":"tags.routes.mjs","names":[],"sources":["../../../src/routes/tags.routes.ts"],"sourcesContent":["import {\n addTag,\n deleteTag,\n getTags,\n updateTag,\n} from '@controllers/tag.controller';\nimport type { FastifyInstance } from 'fastify';\nimport type { Routes } from '@/types/Routes';\n\nexport const tagRoute = '/api/tag';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${tagRoute}`;\n\nexport const getTagRoutes = () =>\n ({\n getTags: {\n urlModel: '/',\n url: baseURL(),\n method: 'GET',\n },\n addTag: {\n urlModel: '/',\n url: baseURL(),\n method: 'POST',\n },\n updateTag: {\n urlModel: '/:tagId',\n url: ({ tagId }: { tagId: string }) => `${baseURL()}/${tagId}`,\n method: 'PUT',\n },\n deleteTag: {\n urlModel: '/:tagId',\n url: ({ tagId }: { tagId: string }) => `${baseURL()}/${tagId}`,\n method: 'DELETE',\n },\n }) satisfies Routes;\n\nexport const tagRouter = async (fastify: FastifyInstance) => {\n fastify.get(getTagRoutes().getTags.urlModel, getTags);\n fastify.post(getTagRoutes().addTag.urlModel, addTag);\n fastify.put(getTagRoutes().updateTag.urlModel, updateTag);\n fastify.delete(getTagRoutes().deleteTag.urlModel, deleteTag);\n};\n"],"mappings":";;;AASA,MAAa,WAAW;AAExB,MAAM,gBAAgB,GAAG,QAAQ,IAAI,cAAc;AAEnD,MAAa,sBACV;CACC,SAAS;EACP,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,QAAQ;EACN,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,WAAW;EACT,UAAU;EACV,MAAM,EAAE,YAA+B,GAAG,SAAS,CAAC,GAAG;EACvD,QAAQ;EACT;CACD,WAAW;EACT,UAAU;EACV,MAAM,EAAE,YAA+B,GAAG,SAAS,CAAC,GAAG;EACvD,QAAQ;EACT;CACF;AAEH,MAAa,YAAY,OAAO,YAA6B;AAC3D,SAAQ,IAAI,cAAc,CAAC,QAAQ,UAAU,QAAQ;AACrD,SAAQ,KAAK,cAAc,CAAC,OAAO,UAAU,OAAO;AACpD,SAAQ,IAAI,cAAc,CAAC,UAAU,UAAU,UAAU;AACzD,SAAQ,OAAO,cAAc,CAAC,UAAU,UAAU,UAAU"}
@@ -1,8 +1,6 @@
1
1
  import { createUser, deleteUser, getUserByEmail, getUserById, getUsers, updateUser, verifyEmailStatusSSE } from "../controllers/user.controller.mjs";
2
- import { Router } from "express";
3
2
 
4
3
  //#region src/routes/user.routes.ts
5
- const userRouter = Router();
6
4
  const userRoute = "/api/user";
7
5
  const baseURL = () => `${process.env.BACKEND_URL}${userRoute}`;
8
6
  const getUserRoutes = () => ({
@@ -42,13 +40,15 @@ const getUserRoutes = () => ({
42
40
  method: "GET"
43
41
  }
44
42
  });
45
- userRouter.get(getUserRoutes().getUsers.urlModel, getUsers);
46
- userRouter.put(getUserRoutes().updateUser.urlModel, updateUser);
47
- userRouter.post(getUserRoutes().createUser.urlModel, createUser);
48
- userRouter.get(getUserRoutes().getUserById.urlModel, getUserById);
49
- userRouter.get(getUserRoutes().getUserByEmail.urlModel, getUserByEmail);
50
- userRouter.delete(getUserRoutes().deleteUser.urlModel, deleteUser);
51
- userRouter.get(getUserRoutes().verifyEmailStatusSSE.urlModel, verifyEmailStatusSSE);
43
+ const userRouter = async (fastify) => {
44
+ fastify.get(getUserRoutes().getUsers.urlModel, getUsers);
45
+ fastify.put(getUserRoutes().updateUser.urlModel, updateUser);
46
+ fastify.post(getUserRoutes().createUser.urlModel, createUser);
47
+ fastify.get(getUserRoutes().getUserById.urlModel, getUserById);
48
+ fastify.get(getUserRoutes().getUserByEmail.urlModel, getUserByEmail);
49
+ fastify.delete(getUserRoutes().deleteUser.urlModel, deleteUser);
50
+ fastify.get(getUserRoutes().verifyEmailStatusSSE.urlModel, verifyEmailStatusSSE);
51
+ };
52
52
 
53
53
  //#endregion
54
54
  export { getUserRoutes, userRoute, userRouter };
@@ -1 +1 @@
1
- {"version":3,"file":"user.routes.mjs","names":["userRouter: Router"],"sources":["../../../src/routes/user.routes.ts"],"sourcesContent":["import {\n createUser,\n deleteUser,\n getUserByEmail,\n getUserById,\n getUsers,\n updateUser,\n verifyEmailStatusSSE,\n} from '@controllers/user.controller';\nimport { Router } from 'express';\nimport type { Routes } from '@/types/Routes';\n\nexport const userRouter: Router = Router();\n\nexport const userRoute = '/api/user';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${userRoute}`;\n\nexport const getUserRoutes = () =>\n ({\n getUsers: {\n urlModel: '/',\n url: baseURL(),\n method: 'GET',\n },\n updateUser: {\n urlModel: '/',\n url: baseURL(),\n method: 'PUT',\n },\n createUser: {\n urlModel: '/',\n url: baseURL(),\n method: 'POST',\n },\n getUserById: {\n urlModel: '/:userId',\n url: ({ userId }: { userId: string }) => `${baseURL()}/${userId}`,\n method: 'GET',\n },\n getUserByEmail: {\n urlModel: '/email/:email',\n url: ({ email }: { email: string }) => `${baseURL()}/email/${email}`,\n method: 'GET',\n },\n deleteUser: {\n urlModel: '/:userId',\n url: ({ userId }: { userId: string }) => `${baseURL()}/${userId}`,\n method: 'DELETE',\n },\n verifyEmailStatusSSE: {\n urlModel: '/verify-email-status/:userId',\n url: ({ userId }: { userId: string }) =>\n `${baseURL()}/verify-email-status/${userId}`,\n method: 'GET',\n },\n }) satisfies Routes;\n\nuserRouter.get(getUserRoutes().getUsers.urlModel, getUsers);\nuserRouter.put(getUserRoutes().updateUser.urlModel, updateUser);\nuserRouter.post(getUserRoutes().createUser.urlModel, createUser);\nuserRouter.get(getUserRoutes().getUserById.urlModel, getUserById);\nuserRouter.get(getUserRoutes().getUserByEmail.urlModel, getUserByEmail);\nuserRouter.delete(getUserRoutes().deleteUser.urlModel, deleteUser);\nuserRouter.get(\n getUserRoutes().verifyEmailStatusSSE.urlModel,\n verifyEmailStatusSSE\n);\n"],"mappings":";;;;AAYA,MAAaA,aAAqB,QAAQ;AAE1C,MAAa,YAAY;AAEzB,MAAM,gBAAgB,GAAG,QAAQ,IAAI,cAAc;AAEnD,MAAa,uBACV;CACC,UAAU;EACR,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,YAAY;EACV,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,YAAY;EACV,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,aAAa;EACX,UAAU;EACV,MAAM,EAAE,aAAiC,GAAG,SAAS,CAAC,GAAG;EACzD,QAAQ;EACT;CACD,gBAAgB;EACd,UAAU;EACV,MAAM,EAAE,YAA+B,GAAG,SAAS,CAAC,SAAS;EAC7D,QAAQ;EACT;CACD,YAAY;EACV,UAAU;EACV,MAAM,EAAE,aAAiC,GAAG,SAAS,CAAC,GAAG;EACzD,QAAQ;EACT;CACD,sBAAsB;EACpB,UAAU;EACV,MAAM,EAAE,aACN,GAAG,SAAS,CAAC,uBAAuB;EACtC,QAAQ;EACT;CACF;AAEH,WAAW,IAAI,eAAe,CAAC,SAAS,UAAU,SAAS;AAC3D,WAAW,IAAI,eAAe,CAAC,WAAW,UAAU,WAAW;AAC/D,WAAW,KAAK,eAAe,CAAC,WAAW,UAAU,WAAW;AAChE,WAAW,IAAI,eAAe,CAAC,YAAY,UAAU,YAAY;AACjE,WAAW,IAAI,eAAe,CAAC,eAAe,UAAU,eAAe;AACvE,WAAW,OAAO,eAAe,CAAC,WAAW,UAAU,WAAW;AAClE,WAAW,IACT,eAAe,CAAC,qBAAqB,UACrC,qBACD"}
1
+ {"version":3,"file":"user.routes.mjs","names":[],"sources":["../../../src/routes/user.routes.ts"],"sourcesContent":["import {\n createUser,\n deleteUser,\n getUserByEmail,\n getUserById,\n getUsers,\n updateUser,\n verifyEmailStatusSSE,\n} from '@controllers/user.controller';\nimport type { FastifyInstance } from 'fastify';\nimport type { Routes } from '@/types/Routes';\n\nexport const userRoute = '/api/user';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${userRoute}`;\n\nexport const getUserRoutes = () =>\n ({\n getUsers: {\n urlModel: '/',\n url: baseURL(),\n method: 'GET',\n },\n updateUser: {\n urlModel: '/',\n url: baseURL(),\n method: 'PUT',\n },\n createUser: {\n urlModel: '/',\n url: baseURL(),\n method: 'POST',\n },\n getUserById: {\n urlModel: '/:userId',\n url: ({ userId }: { userId: string }) => `${baseURL()}/${userId}`,\n method: 'GET',\n },\n getUserByEmail: {\n urlModel: '/email/:email',\n url: ({ email }: { email: string }) => `${baseURL()}/email/${email}`,\n method: 'GET',\n },\n deleteUser: {\n urlModel: '/:userId',\n url: ({ userId }: { userId: string }) => `${baseURL()}/${userId}`,\n method: 'DELETE',\n },\n verifyEmailStatusSSE: {\n urlModel: '/verify-email-status/:userId',\n url: ({ userId }: { userId: string }) =>\n `${baseURL()}/verify-email-status/${userId}`,\n method: 'GET',\n },\n }) satisfies Routes;\n\nexport const userRouter = async (fastify: FastifyInstance) => {\n fastify.get(getUserRoutes().getUsers.urlModel, getUsers);\n fastify.put(getUserRoutes().updateUser.urlModel, updateUser);\n fastify.post(getUserRoutes().createUser.urlModel, createUser);\n fastify.get(getUserRoutes().getUserById.urlModel, getUserById);\n fastify.get(getUserRoutes().getUserByEmail.urlModel, getUserByEmail);\n fastify.delete(getUserRoutes().deleteUser.urlModel, deleteUser);\n fastify.get(\n getUserRoutes().verifyEmailStatusSSE.urlModel,\n verifyEmailStatusSSE\n );\n};\n"],"mappings":";;;AAYA,MAAa,YAAY;AAEzB,MAAM,gBAAgB,GAAG,QAAQ,IAAI,cAAc;AAEnD,MAAa,uBACV;CACC,UAAU;EACR,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,YAAY;EACV,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,YAAY;EACV,UAAU;EACV,KAAK,SAAS;EACd,QAAQ;EACT;CACD,aAAa;EACX,UAAU;EACV,MAAM,EAAE,aAAiC,GAAG,SAAS,CAAC,GAAG;EACzD,QAAQ;EACT;CACD,gBAAgB;EACd,UAAU;EACV,MAAM,EAAE,YAA+B,GAAG,SAAS,CAAC,SAAS;EAC7D,QAAQ;EACT;CACD,YAAY;EACV,UAAU;EACV,MAAM,EAAE,aAAiC,GAAG,SAAS,CAAC,GAAG;EACzD,QAAQ;EACT;CACD,sBAAsB;EACpB,UAAU;EACV,MAAM,EAAE,aACN,GAAG,SAAS,CAAC,uBAAuB;EACtC,QAAQ;EACT;CACF;AAEH,MAAa,aAAa,OAAO,YAA6B;AAC5D,SAAQ,IAAI,eAAe,CAAC,SAAS,UAAU,SAAS;AACxD,SAAQ,IAAI,eAAe,CAAC,WAAW,UAAU,WAAW;AAC5D,SAAQ,KAAK,eAAe,CAAC,WAAW,UAAU,WAAW;AAC7D,SAAQ,IAAI,eAAe,CAAC,YAAY,UAAU,YAAY;AAC9D,SAAQ,IAAI,eAAe,CAAC,eAAe,UAAU,eAAe;AACpE,SAAQ,OAAO,eAAe,CAAC,WAAW,UAAU,WAAW;AAC/D,SAAQ,IACN,eAAe,CAAC,qBAAqB,UACrC,qBACD"}
@@ -1,6 +1,6 @@
1
1
  import { MEMBERS_MIN_LENGTH, NAME_MAX_LENGTH, NAME_MIN_LENGTH } from "../utils/validation/validateProject.mjs";
2
2
  import { Schema } from "mongoose";
3
- import { Locales } from "@intlayer/types";
3
+ import { AiProviders, Locales } from "@intlayer/types";
4
4
 
5
5
  //#region src/schemas/project.schema.ts
6
6
  const oAuth2AccessSchema = new Schema({
@@ -48,6 +48,39 @@ const projectConfigSchema = new Schema({
48
48
  editor: {
49
49
  applicationURL: { type: String },
50
50
  cmsURL: { type: String }
51
+ },
52
+ ai: {
53
+ provider: {
54
+ type: String,
55
+ enum: Object.values(AiProviders)
56
+ },
57
+ model: { type: String },
58
+ apiKey: { type: String },
59
+ applicationContext: { type: String },
60
+ baseURL: { type: String }
61
+ }
62
+ }, { _id: false });
63
+ const githubSchema = new Schema({
64
+ owner: {
65
+ type: String,
66
+ required: true
67
+ },
68
+ repository: {
69
+ type: String,
70
+ required: true
71
+ },
72
+ branch: {
73
+ type: String,
74
+ default: "main"
75
+ },
76
+ installationId: { type: Number },
77
+ url: {
78
+ type: String,
79
+ required: true
80
+ },
81
+ configFilePath: {
82
+ type: String,
83
+ required: true
51
84
  }
52
85
  }, { _id: false });
53
86
  const projectSchema = new Schema({
@@ -64,6 +97,7 @@ const projectSchema = new Schema({
64
97
  },
65
98
  configuration: projectConfigSchema,
66
99
  oAuth2Access: [oAuth2AccessSchema],
100
+ github: githubSchema,
67
101
  membersIds: {
68
102
  type: [Schema.Types.ObjectId],
69
103
  ref: "User",
@@ -1 +1 @@
1
- {"version":3,"file":"project.schema.mjs","names":[],"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,IAAI,OAC7B;CACE,UAAU;EAAE,MAAM;EAAQ,UAAU;EAAM;CAC1C,cAAc;EAAE,MAAM;EAAQ,UAAU;EAAM;CAC9C,QAAQ;EAAE,MAAM,OAAO,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,IAAI,OAC9B;CACE,sBAAsB;EACpB,SAAS;GACP,MAAM,CAAC,OAAO;GACd,MAAM,OAAO,OAAO,QAAQ,YAAY;GACxC,UAAU;GACX;EACD,eAAe;GACb,MAAM;GACN,MAAM,OAAO,OAAO,QAAQ,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,IAAI,OAC/B;CACE,gBAAgB;EACd,MAAM,OAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,MAAM;EACJ,MAAM;EACN,UAAU;EACV,WAAW;EACX,WAAW;EACZ;CACD,eAAe;CACf,cAAc,CAAC,mBAAmB;CAClC,YAAY;EACV,MAAM,CAAC,OAAO,MAAM,SAAS;EAC7B,KAAK;EACL,UAAU;EACV,WAAW;EACZ;CACD,WAAW;EACT,MAAM,CAAC,OAAO,MAAM,SAAS;EAC7B,KAAK;EACL,UAAU;EACV,WAAW;EACZ;CACD,WAAW;EACT,MAAM,OAAO,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"}
1
+ {"version":3,"file":"project.schema.mjs","names":[],"sources":["../../../src/schemas/project.schema.ts"],"sourcesContent":["import { AiProviders, 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 ai: {\n provider: {\n type: String,\n enum: Object.values(AiProviders),\n },\n model: {\n type: String,\n },\n apiKey: {\n type: String,\n },\n applicationContext: {\n type: String,\n },\n baseURL: {\n type: String,\n },\n },\n },\n {\n _id: false, // Prevents the generation of an _id field for this subdocument\n }\n);\n\nconst githubSchema = new Schema<Project['github']>(\n {\n owner: { type: String, required: true },\n repository: { type: String, required: true },\n branch: { type: String, default: 'main' },\n installationId: { type: Number },\n url: { type: String, required: true },\n configFilePath: { type: String, required: true },\n },\n {\n _id: false,\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 github: githubSchema,\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,IAAI,OAC7B;CACE,UAAU;EAAE,MAAM;EAAQ,UAAU;EAAM;CAC1C,cAAc;EAAE,MAAM;EAAQ,UAAU;EAAM;CAC9C,QAAQ;EAAE,MAAM,OAAO,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,IAAI,OAC9B;CACE,sBAAsB;EACpB,SAAS;GACP,MAAM,CAAC,OAAO;GACd,MAAM,OAAO,OAAO,QAAQ,YAAY;GACxC,UAAU;GACX;EACD,eAAe;GACb,MAAM;GACN,MAAM,OAAO,OAAO,QAAQ,YAAY;GACzC;EACF;CACD,QAAQ;EACN,gBAAgB,EACd,MAAM,QACP;EACD,QAAQ,EACN,MAAM,QACP;EACF;CACD,IAAI;EACF,UAAU;GACR,MAAM;GACN,MAAM,OAAO,OAAO,YAAY;GACjC;EACD,OAAO,EACL,MAAM,QACP;EACD,QAAQ,EACN,MAAM,QACP;EACD,oBAAoB,EAClB,MAAM,QACP;EACD,SAAS,EACP,MAAM,QACP;EACF;CACF,EACD,EACE,KAAK,OACN,CACF;AAED,MAAM,eAAe,IAAI,OACvB;CACE,OAAO;EAAE,MAAM;EAAQ,UAAU;EAAM;CACvC,YAAY;EAAE,MAAM;EAAQ,UAAU;EAAM;CAC5C,QAAQ;EAAE,MAAM;EAAQ,SAAS;EAAQ;CACzC,gBAAgB,EAAE,MAAM,QAAQ;CAChC,KAAK;EAAE,MAAM;EAAQ,UAAU;EAAM;CACrC,gBAAgB;EAAE,MAAM;EAAQ,UAAU;EAAM;CACjD,EACD,EACE,KAAK,OACN,CACF;AAED,MAAa,gBAAgB,IAAI,OAC/B;CACE,gBAAgB;EACd,MAAM,OAAO,MAAM;EACnB,KAAK;EACL,UAAU;EACX;CACD,MAAM;EACJ,MAAM;EACN,UAAU;EACV,WAAW;EACX,WAAW;EACZ;CACD,eAAe;CACf,cAAc,CAAC,mBAAmB;CAClC,QAAQ;CACR,YAAY;EACV,MAAM,CAAC,OAAO,MAAM,SAAS;EAC7B,KAAK;EACL,UAAU;EACV,WAAW;EACZ;CACD,WAAW;EACT,MAAM,CAAC,OAAO,MAAM,SAAS;EAC7B,KAAK;EACL,UAAU;EACV,WAAW;EACZ;CACD,WAAW;EACT,MAAM,OAAO,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"}
@@ -9,7 +9,7 @@ import { SubscriptionPaymentErrorEN, SubscriptionPaymentErrorES, SubscriptionPay
9
9
  import { SubscriptionPaymentSuccessEN, SubscriptionPaymentSuccessES, SubscriptionPaymentSuccessFR } from "../emails/SubscriptionPaymentSuccess.mjs";
10
10
  import { ValidateUserEmailEN, ValidateUserEmailES, ValidateUserEmailFR } from "../emails/ValidateUserEmail.mjs";
11
11
  import { WelcomeEmailEN, WelcomeEmailES, WelcomeEmailFR } from "../emails/Welcome.mjs";
12
- import { t } from "express-intlayer";
12
+ import { t } from "fastify-intlayer";
13
13
  import { jsx } from "react/jsx-runtime";
14
14
  import { Resend } from "resend";
15
15
 
@@ -1 +1 @@
1
- {"version":3,"file":"email.service.mjs","names":[],"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,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,UAAU;EACR,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,eAAe;EACb,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,SAAS;EACP,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,WAAW;EACT,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,4BAA4B;EAC1B,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,4BAA4B;EAC1B,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,SAAS,EAAE;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,iCAAiC;EAC/B,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,SAAS,EAAE;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,0BAA0B;EACxB,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,SAAS,EAAE;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,mBAAmB;EACjB,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,SAAS,EAAE;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACF;AAWH,MAAa,YAAY,OAA4B,EACnD,MACA,IACA,SACA,QACA,GAAG,YACoB;CACvB,MAAM,SAAS,IAAI,OAAO,QAAQ,IAAI,eAAe;CAIrD,MAAM,EAAE,UAAU,SAAS,gBAFH,mBAAmB,OAAO,CAES;CAM3D,MAAM,QAAQ,oBAF6B,YAEb,GAAK,QAAiB;AAEpD,OAAM,OAAO,OACV,KAAK;EACJ,MAAM;EACN;EACA,SAAS,WAAW;EACpB;EACD,CAAC,CACD,OAAO,QAAQ,OAAO,MAAM,IAAI,CAAC;AAEpC,QAAO,KAAK,cAAc,KAAK,MAAM,KAAK"}
1
+ {"version":3,"file":"email.service.mjs","names":[],"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 'fastify-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,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,UAAU;EACR,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,eAAe;EACb,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,SAAS;EACP,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,WAAW;EACT,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,4BAA4B;EAC1B,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,4BAA4B;EAC1B,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,SAAS,EAAE;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,iCAAiC;EAC/B,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,SAAS,EAAE;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,0BAA0B;EACxB,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,SAAS,EAAE;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,mBAAmB;EACjB,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,SAAS,EAAE;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACF;AAWH,MAAa,YAAY,OAA4B,EACnD,MACA,IACA,SACA,QACA,GAAG,YACoB;CACvB,MAAM,SAAS,IAAI,OAAO,QAAQ,IAAI,eAAe;CAIrD,MAAM,EAAE,UAAU,SAAS,gBAFH,mBAAmB,OAAO,CAES;CAM3D,MAAM,QAAQ,oBAF6B,YAEb,GAAK,QAAiB;AAEpD,OAAM,OAAO,OACV,KAAK;EACJ,MAAM;EACN;EACA,SAAS,WAAW;EACpB;EACD,CAAC,CACD,OAAO,QAAQ,OAAO,MAAM,IAAI,CAAC;AAEpC,QAAO,KAAK,cAAc,KAAK,MAAM,KAAK"}