@greatapps/common 1.1.135 → 1.1.138

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 (53) hide show
  1. package/dist/{MMQ4R4NB-B36VHW65.mjs → MMQ4R4NB-HKE335ZM.mjs} +4 -3
  2. package/dist/{MMQ4R4NB-B36VHW65.mjs.map → MMQ4R4NB-HKE335ZM.mjs.map} +1 -1
  3. package/dist/{V4HPSUGU-6BOE4IPH.mjs → V4HPSUGU-XMVFKNNR.mjs} +4 -3
  4. package/dist/{V4HPSUGU-6BOE4IPH.mjs.map → V4HPSUGU-XMVFKNNR.mjs.map} +1 -1
  5. package/dist/{account-management.action-7QQCACDJ.mjs → account-management.action-4D4A3IPF.mjs} +7 -6
  6. package/dist/account.service-FPMIFBBX.mjs +10 -0
  7. package/dist/{chunk-UEWT6VFS.mjs → chunk-4IBSIBU6.mjs} +6 -3
  8. package/dist/chunk-4IBSIBU6.mjs.map +1 -0
  9. package/dist/{chunk-QEFMNBSY.mjs → chunk-CO6HSV2G.mjs} +5 -5
  10. package/dist/{chunk-QEFMNBSY.mjs.map → chunk-CO6HSV2G.mjs.map} +1 -1
  11. package/dist/{chunk-Z3Q2LLBS.mjs → chunk-EDTDKGI5.mjs} +4 -3
  12. package/dist/{chunk-Z3Q2LLBS.mjs.map → chunk-EDTDKGI5.mjs.map} +1 -1
  13. package/dist/{chunk-7MBVHKTC.mjs → chunk-I26OTCGJ.mjs} +8 -7
  14. package/dist/{chunk-7MBVHKTC.mjs.map → chunk-I26OTCGJ.mjs.map} +1 -1
  15. package/dist/{chunk-JW4XRHLX.mjs → chunk-MXQIEEP6.mjs} +3 -2
  16. package/dist/{chunk-JW4XRHLX.mjs.map → chunk-MXQIEEP6.mjs.map} +1 -1
  17. package/dist/{chunk-EKZZ2RWJ.mjs → chunk-OO354ZZZ.mjs} +3 -2
  18. package/dist/{chunk-EKZZ2RWJ.mjs.map → chunk-OO354ZZZ.mjs.map} +1 -1
  19. package/dist/{chunk-S53NE5H4.mjs → chunk-OXVONU6X.mjs} +3 -1
  20. package/dist/{chunk-S53NE5H4.mjs.map → chunk-OXVONU6X.mjs.map} +1 -1
  21. package/dist/{chunk-RV7ECGIH.mjs → chunk-R2FMWFY6.mjs} +4 -5
  22. package/dist/{chunk-RV7ECGIH.mjs.map → chunk-R2FMWFY6.mjs.map} +1 -1
  23. package/dist/{chunk-B2W2HK7C.mjs → chunk-ZQZNWUKB.mjs} +3 -2
  24. package/dist/{chunk-B2W2HK7C.mjs.map → chunk-ZQZNWUKB.mjs.map} +1 -1
  25. package/dist/{chunk-XY4LNPBR.mjs → find-user-by-id.action-K7PB7IH6.mjs} +6 -4
  26. package/dist/{chunk-XY4LNPBR.mjs.map → find-user-by-id.action-K7PB7IH6.mjs.map} +1 -1
  27. package/dist/index.mjs +291 -37
  28. package/dist/index.mjs.map +1 -1
  29. package/dist/middleware.mjs +76 -0
  30. package/dist/middleware.mjs.map +1 -0
  31. package/dist/{modern-4YXF5ES3.mjs → modern-P2CXBCGW.mjs} +5 -4
  32. package/dist/{modern-4YXF5ES3.mjs.map → modern-P2CXBCGW.mjs.map} +1 -1
  33. package/dist/server.mjs +1365 -64
  34. package/dist/server.mjs.map +1 -1
  35. package/dist/user.service-GCI4YGGI.mjs +9 -0
  36. package/dist/{chunk-EC3T7NF6.mjs → validate-session.action-TMZN36SG.mjs} +6 -3
  37. package/dist/{chunk-EC3T7NF6.mjs.map → validate-session.action-TMZN36SG.mjs.map} +1 -1
  38. package/dist/{verify-two-factor.action-V6JQATK2.mjs → verify-two-factor.action-IQM6SU5U.mjs} +8 -7
  39. package/dist/{verify-two-factor.action-V6JQATK2.mjs.map → verify-two-factor.action-IQM6SU5U.mjs.map} +1 -1
  40. package/package.json +5 -1
  41. package/src/middleware.ts +4 -0
  42. package/dist/account.service-XTZDEIPS.mjs +0 -9
  43. package/dist/chunk-ICUZDG2N.mjs +0 -283
  44. package/dist/chunk-ICUZDG2N.mjs.map +0 -1
  45. package/dist/chunk-UEWT6VFS.mjs.map +0 -1
  46. package/dist/find-user-by-id.action-BUFTU3ZY.mjs +0 -11
  47. package/dist/user.service-VDR4JKHO.mjs +0 -8
  48. package/dist/user.service-VDR4JKHO.mjs.map +0 -1
  49. package/dist/validate-session.action-K7RWN2GE.mjs +0 -11
  50. package/dist/validate-session.action-K7RWN2GE.mjs.map +0 -1
  51. /package/dist/{account-management.action-7QQCACDJ.mjs.map → account-management.action-4D4A3IPF.mjs.map} +0 -0
  52. /package/dist/{account.service-XTZDEIPS.mjs.map → account.service-FPMIFBBX.mjs.map} +0 -0
  53. /package/dist/{find-user-by-id.action-BUFTU3ZY.mjs.map → user.service-GCI4YGGI.mjs.map} +0 -0
@@ -1,283 +0,0 @@
1
- import {
2
- safeServerAction
3
- } from "./chunk-JW4XRHLX.mjs";
4
- import {
5
- accountService,
6
- buildQueryParams,
7
- getUserContext
8
- } from "./chunk-Z3Q2LLBS.mjs";
9
- import {
10
- api
11
- } from "./chunk-RV7ECGIH.mjs";
12
- import {
13
- ApiError
14
- } from "./chunk-UEWT6VFS.mjs";
15
-
16
- // src/modules/accounts/actions/find-current-account.action.ts
17
- async function findCurrentAccount() {
18
- return safeServerAction(() => accountService.findCurrentAccount());
19
- }
20
-
21
- // src/modules/projects/services/project-users.service.ts
22
- import "server-only";
23
-
24
- // src/modules/projects/types.ts
25
- import { z } from "zod";
26
- var ProjectUserSchema = z.object({
27
- id_user: z.union([z.number(), z.string()]).transform(Number),
28
- id_account: z.union([z.number(), z.string()]).transform(Number),
29
- id_project: z.union([z.number(), z.string()]).transform(Number),
30
- name: z.string().nullable(),
31
- email: z.string().nullable(),
32
- profile: z.string().nullable().optional().default("viewer"),
33
- photo: z.string().nullable().optional()
34
- });
35
- var AccountUserSchema = z.object({
36
- id: z.union([z.number(), z.string()]).transform(Number),
37
- name: z.string().nullable(),
38
- email: z.string().nullable(),
39
- profile: z.string().nullable().optional().default("viewer"),
40
- photo: z.string().nullable().optional()
41
- });
42
-
43
- // src/modules/projects/services/project-users.service.ts
44
- var ProjectUsersService = class {
45
- async listInProject(projectId, params = {}) {
46
- const { id_account, id_user } = await getUserContext();
47
- const query = buildQueryParams(params);
48
- const url = `/account/${id_account}/user/${id_user}/projects/${projectId}/users${query ? `?${query}` : ""}`;
49
- const response = await api.apps.get(url);
50
- if (response.status === 0) {
51
- throw new ApiError(
52
- response.message || "Erro ao listar usu\xE1rios do projeto",
53
- "LIST_PROJECT_USERS_FAILED",
54
- 400
55
- );
56
- }
57
- return {
58
- data: response.data.map((item) => ProjectUserSchema.parse(item)),
59
- total: response.total,
60
- page: params.page ?? 1
61
- };
62
- }
63
- async listNotInProject(projectId, params = {}) {
64
- const { id_account } = await getUserContext();
65
- const query = buildQueryParams({ notInProject: projectId, ...params });
66
- const url = `/accounts/${id_account}/users${query ? `?${query}` : ""}`;
67
- const response = await api.apps.get(url);
68
- if (response.status === 0) {
69
- throw new ApiError(
70
- response.message || "Erro ao listar usu\xE1rios dispon\xEDveis",
71
- "LIST_AVAILABLE_USERS_FAILED",
72
- 400
73
- );
74
- }
75
- return {
76
- data: response.data.map((item) => AccountUserSchema.parse(item)),
77
- total: response.total,
78
- page: params.page ?? 1
79
- };
80
- }
81
- async addToProject({ projectId, users }) {
82
- const { id_account, id_user } = await getUserContext();
83
- const url = `/account/${id_account}/user/${id_user}/projects/${projectId}/users`;
84
- const response = await api.apps.post(url, { users });
85
- if (response.status === 0) {
86
- throw new ApiError(
87
- response.message || "Erro ao adicionar usu\xE1rio ao projeto",
88
- "ADD_PROJECT_USER_FAILED",
89
- 400
90
- );
91
- }
92
- }
93
- async removeFromProject({ projectId, users }) {
94
- const { id_account, id_user } = await getUserContext();
95
- const url = `/account/${id_account}/user/${id_user}/projects/${projectId}/users`;
96
- const response = await api.apps.delete(url, {
97
- body: JSON.stringify({ users })
98
- });
99
- if (response.status === 0) {
100
- throw new ApiError(
101
- response.message || "Erro ao remover usu\xE1rio do projeto",
102
- "REMOVE_PROJECT_USER_FAILED",
103
- 400
104
- );
105
- }
106
- }
107
- };
108
- var projectUsersService = new ProjectUsersService();
109
-
110
- // src/modules/projects/actions/list-project-users.action.ts
111
- async function listProjectUsersAction(projectId, params = {}) {
112
- return safeServerAction(() => projectUsersService.listInProject(projectId, params));
113
- }
114
-
115
- // src/modules/projects/actions/list-available-users.action.ts
116
- async function listAvailableUsersAction(projectId, params = {}) {
117
- return safeServerAction(() => projectUsersService.listNotInProject(projectId, params));
118
- }
119
-
120
- // src/modules/subscriptions/types.ts
121
- import z2 from "zod";
122
- var SubscriptionItemSchema = z2.object({
123
- id: z2.union([z2.number(), z2.string()]),
124
- deleted: z2.number(),
125
- datetime_alt: z2.coerce.date().nullable().optional(),
126
- datetime_del: z2.coerce.date().nullable().optional(),
127
- datetime_add: z2.coerce.date(),
128
- id_wl: z2.number(),
129
- id_subscription: z2.union([z2.number(), z2.string()]),
130
- id_addon: z2.number().nullable(),
131
- addon_name: z2.string().optional(),
132
- value: z2.number(),
133
- currency: z2.string(),
134
- quantity: z2.number(),
135
- payment_status: z2.number(),
136
- id_charge: z2.union([z2.number(), z2.string()]).nullable(),
137
- trial: z2.boolean(),
138
- trial_ends_at: z2.coerce.date().nullable().optional()
139
- });
140
- var SubscriptionSchema = z2.object({
141
- id: z2.union([z2.number(), z2.string()]),
142
- deleted: z2.number(),
143
- datetime_alt: z2.coerce.date().nullable().optional(),
144
- datetime_del: z2.coerce.date().nullable().optional(),
145
- datetime_add: z2.coerce.date(),
146
- id_wl: z2.number(),
147
- id_account: z2.union([z2.number(), z2.string()]),
148
- id_card: z2.union([z2.number(), z2.string()]).nullable(),
149
- id_coupon: z2.union([z2.number(), z2.string()]).nullable(),
150
- type: z2.string(),
151
- payment_method: z2.number().nullable(),
152
- periodicity: z2.union([z2.number(), z2.string()]).nullable(),
153
- value: z2.number().nullable(),
154
- id_product: z2.number(),
155
- id_plan: z2.number(),
156
- plan_name: z2.string().nullable().optional(),
157
- id_gateway: z2.union([z2.number(), z2.string()]).nullable(),
158
- gateway_account: z2.string().nullable(),
159
- date_hiring: z2.coerce.date().nullable(),
160
- date_due: z2.coerce.date(),
161
- date_cancellation: z2.coerce.date().nullable(),
162
- date_verification: z2.coerce.date().nullable(),
163
- cancellation_reason: z2.string().nullable(),
164
- cancellation_description: z2.string().nullable(),
165
- active: z2.boolean(),
166
- charged: z2.boolean(),
167
- datetime_last_update_periodicity: z2.coerce.date().nullable().optional(),
168
- card_name: z2.string().nullable().optional(),
169
- card_brand: z2.string().nullable().optional(),
170
- card_number: z2.string().nullable().optional(),
171
- items: z2.array(SubscriptionItemSchema)
172
- });
173
-
174
- // src/modules/subscriptions/services/subscriptions.service.ts
175
- import "server-only";
176
- var SubscriptionsService = class {
177
- async listSubscriptions(params) {
178
- const { id_account } = await getUserContext();
179
- const query = buildQueryParams(params);
180
- const url = `/accounts/${id_account}/subscriptions${query ? `?${query}` : ""}`;
181
- const response = await api.apps.get(url);
182
- if (response.status === 0) {
183
- throw new ApiError(
184
- response.message || "Erro ao listar assinaturas",
185
- "LIST_SUBSCRIPTIONS_FAILED",
186
- 400
187
- );
188
- }
189
- const data = response.data.map((item) => SubscriptionSchema.parse(item));
190
- return {
191
- data,
192
- total: response.total,
193
- success: true
194
- };
195
- }
196
- };
197
- var subscriptionsService = new SubscriptionsService();
198
-
199
- // src/modules/subscriptions/actions/list-subscriptions.action.ts
200
- async function listSubscriptionsAction(params) {
201
- return safeServerAction(() => subscriptionsService.listSubscriptions(params));
202
- }
203
-
204
- // src/modules/ia-credits/services/ia-credits.service.ts
205
- import "server-only";
206
-
207
- // src/modules/ia-credits/types.ts
208
- import z3 from "zod";
209
- var IaCreditOperationSchema = z3.object({
210
- id: z3.union([z3.number(), z3.string()]),
211
- deleted: z3.number(),
212
- datetime_add: z3.coerce.date().nullable(),
213
- id_wl: z3.number(),
214
- id_subscription: z3.union([z3.number(), z3.string()]),
215
- id_addon: z3.number(),
216
- operation: z3.string(),
217
- // 'add' | 'subtract'
218
- operation_value: z3.union([z3.number(), z3.string()]).transform((v) => Number(v)),
219
- balance_after_operation: z3.union([z3.number(), z3.string()]).optional(),
220
- balance_before_operation: z3.union([z3.number(), z3.string()]).optional(),
221
- operation_ref: z3.string().nullable().optional(),
222
- operation_origin: z3.string().nullable().optional(),
223
- expiration_time: z3.string().nullable(),
224
- has_expired: z3.boolean(),
225
- consumed_from_add_id: z3.union([z3.number(), z3.string()]).nullable(),
226
- id_user_add: z3.union([z3.number(), z3.string()]).nullable(),
227
- user_name: z3.string().nullable().optional()
228
- }).passthrough();
229
-
230
- // src/modules/ia-credits/services/ia-credits.service.ts
231
- var IaCreditsService = class {
232
- async listOperations(subscriptionId) {
233
- const { id_account } = await getUserContext();
234
- const endpoint = `/accounts/${id_account}/subscriptions/${subscriptionId}/items/balance/list?page=1&limit=20&sort=id:DESC`;
235
- const response = await api.apps.get(endpoint);
236
- if (response.status === 0) {
237
- throw new ApiError(
238
- response.message || "Erro ao listar cr\xE9ditos de IA",
239
- "LIST_IA_CREDITS_FAILED",
240
- 400
241
- );
242
- }
243
- const raw = response.data ?? [];
244
- const data = raw.map((item) => IaCreditOperationSchema.parse(item));
245
- return {
246
- data,
247
- total: response.total ?? data.length,
248
- success: true
249
- };
250
- }
251
- };
252
- var iaCreditsService = new IaCreditsService();
253
-
254
- // src/modules/ia-credits/actions/list-ia-credits.action.ts
255
- async function listIaCreditsAction(subscriptionId) {
256
- return safeServerAction(() => iaCreditsService.listOperations(subscriptionId));
257
- }
258
-
259
- // src/modules/projects/actions/add-project-user.action.ts
260
- async function addProjectUserAction(params) {
261
- return safeServerAction(() => projectUsersService.addToProject(params));
262
- }
263
-
264
- // src/modules/projects/actions/remove-project-user.action.ts
265
- async function removeProjectUserAction(params) {
266
- return safeServerAction(() => projectUsersService.removeFromProject(params));
267
- }
268
-
269
- export {
270
- findCurrentAccount,
271
- projectUsersService,
272
- listProjectUsersAction,
273
- listAvailableUsersAction,
274
- SubscriptionItemSchema,
275
- SubscriptionSchema,
276
- subscriptionsService,
277
- listSubscriptionsAction,
278
- iaCreditsService,
279
- listIaCreditsAction,
280
- addProjectUserAction,
281
- removeProjectUserAction
282
- };
283
- //# sourceMappingURL=chunk-ICUZDG2N.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/modules/accounts/actions/find-current-account.action.ts","../src/modules/projects/services/project-users.service.ts","../src/modules/projects/types.ts","../src/modules/projects/actions/list-project-users.action.ts","../src/modules/projects/actions/list-available-users.action.ts","../src/modules/subscriptions/types.ts","../src/modules/subscriptions/services/subscriptions.service.ts","../src/modules/subscriptions/actions/list-subscriptions.action.ts","../src/modules/ia-credits/services/ia-credits.service.ts","../src/modules/ia-credits/types.ts","../src/modules/ia-credits/actions/list-ia-credits.action.ts","../src/modules/projects/actions/add-project-user.action.ts","../src/modules/projects/actions/remove-project-user.action.ts"],"sourcesContent":["'use server';\n\nimport { safeServerAction } from '../../../utils/safeServerAction';\nimport { accountService } from '../services/account.service';\nimport type { Account } from '../types';\n\nexport async function findCurrentAccount() {\n return safeServerAction<Account>(() => accountService.findCurrentAccount());\n}\n","import 'server-only';\r\n\r\nimport { api } from '../../../infra/api/client';\r\nimport { ApiError } from '../../../infra/api/types';\r\nimport { buildQueryParams } from '../../../infra/utils/params';\r\nimport { getUserContext } from '../../auth/utils/get-user-context';\r\nimport {\r\n AccountUser,\r\n AccountUserSchema,\r\n AddRemoveProjectUsersParams,\r\n ListUsersParams,\r\n ProjectUser,\r\n ProjectUserSchema,\r\n UsersPage,\r\n} from '../types';\r\n\r\ninterface ApiListResponse<T> {\r\n data: T[];\r\n total: number;\r\n status: number;\r\n message?: string;\r\n}\r\n\r\ninterface ApiActionResponse {\r\n status: number;\r\n message?: string;\r\n}\r\n\r\nclass ProjectUsersService {\r\n async listInProject(projectId: number, params: ListUsersParams = {}): Promise<UsersPage<ProjectUser>> {\r\n const { id_account, id_user } = await getUserContext();\r\n const query = buildQueryParams(params as Record<string, string | number | boolean | undefined>);\r\n const url = `/account/${id_account}/user/${id_user}/projects/${projectId}/users${query ? `?${query}` : ''}`;\r\n\r\n const response = await api.apps.get<ApiListResponse<ProjectUser>>(url);\r\n\r\n if (response.status === 0) {\r\n throw new ApiError(\r\n response.message || 'Erro ao listar usuários do projeto',\r\n 'LIST_PROJECT_USERS_FAILED',\r\n 400\r\n );\r\n }\r\n\r\n return {\r\n data: response.data.map((item) => ProjectUserSchema.parse(item)),\r\n total: response.total,\r\n page: params.page ?? 1,\r\n };\r\n }\r\n\r\n async listNotInProject(projectId: number, params: ListUsersParams = {}): Promise<UsersPage<AccountUser>> {\r\n const { id_account } = await getUserContext();\r\n const query = buildQueryParams({ notInProject: projectId, ...params } as Record<string, string | number | boolean | undefined>);\r\n const url = `/accounts/${id_account}/users${query ? `?${query}` : ''}`;\r\n\r\n const response = await api.apps.get<ApiListResponse<AccountUser>>(url);\r\n\r\n if (response.status === 0) {\r\n throw new ApiError(\r\n response.message || 'Erro ao listar usuários disponíveis',\r\n 'LIST_AVAILABLE_USERS_FAILED',\r\n 400\r\n );\r\n }\r\n\r\n return {\r\n data: response.data.map((item) => AccountUserSchema.parse(item)),\r\n total: response.total,\r\n page: params.page ?? 1,\r\n };\r\n }\r\n\r\n async addToProject({ projectId, users }: AddRemoveProjectUsersParams): Promise<void> {\r\n const { id_account, id_user } = await getUserContext();\r\n const url = `/account/${id_account}/user/${id_user}/projects/${projectId}/users`;\r\n\r\n const response = await api.apps.post<ApiActionResponse>(url, { users });\r\n\r\n if (response.status === 0) {\r\n throw new ApiError(\r\n response.message || 'Erro ao adicionar usuário ao projeto',\r\n 'ADD_PROJECT_USER_FAILED',\r\n 400\r\n );\r\n }\r\n }\r\n\r\n async removeFromProject({ projectId, users }: AddRemoveProjectUsersParams): Promise<void> {\r\n const { id_account, id_user } = await getUserContext();\r\n const url = `/account/${id_account}/user/${id_user}/projects/${projectId}/users`;\r\n\r\n const response = await api.apps.delete<ApiActionResponse>(url, {\r\n body: JSON.stringify({ users }),\r\n });\r\n\r\n if (response.status === 0) {\r\n throw new ApiError(\r\n response.message || 'Erro ao remover usuário do projeto',\r\n 'REMOVE_PROJECT_USER_FAILED',\r\n 400\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport const projectUsersService = new ProjectUsersService();\r\n","import { z } from \"zod\";\r\n\r\nexport const ProjectUserSchema = z.object({\r\n id_user: z.union([z.number(), z.string()]).transform(Number),\r\n id_account: z.union([z.number(), z.string()]).transform(Number),\r\n id_project: z.union([z.number(), z.string()]).transform(Number),\r\n name: z.string().nullable(),\r\n email: z.string().nullable(),\r\n profile: z.string().nullable().optional().default(\"viewer\"),\r\n photo: z.string().nullable().optional(),\r\n});\r\n\r\nexport type ProjectUser = z.infer<typeof ProjectUserSchema>;\r\n\r\nexport const AccountUserSchema = z.object({\r\n id: z.union([z.number(), z.string()]).transform(Number),\r\n name: z.string().nullable(),\r\n email: z.string().nullable(),\r\n profile: z.string().nullable().optional().default(\"viewer\"),\r\n photo: z.string().nullable().optional(),\r\n});\r\n\r\nexport type AccountUser = z.infer<typeof AccountUserSchema>;\r\n\r\nexport interface AddRemoveProjectUsersParams {\r\n projectId: number;\r\n users: number[];\r\n}\r\n\r\nexport interface ListUsersParams {\r\n search?: string;\r\n page?: number;\r\n limit?: number;\r\n}\r\n\r\nexport interface UsersPage<T> {\r\n data: T[];\r\n total: number;\r\n page: number;\r\n}\r\n","'use server';\n\nimport { safeServerAction } from '../../../utils/safeServerAction';\nimport { projectUsersService } from '../services/project-users.service';\nimport type { ListUsersParams } from '../types';\n\nexport async function listProjectUsersAction(projectId: number, params: ListUsersParams = {}) {\n return safeServerAction(() => projectUsersService.listInProject(projectId, params));\n}\n","'use server';\n\nimport { safeServerAction } from '../../../utils/safeServerAction';\nimport { projectUsersService } from '../services/project-users.service';\nimport type { ListUsersParams } from '../types';\n\nexport async function listAvailableUsersAction(projectId: number, params: ListUsersParams = {}) {\n return safeServerAction(() => projectUsersService.listNotInProject(projectId, params));\n}\n","import z from 'zod';\r\n\r\nexport const SubscriptionItemSchema = z.object({\r\n id: z.union([z.number(), z.string()]),\r\n deleted: z.number(),\r\n datetime_alt: z.coerce.date().nullable().optional(),\r\n datetime_del: z.coerce.date().nullable().optional(),\r\n datetime_add: z.coerce.date(),\r\n id_wl: z.number(),\r\n id_subscription: z.union([z.number(), z.string()]),\r\n id_addon: z.number().nullable(),\r\n addon_name: z.string().optional(),\r\n value: z.number(),\r\n currency: z.string(),\r\n quantity: z.number(),\r\n payment_status: z.number(),\r\n id_charge: z.union([z.number(), z.string()]).nullable(),\r\n trial: z.boolean(),\r\n trial_ends_at: z.coerce.date().nullable().optional(),\r\n});\r\n\r\nexport type SubscriptionItem = z.infer<typeof SubscriptionItemSchema>;\r\n\r\nexport const SubscriptionSchema = z.object({\r\n id: z.union([z.number(), z.string()]),\r\n deleted: z.number(),\r\n datetime_alt: z.coerce.date().nullable().optional(),\r\n datetime_del: z.coerce.date().nullable().optional(),\r\n datetime_add: z.coerce.date(),\r\n id_wl: z.number(),\r\n id_account: z.union([z.number(), z.string()]),\r\n id_card: z.union([z.number(), z.string()]).nullable(),\r\n id_coupon: z.union([z.number(), z.string()]).nullable(),\r\n type: z.string(),\r\n payment_method: z.number().nullable(),\r\n periodicity: z.union([z.number(), z.string()]).nullable(),\r\n value: z.number().nullable(),\r\n id_product: z.number(),\r\n id_plan: z.number(),\r\n plan_name: z.string().nullable().optional(),\r\n id_gateway: z.union([z.number(), z.string()]).nullable(),\r\n gateway_account: z.string().nullable(),\r\n date_hiring: z.coerce.date().nullable(),\r\n date_due: z.coerce.date(),\r\n date_cancellation: z.coerce.date().nullable(),\r\n date_verification: z.coerce.date().nullable(),\r\n cancellation_reason: z.string().nullable(),\r\n cancellation_description: z.string().nullable(),\r\n active: z.boolean(),\r\n charged: z.boolean(),\r\n datetime_last_update_periodicity: z.coerce.date().nullable().optional(),\r\n card_name: z.string().nullable().optional(),\r\n card_brand: z.string().nullable().optional(),\r\n card_number: z.string().nullable().optional(),\r\n items: z.array(SubscriptionItemSchema),\r\n});\r\n\r\nexport type Subscription = z.infer<typeof SubscriptionSchema>;\r\n\r\nexport interface FindSubscriptionsParams {\r\n active?: boolean;\r\n trial?: boolean;\r\n date_start?: string;\r\n date_end?: string;\r\n date_hiring_start?: string;\r\n date_hiring_end?: string;\r\n}\r\n","import 'server-only';\r\n\r\nimport { api } from '../../../infra/api/client';\r\nimport { ApiError, ApiPaginatedActionResult, PaginatedSuccessResult } from '../../../infra/api/types';\r\nimport { buildQueryParams } from '../../../infra/utils/params';\r\nimport { getUserContext } from '../../auth/utils/get-user-context';\r\nimport { Subscription, SubscriptionSchema, FindSubscriptionsParams } from '../types';\r\n\r\nclass SubscriptionsService {\r\n async listSubscriptions(\r\n params?: Partial<FindSubscriptionsParams>\r\n ): Promise<PaginatedSuccessResult<Subscription>> {\r\n const { id_account } = await getUserContext();\r\n\r\n const query = buildQueryParams(params as Record<string, string | boolean | undefined>);\r\n const url = `/accounts/${id_account}/subscriptions${query ? `?${query}` : ''}`;\r\n\r\n const response = await api.apps.get<ApiPaginatedActionResult<Subscription>>(url);\r\n\r\n if (response.status === 0) {\r\n throw new ApiError(\r\n response.message || 'Erro ao listar assinaturas',\r\n 'LIST_SUBSCRIPTIONS_FAILED',\r\n 400\r\n );\r\n }\r\n\r\n const data = response.data.map((item) => SubscriptionSchema.parse(item));\r\n\r\n return {\r\n data,\r\n total: response.total,\r\n success: true,\r\n } satisfies PaginatedSuccessResult<Subscription>;\r\n }\r\n}\r\n\r\nexport const subscriptionsService = new SubscriptionsService();\r\n","'use server';\n\nimport { safeServerAction } from '../../../utils/safeServerAction';\nimport type { FindSubscriptionsParams } from '../types';\nimport { subscriptionsService } from '../services/subscriptions.service';\n\nexport async function listSubscriptionsAction(params?: Partial<FindSubscriptionsParams>) {\n return safeServerAction(() => subscriptionsService.listSubscriptions(params));\n}\n","import 'server-only';\r\n\r\nimport { api } from '../../../infra/api/client';\r\nimport { ApiError, ApiPaginatedActionResult, PaginatedSuccessResult } from '../../../infra/api/types';\r\nimport { getUserContext } from '../../auth/utils/get-user-context';\r\nimport { IaCreditOperation, IaCreditOperationSchema } from '../types';\r\n\r\nclass IaCreditsService {\r\n async listOperations(\r\n subscriptionId: number | string\r\n ): Promise<PaginatedSuccessResult<IaCreditOperation>> {\r\n const { id_account } = await getUserContext();\r\n\r\n const endpoint = `/accounts/${id_account}/subscriptions/${subscriptionId}/items/balance/list?page=1&limit=20&sort=id:DESC`;\r\n\r\n const response = await api.apps.get<ApiPaginatedActionResult<IaCreditOperation>>(endpoint);\r\n\r\n if (response.status === 0) {\r\n throw new ApiError(\r\n response.message || 'Erro ao listar créditos de IA',\r\n 'LIST_IA_CREDITS_FAILED',\r\n 400\r\n );\r\n }\r\n\r\n const raw = response.data ?? [];\r\n const data = raw.map((item) => IaCreditOperationSchema.parse(item));\r\n\r\n return {\r\n data,\r\n total: response.total ?? data.length,\r\n success: true,\r\n };\r\n }\r\n}\r\n\r\nexport const iaCreditsService = new IaCreditsService();\r\n","import z from 'zod';\r\n\r\nexport const IaCreditOperationSchema = z\r\n .object({\r\n id: z.union([z.number(), z.string()]),\r\n deleted: z.number(),\r\n datetime_add: z.coerce.date().nullable(),\r\n id_wl: z.number(),\r\n id_subscription: z.union([z.number(), z.string()]),\r\n id_addon: z.number(),\r\n operation: z.string(), // 'add' | 'subtract'\r\n operation_value: z.union([z.number(), z.string()]).transform((v) => Number(v)),\r\n balance_after_operation: z.union([z.number(), z.string()]).optional(),\r\n balance_before_operation: z.union([z.number(), z.string()]).optional(),\r\n operation_ref: z.string().nullable().optional(),\r\n operation_origin: z.string().nullable().optional(),\r\n expiration_time: z.string().nullable(),\r\n has_expired: z.boolean(),\r\n consumed_from_add_id: z.union([z.number(), z.string()]).nullable(),\r\n id_user_add: z.union([z.number(), z.string()]).nullable(),\r\n user_name: z.string().nullable().optional(),\r\n })\r\n .passthrough();\r\n\r\nexport type IaCreditOperation = z.infer<typeof IaCreditOperationSchema>;\r\n\r\nexport type IaCreditsSummary = {\r\n totalCredits: number;\r\n usedCredits: number;\r\n availableCredits: number;\r\n nextExpiringCredits: number | null;\r\n nextExpirationInDays: number | null;\r\n};\r\n","'use server';\n\nimport { safeServerAction } from '../../../utils/safeServerAction';\nimport { iaCreditsService } from '../services/ia-credits.service';\n\nexport async function listIaCreditsAction(subscriptionId: number | string) {\n return safeServerAction(() => iaCreditsService.listOperations(subscriptionId));\n}\n","'use server';\n\nimport { safeServerAction } from '../../../utils/safeServerAction';\nimport { projectUsersService } from '../services/project-users.service';\nimport type { AddRemoveProjectUsersParams } from '../types';\n\nexport async function addProjectUserAction(params: AddRemoveProjectUsersParams) {\n return safeServerAction(() => projectUsersService.addToProject(params));\n}\n","'use server';\n\nimport { safeServerAction } from '../../../utils/safeServerAction';\nimport { projectUsersService } from '../services/project-users.service';\nimport type { AddRemoveProjectUsersParams } from '../types';\n\nexport async function removeProjectUserAction(params: AddRemoveProjectUsersParams) {\n return safeServerAction(() => projectUsersService.removeFromProject(params));\n}\n"],"mappings":"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","names":["z","z"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/infra/api/types.ts","../src/modules/whitelabel/services/whitelabel.service.ts","../src/modules/whitelabel/actions/find-whitelabel.action.ts"],"sourcesContent":["import z from 'zod';\r\n\r\nexport const PaginationParamsSchema = z.object({\r\n page: z.number().min(1).optional().default(20),\r\n limit: z.number().optional().default(20),\r\n});\r\n\r\nexport interface PaginationParams extends z.infer<typeof PaginationParamsSchema> {}\r\n\r\nexport const SearchParamsSchema = z.object({\r\n search: z.string().optional(),\r\n});\r\n\r\nexport interface SearchParams extends z.infer<typeof SearchParamsSchema> {}\r\n\r\nexport const SortParamsSchema = z.object({\r\n sort: z.string().optional(),\r\n});\r\n\r\nexport interface SortParams extends z.infer<typeof SortParamsSchema> {}\r\n\r\nexport interface ApiSuccessResult<T> {\r\n status: 1;\r\n data?: T;\r\n}\r\n\r\nexport interface ApiPaginatedSuccessResult<T> extends Omit<ApiSuccessResult<T>, 'data'> {\r\n data: T[];\r\n total: number;\r\n}\r\n\r\nexport interface ApiErrorResult {\r\n status: 0;\r\n message: string;\r\n}\r\n\r\nexport type ApiActionResult<T> = ApiSuccessResult<T> | ApiErrorResult;\r\nexport type ApiPaginatedActionResult<T> = ApiPaginatedSuccessResult<T> | ApiErrorResult;\r\n\r\nexport interface SuccessResult<T> {\r\n success: true;\r\n data?: T;\r\n total?: number;\r\n}\r\n\r\nexport interface PaginatedSuccessResult<T> extends Omit<SuccessResult<T>, 'data'> {\r\n data: T[];\r\n total: number;\r\n}\r\n\r\nexport interface ErrorResult {\r\n success: false;\r\n error?: string;\r\n}\r\n\r\nexport type ActionResult<T> = SuccessResult<T> | ErrorResult;\r\nexport type PaginatedActionResult<T> = PaginatedSuccessResult<T> | ErrorResult;\r\n\r\nexport class ApiError extends Error {\r\n public readonly code: string;\r\n public readonly statusCode: number;\r\n\r\n constructor(message: string, code: string = 'UNKNOWN_ERROR', statusCode: number = 500) {\r\n super(message);\r\n this.name = 'ApiError';\r\n this.code = code;\r\n this.statusCode = statusCode;\r\n }\r\n\r\n static isApiError(error: unknown): error is ApiError {\r\n return error instanceof ApiError;\r\n }\r\n}\r\n\r\nexport interface ApiResponse<T = unknown> {\r\n status: 0 | 1;\r\n message?: string;\r\n data?: T;\r\n}\r\n","\r\nimport greatCache from '@greatapps/cache';\r\nimport { ApiError } from '../../../infra/api/types';\r\nimport { WhitelabelTokenApiResponse, WhitelabelTokenData } from '../schema';\r\n\r\nclass WhitelabelService {\r\n private getApiUrl(): string {\r\n const apiUrl = process.env.GAPPS_R3_API_URL;\r\n if (!apiUrl) {\r\n throw new ApiError('GAPPS_R3_API_URL not configured', 'CONFIG_ERROR', 500);\r\n }\r\n return apiUrl;\r\n }\r\n\r\n private getToken(): string {\r\n const token = process.env.WHITELABEL_TOKEN_MASTER;\r\n if (!token) {\r\n throw new ApiError('WHITELABEL_TOKEN_MASTER not configured', 'CONFIG_ERROR', 500);\r\n }\r\n return token;\r\n }\r\n\r\n async getTokenByDomain(hostname: string): Promise<WhitelabelTokenData> {\r\n hostname = 'greatapps.com.br';\r\n\r\n const apiUrl = this.getApiUrl();\r\n const whitelabelMasterToken = this.getToken();\r\n\r\n const url = `${apiUrl}/v1/pt-br/1/whitelabel/${hostname}/token`;\r\n\r\n console.log('[WhitelabelService] Fetching token for domain', { url });\r\n\r\n const cache = new greatCache({\r\n service: 'whitelabel-service',\r\n version: '1.0',\r\n domain: 'whitelabel-cache.greatapps.com.br',\r\n ambient: process.env.NODE_ENV || 'development',\r\n });\r\n\r\n const cachedData = await cache.select(`whitelabel-token-${hostname}`);\r\n\r\n if (cachedData.status == 1 && 'data' in cachedData && cachedData.data) {\r\n console.log('[WhitelabelService] Cache hit for domain', { hostname });\r\n\r\n return JSON.parse(cachedData.data) as WhitelabelTokenData;\r\n }\r\n\r\n const response = await fetch(url, {\r\n method: 'GET',\r\n headers: {\r\n authorization: whitelabelMasterToken,\r\n },\r\n });\r\n\r\n if (!response.ok) {\r\n console.error('[WhitelabelService] Failed to fetch whitelabel token', { response });\r\n throw new ApiError(\r\n `Failed to fetch whitelabel token: ${response.status}`,\r\n 'FETCH_ERROR',\r\n response.status\r\n );\r\n }\r\n\r\n const result: WhitelabelTokenApiResponse = await response.json();\r\n\r\n if (result.status !== 1 || !result.data?.length) {\r\n throw new ApiError('Whitelabel token not found', 'TOKEN_NOT_FOUND', 404);\r\n }\r\n\r\n await cache.insert(`whitelabel-token-${hostname}`, JSON.stringify(result.data[0]), 604800);\r\n\r\n return result.data[0];\r\n }\r\n}\r\n\r\nexport const whitelabelService = new WhitelabelService();\r\n","'use server';\n\n\nimport { headers } from \"next/headers\";\nimport { whitelabelService } from \"../services/whitelabel.service\";\nimport { ApiError } from \"../../../infra/api/types\";\nimport { cache } from \"react\";\n\nexport const findWhitelabel = cache(async () => {\n const headersList = await headers();\n const host = headersList.get('host');\n\n if (!host) {\n throw new ApiError('Host header not found', 'HOST_NOT_FOUND', 400);\n }\n\n const whitelabel = await whitelabelService.getTokenByDomain(host);\n\n if (!whitelabel) {\n throw new ApiError('Whitelabel not found', 'WL_NOT_FOUND', 404);\n }\n\n return whitelabel;\n});"],"mappings":"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","names":["cache"]}
@@ -1,11 +0,0 @@
1
- "use server";
2
- import {
3
- findUserById
4
- } from "./chunk-XY4LNPBR.mjs";
5
- import "./chunk-JW4XRHLX.mjs";
6
- import "./chunk-B2W2HK7C.mjs";
7
- import "./chunk-UEWT6VFS.mjs";
8
- export {
9
- findUserById
10
- };
11
- //# sourceMappingURL=find-user-by-id.action-BUFTU3ZY.mjs.map
@@ -1,8 +0,0 @@
1
- import {
2
- userService
3
- } from "./chunk-B2W2HK7C.mjs";
4
- import "./chunk-UEWT6VFS.mjs";
5
- export {
6
- userService
7
- };
8
- //# sourceMappingURL=user.service-VDR4JKHO.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,11 +0,0 @@
1
- "use server";
2
- import {
3
- validateSessionAction
4
- } from "./chunk-EC3T7NF6.mjs";
5
- import "./chunk-7MBVHKTC.mjs";
6
- import "./chunk-RV7ECGIH.mjs";
7
- import "./chunk-UEWT6VFS.mjs";
8
- export {
9
- validateSessionAction
10
- };
11
- //# sourceMappingURL=validate-session.action-K7RWN2GE.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}