@saasquatch/program-boilerplate 3.10.1-3 → 3.10.1-5

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/queries.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export declare const rewardEmailQuery = "\n query ($userId:String!, $accountId:String!, $rewardId:ID!, $programId:ID!, $referralId: ID!) {\n reward(id:$rewardId) {\n ...AllFlatRewardFields\n }\n user(id:$userId, accountId:$accountId) {\n firstName\n lastName\n customFields\n referralCode(programId:$programId)\n shareLink(programId:$programId,useCleanLink:true)\n facebook: messageLink(programId:$programId,shareMedium:FACEBOOK,engagementMedium:EMAIL)\n twitter: messageLink(programId:$programId,shareMedium:TWITTER,engagementMedium:EMAIL)\n email:messageLink(programId:$programId,shareMedium:EMAIL,engagementMedium:EMAIL)\n sms:messageLink(programId:$programId,shareMedium:SMS,engagementMedium:EMAIL)\n linkedin: messageLink(programId:$programId,shareMedium:LINKEDIN,engagementMedium:EMAIL)\n fbmessenger: messageLink(programId:$programId,shareMedium:FBMESSENGER,engagementMedium:EMAIL)\n }\n\n program(id: $programId) {\n sharing {\n redirectUrl {\n url\n }\n }\n }\n\n referral(id:$referralId) {\n referrerUser{\n firstName\n lastName\n email\n customFields\n }\n referredUser{\n firstName\n lastName\n email\n customFields\n }\n }\n\n tenant {\n emailAddress\n settings {\n companyName\n }\n }\n }\n\n fragment AllFlatRewardFields on FlatReward {\n type\n prettyValue\n value\n unit\n name\n dateGiven\n dateExpires\n dateCancelled\n rewardSource\n fuelTankCode\n fuelTankType\n currency\n programId\n programRewardKey\n }\n";
2
- export declare const nonRewardEmailQueryForReferralPrograms = "query ($userId:String!, $accountId:String!,$programId:ID!, $referralId: ID!) {\n user(id:$userId, accountId:$accountId) {\n firstName\n lastName\n customFields\n referralCode(programId:$programId)\n shareLink(programId:$programId,useCleanLink:true)\n facebook: messageLink(programId:$programId,shareMedium:FACEBOOK)\n twitter: messageLink(programId:$programId,shareMedium:TWITTER)\n email:messageLink(programId:$programId,shareMedium:EMAIL)\n sms:messageLink(programId:$programId,shareMedium:SMS)\n linkedin: messageLink(programId:$programId,shareMedium:LINKEDIN)\n fbmessenger: messageLink(programId:$programId,shareMedium:FBMESSENGER)\n }\n\n referral(id:$referralId) {\n referrerUser{\n firstName\n lastName\n email\n customFields\n }\n referredUser{\n firstName\n lastName\n email\n customFields\n }\n }\n\n program(id: $programId) {\n sharing {\n redirectUrl {\n url\n }\n }\n }\n\n tenant {\n emailAddress\n settings {\n companyName\n }\n }\n}\n";
1
+ export declare const rewardEmailQuery = "\n query ($userId:String!, $accountId:String!, $rewardId:ID!, $programId:ID!, $referralId: ID!, $eventId: ID, $fetchEvent: Boolean!) {\n reward(id:$rewardId) {\n ...AllFlatRewardFields\n }\n user(id:$userId, accountId:$accountId) {\n firstName\n lastName\n customFields\n referralCode(programId:$programId)\n shareLink(programId:$programId,useCleanLink:true)\n facebook: messageLink(programId:$programId,shareMedium:FACEBOOK,engagementMedium:EMAIL)\n twitter: messageLink(programId:$programId,shareMedium:TWITTER,engagementMedium:EMAIL)\n email:messageLink(programId:$programId,shareMedium:EMAIL,engagementMedium:EMAIL)\n sms:messageLink(programId:$programId,shareMedium:SMS,engagementMedium:EMAIL)\n linkedin: messageLink(programId:$programId,shareMedium:LINKEDIN,engagementMedium:EMAIL)\n fbmessenger: messageLink(programId:$programId,shareMedium:FBMESSENGER,engagementMedium:EMAIL)\n }\n\n program(id: $programId) {\n sharing {\n redirectUrl {\n url\n }\n }\n }\n\n userEvents(filter: {id_eq: $eventId}) @include(if: $fetchEvent) {\n data {\n id\n dateReceived\n dateTriggered\n dateProcessed\n fields\n }\n }\n\n referral(id:$referralId) {\n referrerUser{\n firstName\n lastName\n email\n customFields\n }\n referredUser{\n firstName\n lastName\n email\n customFields\n }\n }\n\n tenant {\n emailAddress\n settings {\n companyName\n }\n }\n }\n\n fragment AllFlatRewardFields on FlatReward {\n type\n prettyValue\n value\n unit\n name\n dateGiven\n dateExpires\n dateCancelled\n rewardSource\n fuelTankCode\n fuelTankType\n currency\n programId\n programRewardKey\n }\n";
2
+ export declare const nonRewardEmailQueryForReferralPrograms = "query ($userId:String!, $accountId:String!,$programId:ID!, $referralId: ID!, $eventId: ID, $fetchEvent: Boolean!) {\n user(id:$userId, accountId:$accountId) {\n firstName\n lastName\n customFields\n referralCode(programId:$programId)\n shareLink(programId:$programId,useCleanLink:true)\n facebook: messageLink(programId:$programId,shareMedium:FACEBOOK)\n twitter: messageLink(programId:$programId,shareMedium:TWITTER)\n email:messageLink(programId:$programId,shareMedium:EMAIL)\n sms:messageLink(programId:$programId,shareMedium:SMS)\n linkedin: messageLink(programId:$programId,shareMedium:LINKEDIN)\n fbmessenger: messageLink(programId:$programId,shareMedium:FBMESSENGER)\n }\n\n userEvents(filter: {id_eq: $eventId}) @include(if: $fetchEvent) {\n data {\n id\n dateReceived\n dateTriggered\n dateProcessed\n fields\n }\n }\n\n referral(id:$referralId) {\n referrerUser{\n firstName\n lastName\n email\n customFields\n }\n referredUser{\n firstName\n lastName\n email\n customFields\n }\n }\n\n program(id: $programId) {\n sharing {\n redirectUrl {\n url\n }\n }\n }\n\n tenant {\n emailAddress\n settings {\n companyName\n }\n }\n}\n";
3
3
  export declare const rewardEmailQueryForNonReferralPrograms = "\n query ($userId:String!, $accountId:String!, $rewardId:ID!, $programId:ID!) {\n reward(id:$rewardId) {\n ...AllFlatRewardFields\n }\n user(id:$userId, accountId:$accountId) {\n firstName\n lastName\n customFields\n email:messageLink(programId:$programId,shareMedium:EMAIL)\n }\n\n program(id: $programId) {\n sharing {\n redirectUrl {\n url\n }\n }\n }\n\n tenant {\n emailAddress\n settings {\n companyName\n }\n }\n }\n\n fragment AllFlatRewardFields on FlatReward {\n type\n prettyValue\n value\n unit\n name\n dateGiven\n dateExpires\n dateCancelled\n rewardSource\n fuelTankCode\n fuelTankType\n currency\n programId\n programRewardKey\n }\n";
4
4
  export declare const nonRewardEmailQueryForNonReferralPrograms = "\n query ($userId:String!, $accountId:String!, $programId:ID!) {\n user(id:$userId, accountId:$accountId) {\n firstName\n lastName\n customFields\n email:messageLink(programId:$programId,shareMedium:EMAIL)\n }\n\n program(id: $programId) {\n sharing {\n redirectUrl {\n url\n }\n }\n }\n\n tenant {\n emailAddress\n settings {\n companyName\n }\n }\n }\n";
5
5
  export declare const rewardScheduleQuery: (emailKey: string) => string;
package/dist/queries.js CHANGED
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.rewardScheduleQuery = exports.nonRewardEmailQueryForNonReferralPrograms = exports.rewardEmailQueryForNonReferralPrograms = exports.nonRewardEmailQueryForReferralPrograms = exports.rewardEmailQuery = void 0;
4
4
  exports.rewardEmailQuery = `
5
- query ($userId:String!, $accountId:String!, $rewardId:ID!, $programId:ID!, $referralId: ID!) {
5
+ query ($userId:String!, $accountId:String!, $rewardId:ID!, $programId:ID!, $referralId: ID!, $eventId: ID, $fetchEvent: Boolean!) {
6
6
  reward(id:$rewardId) {
7
7
  ...AllFlatRewardFields
8
8
  }
@@ -28,6 +28,16 @@ exports.rewardEmailQuery = `
28
28
  }
29
29
  }
30
30
 
31
+ userEvents(filter: {id_eq: $eventId}) @include(if: $fetchEvent) {
32
+ data {
33
+ id
34
+ dateReceived
35
+ dateTriggered
36
+ dateProcessed
37
+ fields
38
+ }
39
+ }
40
+
31
41
  referral(id:$referralId) {
32
42
  referrerUser{
33
43
  firstName
@@ -68,7 +78,7 @@ exports.rewardEmailQuery = `
68
78
  programRewardKey
69
79
  }
70
80
  `;
71
- exports.nonRewardEmailQueryForReferralPrograms = `query ($userId:String!, $accountId:String!,$programId:ID!, $referralId: ID!) {
81
+ exports.nonRewardEmailQueryForReferralPrograms = `query ($userId:String!, $accountId:String!,$programId:ID!, $referralId: ID!, $eventId: ID, $fetchEvent: Boolean!) {
72
82
  user(id:$userId, accountId:$accountId) {
73
83
  firstName
74
84
  lastName
@@ -83,6 +93,16 @@ exports.nonRewardEmailQueryForReferralPrograms = `query ($userId:String!, $accou
83
93
  fbmessenger: messageLink(programId:$programId,shareMedium:FBMESSENGER)
84
94
  }
85
95
 
96
+ userEvents(filter: {id_eq: $eventId}) @include(if: $fetchEvent) {
97
+ data {
98
+ id
99
+ dateReceived
100
+ dateTriggered
101
+ dateProcessed
102
+ fields
103
+ }
104
+ }
105
+
86
106
  referral(id:$referralId) {
87
107
  referrerUser{
88
108
  firstName
@@ -87,11 +87,12 @@ export default class Transaction {
87
87
  user: User;
88
88
  rewardId?: string;
89
89
  }): void;
90
- generateReferralEmail({ emailKey, user, referralId, rewardId, }: {
90
+ generateReferralEmail({ emailKey, user, referralId, rewardId, eventId, }: {
91
91
  emailKey: string;
92
92
  user: User;
93
93
  referralId: string;
94
94
  rewardId?: string;
95
+ eventId?: string;
95
96
  }): void;
96
97
  /**
97
98
  * Generates both reward and email.
@@ -104,7 +105,7 @@ export default class Transaction {
104
105
  /**
105
106
  * Generates both reward and email for a referral.
106
107
  */
107
- generateReferralRewardAndEmail({ emailKey, rewardKey, referralId, user, status, overrideProperties, dynamicProperties, }: {
108
+ generateReferralRewardAndEmail({ emailKey, rewardKey, referralId, user, status, overrideProperties, dynamicProperties, eventId, }: {
108
109
  emailKey: string;
109
110
  rewardKey: string;
110
111
  referralId: string;
@@ -112,6 +113,7 @@ export default class Transaction {
112
113
  status?: string;
113
114
  overrideProperties?: any;
114
115
  dynamicProperties?: any;
116
+ eventId?: string;
115
117
  }): void;
116
118
  generateRefunds(): void;
117
119
  /**
@@ -160,12 +160,14 @@ class Transaction {
160
160
  };
161
161
  this.mutations = [...this.mutations, newMutation];
162
162
  }
163
- generateReferralEmail({ emailKey, user, referralId, rewardId, }) {
163
+ generateReferralEmail({ emailKey, user, referralId, rewardId, eventId, }) {
164
164
  const variables = {
165
165
  userId: user.id,
166
166
  accountId: user.accountId,
167
167
  programId: this.context.body.program.id,
168
168
  referralId: referralId,
169
+ eventId: eventId,
170
+ fetchEvent: !!eventId,
169
171
  };
170
172
  const queryVariables = rewardId ? Object.assign(Object.assign({}, variables), { rewardId }) : variables;
171
173
  const newMutation = {
@@ -198,7 +200,7 @@ class Transaction {
198
200
  /**
199
201
  * Generates both reward and email for a referral.
200
202
  */
201
- generateReferralRewardAndEmail({ emailKey, rewardKey, referralId, user, status, overrideProperties, dynamicProperties, }) {
203
+ generateReferralRewardAndEmail({ emailKey, rewardKey, referralId, user, status, overrideProperties, dynamicProperties, eventId, }) {
202
204
  const { rewardId } = this.generateReferralReward({
203
205
  rewardKey,
204
206
  referralId,
@@ -209,7 +211,13 @@ class Transaction {
209
211
  overrideProperties,
210
212
  dynamicProperties,
211
213
  });
212
- this.generateReferralEmail({ emailKey, user, referralId, rewardId });
214
+ this.generateReferralEmail({
215
+ emailKey,
216
+ user,
217
+ referralId,
218
+ rewardId,
219
+ eventId,
220
+ });
213
221
  }
214
222
  generateRefunds() {
215
223
  const refundEvents = (this.events || []).filter((e) => e.key === "refund" &&
@@ -3,6 +3,13 @@
3
3
  */
4
4
  export type ProgramType = "ACQUISITION" | "LOYALTY" | "RETENTION";
5
5
  export type RSJsonNode = any;
6
+ export type ProgramGoal = {
7
+ goalId: string;
8
+ programId?: string;
9
+ count: number;
10
+ firstDate: number;
11
+ lastDate: number;
12
+ };
6
13
  /**
7
14
  * Defined in core under ProgramTriggerQuery.graphql
8
15
  */
@@ -12,13 +19,7 @@ export type User = {
12
19
  firstName?: string;
13
20
  lastName?: string;
14
21
  referredByReferral?: Referral;
15
- programGoals: {
16
- goalId: string;
17
- programId?: string;
18
- count: number;
19
- firstDate: number;
20
- lastDate: number;
21
- }[];
22
+ programGoals: ProgramGoal[];
22
23
  [key: string]: any;
23
24
  };
24
25
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saasquatch/program-boilerplate",
3
- "version": "3.10.1-3",
3
+ "version": "3.10.1-5",
4
4
  "description": "Boilerplate for writing programs",
5
5
  "main": "dist/index.js",
6
6
  "files": [