@vestcards/server-types 0.1.0

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 (89) hide show
  1. package/dist/apps/server/src/app.d.ts +758 -0
  2. package/dist/apps/server/src/config/cors.d.ts +2 -0
  3. package/dist/apps/server/src/config/env.d.ts +12 -0
  4. package/dist/apps/server/src/config/redis.d.ts +2 -0
  5. package/dist/apps/server/src/db/index.d.ts +6 -0
  6. package/dist/apps/server/src/db/schema/auth.d.ts +841 -0
  7. package/dist/apps/server/src/db/schema/data.d.ts +99 -0
  8. package/dist/apps/server/src/db/schema/deck.d.ts +1208 -0
  9. package/dist/apps/server/src/db/schema/entity.d.ts +48 -0
  10. package/dist/apps/server/src/db/schema/index.d.ts +6 -0
  11. package/dist/apps/server/src/db/schema/marketing.d.ts +112 -0
  12. package/dist/apps/server/src/db/schema/payment.d.ts +548 -0
  13. package/dist/apps/server/src/db/types.d.ts +2 -0
  14. package/dist/apps/server/src/db/utils.d.ts +8 -0
  15. package/dist/apps/server/src/index.d.ts +2 -0
  16. package/dist/apps/server/src/middleware/errorHandler.d.ts +16 -0
  17. package/dist/apps/server/src/middleware/logger.d.ts +29 -0
  18. package/dist/apps/server/src/modules/auth/auth.test.d.ts +1 -0
  19. package/dist/apps/server/src/modules/auth/index.d.ts +358 -0
  20. package/dist/apps/server/src/modules/auth/lib.d.ts +324 -0
  21. package/dist/apps/server/src/modules/auth/permissions/entitlements.d.ts +2 -0
  22. package/dist/apps/server/src/modules/auth/permissions/permissions.d.ts +60 -0
  23. package/dist/apps/server/src/modules/auth/utils.d.ts +8 -0
  24. package/dist/apps/server/src/modules/deck/deck.test.d.ts +1 -0
  25. package/dist/apps/server/src/modules/deck/index.d.ts +473 -0
  26. package/dist/apps/server/src/modules/deck/model.d.ts +31 -0
  27. package/dist/apps/server/src/modules/deck/service.d.ts +7 -0
  28. package/dist/apps/server/src/modules/lead/index.d.ts +95 -0
  29. package/dist/apps/server/src/modules/lead/lead.test.d.ts +1 -0
  30. package/dist/apps/server/src/modules/lead/model.d.ts +9 -0
  31. package/dist/apps/server/src/modules/lead/service.d.ts +19 -0
  32. package/dist/apps/server/src/modules/study/index.d.ts +513 -0
  33. package/dist/apps/server/src/modules/study/lib/constants.d.ts +5 -0
  34. package/dist/apps/server/src/modules/study/lib/fsrs.d.ts +12 -0
  35. package/dist/apps/server/src/modules/study/model.d.ts +14 -0
  36. package/dist/apps/server/src/modules/study/service.d.ts +13 -0
  37. package/dist/apps/server/src/modules/study/study.test.d.ts +1 -0
  38. package/dist/apps/server/src/modules/study/utils.d.ts +14 -0
  39. package/dist/apps/server/src/modules/topic/index.d.ts +429 -0
  40. package/dist/apps/server/src/modules/topic/model.d.ts +16 -0
  41. package/dist/apps/server/src/modules/topic/service.d.ts +6 -0
  42. package/dist/apps/server/src/modules/topic/topic.test.d.ts +1 -0
  43. package/dist/apps/server/src/modules/user/index.d.ts +380 -0
  44. package/dist/apps/server/src/modules/user/model.d.ts +16 -0
  45. package/dist/apps/server/src/modules/user/service.d.ts +3 -0
  46. package/dist/apps/server/src/server.d.ts +1 -0
  47. package/dist/apps/server/src/tests/api.test.d.ts +1 -0
  48. package/dist/apps/server/src/tests/helpers/auth-helpers.d.ts +55 -0
  49. package/dist/apps/server/src/tests/helpers/fixtures.d.ts +144 -0
  50. package/dist/apps/server/src/tests/helpers/http-helpers.d.ts +33 -0
  51. package/dist/apps/server/src/tests/helpers/index.d.ts +3 -0
  52. package/dist/apps/server/src/types/study.d.ts +28 -0
  53. package/dist/apps/server/src/types/topic.d.ts +1 -0
  54. package/dist/apps/server/src/utils/alias.d.ts +631 -0
  55. package/dist/apps/server/src/utils/api.d.ts +31 -0
  56. package/dist/apps/server/src/utils/errors.d.ts +26 -0
  57. package/dist/apps/server/src/utils/select.d.ts +373 -0
  58. package/dist/apps/server/src/utils/uuid.d.ts +1 -0
  59. package/dist/index.d.ts +2 -0
  60. package/dist/packages/email-core/src/emailProvider.d.ts +24 -0
  61. package/dist/packages/email-core/src/emailTemplateBuilder.d.ts +4 -0
  62. package/dist/packages/email-core/src/templates/accountDeletion.d.ts +7 -0
  63. package/dist/packages/email-core/src/templates/adminPurchaseAlert.d.ts +10 -0
  64. package/dist/packages/email-core/src/templates/cardDemand.d.ts +8 -0
  65. package/dist/packages/email-core/src/templates/cardDemandAction.d.ts +9 -0
  66. package/dist/packages/email-core/src/templates/emailVerification.d.ts +7 -0
  67. package/dist/packages/email-core/src/templates/footer.d.ts +1 -0
  68. package/dist/packages/email-core/src/templates/forgotPassword.d.ts +7 -0
  69. package/dist/packages/email-core/src/templates/index.d.ts +28 -0
  70. package/dist/packages/email-core/src/templates/purchaseConfirmation.d.ts +9 -0
  71. package/dist/packages/email-core/src/templates/purchasePrePayment.d.ts +9 -0
  72. package/dist/packages/email-core/src/templates/purchaseRefund.d.ts +7 -0
  73. package/dist/packages/shared/src/date/constants.d.ts +2 -0
  74. package/dist/packages/shared/src/date/fns.d.ts +8 -0
  75. package/dist/packages/shared/src/date/format.d.ts +9 -0
  76. package/dist/packages/shared/src/date/helpers.d.ts +2 -0
  77. package/dist/packages/shared/src/date/index.d.ts +14 -0
  78. package/dist/packages/shared/src/date/relative.d.ts +19 -0
  79. package/dist/packages/shared/src/date/types.d.ts +1 -0
  80. package/dist/packages/shared/src/index.d.ts +5 -0
  81. package/dist/packages/shared/src/types/deck.d.ts +48 -0
  82. package/dist/packages/shared/src/types/study.d.ts +15 -0
  83. package/dist/packages/shared/src/types/subject.d.ts +8 -0
  84. package/dist/packages/shared/src/types/topic.d.ts +7 -0
  85. package/dist/packages/shared/src/types/user.d.ts +22 -0
  86. package/dist/packages/utils/src/env/index.d.ts +1 -0
  87. package/dist/packages/utils/src/logger/index.d.ts +2 -0
  88. package/dist/packages/utils/src/logger/logger.d.ts +2 -0
  89. package/package.json +25 -0
@@ -0,0 +1,26 @@
1
+ export declare class AppError extends Error {
2
+ readonly statusCode: number;
3
+ readonly code: string;
4
+ constructor(statusCode: number, code: string, message: string);
5
+ }
6
+ export declare class BadRequestError extends AppError {
7
+ constructor(message?: string);
8
+ }
9
+ export declare class UnauthorizedError extends AppError {
10
+ constructor(message?: string);
11
+ }
12
+ export declare class ForbiddenError extends AppError {
13
+ constructor(message?: string);
14
+ }
15
+ export declare class NotFoundError extends AppError {
16
+ constructor(message?: string);
17
+ }
18
+ export declare class ConflictError extends AppError {
19
+ constructor(message?: string);
20
+ }
21
+ export declare class TooManyRequestsError extends AppError {
22
+ constructor(message?: string);
23
+ }
24
+ export declare class InternalServerError extends AppError {
25
+ constructor(message?: string);
26
+ }
@@ -0,0 +1,373 @@
1
+ import type { Subject } from '@vestcards/shared';
2
+ import { type InferColumnsDataTypes } from 'drizzle-orm';
3
+ export declare const sessionCardSelect: {
4
+ card: {
5
+ id: import("drizzle-orm/pg-core").PgColumn<{
6
+ name: "id";
7
+ tableName: string;
8
+ dataType: "string";
9
+ columnType: "PgText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: true;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: true;
17
+ enumValues: [string, ...string[]];
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {}>;
22
+ question: import("drizzle-orm/pg-core").PgColumn<{
23
+ name: "question";
24
+ tableName: "card";
25
+ dataType: "string";
26
+ columnType: "PgText";
27
+ data: string;
28
+ driverParam: string;
29
+ notNull: true;
30
+ hasDefault: false;
31
+ isPrimaryKey: false;
32
+ isAutoincrement: false;
33
+ hasRuntimeDefault: false;
34
+ enumValues: [string, ...string[]];
35
+ baseColumn: never;
36
+ identity: undefined;
37
+ generated: undefined;
38
+ }, {}, {}>;
39
+ answer: import("drizzle-orm/pg-core").PgColumn<{
40
+ name: "answer";
41
+ tableName: "card";
42
+ dataType: "string";
43
+ columnType: "PgText";
44
+ data: string;
45
+ driverParam: string;
46
+ notNull: false;
47
+ hasDefault: false;
48
+ isPrimaryKey: false;
49
+ isAutoincrement: false;
50
+ hasRuntimeDefault: false;
51
+ enumValues: [string, ...string[]];
52
+ baseColumn: never;
53
+ identity: undefined;
54
+ generated: undefined;
55
+ }, {}, {}>;
56
+ };
57
+ image: {
58
+ id: import("drizzle-orm/pg-core").PgColumn<{
59
+ name: "id";
60
+ tableName: string;
61
+ dataType: "string";
62
+ columnType: "PgText";
63
+ data: string;
64
+ driverParam: string;
65
+ notNull: true;
66
+ hasDefault: true;
67
+ isPrimaryKey: true;
68
+ isAutoincrement: false;
69
+ hasRuntimeDefault: true;
70
+ enumValues: [string, ...string[]];
71
+ baseColumn: never;
72
+ identity: undefined;
73
+ generated: undefined;
74
+ }, {}, {}>;
75
+ side: import("drizzle-orm/pg-core").PgColumn<{
76
+ name: "side";
77
+ tableName: "card_media";
78
+ dataType: "string";
79
+ columnType: "PgText";
80
+ data: "front" | "back";
81
+ driverParam: string;
82
+ notNull: true;
83
+ hasDefault: false;
84
+ isPrimaryKey: false;
85
+ isAutoincrement: false;
86
+ hasRuntimeDefault: false;
87
+ enumValues: ["front", "back"];
88
+ baseColumn: never;
89
+ identity: undefined;
90
+ generated: undefined;
91
+ }, {}, {}>;
92
+ url: import("drizzle-orm/pg-core").PgColumn<{
93
+ name: "url";
94
+ tableName: "card_media";
95
+ dataType: "string";
96
+ columnType: "PgText";
97
+ data: string;
98
+ driverParam: string;
99
+ notNull: true;
100
+ hasDefault: false;
101
+ isPrimaryKey: false;
102
+ isAutoincrement: false;
103
+ hasRuntimeDefault: false;
104
+ enumValues: [string, ...string[]];
105
+ baseColumn: never;
106
+ identity: undefined;
107
+ generated: undefined;
108
+ }, {}, {}>;
109
+ };
110
+ subject: import("drizzle-orm/pg-core").PgColumn<{
111
+ name: "subject";
112
+ tableName: "topic";
113
+ dataType: "string";
114
+ columnType: "PgText";
115
+ data: "matemática" | "geografia" | "física" | "biologia" | "história" | "literatura" | "gramática" | "sociologia" | "química" | "filosofia" | "redação" | "artes" | "inglês";
116
+ driverParam: string;
117
+ notNull: true;
118
+ hasDefault: false;
119
+ isPrimaryKey: false;
120
+ isAutoincrement: false;
121
+ hasRuntimeDefault: false;
122
+ enumValues: [string, ...string[]];
123
+ baseColumn: never;
124
+ identity: undefined;
125
+ generated: undefined;
126
+ }, {}, {
127
+ $type: "matemática" | "geografia" | "física" | "biologia" | "história" | "literatura" | "gramática" | "sociologia" | "química" | "filosofia" | "redação" | "artes" | "inglês";
128
+ }>;
129
+ topicName: import("drizzle-orm/pg-core").PgColumn<{
130
+ name: "name";
131
+ tableName: "topic";
132
+ dataType: "string";
133
+ columnType: "PgText";
134
+ data: string;
135
+ driverParam: string;
136
+ notNull: true;
137
+ hasDefault: false;
138
+ isPrimaryKey: false;
139
+ isAutoincrement: false;
140
+ hasRuntimeDefault: false;
141
+ enumValues: [string, ...string[]];
142
+ baseColumn: never;
143
+ identity: undefined;
144
+ generated: undefined;
145
+ }, {}, {}>;
146
+ userDeckStudyId: import("drizzle-orm/pg-core").PgColumn<{
147
+ name: "id";
148
+ tableName: string;
149
+ dataType: "string";
150
+ columnType: "PgText";
151
+ data: string;
152
+ driverParam: string;
153
+ notNull: true;
154
+ hasDefault: true;
155
+ isPrimaryKey: true;
156
+ isAutoincrement: false;
157
+ hasRuntimeDefault: true;
158
+ enumValues: [string, ...string[]];
159
+ baseColumn: never;
160
+ identity: undefined;
161
+ generated: undefined;
162
+ }, {}, {}>;
163
+ cardReview: {
164
+ id: import("drizzle-orm/pg-core").PgColumn<{
165
+ name: "id";
166
+ tableName: "card_review";
167
+ dataType: "string";
168
+ columnType: "PgText";
169
+ data: string;
170
+ driverParam: string;
171
+ notNull: true;
172
+ hasDefault: true;
173
+ isPrimaryKey: true;
174
+ isAutoincrement: false;
175
+ hasRuntimeDefault: true;
176
+ enumValues: [string, ...string[]];
177
+ baseColumn: never;
178
+ identity: undefined;
179
+ generated: undefined;
180
+ }, {}, {}>;
181
+ due: import("drizzle-orm/pg-core").PgColumn<{
182
+ name: "due";
183
+ tableName: "card_review";
184
+ dataType: "date";
185
+ columnType: "PgTimestamp";
186
+ data: Date;
187
+ driverParam: string;
188
+ notNull: false;
189
+ hasDefault: false;
190
+ isPrimaryKey: false;
191
+ isAutoincrement: false;
192
+ hasRuntimeDefault: false;
193
+ enumValues: undefined;
194
+ baseColumn: never;
195
+ identity: undefined;
196
+ generated: undefined;
197
+ }, {}, {}>;
198
+ stability: import("drizzle-orm/pg-core").PgColumn<{
199
+ name: "stability";
200
+ tableName: "card_review";
201
+ dataType: "number";
202
+ columnType: "PgReal";
203
+ data: number;
204
+ driverParam: string | number;
205
+ notNull: true;
206
+ hasDefault: false;
207
+ isPrimaryKey: false;
208
+ isAutoincrement: false;
209
+ hasRuntimeDefault: false;
210
+ enumValues: undefined;
211
+ baseColumn: never;
212
+ identity: undefined;
213
+ generated: undefined;
214
+ }, {}, {}>;
215
+ difficulty: import("drizzle-orm/pg-core").PgColumn<{
216
+ name: "difficulty";
217
+ tableName: "card_review";
218
+ dataType: "number";
219
+ columnType: "PgReal";
220
+ data: number;
221
+ driverParam: string | number;
222
+ notNull: true;
223
+ hasDefault: false;
224
+ isPrimaryKey: false;
225
+ isAutoincrement: false;
226
+ hasRuntimeDefault: false;
227
+ enumValues: undefined;
228
+ baseColumn: never;
229
+ identity: undefined;
230
+ generated: undefined;
231
+ }, {}, {}>;
232
+ elapsed_days: import("drizzle-orm/pg-core").PgColumn<{
233
+ name: "elapsed_days";
234
+ tableName: "card_review";
235
+ dataType: "number";
236
+ columnType: "PgInteger";
237
+ data: number;
238
+ driverParam: string | number;
239
+ notNull: true;
240
+ hasDefault: false;
241
+ isPrimaryKey: false;
242
+ isAutoincrement: false;
243
+ hasRuntimeDefault: false;
244
+ enumValues: undefined;
245
+ baseColumn: never;
246
+ identity: undefined;
247
+ generated: undefined;
248
+ }, {}, {}>;
249
+ scheduled_days: import("drizzle-orm/pg-core").PgColumn<{
250
+ name: "scheduled_days";
251
+ tableName: "card_review";
252
+ dataType: "number";
253
+ columnType: "PgInteger";
254
+ data: number;
255
+ driverParam: string | number;
256
+ notNull: true;
257
+ hasDefault: false;
258
+ isPrimaryKey: false;
259
+ isAutoincrement: false;
260
+ hasRuntimeDefault: false;
261
+ enumValues: undefined;
262
+ baseColumn: never;
263
+ identity: undefined;
264
+ generated: undefined;
265
+ }, {}, {}>;
266
+ reps: import("drizzle-orm/pg-core").PgColumn<{
267
+ name: "reps";
268
+ tableName: "card_review";
269
+ dataType: "number";
270
+ columnType: "PgInteger";
271
+ data: number;
272
+ driverParam: string | number;
273
+ notNull: true;
274
+ hasDefault: false;
275
+ isPrimaryKey: false;
276
+ isAutoincrement: false;
277
+ hasRuntimeDefault: false;
278
+ enumValues: undefined;
279
+ baseColumn: never;
280
+ identity: undefined;
281
+ generated: undefined;
282
+ }, {}, {}>;
283
+ lapses: import("drizzle-orm/pg-core").PgColumn<{
284
+ name: "lapses";
285
+ tableName: "card_review";
286
+ dataType: "number";
287
+ columnType: "PgInteger";
288
+ data: number;
289
+ driverParam: string | number;
290
+ notNull: true;
291
+ hasDefault: false;
292
+ isPrimaryKey: false;
293
+ isAutoincrement: false;
294
+ hasRuntimeDefault: false;
295
+ enumValues: undefined;
296
+ baseColumn: never;
297
+ identity: undefined;
298
+ generated: undefined;
299
+ }, {}, {}>;
300
+ state: import("drizzle-orm/pg-core").PgColumn<{
301
+ name: "state";
302
+ tableName: "card_review";
303
+ dataType: "string";
304
+ columnType: "PgText";
305
+ data: "New" | "Learning" | "Review" | "Relearning";
306
+ driverParam: string;
307
+ notNull: true;
308
+ hasDefault: false;
309
+ isPrimaryKey: false;
310
+ isAutoincrement: false;
311
+ hasRuntimeDefault: false;
312
+ enumValues: ["New", "Learning", "Review", "Relearning"];
313
+ baseColumn: never;
314
+ identity: undefined;
315
+ generated: undefined;
316
+ }, {}, {}>;
317
+ last_review: import("drizzle-orm/pg-core").PgColumn<{
318
+ name: "last_review";
319
+ tableName: "card_review";
320
+ dataType: "date";
321
+ columnType: "PgTimestamp";
322
+ data: Date;
323
+ driverParam: string;
324
+ notNull: false;
325
+ hasDefault: false;
326
+ isPrimaryKey: false;
327
+ isAutoincrement: false;
328
+ hasRuntimeDefault: false;
329
+ enumValues: undefined;
330
+ baseColumn: never;
331
+ identity: undefined;
332
+ generated: undefined;
333
+ }, {}, {}>;
334
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
335
+ name: "created_at";
336
+ tableName: "card_review";
337
+ dataType: "date";
338
+ columnType: "PgTimestamp";
339
+ data: Date;
340
+ driverParam: string;
341
+ notNull: true;
342
+ hasDefault: true;
343
+ isPrimaryKey: false;
344
+ isAutoincrement: false;
345
+ hasRuntimeDefault: false;
346
+ enumValues: undefined;
347
+ baseColumn: never;
348
+ identity: undefined;
349
+ generated: undefined;
350
+ }, {}, {}>;
351
+ };
352
+ };
353
+ export type SessionCardSelect = {
354
+ card: {
355
+ id: string;
356
+ question: string;
357
+ answer: string | null;
358
+ };
359
+ image: {
360
+ id: string;
361
+ side: 'front' | 'back' | null;
362
+ url: string | null;
363
+ } | null;
364
+ subject: Subject;
365
+ topicName: string;
366
+ userDeckStudyId: string;
367
+ cardReview: InferColumnsDataTypes<typeof sessionCardSelect.cardReview> | null;
368
+ };
369
+ export declare const statsSelect: {
370
+ new: import("drizzle-orm").SQL<number>;
371
+ learning: import("drizzle-orm").SQL<number>;
372
+ review: import("drizzle-orm").SQL<number>;
373
+ };
@@ -0,0 +1 @@
1
+ export declare function generateId(): string;
@@ -0,0 +1,2 @@
1
+ export type { App } from './apps/server/src/app';
2
+ export type { Auth } from './apps/server/src/modules/auth/lib';
@@ -0,0 +1,24 @@
1
+ import { type CreateBatchOptions, type CreateBatchRequestOptions, type CreateEmailOptions, type CreateEmailRequestOptions, Resend } from 'resend';
2
+ import { type EmailTemplate, type EmailTemplateValues } from './templates';
3
+ export declare enum EmailAddress {
4
+ TRANSACTIONAL = "noreply",
5
+ MARKETING = "marketing",
6
+ HEITOR = "heitor"
7
+ }
8
+ export declare enum EmailAudience {
9
+ ALL = "d94ccf6a-1e25-44f1-8924-3148a7c63db0"
10
+ }
11
+ export declare class EmailProvider {
12
+ private static instance;
13
+ transporter?: Resend;
14
+ private constructor();
15
+ static getInstance(): EmailProvider;
16
+ createContact({ email, firstName, lastName }: {
17
+ email: string;
18
+ firstName: string;
19
+ lastName: string;
20
+ }, audienceId: string): Promise<void>;
21
+ sendEmailBatch(payload: CreateBatchOptions, options?: CreateBatchRequestOptions): Promise<void>;
22
+ sendEmail(payload: CreateEmailOptions, options?: CreateEmailRequestOptions): Promise<void>;
23
+ sendEmailWithTemplate<T extends EmailTemplate>(templateName: T, payload: Omit<CreateEmailOptions, 'html' | 'subject'>, values: EmailTemplateValues<T>, options?: CreateEmailRequestOptions): Promise<void>;
24
+ }
@@ -0,0 +1,4 @@
1
+ export declare const emailTemplateBuilder: (subject: string, template: string) => {
2
+ subject: string;
3
+ html: string;
4
+ };
@@ -0,0 +1,7 @@
1
+ export interface EmailAccountDeletionValues {
2
+ userName: string;
3
+ }
4
+ export declare const EMAILAccountDeletion: ({ userName }: EmailAccountDeletionValues) => {
5
+ subject: string;
6
+ html: string;
7
+ };
@@ -0,0 +1,10 @@
1
+ export interface EmailAdminPurchaseAlertValues {
2
+ customerEmail: string;
3
+ planName: string;
4
+ amount: string;
5
+ paymentMethod: string;
6
+ }
7
+ export declare const EMAILAdminPurchaseAlert: ({ customerEmail, planName, amount, paymentMethod }: EmailAdminPurchaseAlertValues) => {
8
+ subject: string;
9
+ html: string;
10
+ };
@@ -0,0 +1,8 @@
1
+ export interface EmailCardDemandValues {
2
+ userName: string;
3
+ deckTitle: string;
4
+ }
5
+ export declare const EMAILCardDemand: ({ userName, deckTitle }: EmailCardDemandValues) => {
6
+ subject: string;
7
+ html: string;
8
+ };
@@ -0,0 +1,9 @@
1
+ export interface EmailCardDemandActionValues {
2
+ userName: string;
3
+ deckTitle: string;
4
+ action: 'accept' | 'reject' | 'delete';
5
+ }
6
+ export declare const EMAILCardDemandAction: ({ userName, deckTitle, action }: EmailCardDemandActionValues) => {
7
+ subject: string;
8
+ html: string;
9
+ };
@@ -0,0 +1,7 @@
1
+ export interface EmailConfirmAccountValues {
2
+ url: string;
3
+ }
4
+ export declare const EMAILConfirmAccount: ({ url }: EmailConfirmAccountValues) => {
5
+ subject: string;
6
+ html: string;
7
+ };
@@ -0,0 +1 @@
1
+ export declare const EMAILFooter = "\n <div class=\"mt\">\n <img src=\"https://storage.googleapis.com/vestcards-public-bucket/logos/logoIconPrimary.png\" width=\"35\" height=\"25\" alt=\"Logo VestCards\" title=\"Logo VestCards\" style=\"display: block;\">\n <p class=\"text-gray\">\n <a href=\"https://vestcards.com.br\" style=\"color: gray !important;\">Vestcards</a>, 2025. Todos os direitos reservados.\n </p>\n </div>\n";
@@ -0,0 +1,7 @@
1
+ export interface EmailForgotPasswordValues {
2
+ url: string;
3
+ }
4
+ export declare const EMAILForgotPassword: ({ url }: EmailForgotPasswordValues) => {
5
+ subject: string;
6
+ html: string;
7
+ };
@@ -0,0 +1,28 @@
1
+ import { type EmailAccountDeletionValues } from './accountDeletion';
2
+ import { type EmailAdminPurchaseAlertValues } from './adminPurchaseAlert';
3
+ import { type EmailCardDemandValues } from './cardDemand';
4
+ import { type EmailCardDemandActionValues } from './cardDemandAction';
5
+ import { type EmailConfirmAccountValues } from './emailVerification';
6
+ import { type EmailForgotPasswordValues } from './forgotPassword';
7
+ import { type EmailPurchaseConfirmationValues } from './purchaseConfirmation';
8
+ import { type EmailPrePaymentDetailsValues } from './purchasePrePayment';
9
+ import { type EmailPurchaseRefundValues } from './purchaseRefund';
10
+ type EmailTemplateType = {
11
+ subject: string;
12
+ html: string;
13
+ };
14
+ export interface EmailTemplateFunctions {
15
+ ConfirmAccount: (data: EmailConfirmAccountValues) => EmailTemplateType;
16
+ ForgotPassword: (data: EmailForgotPasswordValues) => EmailTemplateType;
17
+ PrePaymentDetails: (data: EmailPrePaymentDetailsValues) => EmailTemplateType;
18
+ PurchaseRefund: (data: EmailPurchaseRefundValues) => EmailTemplateType;
19
+ PurchaseConfirmation: (data: EmailPurchaseConfirmationValues) => EmailTemplateType;
20
+ AdminPurchaseAlert: (data: EmailAdminPurchaseAlertValues) => EmailTemplateType;
21
+ AccountDeletion: (data: EmailAccountDeletionValues) => EmailTemplateType;
22
+ CardDemand: (data: EmailCardDemandValues) => EmailTemplateType;
23
+ CardDemandAction: (data: EmailCardDemandActionValues) => EmailTemplateType;
24
+ }
25
+ export type EmailTemplate = keyof EmailTemplateFunctions;
26
+ export type EmailTemplateValues<T extends EmailTemplate> = Parameters<EmailTemplateFunctions[T]>[0];
27
+ export declare function emailTemplatePicker<T extends EmailTemplate>(templateName: T): EmailTemplateFunctions[T];
28
+ export {};
@@ -0,0 +1,9 @@
1
+ export interface EmailPurchaseConfirmationValues {
2
+ planName: string;
3
+ amount: string;
4
+ paymentMethod: string;
5
+ }
6
+ export declare const EMAILPurchaseConfirmation: ({ planName, amount, paymentMethod }: EmailPurchaseConfirmationValues) => {
7
+ subject: string;
8
+ html: string;
9
+ };
@@ -0,0 +1,9 @@
1
+ export interface EmailPrePaymentDetailsValues {
2
+ planName: string;
3
+ amount: string;
4
+ paymentMethod: string;
5
+ }
6
+ export declare const EMAILPrePaymentDetails: ({ planName, amount, paymentMethod }: EmailPrePaymentDetailsValues) => {
7
+ subject: string;
8
+ html: string;
9
+ };
@@ -0,0 +1,7 @@
1
+ export interface EmailPurchaseRefundValues {
2
+ planName: string;
3
+ }
4
+ export declare const EMAILPurchaseRefund: ({ planName }: EmailPurchaseRefundValues) => {
5
+ subject: string;
6
+ html: string;
7
+ };
@@ -0,0 +1,2 @@
1
+ export declare const DEFAULT_LOCALE: import("date-fns").Locale;
2
+ export declare const DEFAULT_TZ: "America/Sao_Paulo";
@@ -0,0 +1,8 @@
1
+ /** biome-ignore-all lint/style/noRestrictedImports: date-fns imports are allowed in @vestcards/shared only. All other packages must import from @vestcards/shared/date. */
2
+ import { formatDistance as formatDistanceFns, formatDistanceToNow as formatDistanceToNowFns, format as formatFns, formatRelative as formatRelativeFns } from 'date-fns';
3
+ import type { DateValue } from './types';
4
+ export * from 'date-fns';
5
+ export declare function formatDistance(date: DateValue, baseDate?: DateValue, options?: Parameters<typeof formatDistanceFns>[2]): string;
6
+ export declare function formatDistanceToNow(date: DateValue, options?: Parameters<typeof formatDistanceToNowFns>[1]): string;
7
+ export declare function format(date: DateValue, pattern: string, options?: Parameters<typeof formatFns>[2]): string;
8
+ export declare function formatRelative(date: DateValue, baseDate?: DateValue, options?: Parameters<typeof formatRelativeFns>[2]): string;
@@ -0,0 +1,9 @@
1
+ import type { DateValue } from './types';
2
+ /**
3
+ * Format a date in a specific timezone using pre-defined or custom pattern.
4
+ *
5
+ * Example:
6
+ * formatDateTZ('2025-11-12T12:00:00Z', "HH:mm zzzz", 'America/Sao_Paulo');
7
+ * → "09:00 GMT-03:00"
8
+ */
9
+ export declare function formatDateTZ(date: DateValue, pattern: string, timezone?: string): string;
@@ -0,0 +1,2 @@
1
+ import type { DateValue } from './types';
2
+ export declare function toDate(value: DateValue): Date;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @fileoverview
3
+ * Public API for date utilities.
4
+ * Combines timezone-aware formatting helpers with curated re-exports from date-fns.
5
+ */
6
+ /** biome-ignore-all lint/performance/noBarrelFile: Main entry point for the date folder */
7
+ /** biome-ignore-all lint/performance/noReExportAll: All exports are re-exported from the automatic generated files */
8
+ /** biome-ignore-all lint/style/noRestrictedImports: date-fns imports are allowed in @vestcards/shared only. All other packages must import from @vestcards/shared/date. */
9
+ export * from './constants';
10
+ export * from './fns';
11
+ export * from './format';
12
+ export { toDate } from './helpers';
13
+ export * from './relative';
14
+ export * from './types';
@@ -0,0 +1,19 @@
1
+ /** biome-ignore-all lint/style/noRestrictedImports: date-fns imports are allowed in @vestcards/shared only. All other packages must import from @vestcards/shared/date. */
2
+ import { formatDistanceToNow } from 'date-fns';
3
+ import type { DateValue } from './types';
4
+ /**
5
+ * Formats a date relative to a base date (default: now), with custom separator and timezone.
6
+ * Example outputs:
7
+ * - "Hoje às 10:00"
8
+ * - "Ontem às 17:00"
9
+ * - "11/11/2025 às 09:00"
10
+ */
11
+ export declare function formatRelativeDate(date: DateValue, baseDate?: DateValue, separator?: string, timezone?: string): string;
12
+ /**
13
+ * Formats a date relative to now, with custom separator and timezone.
14
+ * Example outputs:
15
+ * - "Hoje às 10:00"
16
+ * - "Ontem às 17:00"
17
+ * - "11/11/2025 às 09:00"
18
+ */
19
+ export declare function formatRelativeDateToNow(date: DateValue, options?: Parameters<typeof formatDistanceToNow>[1]): string;
@@ -0,0 +1 @@
1
+ export type DateValue = Date | string | number;
@@ -0,0 +1,5 @@
1
+ export * from './types/deck';
2
+ export * from './types/study';
3
+ export * from './types/subject';
4
+ export * from './types/topic';
5
+ export * from './types/user';