@awell-health/awell-extensions 1.0.48 → 1.0.49

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.
@@ -65,7 +65,7 @@
65
65
  },
66
66
  "sendgrid-extension": {
67
67
  "readme": "# Sendgrid\n\nSendGrid is a cloud-based email delivery platform that provides services for sending and managing email campaigns, transactional emails, and other types of messages.\n\n## Extension settings\n\nIn order to set up this extension, you will need to provide:\n\n1. An API key\n2. A from name\n3. A from email\n\n## Custom Actions\n\n### Send email\n\nAllows for sending a plain email to a recipient.\n\n### Send email with a template\n\nAllows for sending an email based on a template to a recipient. You can also insert variables so they are rendered in your template.\n\n### Add or update contact\n\nAllows adding or updating contacts. The contact to update will be determined only by the email field and any fields omitted from the request will remain as they were. A contact's ID cannot be used to update the contact.\n\nPlease note that custom fields need to have been already created if you wish to set their values for the contacts being upserted. To do this, please use the \"Create Custom Field Definition\" endpoint. They also can be created in **Marketing -> Custom Fields** section in Sendgrid.\n\n### Add and remove emails from suppression lists\n\nSuppression lists ([link on SendGrid's website](https://docs.sendgrid.com/api-reference/suppressions-suppressions/add-suppressions-to-a-suppression-group)) are unsubscribe groups. Use these actions to add an email address to any number of unsubscribe groups. You can apply a suppression add/remove to multiple groups by using comma-separated lists for the groups. Only a single email can be used. **This functionality is different from SendGrid's API, which allows multiple email addresses for a single group**.\n\n### Check an import status\n\nAllows user to check the status of contact import jobs when given a jobID. Statuses are either: `pending`, `completed`, `failed`, or `errored`.",
68
- "changelog": "# Sendgrid changelog\n\n## July 7, 2023\n\nAdded \"Add Email to Suppression Lists\" and \"Remove Email from Suppression Lists\" actions.\n\n## July 15, 2023\n\nUpdated \"Add or Update Contact\" acction to create a datapoint of the Job ID.\n\nAdded \"Check Import Status\" action.\n"
68
+ "changelog": "# Sendgrid changelog\n\n## July 7, 2023\n\nAdded \"Add Email to Suppression Lists\" and \"Remove Email from Suppression Lists\" actions.\n\n## July 15, 2023\n\nUpdated \"Add or Update Contact\" acction to create a datapoint of the Job ID.\n\nAdded \"Check Import Status\" action.\n\n## July 27, 2023\n\nAdds \"Finished At\" data point to the importStatus action."
69
69
  },
70
70
  "twilio": {
71
71
  "readme": "# Twilio\n\nTwilio is a customer engagement platform used by hundreds of thousands of businesses and more than ten million developers worldwide to build unique, personalized experiences for their customers.\n\nThey are known for democratizing channels like voice, text, chat, video, and email through APIs, making it easy for every organization to build meaningful interactions with customers on the channels they prefer.\n\n## Extension settings\n\nIn order to set up this extension, you will need:\n\n1. A Twilio API key or auth token which can be found in the Twilio console.\n2. Your account SID which can be found in the Twilio console.\n3. A phone number to send the message from. This must be a Twilio phone number that you own.\n\n## Custom Actions\n\n### Send SMS\n\nSend an SMS with Twilio to a recipient of your liking.\n",
@@ -14,6 +14,19 @@ export interface Contact {
14
14
  state_province_region?: string;
15
15
  custom_fields?: object;
16
16
  }
17
+ export declare enum ImportStatus {
18
+ PENDING = "pending",
19
+ COMPLETED = "completed",
20
+ ERRORED = "errored",
21
+ FAILED = "failed"
22
+ }
23
+ export interface ImportStatusResponse {
24
+ id: string;
25
+ status: ImportStatus;
26
+ finished_at?: string;
27
+ job_type: string;
28
+ started_at: string;
29
+ }
17
30
  export interface MailApi {
18
31
  send: MailService['send'];
19
32
  }
@@ -25,9 +38,7 @@ export interface MarketingApi {
25
38
  }) => RequestReturnType<{
26
39
  job_id: string;
27
40
  }>;
28
- importStatus: (jobId: string) => RequestReturnType<{
29
- status: string;
30
- }>;
41
+ importStatus: (jobId: string) => RequestReturnType<ImportStatusResponse>;
31
42
  };
32
43
  }
33
44
  export interface GroupsApi {
@@ -1,3 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImportStatus = void 0;
4
+ var ImportStatus;
5
+ (function (ImportStatus) {
6
+ ImportStatus["PENDING"] = "pending";
7
+ ImportStatus["COMPLETED"] = "completed";
8
+ ImportStatus["ERRORED"] = "errored";
9
+ ImportStatus["FAILED"] = "failed";
10
+ })(ImportStatus = exports.ImportStatus || (exports.ImportStatus = {}));
3
11
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../extensions/sendgrid-extension/client/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../extensions/sendgrid-extension/client/types.ts"],"names":[],"mappings":";;;AAmBA,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,uCAAuB,CAAA;IACvB,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;AACnB,CAAC,EALW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAKvB"}
@@ -9,11 +9,21 @@ export declare const fields: {
9
9
  stringType: StringType.TEXT;
10
10
  required: true;
11
11
  };
12
+ wait_for_finished: {
13
+ id: string;
14
+ label: string;
15
+ description: string;
16
+ type: FieldType.BOOLEAN;
17
+ required: false;
18
+ };
12
19
  };
13
20
  export declare const FieldsValidationSchema: z.ZodObject<{
14
21
  jobId: z.ZodString;
22
+ wait_for_finished: z.ZodOptional<z.ZodBoolean>;
15
23
  }, "strip", z.ZodTypeAny, {
16
24
  jobId: string;
25
+ wait_for_finished?: boolean | undefined;
17
26
  }, {
18
27
  jobId: string;
28
+ wait_for_finished?: boolean | undefined;
19
29
  }>;
@@ -10,10 +10,18 @@ exports.fields = {
10
10
  description: 'The ID of the Sendgrid Job (usually obtained from the Add or Update Contact action)',
11
11
  type: extensions_core_1.FieldType.STRING,
12
12
  stringType: extensions_core_1.StringType.TEXT,
13
- required: true
14
- }
13
+ required: true,
14
+ },
15
+ wait_for_finished: {
16
+ id: 'wait_for_finished',
17
+ label: 'Wait for finished',
18
+ description: 'If true, the action will wait for the import job to finish before completing.',
19
+ type: extensions_core_1.FieldType.BOOLEAN,
20
+ required: false,
21
+ },
15
22
  };
16
23
  exports.FieldsValidationSchema = zod_1.z.object({
17
- jobId: zod_1.z.string()
24
+ jobId: zod_1.z.string(),
25
+ wait_for_finished: zod_1.z.boolean().optional(),
18
26
  });
19
27
  //# sourceMappingURL=fields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../../../../extensions/sendgrid-extension/v1/actions/importStatus/config/fields.ts"],"names":[],"mappings":";;;AAAA,6BAAwC;AAExC,mEAIsC;AAEzB,QAAA,MAAM,GAAG;IACpB,KAAK,EAAE;QACL,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,qFAAqF;QAClG,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,UAAU,EAAE,4BAAU,CAAC,IAAI;QAC3B,QAAQ,EAAE,IAAI;KACf;CAC8B,CAAA;AAEpB,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;CACgC,CAAC,CAAA"}
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../../../../extensions/sendgrid-extension/v1/actions/importStatus/config/fields.ts"],"names":[],"mappings":";;;AAAA,6BAAwC;AAExC,mEAIsC;AAEzB,QAAA,MAAM,GAAG;IACpB,KAAK,EAAE;QACL,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,QAAQ;QACf,WAAW,EACT,qFAAqF;QACvF,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,UAAU,EAAE,4BAAU,CAAC,IAAI;QAC3B,QAAQ,EAAE,IAAI;KACf;IACD,iBAAiB,EAAE;QACjB,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,+EAA+E;QACjF,IAAI,EAAE,2BAAS,CAAC,OAAO;QACvB,QAAQ,EAAE,KAAK;KAChB;CAC8B,CAAA;AAEpB,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;IACjB,iBAAiB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACQ,CAAC,CAAA"}
@@ -6,6 +6,22 @@ declare const dataPoints: {
6
6
  key: string;
7
7
  valueType: "string";
8
8
  };
9
+ finishedAt: {
10
+ key: string;
11
+ valueType: "date";
12
+ };
13
+ startedAt: {
14
+ key: string;
15
+ valueType: "date";
16
+ };
17
+ jobType: {
18
+ key: string;
19
+ valueType: "string";
20
+ };
21
+ id: {
22
+ key: string;
23
+ valueType: "string";
24
+ };
9
25
  };
10
26
  export declare const importStatus: Action<typeof fields, typeof settings, keyof typeof dataPoints>;
11
27
  export {};
@@ -9,11 +9,30 @@ const zod_validation_error_1 = require("zod-validation-error");
9
9
  const zod_1 = require("zod");
10
10
  const classes_1 = require("@sendgrid/helpers/classes");
11
11
  const client_1 = require("../../../client");
12
+ const types_1 = require("../../../client/types");
13
+ const lodash_1 = require("lodash");
14
+ // import { isResponseError } from '../../../client/types'
12
15
  const dataPoints = {
13
16
  importStatus: {
14
17
  key: 'importStatus',
15
18
  valueType: 'string',
16
19
  },
20
+ finishedAt: {
21
+ key: 'finishedAt',
22
+ valueType: 'date',
23
+ },
24
+ startedAt: {
25
+ key: 'startedAt',
26
+ valueType: 'date',
27
+ },
28
+ jobType: {
29
+ key: 'jobType',
30
+ valueType: 'string',
31
+ },
32
+ id: {
33
+ key: 'id',
34
+ valueType: 'string',
35
+ },
17
36
  };
18
37
  exports.importStatus = {
19
38
  key: 'importStatus',
@@ -25,7 +44,7 @@ exports.importStatus = {
25
44
  previewable: true,
26
45
  onActivityCreated: async (payload, onComplete, onError) => {
27
46
  try {
28
- const { fields: { jobId }, settings: { apiKey }, } = (0, extensions_core_1.validate)({
47
+ const { fields: { jobId, wait_for_finished }, settings: { apiKey }, } = (0, extensions_core_1.validate)({
29
48
  schema: zod_1.z.object({
30
49
  fields: fields_1.FieldsValidationSchema,
31
50
  settings: settings_1.SettingsValidationSchema,
@@ -33,10 +52,29 @@ exports.importStatus = {
33
52
  payload,
34
53
  });
35
54
  const sendgridClient = new client_1.SendgridClient({ apiKey });
36
- const sgImportStatus = await sendgridClient.marketing.contacts.importStatus(jobId);
55
+ let resp;
56
+ if (!(0, lodash_1.isNil)(wait_for_finished)) {
57
+ resp = (await sendgridClient.marketing.contacts.importStatus(jobId))[0]
58
+ .body;
59
+ for (let i = 0; i < 9; i++) {
60
+ if ([types_1.ImportStatus.COMPLETED, types_1.ImportStatus.FAILED].includes(resp.status)) {
61
+ break;
62
+ }
63
+ await new Promise((resolve) => setTimeout(resolve, (1000 * 2) ^ i)); // exponential backoff
64
+ resp = (await sendgridClient.marketing.contacts.importStatus(jobId))[0].body;
65
+ }
66
+ }
67
+ else {
68
+ resp = (await sendgridClient.marketing.contacts.importStatus(jobId))[0]
69
+ .body;
70
+ }
37
71
  await onComplete({
38
72
  data_points: {
39
- importStatus: sgImportStatus[0].body.status,
73
+ importStatus: resp.status,
74
+ finishedAt: resp.finished_at,
75
+ startedAt: resp.started_at,
76
+ jobType: resp.job_type,
77
+ id: resp.id,
40
78
  },
41
79
  });
42
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"importStatus.js","sourceRoot":"","sources":["../../../../../../extensions/sendgrid-extension/v1/actions/importStatus/importStatus.ts"],"names":[],"mappings":";;;AAIA,qCAAiC;AACjC,mEAAkE;AAClE,gDAA2E;AAC3E,4CAAwD;AACxD,+DAAmD;AACnD,6BAAiC;AACjC,uDAAyD;AACzD,4CAGwB;AAExB,MAAM,UAAU,GAAG;IACjB,YAAY,EAAE;QACZ,GAAG,EAAE,cAAc;QACnB,SAAS,EAAE,QAAQ;KACpB;CAC4C,CAAA;AAElC,QAAA,YAAY,GAIrB;IACF,GAAG,EAAE,cAAc;IACnB,KAAK,EAAE,kBAAkB;IACzB,WAAW,EAAE,iCAAiC;IAC9C,QAAQ,EAAE,0BAAQ,CAAC,aAAa;IAChC,MAAM,EAAN,eAAM;IACN,UAAU;IACV,WAAW,EAAE,IAAI;IACjB,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;QACxD,IAAI;YACF,MAAM,EACJ,MAAM,EAAE,EAAE,KAAK,EAAE,EACjB,QAAQ,EAAE,EAAE,MAAM,EAAE,GACrB,GAAG,IAAA,0BAAQ,EAAC;gBACX,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;oBACf,MAAM,EAAE,+BAAsB;oBAC9B,QAAQ,EAAE,mCAAwB;iBACnC,CAAC;gBACF,OAAO;aACR,CAAC,CAAA;YAEF,MAAM,cAAc,GAAG,IAAI,uBAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;YACrD,MAAM,cAAc,GAClB,MAAM,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;YAE7D,MAAM,UAAU,CAAC;gBACf,WAAW,EAAE;oBACX,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;iBAC5C;aACF,CAAC,CAAA;SACH;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,GAAG,YAAY,cAAQ,EAAE;gBAC3B,MAAM,KAAK,GAAG,IAAA,mCAAY,EAAC,GAAG,CAAC,CAAA;gBAC/B,MAAM,OAAO,CAAC;oBACZ,MAAM,EAAE;wBACN;4BACE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BAC9B,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE;4BACxB,KAAK,EAAE;gCACL,QAAQ,EAAE,aAAa;gCACvB,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;6BAC5B;yBACF;qBACF;iBACF,CAAC,CAAA;gBACF,OAAM;aACP;iBAAM,IAAI,GAAG,YAAY,uBAAa,EAAE;gBACvC,MAAM,MAAM,GAAG,IAAA,0CAAiC,EAAC,GAAG,CAAC,CAAA;gBACrD,MAAM,OAAO,CAAC;oBACZ,MAAM;iBACP,CAAC,CAAA;gBACF,OAAM;aACP;YAED,MAAM,KAAK,GAAG,GAAY,CAAA;YAC1B,MAAM,OAAO,CAAC;gBACZ,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBAC9B,IAAI,EAAE,EAAE,EAAE,EAAE,qDAAqD,EAAE;wBACnE,KAAK,EAAE;4BACL,QAAQ,EAAE,cAAc;4BACxB,OAAO,EAAE,KAAK,CAAC,OAAO;yBACvB;qBACF;iBACF;aACF,CAAC,CAAA;SACH;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"importStatus.js","sourceRoot":"","sources":["../../../../../../extensions/sendgrid-extension/v1/actions/importStatus/importStatus.ts"],"names":[],"mappings":";;;AAIA,qCAAiC;AACjC,mEAAkE;AAClE,gDAA2E;AAC3E,4CAAwD;AACxD,+DAAmD;AACnD,6BAAiC;AACjC,uDAAyD;AACzD,4CAGwB;AACxB,iDAA+E;AAC/E,mCAA8B;AAC9B,0DAA0D;AAE1D,MAAM,UAAU,GAAG;IACjB,YAAY,EAAE;QACZ,GAAG,EAAE,cAAc;QACnB,SAAS,EAAE,QAAQ;KACpB;IACD,UAAU,EAAE;QACV,GAAG,EAAE,YAAY;QACjB,SAAS,EAAE,MAAM;KAClB;IACD,SAAS,EAAE;QACT,GAAG,EAAE,WAAW;QAChB,SAAS,EAAE,MAAM;KAClB;IACD,OAAO,EAAE;QACP,GAAG,EAAE,SAAS;QACd,SAAS,EAAE,QAAQ;KACpB;IACD,EAAE,EAAE;QACF,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,QAAQ;KACpB;CAC4C,CAAA;AAElC,QAAA,YAAY,GAIrB;IACF,GAAG,EAAE,cAAc;IACnB,KAAK,EAAE,kBAAkB;IACzB,WAAW,EAAE,iCAAiC;IAC9C,QAAQ,EAAE,0BAAQ,CAAC,aAAa;IAChC,MAAM,EAAN,eAAM;IACN,UAAU;IACV,WAAW,EAAE,IAAI;IACjB,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;QACxD,IAAI;YACF,MAAM,EACJ,MAAM,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,EACpC,QAAQ,EAAE,EAAE,MAAM,EAAE,GACrB,GAAG,IAAA,0BAAQ,EAAC;gBACX,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;oBACf,MAAM,EAAE,+BAAsB;oBAC9B,QAAQ,EAAE,mCAAwB;iBACnC,CAAC;gBACF,OAAO;aACR,CAAC,CAAA;YAEF,MAAM,cAAc,GAAG,IAAI,uBAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;YAErD,IAAI,IAA0B,CAAA;YAC9B,IAAI,CAAC,IAAA,cAAK,EAAC,iBAAiB,CAAC,EAAE;gBAC7B,IAAI,GAAG,CAAC,MAAM,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;qBACpE,IAAI,CAAA;gBAEP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC1B,IACE,CAAC,oBAAY,CAAC,SAAS,EAAE,oBAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EACnE;wBACA,MAAK;qBACN;oBACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA,CAAC,sBAAsB;oBAC1F,IAAI,GAAG,CACL,MAAM,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAC5D,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;iBACV;aACF;iBAAM;gBACL,IAAI,GAAG,CAAC,MAAM,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;qBACpE,IAAI,CAAA;aACR;YAED,MAAM,UAAU,CAAC;gBACf,WAAW,EAAE;oBACX,YAAY,EAAE,IAAI,CAAC,MAAM;oBACzB,UAAU,EAAE,IAAI,CAAC,WAAW;oBAC5B,SAAS,EAAE,IAAI,CAAC,UAAU;oBAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ;oBACtB,EAAE,EAAE,IAAI,CAAC,EAAE;iBACZ;aACF,CAAC,CAAA;SACH;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,GAAG,YAAY,cAAQ,EAAE;gBAC3B,MAAM,KAAK,GAAG,IAAA,mCAAY,EAAC,GAAG,CAAC,CAAA;gBAC/B,MAAM,OAAO,CAAC;oBACZ,MAAM,EAAE;wBACN;4BACE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BAC9B,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE;4BACxB,KAAK,EAAE;gCACL,QAAQ,EAAE,aAAa;gCACvB,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;6BAC5B;yBACF;qBACF;iBACF,CAAC,CAAA;gBACF,OAAM;aACP;iBAAM,IAAI,GAAG,YAAY,uBAAa,EAAE;gBACvC,MAAM,MAAM,GAAG,IAAA,0CAAiC,EAAC,GAAG,CAAC,CAAA;gBACrD,MAAM,OAAO,CAAC;oBACZ,MAAM;iBACP,CAAC,CAAA;gBACF,OAAM;aACP;YAED,MAAM,KAAK,GAAG,GAAY,CAAA;YAC1B,MAAM,OAAO,CAAC;gBACZ,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBAC9B,IAAI,EAAE,EAAE,EAAE,EAAE,qDAAqD,EAAE;wBACnE,KAAK,EAAE;4BACL,QAAQ,EAAE,cAAc;4BACxB,OAAO,EAAE,KAAK,CAAC,OAAO;yBACvB;qBACF;iBACF;aACF,CAAC,CAAA;SACH;IACH,CAAC;CACF,CAAA"}
@@ -8,14 +8,28 @@ describe('Import Status', () => {
8
8
  statusCode: 200,
9
9
  headers: {},
10
10
  body: {
11
- status: "done"
12
- }
11
+ status: 'completed',
12
+ finished_at: '10-10-2020',
13
+ started_at: '10-10-2020',
14
+ job_type: 'jobType',
15
+ id: 'id',
16
+ },
17
+ };
18
+ const pendingResponse = {
19
+ statusCode: 200,
20
+ headers: {},
21
+ body: {
22
+ status: 'pending',
23
+ started_at: '10-10-2020',
24
+ job_type: 'jobType',
25
+ id: 'id',
26
+ },
13
27
  };
14
28
  const onComplete = jest.fn();
15
29
  const onError = jest.fn();
16
30
  const basePayload = (0, client_1.mockActionPayload)({
17
31
  fields: {
18
- jobId: 'jobId'
32
+ jobId: 'jobId',
19
33
  },
20
34
  });
21
35
  beforeEach(() => {
@@ -23,19 +37,55 @@ describe('Import Status', () => {
23
37
  });
24
38
  test('Should call onComplete callback when Sendgrid returns a 200 status response', async () => {
25
39
  client_1.SendgridClientMockImplementation.marketing.contacts.importStatus.mockImplementationOnce(() => {
26
- return [successResponse, "status"];
40
+ return [successResponse, 'status'];
27
41
  });
28
42
  await importStatus_1.importStatus.onActivityCreated(basePayload, onComplete, onError);
29
43
  expect(client_1.SendgridClientMockImplementation.marketing.contacts.importStatus).toHaveBeenCalledWith('jobId');
30
44
  expect(onComplete).toHaveBeenNthCalledWith(1, {
31
45
  data_points: {
32
- importStatus: 'done'
33
- }
46
+ importStatus: 'completed',
47
+ finishedAt: '10-10-2020',
48
+ startedAt: '10-10-2020',
49
+ jobType: 'jobType',
50
+ id: 'id',
51
+ },
52
+ });
53
+ expect(onError).not.toBeCalled();
54
+ });
55
+ test('Should use exponential backoff', async () => {
56
+ client_1.SendgridClientMockImplementation.marketing.contacts.importStatus
57
+ .mockImplementationOnce(() => {
58
+ return [pendingResponse, 'status'];
59
+ })
60
+ .mockImplementationOnce(() => {
61
+ return [pendingResponse, 'status'];
62
+ })
63
+ .mockImplementationOnce(() => {
64
+ return [successResponse, 'status'];
65
+ });
66
+ await importStatus_1.importStatus.onActivityCreated({
67
+ ...basePayload,
68
+ fields: {
69
+ jobId: 'jobId',
70
+ wait_for_finished: true,
71
+ },
72
+ }, onComplete, onError);
73
+ expect(client_1.SendgridClientMockImplementation.marketing.contacts.importStatus).toHaveBeenCalledTimes(3);
74
+ expect(onComplete).toHaveBeenNthCalledWith(1, {
75
+ data_points: {
76
+ importStatus: 'completed',
77
+ finishedAt: '10-10-2020',
78
+ startedAt: '10-10-2020',
79
+ jobType: 'jobType',
80
+ id: 'id',
81
+ },
34
82
  });
35
83
  expect(onError).not.toBeCalled();
36
84
  });
37
85
  test('Should call onError callback when Sendgrid Client throws an error', async () => {
38
- client_1.SendgridClientMockImplementation.marketing.contacts.importStatus.mockImplementationOnce(() => { throw new Error('An error occurred'); });
86
+ client_1.SendgridClientMockImplementation.marketing.contacts.importStatus.mockImplementationOnce(() => {
87
+ throw new Error('An error occurred');
88
+ });
39
89
  await importStatus_1.importStatus.onActivityCreated(basePayload, onComplete, onError);
40
90
  expect(onComplete).not.toBeCalled();
41
91
  expect(onError).toHaveBeenNthCalledWith(1, {
@@ -43,10 +93,10 @@ describe('Import Status', () => {
43
93
  expect.objectContaining({
44
94
  error: {
45
95
  category: 'SERVER_ERROR',
46
- message: 'An error occurred'
47
- }
48
- })
49
- ])
96
+ message: 'An error occurred',
97
+ },
98
+ }),
99
+ ]),
50
100
  });
51
101
  });
52
102
  });
@@ -1 +1 @@
1
- {"version":3,"file":"importStatus.test.js","sourceRoot":"","sources":["../../../../../../extensions/sendgrid-extension/v1/actions/importStatus/importStatus.test.ts"],"names":[],"mappings":";;AAAA,sDAIkC;AAClC,iDAA6C;AAG7C,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,cAAc,EAAd,uBAAc,EAAE,CAAC,CAAC,CAAA;AAExD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,eAAe,GAAa;QAChC,UAAU,EAAE,GAAG;QACf,OAAO,EAAE,EAAE;QACX,IAAI,EAAE;YACJ,MAAM,EAAE,MAAM;SACf;KACF,CAAA;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IACzB,MAAM,WAAW,GAAG,IAAA,0BAAiB,EAAgC;QACnE,MAAM,EAAE;YACN,KAAK,EAAE,OAAO;SACf;KACF,CAAC,CAAA;IAEF,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC7F,yCAAgC,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,sBAAsB,CAAC,GAAG,EAAE;YAAG,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAA;QAClI,CAAC,CAAC,CAAA;QACF,MAAM,2BAAY,CAAC,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;QAEtE,MAAM,CAAC,yCAAgC,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAA;QAEtG,MAAM,CAAC,UAAU,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE;YAC5C,WAAW,EAAE;gBACX,YAAY,EAAE,MAAM;aACrB;SACF,CAAC,CAAA;QACF,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACnF,yCAAgC,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,sBAAsB,CAAC,GAAG,EAAE,GAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA,CAAA,CAAC,CAAC,CAAA;QACrI,MAAM,2BAAY,CAAC,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;QACtE,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAA;QACnC,MAAM,CAAC,OAAO,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE;YACzC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;gBAC7B,MAAM,CAAC,gBAAgB,CAAC;oBACpB,KAAK,EAAE;wBACH,QAAQ,EAAE,cAAc;wBACxB,OAAO,EAAE,mBAAmB;qBAC/B;iBACJ,CAAC;aACH,CAAC;SACH,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"importStatus.test.js","sourceRoot":"","sources":["../../../../../../extensions/sendgrid-extension/v1/actions/importStatus/importStatus.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awell-health/awell-extensions",
3
- "version": "1.0.48",
3
+ "version": "1.0.49",
4
4
  "packageManager": "yarn@3.4.1",
5
5
  "main": "dist/src/index.js",
6
6
  "repository": {