@driveflux/api-functions 0.0.2
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.
- package/dist/auth/confirm.d.ts +33 -0
- package/dist/auth/confirm.d.ts.map +1 -0
- package/dist/auth/confirm.js +88 -0
- package/dist/auth/confirm.js.map +1 -0
- package/dist/auth/emails.d.ts +4 -0
- package/dist/auth/emails.d.ts.map +1 -0
- package/dist/auth/emails.js +51 -0
- package/dist/auth/emails.js.map +1 -0
- package/dist/auth/formatter.d.ts +2 -0
- package/dist/auth/formatter.d.ts.map +1 -0
- package/dist/auth/formatter.js +249 -0
- package/dist/auth/formatter.js.map +1 -0
- package/dist/auth/otp.d.ts +44 -0
- package/dist/auth/otp.d.ts.map +1 -0
- package/dist/auth/otp.js +154 -0
- package/dist/auth/otp.js.map +1 -0
- package/dist/auth/register.d.ts +31 -0
- package/dist/auth/register.d.ts.map +1 -0
- package/dist/auth/register.js +128 -0
- package/dist/auth/register.js.map +1 -0
- package/dist/auth/tokens.d.ts +62 -0
- package/dist/auth/tokens.d.ts.map +1 -0
- package/dist/auth/tokens.js +129 -0
- package/dist/auth/tokens.js.map +1 -0
- package/dist/auth/verifications.d.ts +28 -0
- package/dist/auth/verifications.d.ts.map +1 -0
- package/dist/auth/verifications.js +174 -0
- package/dist/auth/verifications.js.map +1 -0
- package/dist/constants.d.ts +5 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +5 -0
- package/dist/constants.js.map +1 -0
- package/dist/global.d.js +1 -0
- package/dist/mailjet/calls/manage-contacts-in-list.d.ts +21 -0
- package/dist/mailjet/calls/manage-contacts-in-list.d.ts.map +1 -0
- package/dist/mailjet/calls/manage-contacts-in-list.js +28 -0
- package/dist/mailjet/calls/manage-contacts-in-list.js.map +1 -0
- package/dist/mailjet/calls/manage-subscription-status.d.ts +15 -0
- package/dist/mailjet/calls/manage-subscription-status.d.ts.map +1 -0
- package/dist/mailjet/calls/manage-subscription-status.js +16 -0
- package/dist/mailjet/calls/manage-subscription-status.js.map +1 -0
- package/dist/mailjet/calls/request-service.d.ts +7 -0
- package/dist/mailjet/calls/request-service.d.ts.map +1 -0
- package/dist/mailjet/calls/request-service.js +24 -0
- package/dist/mailjet/calls/request-service.js.map +1 -0
- package/dist/mailjet/refresh-email-preferences.d.ts +23 -0
- package/dist/mailjet/refresh-email-preferences.d.ts.map +1 -0
- package/dist/mailjet/refresh-email-preferences.js +43 -0
- package/dist/mailjet/refresh-email-preferences.js.map +1 -0
- package/dist/mailjet/set-contact.d.ts +21 -0
- package/dist/mailjet/set-contact.d.ts.map +1 -0
- package/dist/mailjet/set-contact.js +39 -0
- package/dist/mailjet/set-contact.js.map +1 -0
- package/dist/mailjet/types.d.ts +31 -0
- package/dist/mailjet/types.d.ts.map +1 -0
- package/dist/mailjet/types.js +2 -0
- package/dist/mailjet/types.js.map +1 -0
- package/dist/mailjet/utils/convert-to-array.d.ts +6 -0
- package/dist/mailjet/utils/convert-to-array.d.ts.map +1 -0
- package/dist/mailjet/utils/convert-to-array.js +23 -0
- package/dist/mailjet/utils/convert-to-array.js.map +1 -0
- package/dist/mailjet/utils/extract-email-preferences.d.ts +17 -0
- package/dist/mailjet/utils/extract-email-preferences.d.ts.map +1 -0
- package/dist/mailjet/utils/extract-email-preferences.js +51 -0
- package/dist/mailjet/utils/extract-email-preferences.js.map +1 -0
- package/dist/mailjet/utils/lists.d.ts +13 -0
- package/dist/mailjet/utils/lists.d.ts.map +1 -0
- package/dist/mailjet/utils/lists.js +41 -0
- package/dist/mailjet/utils/lists.js.map +1 -0
- package/dist/mailjet/utils/update-email-references.d.ts +4 -0
- package/dist/mailjet/utils/update-email-references.d.ts.map +1 -0
- package/dist/mailjet/utils/update-email-references.js +31 -0
- package/dist/mailjet/utils/update-email-references.js.map +1 -0
- package/dist/notion/client.d.ts +12 -0
- package/dist/notion/client.d.ts.map +1 -0
- package/dist/notion/client.js +63 -0
- package/dist/notion/client.js.map +1 -0
- package/dist/notion/helpful.d.ts +7 -0
- package/dist/notion/helpful.d.ts.map +1 -0
- package/dist/notion/helpful.js +32 -0
- package/dist/notion/helpful.js.map +1 -0
- package/dist/notion/schemas/block.d.ts +89 -0
- package/dist/notion/schemas/block.d.ts.map +1 -0
- package/dist/notion/schemas/block.js +89 -0
- package/dist/notion/schemas/block.js.map +1 -0
- package/dist/notion/schemas/common.d.ts +25 -0
- package/dist/notion/schemas/common.d.ts.map +1 -0
- package/dist/notion/schemas/common.js +31 -0
- package/dist/notion/schemas/common.js.map +1 -0
- package/dist/notion/schemas/database.d.ts +517 -0
- package/dist/notion/schemas/database.d.ts.map +1 -0
- package/dist/notion/schemas/database.js +222 -0
- package/dist/notion/schemas/database.js.map +1 -0
- package/dist/notion/schemas/emoji.d.ts +12 -0
- package/dist/notion/schemas/emoji.d.ts.map +1 -0
- package/dist/notion/schemas/emoji.js +6 -0
- package/dist/notion/schemas/emoji.js.map +1 -0
- package/dist/notion/schemas/file.d.ts +43 -0
- package/dist/notion/schemas/file.d.ts.map +1 -0
- package/dist/notion/schemas/file.js +18 -0
- package/dist/notion/schemas/file.js.map +1 -0
- package/dist/notion/schemas/kb.d.ts +1526 -0
- package/dist/notion/schemas/kb.d.ts.map +1 -0
- package/dist/notion/schemas/kb.js +74 -0
- package/dist/notion/schemas/kb.js.map +1 -0
- package/dist/notion/schemas/page.d.ts +608 -0
- package/dist/notion/schemas/page.d.ts.map +1 -0
- package/dist/notion/schemas/page.js +181 -0
- package/dist/notion/schemas/page.js.map +1 -0
- package/dist/notion/schemas/parent.d.ts +42 -0
- package/dist/notion/schemas/parent.d.ts.map +1 -0
- package/dist/notion/schemas/parent.js +18 -0
- package/dist/notion/schemas/parent.js.map +1 -0
- package/dist/notion/schemas/user.d.ts +83 -0
- package/dist/notion/schemas/user.d.ts.map +1 -0
- package/dist/notion/schemas/user.js +31 -0
- package/dist/notion/schemas/user.js.map +1 -0
- package/dist/reservation/agree.d.ts +3 -0
- package/dist/reservation/agree.d.ts.map +1 -0
- package/dist/reservation/agree.js +23 -0
- package/dist/reservation/agree.js.map +1 -0
- package/dist/reservation/checks.d.ts +8 -0
- package/dist/reservation/checks.d.ts.map +1 -0
- package/dist/reservation/checks.js +28 -0
- package/dist/reservation/checks.js.map +1 -0
- package/dist/reservation/display-vehicle.d.ts +1152 -0
- package/dist/reservation/display-vehicle.d.ts.map +1 -0
- package/dist/reservation/display-vehicle.js +244 -0
- package/dist/reservation/display-vehicle.js.map +1 -0
- package/dist/reservation/fetch-or-create.d.ts +11 -0
- package/dist/reservation/fetch-or-create.d.ts.map +1 -0
- package/dist/reservation/fetch-or-create.js +207 -0
- package/dist/reservation/fetch-or-create.js.map +1 -0
- package/dist/reservation/invoice.d.ts +12 -0
- package/dist/reservation/invoice.d.ts.map +1 -0
- package/dist/reservation/invoice.js +248 -0
- package/dist/reservation/invoice.js.map +1 -0
- package/dist/reservation/payer.d.ts +5 -0
- package/dist/reservation/payer.d.ts.map +1 -0
- package/dist/reservation/payer.js +38 -0
- package/dist/reservation/payer.js.map +1 -0
- package/dist/reservation/reserve.d.ts +5 -0
- package/dist/reservation/reserve.d.ts.map +1 -0
- package/dist/reservation/reserve.js +44 -0
- package/dist/reservation/reserve.js.map +1 -0
- package/dist/reservation/types.d.ts +28 -0
- package/dist/reservation/types.d.ts.map +1 -0
- package/dist/reservation/types.js +2 -0
- package/dist/reservation/types.js.map +1 -0
- package/dist/reservation/vehicle.d.ts +6 -0
- package/dist/reservation/vehicle.d.ts.map +1 -0
- package/dist/reservation/vehicle.js +32 -0
- package/dist/reservation/vehicle.js.map +1 -0
- package/dist/slack.d.ts +19 -0
- package/dist/slack.d.ts.map +1 -0
- package/dist/slack.js +105 -0
- package/dist/slack.js.map +1 -0
- package/dist/validation.d.ts +63 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +99 -0
- package/dist/validation.js.map +1 -0
- package/dist/vehicle/vehicle-pricing/constants.d.ts +91 -0
- package/dist/vehicle/vehicle-pricing/constants.d.ts.map +1 -0
- package/dist/vehicle/vehicle-pricing/constants.js +142 -0
- package/dist/vehicle/vehicle-pricing/constants.js.map +1 -0
- package/dist/vehicle/vehicle-pricing/index.d.ts +79 -0
- package/dist/vehicle/vehicle-pricing/index.d.ts.map +1 -0
- package/dist/vehicle/vehicle-pricing/index.js +169 -0
- package/dist/vehicle/vehicle-pricing/index.js.map +1 -0
- package/dist/vehicle/vehicle-pricing/types.d.ts +43 -0
- package/dist/vehicle/vehicle-pricing/types.d.ts.map +1 -0
- package/dist/vehicle/vehicle-pricing/types.js +2 -0
- package/dist/vehicle/vehicle-pricing/types.js.map +1 -0
- package/package.json +121 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { makeProblem, PROBLEM_INVALID_DATA } from '@driveflux/problem';
|
|
2
|
+
import { Err } from '@driveflux/result';
|
|
3
|
+
import { getListByRef } from '../utils/lists';
|
|
4
|
+
import { callMailjet } from './request-service';
|
|
5
|
+
// Add a contact to a contact list in Mailjet
|
|
6
|
+
export const manageContactsInList = async ({ users, list, action = 'addnoforce', }) => {
|
|
7
|
+
const contacts = users.map((u) => {
|
|
8
|
+
return {
|
|
9
|
+
Email: u.email,
|
|
10
|
+
IsExcludedFromCampaigns: false,
|
|
11
|
+
Name: `${u.firstName} ${u.lastName}`,
|
|
12
|
+
Properties: {
|
|
13
|
+
FirstName: u.firstName,
|
|
14
|
+
LastName: u.lastName,
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
});
|
|
18
|
+
const listOjbect = await getListByRef(list);
|
|
19
|
+
if (!listOjbect?.id) {
|
|
20
|
+
return new Err(makeProblem(PROBLEM_INVALID_DATA, `List '${list}' is not valid`));
|
|
21
|
+
}
|
|
22
|
+
const result = await callMailjet(`contactslist/${listOjbect.id}/managemanycontacts`, {
|
|
23
|
+
Action: action,
|
|
24
|
+
Contacts: contacts,
|
|
25
|
+
});
|
|
26
|
+
return result;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=manage-contacts-in-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage-contacts-in-list.js","sourceRoot":"","sources":["../../../src/mailjet/calls/manage-contacts-in-list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAqB,MAAM,mBAAmB,CAAA;AAYlE,6CAA6C;AAC7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EAC1C,KAAK,EACL,IAAI,EACJ,MAAM,GAAG,YAAY,GACb,EAAE,EAAE;IACZ,MAAM,QAAQ,GAAuB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACpD,OAAO;YACN,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,uBAAuB,EAAE,KAAK;YAC9B,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,EAAE;YACpC,UAAU,EAAE;gBACX,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;aACpB;SACD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;IAE3C,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC;QACrB,OAAO,IAAI,GAAG,CACb,WAAW,CAAC,oBAAoB,EAAE,SAAS,IAAI,gBAAgB,CAAC,CAChE,CAAA;IACF,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAC/B,gBAAgB,UAAU,CAAC,EAAE,qBAAqB,EAClD;QACC,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,QAAQ;KAClB,CACD,CAAA;IACD,OAAO,MAAM,CAAA;AACd,CAAC,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { PromisedResult } from '@driveflux/result';
|
|
2
|
+
import type { ListName, StatusAction } from '../types';
|
|
3
|
+
import { type ResponseBase } from './request-service';
|
|
4
|
+
export type Item = {
|
|
5
|
+
list: ListName;
|
|
6
|
+
action?: StatusAction;
|
|
7
|
+
};
|
|
8
|
+
export type MailjetManageContactsListsResponse = ResponseBase<{
|
|
9
|
+
ContactsLists: {
|
|
10
|
+
ListID: string;
|
|
11
|
+
Action: StatusAction;
|
|
12
|
+
}[];
|
|
13
|
+
}>;
|
|
14
|
+
export declare const manageSubscriptionStatus: (email: string, updatedLists: Item[]) => PromisedResult<MailjetManageContactsListsResponse>;
|
|
15
|
+
//# sourceMappingURL=manage-subscription-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage-subscription-status.d.ts","sourceRoot":"","sources":["../../../src/mailjet/calls/manage-subscription-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEtD,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAElE,MAAM,MAAM,IAAI,GAAG;IAClB,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,CAAC,EAAE,YAAY,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,kCAAkC,GAAG,YAAY,CAAC;IAC7D,aAAa,EAAE;QACd,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,YAAY,CAAA;KACpB,EAAE,CAAA;CACH,CAAC,CAAA;AAEF,eAAO,MAAM,wBAAwB,GACpC,OAAO,MAAM,EACb,cAAc,IAAI,EAAE,KAClB,cAAc,CAAC,kCAAkC,CAkBnD,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { getLists } from '../utils/lists';
|
|
2
|
+
import { callMailjet } from './request-service';
|
|
3
|
+
export const manageSubscriptionStatus = async (email, updatedLists) => {
|
|
4
|
+
const lists = await getLists();
|
|
5
|
+
const data = {
|
|
6
|
+
ContactsLists: updatedLists.map((item) => {
|
|
7
|
+
return {
|
|
8
|
+
Action: item.action,
|
|
9
|
+
ListID: lists[item.list],
|
|
10
|
+
};
|
|
11
|
+
}),
|
|
12
|
+
};
|
|
13
|
+
const result = await callMailjet(`/contact/${email}/managecontactslists`, data);
|
|
14
|
+
return result;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=manage-subscription-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage-subscription-status.js","sourceRoot":"","sources":["../../../src/mailjet/calls/manage-subscription-status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,WAAW,EAAqB,MAAM,mBAAmB,CAAA;AAclE,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC5C,KAAa,EACb,YAAoB,EACiC,EAAE;IACvD,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAA;IAE9B,MAAM,IAAI,GAAG;QACZ,aAAa,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACxC,OAAO;gBACN,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;aACxB,CAAA;QACF,CAAC,CAAC;KACF,CAAA;IAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAC/B,YAAY,KAAK,sBAAsB,EACvC,IAAI,CACJ,CAAA;IAED,OAAO,MAAM,CAAA;AACd,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type ResponseBase<T> = {
|
|
2
|
+
Count?: number;
|
|
3
|
+
Data?: T[];
|
|
4
|
+
Total?: number;
|
|
5
|
+
};
|
|
6
|
+
export declare const callMailjet: <T>(path: string, data: any, method?: string) => Promise<import("@driveflux/fetch").EnhandedFetchResult<T, import("@driveflux/problem").Problem>>;
|
|
7
|
+
//# sourceMappingURL=request-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-service.d.ts","sourceRoot":"","sources":["../../../src/mailjet/calls/request-service.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAgBD,eAAO,MAAM,WAAW,GAAU,CAAC,EAClC,MAAM,MAAM,EACZ,MAAM,GAAG,EACT,eAAe,qGAaf,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { config } from '@driveflux/email';
|
|
2
|
+
import { enhancedFetch } from '@driveflux/fetch';
|
|
3
|
+
const getAuth = () => {
|
|
4
|
+
const authData = {
|
|
5
|
+
publicKey: config.mailjet.apiKeyPublic || process.env.MAILJET_API_KEY_PUBLIC,
|
|
6
|
+
privateKey: config.mailjet.apiKeyPrivate || process.env.MAILJET_API_KEY_PRIVATE,
|
|
7
|
+
};
|
|
8
|
+
const authLine = `${authData.publicKey}:${authData.privateKey}`;
|
|
9
|
+
return `Basic ${Buffer.from(authLine).toString('base64')}`;
|
|
10
|
+
};
|
|
11
|
+
const baseUrl = 'https://api.mailjet.com/v3/REST';
|
|
12
|
+
export const callMailjet = async (path, data, method = 'POST') => {
|
|
13
|
+
const url = `${baseUrl}${path}`;
|
|
14
|
+
const result = await enhancedFetch(url, {
|
|
15
|
+
method,
|
|
16
|
+
headers: {
|
|
17
|
+
'Content-Type': 'application/json',
|
|
18
|
+
Authorization: getAuth(),
|
|
19
|
+
},
|
|
20
|
+
...(method !== 'GET' ? { body: JSON.stringify(data) } : {}),
|
|
21
|
+
});
|
|
22
|
+
return result;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=request-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-service.js","sourceRoot":"","sources":["../../../src/mailjet/calls/request-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAQhD,MAAM,OAAO,GAAG,GAAG,EAAE;IACpB,MAAM,QAAQ,GAAG;QAChB,SAAS,EACR,MAAM,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAClE,UAAU,EACT,MAAM,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB;KACpE,CAAA;IAED,MAAM,QAAQ,GAAG,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAA;IAC/D,OAAO,SAAS,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAA;AAC3D,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,iCAAiC,CAAA;AAEjD,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC/B,IAAY,EACZ,IAAS,EACT,MAAM,GAAG,MAAM,EACd,EAAE;IACH,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,IAAI,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAI,GAAG,EAAE;QAC1C,MAAM;QACN,OAAO,EAAE;YACR,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,OAAO,EAAE;SACxB;QACD,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3D,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACd,CAAC,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Prisma } from '@driveflux/db';
|
|
2
|
+
import { Err } from '@driveflux/result';
|
|
3
|
+
export type UserForRefreshEmailPreferences = Prisma.UserGetPayload<typeof userForRefreshEmailPreferencesQuery>;
|
|
4
|
+
declare const userForRefreshEmailPreferencesQuery: {
|
|
5
|
+
select: {
|
|
6
|
+
id: true;
|
|
7
|
+
emailPreferences: true;
|
|
8
|
+
businessId: true;
|
|
9
|
+
email: true;
|
|
10
|
+
subscriptions: {
|
|
11
|
+
select: {
|
|
12
|
+
ended: true;
|
|
13
|
+
active: true;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export declare const refreshEmailPreferences: (idOrUserForRefreshEmailPreferences: string | UserForRefreshEmailPreferences) => Promise<Err<import("@driveflux/problem").Problem, unknown> | (import("@driveflux/result").Ok<import("./calls/manage-subscription-status.js").MailjetManageContactsListsResponse, unknown> & {
|
|
19
|
+
map<T2>(mapper: (val: import("./calls/manage-subscription-status.js").MailjetManageContactsListsResponse) => T2): import("@driveflux/result").Result<T2, import("@driveflux/problem").Problem, unknown, unknown>;
|
|
20
|
+
mapErr<E2>(mapper: (val: import("@driveflux/problem").Problem) => E2): import("@driveflux/result").Result<import("./calls/manage-subscription-status.js").MailjetManageContactsListsResponse, E2, unknown, unknown>;
|
|
21
|
+
})>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=refresh-email-preferences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-email-preferences.d.ts","sourceRoot":"","sources":["../../src/mailjet/refresh-email-preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,eAAe,CAAA;AAE9C,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAMvC,MAAM,MAAM,8BAA8B,GAAG,MAAM,CAAC,cAAc,CACjE,OAAO,mCAAmC,CAC1C,CAAA;AAED,QAAA,MAAM,mCAAmC;;;;;;;;;;;;;CActC,CAAA;AAEH,eAAO,MAAM,uBAAuB,GACnC,oCAAoC,MAAM,GAAG,8BAA8B;;;GA6B3E,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Prisma, prisma } from '@driveflux/db';
|
|
2
|
+
import { makeProblem, PROBLEM_NOT_FOUND } from '@driveflux/problem';
|
|
3
|
+
import { Err } from '@driveflux/result';
|
|
4
|
+
import { manageSubscriptionStatus } from './calls/manage-subscription-status.js';
|
|
5
|
+
import { convertToArray } from './utils/convert-to-array.js';
|
|
6
|
+
import { extractUserEmailPreferences } from './utils/extract-email-preferences.js';
|
|
7
|
+
import { updateEmailPreferences } from './utils/update-email-references.js';
|
|
8
|
+
const userForRefreshEmailPreferencesQuery = Prisma.validator()({
|
|
9
|
+
select: {
|
|
10
|
+
id: true,
|
|
11
|
+
emailPreferences: true,
|
|
12
|
+
businessId: true,
|
|
13
|
+
email: true,
|
|
14
|
+
subscriptions: {
|
|
15
|
+
select: {
|
|
16
|
+
ended: true,
|
|
17
|
+
active: true,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
export const refreshEmailPreferences = async (idOrUserForRefreshEmailPreferences) => {
|
|
23
|
+
const user = typeof idOrUserForRefreshEmailPreferences === 'string'
|
|
24
|
+
? await prisma.user.findUnique({
|
|
25
|
+
where: { id: idOrUserForRefreshEmailPreferences },
|
|
26
|
+
...userForRefreshEmailPreferencesQuery,
|
|
27
|
+
})
|
|
28
|
+
: idOrUserForRefreshEmailPreferences;
|
|
29
|
+
if (!user) {
|
|
30
|
+
return new Err(makeProblem(PROBLEM_NOT_FOUND, 'User not found'));
|
|
31
|
+
}
|
|
32
|
+
const preferences = await extractUserEmailPreferences(user);
|
|
33
|
+
if (!preferences) {
|
|
34
|
+
return new Err(makeProblem(PROBLEM_NOT_FOUND, 'Preferences not found'));
|
|
35
|
+
}
|
|
36
|
+
const updated = await updateEmailPreferences(user, preferences);
|
|
37
|
+
if (!updated) {
|
|
38
|
+
return new Err(makeProblem(PROBLEM_NOT_FOUND, 'User not updated'));
|
|
39
|
+
}
|
|
40
|
+
const items = convertToArray(preferences, !!updated?.businessId);
|
|
41
|
+
return await manageSubscriptionStatus(user.email, items);
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=refresh-email-preferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-email-preferences.js","sourceRoot":"","sources":["../../src/mailjet/refresh-email-preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAA;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAA;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAA;AAM3E,MAAM,mCAAmC,GACxC,MAAM,CAAC,SAAS,EAA0B,CAAC;IAC1C,MAAM,EAAE;QACP,EAAE,EAAE,IAAI;QACR,gBAAgB,EAAE,IAAI;QACtB,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,IAAI;QACX,aAAa,EAAE;YACd,MAAM,EAAE;gBACP,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,IAAI;aACZ;SACD;KACD;CACD,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC3C,kCAA2E,EAC1E,EAAE;IACH,MAAM,IAAI,GACT,OAAO,kCAAkC,KAAK,QAAQ;QACrD,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7B,KAAK,EAAE,EAAE,EAAE,EAAE,kCAAkC,EAAE;YACjD,GAAG,mCAAmC;SACtC,CAAC;QACH,CAAC,CAAC,kCAAkC,CAAA;IAEtC,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,IAAI,GAAG,CAAC,WAAW,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC,CAAA;IACjE,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,2BAA2B,CAAC,IAAI,CAAC,CAAA;IAE3D,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,OAAO,IAAI,GAAG,CAAC,WAAW,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC,CAAA;IACxE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAE/D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,IAAI,GAAG,CAAC,WAAW,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,CAAA;IACnE,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IAEhE,OAAO,MAAM,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AACzD,CAAC,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Prisma } from '@driveflux/db';
|
|
2
|
+
import { Err, Ok } from '@driveflux/result';
|
|
3
|
+
import type { EmailPreferences } from './types';
|
|
4
|
+
export type UserForSetInContactListlPreferences = Prisma.UserGetPayload<typeof userForSetInContactListlPreferencesQuery>;
|
|
5
|
+
declare const userForSetInContactListlPreferencesQuery: {
|
|
6
|
+
select: {
|
|
7
|
+
id: true;
|
|
8
|
+
emailPreferences: true;
|
|
9
|
+
businessId: true;
|
|
10
|
+
email: true;
|
|
11
|
+
subscriptions: {
|
|
12
|
+
select: {
|
|
13
|
+
ended: true;
|
|
14
|
+
active: true;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare const setContactInList: (idOrUserForSetInContactListlPreferences: string | UserForSetInContactListlPreferences, preferences: EmailPreferences) => Promise<Err<import("@driveflux/problem").Problem, unknown> | Ok<string, unknown> | Ok<import("@driveflux/result").StandardResult<import("./calls/manage-subscription-status").MailjetManageContactsListsResponse, unknown, unknown>, unknown>>;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=set-contact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-contact.d.ts","sourceRoot":"","sources":["../../src/mailjet/set-contact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,eAAe,CAAA;AAE9C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAI/C,MAAM,MAAM,mCAAmC,GAAG,MAAM,CAAC,cAAc,CACtE,OAAO,wCAAwC,CAC/C,CAAA;AAED,QAAA,MAAM,wCAAwC;;;;;;;;;;;;;CAc3C,CAAA;AAEH,eAAO,MAAM,gBAAgB,GAC5B,yCACG,MAAM,GACN,mCAAmC,EACtC,aAAa,gBAAgB,mPAyB7B,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Prisma, prisma } from '@driveflux/db';
|
|
2
|
+
import { makeProblem, PROBLEM_NOT_FOUND } from '@driveflux/problem';
|
|
3
|
+
import { Err, Ok } from '@driveflux/result';
|
|
4
|
+
import { manageSubscriptionStatus } from './calls/manage-subscription-status';
|
|
5
|
+
import { convertToArray } from './utils/convert-to-array';
|
|
6
|
+
import { updateEmailPreferences } from './utils/update-email-references';
|
|
7
|
+
const userForSetInContactListlPreferencesQuery = Prisma.validator()({
|
|
8
|
+
select: {
|
|
9
|
+
id: true,
|
|
10
|
+
emailPreferences: true,
|
|
11
|
+
businessId: true,
|
|
12
|
+
email: true,
|
|
13
|
+
subscriptions: {
|
|
14
|
+
select: {
|
|
15
|
+
ended: true,
|
|
16
|
+
active: true,
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
export const setContactInList = async (idOrUserForSetInContactListlPreferences, preferences) => {
|
|
22
|
+
const user = typeof idOrUserForSetInContactListlPreferences === 'string'
|
|
23
|
+
? await prisma.user.findUnique({
|
|
24
|
+
where: { id: idOrUserForSetInContactListlPreferences },
|
|
25
|
+
...userForSetInContactListlPreferencesQuery,
|
|
26
|
+
})
|
|
27
|
+
: idOrUserForSetInContactListlPreferences;
|
|
28
|
+
if (!user) {
|
|
29
|
+
return new Err(makeProblem(PROBLEM_NOT_FOUND, 'User not found'));
|
|
30
|
+
}
|
|
31
|
+
const updated = await updateEmailPreferences(user, preferences);
|
|
32
|
+
if (!updated) {
|
|
33
|
+
return new Ok('No new lists were provided');
|
|
34
|
+
}
|
|
35
|
+
const items = convertToArray(preferences);
|
|
36
|
+
const results = await manageSubscriptionStatus(user.email, items);
|
|
37
|
+
return new Ok(results);
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=set-contact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-contact.js","sourceRoot":"","sources":["../../src/mailjet/set-contact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAA;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AAMxE,MAAM,wCAAwC,GAC7C,MAAM,CAAC,SAAS,EAA0B,CAAC;IAC1C,MAAM,EAAE;QACP,EAAE,EAAE,IAAI;QACR,gBAAgB,EAAE,IAAI;QACtB,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,IAAI;QACX,aAAa,EAAE;YACd,MAAM,EAAE;gBACP,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,IAAI;aACZ;SACD;KACD;CACD,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACpC,uCAEsC,EACtC,WAA6B,EAC5B,EAAE;IACH,MAAM,IAAI,GACT,OAAO,uCAAuC,KAAK,QAAQ;QAC1D,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7B,KAAK,EAAE,EAAE,EAAE,EAAE,uCAAuC,EAAE;YACtD,GAAG,wCAAwC;SAC3C,CAAC;QACH,CAAC,CAAC,uCAAuC,CAAA;IAE3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,IAAI,GAAG,CAAC,WAAW,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC,CAAA;IACjE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAE/D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,IAAI,EAAE,CAAC,4BAA4B,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAA;IAEzC,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAEjE,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,CAAA;AACvB,CAAC,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Subscription, User } from '@driveflux/db';
|
|
2
|
+
import type { ListName } from './utils/lists';
|
|
3
|
+
export type UserWithSubscription = User & {
|
|
4
|
+
subscriptions: Subscription[];
|
|
5
|
+
};
|
|
6
|
+
export type Contact = {
|
|
7
|
+
IsExcludedFromCampaigns: boolean;
|
|
8
|
+
Name: string;
|
|
9
|
+
CreatedAt: Date | string;
|
|
10
|
+
DeliveredCount: number;
|
|
11
|
+
Email: string;
|
|
12
|
+
ExclusionFromCampaignsUpdatedAt: Date | string;
|
|
13
|
+
ID: string;
|
|
14
|
+
IsOptInPending: number;
|
|
15
|
+
IsSpamComplaining: false;
|
|
16
|
+
LastActivityAt: Date | string;
|
|
17
|
+
LastUpdateAt: Date | string;
|
|
18
|
+
UnsubscribedAt: Date | string;
|
|
19
|
+
UnsubscribedBy: Date | string;
|
|
20
|
+
};
|
|
21
|
+
export type EmailPreferences = {
|
|
22
|
+
[key in ListName]?: boolean;
|
|
23
|
+
};
|
|
24
|
+
export type MailjetOptions = {
|
|
25
|
+
email: string;
|
|
26
|
+
list: ListName;
|
|
27
|
+
unsub?: boolean;
|
|
28
|
+
};
|
|
29
|
+
export type { ListName, MailjetLists } from './utils/lists';
|
|
30
|
+
export type StatusAction = 'addforce' | 'addnoforce' | 'remove' | 'unsub';
|
|
31
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mailjet/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG;IAAE,aAAa,EAAE,YAAY,EAAE,CAAA;CAAE,CAAA;AAE3E,MAAM,MAAM,OAAO,GAAG;IACrB,uBAAuB,EAAE,OAAO,CAAA;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,IAAI,GAAG,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,+BAA+B,EAAE,IAAI,GAAG,MAAM,CAAA;IAC9C,EAAE,EAAE,MAAM,CAAA;IACV,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,KAAK,CAAA;IACxB,cAAc,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B,YAAY,EAAE,IAAI,GAAG,MAAM,CAAA;IAC3B,cAAc,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B,cAAc,EAAE,IAAI,GAAG,MAAM,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;KAAG,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,OAAO;CAAE,CAAA;AAE9D,MAAM,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE3D,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mailjet/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { EmailPreferences } from '../types';
|
|
2
|
+
export declare const convertToArray: (preferences?: EmailPreferences, isBusiness?: boolean) => {
|
|
3
|
+
list: "generalMarketing" | "noActiveSubs" | "signUpOnly" | "signUpPaymentAdded" | "activeSub" | "expiredSub" | "activeSubBusiness" | "activeSubPersonal";
|
|
4
|
+
action: "addnoforce" | "unsub";
|
|
5
|
+
}[];
|
|
6
|
+
//# sourceMappingURL=convert-to-array.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-to-array.d.ts","sourceRoot":"","sources":["../../../src/mailjet/utils/convert-to-array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAA0B,MAAM,UAAU,CAAA;AAExE,eAAO,MAAM,cAAc,GAC1B,cAAc,gBAAgB,EAC9B,aAAa,OAAO;;;GA0BpB,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export const convertToArray = (preferences, isBusiness) => {
|
|
2
|
+
if (!preferences) {
|
|
3
|
+
return [];
|
|
4
|
+
}
|
|
5
|
+
const preferencesArray = Object.entries(preferences);
|
|
6
|
+
if (typeof isBusiness === 'boolean') {
|
|
7
|
+
preferencesArray.push([
|
|
8
|
+
'activeSubBusiness',
|
|
9
|
+
!!preferences?.activeSub && isBusiness,
|
|
10
|
+
]);
|
|
11
|
+
preferencesArray.push([
|
|
12
|
+
'activeSubPersonal',
|
|
13
|
+
!!preferences?.activeSub && !isBusiness,
|
|
14
|
+
]);
|
|
15
|
+
}
|
|
16
|
+
const items = preferencesArray.map(([key, value]) => {
|
|
17
|
+
const list = key;
|
|
18
|
+
const action = value ? 'addnoforce' : 'unsub';
|
|
19
|
+
return { list, action };
|
|
20
|
+
});
|
|
21
|
+
return items;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=convert-to-array.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-to-array.js","sourceRoot":"","sources":["../../../src/mailjet/utils/convert-to-array.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,CAC7B,WAA8B,EAC9B,UAAoB,EACnB,EAAE;IACH,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,OAAO,EAAE,CAAA;IACV,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAEpD,IAAI,OAAO,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,gBAAgB,CAAC,IAAI,CAAC;YACrB,mBAAmB;YACnB,CAAC,CAAC,WAAW,EAAE,SAAS,IAAI,UAAU;SACtC,CAAC,CAAA;QACF,gBAAgB,CAAC,IAAI,CAAC;YACrB,mBAAmB;YACnB,CAAC,CAAC,WAAW,EAAE,SAAS,IAAI,CAAC,UAAU;SACvC,CAAC,CAAA;IACH,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,GAAe,CAAA;QAC5B,MAAM,MAAM,GAAiB,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAA;QAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IACxB,CAAC,CAAC,CAAA;IAEF,OAAO,KAAK,CAAA;AACb,CAAC,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Prisma } from '@driveflux/db';
|
|
2
|
+
import type { EmailPreferences } from '../types';
|
|
3
|
+
export type UserForEmailPreferences = Prisma.UserGetPayload<typeof userForEmailPreferencesQuery>;
|
|
4
|
+
export declare const userForEmailPreferencesQuery: {
|
|
5
|
+
select: {
|
|
6
|
+
id: true;
|
|
7
|
+
emailPreferences: true;
|
|
8
|
+
subscriptions: {
|
|
9
|
+
select: {
|
|
10
|
+
ended: true;
|
|
11
|
+
active: true;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export declare const extractUserEmailPreferences: (idOrUserForEmailPreferences: string | UserForEmailPreferences) => Promise<EmailPreferences | undefined>;
|
|
17
|
+
//# sourceMappingURL=extract-email-preferences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-email-preferences.d.ts","sourceRoot":"","sources":["../../../src/mailjet/utils/extract-email-preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAY,MAAM,UAAU,CAAA;AAE1D,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,cAAc,CAC1D,OAAO,4BAA4B,CACnC,CAAA;AAED,eAAO,MAAM,4BAA4B;;;;;;;;;;;CAYtC,CAAA;AAEH,eAAO,MAAM,2BAA2B,GACvC,6BAA6B,MAAM,GAAG,uBAAuB,0CA8C7D,CAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Prisma, prisma } from '@driveflux/db';
|
|
2
|
+
export const userForEmailPreferencesQuery = Prisma.validator()({
|
|
3
|
+
select: {
|
|
4
|
+
id: true,
|
|
5
|
+
emailPreferences: true,
|
|
6
|
+
subscriptions: {
|
|
7
|
+
select: {
|
|
8
|
+
ended: true,
|
|
9
|
+
active: true,
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
export const extractUserEmailPreferences = async (idOrUserForEmailPreferences) => {
|
|
15
|
+
const user = typeof idOrUserForEmailPreferences === 'string'
|
|
16
|
+
? await prisma.user.findUnique({
|
|
17
|
+
where: { id: idOrUserForEmailPreferences },
|
|
18
|
+
...userForEmailPreferencesQuery,
|
|
19
|
+
})
|
|
20
|
+
: idOrUserForEmailPreferences;
|
|
21
|
+
if (!user?.emailPreferences?.generalMarketing) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
let list = 'signUpOnly';
|
|
25
|
+
const subscriptions = user?.subscriptions || [];
|
|
26
|
+
if (subscriptions.length > 0) {
|
|
27
|
+
list = 'noActiveSubs';
|
|
28
|
+
}
|
|
29
|
+
for (let i = 0; i < subscriptions.length; i++) {
|
|
30
|
+
if (subscriptions[i].ended) {
|
|
31
|
+
list = 'expiredSub';
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
for (let i = 0; i < subscriptions.length; i++) {
|
|
36
|
+
if (subscriptions[i].active && !subscriptions[i].ended) {
|
|
37
|
+
list = 'activeSub';
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const newList = {
|
|
42
|
+
noActiveSubs: false,
|
|
43
|
+
signUpOnly: false,
|
|
44
|
+
signUpPaymentAdded: false,
|
|
45
|
+
activeSub: false,
|
|
46
|
+
expiredSub: false,
|
|
47
|
+
[list]: true,
|
|
48
|
+
};
|
|
49
|
+
return newList;
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=extract-email-preferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-email-preferences.js","sourceRoot":"","sources":["../../../src/mailjet/utils/extract-email-preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAO9C,MAAM,CAAC,MAAM,4BAA4B,GACxC,MAAM,CAAC,SAAS,EAA0B,CAAC;IAC1C,MAAM,EAAE;QACP,EAAE,EAAE,IAAI;QACR,gBAAgB,EAAE,IAAI;QACtB,aAAa,EAAE;YACd,MAAM,EAAE;gBACP,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,IAAI;aACZ;SACD;KACD;CACD,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,EAC/C,2BAA6D,EAC5D,EAAE;IACH,MAAM,IAAI,GACT,OAAO,2BAA2B,KAAK,QAAQ;QAC9C,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7B,KAAK,EAAE,EAAE,EAAE,EAAE,2BAA2B,EAAE;YAC1C,GAAG,4BAA4B;SAC/B,CAAC;QACH,CAAC,CAAC,2BAA2B,CAAA;IAE/B,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;QAC/C,OAAM;IACP,CAAC;IAED,IAAI,IAAI,GAAa,YAAY,CAAA;IAEjC,MAAM,aAAa,GAAG,IAAI,EAAE,aAAa,IAAI,EAAE,CAAA;IAE/C,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,IAAI,GAAG,cAAc,CAAA;IACtB,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,GAAG,YAAY,CAAA;YACnB,MAAK;QACN,CAAC;IACF,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACxD,IAAI,GAAG,WAAW,CAAA;YAClB,MAAK;QACN,CAAC;IACF,CAAC;IAED,MAAM,OAAO,GAAqB;QACjC,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;QACjB,kBAAkB,EAAE,KAAK;QACzB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,KAAK;QACjB,CAAC,IAAI,CAAC,EAAE,IAAI;KACZ,CAAA;IAED,OAAO,OAAO,CAAA;AACf,CAAC,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type List = {
|
|
2
|
+
name: ListName;
|
|
3
|
+
id: string;
|
|
4
|
+
};
|
|
5
|
+
export type ListName = (typeof listsNames)[number];
|
|
6
|
+
export type MailjetLists = {
|
|
7
|
+
[key in ListName]?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const listsNames: readonly ["generalMarketing", "noActiveSubs", "signUpOnly", "signUpPaymentAdded", "activeSub", "expiredSub", "activeSubBusiness", "activeSubPersonal"];
|
|
10
|
+
export declare const getLists: () => Promise<MailjetLists>;
|
|
11
|
+
export declare const getListByRef: (ref: string | number) => Promise<List | undefined>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=lists.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lists.d.ts","sourceRoot":"","sources":["../../../src/mailjet/utils/lists.ts"],"names":[],"mappings":"AAEA,KAAK,IAAI,GAAG;IACX,IAAI,EAAE,QAAQ,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;CACV,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;AAElD,MAAM,MAAM,YAAY,GAAG;KAAG,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,MAAM;CAAE,CAAA;AAEzD,eAAO,MAAM,UAAU,wJASb,CAAA;AAEV,eAAO,MAAM,QAAQ,6BAapB,CAAA;AAED,eAAO,MAAM,YAAY,GAAU,KAAK,MAAM,GAAG,MAAM,8BAoBtD,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { prisma } from '@driveflux/db';
|
|
2
|
+
export const listsNames = [
|
|
3
|
+
'generalMarketing',
|
|
4
|
+
'noActiveSubs',
|
|
5
|
+
'signUpOnly',
|
|
6
|
+
'signUpPaymentAdded',
|
|
7
|
+
'activeSub',
|
|
8
|
+
'expiredSub',
|
|
9
|
+
'activeSubBusiness',
|
|
10
|
+
'activeSubPersonal',
|
|
11
|
+
];
|
|
12
|
+
export const getLists = async () => {
|
|
13
|
+
const listObject = await prisma.platformConfig.findFirst({
|
|
14
|
+
where: {
|
|
15
|
+
key: 'mailjetLists',
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
if (listObject?.value) {
|
|
19
|
+
const lists = JSON.parse(listObject.value);
|
|
20
|
+
return lists;
|
|
21
|
+
}
|
|
22
|
+
return {};
|
|
23
|
+
};
|
|
24
|
+
export const getListByRef = async (ref) => {
|
|
25
|
+
const lists = await getLists();
|
|
26
|
+
let list;
|
|
27
|
+
for (const [name, id] of Object.entries(lists)) {
|
|
28
|
+
if (name === ref || id === ref) {
|
|
29
|
+
list = {
|
|
30
|
+
name: name,
|
|
31
|
+
id,
|
|
32
|
+
};
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (!list) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
return list;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=lists.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lists.js","sourceRoot":"","sources":["../../../src/mailjet/utils/lists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAWtC,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,kBAAkB;IAClB,cAAc;IACd,YAAY;IACZ,oBAAoB;IACpB,WAAW;IACX,YAAY;IACZ,mBAAmB;IACnB,mBAAmB;CACV,CAAA;AAEV,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;IAClC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC;QACxD,KAAK,EAAE;YACN,GAAG,EAAE,cAAc;SACnB;KACD,CAAC,CAAA;IAEF,IAAI,UAAU,EAAE,KAAK,EAAE,CAAC;QACvB,MAAM,KAAK,GAAiB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAe,CAAC,CAAA;QAClE,OAAO,KAAK,CAAA;IACb,CAAC;IAED,OAAO,EAAE,CAAA;AACV,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,GAAoB,EAAE,EAAE;IAC1D,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAA;IAE9B,IAAI,IAAsB,CAAA;IAE1B,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,IAAI,IAAI,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAChC,IAAI,GAAG;gBACN,IAAI,EAAE,IAA0B;gBAChC,EAAE;aACF,CAAA;YACD,MAAK;QACN,CAAC;IACF,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,SAAS,CAAA;IACjB,CAAC;IAED,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { EmailPreferences } from '../types';
|
|
2
|
+
import { type UserForEmailPreferences } from './extract-email-preferences';
|
|
3
|
+
export declare const updateEmailPreferences: <U extends string | UserForEmailPreferences>(idOrUserForEmailPreferences: U, preferences: EmailPreferences) => Promise<(U extends string ? UserForEmailPreferences : U) | null>;
|
|
4
|
+
//# sourceMappingURL=update-email-references.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-email-references.d.ts","sourceRoot":"","sources":["../../../src/mailjet/utils/update-email-references.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EACN,KAAK,uBAAuB,EAE5B,MAAM,6BAA6B,CAAA;AAEpC,eAAO,MAAM,sBAAsB,GAClC,CAAC,SAAS,MAAM,GAAG,uBAAuB,EAE1C,6BAA6B,CAAC,EAC9B,aAAa,gBAAgB,KAC3B,OAAO,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,uBAAuB,GAAG,CAAC,CAAC,GAAG,IAAI,CA+BjE,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { prisma } from '@driveflux/db';
|
|
2
|
+
import { userForEmailPreferencesQuery, } from './extract-email-preferences';
|
|
3
|
+
export const updateEmailPreferences = async (idOrUserForEmailPreferences, preferences) => {
|
|
4
|
+
const user = typeof idOrUserForEmailPreferences === 'string'
|
|
5
|
+
? await prisma.user.findUnique({
|
|
6
|
+
where: { id: idOrUserForEmailPreferences },
|
|
7
|
+
...userForEmailPreferencesQuery,
|
|
8
|
+
})
|
|
9
|
+
: idOrUserForEmailPreferences;
|
|
10
|
+
if (!user) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const merged = {
|
|
14
|
+
...user.emailPreferences,
|
|
15
|
+
...preferences,
|
|
16
|
+
};
|
|
17
|
+
const updated = await prisma.user.update({
|
|
18
|
+
where: { id: user.id },
|
|
19
|
+
data: {
|
|
20
|
+
emailPreferences: {
|
|
21
|
+
upsert: {
|
|
22
|
+
set: merged,
|
|
23
|
+
update: merged,
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
...userForEmailPreferencesQuery,
|
|
28
|
+
});
|
|
29
|
+
return updated;
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=update-email-references.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-email-references.js","sourceRoot":"","sources":["../../../src/mailjet/utils/update-email-references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC,OAAO,EAEN,4BAA4B,GAC5B,MAAM,6BAA6B,CAAA;AAEpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAG1C,2BAA8B,EAC9B,WAA6B,EACsC,EAAE;IACrE,MAAM,IAAI,GACT,OAAO,2BAA2B,KAAK,QAAQ;QAC9C,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7B,KAAK,EAAE,EAAE,EAAE,EAAE,2BAA2B,EAAE;YAC1C,GAAG,4BAA4B;SAC/B,CAAC;QACH,CAAC,CAAE,2BAAuD,CAAA;IAE5D,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,MAAM,GAAG;QACd,GAAG,IAAI,CAAC,gBAAgB;QACxB,GAAG,WAAW;KACd,CAAA;IACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACxC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;QACtB,IAAI,EAAE;YACL,gBAAgB,EAAE;gBACjB,MAAM,EAAE;oBACP,GAAG,EAAE,MAAM;oBACX,MAAM,EAAE,MAAM;iBACd;aACD;SACD;QACD,GAAG,4BAA4B;KAC/B,CAAC,CAAA;IAEF,OAAO,OAAyD,CAAA;AACjE,CAAC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Client } from '@notionhq/client';
|
|
2
|
+
import type { PageObjectResponse } from '@notionhq/client/build/src/api-endpoints';
|
|
3
|
+
type Property = 'Birthday' | 'Join Date';
|
|
4
|
+
export declare const getNotion: () => Client;
|
|
5
|
+
export declare const announceFluxstersAnniversaries: (property: Property, constructMessage: (people: PageObjectResponse[]) => string) => Promise<{
|
|
6
|
+
counts: number;
|
|
7
|
+
message?: string;
|
|
8
|
+
}>;
|
|
9
|
+
export declare const getNameFrom: (person: PageObjectResponse) => string;
|
|
10
|
+
export declare const calculateYears: (person: PageObjectResponse, property: Property) => number;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/notion/client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAA;AAElF,KAAK,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAA;AAExC,eAAO,MAAM,SAAS,cAQrB,CAAA;AAED,eAAO,MAAM,8BAA8B,GAC1C,UAAU,QAAQ,EAClB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,MAAM,KACxD,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CA+C9C,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,QAAQ,kBAAkB,WAOrD,CAAA;AAED,eAAO,MAAM,cAAc,GAC1B,QAAQ,kBAAkB,EAC1B,UAAU,QAAQ,KAChB,MASF,CAAA"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { slackLater } from '@driveflux/api-functions/slack';
|
|
2
|
+
import { config } from '@driveflux/config/backend';
|
|
3
|
+
import { initSingleton } from '@driveflux/singleton';
|
|
4
|
+
import { Client } from '@notionhq/client';
|
|
5
|
+
export const getNotion = () => {
|
|
6
|
+
return initSingleton('notionClient', () => new Client({
|
|
7
|
+
auth: config.notion.secret,
|
|
8
|
+
}));
|
|
9
|
+
};
|
|
10
|
+
export const announceFluxstersAnniversaries = async (property, constructMessage) => {
|
|
11
|
+
if (!config.notion.fluxstersDatabaseId) {
|
|
12
|
+
return { counts: -1, message: 'No fluxsters database id configured' };
|
|
13
|
+
}
|
|
14
|
+
const notion = getNotion();
|
|
15
|
+
const { results } = await notion.databases.query({
|
|
16
|
+
database_id: config.notion.fluxstersDatabaseId,
|
|
17
|
+
});
|
|
18
|
+
const relevantPeople = results.filter((result) => {
|
|
19
|
+
const resultPropperty = result.properties[property];
|
|
20
|
+
if (resultPropperty.type !== 'date' || !resultPropperty.date?.start) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
if (calculateYears(result, property) < 1) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
const date = new Date(resultPropperty.date.start);
|
|
27
|
+
const todayDate = new Date();
|
|
28
|
+
if (todayDate.getDate() === date.getDate() &&
|
|
29
|
+
todayDate.getMonth() === date.getMonth()) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
// leap year
|
|
33
|
+
if (todayDate.getDate() === 28 &&
|
|
34
|
+
date.getDate() === 29 &&
|
|
35
|
+
todayDate.getMonth() === 1 &&
|
|
36
|
+
date.getMonth() === 1) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
if (relevantPeople.length > 0) {
|
|
41
|
+
const message = constructMessage(relevantPeople);
|
|
42
|
+
slackLater(message, config.slack.mainFluxChannel);
|
|
43
|
+
return { counts: relevantPeople.length, message };
|
|
44
|
+
}
|
|
45
|
+
return { counts: relevantPeople.length };
|
|
46
|
+
};
|
|
47
|
+
export const getNameFrom = (person) => {
|
|
48
|
+
const nameProperty = person.properties.Name;
|
|
49
|
+
if (nameProperty.type !== 'title') {
|
|
50
|
+
return '';
|
|
51
|
+
}
|
|
52
|
+
return nameProperty.title[0].plain_text;
|
|
53
|
+
};
|
|
54
|
+
export const calculateYears = (person, property) => {
|
|
55
|
+
const joinedDateProperty = person.properties[property];
|
|
56
|
+
if (joinedDateProperty.type !== 'date' || !joinedDateProperty.date?.start) {
|
|
57
|
+
return 0;
|
|
58
|
+
}
|
|
59
|
+
const today = new Date();
|
|
60
|
+
const joinedDate = new Date(joinedDateProperty.date?.start);
|
|
61
|
+
return today.getFullYear() - joinedDate.getFullYear();
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=client.js.map
|