@betterinternship/core 2.8.10 → 2.9.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.
@@ -1,184 +1,184 @@
1
- import { v4 as uuid } from 'uuid';
2
- import { pb } from './pb.js';
3
- import * as generator from 'generate-password';
4
- export class ConsumerService {
5
- async findOne(id) {
6
- return await pb.collection('users').getOne(id);
7
- }
8
- async findAll() {
9
- return await pb.collection('users').getFullList();
10
- }
11
- async register(id, email) {
12
- try {
13
- return await pb.collection('users').getOne(id);
14
- }
15
- catch (error) {
16
- const e = error;
17
- if (e.status !== 404)
18
- throw error;
19
- }
20
- const password = generator.generate({
21
- length: 10,
22
- numbers: true,
23
- symbols: true,
24
- uppercase: true,
25
- lowercase: true,
26
- strict: true,
27
- });
28
- return await pb.collection('users').create({
29
- id,
30
- email,
31
- password,
32
- passwordConfirm: password,
33
- last_reads: {},
34
- last_unreads: {},
35
- conversations: [],
36
- });
37
- }
38
- async setLastRead(id, conversationId, message) {
39
- const subscriber = await pb.collection('users').getOne(id);
40
- const last_reads = subscriber.last_reads;
41
- const last_unreads = subscriber.last_unreads;
42
- return await pb.collection('users').update(id, {
43
- last_reads: {
44
- ...last_reads,
45
- [conversationId]: last_reads?.[conversationId]?.timestamp < message.timestamp
46
- ? message
47
- : last_reads?.[conversationId],
48
- },
49
- last_unreads: {
50
- ...last_unreads,
51
- [conversationId]: last_unreads?.[conversationId]?.timestamp < message.timestamp
52
- ? message
53
- : last_unreads?.[conversationId],
54
- },
55
- });
56
- }
57
- async authenticateAs(id) {
58
- const asUser = await pb.collection('users').impersonate(id, 60 * 60 * 24);
59
- const token = asUser.authStore.token;
60
- const record = asUser.authStore.record;
61
- return { token, user: record };
62
- }
63
- }
64
- export class MessageService {
65
- consumerService = new ConsumerService();
66
- conversationService = new ConversationService();
67
- async updateConversationUnread(subscriberId, conversationId, message) {
68
- let subscriber;
69
- try {
70
- subscriber = await this.consumerService.findOne(subscriberId);
71
- }
72
- catch (error) {
73
- const e = error;
74
- if (e.status !== 404)
75
- throw error;
76
- subscriber = await this.consumerService.register(subscriberId, '');
77
- }
78
- await pb.collection('users').update(subscriberId, {
79
- last_unreads: {
80
- ...subscriber.last_unreads,
81
- [conversationId]: subscriber.last_unreads?.[conversationId]?.timestamp <
82
- message.timestamp
83
- ? message
84
- : subscriber.last_unreads?.[conversationId],
85
- },
86
- });
87
- }
88
- async send(senderId, conversationId, messageContent) {
89
- const message = {
90
- sender_id: senderId,
91
- message: messageContent,
92
- timestamp: new Date().getTime(),
93
- };
94
- const conversation = await this.conversationService.appendMessage(conversationId, message);
95
- await this.consumerService.setLastRead(senderId, conversationId, message);
96
- await Promise.all(conversation.subscribers.map((subscriberId) => this.updateConversationUnread(subscriberId, conversationId, message)));
97
- return message;
98
- }
99
- async read(consumerId, conversationId) {
100
- const consumer = await pb.collection('users').getOne(consumerId);
101
- const conversation = await pb
102
- .collection('conversations')
103
- .getOne(conversationId);
104
- await pb.collection('users').update(consumerId, {
105
- last_reads: {
106
- ...consumer.last_reads,
107
- [conversationId]: conversation.last_message,
108
- },
109
- last_unreads: {
110
- ...consumer.last_unreads,
111
- [conversationId]: conversation.last_message,
112
- },
113
- });
114
- return conversation.last_message;
115
- }
116
- async digest(consumerId, conversationId) {
117
- const consumer = await pb.collection('users').getOne(consumerId);
118
- const conversation = await pb
119
- .collection('conversations')
120
- .getOne(conversationId);
121
- await pb.collection('users').update(consumerId, {
122
- last_unreads: {
123
- ...consumer.last_unreads,
124
- [conversationId]: {
125
- ...conversation.last_message,
126
- digested: true,
127
- },
128
- },
129
- });
130
- return { ...conversation.last_message, digested: true };
131
- }
132
- }
133
- export class ConversationService {
134
- consumerService = new ConsumerService();
135
- async findOne(id) {
136
- return await pb.collection('conversations').getOne(id);
137
- }
138
- async appendMessage(conversationId, message) {
139
- const conversation = await this.findOne(conversationId);
140
- return await pb.collection('conversations').update(conversationId, {
141
- contents: [...conversation.contents, message],
142
- last_message: message,
143
- });
144
- }
145
- async subscribe(subscriberId, conversationId) {
146
- const conversation = await this.findOne(conversationId);
147
- const subscriber = await this.consumerService.findOne(subscriberId);
148
- await pb.collection('users').update(subscriberId, {
149
- conversations: [...subscriber.conversations, conversationId],
150
- });
151
- return await pb.collection('conversations').update(conversationId, {
152
- subscribers: [...conversation.subscribers, subscriberId],
153
- });
154
- }
155
- async getSubscriptions(subscriberId) {
156
- return await pb.collection('conversations').getFullList({
157
- filter: `subscribers ~ '${subscriberId}'`,
158
- });
159
- }
160
- async findExisting(userId, employerId) {
161
- return await pb
162
- .collection('conversations')
163
- .getFirstListItem(`subscribers ~ '${userId}' && subscribers ~ '${employerId}'`);
164
- }
165
- async checkIfSubscribed(subscriberId, conversationId) {
166
- const conversation = await this.findOne(conversationId);
167
- if (!conversation)
168
- return false;
169
- if (!conversation.subscribers.includes(subscriberId))
170
- return false;
171
- return true;
172
- }
173
- async create(userId, employerId) {
174
- const conversationId = uuid();
175
- const newConversation = await pb.collection('conversations').create({
176
- id: conversationId,
177
- subscribers: [userId, employerId],
178
- contents: [],
179
- last_message: {},
180
- });
181
- return newConversation;
182
- }
183
- }
1
+ import { v4 as uuid } from 'uuid';
2
+ import { pb } from './pb.js';
3
+ import * as generator from 'generate-password';
4
+ export class ConsumerService {
5
+ async findOne(id) {
6
+ return await pb.collection('users').getOne(id);
7
+ }
8
+ async findAll() {
9
+ return await pb.collection('users').getFullList();
10
+ }
11
+ async register(id, email) {
12
+ try {
13
+ return await pb.collection('users').getOne(id);
14
+ }
15
+ catch (error) {
16
+ const e = error;
17
+ if (e.status !== 404)
18
+ throw error;
19
+ }
20
+ const password = generator.generate({
21
+ length: 10,
22
+ numbers: true,
23
+ symbols: true,
24
+ uppercase: true,
25
+ lowercase: true,
26
+ strict: true,
27
+ });
28
+ return await pb.collection('users').create({
29
+ id,
30
+ email,
31
+ password,
32
+ passwordConfirm: password,
33
+ last_reads: {},
34
+ last_unreads: {},
35
+ conversations: [],
36
+ });
37
+ }
38
+ async setLastRead(id, conversationId, message) {
39
+ const subscriber = await pb.collection('users').getOne(id);
40
+ const last_reads = subscriber.last_reads;
41
+ const last_unreads = subscriber.last_unreads;
42
+ return await pb.collection('users').update(id, {
43
+ last_reads: {
44
+ ...last_reads,
45
+ [conversationId]: last_reads?.[conversationId]?.timestamp < message.timestamp
46
+ ? message
47
+ : last_reads?.[conversationId],
48
+ },
49
+ last_unreads: {
50
+ ...last_unreads,
51
+ [conversationId]: last_unreads?.[conversationId]?.timestamp < message.timestamp
52
+ ? message
53
+ : last_unreads?.[conversationId],
54
+ },
55
+ });
56
+ }
57
+ async authenticateAs(id) {
58
+ const asUser = await pb.collection('users').impersonate(id, 60 * 60 * 24);
59
+ const token = asUser.authStore.token;
60
+ const record = asUser.authStore.record;
61
+ return { token, user: record };
62
+ }
63
+ }
64
+ export class MessageService {
65
+ consumerService = new ConsumerService();
66
+ conversationService = new ConversationService();
67
+ async updateConversationUnread(subscriberId, conversationId, message) {
68
+ let subscriber;
69
+ try {
70
+ subscriber = await this.consumerService.findOne(subscriberId);
71
+ }
72
+ catch (error) {
73
+ const e = error;
74
+ if (e.status !== 404)
75
+ throw error;
76
+ subscriber = await this.consumerService.register(subscriberId, '');
77
+ }
78
+ await pb.collection('users').update(subscriberId, {
79
+ last_unreads: {
80
+ ...subscriber.last_unreads,
81
+ [conversationId]: subscriber.last_unreads?.[conversationId]?.timestamp <
82
+ message.timestamp
83
+ ? message
84
+ : subscriber.last_unreads?.[conversationId],
85
+ },
86
+ });
87
+ }
88
+ async send(senderId, conversationId, messageContent) {
89
+ const message = {
90
+ sender_id: senderId,
91
+ message: messageContent,
92
+ timestamp: new Date().getTime(),
93
+ };
94
+ const conversation = await this.conversationService.appendMessage(conversationId, message);
95
+ await this.consumerService.setLastRead(senderId, conversationId, message);
96
+ await Promise.all(conversation.subscribers.map((subscriberId) => this.updateConversationUnread(subscriberId, conversationId, message)));
97
+ return message;
98
+ }
99
+ async read(consumerId, conversationId) {
100
+ const consumer = await pb.collection('users').getOne(consumerId);
101
+ const conversation = await pb
102
+ .collection('conversations')
103
+ .getOne(conversationId);
104
+ await pb.collection('users').update(consumerId, {
105
+ last_reads: {
106
+ ...consumer.last_reads,
107
+ [conversationId]: conversation.last_message,
108
+ },
109
+ last_unreads: {
110
+ ...consumer.last_unreads,
111
+ [conversationId]: conversation.last_message,
112
+ },
113
+ });
114
+ return conversation.last_message;
115
+ }
116
+ async digest(consumerId, conversationId) {
117
+ const consumer = await pb.collection('users').getOne(consumerId);
118
+ const conversation = await pb
119
+ .collection('conversations')
120
+ .getOne(conversationId);
121
+ await pb.collection('users').update(consumerId, {
122
+ last_unreads: {
123
+ ...consumer.last_unreads,
124
+ [conversationId]: {
125
+ ...conversation.last_message,
126
+ digested: true,
127
+ },
128
+ },
129
+ });
130
+ return { ...conversation.last_message, digested: true };
131
+ }
132
+ }
133
+ export class ConversationService {
134
+ consumerService = new ConsumerService();
135
+ async findOne(id) {
136
+ return await pb.collection('conversations').getOne(id);
137
+ }
138
+ async appendMessage(conversationId, message) {
139
+ const conversation = await this.findOne(conversationId);
140
+ return await pb.collection('conversations').update(conversationId, {
141
+ contents: [...conversation.contents, message],
142
+ last_message: message,
143
+ });
144
+ }
145
+ async subscribe(subscriberId, conversationId) {
146
+ const conversation = await this.findOne(conversationId);
147
+ const subscriber = await this.consumerService.findOne(subscriberId);
148
+ await pb.collection('users').update(subscriberId, {
149
+ conversations: [...subscriber.conversations, conversationId],
150
+ });
151
+ return await pb.collection('conversations').update(conversationId, {
152
+ subscribers: [...conversation.subscribers, subscriberId],
153
+ });
154
+ }
155
+ async getSubscriptions(subscriberId) {
156
+ return await pb.collection('conversations').getFullList({
157
+ filter: `subscribers ~ '${subscriberId}'`,
158
+ });
159
+ }
160
+ async findExisting(userId, employerId) {
161
+ return await pb
162
+ .collection('conversations')
163
+ .getFirstListItem(`subscribers ~ '${userId}' && subscribers ~ '${employerId}'`);
164
+ }
165
+ async checkIfSubscribed(subscriberId, conversationId) {
166
+ const conversation = await this.findOne(conversationId);
167
+ if (!conversation)
168
+ return false;
169
+ if (!conversation.subscribers.includes(subscriberId))
170
+ return false;
171
+ return true;
172
+ }
173
+ async create(userId, employerId) {
174
+ const conversationId = uuid();
175
+ const newConversation = await pb.collection('conversations').create({
176
+ id: conversationId,
177
+ subscribers: [userId, employerId],
178
+ contents: [],
179
+ last_message: {},
180
+ });
181
+ return newConversation;
182
+ }
183
+ }
184
184
  //# sourceMappingURL=chat.js.map
@@ -1,2 +1,2 @@
1
- export * from './chat.js';
2
- export * from './pb.js';
1
+ export * from './chat.js';
2
+ export * from './pb.js';
@@ -1,3 +1,3 @@
1
- export * from './chat.js';
2
- export * from './pb.js';
1
+ export * from './chat.js';
2
+ export * from './pb.js';
3
3
  //# sourceMappingURL=index.js.map
@@ -1,3 +1,3 @@
1
- import PocketBase from 'pocketbase';
2
- export declare const pb: PocketBase;
3
- export declare const authenticatePocketbase: () => Promise<void>;
1
+ import PocketBase from 'pocketbase';
2
+ export declare const pb: PocketBase;
3
+ export declare const authenticatePocketbase: () => Promise<void>;
@@ -1,16 +1,16 @@
1
- import PocketBase from 'pocketbase';
2
- import { ENV } from '../env.js';
3
- let _pb = {};
4
- if (!ENV.BICORE_IGNORE_POCKETBASE) {
5
- _pb = new PocketBase(ENV.PB_URL);
6
- _pb.autoCancellation(false);
7
- }
8
- export const pb = _pb;
9
- export const authenticatePocketbase = async () => {
10
- await _pb
11
- .collection('_superusers')
12
- .authWithPassword(ENV.PB_ADMIN_EMAIL, ENV.PB_ADMIN_PASSWORD, { autoRefreshThreshold: 30 * 60 });
13
- };
14
- if (!ENV.BICORE_IGNORE_POCKETBASE)
15
- authenticatePocketbase();
1
+ import PocketBase from 'pocketbase';
2
+ import { ENV } from '../env.js';
3
+ let _pb = {};
4
+ if (!ENV.BICORE_IGNORE_POCKETBASE) {
5
+ _pb = new PocketBase(ENV.PB_URL);
6
+ _pb.autoCancellation(false);
7
+ }
8
+ export const pb = _pb;
9
+ export const authenticatePocketbase = async () => {
10
+ await _pb
11
+ .collection('_superusers')
12
+ .authWithPassword(ENV.PB_ADMIN_EMAIL, ENV.PB_ADMIN_PASSWORD, { autoRefreshThreshold: 30 * 60 });
13
+ };
14
+ if (!ENV.BICORE_IGNORE_POCKETBASE)
15
+ authenticatePocketbase();
16
16
  //# sourceMappingURL=pb.js.map
@@ -1,11 +1,22 @@
1
1
  import { SESClient } from '@aws-sdk/client-ses';
2
2
  export declare const sesClient: SESClient;
3
- interface IEmailParams {
3
+ type EmailAlias = 'otp' | 'applications' | 'sign' | 'hello' | 'apply';
4
+ export interface IEmailParams {
4
5
  sender?: string;
5
6
  subject: string;
6
7
  recipient: string;
7
8
  content: string;
8
- alias?: 'otp' | 'applications' | 'sign' | 'hello';
9
+ alias?: EmailAlias;
10
+ }
11
+ export interface IMultiEmailParams {
12
+ sender?: string;
13
+ subject: string;
14
+ to: string | string[];
15
+ cc?: string | string[];
16
+ bcc?: string | string[];
17
+ content: string;
18
+ alias?: EmailAlias;
9
19
  }
10
20
  export declare const sendSingleEmail: (params: IEmailParams) => Promise<unknown>;
21
+ export declare const sendMultiEmail: (params: IMultiEmailParams) => Promise<unknown>;
11
22
  export {};
@@ -40,6 +40,14 @@ const onEmailError = (recipient, resolve) => (error, info) => {
40
40
  console.warn('[EMAIL] Email sent to ' + recipient);
41
41
  }
42
42
  };
43
+ const normalizeRecipients = (value) => {
44
+ if (!value)
45
+ return [];
46
+ const list = Array.isArray(value) ? value : [value];
47
+ return [
48
+ ...new Set(list.map((recipient) => recipient.trim()).filter(Boolean)),
49
+ ];
50
+ };
43
51
  const traditionalEmailRoute = async ({ sender, subject, recipient, content, alias = 'hello', }) => {
44
52
  return new Promise((resolve) => {
45
53
  transporter.sendMail({
@@ -50,6 +58,24 @@ const traditionalEmailRoute = async ({ sender, subject, recipient, content, alia
50
58
  }, onEmailError(recipient, resolve));
51
59
  });
52
60
  };
61
+ const traditionalMultiEmailRoute = async ({ sender, subject, to, cc, bcc, content, alias = 'hello', }) => {
62
+ const toRecipients = normalizeRecipients(to);
63
+ if (!toRecipients.length)
64
+ throw Error('[ERROR:EMAIL] No recipients provided for email.');
65
+ const ccRecipients = normalizeRecipients(cc);
66
+ const bccRecipients = normalizeRecipients(bcc);
67
+ const logRecipients = [...toRecipients, ...ccRecipients, ...bccRecipients];
68
+ return new Promise((resolve) => {
69
+ transporter.sendMail({
70
+ from: `"${sender ?? 'BetterInternship'}" <${alias}@betterinternship.com>`,
71
+ to: toRecipients,
72
+ cc: ccRecipients.length ? ccRecipients : undefined,
73
+ bcc: bccRecipients.length ? bccRecipients : undefined,
74
+ subject,
75
+ html: content,
76
+ }, onEmailError(logRecipients.join(', '), resolve));
77
+ });
78
+ };
53
79
  const amazonEmailRoute = async ({ sender, subject, recipient, content, alias = 'hello', }) => {
54
80
  const params = {
55
81
  Destination: {
@@ -77,6 +103,41 @@ const amazonEmailRoute = async ({ sender, subject, recipient, content, alias = '
77
103
  console.error('[-----] ' + error);
78
104
  }
79
105
  };
106
+ const amazonMultiEmailRoute = async ({ sender, subject, to, cc, bcc, content, alias = 'hello', }) => {
107
+ const toRecipients = normalizeRecipients(to);
108
+ if (!toRecipients.length)
109
+ throw Error('[ERROR:EMAIL] No recipients provided for email.');
110
+ const ccRecipients = normalizeRecipients(cc);
111
+ const bccRecipients = normalizeRecipients(bcc);
112
+ const logRecipients = [...toRecipients, ...ccRecipients, ...bccRecipients];
113
+ const params = {
114
+ Destination: {
115
+ ToAddresses: toRecipients,
116
+ CcAddresses: ccRecipients.length ? ccRecipients : undefined,
117
+ BccAddresses: bccRecipients.length ? bccRecipients : undefined,
118
+ },
119
+ Message: {
120
+ Subject: { Data: subject },
121
+ Body: {
122
+ Html: { Data: content },
123
+ },
124
+ },
125
+ Source: `"${sender ?? 'BetterInternship'}" <${alias}@betterinternship.com>`,
126
+ };
127
+ try {
128
+ const command = new SendEmailCommand(params);
129
+ const result = await sesClient.send(command);
130
+ console.warn('[AWSSES] Email sent to ' + logRecipients.join(', '));
131
+ return {
132
+ messageId: result.MessageId,
133
+ response: 'Successfully sent via Amazon SES.',
134
+ };
135
+ }
136
+ catch (error) {
137
+ console.error('[ERROR:AWSSES] Could not send email.');
138
+ console.error('[-----] ' + error);
139
+ }
140
+ };
80
141
  export const sendSingleEmail = async (params) => {
81
142
  if (AWS_DISABLED) {
82
143
  return await traditionalEmailRoute(params);
@@ -92,4 +153,19 @@ export const sendSingleEmail = async (params) => {
92
153
  }
93
154
  }
94
155
  };
156
+ export const sendMultiEmail = async (params) => {
157
+ if (AWS_DISABLED) {
158
+ return await traditionalMultiEmailRoute(params);
159
+ }
160
+ else {
161
+ const dice = Math.random();
162
+ const threshold = 0;
163
+ if (dice < threshold) {
164
+ return await traditionalMultiEmailRoute(params);
165
+ }
166
+ else {
167
+ return await amazonMultiEmailRoute(params);
168
+ }
169
+ }
170
+ };
95
171
  //# sourceMappingURL=email.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"email.js","sourceRoot":"","sources":["../../../lib/email/email.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAyB,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAGhC,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;AAClC,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;AACxC,IAAI,CAAC,UAAU,IAAI,CAAC,aAAa;IAC/B,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAC;AAGlD,MAAM,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;AAChD,MAAM,qBAAqB,GAAG,GAAG,CAAC,qBAAqB,CAAC;AACxD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;AAClC,MAAM,YAAY,GAChB,CAAC,iBAAiB,IAAI,CAAC,qBAAqB,IAAI,CAAC,UAAU,CAAC;AAC9D,IAAI,YAAY;IAAE,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;AAKtE,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;IACrC,MAAM,EAAE,GAAG,CAAC,UAAU;CACvB,CAAC,CAAC;AAKH,MAAM,WAAW,GAAG,UAAU,CAAC,eAAe,CAAC;IAC7C,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE;QACJ,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,aAAa;KACpB;IACD,SAAS,EAAE,GAAG,EAAE,EAAE,GAAG,UAAU,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,YAAY,GAChB,CAAC,SAAiB,EAAE,OAAiC,EAAE,EAAE,CACzD,CAAC,KAAY,EAAE,IAA8C,EAAE,EAAE;IAC/D,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC;YACN,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAAC;IACrD,CAAC;AACH,CAAC,CAAC;AAgBJ,MAAM,qBAAqB,GAAG,KAAK,EAAE,EACnC,MAAM,EACN,OAAO,EACP,SAAS,EACT,OAAO,EACP,KAAK,GAAG,OAAO,GACF,EAAE,EAAE;IACjB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,WAAW,CAAC,QAAQ,CAClB;YACE,IAAI,EAAE,IAAI,MAAM,IAAI,kBAAkB,MAAM,KAAK,wBAAwB;YACzE,EAAE,EAAE,SAAS;YACb,OAAO;YACP,IAAI,EAAE,OAAO;SACd,EACD,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CACjC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAQF,MAAM,gBAAgB,GAAG,KAAK,EAAE,EAC9B,MAAM,EACN,OAAO,EACP,SAAS,EACT,OAAO,EACP,KAAK,GAAG,OAAO,GACF,EAAE,EAAE;IACjB,MAAM,MAAM,GAA0B;QACpC,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,SAAS,CAAC;SACzB;QACD,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YAC1B,IAAI,EAAE;gBACJ,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;aACxB;SACF;QACD,MAAM,EAAE,IAAI,MAAM,IAAI,kBAAkB,MAAM,KAAK,wBAAwB;KAC5E,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC,CAAC;QACpD,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ,EAAE,mCAAmC;SAC9C,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACtD,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;IACpC,CAAC;AACH,CAAC,CAAC;AASF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,MAAoB,EAAE,EAAE;IAC5D,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QAGN,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,CAAC,CAAC;QAIpB,IAAI,IAAI,GAAG,SAAS,EAAE,CAAC;YACrB,OAAO,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"email.js","sourceRoot":"","sources":["../../../lib/email/email.ts"],"names":[],"mappings":"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"}
package/dist/lib/env.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const ENV: NodeJS.ProcessEnv;
1
+ export declare const ENV: NodeJS.ProcessEnv;
package/dist/lib/env.js CHANGED
@@ -1,4 +1,4 @@
1
- import * as dotenv from "dotenv";
2
- dotenv.config();
3
- export const ENV = process.env;
1
+ import * as dotenv from "dotenv";
2
+ dotenv.config();
3
+ export const ENV = process.env;
4
4
  //# sourceMappingURL=env.js.map