@tryvital/vital-node 2.1.7 → 2.1.8

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.
@@ -0,0 +1,107 @@
1
+ import { AxiosInstance } from 'axios';
2
+ import { camelize, camelizeKeys } from 'humps';
3
+
4
+ import {
5
+ Appointment,
6
+ AppointmentAvailability,
7
+ CancellationReason,
8
+ USAddress,
9
+ } from './models/athome_phlebotomy_models';
10
+
11
+ export class AtHomePhlebotomyApi {
12
+ baseURL: string;
13
+ client: AxiosInstance;
14
+
15
+ constructor(baseURL: string, axios: AxiosInstance) {
16
+ this.baseURL = baseURL;
17
+ this.client = axios;
18
+ }
19
+
20
+ public async appointmentAvailability(
21
+ orderId: string,
22
+ address?: USAddress
23
+ ): Promise<AppointmentAvailability> {
24
+ const resp = await this.client.post(
25
+ this.baseURL.concat(
26
+ `/order/${orderId}/phlebotomy/appointment/availability`
27
+ ),
28
+ address
29
+ ? {
30
+ first_line: address.firstLine,
31
+ second_line: address.secondLine,
32
+ city: address.city,
33
+ state: address.state,
34
+ zip_code: address.zipCode,
35
+ unit: address.unit,
36
+ }
37
+ : undefined
38
+ );
39
+
40
+ return camelizeKeys<AppointmentAvailability>(resp.data);
41
+ }
42
+
43
+ public async bookAppointment(
44
+ orderId: string,
45
+ bookingKey: string
46
+ ): Promise<Appointment> {
47
+ const resp = await this.client.post(
48
+ this.baseURL.concat(`/order/${orderId}/phlebotomy/appointment/book`),
49
+ {
50
+ booking_key: bookingKey,
51
+ }
52
+ );
53
+
54
+ return camelizeKeys<Appointment>(resp.data);
55
+ }
56
+
57
+ public async rescheduleAppointment(
58
+ orderId: string,
59
+ bookingKey: string
60
+ ): Promise<Appointment> {
61
+ const resp = await this.client.patch(
62
+ this.baseURL.concat(
63
+ `/order/${orderId}/phlebotomy/appointment/reschedule`
64
+ ),
65
+ {
66
+ booking_key: bookingKey,
67
+ }
68
+ );
69
+
70
+ return camelizeKeys<Appointment>(resp.data);
71
+ }
72
+
73
+ public async cancelAppointment(
74
+ orderId: string,
75
+ cancellationReasonId: string
76
+ ): Promise<Appointment> {
77
+ const resp = await this.client.patch(
78
+ this.baseURL.concat(`/order/${orderId}/phlebotomy/appointment/cancel`),
79
+ {
80
+ cancellation_reason_id: cancellationReasonId,
81
+ }
82
+ );
83
+
84
+ return camelizeKeys<Appointment>(resp.data);
85
+ }
86
+
87
+ public async cancellationReasons(): Promise<CancellationReason[]> {
88
+ const resp = await this.client.get(
89
+ this.baseURL.concat(`/order/phlebotomy/appointment/cancellation-reasons`)
90
+ );
91
+
92
+ let cancellationReasons: CancellationReason[] = [];
93
+ for (const reason of resp.data) {
94
+ cancellationReasons.push(camelizeKeys<CancellationReason>(reason));
95
+ }
96
+
97
+ return cancellationReasons;
98
+ }
99
+
100
+ public async getAppointment(orderId: string): Promise<Appointment> {
101
+ const resp = await this.client.get(
102
+ this.baseURL.concat(`/order/${orderId}/phlebotomy/appointment`)
103
+ );
104
+
105
+ return camelizeKeys<Appointment>(resp.data);
106
+ }
107
+ }
package/client/index.ts CHANGED
@@ -5,8 +5,9 @@ export { SleepApi } from './Sleep';
5
5
  export { UserApi } from './User';
6
6
  export { WebhooksApi } from './Webhooks';
7
7
  export { WorkoutsApi } from './Workouts';
8
+ export { AtHomePhlebotomyApi } from './AtHomePhlebotomy';
8
9
  export { LabTestsApi } from './LabTests';
9
10
  export { ProfileApi } from './Profile';
10
11
  export { DevicesAPI } from './Devices';
11
12
  export { MealsApi } from './Meals';
12
- export { TestkitsApi } from "./Testkits";
13
+ export { TestkitsApi } from './Testkits';
@@ -0,0 +1,58 @@
1
+ type Type = 'phlebotomy';
2
+ type Provider = 'getlabs';
3
+ type Status =
4
+ | 'confirmed'
5
+ | 'pending'
6
+ | 'in_progress'
7
+ | 'completed'
8
+ | 'cancelled';
9
+
10
+ export interface LngLat {
11
+ lng: number;
12
+ lat: number;
13
+ }
14
+
15
+ export interface Appointment {
16
+ id: string;
17
+ userId: string;
18
+ address: USAddress;
19
+ location: LngLat;
20
+ startAt: string;
21
+ endAt: string;
22
+ ianaTimezone: string;
23
+ type: Type;
24
+ provider: Provider;
25
+ status: Status;
26
+ providerId: string;
27
+ canReschedule: boolean;
28
+ }
29
+
30
+ export interface USAddress {
31
+ firstLine: string;
32
+ secondLine?: string;
33
+ city: string;
34
+ state: string;
35
+ zipCode: string;
36
+ unit?: string;
37
+ }
38
+
39
+ export interface AppointmentAvailability {
40
+ timezone: string;
41
+ slots: AppointmentSlot[];
42
+ }
43
+
44
+ export interface AppointmentSlot {
45
+ bookingKey: string;
46
+ start: string;
47
+ end: string;
48
+ expiresAt: string;
49
+ price: number;
50
+ isPriority: boolean;
51
+ numAppointmentsAvailable: number;
52
+ }
53
+
54
+ export interface CancellationReason {
55
+ id: string;
56
+ name: string;
57
+ isRefundable: boolean;
58
+ }
@@ -0,0 +1,13 @@
1
+ import { AxiosInstance } from 'axios';
2
+ import { Appointment, AppointmentAvailability, CancellationReason, USAddress } from './models/athome_phlebotomy_models';
3
+ export declare class AtHomePhlebotomyApi {
4
+ baseURL: string;
5
+ client: AxiosInstance;
6
+ constructor(baseURL: string, axios: AxiosInstance);
7
+ appointmentAvailability(orderId: string, address?: USAddress): Promise<AppointmentAvailability>;
8
+ bookAppointment(orderId: string, bookingKey: string): Promise<Appointment>;
9
+ rescheduleAppointment(orderId: string, bookingKey: string): Promise<Appointment>;
10
+ cancelAppointment(orderId: string, cancellationReasonId: string): Promise<Appointment>;
11
+ cancellationReasons(): Promise<CancellationReason[]>;
12
+ getAppointment(orderId: string): Promise<Appointment>;
13
+ }
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.AtHomePhlebotomyApi = void 0;
40
+ var humps_1 = require("humps");
41
+ var AtHomePhlebotomyApi = /** @class */ (function () {
42
+ function AtHomePhlebotomyApi(baseURL, axios) {
43
+ this.baseURL = baseURL;
44
+ this.client = axios;
45
+ }
46
+ AtHomePhlebotomyApi.prototype.appointmentAvailability = function (orderId, address) {
47
+ return __awaiter(this, void 0, void 0, function () {
48
+ var resp;
49
+ return __generator(this, function (_a) {
50
+ switch (_a.label) {
51
+ case 0: return [4 /*yield*/, this.client.post(this.baseURL.concat("/order/" + orderId + "/phlebotomy/appointment/availability"), address
52
+ ? {
53
+ first_line: address.firstLine,
54
+ second_line: address.secondLine,
55
+ city: address.city,
56
+ state: address.state,
57
+ zip_code: address.zipCode,
58
+ unit: address.unit,
59
+ }
60
+ : undefined)];
61
+ case 1:
62
+ resp = _a.sent();
63
+ return [2 /*return*/, humps_1.camelizeKeys(resp.data)];
64
+ }
65
+ });
66
+ });
67
+ };
68
+ AtHomePhlebotomyApi.prototype.bookAppointment = function (orderId, bookingKey) {
69
+ return __awaiter(this, void 0, void 0, function () {
70
+ var resp;
71
+ return __generator(this, function (_a) {
72
+ switch (_a.label) {
73
+ case 0: return [4 /*yield*/, this.client.post(this.baseURL.concat("/order/" + orderId + "/phlebotomy/appointment/book"), {
74
+ booking_key: bookingKey,
75
+ })];
76
+ case 1:
77
+ resp = _a.sent();
78
+ return [2 /*return*/, humps_1.camelizeKeys(resp.data)];
79
+ }
80
+ });
81
+ });
82
+ };
83
+ AtHomePhlebotomyApi.prototype.rescheduleAppointment = function (orderId, bookingKey) {
84
+ return __awaiter(this, void 0, void 0, function () {
85
+ var resp;
86
+ return __generator(this, function (_a) {
87
+ switch (_a.label) {
88
+ case 0: return [4 /*yield*/, this.client.patch(this.baseURL.concat("/order/" + orderId + "/phlebotomy/appointment/reschedule"), {
89
+ booking_key: bookingKey,
90
+ })];
91
+ case 1:
92
+ resp = _a.sent();
93
+ return [2 /*return*/, humps_1.camelizeKeys(resp.data)];
94
+ }
95
+ });
96
+ });
97
+ };
98
+ AtHomePhlebotomyApi.prototype.cancelAppointment = function (orderId, cancellationReasonId) {
99
+ return __awaiter(this, void 0, void 0, function () {
100
+ var resp;
101
+ return __generator(this, function (_a) {
102
+ switch (_a.label) {
103
+ case 0: return [4 /*yield*/, this.client.patch(this.baseURL.concat("/order/" + orderId + "/phlebotomy/appointment/cancel"), {
104
+ cancellation_reason_id: cancellationReasonId,
105
+ })];
106
+ case 1:
107
+ resp = _a.sent();
108
+ return [2 /*return*/, humps_1.camelizeKeys(resp.data)];
109
+ }
110
+ });
111
+ });
112
+ };
113
+ AtHomePhlebotomyApi.prototype.cancellationReasons = function () {
114
+ return __awaiter(this, void 0, void 0, function () {
115
+ var resp, cancellationReasons, _i, _a, reason;
116
+ return __generator(this, function (_b) {
117
+ switch (_b.label) {
118
+ case 0: return [4 /*yield*/, this.client.get(this.baseURL.concat("/order/phlebotomy/appointment/cancellation-reasons"))];
119
+ case 1:
120
+ resp = _b.sent();
121
+ cancellationReasons = [];
122
+ for (_i = 0, _a = resp.data; _i < _a.length; _i++) {
123
+ reason = _a[_i];
124
+ cancellationReasons.push(humps_1.camelizeKeys(reason));
125
+ }
126
+ return [2 /*return*/, cancellationReasons];
127
+ }
128
+ });
129
+ });
130
+ };
131
+ AtHomePhlebotomyApi.prototype.getAppointment = function (orderId) {
132
+ return __awaiter(this, void 0, void 0, function () {
133
+ var resp;
134
+ return __generator(this, function (_a) {
135
+ switch (_a.label) {
136
+ case 0: return [4 /*yield*/, this.client.get(this.baseURL.concat("/order/" + orderId + "/phlebotomy/appointment"))];
137
+ case 1:
138
+ resp = _a.sent();
139
+ return [2 /*return*/, humps_1.camelizeKeys(resp.data)];
140
+ }
141
+ });
142
+ });
143
+ };
144
+ return AtHomePhlebotomyApi;
145
+ }());
146
+ exports.AtHomePhlebotomyApi = AtHomePhlebotomyApi;
@@ -5,8 +5,9 @@ export { SleepApi } from './Sleep';
5
5
  export { UserApi } from './User';
6
6
  export { WebhooksApi } from './Webhooks';
7
7
  export { WorkoutsApi } from './Workouts';
8
+ export { AtHomePhlebotomyApi } from './AtHomePhlebotomy';
8
9
  export { LabTestsApi } from './LabTests';
9
10
  export { ProfileApi } from './Profile';
10
11
  export { DevicesAPI } from './Devices';
11
12
  export { MealsApi } from './Meals';
12
- export { TestkitsApi } from "./Testkits";
13
+ export { TestkitsApi } from './Testkits';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TestkitsApi = exports.MealsApi = exports.DevicesAPI = exports.ProfileApi = exports.LabTestsApi = exports.WorkoutsApi = exports.WebhooksApi = exports.UserApi = exports.SleepApi = exports.LinkApi = exports.BodyApi = exports.ActivityApi = void 0;
3
+ exports.TestkitsApi = exports.MealsApi = exports.DevicesAPI = exports.ProfileApi = exports.LabTestsApi = exports.AtHomePhlebotomyApi = exports.WorkoutsApi = exports.WebhooksApi = exports.UserApi = exports.SleepApi = exports.LinkApi = exports.BodyApi = exports.ActivityApi = void 0;
4
4
  var Activity_1 = require("./Activity");
5
5
  Object.defineProperty(exports, "ActivityApi", { enumerable: true, get: function () { return Activity_1.ActivityApi; } });
6
6
  var Body_1 = require("./Body");
@@ -15,6 +15,8 @@ var Webhooks_1 = require("./Webhooks");
15
15
  Object.defineProperty(exports, "WebhooksApi", { enumerable: true, get: function () { return Webhooks_1.WebhooksApi; } });
16
16
  var Workouts_1 = require("./Workouts");
17
17
  Object.defineProperty(exports, "WorkoutsApi", { enumerable: true, get: function () { return Workouts_1.WorkoutsApi; } });
18
+ var AtHomePhlebotomy_1 = require("./AtHomePhlebotomy");
19
+ Object.defineProperty(exports, "AtHomePhlebotomyApi", { enumerable: true, get: function () { return AtHomePhlebotomy_1.AtHomePhlebotomyApi; } });
18
20
  var LabTests_1 = require("./LabTests");
19
21
  Object.defineProperty(exports, "LabTestsApi", { enumerable: true, get: function () { return LabTests_1.LabTestsApi; } });
20
22
  var Profile_1 = require("./Profile");
@@ -0,0 +1,48 @@
1
+ declare type Type = 'phlebotomy';
2
+ declare type Provider = 'getlabs';
3
+ declare type Status = 'confirmed' | 'pending' | 'in_progress' | 'completed' | 'cancelled';
4
+ export interface LngLat {
5
+ lng: number;
6
+ lat: number;
7
+ }
8
+ export interface Appointment {
9
+ id: string;
10
+ userId: string;
11
+ address: USAddress;
12
+ location: LngLat;
13
+ startAt: string;
14
+ endAt: string;
15
+ ianaTimezone: string;
16
+ type: Type;
17
+ provider: Provider;
18
+ status: Status;
19
+ providerId: string;
20
+ canReschedule: boolean;
21
+ }
22
+ export interface USAddress {
23
+ firstLine: string;
24
+ secondLine?: string;
25
+ city: string;
26
+ state: string;
27
+ zipCode: string;
28
+ unit?: string;
29
+ }
30
+ export interface AppointmentAvailability {
31
+ timezone: string;
32
+ slots: AppointmentSlot[];
33
+ }
34
+ export interface AppointmentSlot {
35
+ bookingKey: string;
36
+ start: string;
37
+ end: string;
38
+ expiresAt: string;
39
+ price: number;
40
+ isPriority: boolean;
41
+ numAppointmentsAvailable: number;
42
+ }
43
+ export interface CancellationReason {
44
+ id: string;
45
+ name: string;
46
+ isRefundable: boolean;
47
+ }
48
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ActivityApi, BodyApi, LinkApi, SleepApi, UserApi, WebhooksApi, WorkoutsApi, ProfileApi, DevicesAPI, MealsApi, LabTestsApi } from './client';
1
+ import { ActivityApi, AtHomePhlebotomyApi, BodyApi, LinkApi, SleepApi, UserApi, WebhooksApi, WorkoutsApi, ProfileApi, DevicesAPI, MealsApi, LabTestsApi } from './client';
2
2
  import { ClientConfig } from './lib/models';
3
3
  import { VitalsApi } from './client/Vitals';
4
4
  import { ProviderApi } from './client/Provider';
@@ -14,6 +14,7 @@ export declare class VitalClient {
14
14
  Webhooks: WebhooksApi;
15
15
  Vitals: VitalsApi;
16
16
  LabTests: LabTestsApi;
17
+ AtHomePhlebotomy: AtHomePhlebotomyApi;
17
18
  Profile: ProfileApi;
18
19
  Providers: ProviderApi;
19
20
  Devices: DevicesAPI;
package/dist/index.js CHANGED
@@ -59,7 +59,7 @@ var VitalClient = /** @class */ (function () {
59
59
  var _this = this;
60
60
  this.config = config;
61
61
  if (!config.api_key) {
62
- throw new Error("You must provide an API key");
62
+ throw new Error('You must provide an API key');
63
63
  }
64
64
  var baseURL;
65
65
  if (this.config.region && this.config.region === 'eu') {
@@ -77,7 +77,7 @@ var VitalClient = /** @class */ (function () {
77
77
  var headers;
78
78
  return __generator(this, function (_a) {
79
79
  headers = config.headers;
80
- headers["x-vital-api-key"] = this.config.api_key;
80
+ headers['x-vital-api-key'] = this.config.api_key;
81
81
  config.headers = __assign({}, headers);
82
82
  return [2 /*return*/, config];
83
83
  });
@@ -94,6 +94,7 @@ var VitalClient = /** @class */ (function () {
94
94
  this.Webhooks = new client_1.WebhooksApi(baseURL.concat('/v2'), axiosApiInstance);
95
95
  this.Vitals = new Vitals_1.VitalsApi(baseURL.concat('/v2'), axiosApiInstance);
96
96
  this.LabTests = new client_1.LabTestsApi(baseURL.concat('/v3'), axiosApiInstance);
97
+ this.AtHomePhlebotomy = new client_1.AtHomePhlebotomyApi(baseURL.concat('/v3'), axiosApiInstance);
97
98
  this.Profile = new client_1.ProfileApi(baseURL.concat('/v2'), axiosApiInstance);
98
99
  this.Providers = new Provider_1.ProviderApi(baseURL.concat('/v2'), axiosApiInstance);
99
100
  this.Devices = new client_1.DevicesAPI(baseURL.concat('/v2'), axiosApiInstance);
package/index.ts CHANGED
@@ -2,6 +2,7 @@ import axios from 'axios';
2
2
  import axiosRetry from 'axios-retry';
3
3
  import {
4
4
  ActivityApi,
5
+ AtHomePhlebotomyApi,
5
6
  BodyApi,
6
7
  LinkApi,
7
8
  SleepApi,
@@ -11,7 +12,7 @@ import {
11
12
  ProfileApi,
12
13
  DevicesAPI,
13
14
  MealsApi,
14
- LabTestsApi
15
+ LabTestsApi,
15
16
  } from './client';
16
17
  import { ClientConfig } from './lib/models';
17
18
  import CONFIG from './lib/config';
@@ -30,14 +31,15 @@ export class VitalClient {
30
31
  Webhooks: WebhooksApi;
31
32
  Vitals: VitalsApi;
32
33
  LabTests: LabTestsApi;
34
+ AtHomePhlebotomy: AtHomePhlebotomyApi;
33
35
  Profile: ProfileApi;
34
36
  Providers: ProviderApi;
35
37
  Devices: DevicesAPI;
36
38
 
37
39
  constructor(config: ClientConfig) {
38
40
  this.config = config;
39
- if(!config.api_key){
40
- throw new Error("You must provide an API key");
41
+ if (!config.api_key) {
42
+ throw new Error('You must provide an API key');
41
43
  }
42
44
  let baseURL;
43
45
  if (this.config.region && this.config.region === 'eu') {
@@ -55,7 +57,7 @@ export class VitalClient {
55
57
  axiosApiInstance.interceptors.request.use(
56
58
  async (config) => {
57
59
  const headers = config.headers;
58
- headers["x-vital-api-key"] = this.config.api_key;
60
+ headers['x-vital-api-key'] = this.config.api_key;
59
61
  config.headers = {
60
62
  ...headers,
61
63
  };
@@ -76,6 +78,10 @@ export class VitalClient {
76
78
  this.Webhooks = new WebhooksApi(baseURL.concat('/v2'), axiosApiInstance);
77
79
  this.Vitals = new VitalsApi(baseURL.concat('/v2'), axiosApiInstance);
78
80
  this.LabTests = new LabTestsApi(baseURL.concat('/v3'), axiosApiInstance);
81
+ this.AtHomePhlebotomy = new AtHomePhlebotomyApi(
82
+ baseURL.concat('/v3'),
83
+ axiosApiInstance
84
+ );
79
85
  this.Profile = new ProfileApi(baseURL.concat('/v2'), axiosApiInstance);
80
86
  this.Providers = new ProviderApi(baseURL.concat('/v2'), axiosApiInstance);
81
87
  this.Devices = new DevicesAPI(baseURL.concat('/v2'), axiosApiInstance);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tryvital/vital-node",
3
- "version": "2.1.7",
3
+ "version": "2.1.8",
4
4
  "description": "Node client for Vital",
5
5
  "author": "maitham",
6
6
  "keywords": [
@@ -22,9 +22,11 @@
22
22
  "lint": "eslint --ext .js,.jsx,.ts ."
23
23
  },
24
24
  "dependencies": {
25
+ "@types/humps": "^2.0.2",
25
26
  "axios": ">=0.21.2 <1.0.0",
26
27
  "axios-retry": "^3.2.4",
27
28
  "crypto": "^1.0.1",
29
+ "humps": "^2.0.1",
28
30
  "svix": "0.64.2"
29
31
  },
30
32
  "devDependencies": {