@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.
Files changed (174) hide show
  1. package/dist/auth/confirm.d.ts +33 -0
  2. package/dist/auth/confirm.d.ts.map +1 -0
  3. package/dist/auth/confirm.js +88 -0
  4. package/dist/auth/confirm.js.map +1 -0
  5. package/dist/auth/emails.d.ts +4 -0
  6. package/dist/auth/emails.d.ts.map +1 -0
  7. package/dist/auth/emails.js +51 -0
  8. package/dist/auth/emails.js.map +1 -0
  9. package/dist/auth/formatter.d.ts +2 -0
  10. package/dist/auth/formatter.d.ts.map +1 -0
  11. package/dist/auth/formatter.js +249 -0
  12. package/dist/auth/formatter.js.map +1 -0
  13. package/dist/auth/otp.d.ts +44 -0
  14. package/dist/auth/otp.d.ts.map +1 -0
  15. package/dist/auth/otp.js +154 -0
  16. package/dist/auth/otp.js.map +1 -0
  17. package/dist/auth/register.d.ts +31 -0
  18. package/dist/auth/register.d.ts.map +1 -0
  19. package/dist/auth/register.js +128 -0
  20. package/dist/auth/register.js.map +1 -0
  21. package/dist/auth/tokens.d.ts +62 -0
  22. package/dist/auth/tokens.d.ts.map +1 -0
  23. package/dist/auth/tokens.js +129 -0
  24. package/dist/auth/tokens.js.map +1 -0
  25. package/dist/auth/verifications.d.ts +28 -0
  26. package/dist/auth/verifications.d.ts.map +1 -0
  27. package/dist/auth/verifications.js +174 -0
  28. package/dist/auth/verifications.js.map +1 -0
  29. package/dist/constants.d.ts +5 -0
  30. package/dist/constants.d.ts.map +1 -0
  31. package/dist/constants.js +5 -0
  32. package/dist/constants.js.map +1 -0
  33. package/dist/global.d.js +1 -0
  34. package/dist/mailjet/calls/manage-contacts-in-list.d.ts +21 -0
  35. package/dist/mailjet/calls/manage-contacts-in-list.d.ts.map +1 -0
  36. package/dist/mailjet/calls/manage-contacts-in-list.js +28 -0
  37. package/dist/mailjet/calls/manage-contacts-in-list.js.map +1 -0
  38. package/dist/mailjet/calls/manage-subscription-status.d.ts +15 -0
  39. package/dist/mailjet/calls/manage-subscription-status.d.ts.map +1 -0
  40. package/dist/mailjet/calls/manage-subscription-status.js +16 -0
  41. package/dist/mailjet/calls/manage-subscription-status.js.map +1 -0
  42. package/dist/mailjet/calls/request-service.d.ts +7 -0
  43. package/dist/mailjet/calls/request-service.d.ts.map +1 -0
  44. package/dist/mailjet/calls/request-service.js +24 -0
  45. package/dist/mailjet/calls/request-service.js.map +1 -0
  46. package/dist/mailjet/refresh-email-preferences.d.ts +23 -0
  47. package/dist/mailjet/refresh-email-preferences.d.ts.map +1 -0
  48. package/dist/mailjet/refresh-email-preferences.js +43 -0
  49. package/dist/mailjet/refresh-email-preferences.js.map +1 -0
  50. package/dist/mailjet/set-contact.d.ts +21 -0
  51. package/dist/mailjet/set-contact.d.ts.map +1 -0
  52. package/dist/mailjet/set-contact.js +39 -0
  53. package/dist/mailjet/set-contact.js.map +1 -0
  54. package/dist/mailjet/types.d.ts +31 -0
  55. package/dist/mailjet/types.d.ts.map +1 -0
  56. package/dist/mailjet/types.js +2 -0
  57. package/dist/mailjet/types.js.map +1 -0
  58. package/dist/mailjet/utils/convert-to-array.d.ts +6 -0
  59. package/dist/mailjet/utils/convert-to-array.d.ts.map +1 -0
  60. package/dist/mailjet/utils/convert-to-array.js +23 -0
  61. package/dist/mailjet/utils/convert-to-array.js.map +1 -0
  62. package/dist/mailjet/utils/extract-email-preferences.d.ts +17 -0
  63. package/dist/mailjet/utils/extract-email-preferences.d.ts.map +1 -0
  64. package/dist/mailjet/utils/extract-email-preferences.js +51 -0
  65. package/dist/mailjet/utils/extract-email-preferences.js.map +1 -0
  66. package/dist/mailjet/utils/lists.d.ts +13 -0
  67. package/dist/mailjet/utils/lists.d.ts.map +1 -0
  68. package/dist/mailjet/utils/lists.js +41 -0
  69. package/dist/mailjet/utils/lists.js.map +1 -0
  70. package/dist/mailjet/utils/update-email-references.d.ts +4 -0
  71. package/dist/mailjet/utils/update-email-references.d.ts.map +1 -0
  72. package/dist/mailjet/utils/update-email-references.js +31 -0
  73. package/dist/mailjet/utils/update-email-references.js.map +1 -0
  74. package/dist/notion/client.d.ts +12 -0
  75. package/dist/notion/client.d.ts.map +1 -0
  76. package/dist/notion/client.js +63 -0
  77. package/dist/notion/client.js.map +1 -0
  78. package/dist/notion/helpful.d.ts +7 -0
  79. package/dist/notion/helpful.d.ts.map +1 -0
  80. package/dist/notion/helpful.js +32 -0
  81. package/dist/notion/helpful.js.map +1 -0
  82. package/dist/notion/schemas/block.d.ts +89 -0
  83. package/dist/notion/schemas/block.d.ts.map +1 -0
  84. package/dist/notion/schemas/block.js +89 -0
  85. package/dist/notion/schemas/block.js.map +1 -0
  86. package/dist/notion/schemas/common.d.ts +25 -0
  87. package/dist/notion/schemas/common.d.ts.map +1 -0
  88. package/dist/notion/schemas/common.js +31 -0
  89. package/dist/notion/schemas/common.js.map +1 -0
  90. package/dist/notion/schemas/database.d.ts +517 -0
  91. package/dist/notion/schemas/database.d.ts.map +1 -0
  92. package/dist/notion/schemas/database.js +222 -0
  93. package/dist/notion/schemas/database.js.map +1 -0
  94. package/dist/notion/schemas/emoji.d.ts +12 -0
  95. package/dist/notion/schemas/emoji.d.ts.map +1 -0
  96. package/dist/notion/schemas/emoji.js +6 -0
  97. package/dist/notion/schemas/emoji.js.map +1 -0
  98. package/dist/notion/schemas/file.d.ts +43 -0
  99. package/dist/notion/schemas/file.d.ts.map +1 -0
  100. package/dist/notion/schemas/file.js +18 -0
  101. package/dist/notion/schemas/file.js.map +1 -0
  102. package/dist/notion/schemas/kb.d.ts +1526 -0
  103. package/dist/notion/schemas/kb.d.ts.map +1 -0
  104. package/dist/notion/schemas/kb.js +74 -0
  105. package/dist/notion/schemas/kb.js.map +1 -0
  106. package/dist/notion/schemas/page.d.ts +608 -0
  107. package/dist/notion/schemas/page.d.ts.map +1 -0
  108. package/dist/notion/schemas/page.js +181 -0
  109. package/dist/notion/schemas/page.js.map +1 -0
  110. package/dist/notion/schemas/parent.d.ts +42 -0
  111. package/dist/notion/schemas/parent.d.ts.map +1 -0
  112. package/dist/notion/schemas/parent.js +18 -0
  113. package/dist/notion/schemas/parent.js.map +1 -0
  114. package/dist/notion/schemas/user.d.ts +83 -0
  115. package/dist/notion/schemas/user.d.ts.map +1 -0
  116. package/dist/notion/schemas/user.js +31 -0
  117. package/dist/notion/schemas/user.js.map +1 -0
  118. package/dist/reservation/agree.d.ts +3 -0
  119. package/dist/reservation/agree.d.ts.map +1 -0
  120. package/dist/reservation/agree.js +23 -0
  121. package/dist/reservation/agree.js.map +1 -0
  122. package/dist/reservation/checks.d.ts +8 -0
  123. package/dist/reservation/checks.d.ts.map +1 -0
  124. package/dist/reservation/checks.js +28 -0
  125. package/dist/reservation/checks.js.map +1 -0
  126. package/dist/reservation/display-vehicle.d.ts +1152 -0
  127. package/dist/reservation/display-vehicle.d.ts.map +1 -0
  128. package/dist/reservation/display-vehicle.js +244 -0
  129. package/dist/reservation/display-vehicle.js.map +1 -0
  130. package/dist/reservation/fetch-or-create.d.ts +11 -0
  131. package/dist/reservation/fetch-or-create.d.ts.map +1 -0
  132. package/dist/reservation/fetch-or-create.js +207 -0
  133. package/dist/reservation/fetch-or-create.js.map +1 -0
  134. package/dist/reservation/invoice.d.ts +12 -0
  135. package/dist/reservation/invoice.d.ts.map +1 -0
  136. package/dist/reservation/invoice.js +248 -0
  137. package/dist/reservation/invoice.js.map +1 -0
  138. package/dist/reservation/payer.d.ts +5 -0
  139. package/dist/reservation/payer.d.ts.map +1 -0
  140. package/dist/reservation/payer.js +38 -0
  141. package/dist/reservation/payer.js.map +1 -0
  142. package/dist/reservation/reserve.d.ts +5 -0
  143. package/dist/reservation/reserve.d.ts.map +1 -0
  144. package/dist/reservation/reserve.js +44 -0
  145. package/dist/reservation/reserve.js.map +1 -0
  146. package/dist/reservation/types.d.ts +28 -0
  147. package/dist/reservation/types.d.ts.map +1 -0
  148. package/dist/reservation/types.js +2 -0
  149. package/dist/reservation/types.js.map +1 -0
  150. package/dist/reservation/vehicle.d.ts +6 -0
  151. package/dist/reservation/vehicle.d.ts.map +1 -0
  152. package/dist/reservation/vehicle.js +32 -0
  153. package/dist/reservation/vehicle.js.map +1 -0
  154. package/dist/slack.d.ts +19 -0
  155. package/dist/slack.d.ts.map +1 -0
  156. package/dist/slack.js +105 -0
  157. package/dist/slack.js.map +1 -0
  158. package/dist/validation.d.ts +63 -0
  159. package/dist/validation.d.ts.map +1 -0
  160. package/dist/validation.js +99 -0
  161. package/dist/validation.js.map +1 -0
  162. package/dist/vehicle/vehicle-pricing/constants.d.ts +91 -0
  163. package/dist/vehicle/vehicle-pricing/constants.d.ts.map +1 -0
  164. package/dist/vehicle/vehicle-pricing/constants.js +142 -0
  165. package/dist/vehicle/vehicle-pricing/constants.js.map +1 -0
  166. package/dist/vehicle/vehicle-pricing/index.d.ts +79 -0
  167. package/dist/vehicle/vehicle-pricing/index.d.ts.map +1 -0
  168. package/dist/vehicle/vehicle-pricing/index.js +169 -0
  169. package/dist/vehicle/vehicle-pricing/index.js.map +1 -0
  170. package/dist/vehicle/vehicle-pricing/types.d.ts +43 -0
  171. package/dist/vehicle/vehicle-pricing/types.d.ts.map +1 -0
  172. package/dist/vehicle/vehicle-pricing/types.js +2 -0
  173. package/dist/vehicle/vehicle-pricing/types.js.map +1 -0
  174. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -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