@intlayer/backend 5.5.7 → 5.5.9

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 (118) hide show
  1. package/dist/cjs/controllers/newsletter.controller.cjs +162 -0
  2. package/dist/cjs/controllers/newsletter.controller.cjs.map +1 -0
  3. package/dist/cjs/export.cjs +3 -0
  4. package/dist/cjs/export.cjs.map +1 -1
  5. package/dist/cjs/index.cjs +11 -9
  6. package/dist/cjs/index.cjs.map +1 -1
  7. package/dist/cjs/routes/ai.routes.cjs +4 -1
  8. package/dist/cjs/routes/ai.routes.cjs.map +1 -1
  9. package/dist/cjs/routes/dictionary.routes.cjs +4 -1
  10. package/dist/cjs/routes/dictionary.routes.cjs.map +1 -1
  11. package/dist/cjs/routes/eventListener.routes.cjs +4 -1
  12. package/dist/cjs/routes/eventListener.routes.cjs.map +1 -1
  13. package/dist/cjs/routes/newsletter.routes.cjs +66 -0
  14. package/dist/cjs/routes/newsletter.routes.cjs.map +1 -0
  15. package/dist/cjs/routes/organization.routes.cjs +4 -1
  16. package/dist/cjs/routes/organization.routes.cjs.map +1 -1
  17. package/dist/cjs/routes/project.routes.cjs +4 -1
  18. package/dist/cjs/routes/project.routes.cjs.map +1 -1
  19. package/dist/cjs/routes/search.routes.cjs +4 -1
  20. package/dist/cjs/routes/search.routes.cjs.map +1 -1
  21. package/dist/cjs/routes/sessionAuth.routes.cjs +4 -1
  22. package/dist/cjs/routes/sessionAuth.routes.cjs.map +1 -1
  23. package/dist/cjs/routes/stripe.routes.cjs +4 -1
  24. package/dist/cjs/routes/stripe.routes.cjs.map +1 -1
  25. package/dist/cjs/routes/tags.routes.cjs +4 -1
  26. package/dist/cjs/routes/tags.routes.cjs.map +1 -1
  27. package/dist/cjs/routes/user.routes.cjs +4 -1
  28. package/dist/cjs/routes/user.routes.cjs.map +1 -1
  29. package/dist/cjs/schemas/user.schema.cjs +9 -0
  30. package/dist/cjs/schemas/user.schema.cjs.map +1 -1
  31. package/dist/cjs/types/user.types.cjs +15 -0
  32. package/dist/cjs/types/user.types.cjs.map +1 -1
  33. package/dist/cjs/utils/AI/aiSdk.cjs +2 -2
  34. package/dist/cjs/utils/AI/aiSdk.cjs.map +1 -1
  35. package/dist/cjs/utils/AI/askDocQuestion/PROMPT.md +6 -2
  36. package/dist/cjs/utils/AI/askDocQuestion/askDocQuestion.cjs +16 -10
  37. package/dist/cjs/utils/AI/askDocQuestion/askDocQuestion.cjs.map +1 -1
  38. package/dist/cjs/utils/AI/askDocQuestion/embeddings.json +7182 -0
  39. package/dist/cjs/utils/AI/autocomplete/PROMPT.md +24 -7
  40. package/dist/cjs/utils/AI/autocomplete/index.cjs +4 -2
  41. package/dist/cjs/utils/AI/autocomplete/index.cjs.map +1 -1
  42. package/dist/esm/controllers/newsletter.controller.mjs +126 -0
  43. package/dist/esm/controllers/newsletter.controller.mjs.map +1 -0
  44. package/dist/esm/export.mjs +2 -0
  45. package/dist/esm/export.mjs.map +1 -1
  46. package/dist/esm/index.mjs +26 -18
  47. package/dist/esm/index.mjs.map +1 -1
  48. package/dist/esm/routes/ai.routes.mjs +3 -1
  49. package/dist/esm/routes/ai.routes.mjs.map +1 -1
  50. package/dist/esm/routes/dictionary.routes.mjs +6 -4
  51. package/dist/esm/routes/dictionary.routes.mjs.map +1 -1
  52. package/dist/esm/routes/eventListener.routes.mjs +3 -1
  53. package/dist/esm/routes/eventListener.routes.mjs.map +1 -1
  54. package/dist/esm/routes/newsletter.routes.mjs +44 -0
  55. package/dist/esm/routes/newsletter.routes.mjs.map +1 -0
  56. package/dist/esm/routes/organization.routes.mjs +7 -5
  57. package/dist/esm/routes/organization.routes.mjs.map +1 -1
  58. package/dist/esm/routes/project.routes.mjs +6 -4
  59. package/dist/esm/routes/project.routes.mjs.map +1 -1
  60. package/dist/esm/routes/search.routes.mjs +3 -1
  61. package/dist/esm/routes/search.routes.mjs.map +1 -1
  62. package/dist/esm/routes/sessionAuth.routes.mjs +11 -9
  63. package/dist/esm/routes/sessionAuth.routes.mjs.map +1 -1
  64. package/dist/esm/routes/stripe.routes.mjs +4 -2
  65. package/dist/esm/routes/stripe.routes.mjs.map +1 -1
  66. package/dist/esm/routes/tags.routes.mjs +3 -1
  67. package/dist/esm/routes/tags.routes.mjs.map +1 -1
  68. package/dist/esm/routes/user.routes.mjs +7 -5
  69. package/dist/esm/routes/user.routes.mjs.map +1 -1
  70. package/dist/esm/schemas/user.schema.mjs +9 -0
  71. package/dist/esm/schemas/user.schema.mjs.map +1 -1
  72. package/dist/esm/types/user.types.mjs +7 -0
  73. package/dist/esm/types/user.types.mjs.map +1 -1
  74. package/dist/esm/utils/AI/aiSdk.mjs +2 -2
  75. package/dist/esm/utils/AI/aiSdk.mjs.map +1 -1
  76. package/dist/esm/utils/AI/askDocQuestion/PROMPT.md +6 -2
  77. package/dist/esm/utils/AI/askDocQuestion/askDocQuestion.mjs +16 -10
  78. package/dist/esm/utils/AI/askDocQuestion/askDocQuestion.mjs.map +1 -1
  79. package/dist/esm/utils/AI/askDocQuestion/embeddings.json +7182 -0
  80. package/dist/esm/utils/AI/autocomplete/PROMPT.md +24 -7
  81. package/dist/esm/utils/AI/autocomplete/index.mjs +4 -2
  82. package/dist/esm/utils/AI/autocomplete/index.mjs.map +1 -1
  83. package/dist/types/controllers/newsletter.controller.d.ts +31 -0
  84. package/dist/types/controllers/newsletter.controller.d.ts.map +1 -0
  85. package/dist/types/export.d.ts +2 -0
  86. package/dist/types/export.d.ts.map +1 -1
  87. package/dist/types/index.d.ts.map +1 -1
  88. package/dist/types/routes/ai.routes.d.ts +1 -0
  89. package/dist/types/routes/ai.routes.d.ts.map +1 -1
  90. package/dist/types/routes/dictionary.routes.d.ts +1 -0
  91. package/dist/types/routes/dictionary.routes.d.ts.map +1 -1
  92. package/dist/types/routes/eventListener.routes.d.ts +1 -0
  93. package/dist/types/routes/eventListener.routes.d.ts.map +1 -1
  94. package/dist/types/routes/newsletter.routes.d.ts +21 -0
  95. package/dist/types/routes/newsletter.routes.d.ts.map +1 -0
  96. package/dist/types/routes/organization.routes.d.ts +1 -0
  97. package/dist/types/routes/organization.routes.d.ts.map +1 -1
  98. package/dist/types/routes/project.routes.d.ts +1 -0
  99. package/dist/types/routes/project.routes.d.ts.map +1 -1
  100. package/dist/types/routes/search.routes.d.ts +1 -0
  101. package/dist/types/routes/search.routes.d.ts.map +1 -1
  102. package/dist/types/routes/sessionAuth.routes.d.ts +1 -0
  103. package/dist/types/routes/sessionAuth.routes.d.ts.map +1 -1
  104. package/dist/types/routes/stripe.routes.d.ts +1 -0
  105. package/dist/types/routes/stripe.routes.d.ts.map +1 -1
  106. package/dist/types/routes/tags.routes.d.ts +1 -0
  107. package/dist/types/routes/tags.routes.d.ts.map +1 -1
  108. package/dist/types/routes/user.routes.d.ts +1 -0
  109. package/dist/types/routes/user.routes.d.ts.map +1 -1
  110. package/dist/types/schemas/user.schema.d.ts +1 -1
  111. package/dist/types/schemas/user.schema.d.ts.map +1 -1
  112. package/dist/types/types/user.types.d.ts +7 -1
  113. package/dist/types/types/user.types.d.ts.map +1 -1
  114. package/dist/types/utils/AI/aiSdk.d.ts +1 -1
  115. package/dist/types/utils/AI/aiSdk.d.ts.map +1 -1
  116. package/dist/types/utils/AI/askDocQuestion/askDocQuestion.d.ts.map +1 -1
  117. package/dist/types/utils/AI/autocomplete/index.d.ts.map +1 -1
  118. package/package.json +19 -19
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var newsletter_controller_exports = {};
30
+ __export(newsletter_controller_exports, {
31
+ getNewsletterStatus: () => getNewsletterStatus,
32
+ subscribeToNewsletter: () => subscribeToNewsletter,
33
+ unsubscribeFromNewsletter: () => unsubscribeFromNewsletter
34
+ });
35
+ module.exports = __toCommonJS(newsletter_controller_exports);
36
+ var import_logger = require('./../logger/index.cjs');
37
+ var userService = __toESM(require('./../services/user.service.cjs'), 1);
38
+ var import_errors = require('./../utils/errors/index.cjs');
39
+ var import_user = require('./../utils/mapper/user.cjs');
40
+ var import_responseData = require('./../utils/responseData.cjs');
41
+ var import_express_intlayer = require("express-intlayer");
42
+ const subscribeToNewsletter = async (req, res, _next) => {
43
+ const { email, emailList } = req.body;
44
+ if (!email) {
45
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "USER_DATA_NOT_FOUND");
46
+ return;
47
+ }
48
+ const emailLists = Array.isArray(emailList) ? emailList : [emailList];
49
+ const emailsListObject = Object.fromEntries(
50
+ emailLists.map((list) => [list, true])
51
+ );
52
+ try {
53
+ let user = await userService.getUserByEmail(email);
54
+ if (!user) {
55
+ user = await userService.createUser({
56
+ email,
57
+ emailsList: emailsListObject
58
+ });
59
+ import_logger.logger.info(`New user created and subscribed to newsletter: ${email}`);
60
+ } else {
61
+ user = await userService.updateUserById(user._id, {
62
+ emailsList: { ...user.emailsList, ...emailsListObject }
63
+ });
64
+ import_logger.logger.info(`User subscribed to newsletter: ${email}`);
65
+ }
66
+ const formattedUser = (0, import_user.mapUserToAPI)(user);
67
+ const responseData = (0, import_responseData.formatResponse)({
68
+ message: (0, import_express_intlayer.t)({
69
+ en: "Successfully subscribed to newsletter",
70
+ fr: "Abonnement \xE0 la newsletter r\xE9ussi",
71
+ es: "Suscripci\xF3n al bolet\xEDn exitosa"
72
+ }),
73
+ description: (0, import_express_intlayer.t)({
74
+ en: "You have been successfully subscribed to our newsletter",
75
+ fr: "Vous avez \xE9t\xE9 abonn\xE9 avec succ\xE8s \xE0 notre newsletter",
76
+ es: "Te has suscrito exitosamente a nuestro bolet\xEDn"
77
+ }),
78
+ data: formattedUser
79
+ });
80
+ res.json(responseData);
81
+ return;
82
+ } catch (error) {
83
+ import_errors.ErrorHandler.handleAppErrorResponse(res, error);
84
+ return;
85
+ }
86
+ };
87
+ const unsubscribeFromNewsletter = async (req, res, _next) => {
88
+ const { userId, emailList } = req.body;
89
+ if (!userId) {
90
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "USER_DATA_NOT_FOUND");
91
+ return;
92
+ }
93
+ try {
94
+ const user = await userService.getUserById(userId);
95
+ if (!user) {
96
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "USER_NOT_FOUND");
97
+ return;
98
+ }
99
+ const emailLists = Array.isArray(emailList) ? emailList : [emailList];
100
+ const emailsListObject = Object.fromEntries(
101
+ emailLists.map((list) => [list, false])
102
+ );
103
+ const updatedUser = await userService.updateUserById(user._id, {
104
+ emailsList: { ...user.emailsList, ...emailsListObject }
105
+ });
106
+ import_logger.logger.info(`User unsubscribed from newsletter: ${updatedUser.email}`);
107
+ const formattedUser = (0, import_user.mapUserToAPI)(updatedUser);
108
+ const responseData = (0, import_responseData.formatResponse)({
109
+ message: (0, import_express_intlayer.t)({
110
+ en: "Successfully unsubscribed from newsletter",
111
+ fr: "D\xE9sabonnement de la newsletter r\xE9ussi",
112
+ es: "Cancelaci\xF3n de suscripci\xF3n al bolet\xEDn exitosa"
113
+ }),
114
+ description: (0, import_express_intlayer.t)({
115
+ en: "You have been successfully unsubscribed from our newsletter",
116
+ fr: "Vous avez \xE9t\xE9 d\xE9sabonn\xE9 avec succ\xE8s de notre newsletter",
117
+ es: "Te has desuscrito exitosamente de nuestro bolet\xEDn"
118
+ }),
119
+ data: formattedUser
120
+ });
121
+ res.json(responseData);
122
+ return;
123
+ } catch (error) {
124
+ import_errors.ErrorHandler.handleAppErrorResponse(res, error);
125
+ return;
126
+ }
127
+ };
128
+ const getNewsletterStatus = async (req, res, _next) => {
129
+ const email = res.locals.user?.email;
130
+ if (!email) {
131
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "USER_DATA_NOT_FOUND");
132
+ return;
133
+ }
134
+ try {
135
+ const user = await userService.getUserByEmail(email);
136
+ if (!user) {
137
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "USER_NOT_FOUND");
138
+ return;
139
+ }
140
+ const formattedUser = (0, import_user.mapUserToAPI)(user);
141
+ const responseData = (0, import_responseData.formatResponse)({
142
+ message: (0, import_express_intlayer.t)({
143
+ en: "Newsletter subscription status retrieved",
144
+ fr: "Statut d'abonnement \xE0 la newsletter r\xE9cup\xE9r\xE9",
145
+ es: "Estado de suscripci\xF3n al bolet\xEDn obtenido"
146
+ }),
147
+ data: formattedUser
148
+ });
149
+ res.json(responseData);
150
+ return;
151
+ } catch (error) {
152
+ import_errors.ErrorHandler.handleAppErrorResponse(res, error);
153
+ return;
154
+ }
155
+ };
156
+ // Annotate the CommonJS export names for ESM import in node:
157
+ 0 && (module.exports = {
158
+ getNewsletterStatus,
159
+ subscribeToNewsletter,
160
+ unsubscribeFromNewsletter
161
+ });
162
+ //# sourceMappingURL=newsletter.controller.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/controllers/newsletter.controller.ts"],"sourcesContent":["import type { EmailsList, UserAPI } from '@/types/user.types';\nimport { logger } from '@logger';\nimport type { ResponseWithInformation } from '@middlewares/sessionAuth.middleware';\nimport * as userService from '@services/user.service';\nimport { type AppError, ErrorHandler } from '@utils/errors';\nimport { mapUserToAPI } from '@utils/mapper/user';\nimport { formatResponse, type ResponseData } from '@utils/responseData';\nimport type { NextFunction, Request } from 'express';\nimport { t } from 'express-intlayer';\n\nexport type NewsletterSubscriptionBody = {\n email: string;\n emailList: EmailsList | EmailsList[];\n};\nexport type NewsletterSubscriptionResult = ResponseData<UserAPI>;\n\n/**\n * Subscribes a user to the newsletter.\n * If the user doesn't exist, creates a new user.\n * If the user exists, updates their newsletter subscription to true.\n */\nexport const subscribeToNewsletter = async (\n req: Request<any, any, NewsletterSubscriptionBody>,\n res: ResponseWithInformation<NewsletterSubscriptionResult>,\n _next: NextFunction\n): Promise<void> => {\n const { email, emailList } = req.body;\n\n if (!email) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_DATA_NOT_FOUND');\n return;\n }\n\n const emailLists = Array.isArray(emailList) ? emailList : [emailList];\n\n // Create new user with newsletter subscription enabled\n const emailsListObject = Object.fromEntries(\n emailLists.map((list) => [list, true])\n ) as Record<EmailsList, boolean>;\n\n try {\n // Check if user exists\n let user = await userService.getUserByEmail(email);\n\n if (!user) {\n user = await userService.createUser({\n email,\n emailsList: emailsListObject,\n });\n\n logger.info(`New user created and subscribed to newsletter: ${email}`);\n } else {\n // Update existing user's newsletter subscription\n user = await userService.updateUserById(user._id, {\n emailsList: { ...user.emailsList, ...emailsListObject },\n });\n\n logger.info(`User subscribed to newsletter: ${email}`);\n }\n\n const formattedUser = mapUserToAPI(user);\n\n const responseData = formatResponse<UserAPI>({\n message: t({\n en: 'Successfully subscribed to newsletter',\n fr: 'Abonnement à la newsletter réussi',\n es: 'Suscripción al boletín exitosa',\n }),\n description: t({\n en: 'You have been successfully subscribed to our newsletter',\n fr: 'Vous avez été abonné avec succès à notre newsletter',\n es: 'Te has suscrito exitosamente a nuestro boletín',\n }),\n data: formattedUser,\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 NewsletterUnsubscriptionBody = {\n userId: string;\n emailList: EmailsList | EmailsList[];\n};\n\n/**\n * Unsubscribes a user from the newsletter.\n * Only works if the user exists.\n */\nexport const unsubscribeFromNewsletter = async (\n req: Request<any, any, NewsletterUnsubscriptionBody>,\n res: ResponseWithInformation<NewsletterSubscriptionResult>,\n _next: NextFunction\n): Promise<void> => {\n const { userId, emailList } = req.body;\n\n if (!userId) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_DATA_NOT_FOUND');\n return;\n }\n\n try {\n // Check if user exists\n const user = await userService.getUserById(userId);\n\n if (!user) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_NOT_FOUND');\n return;\n }\n\n const emailLists = Array.isArray(emailList) ? emailList : [emailList];\n\n // Create new user with newsletter subscription enabled\n const emailsListObject = Object.fromEntries(\n emailLists.map((list) => [list, false])\n ) as Record<EmailsList, boolean>;\n\n // Update user's newsletter subscription to false\n const updatedUser = await userService.updateUserById(user._id, {\n emailsList: { ...user.emailsList, ...emailsListObject },\n });\n\n logger.info(`User unsubscribed from newsletter: ${updatedUser.email}`);\n\n const formattedUser = mapUserToAPI(updatedUser);\n\n const responseData = formatResponse<UserAPI>({\n message: t({\n en: 'Successfully unsubscribed from newsletter',\n fr: 'Désabonnement de la newsletter réussi',\n es: 'Cancelación de suscripción al boletín exitosa',\n }),\n description: t({\n en: 'You have been successfully unsubscribed from our newsletter',\n fr: 'Vous avez été désabonné avec succès de notre newsletter',\n es: 'Te has desuscrito exitosamente de nuestro boletín',\n }),\n data: formattedUser,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\n/**\n * Gets the newsletter subscription status for a user.\n */\nexport const getNewsletterStatus = async (\n req: Request<{ email: string }>,\n res: ResponseWithInformation<NewsletterSubscriptionResult>,\n _next: NextFunction\n): Promise<void> => {\n const email = res.locals.user?.email;\n\n if (!email) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_DATA_NOT_FOUND');\n return;\n }\n\n try {\n const user = await userService.getUserByEmail(email);\n\n if (!user) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_NOT_FOUND');\n return;\n }\n\n const formattedUser = mapUserToAPI(user);\n\n const responseData = formatResponse<UserAPI>({\n message: t({\n en: 'Newsletter subscription status retrieved',\n fr: \"Statut d'abonnement à la newsletter récupéré\",\n es: 'Estado de suscripción al boletín obtenido',\n }),\n data: formattedUser,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAuB;AAEvB,kBAA6B;AAC7B,oBAA4C;AAC5C,kBAA6B;AAC7B,0BAAkD;AAElD,8BAAkB;AAaX,MAAM,wBAAwB,OACnC,KACA,KACA,UACkB;AAClB,QAAM,EAAE,OAAO,UAAU,IAAI,IAAI;AAEjC,MAAI,CAAC,OAAO;AACV,+BAAa,2BAA2B,KAAK,qBAAqB;AAClE;AAAA,EACF;AAEA,QAAM,aAAa,MAAM,QAAQ,SAAS,IAAI,YAAY,CAAC,SAAS;AAGpE,QAAM,mBAAmB,OAAO;AAAA,IAC9B,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC;AAAA,EACvC;AAEA,MAAI;AAEF,QAAI,OAAO,MAAM,YAAY,eAAe,KAAK;AAEjD,QAAI,CAAC,MAAM;AACT,aAAO,MAAM,YAAY,WAAW;AAAA,QAClC;AAAA,QACA,YAAY;AAAA,MACd,CAAC;AAED,2BAAO,KAAK,kDAAkD,KAAK,EAAE;AAAA,IACvE,OAAO;AAEL,aAAO,MAAM,YAAY,eAAe,KAAK,KAAK;AAAA,QAChD,YAAY,EAAE,GAAG,KAAK,YAAY,GAAG,iBAAiB;AAAA,MACxD,CAAC;AAED,2BAAO,KAAK,kCAAkC,KAAK,EAAE;AAAA,IACvD;AAEA,UAAM,oBAAgB,0BAAa,IAAI;AAEvC,UAAM,mBAAe,oCAAwB;AAAA,MAC3C,aAAS,2BAAE;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN,CAAC;AAAA,MACD,iBAAa,2BAAE;AAAA,QACb,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN,CAAC;AAAA,MACD,MAAM;AAAA,IACR,CAAC;AAED,QAAI,KAAK,YAAY;AACrB;AAAA,EACF,SAAS,OAAO;AACd,+BAAa,uBAAuB,KAAK,KAAiB;AAC1D;AAAA,EACF;AACF;AAWO,MAAM,4BAA4B,OACvC,KACA,KACA,UACkB;AAClB,QAAM,EAAE,QAAQ,UAAU,IAAI,IAAI;AAElC,MAAI,CAAC,QAAQ;AACX,+BAAa,2BAA2B,KAAK,qBAAqB;AAClE;AAAA,EACF;AAEA,MAAI;AAEF,UAAM,OAAO,MAAM,YAAY,YAAY,MAAM;AAEjD,QAAI,CAAC,MAAM;AACT,iCAAa,2BAA2B,KAAK,gBAAgB;AAC7D;AAAA,IACF;AAEA,UAAM,aAAa,MAAM,QAAQ,SAAS,IAAI,YAAY,CAAC,SAAS;AAGpE,UAAM,mBAAmB,OAAO;AAAA,MAC9B,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;AAAA,IACxC;AAGA,UAAM,cAAc,MAAM,YAAY,eAAe,KAAK,KAAK;AAAA,MAC7D,YAAY,EAAE,GAAG,KAAK,YAAY,GAAG,iBAAiB;AAAA,IACxD,CAAC;AAED,yBAAO,KAAK,sCAAsC,YAAY,KAAK,EAAE;AAErE,UAAM,oBAAgB,0BAAa,WAAW;AAE9C,UAAM,mBAAe,oCAAwB;AAAA,MAC3C,aAAS,2BAAE;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN,CAAC;AAAA,MACD,iBAAa,2BAAE;AAAA,QACb,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN,CAAC;AAAA,MACD,MAAM;AAAA,IACR,CAAC;AAED,QAAI,KAAK,YAAY;AACrB;AAAA,EACF,SAAS,OAAO;AACd,+BAAa,uBAAuB,KAAK,KAAiB;AAC1D;AAAA,EACF;AACF;AAKO,MAAM,sBAAsB,OACjC,KACA,KACA,UACkB;AAClB,QAAM,QAAQ,IAAI,OAAO,MAAM;AAE/B,MAAI,CAAC,OAAO;AACV,+BAAa,2BAA2B,KAAK,qBAAqB;AAClE;AAAA,EACF;AAEA,MAAI;AACF,UAAM,OAAO,MAAM,YAAY,eAAe,KAAK;AAEnD,QAAI,CAAC,MAAM;AACT,iCAAa,2BAA2B,KAAK,gBAAgB;AAC7D;AAAA,IACF;AAEA,UAAM,oBAAgB,0BAAa,IAAI;AAEvC,UAAM,mBAAe,oCAAwB;AAAA,MAC3C,aAAS,2BAAE;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN,CAAC;AAAA,MACD,MAAM;AAAA,IACR,CAAC;AAED,QAAI,KAAK,YAAY;AACrB;AAAA,EACF,SAAS,OAAO;AACd,+BAAa,uBAAuB,KAAK,KAAiB;AAC1D;AAAA,EACF;AACF;","names":[]}
@@ -20,6 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  var export_exports = {};
21
21
  __export(export_exports, {
22
22
  getDictionaryRoutes: () => import_dictionary.getDictionaryRoutes,
23
+ getNewsletterRoutes: () => import_newsletter.getNewsletterRoutes,
23
24
  getOrganizationRoutes: () => import_organization.getOrganizationRoutes,
24
25
  getProjectRoutes: () => import_project.getProjectRoutes,
25
26
  getSessionAuthRoutes: () => import_sessionAuth.getSessionAuthRoutes,
@@ -27,6 +28,7 @@ __export(export_exports, {
27
28
  });
28
29
  module.exports = __toCommonJS(export_exports);
29
30
  var import_dictionary = require('./routes/dictionary.routes.cjs');
31
+ var import_newsletter = require('./routes/newsletter.routes.cjs');
30
32
  var import_organization = require('./routes/organization.routes.cjs');
31
33
  var import_project = require('./routes/project.routes.cjs');
32
34
  var import_sessionAuth = require('./routes/sessionAuth.routes.cjs');
@@ -38,6 +40,7 @@ __reExport(export_exports, require('./utils/responseData.cjs'), module.exports);
38
40
  // Annotate the CommonJS export names for ESM import in node:
39
41
  0 && (module.exports = {
40
42
  getDictionaryRoutes,
43
+ getNewsletterRoutes,
41
44
  getOrganizationRoutes,
42
45
  getProjectRoutes,
43
46
  getSessionAuthRoutes,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/export.ts"],"sourcesContent":["// Routes\nexport { getDictionaryRoutes } from '@routes/dictionary.routes';\nexport { getOrganizationRoutes } from '@routes/organization.routes';\nexport { getProjectRoutes } from '@routes/project.routes';\nexport { getSessionAuthRoutes } from '@routes/sessionAuth.routes';\nexport { getUserRoutes } from '@routes/user.routes';\n\n// Controllers types\nexport type * from '@controllers/ai.controller';\nexport type * from '@controllers/dictionary.controller';\nexport type * from '@controllers/eventListener.controller';\nexport type * from '@controllers/oAuth2.controller';\nexport type * from '@controllers/organization.controller';\nexport type * from '@controllers/project.controller';\nexport type * from '@controllers/projectAccessKey.controller';\nexport type * from '@controllers/search.controller';\nexport type * from '@controllers/sessionAuth.controller';\nexport type * from '@controllers/stripe.controller';\nexport type * from '@controllers/tag.controller';\nexport type * from '@controllers/user.controller';\n\n// Objects types\nexport type * from '@/types/dictionary.types';\nexport type * from '@/types/oAuth2.types';\nexport type * from '@/types/organization.types';\nexport type * from '@/types/plan.types';\nexport type * from '@/types/project.types';\nexport type * from '@/types/tag.types';\nexport type * from '@/types/user.types';\n\n// Utils\nexport * from '@utils/AI/aiSdk';\nexport * from '@utils/cookies';\nexport * from '@utils/httpStatusCodes';\nexport * from '@utils/responseData';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,wBAAoC;AACpC,0BAAsC;AACtC,qBAAiC;AACjC,yBAAqC;AACrC,kBAA8B;AA0B9B,2BAAc,4BA/Bd;AAgCA,2BAAc,2BAhCd;AAiCA,2BAAc,mCAjCd;AAkCA,2BAAc,gCAlCd;","names":[]}
1
+ {"version":3,"sources":["../../src/export.ts"],"sourcesContent":["// Routes\nexport { getDictionaryRoutes } from '@routes/dictionary.routes';\nexport { getNewsletterRoutes } from '@routes/newsletter.routes';\nexport { getOrganizationRoutes } from '@routes/organization.routes';\nexport { getProjectRoutes } from '@routes/project.routes';\nexport { getSessionAuthRoutes } from '@routes/sessionAuth.routes';\nexport { getUserRoutes } from '@routes/user.routes';\n\n// Controllers types\nexport type * from '@controllers/ai.controller';\nexport type * from '@controllers/dictionary.controller';\nexport type * from '@controllers/eventListener.controller';\nexport type * from '@controllers/newsletter.controller';\nexport type * from '@controllers/oAuth2.controller';\nexport type * from '@controllers/organization.controller';\nexport type * from '@controllers/project.controller';\nexport type * from '@controllers/projectAccessKey.controller';\nexport type * from '@controllers/search.controller';\nexport type * from '@controllers/sessionAuth.controller';\nexport type * from '@controllers/stripe.controller';\nexport type * from '@controllers/tag.controller';\nexport type * from '@controllers/user.controller';\n\n// Objects types\nexport type * from '@/types/dictionary.types';\nexport type * from '@/types/oAuth2.types';\nexport type * from '@/types/organization.types';\nexport type * from '@/types/plan.types';\nexport type * from '@/types/project.types';\nexport type * from '@/types/tag.types';\nexport type * from '@/types/user.types';\n\n// Utils\nexport * from '@utils/AI/aiSdk';\nexport * from '@utils/cookies';\nexport * from '@utils/httpStatusCodes';\nexport * from '@utils/responseData';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,wBAAoC;AACpC,wBAAoC;AACpC,0BAAsC;AACtC,qBAAiC;AACjC,yBAAqC;AACrC,kBAA8B;AA2B9B,2BAAc,4BAjCd;AAkCA,2BAAc,2BAlCd;AAmCA,2BAAc,mCAnCd;AAoCA,2BAAc,gCApCd;","names":[]}
@@ -44,6 +44,7 @@ var import_sessionAuth = require('./middlewares/sessionAuth.middleware.cjs');
44
44
  var import_ai = require('./routes/ai.routes.cjs');
45
45
  var import_dictionary = require('./routes/dictionary.routes.cjs');
46
46
  var import_eventListener = require('./routes/eventListener.routes.cjs');
47
+ var import_newsletter = require('./routes/newsletter.routes.cjs');
47
48
  var import_organization = require('./routes/organization.routes.cjs');
48
49
  var import_project = require('./routes/project.routes.cjs');
49
50
  var import_search = require('./routes/search.routes.cjs');
@@ -141,15 +142,16 @@ app.use(/(.*)/, (req, res, next) => {
141
142
  }
142
143
  next();
143
144
  });
144
- app.use("/api/user", import_user.userRouter);
145
- app.use("/api/organization", import_organization.organizationRouter);
146
- app.use("/api/project", import_project.projectRouter);
147
- app.use("/api/tag", import_tags.tagRouter);
148
- app.use("/api/dictionary", import_dictionary.dictionaryRouter);
149
- app.use("/api/stripe", import_stripe.stripeRouter);
150
- app.use("/api/ai", import_ai.aiRouter);
151
- app.use("/api/event-listener", import_eventListener.eventListenerRouter);
152
- app.use("/api/search", import_search.searchRouter);
145
+ app.use(import_user.userRoute, import_user.userRouter);
146
+ app.use(import_organization.organizationRoute, import_organization.organizationRouter);
147
+ app.use(import_project.projectRoute, import_project.projectRouter);
148
+ app.use(import_tags.tagRoute, import_tags.tagRouter);
149
+ app.use(import_dictionary.dictionaryRoute, import_dictionary.dictionaryRouter);
150
+ app.use(import_stripe.stripeRoute, import_stripe.stripeRouter);
151
+ app.use(import_ai.aiRoute, import_ai.aiRouter);
152
+ app.use(import_eventListener.eventListenerRoute, import_eventListener.eventListenerRouter);
153
+ app.use(import_search.searchRoute, import_search.searchRouter);
154
+ app.use(import_newsletter.newsletterRoute, import_newsletter.newsletterRouter);
153
155
  app.listen(process.env.PORT, () => {
154
156
  import_logger.logger.info(`Listening on port ${process.env.PORT}`);
155
157
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["// Libraries\nimport compression from 'compression';\nimport cookieParser from 'cookie-parser';\nimport cors, { type CorsOptions } from 'cors';\nimport dotenv from 'dotenv';\nimport express, { type Express } from 'express';\nimport { intlayer, t } from 'express-intlayer';\nimport helmet from 'helmet';\n\n// Middlewares\nimport {\n type RequestWithOAuth2Information,\n attachOAuthInstance,\n authenticateOAuth2,\n} from '@middlewares/oAuth2.middleware';\nimport { logAPIRequestURL } from '@middlewares/request.middleware';\nimport {\n type ResponseWithInformation,\n checkAdmin,\n checkOrganization,\n checkProject,\n checkUser,\n} from '@middlewares/sessionAuth.middleware';\n\n// Routes\nimport { aiRouter } from '@routes/ai.routes';\nimport { dictionaryRouter } from '@routes/dictionary.routes';\nimport { eventListenerRouter } from '@routes/eventListener.routes';\nimport { organizationRouter } from '@routes/organization.routes';\nimport { projectRouter } from '@routes/project.routes';\nimport { searchRouter } from '@routes/search.routes';\nimport { sessionAuthRouter } from '@routes/sessionAuth.routes';\nimport { stripeRouter } from '@routes/stripe.routes';\nimport { tagRouter } from '@routes/tags.routes';\nimport { userRouter } from '@routes/user.routes';\n\n// Webhooks\nimport { stripeWebhook } from '@webhooks/stripe.webhook';\n\n// Controllers\nimport { getOAuth2Token } from '@controllers/oAuth2.controller';\nimport {\n getSessionInformation,\n setCSRFToken,\n} from '@controllers/sessionAuth.controller';\n\n// Utils\nimport { doubleCsrfProtection } from '@utils/CSRF';\nimport { connectDB } from '@utils/mongoDB/connectDB';\n\n// Logger\nimport { logger } from './logger/index';\n\nconst app: Express = express();\n\napp.disable('x-powered-by'); // Disabled to prevent attackers from knowing that the app is running Express\napp.use(helmet());\n\n// Environment variables\nconst env = app.get('env');\n\nlogger.info(`run as ${env}`);\n\ndotenv.config({\n path: [`.env.${env}.local`, `.env.${env}`, '.env.local', '.env'],\n});\n\n// Parse incoming requests with cookies\napp.use(cookieParser());\n\n// Load internationalization request handler\napp.use(intlayer());\n\nconst isDev = env === 'development';\n\n// Connect to MongoDB\nconnectDB();\n\n// Stripe\napp.post(\n '/webhook/stripe',\n express.raw({ type: 'application/json' }),\n stripeWebhook\n);\n\n// Compress all HTTP responses\napp.use(compression());\n\n// Parse incoming requests with JSON payloads\napp.use(express.json({ limit: '50mb' }));\n\n// Parse incoming requests with urlencoded payloads\napp.use(express.urlencoded({ extended: true }));\n\nconst whitelist = [process.env.CLIENT_URL!];\n\n// CORS\nconst corsOptions: CorsOptions = {\n origin: (origin, callback) => {\n // Allow requests with no origin (like mobile apps or curl requests)\n if (!origin) return callback(null, true);\n\n if (whitelist.includes(origin)) {\n logger.info('whitelisted origin', origin);\n return callback(null, true);\n }\n\n logger.info('non whitelisted origin', origin);\n // Reflect the request's origin (echo back the origin header)\n callback(null, origin);\n },\n allowedHeaders: [\n 'authorization',\n 'Content-Type',\n 'credentials',\n 'cache-control',\n 'Access-Control-Allow-Origin',\n 'private-state-token-redemption',\n 'private-state-token-issuance',\n 'browsing-topics',\n ],\n exposedHeaders: [''],\n preflightContinue: false,\n methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',\n credentials: true,\n};\napp.use(cors(corsOptions));\n\n// Liveness check\napp.get('/', (_req, res) => {\n res.send(\n t({\n en: 'Ok - locale: en',\n fr: 'Ok - locale: fr',\n es: 'Ok - locale: es',\n })\n );\n});\n\n// middleware - jwt & session auth\napp.use(/(.*)/, checkUser);\napp.use(/(.*)/, checkOrganization);\napp.use(/(.*)/, checkProject);\napp.use(/(.*)/, checkAdmin);\n\n// debug\nif (isDev) {\n app.use(logAPIRequestURL);\n}\n\n// Sessions\napp.get('/session', getSessionInformation);\napp.use('/api/auth', sessionAuthRouter);\n\n// CSRF\napp.get('/csrf-token', setCSRFToken);\n\n// oAuth2\napp.use(/(.*)/, attachOAuthInstance);\napp.post('/oauth2/token', getOAuth2Token); // Route to get the token\napp.use(/(.*)/, (req, res, next) => {\n // If the request is not already authenticated check the oAuth2 token\n if (!res.locals.authType) {\n return authenticateOAuth2(\n req as RequestWithOAuth2Information,\n res as ResponseWithInformation,\n next\n );\n }\n next();\n});\n\n// CSRF protection\napp.use(/(.*)/, (req, res, next) => {\n // If the request is authenticated using the session auth check the CSRF token\n if (res.locals.authType === 'session') {\n return doubleCsrfProtection(req, res, next);\n }\n next();\n});\n\n// Routes\napp.use('/api/user', userRouter);\napp.use('/api/organization', organizationRouter);\napp.use('/api/project', projectRouter);\napp.use('/api/tag', tagRouter);\napp.use('/api/dictionary', dictionaryRouter);\napp.use('/api/stripe', stripeRouter);\napp.use('/api/ai', aiRouter);\napp.use('/api/event-listener', eventListenerRouter);\napp.use('/api/search', searchRouter);\n\n// Server\napp.listen(process.env.PORT, () => {\n logger.info(`Listening on port ${process.env.PORT}`);\n});\n\n// Export tu use as serverless function\nexport default app;\n"],"mappings":"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","names":["import_sessionAuth","import_stripe","import_oAuth2","express","helmet","dotenv","cookieParser","compression","cors"]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["// Libraries\nimport compression from 'compression';\nimport cookieParser from 'cookie-parser';\nimport cors, { type CorsOptions } from 'cors';\nimport dotenv from 'dotenv';\nimport express, { type Express } from 'express';\nimport { intlayer, t } from 'express-intlayer';\nimport helmet from 'helmet';\n\n// Middlewares\nimport {\n type RequestWithOAuth2Information,\n attachOAuthInstance,\n authenticateOAuth2,\n} from '@middlewares/oAuth2.middleware';\nimport { logAPIRequestURL } from '@middlewares/request.middleware';\nimport {\n type ResponseWithInformation,\n checkAdmin,\n checkOrganization,\n checkProject,\n checkUser,\n} from '@middlewares/sessionAuth.middleware';\n\n// Routes\nimport { aiRoute, aiRouter } from '@routes/ai.routes';\nimport { dictionaryRoute, dictionaryRouter } from '@routes/dictionary.routes';\nimport {\n eventListenerRoute,\n eventListenerRouter,\n} from '@routes/eventListener.routes';\nimport { newsletterRoute, newsletterRouter } from '@routes/newsletter.routes';\nimport {\n organizationRoute,\n organizationRouter,\n} from '@routes/organization.routes';\nimport { projectRoute, projectRouter } from '@routes/project.routes';\nimport { searchRoute, searchRouter } from '@routes/search.routes';\nimport { sessionAuthRouter } from '@routes/sessionAuth.routes';\nimport { stripeRoute, stripeRouter } from '@routes/stripe.routes';\nimport { tagRoute, tagRouter } from '@routes/tags.routes';\nimport { userRoute, userRouter } from '@routes/user.routes';\n\n// Webhooks\nimport { stripeWebhook } from '@webhooks/stripe.webhook';\n\n// Controllers\nimport { getOAuth2Token } from '@controllers/oAuth2.controller';\nimport {\n getSessionInformation,\n setCSRFToken,\n} from '@controllers/sessionAuth.controller';\n\n// Utils\nimport { doubleCsrfProtection } from '@utils/CSRF';\nimport { connectDB } from '@utils/mongoDB/connectDB';\n\n// Logger\nimport { logger } from './logger/index';\n\nconst app: Express = express();\n\napp.disable('x-powered-by'); // Disabled to prevent attackers from knowing that the app is running Express\napp.use(helmet());\n\n// Environment variables\nconst env = app.get('env');\n\nlogger.info(`run as ${env}`);\n\ndotenv.config({\n path: [`.env.${env}.local`, `.env.${env}`, '.env.local', '.env'],\n});\n\n// Parse incoming requests with cookies\napp.use(cookieParser());\n\n// Load internationalization request handler\napp.use(intlayer());\n\nconst isDev = env === 'development';\n\n// Connect to MongoDB\nconnectDB();\n\n// Stripe\napp.post(\n '/webhook/stripe',\n express.raw({ type: 'application/json' }),\n stripeWebhook\n);\n\n// Compress all HTTP responses\napp.use(compression());\n\n// Parse incoming requests with JSON payloads\napp.use(express.json({ limit: '50mb' }));\n\n// Parse incoming requests with urlencoded payloads\napp.use(express.urlencoded({ extended: true }));\n\nconst whitelist = [process.env.CLIENT_URL!];\n\n// CORS\nconst corsOptions: CorsOptions = {\n origin: (origin, callback) => {\n // Allow requests with no origin (like mobile apps or curl requests)\n if (!origin) return callback(null, true);\n\n if (whitelist.includes(origin)) {\n logger.info('whitelisted origin', origin);\n return callback(null, true);\n }\n\n logger.info('non whitelisted origin', origin);\n // Reflect the request's origin (echo back the origin header)\n callback(null, origin);\n },\n allowedHeaders: [\n 'authorization',\n 'Content-Type',\n 'credentials',\n 'cache-control',\n 'Access-Control-Allow-Origin',\n 'private-state-token-redemption',\n 'private-state-token-issuance',\n 'browsing-topics',\n ],\n exposedHeaders: [''],\n preflightContinue: false,\n methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',\n credentials: true,\n};\napp.use(cors(corsOptions));\n\n// Liveness check\napp.get('/', (_req, res) => {\n res.send(\n t({\n en: 'Ok - locale: en',\n fr: 'Ok - locale: fr',\n es: 'Ok - locale: es',\n })\n );\n});\n\n// middleware - jwt & session auth\napp.use(/(.*)/, checkUser);\napp.use(/(.*)/, checkOrganization);\napp.use(/(.*)/, checkProject);\napp.use(/(.*)/, checkAdmin);\n\n// debug\nif (isDev) {\n app.use(logAPIRequestURL);\n}\n\n// Sessions\napp.get('/session', getSessionInformation);\napp.use('/api/auth', sessionAuthRouter);\n\n// CSRF\napp.get('/csrf-token', setCSRFToken);\n\n// oAuth2\napp.use(/(.*)/, attachOAuthInstance);\napp.post('/oauth2/token', getOAuth2Token); // Route to get the token\napp.use(/(.*)/, (req, res, next) => {\n // If the request is not already authenticated check the oAuth2 token\n if (!res.locals.authType) {\n return authenticateOAuth2(\n req as RequestWithOAuth2Information,\n res as ResponseWithInformation,\n next\n );\n }\n next();\n});\n\n// CSRF protection\napp.use(/(.*)/, (req, res, next) => {\n // If the request is authenticated using the session auth check the CSRF token\n if (res.locals.authType === 'session') {\n return doubleCsrfProtection(req, res, next);\n }\n next();\n});\n\n// Routes\napp.use(userRoute, userRouter);\napp.use(organizationRoute, organizationRouter);\napp.use(projectRoute, projectRouter);\napp.use(tagRoute, tagRouter);\napp.use(dictionaryRoute, dictionaryRouter);\napp.use(stripeRoute, stripeRouter);\napp.use(aiRoute, aiRouter);\napp.use(eventListenerRoute, eventListenerRouter);\napp.use(searchRoute, searchRouter);\napp.use(newsletterRoute, newsletterRouter);\n\n// Server\napp.listen(process.env.PORT, () => {\n logger.info(`Listening on port ${process.env.PORT}`);\n});\n\n// Export tu use as serverless function\nexport default app;\n"],"mappings":"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","names":["import_sessionAuth","import_stripe","import_oAuth2","express","helmet","dotenv","cookieParser","compression","cors"]}
@@ -18,6 +18,7 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var ai_routes_exports = {};
20
20
  __export(ai_routes_exports, {
21
+ aiRoute: () => aiRoute,
21
22
  aiRouter: () => aiRouter,
22
23
  getAiRoutes: () => getAiRoutes
23
24
  });
@@ -25,7 +26,8 @@ module.exports = __toCommonJS(ai_routes_exports);
25
26
  var import_ai = require('./../controllers/ai.controller.cjs');
26
27
  var import_express = require("express");
27
28
  const aiRouter = (0, import_express.Router)();
28
- const baseURL = () => `${process.env.BACKEND_URL}/api/ai`;
29
+ const aiRoute = "/api/ai";
30
+ const baseURL = () => `${process.env.BACKEND_URL}${aiRoute}`;
29
31
  const getAiRoutes = () => ({
30
32
  translateJSON: {
31
33
  urlModel: "/translate/json",
@@ -81,6 +83,7 @@ aiRouter.post(getAiRoutes().auditTag.urlModel, import_ai.auditTag);
81
83
  aiRouter.post(getAiRoutes().autocomplete.urlModel, import_ai.autocomplete);
82
84
  // Annotate the CommonJS export names for ESM import in node:
83
85
  0 && (module.exports = {
86
+ aiRoute,
84
87
  aiRouter,
85
88
  getAiRoutes
86
89
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/routes/ai.routes.ts"],"sourcesContent":["import type { Routes } from '@/types/Routes';\nimport {\n askDocQuestion,\n auditContentDeclaration,\n auditContentDeclarationField,\n auditContentDeclarationMetadata,\n auditTag,\n autocomplete,\n translateJSON,\n} from '@controllers/ai.controller';\nimport { Router } from 'express';\n\nexport const aiRouter: Router = Router();\n\nconst baseURL = () => `${process.env.BACKEND_URL}/api/ai`;\n\nexport const getAiRoutes = () =>\n ({\n translateJSON: {\n urlModel: '/translate/json',\n url: `${baseURL()}/translate/json`,\n method: 'POST',\n },\n auditContentDeclaration: {\n urlModel: '/audit/dictionary',\n url: `${baseURL()}/audit/dictionary`,\n method: 'POST',\n },\n auditContentDeclarationField: {\n urlModel: '/audit/dictionary/field',\n url: `${baseURL()}/audit/dictionary/field`,\n method: 'POST',\n },\n auditContentDeclarationMetadata: {\n urlModel: '/audit/dictionary/metadata',\n url: `${baseURL()}/audit/dictionary/metadata`,\n method: 'POST',\n },\n auditTag: {\n urlModel: '/audit/tag',\n url: `${baseURL()}/audit/tag`,\n method: 'POST',\n },\n ask: {\n urlModel: '/ask',\n url: `${baseURL()}/ask`,\n method: 'POST',\n },\n autocomplete: {\n urlModel: '/autocomplete',\n url: `${baseURL()}/autocomplete`,\n method: 'POST',\n },\n }) satisfies Routes;\n\naiRouter.post(getAiRoutes().translateJSON.urlModel, translateJSON);\n\naiRouter.post(\n getAiRoutes().auditContentDeclaration.urlModel,\n auditContentDeclaration\n);\naiRouter.post(\n getAiRoutes().auditContentDeclarationField.urlModel,\n auditContentDeclarationField\n);\naiRouter.post(\n getAiRoutes().auditContentDeclarationMetadata.urlModel,\n auditContentDeclarationMetadata\n);\naiRouter.post(getAiRoutes().ask.urlModel, askDocQuestion);\n\naiRouter.post(getAiRoutes().auditTag.urlModel, auditTag);\n\naiRouter.post(getAiRoutes().autocomplete.urlModel, autocomplete);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gBAQO;AACP,qBAAuB;AAEhB,MAAM,eAAmB,uBAAO;AAEvC,MAAM,UAAU,MAAM,GAAG,QAAQ,IAAI,WAAW;AAEzC,MAAM,cAAc,OACxB;AAAA,EACC,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AAAA,EACA,yBAAyB;AAAA,IACvB,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AAAA,EACA,8BAA8B;AAAA,IAC5B,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AAAA,EACA,iCAAiC;AAAA,IAC/B,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AAAA,EACA,UAAU;AAAA,IACR,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AAAA,EACA,KAAK;AAAA,IACH,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AAAA,EACA,cAAc;AAAA,IACZ,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AACF;AAEF,SAAS,KAAK,YAAY,EAAE,cAAc,UAAU,uBAAa;AAEjE,SAAS;AAAA,EACP,YAAY,EAAE,wBAAwB;AAAA,EACtC;AACF;AACA,SAAS;AAAA,EACP,YAAY,EAAE,6BAA6B;AAAA,EAC3C;AACF;AACA,SAAS;AAAA,EACP,YAAY,EAAE,gCAAgC;AAAA,EAC9C;AACF;AACA,SAAS,KAAK,YAAY,EAAE,IAAI,UAAU,wBAAc;AAExD,SAAS,KAAK,YAAY,EAAE,SAAS,UAAU,kBAAQ;AAEvD,SAAS,KAAK,YAAY,EAAE,aAAa,UAAU,sBAAY;","names":[]}
1
+ {"version":3,"sources":["../../../src/routes/ai.routes.ts"],"sourcesContent":["import type { Routes } from '@/types/Routes';\nimport {\n askDocQuestion,\n auditContentDeclaration,\n auditContentDeclarationField,\n auditContentDeclarationMetadata,\n auditTag,\n autocomplete,\n translateJSON,\n} from '@controllers/ai.controller';\nimport { Router } from 'express';\n\nexport const aiRouter: Router = Router();\n\nexport const aiRoute = '/api/ai';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${aiRoute}`;\n\nexport const getAiRoutes = () =>\n ({\n translateJSON: {\n urlModel: '/translate/json',\n url: `${baseURL()}/translate/json`,\n method: 'POST',\n },\n auditContentDeclaration: {\n urlModel: '/audit/dictionary',\n url: `${baseURL()}/audit/dictionary`,\n method: 'POST',\n },\n auditContentDeclarationField: {\n urlModel: '/audit/dictionary/field',\n url: `${baseURL()}/audit/dictionary/field`,\n method: 'POST',\n },\n auditContentDeclarationMetadata: {\n urlModel: '/audit/dictionary/metadata',\n url: `${baseURL()}/audit/dictionary/metadata`,\n method: 'POST',\n },\n auditTag: {\n urlModel: '/audit/tag',\n url: `${baseURL()}/audit/tag`,\n method: 'POST',\n },\n ask: {\n urlModel: '/ask',\n url: `${baseURL()}/ask`,\n method: 'POST',\n },\n autocomplete: {\n urlModel: '/autocomplete',\n url: `${baseURL()}/autocomplete`,\n method: 'POST',\n },\n }) satisfies Routes;\n\naiRouter.post(getAiRoutes().translateJSON.urlModel, translateJSON);\n\naiRouter.post(\n getAiRoutes().auditContentDeclaration.urlModel,\n auditContentDeclaration\n);\naiRouter.post(\n getAiRoutes().auditContentDeclarationField.urlModel,\n auditContentDeclarationField\n);\naiRouter.post(\n getAiRoutes().auditContentDeclarationMetadata.urlModel,\n auditContentDeclarationMetadata\n);\naiRouter.post(getAiRoutes().ask.urlModel, askDocQuestion);\n\naiRouter.post(getAiRoutes().auditTag.urlModel, auditTag);\n\naiRouter.post(getAiRoutes().autocomplete.urlModel, autocomplete);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gBAQO;AACP,qBAAuB;AAEhB,MAAM,eAAmB,uBAAO;AAEhC,MAAM,UAAU;AAEvB,MAAM,UAAU,MAAM,GAAG,QAAQ,IAAI,WAAW,GAAG,OAAO;AAEnD,MAAM,cAAc,OACxB;AAAA,EACC,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AAAA,EACA,yBAAyB;AAAA,IACvB,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AAAA,EACA,8BAA8B;AAAA,IAC5B,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AAAA,EACA,iCAAiC;AAAA,IAC/B,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AAAA,EACA,UAAU;AAAA,IACR,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AAAA,EACA,KAAK;AAAA,IACH,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AAAA,EACA,cAAc;AAAA,IACZ,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AACF;AAEF,SAAS,KAAK,YAAY,EAAE,cAAc,UAAU,uBAAa;AAEjE,SAAS;AAAA,EACP,YAAY,EAAE,wBAAwB;AAAA,EACtC;AACF;AACA,SAAS;AAAA,EACP,YAAY,EAAE,6BAA6B;AAAA,EAC3C;AACF;AACA,SAAS;AAAA,EACP,YAAY,EAAE,gCAAgC;AAAA,EAC9C;AACF;AACA,SAAS,KAAK,YAAY,EAAE,IAAI,UAAU,wBAAc;AAExD,SAAS,KAAK,YAAY,EAAE,SAAS,UAAU,kBAAQ;AAEvD,SAAS,KAAK,YAAY,EAAE,aAAa,UAAU,sBAAY;","names":[]}
@@ -18,6 +18,7 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var dictionary_routes_exports = {};
20
20
  __export(dictionary_routes_exports, {
21
+ dictionaryRoute: () => dictionaryRoute,
21
22
  dictionaryRouter: () => dictionaryRouter,
22
23
  getDictionaryRoutes: () => getDictionaryRoutes
23
24
  });
@@ -25,7 +26,8 @@ module.exports = __toCommonJS(dictionary_routes_exports);
25
26
  var import_dictionary = require('./../controllers/dictionary.controller.cjs');
26
27
  var import_express = require("express");
27
28
  const dictionaryRouter = (0, import_express.Router)();
28
- const baseURL = () => `${process.env.BACKEND_URL}/api/dictionary`;
29
+ const dictionaryRoute = "/api/dictionary";
30
+ const baseURL = () => `${process.env.BACKEND_URL}${dictionaryRoute}`;
29
31
  const getDictionaryRoutes = () => ({
30
32
  getDictionaries: {
31
33
  urlModel: "/",
@@ -93,6 +95,7 @@ dictionaryRouter.delete(
93
95
  );
94
96
  // Annotate the CommonJS export names for ESM import in node:
95
97
  0 && (module.exports = {
98
+ dictionaryRoute,
96
99
  dictionaryRouter,
97
100
  getDictionaryRoutes
98
101
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/routes/dictionary.routes.ts"],"sourcesContent":["import {\n pushDictionaries,\n addDictionary,\n deleteDictionary,\n getDictionaries,\n updateDictionary,\n getDictionaryByKey,\n getDictionariesKeys,\n} from '@controllers/dictionary.controller';\nimport { Router } from 'express';\nimport type { Routes } from '@/types/Routes';\n\nexport const dictionaryRouter: Router = Router();\n\nconst baseURL = () => `${process.env.BACKEND_URL}/api/dictionary`;\n\nexport const getDictionaryRoutes = () =>\n ({\n getDictionaries: {\n urlModel: '/',\n url: baseURL,\n method: 'GET',\n },\n getDictionariesKeys: {\n urlModel: '/keys',\n url: `${baseURL}/keys`,\n method: 'GET',\n },\n getDictionary: {\n urlModel: '/:dictionaryKey',\n url: ({ dictionaryKey }: { dictionaryKey: string }) =>\n `${baseURL}/${dictionaryKey}`,\n method: 'GET',\n },\n addDictionary: {\n urlModel: '/',\n url: baseURL,\n method: 'POST',\n },\n pushDictionaries: {\n urlModel: '/',\n url: baseURL,\n method: 'PATCH',\n },\n updateDictionary: {\n urlModel: '/:dictionaryId',\n url: ({ dictionaryId }: { dictionaryId: string }) =>\n `${baseURL}/${dictionaryId}`,\n method: 'PUT',\n },\n deleteDictionary: {\n urlModel: '/:dictionaryId',\n url: ({ dictionaryId }: { dictionaryId: string }) =>\n `${baseURL}/${dictionaryId}`,\n method: 'DELETE',\n },\n }) satisfies Routes;\n\ndictionaryRouter.get(\n getDictionaryRoutes().getDictionaries.urlModel,\n getDictionaries\n);\n\ndictionaryRouter.get(\n getDictionaryRoutes().getDictionariesKeys.urlModel,\n getDictionariesKeys\n);\n\ndictionaryRouter.get(\n getDictionaryRoutes().getDictionary.urlModel,\n getDictionaryByKey\n);\n\ndictionaryRouter.post(\n getDictionaryRoutes().addDictionary.urlModel,\n addDictionary\n);\ndictionaryRouter.patch(\n getDictionaryRoutes().pushDictionaries.urlModel,\n pushDictionaries\n);\ndictionaryRouter.put(\n getDictionaryRoutes().updateDictionary.urlModel,\n updateDictionary\n);\ndictionaryRouter.delete(\n getDictionaryRoutes().deleteDictionary.urlModel,\n deleteDictionary\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAQO;AACP,qBAAuB;AAGhB,MAAM,uBAA2B,uBAAO;AAE/C,MAAM,UAAU,MAAM,GAAG,QAAQ,IAAI,WAAW;AAEzC,MAAM,sBAAsB,OAChC;AAAA,EACC,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,cAAc,MACpB,GAAG,OAAO,IAAI,aAAa;AAAA,IAC7B,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,aAAa,MACnB,GAAG,OAAO,IAAI,YAAY;AAAA,IAC5B,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,aAAa,MACnB,GAAG,OAAO,IAAI,YAAY;AAAA,IAC5B,QAAQ;AAAA,EACV;AACF;AAEF,iBAAiB;AAAA,EACf,oBAAoB,EAAE,gBAAgB;AAAA,EACtC;AACF;AAEA,iBAAiB;AAAA,EACf,oBAAoB,EAAE,oBAAoB;AAAA,EAC1C;AACF;AAEA,iBAAiB;AAAA,EACf,oBAAoB,EAAE,cAAc;AAAA,EACpC;AACF;AAEA,iBAAiB;AAAA,EACf,oBAAoB,EAAE,cAAc;AAAA,EACpC;AACF;AACA,iBAAiB;AAAA,EACf,oBAAoB,EAAE,iBAAiB;AAAA,EACvC;AACF;AACA,iBAAiB;AAAA,EACf,oBAAoB,EAAE,iBAAiB;AAAA,EACvC;AACF;AACA,iBAAiB;AAAA,EACf,oBAAoB,EAAE,iBAAiB;AAAA,EACvC;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/routes/dictionary.routes.ts"],"sourcesContent":["import type { Routes } from '@/types/Routes';\nimport {\n addDictionary,\n deleteDictionary,\n getDictionaries,\n getDictionariesKeys,\n getDictionaryByKey,\n pushDictionaries,\n updateDictionary,\n} from '@controllers/dictionary.controller';\nimport { Router } from 'express';\n\nexport const dictionaryRouter: Router = Router();\n\nexport const dictionaryRoute = '/api/dictionary';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${dictionaryRoute}`;\n\nexport const getDictionaryRoutes = () =>\n ({\n getDictionaries: {\n urlModel: '/',\n url: baseURL,\n method: 'GET',\n },\n getDictionariesKeys: {\n urlModel: '/keys',\n url: `${baseURL}/keys`,\n method: 'GET',\n },\n getDictionary: {\n urlModel: '/:dictionaryKey',\n url: ({ dictionaryKey }: { dictionaryKey: string }) =>\n `${baseURL}/${dictionaryKey}`,\n method: 'GET',\n },\n addDictionary: {\n urlModel: '/',\n url: baseURL,\n method: 'POST',\n },\n pushDictionaries: {\n urlModel: '/',\n url: baseURL,\n method: 'PATCH',\n },\n updateDictionary: {\n urlModel: '/:dictionaryId',\n url: ({ dictionaryId }: { dictionaryId: string }) =>\n `${baseURL}/${dictionaryId}`,\n method: 'PUT',\n },\n deleteDictionary: {\n urlModel: '/:dictionaryId',\n url: ({ dictionaryId }: { dictionaryId: string }) =>\n `${baseURL}/${dictionaryId}`,\n method: 'DELETE',\n },\n }) satisfies Routes;\n\ndictionaryRouter.get(\n getDictionaryRoutes().getDictionaries.urlModel,\n getDictionaries\n);\n\ndictionaryRouter.get(\n getDictionaryRoutes().getDictionariesKeys.urlModel,\n getDictionariesKeys\n);\n\ndictionaryRouter.get(\n getDictionaryRoutes().getDictionary.urlModel,\n getDictionaryByKey\n);\n\ndictionaryRouter.post(\n getDictionaryRoutes().addDictionary.urlModel,\n addDictionary\n);\ndictionaryRouter.patch(\n getDictionaryRoutes().pushDictionaries.urlModel,\n pushDictionaries\n);\ndictionaryRouter.put(\n getDictionaryRoutes().updateDictionary.urlModel,\n updateDictionary\n);\ndictionaryRouter.delete(\n getDictionaryRoutes().deleteDictionary.urlModel,\n deleteDictionary\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,wBAQO;AACP,qBAAuB;AAEhB,MAAM,uBAA2B,uBAAO;AAExC,MAAM,kBAAkB;AAE/B,MAAM,UAAU,MAAM,GAAG,QAAQ,IAAI,WAAW,GAAG,eAAe;AAE3D,MAAM,sBAAsB,OAChC;AAAA,EACC,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,cAAc,MACpB,GAAG,OAAO,IAAI,aAAa;AAAA,IAC7B,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,aAAa,MACnB,GAAG,OAAO,IAAI,YAAY;AAAA,IAC5B,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,aAAa,MACnB,GAAG,OAAO,IAAI,YAAY;AAAA,IAC5B,QAAQ;AAAA,EACV;AACF;AAEF,iBAAiB;AAAA,EACf,oBAAoB,EAAE,gBAAgB;AAAA,EACtC;AACF;AAEA,iBAAiB;AAAA,EACf,oBAAoB,EAAE,oBAAoB;AAAA,EAC1C;AACF;AAEA,iBAAiB;AAAA,EACf,oBAAoB,EAAE,cAAc;AAAA,EACpC;AACF;AAEA,iBAAiB;AAAA,EACf,oBAAoB,EAAE,cAAc;AAAA,EACpC;AACF;AACA,iBAAiB;AAAA,EACf,oBAAoB,EAAE,iBAAiB;AAAA,EACvC;AACF;AACA,iBAAiB;AAAA,EACf,oBAAoB,EAAE,iBAAiB;AAAA,EACvC;AACF;AACA,iBAAiB;AAAA,EACf,oBAAoB,EAAE,iBAAiB;AAAA,EACvC;AACF;","names":[]}
@@ -18,6 +18,7 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var eventListener_routes_exports = {};
20
20
  __export(eventListener_routes_exports, {
21
+ eventListenerRoute: () => eventListenerRoute,
21
22
  eventListenerRouter: () => eventListenerRouter,
22
23
  eventListenerRoutes: () => eventListenerRoutes
23
24
  });
@@ -25,7 +26,8 @@ module.exports = __toCommonJS(eventListener_routes_exports);
25
26
  var import_eventListener = require('./../controllers/eventListener.controller.cjs');
26
27
  var import_express = require("express");
27
28
  const eventListenerRouter = (0, import_express.Router)();
28
- const baseURL = () => `${process.env.BACKEND_URL}/api/event-listener`;
29
+ const eventListenerRoute = "/api/event-listener";
30
+ const baseURL = () => `${process.env.BACKEND_URL}${eventListenerRoute}`;
29
31
  const eventListenerRoutes = () => ({
30
32
  checkDictionaryChangeSSE: {
31
33
  urlModel: "/:accessToken",
@@ -39,6 +41,7 @@ eventListenerRouter.get(
39
41
  );
40
42
  // Annotate the CommonJS export names for ESM import in node:
41
43
  0 && (module.exports = {
44
+ eventListenerRoute,
42
45
  eventListenerRouter,
43
46
  eventListenerRoutes
44
47
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/routes/eventListener.routes.ts"],"sourcesContent":["import { listenChangeSSE } from '@controllers/eventListener.controller';\nimport { Router } from 'express';\nimport type { Routes } from '@/types/Routes';\n\nexport const eventListenerRouter: Router = Router();\n\nconst baseURL = () => `${process.env.BACKEND_URL}/api/event-listener`;\n\nexport const eventListenerRoutes = () =>\n ({\n checkDictionaryChangeSSE: {\n urlModel: '/:accessToken',\n url: ({ accessToken }: { accessToken: string }) =>\n `${baseURL}/${accessToken}`,\n method: 'GET',\n },\n }) satisfies Routes;\n\neventListenerRouter.get(\n eventListenerRoutes().checkDictionaryChangeSSE.urlModel,\n listenChangeSSE\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAAgC;AAChC,qBAAuB;AAGhB,MAAM,0BAA8B,uBAAO;AAElD,MAAM,UAAU,MAAM,GAAG,QAAQ,IAAI,WAAW;AAEzC,MAAM,sBAAsB,OAChC;AAAA,EACC,0BAA0B;AAAA,IACxB,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,YAAY,MAClB,GAAG,OAAO,IAAI,WAAW;AAAA,IAC3B,QAAQ;AAAA,EACV;AACF;AAEF,oBAAoB;AAAA,EAClB,oBAAoB,EAAE,yBAAyB;AAAA,EAC/C;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/routes/eventListener.routes.ts"],"sourcesContent":["import type { Routes } from '@/types/Routes';\nimport { listenChangeSSE } from '@controllers/eventListener.controller';\nimport { Router } from 'express';\n\nexport const eventListenerRouter: Router = Router();\n\nexport const eventListenerRoute = '/api/event-listener';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${eventListenerRoute}`;\n\nexport const eventListenerRoutes = () =>\n ({\n checkDictionaryChangeSSE: {\n urlModel: '/:accessToken',\n url: ({ accessToken }: { accessToken: string }) =>\n `${baseURL}/${accessToken}`,\n method: 'GET',\n },\n }) satisfies Routes;\n\neventListenerRouter.get(\n eventListenerRoutes().checkDictionaryChangeSSE.urlModel,\n listenChangeSSE\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,2BAAgC;AAChC,qBAAuB;AAEhB,MAAM,0BAA8B,uBAAO;AAE3C,MAAM,qBAAqB;AAElC,MAAM,UAAU,MAAM,GAAG,QAAQ,IAAI,WAAW,GAAG,kBAAkB;AAE9D,MAAM,sBAAsB,OAChC;AAAA,EACC,0BAA0B;AAAA,IACxB,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,YAAY,MAClB,GAAG,OAAO,IAAI,WAAW;AAAA,IAC3B,QAAQ;AAAA,EACV;AACF;AAEF,oBAAoB;AAAA,EAClB,oBAAoB,EAAE,yBAAyB;AAAA,EAC/C;AACF;","names":[]}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var newsletter_routes_exports = {};
20
+ __export(newsletter_routes_exports, {
21
+ getNewsletterRoutes: () => getNewsletterRoutes,
22
+ newsletterRoute: () => newsletterRoute,
23
+ newsletterRouter: () => newsletterRouter
24
+ });
25
+ module.exports = __toCommonJS(newsletter_routes_exports);
26
+ var import_newsletter = require('./../controllers/newsletter.controller.cjs');
27
+ var import_express = require("express");
28
+ const newsletterRouter = (0, import_express.Router)();
29
+ const newsletterRoute = "/api/newsletter";
30
+ const baseURL = () => `${process.env.BACKEND_URL}${newsletterRoute}`;
31
+ const getNewsletterRoutes = () => ({
32
+ subscribeToNewsletter: {
33
+ urlModel: "/subscribe",
34
+ url: `${baseURL()}/subscribe`,
35
+ method: "POST"
36
+ },
37
+ unsubscribeFromNewsletter: {
38
+ urlModel: "/unsubscribe",
39
+ url: `${baseURL()}/unsubscribe`,
40
+ method: "POST"
41
+ },
42
+ getNewsletterStatus: {
43
+ urlModel: "/status",
44
+ url: `${baseURL()}/status`,
45
+ method: "GET"
46
+ }
47
+ });
48
+ newsletterRouter.post(
49
+ getNewsletterRoutes().subscribeToNewsletter.urlModel,
50
+ import_newsletter.subscribeToNewsletter
51
+ );
52
+ newsletterRouter.post(
53
+ getNewsletterRoutes().unsubscribeFromNewsletter.urlModel,
54
+ import_newsletter.unsubscribeFromNewsletter
55
+ );
56
+ newsletterRouter.get(
57
+ getNewsletterRoutes().getNewsletterStatus.urlModel,
58
+ import_newsletter.getNewsletterStatus
59
+ );
60
+ // Annotate the CommonJS export names for ESM import in node:
61
+ 0 && (module.exports = {
62
+ getNewsletterRoutes,
63
+ newsletterRoute,
64
+ newsletterRouter
65
+ });
66
+ //# sourceMappingURL=newsletter.routes.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/routes/newsletter.routes.ts"],"sourcesContent":["import type { Routes } from '@/types/Routes';\nimport {\n getNewsletterStatus,\n subscribeToNewsletter,\n unsubscribeFromNewsletter,\n} from '@controllers/newsletter.controller';\nimport { Router } from 'express';\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":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,wBAIO;AACP,qBAAuB;AAEhB,MAAM,uBAA2B,uBAAO;AAExC,MAAM,kBAAkB;AAE/B,MAAM,UAAU,MAAM,GAAG,QAAQ,IAAI,WAAW,GAAG,eAAe;AAE3D,MAAM,sBAAsB,OAChC;AAAA,EACC,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AAAA,EACA,2BAA2B;AAAA,IACzB,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,CAAC;AAAA,IACjB,QAAQ;AAAA,EACV;AACF;AAEF,iBAAiB;AAAA,EACf,oBAAoB,EAAE,sBAAsB;AAAA,EAC5C;AACF;AACA,iBAAiB;AAAA,EACf,oBAAoB,EAAE,0BAA0B;AAAA,EAChD;AACF;AACA,iBAAiB;AAAA,EACf,oBAAoB,EAAE,oBAAoB;AAAA,EAC1C;AACF;","names":[]}
@@ -19,13 +19,15 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var organization_routes_exports = {};
20
20
  __export(organization_routes_exports, {
21
21
  getOrganizationRoutes: () => getOrganizationRoutes,
22
+ organizationRoute: () => organizationRoute,
22
23
  organizationRouter: () => organizationRouter
23
24
  });
24
25
  module.exports = __toCommonJS(organization_routes_exports);
25
26
  var import_organization = require('./../controllers/organization.controller.cjs');
26
27
  var import_express = require("express");
27
28
  const organizationRouter = (0, import_express.Router)();
28
- const baseURL = () => `${process.env.BACKEND_URL}/api/organization`;
29
+ const organizationRoute = "/api/organization";
30
+ const baseURL = () => `${process.env.BACKEND_URL}${organizationRoute}`;
29
31
  const getOrganizationRoutes = () => ({
30
32
  getOrganizations: {
31
33
  urlModel: "/",
@@ -103,6 +105,7 @@ organizationRouter.post(
103
105
  // Annotate the CommonJS export names for ESM import in node:
104
106
  0 && (module.exports = {
105
107
  getOrganizationRoutes,
108
+ organizationRoute,
106
109
  organizationRouter
107
110
  });
108
111
  //# sourceMappingURL=organization.routes.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/routes/organization.routes.ts"],"sourcesContent":["import {\n addOrganization,\n deleteOrganization,\n selectOrganization,\n getOrganizations,\n updateOrganization,\n updateOrganizationMembers,\n unselectOrganization,\n addOrganizationMember,\n} from '@controllers/organization.controller';\nimport { Router } from 'express';\nimport type { Routes } from '@/types/Routes';\n\nexport const organizationRouter: Router = Router();\n\nconst baseURL = () => `${process.env.BACKEND_URL}/api/organization`;\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 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.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":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BASO;AACP,qBAAuB;AAGhB,MAAM,yBAA6B,uBAAO;AAEjD,MAAM,UAAU,MAAM,GAAG,QAAQ,IAAI,WAAW;AAEzC,MAAM,wBAAwB,OAClC;AAAA,EACC,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,KAAK;AAAA,IAEL,QAAQ;AAAA,EACV;AAAA,EACA,2BAA2B;AAAA,IACzB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,eAAe,MACrB,GAAG,OAAO,IAAI,cAAc;AAAA,IAC9B,QAAQ;AAAA,EACV;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AACF;AAEF,mBAAmB;AAAA,EACjB,sBAAsB,EAAE,iBAAiB;AAAA,EACzC;AACF;AAEA,mBAAmB;AAAA,EACjB,sBAAsB,EAAE,gBAAgB;AAAA,EACxC;AACF;AACA,mBAAmB;AAAA,EACjB,sBAAsB,EAAE,mBAAmB;AAAA,EAC3C;AACF;AACA,mBAAmB;AAAA,EACjB,sBAAsB,EAAE,0BAA0B;AAAA,EAClD;AACF;AACA,mBAAmB;AAAA,EACjB,sBAAsB,EAAE,sBAAsB;AAAA,EAC9C;AACF;AACA,mBAAmB;AAAA,EACjB,sBAAsB,EAAE,mBAAmB;AAAA,EAC3C;AACF;AACA,mBAAmB;AAAA,EACjB,sBAAsB,EAAE,mBAAmB;AAAA,EAC3C;AACF;AAEA,mBAAmB;AAAA,EACjB,sBAAsB,EAAE,qBAAqB;AAAA,EAC7C;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/routes/organization.routes.ts"],"sourcesContent":["import type { Routes } from '@/types/Routes';\nimport {\n addOrganization,\n addOrganizationMember,\n deleteOrganization,\n getOrganizations,\n selectOrganization,\n unselectOrganization,\n updateOrganization,\n updateOrganizationMembers,\n} from '@controllers/organization.controller';\nimport { Router } from 'express';\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 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.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":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0BASO;AACP,qBAAuB;AAEhB,MAAM,yBAA6B,uBAAO;AAE1C,MAAM,oBAAoB;AAEjC,MAAM,UAAU,MAAM,GAAG,QAAQ,IAAI,WAAW,GAAG,iBAAiB;AAE7D,MAAM,wBAAwB,OAClC;AAAA,EACC,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,KAAK;AAAA,IAEL,QAAQ;AAAA,EACV;AAAA,EACA,2BAA2B;AAAA,IACzB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,eAAe,MACrB,GAAG,OAAO,IAAI,cAAc;AAAA,IAC9B,QAAQ;AAAA,EACV;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AACF;AAEF,mBAAmB;AAAA,EACjB,sBAAsB,EAAE,iBAAiB;AAAA,EACzC;AACF;AAEA,mBAAmB;AAAA,EACjB,sBAAsB,EAAE,gBAAgB;AAAA,EACxC;AACF;AACA,mBAAmB;AAAA,EACjB,sBAAsB,EAAE,mBAAmB;AAAA,EAC3C;AACF;AACA,mBAAmB;AAAA,EACjB,sBAAsB,EAAE,0BAA0B;AAAA,EAClD;AACF;AACA,mBAAmB;AAAA,EACjB,sBAAsB,EAAE,sBAAsB;AAAA,EAC9C;AACF;AACA,mBAAmB;AAAA,EACjB,sBAAsB,EAAE,mBAAmB;AAAA,EAC3C;AACF;AACA,mBAAmB;AAAA,EACjB,sBAAsB,EAAE,mBAAmB;AAAA,EAC3C;AACF;AAEA,mBAAmB;AAAA,EACjB,sBAAsB,EAAE,qBAAqB;AAAA,EAC7C;AACF;","names":[]}
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var project_routes_exports = {};
20
20
  __export(project_routes_exports, {
21
21
  getProjectRoutes: () => getProjectRoutes,
22
+ projectRoute: () => projectRoute,
22
23
  projectRouter: () => projectRouter
23
24
  });
24
25
  module.exports = __toCommonJS(project_routes_exports);
@@ -26,7 +27,8 @@ var import_project = require('./../controllers/project.controller.cjs');
26
27
  var import_projectAccessKey = require('./../controllers/projectAccessKey.controller.cjs');
27
28
  var import_express = require("express");
28
29
  const projectRouter = (0, import_express.Router)();
29
- const baseURL = () => `${process.env.BACKEND_URL}/api/project`;
30
+ const projectRoute = "/api/project";
31
+ const baseURL = () => `${process.env.BACKEND_URL}${projectRoute}`;
30
32
  const getProjectRoutes = () => ({
31
33
  getProjects: {
32
34
  urlModel: "/",
@@ -116,6 +118,7 @@ projectRouter.put(getProjectRoutes().selectProject.urlModel, import_project.sele
116
118
  // Annotate the CommonJS export names for ESM import in node:
117
119
  0 && (module.exports = {
118
120
  getProjectRoutes,
121
+ projectRoute,
119
122
  projectRouter
120
123
  });
121
124
  //# sourceMappingURL=project.routes.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/routes/project.routes.ts"],"sourcesContent":["import {\n addProject,\n deleteProject,\n getProjects,\n updateProject,\n selectProject,\n unselectProject,\n updateProjectMembers,\n pushProjectConfiguration,\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\nconst baseURL = () => `${process.env.BACKEND_URL}/api/project`;\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: `${process.env.CLIENT_URL}/api/members`,\n method: 'PUT',\n },\n pushProjectConfiguration: {\n urlModel: '/configuration',\n url: `${process.env.CLIENT_URL}/api/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 }) => `${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":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBASO;AACP,8BAIO;AACP,qBAAuB;AAGhB,MAAM,oBAAwB,uBAAO;AAE5C,MAAM,UAAU,MAAM,GAAG,QAAQ,IAAI,WAAW;AAEzC,MAAM,mBAAmB,OAC7B;AAAA,EACC,aAAa;AAAA,IACX,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,YAAY;AAAA,IACV,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,IAAI,UAAU;AAAA,IAC9B,QAAQ;AAAA,EACV;AAAA,EACA,0BAA0B;AAAA,IACxB,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,IAAI,UAAU;AAAA,IAC9B,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,UAAU,MAA6B,GAAG,OAAO,IAAI,SAAS;AAAA,IACtE,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AACF;AAEF,cAAc,IAAI,iBAAiB,EAAE,YAAY,UAAU,0BAAW;AAEtE,cAAc,KAAK,iBAAiB,EAAE,WAAW,UAAU,yBAAU;AACrE,cAAc,IAAI,iBAAiB,EAAE,cAAc,UAAU,4BAAa;AAC1E,cAAc;AAAA,EACZ,iBAAiB,EAAE,qBAAqB;AAAA,EACxC;AACF;AACA,cAAc;AAAA,EACZ,iBAAiB,EAAE,yBAAyB;AAAA,EAC5C;AACF;AACA,cAAc,OAAO,iBAAiB,EAAE,cAAc,UAAU,4BAAa;AAE7E,cAAc;AAAA,EACZ,iBAAiB,EAAE,gBAAgB;AAAA,EACnC;AACF;AAEA,cAAc;AAAA,EACZ,iBAAiB,EAAE,iBAAiB;AAAA,EACpC;AACF;AAEA,cAAc;AAAA,EACZ,iBAAiB,EAAE,gBAAgB;AAAA,EACnC;AACF;AAEA,cAAc;AAAA,EACZ,iBAAiB,EAAE,gBAAgB;AAAA,EACnC;AACF;AAEA,cAAc,IAAI,iBAAiB,EAAE,cAAc,UAAU,4BAAa;","names":[]}
1
+ {"version":3,"sources":["../../../src/routes/project.routes.ts"],"sourcesContent":["import type { Routes } from '@/types/Routes';\nimport {\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';\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: `${process.env.CLIENT_URL}/api/members`,\n method: 'PUT',\n },\n pushProjectConfiguration: {\n urlModel: '/configuration',\n url: `${process.env.CLIENT_URL}/api/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 }) => `${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":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBASO;AACP,8BAIO;AACP,qBAAuB;AAEhB,MAAM,oBAAwB,uBAAO;AAErC,MAAM,eAAe;AAE5B,MAAM,UAAU,MAAM,GAAG,QAAQ,IAAI,WAAW,GAAG,YAAY;AAExD,MAAM,mBAAmB,OAC7B;AAAA,EACC,aAAa;AAAA,IACX,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,YAAY;AAAA,IACV,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,IAAI,UAAU;AAAA,IAC9B,QAAQ;AAAA,EACV;AAAA,EACA,0BAA0B;AAAA,IACxB,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,IAAI,UAAU;AAAA,IAC9B,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,UAAU,MAA6B,GAAG,OAAO,IAAI,SAAS;AAAA,IACtE,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AACF;AAEF,cAAc,IAAI,iBAAiB,EAAE,YAAY,UAAU,0BAAW;AAEtE,cAAc,KAAK,iBAAiB,EAAE,WAAW,UAAU,yBAAU;AACrE,cAAc,IAAI,iBAAiB,EAAE,cAAc,UAAU,4BAAa;AAC1E,cAAc;AAAA,EACZ,iBAAiB,EAAE,qBAAqB;AAAA,EACxC;AACF;AACA,cAAc;AAAA,EACZ,iBAAiB,EAAE,yBAAyB;AAAA,EAC5C;AACF;AACA,cAAc,OAAO,iBAAiB,EAAE,cAAc,UAAU,4BAAa;AAE7E,cAAc;AAAA,EACZ,iBAAiB,EAAE,gBAAgB;AAAA,EACnC;AACF;AAEA,cAAc;AAAA,EACZ,iBAAiB,EAAE,iBAAiB;AAAA,EACpC;AACF;AAEA,cAAc;AAAA,EACZ,iBAAiB,EAAE,gBAAgB;AAAA,EACnC;AACF;AAEA,cAAc;AAAA,EACZ,iBAAiB,EAAE,gBAAgB;AAAA,EACnC;AACF;AAEA,cAAc,IAAI,iBAAiB,EAAE,cAAc,UAAU,4BAAa;","names":[]}