pha-hermes 1.4.0 → 1.4.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.
@@ -12,7 +12,10 @@ export declare class SFApiClient {
12
12
  workorderClient: SFWorkorderClient;
13
13
  practitionerClient: SFPractitionerClient;
14
14
  constructor(baseUrl?: string);
15
- init(sfClientId: string, sfClientSecret: string): Promise<void>;
15
+ init(sfClientId: string, sfClientSecret: string, onTokenRefresh?: () => Promise<{
16
+ clientId: string;
17
+ clientSecret: string;
18
+ }>): Promise<void>;
16
19
  setInstance(instance: SFApiClient): void;
17
20
  getInstance(): SFApiClient;
18
21
  fetchRoles(): Promise<Role[]>;
@@ -6,6 +6,9 @@ export declare class SFAuthenticator {
6
6
  private refreshToken;
7
7
  private tokenRefreshPromise;
8
8
  constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl?: string);
9
- initializeAuth(clientId: string, clientSecret: string): Promise<void>;
9
+ initializeAuth(clientId: string, clientSecret: string, onTokenRefresh?: () => Promise<{
10
+ clientId: string;
11
+ clientSecret: string;
12
+ }>): Promise<void>;
10
13
  postToken(clientId?: string, clientSecret?: string): Promise<string>;
11
14
  }
@@ -8,4 +8,5 @@ export declare class SFTimesheetClient {
8
8
  getTimesheetsForPractitioner(personnelID: string): Promise<any[]>;
9
9
  getTimesheetHoursIds(workorderId: string): Promise<string[]>;
10
10
  getTimesheetHours(workorderId: string): Promise<TimesheetDayEntry[]>;
11
+ getPayPeriods(): Promise<any>;
11
12
  }
@@ -374,7 +374,7 @@ var SFAuthenticator = /*#__PURE__*/function () {
374
374
  }
375
375
  var _proto = SFAuthenticator.prototype;
376
376
  _proto.initializeAuth = /*#__PURE__*/function () {
377
- var _initializeAuth = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(clientId, clientSecret) {
377
+ var _initializeAuth = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(clientId, clientSecret, onTokenRefresh) {
378
378
  var _this = this;
379
379
  var token;
380
380
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
@@ -390,7 +390,7 @@ var SFAuthenticator = /*#__PURE__*/function () {
390
390
  }, /*#__PURE__*/function () {
391
391
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(error) {
392
392
  var _error$response;
393
- var originalRequest, newToken;
393
+ var originalRequest, newClientCredentials, newClientId, newClientSecret, newToken;
394
394
  return _regeneratorRuntime().wrap(function _callee$(_context) {
395
395
  while (1) switch (_context.prev = _context.next) {
396
396
  case 0:
@@ -398,47 +398,55 @@ var SFAuthenticator = /*#__PURE__*/function () {
398
398
  originalRequest._retryCount = originalRequest._retryCount || 0;
399
399
  // If the error is 401 and we haven't exceeded max retries
400
400
  if (!(((_error$response = error.response) == null ? void 0 : _error$response.status) === 401 && originalRequest._retryCount < 3)) {
401
- _context.next = 22;
401
+ _context.next = 28;
402
402
  break;
403
403
  }
404
404
  originalRequest._retryCount++;
405
405
  _context.prev = 4;
406
- // Use existing token refresh if one is in progress
407
- if (!_this.tokenRefreshPromise) {
408
- _this.tokenRefreshPromise = _this.postToken(clientId, clientSecret);
406
+ if (_this.tokenRefreshPromise) {
407
+ _context.next = 12;
408
+ break;
409
409
  }
410
410
  _context.next = 8;
411
- return _this.tokenRefreshPromise;
411
+ return onTokenRefresh == null ? void 0 : onTokenRefresh();
412
412
  case 8:
413
+ newClientCredentials = _context.sent;
414
+ newClientId = (newClientCredentials == null ? void 0 : newClientCredentials.clientId) || clientId;
415
+ newClientSecret = (newClientCredentials == null ? void 0 : newClientCredentials.clientSecret) || clientSecret;
416
+ _this.tokenRefreshPromise = _this.postToken(newClientId, newClientSecret);
417
+ case 12:
418
+ _context.next = 14;
419
+ return _this.tokenRefreshPromise;
420
+ case 14:
413
421
  newToken = _context.sent;
414
422
  // Clear the refresh promise after it completes
415
423
  _this.tokenRefreshPromise = null;
416
424
  _this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = "Bearer " + newToken;
417
425
  originalRequest.headers['Authorization'] = "Bearer " + newToken;
418
426
  originalRequest.timeout = 5000;
419
- _context.next = 15;
427
+ _context.next = 21;
420
428
  return Promise.race([_this.authenticatedAxiosInstance(originalRequest), new Promise(function (_, reject) {
421
429
  return setTimeout(function () {
422
430
  return reject(new Error('Retry request timeout'));
423
431
  }, originalRequest.timeout);
424
432
  })]);
425
- case 15:
433
+ case 21:
426
434
  return _context.abrupt("return", _context.sent);
427
- case 18:
428
- _context.prev = 18;
435
+ case 24:
436
+ _context.prev = 24;
429
437
  _context.t0 = _context["catch"](4);
430
438
  // Clear the refresh promise if it fails
431
439
  _this.tokenRefreshPromise = null;
432
440
  return _context.abrupt("return", Promise.reject(_context.t0));
433
- case 22:
441
+ case 28:
434
442
  return _context.abrupt("return", Promise.reject(error));
435
- case 23:
443
+ case 29:
436
444
  case "end":
437
445
  return _context.stop();
438
446
  }
439
- }, _callee, null, [[4, 18]]);
447
+ }, _callee, null, [[4, 24]]);
440
448
  }));
441
- return function (_x3) {
449
+ return function (_x4) {
442
450
  return _ref.apply(this, arguments);
443
451
  };
444
452
  }());
@@ -448,7 +456,7 @@ var SFAuthenticator = /*#__PURE__*/function () {
448
456
  }
449
457
  }, _callee2, this);
450
458
  }));
451
- function initializeAuth(_x, _x2) {
459
+ function initializeAuth(_x, _x2, _x3) {
452
460
  return _initializeAuth.apply(this, arguments);
453
461
  }
454
462
  return initializeAuth;
@@ -502,7 +510,7 @@ var SFAuthenticator = /*#__PURE__*/function () {
502
510
  }
503
511
  }, _callee3, this);
504
512
  }));
505
- function postToken(_x4, _x5) {
513
+ function postToken(_x5, _x6) {
506
514
  return _postToken.apply(this, arguments);
507
515
  }
508
516
  return postToken;
@@ -711,6 +719,43 @@ var SFTimesheetClient = /*#__PURE__*/function () {
711
719
  }
712
720
  return getTimesheetHours;
713
721
  }();
722
+ _proto.getPayPeriods = /*#__PURE__*/function () {
723
+ var _getPayPeriods = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
724
+ var url, query, data, payPeriods, _iterator2, _step2, payPeriod;
725
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
726
+ while (1) switch (_context7.prev = _context7.next) {
727
+ case 0:
728
+ url = "/services/data/" + SF_API_VERSION + "/query";
729
+ query = "SELECT Name,\n StartDate__c,\n EndDate__c\n FROM PayPeriod__c";
730
+ _context7.next = 4;
731
+ return this.axiosInstance.get(url, {
732
+ params: {
733
+ q: query
734
+ }
735
+ });
736
+ case 4:
737
+ data = _context7.sent;
738
+ payPeriods = [];
739
+ for (_iterator2 = _createForOfIteratorHelperLoose(data.data.records); !(_step2 = _iterator2()).done;) {
740
+ payPeriod = _step2.value;
741
+ payPeriods.push({
742
+ name: payPeriod.Name,
743
+ startDate: payPeriod.StartDate__c,
744
+ endDate: payPeriod.EndDate__c
745
+ });
746
+ }
747
+ return _context7.abrupt("return", payPeriods);
748
+ case 8:
749
+ case "end":
750
+ return _context7.stop();
751
+ }
752
+ }, _callee7, this);
753
+ }));
754
+ function getPayPeriods() {
755
+ return _getPayPeriods.apply(this, arguments);
756
+ }
757
+ return getPayPeriods;
758
+ }();
714
759
  return SFTimesheetClient;
715
760
  }();
716
761
  function toTimesheetDayEntry(raw) {
@@ -858,19 +903,19 @@ var SFApiClient = /*#__PURE__*/function () {
858
903
  }
859
904
  var _proto = SFApiClient.prototype;
860
905
  _proto.init = /*#__PURE__*/function () {
861
- var _init = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(sfClientId, sfClientSecret) {
906
+ var _init = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(sfClientId, sfClientSecret, onTokenRefresh) {
862
907
  return _regeneratorRuntime().wrap(function _callee$(_context) {
863
908
  while (1) switch (_context.prev = _context.next) {
864
909
  case 0:
865
910
  _context.next = 2;
866
- return this.authenticator.initializeAuth(sfClientId, sfClientSecret);
911
+ return this.authenticator.initializeAuth(sfClientId, sfClientSecret, onTokenRefresh);
867
912
  case 2:
868
913
  case "end":
869
914
  return _context.stop();
870
915
  }
871
916
  }, _callee, this);
872
917
  }));
873
- function init(_x, _x2) {
918
+ function init(_x, _x2, _x3) {
874
919
  return _init.apply(this, arguments);
875
920
  }
876
921
  return init;
@@ -1 +1 @@
1
- {"version":3,"file":"pha-hermes.cjs.development.js","sources":["../src/api/auth/auth.ts","../src/api/timesheet/timesheetClient.ts","../src/api/practitioner/practitionerClient.ts","../src/api/workorder/workorderClient.ts","../src/api/apiClient.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class SFAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private refreshToken: string | undefined = undefined\n private tokenRefreshPromise: Promise<string> | null = null\n\n constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl?: string) {\n this.axiosTokenInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n }\n\n async initializeAuth(clientId: string, clientSecret: string) {\n const token = await this.postToken(clientId, clientSecret)\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`\n\n this.authenticatedAxiosInstance.interceptors.response.use(\n response => response,\n async error => {\n const originalRequest = error.config\n originalRequest._retryCount = originalRequest._retryCount || 0\n\n // If the error is 401 and we haven't exceeded max retries\n if (error.response?.status === 401 && originalRequest._retryCount < 3) {\n originalRequest._retryCount++\n\n try {\n // Use existing token refresh if one is in progress\n if (!this.tokenRefreshPromise) {\n this.tokenRefreshPromise = this.postToken(clientId, clientSecret)\n }\n\n const newToken = await this.tokenRefreshPromise\n // Clear the refresh promise after it completes\n this.tokenRefreshPromise = null\n\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] =\n `Bearer ${newToken}`\n originalRequest.headers['Authorization'] = `Bearer ${newToken}`\n\n originalRequest.timeout = 5000\n\n return await Promise.race([\n this.authenticatedAxiosInstance(originalRequest),\n new Promise((_, reject) =>\n setTimeout(\n () => reject(new Error('Retry request timeout')),\n originalRequest.timeout\n )\n )\n ])\n } catch (refreshError) {\n // Clear the refresh promise if it fails\n this.tokenRefreshPromise = null\n return Promise.reject(refreshError)\n }\n }\n return Promise.reject(error)\n }\n )\n }\n\n async postToken(clientId?: string, clientSecret?: string): Promise<string> {\n const tokenFormRequestBody = new FormData()\n if (this.refreshToken) {\n tokenFormRequestBody.append('refresh_token', this.refreshToken)\n tokenFormRequestBody.append('grant_type', 'refresh_token')\n } else if (clientId && clientSecret) {\n tokenFormRequestBody.append('client_id', clientId)\n tokenFormRequestBody.append('client_secret', clientSecret)\n tokenFormRequestBody.append('grant_type', 'client_credentials')\n } else {\n throw new Error(\n 'Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided'\n )\n }\n\n const response = await this.axiosTokenInstance.post(\n '/services/oauth2/token',\n tokenFormRequestBody,\n {\n headers: tokenFormRequestBody.getHeaders()\n }\n )\n\n this.token = response?.data?.['access_token']\n if (!this.token) throw new Error('Authentication failed, could not get the access token')\n return this.token\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { TimesheetDayEntry } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFTimesheetClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async updateTimesheetHour(timesheetHourId: string, timesheet: TimesheetDayEntry) {\n try {\n const url = `/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${timesheetHourId}`\n const response = await this.axiosInstance.patch(url, {\n Date__c: timesheet.date,\n Callback__c: timesheet.callbackHours,\n HoursEBAdjusted__c: timesheet.regularHours,\n Misc__c: timesheet.miscHours,\n OT1__c: timesheet.overtime1Hours,\n OT2__c: timesheet.overtime2Hours,\n OnCall__c: timesheet.onCallHours,\n Misc1__c: timesheet.misc1HoursA,\n Misc_1_Hours__c: timesheet.misc1HoursB,\n Misc_2_Hours__c: timesheet.misc2Hours,\n Misc_3_Hours__c: timesheet.misc3Hours,\n Misc_4_Hours__c: timesheet.misc4Hours,\n Stat1__c: timesheet.stat1Hours,\n Stat2__c: timesheet.stat2Hours,\n In_Charge__c: timesheet.inChargeHours,\n Shift_Travel_Stipend__c: timesheet.shiftTravelPerDiemHours\n })\n\n if (![200, 204, 304].includes(response.status))\n throw new Error(`got error status code ${response.status}`)\n } catch (error) {\n console.error('Error Updating Timesheet Hour: ', error.message)\n }\n }\n\n async getTimesheetId(workorderId: string): Promise<string> {\n // First we find the correct timesheet id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderId}'\n LIMIT 1`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records[0].Id\n }\n\n async getTimesheetsForPractitioner(personnelID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '${personnelID}')`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let timesheets = []\n\n for (const timesheet of data.data.records) {\n timesheets.push({\n workorderId: timesheet.WorkOrder__c,\n id: timesheet.Id,\n updatedAt: timesheet.LastModifiedDate\n })\n }\n\n return timesheets\n }\n\n async getTimesheetHoursIds(workorderId: string): Promise<string[]> {\n const timesheetId = await this.getTimesheetId(workorderId)\n // First we find the correct timesheet hours id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '${timesheetId}'`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records.map(({ Id }) => Id)\n }\n\n async getTimesheetHours(workorderId: string): Promise<TimesheetDayEntry[]> {\n const timesheetHourIds = await this.getTimesheetHoursIds(workorderId)\n return Promise.all(\n timesheetHourIds.map(async id =>\n this.axiosInstance\n .get(`/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${id}`)\n .then(res => res.data)\n .then(toTimesheetDayEntry)\n )\n )\n }\n}\n\nfunction toTimesheetDayEntry(raw: any): TimesheetDayEntry {\n return {\n id: raw.Id,\n date: raw.Date__c,\n callbackHours: raw.Callback__c,\n regularHours: raw.HoursEBAdjusted__c,\n miscHours: raw.Misc__c,\n overtime1Hours: raw.OT1__c,\n overtime2Hours: raw.OT2__c,\n onCallHours: raw.OnCall__c,\n misc1HoursA: raw.Misc1__c,\n misc1HoursB: raw.Misc_1_Hours__c,\n misc2Hours: raw.Misc_2_Hours__c,\n misc3Hours: raw.Misc_3_Hours__c,\n misc4Hours: raw.Misc_4_Hours__c,\n stat1Hours: raw.Stat1__c,\n stat2Hours: raw.Stat2__c,\n inChargeHours: raw.In_Charge__c,\n shiftTravelPerDiemHours: raw.Shift_Travel_Stipend__c,\n lastModified: raw.LastModifiedDate\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFPractitionerClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchPractitioners(): Promise<Practitioner[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Workorder } from '../../models'\n\nexport class SFWorkorderClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n\n async getWorkordersForPractitioner(practitionerId?: string): Promise<Workorder[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = practitionerId\n ? `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${practitionerId}'`\n : `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n establishmentId: record.HospitalID__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n practitionerId: record.Personnel__c,\n startDate: new Date(record.startdate__c),\n endDate: new Date(record.EndDate__c),\n createdAt: new Date(record.CreatedDate),\n updatedAt: new Date(record.LastModifiedDate)\n })\n )\n )\n } catch (error) {\n console.error('Error fetching work orders: ', error.message)\n throw error\n }\n }\n}","import axios, { AxiosInstance } from 'axios'\nimport { SFAuthenticator } from './auth/auth'\nimport { SFTimesheetClient } from './timesheet/timesheetClient'\nimport { SFPractitionerClient } from './practitioner/practitionerClient'\nimport { Role } from '../models'\nimport { SFWorkorderClient } from './workorder/workorderClient'\n\nexport const SF_API_VERSION: string = 'v57.0'\n\nexport class SFApiClient {\n private instance: SFApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: SFAuthenticator\n private baseUrl: string\n timesheetClient: SFTimesheetClient\n workorderClient: SFWorkorderClient\n practitionerClient: SFPractitionerClient\n\n constructor(baseUrl?: string) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.workorderClient = new SFWorkorderClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n }\n\n async init(sfClientId: string, sfClientSecret: string) {\n // creates authenticator and adds token to axios instance\n await this.authenticator.initializeAuth(sfClientId, sfClientSecret)\n }\n\n setInstance(instance: SFApiClient) {\n this.instance = instance\n }\n getInstance(): SFApiClient {\n return this.instance\n }\n\n async fetchRoles(): Promise<Role[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Label, Value FROM PicklistValueInfo \\\n WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c'\\\n AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' \\\n AND isActive = true`\n return this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Role => ({\n label: record.Label,\n value: record.Value\n })\n )\n )\n } catch (error) {\n console.error('Error fetching roles: ', error.message)\n throw error\n }\n }\n}\n"],"names":["SFAuthenticator","authenticatedAxiosInstance","baseUrl","axios","create","undefined","axiosTokenInstance","defaults","baseURL","_proto","prototype","initializeAuth","_initializeAuth","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","clientId","clientSecret","_this","token","wrap","_callee2$","_context2","prev","next","postToken","sent","headers","common","interceptors","response","use","_ref","_callee","error","_error$response","originalRequest","newToken","_callee$","_context","config","_retryCount","status","tokenRefreshPromise","timeout","Promise","race","_","reject","setTimeout","Error","abrupt","t0","stop","_x3","apply","arguments","_x","_x2","_postToken","_callee3","_response$data","tokenFormRequestBody","_callee3$","_context3","FormData","refreshToken","append","post","getHeaders","data","_x4","_x5","SFTimesheetClient","axiosInstance","updateTimesheetHour","_updateTimesheetHour","timesheetHourId","timesheet","url","SF_API_VERSION","patch","Date__c","date","Callback__c","callbackHours","HoursEBAdjusted__c","regularHours","Misc__c","miscHours","OT1__c","overtime1Hours","OT2__c","overtime2Hours","OnCall__c","onCallHours","Misc1__c","misc1HoursA","Misc_1_Hours__c","misc1HoursB","Misc_2_Hours__c","misc2Hours","Misc_3_Hours__c","misc3Hours","Misc_4_Hours__c","misc4Hours","Stat1__c","stat1Hours","Stat2__c","stat2Hours","In_Charge__c","inChargeHours","Shift_Travel_Stipend__c","shiftTravelPerDiemHours","includes","console","message","getTimesheetId","_getTimesheetId","workorderId","query","_yield$this$axiosInst","records","get","params","q","Id","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","personnelID","timesheets","_iterator","_step","_createForOfIteratorHelperLoose","done","value","push","WorkOrder__c","id","updatedAt","LastModifiedDate","getTimesheetHoursIds","_getTimesheetHoursIds","_callee4","timesheetId","_yield$this$axiosInst2","_callee4$","_context4","map","getTimesheetHours","_getTimesheetHours","_callee6","timesheetHourIds","_callee6$","_context6","all","_ref2","_callee5","_callee5$","_context5","then","res","toTimesheetDayEntry","_x7","_x6","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","firstName","FirstName__c","lastName","LastName__c","email","Email__c","staffId","StaffID__c","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","record","establishmentId","HospitalID__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","startDate","Date","startdate__c","endDate","EndDate__c","createdAt","CreatedDate","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value"],"mappings":"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"}
1
+ {"version":3,"file":"pha-hermes.cjs.development.js","sources":["../src/api/auth/auth.ts","../src/api/timesheet/timesheetClient.ts","../src/api/practitioner/practitionerClient.ts","../src/api/workorder/workorderClient.ts","../src/api/apiClient.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class SFAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private refreshToken: string | undefined = undefined\n private tokenRefreshPromise: Promise<string> | null = null\n\n constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl?: string) {\n this.axiosTokenInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n }\n\n async initializeAuth(\n clientId: string,\n clientSecret: string,\n onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>\n ) {\n const token = await this.postToken(clientId, clientSecret)\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`\n\n this.authenticatedAxiosInstance.interceptors.response.use(\n response => response,\n async error => {\n const originalRequest = error.config\n originalRequest._retryCount = originalRequest._retryCount || 0\n\n // If the error is 401 and we haven't exceeded max retries\n if (error.response?.status === 401 && originalRequest._retryCount < 3) {\n originalRequest._retryCount++\n\n try {\n // Use existing token refresh if one is in progress\n if (!this.tokenRefreshPromise) {\n const newClientCredentials = await onTokenRefresh?.()\n const newClientId = newClientCredentials?.clientId || clientId\n const newClientSecret =\n newClientCredentials?.clientSecret || clientSecret\n this.tokenRefreshPromise = this.postToken(newClientId, newClientSecret)\n }\n\n const newToken = await this.tokenRefreshPromise\n // Clear the refresh promise after it completes\n this.tokenRefreshPromise = null\n\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] =\n `Bearer ${newToken}`\n originalRequest.headers['Authorization'] = `Bearer ${newToken}`\n\n originalRequest.timeout = 5000\n\n return await Promise.race([\n this.authenticatedAxiosInstance(originalRequest),\n new Promise((_, reject) =>\n setTimeout(\n () => reject(new Error('Retry request timeout')),\n originalRequest.timeout\n )\n )\n ])\n } catch (refreshError) {\n // Clear the refresh promise if it fails\n this.tokenRefreshPromise = null\n return Promise.reject(refreshError)\n }\n }\n return Promise.reject(error)\n }\n )\n }\n\n async postToken(clientId?: string, clientSecret?: string): Promise<string> {\n const tokenFormRequestBody = new FormData()\n if (this.refreshToken) {\n tokenFormRequestBody.append('refresh_token', this.refreshToken)\n tokenFormRequestBody.append('grant_type', 'refresh_token')\n } else if (clientId && clientSecret) {\n tokenFormRequestBody.append('client_id', clientId)\n tokenFormRequestBody.append('client_secret', clientSecret)\n tokenFormRequestBody.append('grant_type', 'client_credentials')\n } else {\n throw new Error(\n 'Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided'\n )\n }\n\n const response = await this.axiosTokenInstance.post(\n '/services/oauth2/token',\n tokenFormRequestBody,\n {\n headers: tokenFormRequestBody.getHeaders()\n }\n )\n\n this.token = response?.data?.['access_token']\n if (!this.token) throw new Error('Authentication failed, could not get the access token')\n return this.token\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { TimesheetDayEntry } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFTimesheetClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async updateTimesheetHour(timesheetHourId: string, timesheet: TimesheetDayEntry) {\n try {\n const url = `/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${timesheetHourId}`\n const response = await this.axiosInstance.patch(url, {\n Date__c: timesheet.date,\n Callback__c: timesheet.callbackHours,\n HoursEBAdjusted__c: timesheet.regularHours,\n Misc__c: timesheet.miscHours,\n OT1__c: timesheet.overtime1Hours,\n OT2__c: timesheet.overtime2Hours,\n OnCall__c: timesheet.onCallHours,\n Misc1__c: timesheet.misc1HoursA,\n Misc_1_Hours__c: timesheet.misc1HoursB,\n Misc_2_Hours__c: timesheet.misc2Hours,\n Misc_3_Hours__c: timesheet.misc3Hours,\n Misc_4_Hours__c: timesheet.misc4Hours,\n Stat1__c: timesheet.stat1Hours,\n Stat2__c: timesheet.stat2Hours,\n In_Charge__c: timesheet.inChargeHours,\n Shift_Travel_Stipend__c: timesheet.shiftTravelPerDiemHours\n })\n\n if (![200, 204, 304].includes(response.status))\n throw new Error(`got error status code ${response.status}`)\n } catch (error) {\n console.error('Error Updating Timesheet Hour: ', error.message)\n }\n }\n\n async getTimesheetId(workorderId: string): Promise<string> {\n // First we find the correct timesheet id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderId}'\n LIMIT 1`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records[0].Id\n }\n\n async getTimesheetsForPractitioner(personnelID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '${personnelID}')`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let timesheets = []\n\n for (const timesheet of data.data.records) {\n timesheets.push({\n workorderId: timesheet.WorkOrder__c,\n id: timesheet.Id,\n updatedAt: timesheet.LastModifiedDate\n })\n }\n\n return timesheets\n }\n\n async getTimesheetHoursIds(workorderId: string): Promise<string[]> {\n const timesheetId = await this.getTimesheetId(workorderId)\n // First we find the correct timesheet hours id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '${timesheetId}'`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records.map(({ Id }) => Id)\n }\n\n async getTimesheetHours(workorderId: string): Promise<TimesheetDayEntry[]> {\n const timesheetHourIds = await this.getTimesheetHoursIds(workorderId)\n return Promise.all(\n timesheetHourIds.map(async id =>\n this.axiosInstance\n .get(`/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${id}`)\n .then(res => res.data)\n .then(toTimesheetDayEntry)\n )\n )\n }\n\n async getPayPeriods(): Promise<any> {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT Name,\n StartDate__c,\n EndDate__c\n FROM PayPeriod__c`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriods = []\n\n for (const payPeriod of data.data.records) {\n payPeriods.push({\n name: payPeriod.Name,\n startDate: payPeriod.StartDate__c,\n endDate: payPeriod.EndDate__c\n })\n }\n\n return payPeriods\n }\n}\n\nfunction toTimesheetDayEntry(raw: any): TimesheetDayEntry {\n return {\n id: raw.Id,\n date: raw.Date__c,\n callbackHours: raw.Callback__c,\n regularHours: raw.HoursEBAdjusted__c,\n miscHours: raw.Misc__c,\n overtime1Hours: raw.OT1__c,\n overtime2Hours: raw.OT2__c,\n onCallHours: raw.OnCall__c,\n misc1HoursA: raw.Misc1__c,\n misc1HoursB: raw.Misc_1_Hours__c,\n misc2Hours: raw.Misc_2_Hours__c,\n misc3Hours: raw.Misc_3_Hours__c,\n misc4Hours: raw.Misc_4_Hours__c,\n stat1Hours: raw.Stat1__c,\n stat2Hours: raw.Stat2__c,\n inChargeHours: raw.In_Charge__c,\n shiftTravelPerDiemHours: raw.Shift_Travel_Stipend__c,\n lastModified: raw.LastModifiedDate\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFPractitionerClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchPractitioners(): Promise<Practitioner[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Workorder } from '../../models'\n\nexport class SFWorkorderClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n\n async getWorkordersForPractitioner(practitionerId?: string): Promise<Workorder[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = practitionerId\n ? `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${practitionerId}'`\n : `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n establishmentId: record.HospitalID__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n practitionerId: record.Personnel__c,\n startDate: new Date(record.startdate__c),\n endDate: new Date(record.EndDate__c),\n createdAt: new Date(record.CreatedDate),\n updatedAt: new Date(record.LastModifiedDate)\n })\n )\n )\n } catch (error) {\n console.error('Error fetching work orders: ', error.message)\n throw error\n }\n }\n}","import axios, { AxiosInstance } from 'axios'\nimport { SFAuthenticator } from './auth/auth'\nimport { SFTimesheetClient } from './timesheet/timesheetClient'\nimport { SFPractitionerClient } from './practitioner/practitionerClient'\nimport { Role } from '../models'\nimport { SFWorkorderClient } from './workorder/workorderClient'\n\nexport const SF_API_VERSION: string = 'v57.0'\n\nexport class SFApiClient {\n private instance: SFApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: SFAuthenticator\n private baseUrl: string\n timesheetClient: SFTimesheetClient\n workorderClient: SFWorkorderClient\n practitionerClient: SFPractitionerClient\n\n constructor(baseUrl?: string) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.workorderClient = new SFWorkorderClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n }\n\n async init(\n sfClientId: string,\n sfClientSecret: string,\n onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>\n ) {\n // creates authenticator and adds token to axios instance\n await this.authenticator.initializeAuth(sfClientId, sfClientSecret, onTokenRefresh)\n }\n\n setInstance(instance: SFApiClient) {\n this.instance = instance\n }\n getInstance(): SFApiClient {\n return this.instance\n }\n\n async fetchRoles(): Promise<Role[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Label, Value FROM PicklistValueInfo \\\n WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c'\\\n AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' \\\n AND isActive = true`\n return this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Role => ({\n label: record.Label,\n value: record.Value\n })\n )\n )\n } catch (error) {\n console.error('Error fetching roles: ', error.message)\n throw error\n }\n }\n}\n"],"names":["SFAuthenticator","authenticatedAxiosInstance","baseUrl","axios","create","undefined","axiosTokenInstance","defaults","baseURL","_proto","prototype","initializeAuth","_initializeAuth","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","clientId","clientSecret","onTokenRefresh","_this","token","wrap","_callee2$","_context2","prev","next","postToken","sent","headers","common","interceptors","response","use","_ref","_callee","error","_error$response","originalRequest","newClientCredentials","newClientId","newClientSecret","newToken","_callee$","_context","config","_retryCount","status","tokenRefreshPromise","timeout","Promise","race","_","reject","setTimeout","Error","abrupt","t0","stop","_x4","apply","arguments","_x","_x2","_x3","_postToken","_callee3","_response$data","tokenFormRequestBody","_callee3$","_context3","FormData","refreshToken","append","post","getHeaders","data","_x5","_x6","SFTimesheetClient","axiosInstance","updateTimesheetHour","_updateTimesheetHour","timesheetHourId","timesheet","url","SF_API_VERSION","patch","Date__c","date","Callback__c","callbackHours","HoursEBAdjusted__c","regularHours","Misc__c","miscHours","OT1__c","overtime1Hours","OT2__c","overtime2Hours","OnCall__c","onCallHours","Misc1__c","misc1HoursA","Misc_1_Hours__c","misc1HoursB","Misc_2_Hours__c","misc2Hours","Misc_3_Hours__c","misc3Hours","Misc_4_Hours__c","misc4Hours","Stat1__c","stat1Hours","Stat2__c","stat2Hours","In_Charge__c","inChargeHours","Shift_Travel_Stipend__c","shiftTravelPerDiemHours","includes","console","message","getTimesheetId","_getTimesheetId","workorderId","query","_yield$this$axiosInst","records","get","params","q","Id","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","personnelID","timesheets","_iterator","_step","_createForOfIteratorHelperLoose","done","value","push","WorkOrder__c","id","updatedAt","LastModifiedDate","getTimesheetHoursIds","_getTimesheetHoursIds","_callee4","timesheetId","_yield$this$axiosInst2","_callee4$","_context4","map","getTimesheetHours","_getTimesheetHours","_callee6","timesheetHourIds","_callee6$","_context6","all","_ref2","_callee5","_callee5$","_context5","then","res","toTimesheetDayEntry","_x7","getPayPeriods","_getPayPeriods","_callee7","payPeriods","_iterator2","_step2","payPeriod","_callee7$","_context7","name","Name","startDate","StartDate__c","endDate","EndDate__c","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","firstName","FirstName__c","lastName","LastName__c","email","Email__c","staffId","StaffID__c","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","record","establishmentId","HospitalID__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","Date","startdate__c","createdAt","CreatedDate","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var e=t(require("axios")),r=t(require("form-data"));function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function o(t,e,r,n,o,a,i){try{var s=t[a](i),c=s.value}catch(t){return void r(t)}s.done?e(c):Promise.resolve(c).then(n,o)}function a(t){return function(){var e=this,r=arguments;return new Promise((function(n,a){var i=t.apply(e,r);function s(t){o(i,n,a,s,c,"next",t)}function c(t){o(i,n,a,s,c,"throw",t)}s(void 0)}))}}function i(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return n(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var o=0;return function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(){s=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function h(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{h({},"")}catch(t){h=function(t,e,r){return t[e]=r}}function f(t,e,r,n){var a=Object.create((e&&e.prototype instanceof m?e:m).prototype),i=new S(n||[]);return o(a,"_invoke",{value:H(t,r,i)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=f;var p="suspendedStart",d="executing",_="completed",v={};function m(){}function y(){}function g(){}var w={};h(w,i,(function(){return this}));var x=Object.getPrototypeOf,b=x&&x(x(O([])));b&&b!==r&&n.call(b,i)&&(w=b);var E=g.prototype=m.prototype=Object.create(w);function k(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function I(t,e){function r(o,a,i,s){var c=l(t[o],t,a);if("throw"!==c.type){var u=c.arg,h=u.value;return h&&"object"==typeof h&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){r("next",t,i,s)}),(function(t){r("throw",t,i,s)})):e.resolve(h).then((function(t){u.value=t,i(u)}),(function(t){return r("throw",t,i,s)}))}s(c.arg)}var a;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return a=a?a.then(o,o):o()}})}function H(e,r,n){var o=p;return function(a,i){if(o===d)throw Error("Generator is already running");if(o===_){if("throw"===a)throw i;return{value:t,done:!0}}for(n.method=a,n.arg=i;;){var s=n.delegate;if(s){var c=T(s,n);if(c){if(c===v)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=_,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var u=l(e,r,n);if("normal"===u.type){if(o=n.done?_:"suspendedYield",u.arg===v)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o=_,n.method="throw",n.arg=u.arg)}}}function T(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,T(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),v;var a=l(o,e.iterator,r.arg);if("throw"===a.type)return r.method="throw",r.arg=a.arg,r.delegate=null,v;var i=a.arg;return i?i.done?(r[e.resultName]=i.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,v):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,v)}function L(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function S(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(L,this),this.reset(!0)}function O(e){if(e||""===e){var r=e[i];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return a.next=a}}throw new TypeError(typeof e+" is not iterable")}return y.prototype=g,o(E,"constructor",{value:g,configurable:!0}),o(g,"constructor",{value:y,configurable:!0}),y.displayName=h(g,u,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===y||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,g):(t.__proto__=g,h(t,u,"GeneratorFunction")),t.prototype=Object.create(E),t},e.awrap=function(t){return{__await:t}},k(I.prototype),h(I.prototype,c,(function(){return this})),e.AsyncIterator=I,e.async=function(t,r,n,o,a){void 0===a&&(a=Promise);var i=new I(f(t,r,n,o),a);return e.isGeneratorFunction(r)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},k(E),h(E,u,"Generator"),h(E,i,(function(){return this})),h(E,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=O,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(P),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return s.type="throw",s.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],s=i.completion;if("root"===i.tryLoc)return o("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return o(i.catchLoc,!0);if(this.prev<i.finallyLoc)return o(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return o(i.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return o(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=t,i.arg=e,a?(this.method="next",this.next=a.finallyLoc,v):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),P(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:O(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}var c=function(){function t(t,r){this.axiosTokenInstance=e.create(),this.token=void 0,this.refreshToken=void 0,this.tokenRefreshPromise=null,this.axiosTokenInstance.defaults.baseURL=null!=r?r:"https://do0000000d247eaa--phealth.sandbox.my.salesforce.com",this.authenticatedAxiosInstance=t}var n=t.prototype;return n.initializeAuth=function(){var t=a(s().mark((function t(e,r){var n=this;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.postToken(e,r);case 2:this.authenticatedAxiosInstance.defaults.headers.common.Authorization="Bearer "+t.sent,this.authenticatedAxiosInstance.interceptors.response.use((function(t){return t}),function(){var t=a(s().mark((function t(o){var a,i,c;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if((i=o.config)._retryCount=i._retryCount||0,!(401===(null==(a=o.response)?void 0:a.status)&&i._retryCount<3)){t.next=22;break}return i._retryCount++,t.prev=4,n.tokenRefreshPromise||(n.tokenRefreshPromise=n.postToken(e,r)),t.next=8,n.tokenRefreshPromise;case 8:return c=t.sent,n.tokenRefreshPromise=null,n.authenticatedAxiosInstance.defaults.headers.common.Authorization="Bearer "+c,i.headers.Authorization="Bearer "+c,i.timeout=5e3,t.next=15,Promise.race([n.authenticatedAxiosInstance(i),new Promise((function(t,e){return setTimeout((function(){return e(new Error("Retry request timeout"))}),i.timeout)}))]);case 15:return t.abrupt("return",t.sent);case 18:return t.prev=18,t.t0=t.catch(4),n.tokenRefreshPromise=null,t.abrupt("return",Promise.reject(t.t0));case 22:return t.abrupt("return",Promise.reject(o));case 23:case"end":return t.stop()}}),t,null,[[4,18]])})));return function(e){return t.apply(this,arguments)}}());case 5:case"end":return t.stop()}}),t,this)})));return function(e,r){return t.apply(this,arguments)}}(),n.postToken=function(){var t=a(s().mark((function t(e,n){var o,a,i;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=new r,!this.refreshToken){t.next=6;break}a.append("refresh_token",this.refreshToken),a.append("grant_type","refresh_token"),t.next=13;break;case 6:if(!e||!n){t.next=12;break}a.append("client_id",e),a.append("client_secret",n),a.append("grant_type","client_credentials"),t.next=13;break;case 12:throw new Error("Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided");case 13:return t.next=15,this.axiosTokenInstance.post("/services/oauth2/token",a,{headers:a.getHeaders()});case 15:if(this.token=null==(i=t.sent)||null==(o=i.data)?void 0:o.access_token,this.token){t.next=19;break}throw new Error("Authentication failed, could not get the access token");case 19:return t.abrupt("return",this.token);case 20:case"end":return t.stop()}}),t,this)})));return function(e,r){return t.apply(this,arguments)}}(),t}(),u=function(){function t(t){this.axiosInstance=t}var e=t.prototype;return e.updateTimesheetHour=function(){var t=a(s().mark((function t(e,r){var n,o;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,n="/services/data/"+d+"/sobjects/TimeSheetHour__c/"+e,t.next=4,this.axiosInstance.patch(n,{Date__c:r.date,Callback__c:r.callbackHours,HoursEBAdjusted__c:r.regularHours,Misc__c:r.miscHours,OT1__c:r.overtime1Hours,OT2__c:r.overtime2Hours,OnCall__c:r.onCallHours,Misc1__c:r.misc1HoursA,Misc_1_Hours__c:r.misc1HoursB,Misc_2_Hours__c:r.misc2Hours,Misc_3_Hours__c:r.misc3Hours,Misc_4_Hours__c:r.misc4Hours,Stat1__c:r.stat1Hours,Stat2__c:r.stat2Hours,In_Charge__c:r.inChargeHours,Shift_Travel_Stipend__c:r.shiftTravelPerDiemHours});case 4:if([200,204,304].includes((o=t.sent).status)){t.next=7;break}throw new Error("got error status code "+o.status);case 7:t.next=12;break;case 9:t.prev=9,t.t0=t.catch(0),console.error("Error Updating Timesheet Hour: ",t.t0.message);case 12:case"end":return t.stop()}}),t,this,[[0,9]])})));return function(e,r){return t.apply(this,arguments)}}(),e.getTimesheetId=function(){var t=a(s().mark((function t(e){var r,n;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="/services/data/"+d+"/query",n="SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '"+e+"'\n LIMIT 1",t.next=4,this.axiosInstance.get(r,{params:{q:n}});case 4:return t.abrupt("return",t.sent.data.records[0].Id);case 7:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getTimesheetsForPractitioner=function(){var t=a(s().mark((function t(e){var r,n,o,a,c,u;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="/services/data/"+d+"/query",n="SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '"+e+"')",t.next=4,this.axiosInstance.get(r,{params:{q:n}});case 4:for(o=[],a=i(t.sent.data.records);!(c=a()).done;)o.push({workorderId:(u=c.value).WorkOrder__c,id:u.Id,updatedAt:u.LastModifiedDate});return t.abrupt("return",o);case 8:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getTimesheetHoursIds=function(){var t=a(s().mark((function t(e){var r,n;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getTimesheetId(e);case 2:return r="/services/data/"+d+"/query",n="SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '"+t.sent+"'",t.next=7,this.axiosInstance.get(r,{params:{q:n}});case 7:return t.abrupt("return",t.sent.data.records.map((function(t){return t.Id})));case 10:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getTimesheetHours=function(){var t=a(s().mark((function t(e){var r=this;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getTimesheetHoursIds(e);case 2:return t.abrupt("return",Promise.all(t.sent.map(function(){var t=a(s().mark((function t(e){return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",r.axiosInstance.get("/services/data/"+d+"/sobjects/TimeSheetHour__c/"+e).then((function(t){return t.data})).then(h));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}())));case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),t}();function h(t){return{id:t.Id,date:t.Date__c,callbackHours:t.Callback__c,regularHours:t.HoursEBAdjusted__c,miscHours:t.Misc__c,overtime1Hours:t.OT1__c,overtime2Hours:t.OT2__c,onCallHours:t.OnCall__c,misc1HoursA:t.Misc1__c,misc1HoursB:t.Misc_1_Hours__c,misc2Hours:t.Misc_2_Hours__c,misc3Hours:t.Misc_3_Hours__c,misc4Hours:t.Misc_4_Hours__c,stat1Hours:t.Stat1__c,stat2Hours:t.Stat2__c,inChargeHours:t.In_Charge__c,shiftTravelPerDiemHours:t.Shift_Travel_Stipend__c,lastModified:t.LastModifiedDate}}var f=function(){function t(t){this.axiosInstance=t}return t.prototype.fetchPractitioners=function(){var t=a(s().mark((function t(){var e;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,e="/services/data/"+d+"/query",t.next=5,this.axiosInstance.get(e,{params:{q:"\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n "}});case 5:return t.abrupt("return",t.sent.data.records.map(l));case 10:throw t.prev=10,t.t0=t.catch(0),console.error("Error fetching practitioners: ",t.t0.message),t.t0;case 14:case"end":return t.stop()}}),t,this,[[0,10]])})));return function(){return t.apply(this,arguments)}}(),t}();function l(t){return{id:t.Id,firstName:t.FirstName__c,lastName:t.LastName__c,email:t.Email__c,staffId:t.StaffID__c}}var p=function(){function t(t){this.axiosInstance=t}return t.prototype.getWorkordersForPractitioner=function(){var t=a(s().mark((function t(e){var r,n;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,r="/services/data/"+d+"/query",n=e?"SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '"+e+"'":"SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c",t.next=5,this.axiosInstance.get(r,{params:{q:n}}).then((function(t){return t.data.records.map((function(t){return{id:t.Id,establishmentId:t.HospitalID__c,establishmentName:t.HospitalName__c,role:t.ProfessionalDesignation__c,practitionerId:t.Personnel__c,startDate:new Date(t.startdate__c),endDate:new Date(t.EndDate__c),createdAt:new Date(t.CreatedDate),updatedAt:new Date(t.LastModifiedDate)}}))}));case 5:return t.abrupt("return",t.sent);case 8:throw t.prev=8,t.t0=t.catch(0),console.error("Error fetching work orders: ",t.t0.message),t.t0;case 12:case"end":return t.stop()}}),t,this,[[0,8]])})));return function(e){return t.apply(this,arguments)}}(),t}(),d="v57.0";exports.SFApiClient=function(){function t(t){this.instance=void 0,this.axiosInstance=e.create(),this.baseUrl=t,this.axiosInstance.defaults.baseURL=null!=t?t:"https://do0000000d247eaa--phealth.sandbox.my.salesforce.com",this.authenticator=new c(this.axiosInstance,this.baseUrl),this.timesheetClient=new u(this.axiosInstance),this.workorderClient=new p(this.axiosInstance),this.practitionerClient=new f(this.axiosInstance)}var r=t.prototype;return r.init=function(){var t=a(s().mark((function t(e,r){return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.authenticator.initializeAuth(e,r);case 2:case"end":return t.stop()}}),t,this)})));return function(e,r){return t.apply(this,arguments)}}(),r.setInstance=function(t){this.instance=t},r.getInstance=function(){return this.instance},r.fetchRoles=function(){var t=a(s().mark((function t(){return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.abrupt("return",this.axiosInstance.get("/services/data/"+d+"/query",{params:{q:"SELECT Label, Value FROM PicklistValueInfo WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c' AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' AND isActive = true"}}).then((function(t){return t.data.records.map((function(t){return{label:t.Label,value:t.Value}}))})));case 6:throw t.prev=6,t.t0=t.catch(0),console.error("Error fetching roles: ",t.t0.message),t.t0;case 10:case"end":return t.stop()}}),t,this,[[0,6]])})));return function(){return t.apply(this,arguments)}}(),t}(),exports.SFAuthenticator=c,exports.SFPractitionerClient=f,exports.SFTimesheetClient=u;
1
+ "use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var e=t(require("axios")),r=t(require("form-data"));function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function a(t,e,r,n,a,o,i){try{var s=t[o](i),c=s.value}catch(t){return void r(t)}s.done?e(c):Promise.resolve(c).then(n,a)}function o(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function s(t){a(i,n,o,s,c,"next",t)}function c(t){a(i,n,o,s,c,"throw",t)}s(void 0)}))}}function i(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return n(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var a=0;return function(){return a>=t.length?{done:!0}:{done:!1,value:t[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(){s=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,a=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function h(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{h({},"")}catch(t){h=function(t,e,r){return t[e]=r}}function f(t,e,r,n){var o=Object.create((e&&e.prototype instanceof m?e:m).prototype),i=new S(n||[]);return a(o,"_invoke",{value:H(t,r,i)}),o}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=f;var p="suspendedStart",d="executing",_="completed",v={};function m(){}function y(){}function g(){}var x={};h(x,i,(function(){return this}));var w=Object.getPrototypeOf,b=w&&w(w(D([])));b&&b!==r&&n.call(b,i)&&(x=b);var E=g.prototype=m.prototype=Object.create(x);function k(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function I(t,e){function r(a,o,i,s){var c=l(t[a],t,o);if("throw"!==c.type){var u=c.arg,h=u.value;return h&&"object"==typeof h&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){r("next",t,i,s)}),(function(t){r("throw",t,i,s)})):e.resolve(h).then((function(t){u.value=t,i(u)}),(function(t){return r("throw",t,i,s)}))}s(c.arg)}var o;a(this,"_invoke",{value:function(t,n){function a(){return new e((function(e,a){r(t,n,e,a)}))}return o=o?o.then(a,a):a()}})}function H(e,r,n){var a=p;return function(o,i){if(a===d)throw Error("Generator is already running");if(a===_){if("throw"===o)throw i;return{value:t,done:!0}}for(n.method=o,n.arg=i;;){var s=n.delegate;if(s){var c=T(s,n);if(c){if(c===v)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(a===p)throw a=_,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a=d;var u=l(e,r,n);if("normal"===u.type){if(a=n.done?_:"suspendedYield",u.arg===v)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(a=_,n.method="throw",n.arg=u.arg)}}}function T(e,r){var n=r.method,a=e.iterator[n];if(a===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,T(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),v;var o=l(a,e.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,v;var i=o.arg;return i?i.done?(r[e.resultName]=i.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,v):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,v)}function L(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function S(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(L,this),this.reset(!0)}function D(e){if(e||""===e){var r=e[i];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var a=-1,o=function r(){for(;++a<e.length;)if(n.call(e,a))return r.value=e[a],r.done=!1,r;return r.value=t,r.done=!0,r};return o.next=o}}throw new TypeError(typeof e+" is not iterable")}return y.prototype=g,a(E,"constructor",{value:g,configurable:!0}),a(g,"constructor",{value:y,configurable:!0}),y.displayName=h(g,u,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===y||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,g):(t.__proto__=g,h(t,u,"GeneratorFunction")),t.prototype=Object.create(E),t},e.awrap=function(t){return{__await:t}},k(I.prototype),h(I.prototype,c,(function(){return this})),e.AsyncIterator=I,e.async=function(t,r,n,a,o){void 0===o&&(o=Promise);var i=new I(f(t,r,n,a),o);return e.isGeneratorFunction(r)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},k(E),h(E,u,"Generator"),h(E,i,(function(){return this})),h(E,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=D,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(P),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function a(n,a){return s.type="throw",s.arg=e,r.next=n,a&&(r.method="next",r.arg=t),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=t,i.arg=e,o?(this.method="next",this.next=o.finallyLoc,v):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),P(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var a=n.arg;P(r)}return a}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:D(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}var c=function(){function t(t,r){this.axiosTokenInstance=e.create(),this.token=void 0,this.refreshToken=void 0,this.tokenRefreshPromise=null,this.axiosTokenInstance.defaults.baseURL=null!=r?r:"https://do0000000d247eaa--phealth.sandbox.my.salesforce.com",this.authenticatedAxiosInstance=t}var n=t.prototype;return n.initializeAuth=function(){var t=o(s().mark((function t(e,r,n){var a=this;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.postToken(e,r);case 2:this.authenticatedAxiosInstance.defaults.headers.common.Authorization="Bearer "+t.sent,this.authenticatedAxiosInstance.interceptors.response.use((function(t){return t}),function(){var t=o(s().mark((function t(o){var i,c,u,h;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if((c=o.config)._retryCount=c._retryCount||0,!(401===(null==(i=o.response)?void 0:i.status)&&c._retryCount<3)){t.next=28;break}if(c._retryCount++,t.prev=4,a.tokenRefreshPromise){t.next=12;break}return t.next=8,null==n?void 0:n();case 8:a.tokenRefreshPromise=a.postToken((null==(u=t.sent)?void 0:u.clientId)||e,(null==u?void 0:u.clientSecret)||r);case 12:return t.next=14,a.tokenRefreshPromise;case 14:return h=t.sent,a.tokenRefreshPromise=null,a.authenticatedAxiosInstance.defaults.headers.common.Authorization="Bearer "+h,c.headers.Authorization="Bearer "+h,c.timeout=5e3,t.next=21,Promise.race([a.authenticatedAxiosInstance(c),new Promise((function(t,e){return setTimeout((function(){return e(new Error("Retry request timeout"))}),c.timeout)}))]);case 21:return t.abrupt("return",t.sent);case 24:return t.prev=24,t.t0=t.catch(4),a.tokenRefreshPromise=null,t.abrupt("return",Promise.reject(t.t0));case 28:return t.abrupt("return",Promise.reject(o));case 29:case"end":return t.stop()}}),t,null,[[4,24]])})));return function(e){return t.apply(this,arguments)}}());case 5:case"end":return t.stop()}}),t,this)})));return function(e,r,n){return t.apply(this,arguments)}}(),n.postToken=function(){var t=o(s().mark((function t(e,n){var a,o,i;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o=new r,!this.refreshToken){t.next=6;break}o.append("refresh_token",this.refreshToken),o.append("grant_type","refresh_token"),t.next=13;break;case 6:if(!e||!n){t.next=12;break}o.append("client_id",e),o.append("client_secret",n),o.append("grant_type","client_credentials"),t.next=13;break;case 12:throw new Error("Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided");case 13:return t.next=15,this.axiosTokenInstance.post("/services/oauth2/token",o,{headers:o.getHeaders()});case 15:if(this.token=null==(i=t.sent)||null==(a=i.data)?void 0:a.access_token,this.token){t.next=19;break}throw new Error("Authentication failed, could not get the access token");case 19:return t.abrupt("return",this.token);case 20:case"end":return t.stop()}}),t,this)})));return function(e,r){return t.apply(this,arguments)}}(),t}(),u=function(){function t(t){this.axiosInstance=t}var e=t.prototype;return e.updateTimesheetHour=function(){var t=o(s().mark((function t(e,r){var n,a;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,n="/services/data/"+d+"/sobjects/TimeSheetHour__c/"+e,t.next=4,this.axiosInstance.patch(n,{Date__c:r.date,Callback__c:r.callbackHours,HoursEBAdjusted__c:r.regularHours,Misc__c:r.miscHours,OT1__c:r.overtime1Hours,OT2__c:r.overtime2Hours,OnCall__c:r.onCallHours,Misc1__c:r.misc1HoursA,Misc_1_Hours__c:r.misc1HoursB,Misc_2_Hours__c:r.misc2Hours,Misc_3_Hours__c:r.misc3Hours,Misc_4_Hours__c:r.misc4Hours,Stat1__c:r.stat1Hours,Stat2__c:r.stat2Hours,In_Charge__c:r.inChargeHours,Shift_Travel_Stipend__c:r.shiftTravelPerDiemHours});case 4:if([200,204,304].includes((a=t.sent).status)){t.next=7;break}throw new Error("got error status code "+a.status);case 7:t.next=12;break;case 9:t.prev=9,t.t0=t.catch(0),console.error("Error Updating Timesheet Hour: ",t.t0.message);case 12:case"end":return t.stop()}}),t,this,[[0,9]])})));return function(e,r){return t.apply(this,arguments)}}(),e.getTimesheetId=function(){var t=o(s().mark((function t(e){var r,n;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="/services/data/"+d+"/query",n="SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '"+e+"'\n LIMIT 1",t.next=4,this.axiosInstance.get(r,{params:{q:n}});case 4:return t.abrupt("return",t.sent.data.records[0].Id);case 7:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getTimesheetsForPractitioner=function(){var t=o(s().mark((function t(e){var r,n,a,o,c,u;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="/services/data/"+d+"/query",n="SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '"+e+"')",t.next=4,this.axiosInstance.get(r,{params:{q:n}});case 4:for(a=[],o=i(t.sent.data.records);!(c=o()).done;)a.push({workorderId:(u=c.value).WorkOrder__c,id:u.Id,updatedAt:u.LastModifiedDate});return t.abrupt("return",a);case 8:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getTimesheetHoursIds=function(){var t=o(s().mark((function t(e){var r,n;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getTimesheetId(e);case 2:return r="/services/data/"+d+"/query",n="SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '"+t.sent+"'",t.next=7,this.axiosInstance.get(r,{params:{q:n}});case 7:return t.abrupt("return",t.sent.data.records.map((function(t){return t.Id})));case 10:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getTimesheetHours=function(){var t=o(s().mark((function t(e){var r=this;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getTimesheetHoursIds(e);case 2:return t.abrupt("return",Promise.all(t.sent.map(function(){var t=o(s().mark((function t(e){return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",r.axiosInstance.get("/services/data/"+d+"/sobjects/TimeSheetHour__c/"+e).then((function(t){return t.data})).then(h));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}())));case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getPayPeriods=function(){var t=o(s().mark((function t(){var e,r,n,a,o;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e="/services/data/"+d+"/query",t.next=4,this.axiosInstance.get(e,{params:{q:"SELECT Name,\n StartDate__c,\n EndDate__c\n FROM PayPeriod__c"}});case 4:for(r=[],n=i(t.sent.data.records);!(a=n()).done;)r.push({name:(o=a.value).Name,startDate:o.StartDate__c,endDate:o.EndDate__c});return t.abrupt("return",r);case 8:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),t}();function h(t){return{id:t.Id,date:t.Date__c,callbackHours:t.Callback__c,regularHours:t.HoursEBAdjusted__c,miscHours:t.Misc__c,overtime1Hours:t.OT1__c,overtime2Hours:t.OT2__c,onCallHours:t.OnCall__c,misc1HoursA:t.Misc1__c,misc1HoursB:t.Misc_1_Hours__c,misc2Hours:t.Misc_2_Hours__c,misc3Hours:t.Misc_3_Hours__c,misc4Hours:t.Misc_4_Hours__c,stat1Hours:t.Stat1__c,stat2Hours:t.Stat2__c,inChargeHours:t.In_Charge__c,shiftTravelPerDiemHours:t.Shift_Travel_Stipend__c,lastModified:t.LastModifiedDate}}var f=function(){function t(t){this.axiosInstance=t}return t.prototype.fetchPractitioners=function(){var t=o(s().mark((function t(){var e;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,e="/services/data/"+d+"/query",t.next=5,this.axiosInstance.get(e,{params:{q:"\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n "}});case 5:return t.abrupt("return",t.sent.data.records.map(l));case 10:throw t.prev=10,t.t0=t.catch(0),console.error("Error fetching practitioners: ",t.t0.message),t.t0;case 14:case"end":return t.stop()}}),t,this,[[0,10]])})));return function(){return t.apply(this,arguments)}}(),t}();function l(t){return{id:t.Id,firstName:t.FirstName__c,lastName:t.LastName__c,email:t.Email__c,staffId:t.StaffID__c}}var p=function(){function t(t){this.axiosInstance=t}return t.prototype.getWorkordersForPractitioner=function(){var t=o(s().mark((function t(e){var r,n;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,r="/services/data/"+d+"/query",n=e?"SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '"+e+"'":"SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c",t.next=5,this.axiosInstance.get(r,{params:{q:n}}).then((function(t){return t.data.records.map((function(t){return{id:t.Id,establishmentId:t.HospitalID__c,establishmentName:t.HospitalName__c,role:t.ProfessionalDesignation__c,practitionerId:t.Personnel__c,startDate:new Date(t.startdate__c),endDate:new Date(t.EndDate__c),createdAt:new Date(t.CreatedDate),updatedAt:new Date(t.LastModifiedDate)}}))}));case 5:return t.abrupt("return",t.sent);case 8:throw t.prev=8,t.t0=t.catch(0),console.error("Error fetching work orders: ",t.t0.message),t.t0;case 12:case"end":return t.stop()}}),t,this,[[0,8]])})));return function(e){return t.apply(this,arguments)}}(),t}(),d="v57.0";exports.SFApiClient=function(){function t(t){this.instance=void 0,this.axiosInstance=e.create(),this.baseUrl=t,this.axiosInstance.defaults.baseURL=null!=t?t:"https://do0000000d247eaa--phealth.sandbox.my.salesforce.com",this.authenticator=new c(this.axiosInstance,this.baseUrl),this.timesheetClient=new u(this.axiosInstance),this.workorderClient=new p(this.axiosInstance),this.practitionerClient=new f(this.axiosInstance)}var r=t.prototype;return r.init=function(){var t=o(s().mark((function t(e,r,n){return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.authenticator.initializeAuth(e,r,n);case 2:case"end":return t.stop()}}),t,this)})));return function(e,r,n){return t.apply(this,arguments)}}(),r.setInstance=function(t){this.instance=t},r.getInstance=function(){return this.instance},r.fetchRoles=function(){var t=o(s().mark((function t(){return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.abrupt("return",this.axiosInstance.get("/services/data/"+d+"/query",{params:{q:"SELECT Label, Value FROM PicklistValueInfo WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c' AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' AND isActive = true"}}).then((function(t){return t.data.records.map((function(t){return{label:t.Label,value:t.Value}}))})));case 6:throw t.prev=6,t.t0=t.catch(0),console.error("Error fetching roles: ",t.t0.message),t.t0;case 10:case"end":return t.stop()}}),t,this,[[0,6]])})));return function(){return t.apply(this,arguments)}}(),t}(),exports.SFAuthenticator=c,exports.SFPractitionerClient=f,exports.SFTimesheetClient=u;
2
2
  //# sourceMappingURL=pha-hermes.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pha-hermes.cjs.production.min.js","sources":["../src/api/auth/auth.ts","../src/api/timesheet/timesheetClient.ts","../src/api/practitioner/practitionerClient.ts","../src/api/workorder/workorderClient.ts","../src/api/apiClient.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class SFAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private refreshToken: string | undefined = undefined\n private tokenRefreshPromise: Promise<string> | null = null\n\n constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl?: string) {\n this.axiosTokenInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n }\n\n async initializeAuth(clientId: string, clientSecret: string) {\n const token = await this.postToken(clientId, clientSecret)\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`\n\n this.authenticatedAxiosInstance.interceptors.response.use(\n response => response,\n async error => {\n const originalRequest = error.config\n originalRequest._retryCount = originalRequest._retryCount || 0\n\n // If the error is 401 and we haven't exceeded max retries\n if (error.response?.status === 401 && originalRequest._retryCount < 3) {\n originalRequest._retryCount++\n\n try {\n // Use existing token refresh if one is in progress\n if (!this.tokenRefreshPromise) {\n this.tokenRefreshPromise = this.postToken(clientId, clientSecret)\n }\n\n const newToken = await this.tokenRefreshPromise\n // Clear the refresh promise after it completes\n this.tokenRefreshPromise = null\n\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] =\n `Bearer ${newToken}`\n originalRequest.headers['Authorization'] = `Bearer ${newToken}`\n\n originalRequest.timeout = 5000\n\n return await Promise.race([\n this.authenticatedAxiosInstance(originalRequest),\n new Promise((_, reject) =>\n setTimeout(\n () => reject(new Error('Retry request timeout')),\n originalRequest.timeout\n )\n )\n ])\n } catch (refreshError) {\n // Clear the refresh promise if it fails\n this.tokenRefreshPromise = null\n return Promise.reject(refreshError)\n }\n }\n return Promise.reject(error)\n }\n )\n }\n\n async postToken(clientId?: string, clientSecret?: string): Promise<string> {\n const tokenFormRequestBody = new FormData()\n if (this.refreshToken) {\n tokenFormRequestBody.append('refresh_token', this.refreshToken)\n tokenFormRequestBody.append('grant_type', 'refresh_token')\n } else if (clientId && clientSecret) {\n tokenFormRequestBody.append('client_id', clientId)\n tokenFormRequestBody.append('client_secret', clientSecret)\n tokenFormRequestBody.append('grant_type', 'client_credentials')\n } else {\n throw new Error(\n 'Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided'\n )\n }\n\n const response = await this.axiosTokenInstance.post(\n '/services/oauth2/token',\n tokenFormRequestBody,\n {\n headers: tokenFormRequestBody.getHeaders()\n }\n )\n\n this.token = response?.data?.['access_token']\n if (!this.token) throw new Error('Authentication failed, could not get the access token')\n return this.token\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { TimesheetDayEntry } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFTimesheetClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async updateTimesheetHour(timesheetHourId: string, timesheet: TimesheetDayEntry) {\n try {\n const url = `/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${timesheetHourId}`\n const response = await this.axiosInstance.patch(url, {\n Date__c: timesheet.date,\n Callback__c: timesheet.callbackHours,\n HoursEBAdjusted__c: timesheet.regularHours,\n Misc__c: timesheet.miscHours,\n OT1__c: timesheet.overtime1Hours,\n OT2__c: timesheet.overtime2Hours,\n OnCall__c: timesheet.onCallHours,\n Misc1__c: timesheet.misc1HoursA,\n Misc_1_Hours__c: timesheet.misc1HoursB,\n Misc_2_Hours__c: timesheet.misc2Hours,\n Misc_3_Hours__c: timesheet.misc3Hours,\n Misc_4_Hours__c: timesheet.misc4Hours,\n Stat1__c: timesheet.stat1Hours,\n Stat2__c: timesheet.stat2Hours,\n In_Charge__c: timesheet.inChargeHours,\n Shift_Travel_Stipend__c: timesheet.shiftTravelPerDiemHours\n })\n\n if (![200, 204, 304].includes(response.status))\n throw new Error(`got error status code ${response.status}`)\n } catch (error) {\n console.error('Error Updating Timesheet Hour: ', error.message)\n }\n }\n\n async getTimesheetId(workorderId: string): Promise<string> {\n // First we find the correct timesheet id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderId}'\n LIMIT 1`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records[0].Id\n }\n\n async getTimesheetsForPractitioner(personnelID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '${personnelID}')`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let timesheets = []\n\n for (const timesheet of data.data.records) {\n timesheets.push({\n workorderId: timesheet.WorkOrder__c,\n id: timesheet.Id,\n updatedAt: timesheet.LastModifiedDate\n })\n }\n\n return timesheets\n }\n\n async getTimesheetHoursIds(workorderId: string): Promise<string[]> {\n const timesheetId = await this.getTimesheetId(workorderId)\n // First we find the correct timesheet hours id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '${timesheetId}'`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records.map(({ Id }) => Id)\n }\n\n async getTimesheetHours(workorderId: string): Promise<TimesheetDayEntry[]> {\n const timesheetHourIds = await this.getTimesheetHoursIds(workorderId)\n return Promise.all(\n timesheetHourIds.map(async id =>\n this.axiosInstance\n .get(`/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${id}`)\n .then(res => res.data)\n .then(toTimesheetDayEntry)\n )\n )\n }\n}\n\nfunction toTimesheetDayEntry(raw: any): TimesheetDayEntry {\n return {\n id: raw.Id,\n date: raw.Date__c,\n callbackHours: raw.Callback__c,\n regularHours: raw.HoursEBAdjusted__c,\n miscHours: raw.Misc__c,\n overtime1Hours: raw.OT1__c,\n overtime2Hours: raw.OT2__c,\n onCallHours: raw.OnCall__c,\n misc1HoursA: raw.Misc1__c,\n misc1HoursB: raw.Misc_1_Hours__c,\n misc2Hours: raw.Misc_2_Hours__c,\n misc3Hours: raw.Misc_3_Hours__c,\n misc4Hours: raw.Misc_4_Hours__c,\n stat1Hours: raw.Stat1__c,\n stat2Hours: raw.Stat2__c,\n inChargeHours: raw.In_Charge__c,\n shiftTravelPerDiemHours: raw.Shift_Travel_Stipend__c,\n lastModified: raw.LastModifiedDate\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFPractitionerClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchPractitioners(): Promise<Practitioner[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Workorder } from '../../models'\n\nexport class SFWorkorderClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n\n async getWorkordersForPractitioner(practitionerId?: string): Promise<Workorder[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = practitionerId\n ? `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${practitionerId}'`\n : `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n establishmentId: record.HospitalID__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n practitionerId: record.Personnel__c,\n startDate: new Date(record.startdate__c),\n endDate: new Date(record.EndDate__c),\n createdAt: new Date(record.CreatedDate),\n updatedAt: new Date(record.LastModifiedDate)\n })\n )\n )\n } catch (error) {\n console.error('Error fetching work orders: ', error.message)\n throw error\n }\n }\n}","import axios, { AxiosInstance } from 'axios'\nimport { SFAuthenticator } from './auth/auth'\nimport { SFTimesheetClient } from './timesheet/timesheetClient'\nimport { SFPractitionerClient } from './practitioner/practitionerClient'\nimport { Role } from '../models'\nimport { SFWorkorderClient } from './workorder/workorderClient'\n\nexport const SF_API_VERSION: string = 'v57.0'\n\nexport class SFApiClient {\n private instance: SFApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: SFAuthenticator\n private baseUrl: string\n timesheetClient: SFTimesheetClient\n workorderClient: SFWorkorderClient\n practitionerClient: SFPractitionerClient\n\n constructor(baseUrl?: string) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.workorderClient = new SFWorkorderClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n }\n\n async init(sfClientId: string, sfClientSecret: string) {\n // creates authenticator and adds token to axios instance\n await this.authenticator.initializeAuth(sfClientId, sfClientSecret)\n }\n\n setInstance(instance: SFApiClient) {\n this.instance = instance\n }\n getInstance(): SFApiClient {\n return this.instance\n }\n\n async fetchRoles(): Promise<Role[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Label, Value FROM PicklistValueInfo \\\n WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c'\\\n AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' \\\n AND isActive = true`\n return this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Role => ({\n label: record.Label,\n value: record.Value\n })\n )\n )\n } catch (error) {\n console.error('Error fetching roles: ', error.message)\n throw error\n }\n }\n}\n"],"names":["SFAuthenticator","authenticatedAxiosInstance","baseUrl","this","axios","create","undefined","axiosTokenInstance","defaults","baseURL","_proto","prototype","initializeAuth","_initializeAuth","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","clientId","clientSecret","_this","wrap","_context2","prev","next","postToken","headers","common","sent","interceptors","response","use","_ref","_callee","error","_error$response","originalRequest","newToken","_context","config","_retryCount","status","tokenRefreshPromise","timeout","Promise","race","_","reject","setTimeout","Error","abrupt","t0","stop","_x3","apply","arguments","_x","_x2","_postToken","_callee3","_response$data","tokenFormRequestBody","_context3","FormData","refreshToken","append","post","getHeaders","token","data","_x4","_x5","SFTimesheetClient","axiosInstance","updateTimesheetHour","_updateTimesheetHour","timesheetHourId","timesheet","url","SF_API_VERSION","patch","Date__c","date","Callback__c","callbackHours","HoursEBAdjusted__c","regularHours","Misc__c","miscHours","OT1__c","overtime1Hours","OT2__c","overtime2Hours","OnCall__c","onCallHours","Misc1__c","misc1HoursA","Misc_1_Hours__c","misc1HoursB","Misc_2_Hours__c","misc2Hours","Misc_3_Hours__c","misc3Hours","Misc_4_Hours__c","misc4Hours","Stat1__c","stat1Hours","Stat2__c","stat2Hours","In_Charge__c","inChargeHours","Shift_Travel_Stipend__c","shiftTravelPerDiemHours","includes","console","message","getTimesheetId","_getTimesheetId","workorderId","query","get","params","q","records","Id","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","personnelID","timesheets","_iterator","_step","_createForOfIteratorHelperLoose","done","push","value","WorkOrder__c","id","updatedAt","LastModifiedDate","getTimesheetHoursIds","_getTimesheetHoursIds","_callee4","_context4","map","getTimesheetHours","_getTimesheetHours","_callee6","_context6","all","_ref2","_callee5","_context5","then","res","toTimesheetDayEntry","_x7","_x6","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","firstName","FirstName__c","lastName","LastName__c","email","Email__c","staffId","StaffID__c","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","record","establishmentId","HospitalID__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","startDate","Date","startdate__c","endDate","EndDate__c","createdAt","CreatedDate","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value"],"mappings":"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"}
1
+ {"version":3,"file":"pha-hermes.cjs.production.min.js","sources":["../src/api/auth/auth.ts","../src/api/timesheet/timesheetClient.ts","../src/api/practitioner/practitionerClient.ts","../src/api/workorder/workorderClient.ts","../src/api/apiClient.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class SFAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private refreshToken: string | undefined = undefined\n private tokenRefreshPromise: Promise<string> | null = null\n\n constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl?: string) {\n this.axiosTokenInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n }\n\n async initializeAuth(\n clientId: string,\n clientSecret: string,\n onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>\n ) {\n const token = await this.postToken(clientId, clientSecret)\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`\n\n this.authenticatedAxiosInstance.interceptors.response.use(\n response => response,\n async error => {\n const originalRequest = error.config\n originalRequest._retryCount = originalRequest._retryCount || 0\n\n // If the error is 401 and we haven't exceeded max retries\n if (error.response?.status === 401 && originalRequest._retryCount < 3) {\n originalRequest._retryCount++\n\n try {\n // Use existing token refresh if one is in progress\n if (!this.tokenRefreshPromise) {\n const newClientCredentials = await onTokenRefresh?.()\n const newClientId = newClientCredentials?.clientId || clientId\n const newClientSecret =\n newClientCredentials?.clientSecret || clientSecret\n this.tokenRefreshPromise = this.postToken(newClientId, newClientSecret)\n }\n\n const newToken = await this.tokenRefreshPromise\n // Clear the refresh promise after it completes\n this.tokenRefreshPromise = null\n\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] =\n `Bearer ${newToken}`\n originalRequest.headers['Authorization'] = `Bearer ${newToken}`\n\n originalRequest.timeout = 5000\n\n return await Promise.race([\n this.authenticatedAxiosInstance(originalRequest),\n new Promise((_, reject) =>\n setTimeout(\n () => reject(new Error('Retry request timeout')),\n originalRequest.timeout\n )\n )\n ])\n } catch (refreshError) {\n // Clear the refresh promise if it fails\n this.tokenRefreshPromise = null\n return Promise.reject(refreshError)\n }\n }\n return Promise.reject(error)\n }\n )\n }\n\n async postToken(clientId?: string, clientSecret?: string): Promise<string> {\n const tokenFormRequestBody = new FormData()\n if (this.refreshToken) {\n tokenFormRequestBody.append('refresh_token', this.refreshToken)\n tokenFormRequestBody.append('grant_type', 'refresh_token')\n } else if (clientId && clientSecret) {\n tokenFormRequestBody.append('client_id', clientId)\n tokenFormRequestBody.append('client_secret', clientSecret)\n tokenFormRequestBody.append('grant_type', 'client_credentials')\n } else {\n throw new Error(\n 'Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided'\n )\n }\n\n const response = await this.axiosTokenInstance.post(\n '/services/oauth2/token',\n tokenFormRequestBody,\n {\n headers: tokenFormRequestBody.getHeaders()\n }\n )\n\n this.token = response?.data?.['access_token']\n if (!this.token) throw new Error('Authentication failed, could not get the access token')\n return this.token\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { TimesheetDayEntry } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFTimesheetClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async updateTimesheetHour(timesheetHourId: string, timesheet: TimesheetDayEntry) {\n try {\n const url = `/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${timesheetHourId}`\n const response = await this.axiosInstance.patch(url, {\n Date__c: timesheet.date,\n Callback__c: timesheet.callbackHours,\n HoursEBAdjusted__c: timesheet.regularHours,\n Misc__c: timesheet.miscHours,\n OT1__c: timesheet.overtime1Hours,\n OT2__c: timesheet.overtime2Hours,\n OnCall__c: timesheet.onCallHours,\n Misc1__c: timesheet.misc1HoursA,\n Misc_1_Hours__c: timesheet.misc1HoursB,\n Misc_2_Hours__c: timesheet.misc2Hours,\n Misc_3_Hours__c: timesheet.misc3Hours,\n Misc_4_Hours__c: timesheet.misc4Hours,\n Stat1__c: timesheet.stat1Hours,\n Stat2__c: timesheet.stat2Hours,\n In_Charge__c: timesheet.inChargeHours,\n Shift_Travel_Stipend__c: timesheet.shiftTravelPerDiemHours\n })\n\n if (![200, 204, 304].includes(response.status))\n throw new Error(`got error status code ${response.status}`)\n } catch (error) {\n console.error('Error Updating Timesheet Hour: ', error.message)\n }\n }\n\n async getTimesheetId(workorderId: string): Promise<string> {\n // First we find the correct timesheet id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderId}'\n LIMIT 1`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records[0].Id\n }\n\n async getTimesheetsForPractitioner(personnelID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '${personnelID}')`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let timesheets = []\n\n for (const timesheet of data.data.records) {\n timesheets.push({\n workorderId: timesheet.WorkOrder__c,\n id: timesheet.Id,\n updatedAt: timesheet.LastModifiedDate\n })\n }\n\n return timesheets\n }\n\n async getTimesheetHoursIds(workorderId: string): Promise<string[]> {\n const timesheetId = await this.getTimesheetId(workorderId)\n // First we find the correct timesheet hours id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '${timesheetId}'`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records.map(({ Id }) => Id)\n }\n\n async getTimesheetHours(workorderId: string): Promise<TimesheetDayEntry[]> {\n const timesheetHourIds = await this.getTimesheetHoursIds(workorderId)\n return Promise.all(\n timesheetHourIds.map(async id =>\n this.axiosInstance\n .get(`/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${id}`)\n .then(res => res.data)\n .then(toTimesheetDayEntry)\n )\n )\n }\n\n async getPayPeriods(): Promise<any> {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT Name,\n StartDate__c,\n EndDate__c\n FROM PayPeriod__c`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriods = []\n\n for (const payPeriod of data.data.records) {\n payPeriods.push({\n name: payPeriod.Name,\n startDate: payPeriod.StartDate__c,\n endDate: payPeriod.EndDate__c\n })\n }\n\n return payPeriods\n }\n}\n\nfunction toTimesheetDayEntry(raw: any): TimesheetDayEntry {\n return {\n id: raw.Id,\n date: raw.Date__c,\n callbackHours: raw.Callback__c,\n regularHours: raw.HoursEBAdjusted__c,\n miscHours: raw.Misc__c,\n overtime1Hours: raw.OT1__c,\n overtime2Hours: raw.OT2__c,\n onCallHours: raw.OnCall__c,\n misc1HoursA: raw.Misc1__c,\n misc1HoursB: raw.Misc_1_Hours__c,\n misc2Hours: raw.Misc_2_Hours__c,\n misc3Hours: raw.Misc_3_Hours__c,\n misc4Hours: raw.Misc_4_Hours__c,\n stat1Hours: raw.Stat1__c,\n stat2Hours: raw.Stat2__c,\n inChargeHours: raw.In_Charge__c,\n shiftTravelPerDiemHours: raw.Shift_Travel_Stipend__c,\n lastModified: raw.LastModifiedDate\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFPractitionerClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchPractitioners(): Promise<Practitioner[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Workorder } from '../../models'\n\nexport class SFWorkorderClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n\n async getWorkordersForPractitioner(practitionerId?: string): Promise<Workorder[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = practitionerId\n ? `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${practitionerId}'`\n : `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n establishmentId: record.HospitalID__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n practitionerId: record.Personnel__c,\n startDate: new Date(record.startdate__c),\n endDate: new Date(record.EndDate__c),\n createdAt: new Date(record.CreatedDate),\n updatedAt: new Date(record.LastModifiedDate)\n })\n )\n )\n } catch (error) {\n console.error('Error fetching work orders: ', error.message)\n throw error\n }\n }\n}","import axios, { AxiosInstance } from 'axios'\nimport { SFAuthenticator } from './auth/auth'\nimport { SFTimesheetClient } from './timesheet/timesheetClient'\nimport { SFPractitionerClient } from './practitioner/practitionerClient'\nimport { Role } from '../models'\nimport { SFWorkorderClient } from './workorder/workorderClient'\n\nexport const SF_API_VERSION: string = 'v57.0'\n\nexport class SFApiClient {\n private instance: SFApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: SFAuthenticator\n private baseUrl: string\n timesheetClient: SFTimesheetClient\n workorderClient: SFWorkorderClient\n practitionerClient: SFPractitionerClient\n\n constructor(baseUrl?: string) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.workorderClient = new SFWorkorderClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n }\n\n async init(\n sfClientId: string,\n sfClientSecret: string,\n onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>\n ) {\n // creates authenticator and adds token to axios instance\n await this.authenticator.initializeAuth(sfClientId, sfClientSecret, onTokenRefresh)\n }\n\n setInstance(instance: SFApiClient) {\n this.instance = instance\n }\n getInstance(): SFApiClient {\n return this.instance\n }\n\n async fetchRoles(): Promise<Role[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Label, Value FROM PicklistValueInfo \\\n WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c'\\\n AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' \\\n AND isActive = true`\n return this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Role => ({\n label: record.Label,\n value: record.Value\n })\n )\n )\n } catch (error) {\n console.error('Error fetching roles: ', error.message)\n throw error\n }\n }\n}\n"],"names":["SFAuthenticator","authenticatedAxiosInstance","baseUrl","this","axios","create","undefined","axiosTokenInstance","defaults","baseURL","_proto","prototype","initializeAuth","_initializeAuth","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","clientId","clientSecret","onTokenRefresh","_this","wrap","_context2","prev","next","postToken","headers","common","sent","interceptors","response","use","_ref","_callee","error","_error$response","originalRequest","newClientCredentials","newToken","_context","config","_retryCount","status","tokenRefreshPromise","timeout","Promise","race","_","reject","setTimeout","Error","abrupt","t0","stop","_x4","apply","arguments","_x","_x2","_x3","_postToken","_callee3","_response$data","tokenFormRequestBody","_context3","FormData","refreshToken","append","post","getHeaders","token","data","_x5","_x6","SFTimesheetClient","axiosInstance","updateTimesheetHour","_updateTimesheetHour","timesheetHourId","timesheet","url","SF_API_VERSION","patch","Date__c","date","Callback__c","callbackHours","HoursEBAdjusted__c","regularHours","Misc__c","miscHours","OT1__c","overtime1Hours","OT2__c","overtime2Hours","OnCall__c","onCallHours","Misc1__c","misc1HoursA","Misc_1_Hours__c","misc1HoursB","Misc_2_Hours__c","misc2Hours","Misc_3_Hours__c","misc3Hours","Misc_4_Hours__c","misc4Hours","Stat1__c","stat1Hours","Stat2__c","stat2Hours","In_Charge__c","inChargeHours","Shift_Travel_Stipend__c","shiftTravelPerDiemHours","includes","console","message","getTimesheetId","_getTimesheetId","workorderId","query","get","params","q","records","Id","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","personnelID","timesheets","_iterator","_step","_createForOfIteratorHelperLoose","done","push","value","WorkOrder__c","id","updatedAt","LastModifiedDate","getTimesheetHoursIds","_getTimesheetHoursIds","_callee4","_context4","map","getTimesheetHours","_getTimesheetHours","_callee6","_context6","all","_ref2","_callee5","_context5","then","res","toTimesheetDayEntry","_x7","getPayPeriods","_getPayPeriods","_callee7","payPeriods","_iterator2","_step2","payPeriod","_context7","name","Name","startDate","StartDate__c","endDate","EndDate__c","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","firstName","FirstName__c","lastName","LastName__c","email","Email__c","staffId","StaffID__c","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","record","establishmentId","HospitalID__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","Date","startdate__c","createdAt","CreatedDate","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value"],"mappings":"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"}
@@ -368,7 +368,7 @@ var SFAuthenticator = /*#__PURE__*/function () {
368
368
  }
369
369
  var _proto = SFAuthenticator.prototype;
370
370
  _proto.initializeAuth = /*#__PURE__*/function () {
371
- var _initializeAuth = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(clientId, clientSecret) {
371
+ var _initializeAuth = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(clientId, clientSecret, onTokenRefresh) {
372
372
  var _this = this;
373
373
  var token;
374
374
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
@@ -384,7 +384,7 @@ var SFAuthenticator = /*#__PURE__*/function () {
384
384
  }, /*#__PURE__*/function () {
385
385
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(error) {
386
386
  var _error$response;
387
- var originalRequest, newToken;
387
+ var originalRequest, newClientCredentials, newClientId, newClientSecret, newToken;
388
388
  return _regeneratorRuntime().wrap(function _callee$(_context) {
389
389
  while (1) switch (_context.prev = _context.next) {
390
390
  case 0:
@@ -392,47 +392,55 @@ var SFAuthenticator = /*#__PURE__*/function () {
392
392
  originalRequest._retryCount = originalRequest._retryCount || 0;
393
393
  // If the error is 401 and we haven't exceeded max retries
394
394
  if (!(((_error$response = error.response) == null ? void 0 : _error$response.status) === 401 && originalRequest._retryCount < 3)) {
395
- _context.next = 22;
395
+ _context.next = 28;
396
396
  break;
397
397
  }
398
398
  originalRequest._retryCount++;
399
399
  _context.prev = 4;
400
- // Use existing token refresh if one is in progress
401
- if (!_this.tokenRefreshPromise) {
402
- _this.tokenRefreshPromise = _this.postToken(clientId, clientSecret);
400
+ if (_this.tokenRefreshPromise) {
401
+ _context.next = 12;
402
+ break;
403
403
  }
404
404
  _context.next = 8;
405
- return _this.tokenRefreshPromise;
405
+ return onTokenRefresh == null ? void 0 : onTokenRefresh();
406
406
  case 8:
407
+ newClientCredentials = _context.sent;
408
+ newClientId = (newClientCredentials == null ? void 0 : newClientCredentials.clientId) || clientId;
409
+ newClientSecret = (newClientCredentials == null ? void 0 : newClientCredentials.clientSecret) || clientSecret;
410
+ _this.tokenRefreshPromise = _this.postToken(newClientId, newClientSecret);
411
+ case 12:
412
+ _context.next = 14;
413
+ return _this.tokenRefreshPromise;
414
+ case 14:
407
415
  newToken = _context.sent;
408
416
  // Clear the refresh promise after it completes
409
417
  _this.tokenRefreshPromise = null;
410
418
  _this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = "Bearer " + newToken;
411
419
  originalRequest.headers['Authorization'] = "Bearer " + newToken;
412
420
  originalRequest.timeout = 5000;
413
- _context.next = 15;
421
+ _context.next = 21;
414
422
  return Promise.race([_this.authenticatedAxiosInstance(originalRequest), new Promise(function (_, reject) {
415
423
  return setTimeout(function () {
416
424
  return reject(new Error('Retry request timeout'));
417
425
  }, originalRequest.timeout);
418
426
  })]);
419
- case 15:
427
+ case 21:
420
428
  return _context.abrupt("return", _context.sent);
421
- case 18:
422
- _context.prev = 18;
429
+ case 24:
430
+ _context.prev = 24;
423
431
  _context.t0 = _context["catch"](4);
424
432
  // Clear the refresh promise if it fails
425
433
  _this.tokenRefreshPromise = null;
426
434
  return _context.abrupt("return", Promise.reject(_context.t0));
427
- case 22:
435
+ case 28:
428
436
  return _context.abrupt("return", Promise.reject(error));
429
- case 23:
437
+ case 29:
430
438
  case "end":
431
439
  return _context.stop();
432
440
  }
433
- }, _callee, null, [[4, 18]]);
441
+ }, _callee, null, [[4, 24]]);
434
442
  }));
435
- return function (_x3) {
443
+ return function (_x4) {
436
444
  return _ref.apply(this, arguments);
437
445
  };
438
446
  }());
@@ -442,7 +450,7 @@ var SFAuthenticator = /*#__PURE__*/function () {
442
450
  }
443
451
  }, _callee2, this);
444
452
  }));
445
- function initializeAuth(_x, _x2) {
453
+ function initializeAuth(_x, _x2, _x3) {
446
454
  return _initializeAuth.apply(this, arguments);
447
455
  }
448
456
  return initializeAuth;
@@ -496,7 +504,7 @@ var SFAuthenticator = /*#__PURE__*/function () {
496
504
  }
497
505
  }, _callee3, this);
498
506
  }));
499
- function postToken(_x4, _x5) {
507
+ function postToken(_x5, _x6) {
500
508
  return _postToken.apply(this, arguments);
501
509
  }
502
510
  return postToken;
@@ -705,6 +713,43 @@ var SFTimesheetClient = /*#__PURE__*/function () {
705
713
  }
706
714
  return getTimesheetHours;
707
715
  }();
716
+ _proto.getPayPeriods = /*#__PURE__*/function () {
717
+ var _getPayPeriods = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
718
+ var url, query, data, payPeriods, _iterator2, _step2, payPeriod;
719
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
720
+ while (1) switch (_context7.prev = _context7.next) {
721
+ case 0:
722
+ url = "/services/data/" + SF_API_VERSION + "/query";
723
+ query = "SELECT Name,\n StartDate__c,\n EndDate__c\n FROM PayPeriod__c";
724
+ _context7.next = 4;
725
+ return this.axiosInstance.get(url, {
726
+ params: {
727
+ q: query
728
+ }
729
+ });
730
+ case 4:
731
+ data = _context7.sent;
732
+ payPeriods = [];
733
+ for (_iterator2 = _createForOfIteratorHelperLoose(data.data.records); !(_step2 = _iterator2()).done;) {
734
+ payPeriod = _step2.value;
735
+ payPeriods.push({
736
+ name: payPeriod.Name,
737
+ startDate: payPeriod.StartDate__c,
738
+ endDate: payPeriod.EndDate__c
739
+ });
740
+ }
741
+ return _context7.abrupt("return", payPeriods);
742
+ case 8:
743
+ case "end":
744
+ return _context7.stop();
745
+ }
746
+ }, _callee7, this);
747
+ }));
748
+ function getPayPeriods() {
749
+ return _getPayPeriods.apply(this, arguments);
750
+ }
751
+ return getPayPeriods;
752
+ }();
708
753
  return SFTimesheetClient;
709
754
  }();
710
755
  function toTimesheetDayEntry(raw) {
@@ -852,19 +897,19 @@ var SFApiClient = /*#__PURE__*/function () {
852
897
  }
853
898
  var _proto = SFApiClient.prototype;
854
899
  _proto.init = /*#__PURE__*/function () {
855
- var _init = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(sfClientId, sfClientSecret) {
900
+ var _init = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(sfClientId, sfClientSecret, onTokenRefresh) {
856
901
  return _regeneratorRuntime().wrap(function _callee$(_context) {
857
902
  while (1) switch (_context.prev = _context.next) {
858
903
  case 0:
859
904
  _context.next = 2;
860
- return this.authenticator.initializeAuth(sfClientId, sfClientSecret);
905
+ return this.authenticator.initializeAuth(sfClientId, sfClientSecret, onTokenRefresh);
861
906
  case 2:
862
907
  case "end":
863
908
  return _context.stop();
864
909
  }
865
910
  }, _callee, this);
866
911
  }));
867
- function init(_x, _x2) {
912
+ function init(_x, _x2, _x3) {
868
913
  return _init.apply(this, arguments);
869
914
  }
870
915
  return init;
@@ -1 +1 @@
1
- {"version":3,"file":"pha-hermes.esm.js","sources":["../src/api/auth/auth.ts","../src/api/timesheet/timesheetClient.ts","../src/api/practitioner/practitionerClient.ts","../src/api/workorder/workorderClient.ts","../src/api/apiClient.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class SFAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private refreshToken: string | undefined = undefined\n private tokenRefreshPromise: Promise<string> | null = null\n\n constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl?: string) {\n this.axiosTokenInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n }\n\n async initializeAuth(clientId: string, clientSecret: string) {\n const token = await this.postToken(clientId, clientSecret)\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`\n\n this.authenticatedAxiosInstance.interceptors.response.use(\n response => response,\n async error => {\n const originalRequest = error.config\n originalRequest._retryCount = originalRequest._retryCount || 0\n\n // If the error is 401 and we haven't exceeded max retries\n if (error.response?.status === 401 && originalRequest._retryCount < 3) {\n originalRequest._retryCount++\n\n try {\n // Use existing token refresh if one is in progress\n if (!this.tokenRefreshPromise) {\n this.tokenRefreshPromise = this.postToken(clientId, clientSecret)\n }\n\n const newToken = await this.tokenRefreshPromise\n // Clear the refresh promise after it completes\n this.tokenRefreshPromise = null\n\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] =\n `Bearer ${newToken}`\n originalRequest.headers['Authorization'] = `Bearer ${newToken}`\n\n originalRequest.timeout = 5000\n\n return await Promise.race([\n this.authenticatedAxiosInstance(originalRequest),\n new Promise((_, reject) =>\n setTimeout(\n () => reject(new Error('Retry request timeout')),\n originalRequest.timeout\n )\n )\n ])\n } catch (refreshError) {\n // Clear the refresh promise if it fails\n this.tokenRefreshPromise = null\n return Promise.reject(refreshError)\n }\n }\n return Promise.reject(error)\n }\n )\n }\n\n async postToken(clientId?: string, clientSecret?: string): Promise<string> {\n const tokenFormRequestBody = new FormData()\n if (this.refreshToken) {\n tokenFormRequestBody.append('refresh_token', this.refreshToken)\n tokenFormRequestBody.append('grant_type', 'refresh_token')\n } else if (clientId && clientSecret) {\n tokenFormRequestBody.append('client_id', clientId)\n tokenFormRequestBody.append('client_secret', clientSecret)\n tokenFormRequestBody.append('grant_type', 'client_credentials')\n } else {\n throw new Error(\n 'Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided'\n )\n }\n\n const response = await this.axiosTokenInstance.post(\n '/services/oauth2/token',\n tokenFormRequestBody,\n {\n headers: tokenFormRequestBody.getHeaders()\n }\n )\n\n this.token = response?.data?.['access_token']\n if (!this.token) throw new Error('Authentication failed, could not get the access token')\n return this.token\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { TimesheetDayEntry } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFTimesheetClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async updateTimesheetHour(timesheetHourId: string, timesheet: TimesheetDayEntry) {\n try {\n const url = `/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${timesheetHourId}`\n const response = await this.axiosInstance.patch(url, {\n Date__c: timesheet.date,\n Callback__c: timesheet.callbackHours,\n HoursEBAdjusted__c: timesheet.regularHours,\n Misc__c: timesheet.miscHours,\n OT1__c: timesheet.overtime1Hours,\n OT2__c: timesheet.overtime2Hours,\n OnCall__c: timesheet.onCallHours,\n Misc1__c: timesheet.misc1HoursA,\n Misc_1_Hours__c: timesheet.misc1HoursB,\n Misc_2_Hours__c: timesheet.misc2Hours,\n Misc_3_Hours__c: timesheet.misc3Hours,\n Misc_4_Hours__c: timesheet.misc4Hours,\n Stat1__c: timesheet.stat1Hours,\n Stat2__c: timesheet.stat2Hours,\n In_Charge__c: timesheet.inChargeHours,\n Shift_Travel_Stipend__c: timesheet.shiftTravelPerDiemHours\n })\n\n if (![200, 204, 304].includes(response.status))\n throw new Error(`got error status code ${response.status}`)\n } catch (error) {\n console.error('Error Updating Timesheet Hour: ', error.message)\n }\n }\n\n async getTimesheetId(workorderId: string): Promise<string> {\n // First we find the correct timesheet id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderId}'\n LIMIT 1`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records[0].Id\n }\n\n async getTimesheetsForPractitioner(personnelID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '${personnelID}')`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let timesheets = []\n\n for (const timesheet of data.data.records) {\n timesheets.push({\n workorderId: timesheet.WorkOrder__c,\n id: timesheet.Id,\n updatedAt: timesheet.LastModifiedDate\n })\n }\n\n return timesheets\n }\n\n async getTimesheetHoursIds(workorderId: string): Promise<string[]> {\n const timesheetId = await this.getTimesheetId(workorderId)\n // First we find the correct timesheet hours id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '${timesheetId}'`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records.map(({ Id }) => Id)\n }\n\n async getTimesheetHours(workorderId: string): Promise<TimesheetDayEntry[]> {\n const timesheetHourIds = await this.getTimesheetHoursIds(workorderId)\n return Promise.all(\n timesheetHourIds.map(async id =>\n this.axiosInstance\n .get(`/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${id}`)\n .then(res => res.data)\n .then(toTimesheetDayEntry)\n )\n )\n }\n}\n\nfunction toTimesheetDayEntry(raw: any): TimesheetDayEntry {\n return {\n id: raw.Id,\n date: raw.Date__c,\n callbackHours: raw.Callback__c,\n regularHours: raw.HoursEBAdjusted__c,\n miscHours: raw.Misc__c,\n overtime1Hours: raw.OT1__c,\n overtime2Hours: raw.OT2__c,\n onCallHours: raw.OnCall__c,\n misc1HoursA: raw.Misc1__c,\n misc1HoursB: raw.Misc_1_Hours__c,\n misc2Hours: raw.Misc_2_Hours__c,\n misc3Hours: raw.Misc_3_Hours__c,\n misc4Hours: raw.Misc_4_Hours__c,\n stat1Hours: raw.Stat1__c,\n stat2Hours: raw.Stat2__c,\n inChargeHours: raw.In_Charge__c,\n shiftTravelPerDiemHours: raw.Shift_Travel_Stipend__c,\n lastModified: raw.LastModifiedDate\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFPractitionerClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchPractitioners(): Promise<Practitioner[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Workorder } from '../../models'\n\nexport class SFWorkorderClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n\n async getWorkordersForPractitioner(practitionerId?: string): Promise<Workorder[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = practitionerId\n ? `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${practitionerId}'`\n : `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n establishmentId: record.HospitalID__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n practitionerId: record.Personnel__c,\n startDate: new Date(record.startdate__c),\n endDate: new Date(record.EndDate__c),\n createdAt: new Date(record.CreatedDate),\n updatedAt: new Date(record.LastModifiedDate)\n })\n )\n )\n } catch (error) {\n console.error('Error fetching work orders: ', error.message)\n throw error\n }\n }\n}","import axios, { AxiosInstance } from 'axios'\nimport { SFAuthenticator } from './auth/auth'\nimport { SFTimesheetClient } from './timesheet/timesheetClient'\nimport { SFPractitionerClient } from './practitioner/practitionerClient'\nimport { Role } from '../models'\nimport { SFWorkorderClient } from './workorder/workorderClient'\n\nexport const SF_API_VERSION: string = 'v57.0'\n\nexport class SFApiClient {\n private instance: SFApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: SFAuthenticator\n private baseUrl: string\n timesheetClient: SFTimesheetClient\n workorderClient: SFWorkorderClient\n practitionerClient: SFPractitionerClient\n\n constructor(baseUrl?: string) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.workorderClient = new SFWorkorderClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n }\n\n async init(sfClientId: string, sfClientSecret: string) {\n // creates authenticator and adds token to axios instance\n await this.authenticator.initializeAuth(sfClientId, sfClientSecret)\n }\n\n setInstance(instance: SFApiClient) {\n this.instance = instance\n }\n getInstance(): SFApiClient {\n return this.instance\n }\n\n async fetchRoles(): Promise<Role[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Label, Value FROM PicklistValueInfo \\\n WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c'\\\n AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' \\\n AND isActive = true`\n return this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Role => ({\n label: record.Label,\n value: record.Value\n })\n )\n )\n } catch (error) {\n console.error('Error fetching roles: ', error.message)\n throw error\n }\n }\n}\n"],"names":["SFAuthenticator","authenticatedAxiosInstance","baseUrl","axios","create","undefined","axiosTokenInstance","defaults","baseURL","_proto","prototype","initializeAuth","_initializeAuth","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","clientId","clientSecret","_this","token","wrap","_callee2$","_context2","prev","next","postToken","sent","headers","common","interceptors","response","use","_ref","_callee","error","_error$response","originalRequest","newToken","_callee$","_context","config","_retryCount","status","tokenRefreshPromise","timeout","Promise","race","_","reject","setTimeout","Error","abrupt","t0","stop","_x3","apply","arguments","_x","_x2","_postToken","_callee3","_response$data","tokenFormRequestBody","_callee3$","_context3","FormData","refreshToken","append","post","getHeaders","data","_x4","_x5","SFTimesheetClient","axiosInstance","updateTimesheetHour","_updateTimesheetHour","timesheetHourId","timesheet","url","SF_API_VERSION","patch","Date__c","date","Callback__c","callbackHours","HoursEBAdjusted__c","regularHours","Misc__c","miscHours","OT1__c","overtime1Hours","OT2__c","overtime2Hours","OnCall__c","onCallHours","Misc1__c","misc1HoursA","Misc_1_Hours__c","misc1HoursB","Misc_2_Hours__c","misc2Hours","Misc_3_Hours__c","misc3Hours","Misc_4_Hours__c","misc4Hours","Stat1__c","stat1Hours","Stat2__c","stat2Hours","In_Charge__c","inChargeHours","Shift_Travel_Stipend__c","shiftTravelPerDiemHours","includes","console","message","getTimesheetId","_getTimesheetId","workorderId","query","_yield$this$axiosInst","records","get","params","q","Id","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","personnelID","timesheets","_iterator","_step","_createForOfIteratorHelperLoose","done","value","push","WorkOrder__c","id","updatedAt","LastModifiedDate","getTimesheetHoursIds","_getTimesheetHoursIds","_callee4","timesheetId","_yield$this$axiosInst2","_callee4$","_context4","map","getTimesheetHours","_getTimesheetHours","_callee6","timesheetHourIds","_callee6$","_context6","all","_ref2","_callee5","_callee5$","_context5","then","res","toTimesheetDayEntry","_x7","_x6","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","firstName","FirstName__c","lastName","LastName__c","email","Email__c","staffId","StaffID__c","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","record","establishmentId","HospitalID__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","startDate","Date","startdate__c","endDate","EndDate__c","createdAt","CreatedDate","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value"],"mappings":"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"}
1
+ {"version":3,"file":"pha-hermes.esm.js","sources":["../src/api/auth/auth.ts","../src/api/timesheet/timesheetClient.ts","../src/api/practitioner/practitionerClient.ts","../src/api/workorder/workorderClient.ts","../src/api/apiClient.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class SFAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private refreshToken: string | undefined = undefined\n private tokenRefreshPromise: Promise<string> | null = null\n\n constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl?: string) {\n this.axiosTokenInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n }\n\n async initializeAuth(\n clientId: string,\n clientSecret: string,\n onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>\n ) {\n const token = await this.postToken(clientId, clientSecret)\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`\n\n this.authenticatedAxiosInstance.interceptors.response.use(\n response => response,\n async error => {\n const originalRequest = error.config\n originalRequest._retryCount = originalRequest._retryCount || 0\n\n // If the error is 401 and we haven't exceeded max retries\n if (error.response?.status === 401 && originalRequest._retryCount < 3) {\n originalRequest._retryCount++\n\n try {\n // Use existing token refresh if one is in progress\n if (!this.tokenRefreshPromise) {\n const newClientCredentials = await onTokenRefresh?.()\n const newClientId = newClientCredentials?.clientId || clientId\n const newClientSecret =\n newClientCredentials?.clientSecret || clientSecret\n this.tokenRefreshPromise = this.postToken(newClientId, newClientSecret)\n }\n\n const newToken = await this.tokenRefreshPromise\n // Clear the refresh promise after it completes\n this.tokenRefreshPromise = null\n\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] =\n `Bearer ${newToken}`\n originalRequest.headers['Authorization'] = `Bearer ${newToken}`\n\n originalRequest.timeout = 5000\n\n return await Promise.race([\n this.authenticatedAxiosInstance(originalRequest),\n new Promise((_, reject) =>\n setTimeout(\n () => reject(new Error('Retry request timeout')),\n originalRequest.timeout\n )\n )\n ])\n } catch (refreshError) {\n // Clear the refresh promise if it fails\n this.tokenRefreshPromise = null\n return Promise.reject(refreshError)\n }\n }\n return Promise.reject(error)\n }\n )\n }\n\n async postToken(clientId?: string, clientSecret?: string): Promise<string> {\n const tokenFormRequestBody = new FormData()\n if (this.refreshToken) {\n tokenFormRequestBody.append('refresh_token', this.refreshToken)\n tokenFormRequestBody.append('grant_type', 'refresh_token')\n } else if (clientId && clientSecret) {\n tokenFormRequestBody.append('client_id', clientId)\n tokenFormRequestBody.append('client_secret', clientSecret)\n tokenFormRequestBody.append('grant_type', 'client_credentials')\n } else {\n throw new Error(\n 'Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided'\n )\n }\n\n const response = await this.axiosTokenInstance.post(\n '/services/oauth2/token',\n tokenFormRequestBody,\n {\n headers: tokenFormRequestBody.getHeaders()\n }\n )\n\n this.token = response?.data?.['access_token']\n if (!this.token) throw new Error('Authentication failed, could not get the access token')\n return this.token\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { TimesheetDayEntry } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFTimesheetClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async updateTimesheetHour(timesheetHourId: string, timesheet: TimesheetDayEntry) {\n try {\n const url = `/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${timesheetHourId}`\n const response = await this.axiosInstance.patch(url, {\n Date__c: timesheet.date,\n Callback__c: timesheet.callbackHours,\n HoursEBAdjusted__c: timesheet.regularHours,\n Misc__c: timesheet.miscHours,\n OT1__c: timesheet.overtime1Hours,\n OT2__c: timesheet.overtime2Hours,\n OnCall__c: timesheet.onCallHours,\n Misc1__c: timesheet.misc1HoursA,\n Misc_1_Hours__c: timesheet.misc1HoursB,\n Misc_2_Hours__c: timesheet.misc2Hours,\n Misc_3_Hours__c: timesheet.misc3Hours,\n Misc_4_Hours__c: timesheet.misc4Hours,\n Stat1__c: timesheet.stat1Hours,\n Stat2__c: timesheet.stat2Hours,\n In_Charge__c: timesheet.inChargeHours,\n Shift_Travel_Stipend__c: timesheet.shiftTravelPerDiemHours\n })\n\n if (![200, 204, 304].includes(response.status))\n throw new Error(`got error status code ${response.status}`)\n } catch (error) {\n console.error('Error Updating Timesheet Hour: ', error.message)\n }\n }\n\n async getTimesheetId(workorderId: string): Promise<string> {\n // First we find the correct timesheet id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderId}'\n LIMIT 1`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records[0].Id\n }\n\n async getTimesheetsForPractitioner(personnelID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '${personnelID}')`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let timesheets = []\n\n for (const timesheet of data.data.records) {\n timesheets.push({\n workorderId: timesheet.WorkOrder__c,\n id: timesheet.Id,\n updatedAt: timesheet.LastModifiedDate\n })\n }\n\n return timesheets\n }\n\n async getTimesheetHoursIds(workorderId: string): Promise<string[]> {\n const timesheetId = await this.getTimesheetId(workorderId)\n // First we find the correct timesheet hours id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '${timesheetId}'`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records.map(({ Id }) => Id)\n }\n\n async getTimesheetHours(workorderId: string): Promise<TimesheetDayEntry[]> {\n const timesheetHourIds = await this.getTimesheetHoursIds(workorderId)\n return Promise.all(\n timesheetHourIds.map(async id =>\n this.axiosInstance\n .get(`/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${id}`)\n .then(res => res.data)\n .then(toTimesheetDayEntry)\n )\n )\n }\n\n async getPayPeriods(): Promise<any> {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT Name,\n StartDate__c,\n EndDate__c\n FROM PayPeriod__c`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriods = []\n\n for (const payPeriod of data.data.records) {\n payPeriods.push({\n name: payPeriod.Name,\n startDate: payPeriod.StartDate__c,\n endDate: payPeriod.EndDate__c\n })\n }\n\n return payPeriods\n }\n}\n\nfunction toTimesheetDayEntry(raw: any): TimesheetDayEntry {\n return {\n id: raw.Id,\n date: raw.Date__c,\n callbackHours: raw.Callback__c,\n regularHours: raw.HoursEBAdjusted__c,\n miscHours: raw.Misc__c,\n overtime1Hours: raw.OT1__c,\n overtime2Hours: raw.OT2__c,\n onCallHours: raw.OnCall__c,\n misc1HoursA: raw.Misc1__c,\n misc1HoursB: raw.Misc_1_Hours__c,\n misc2Hours: raw.Misc_2_Hours__c,\n misc3Hours: raw.Misc_3_Hours__c,\n misc4Hours: raw.Misc_4_Hours__c,\n stat1Hours: raw.Stat1__c,\n stat2Hours: raw.Stat2__c,\n inChargeHours: raw.In_Charge__c,\n shiftTravelPerDiemHours: raw.Shift_Travel_Stipend__c,\n lastModified: raw.LastModifiedDate\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFPractitionerClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchPractitioners(): Promise<Practitioner[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Workorder } from '../../models'\n\nexport class SFWorkorderClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n\n async getWorkordersForPractitioner(practitionerId?: string): Promise<Workorder[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = practitionerId\n ? `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${practitionerId}'`\n : `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n establishmentId: record.HospitalID__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n practitionerId: record.Personnel__c,\n startDate: new Date(record.startdate__c),\n endDate: new Date(record.EndDate__c),\n createdAt: new Date(record.CreatedDate),\n updatedAt: new Date(record.LastModifiedDate)\n })\n )\n )\n } catch (error) {\n console.error('Error fetching work orders: ', error.message)\n throw error\n }\n }\n}","import axios, { AxiosInstance } from 'axios'\nimport { SFAuthenticator } from './auth/auth'\nimport { SFTimesheetClient } from './timesheet/timesheetClient'\nimport { SFPractitionerClient } from './practitioner/practitionerClient'\nimport { Role } from '../models'\nimport { SFWorkorderClient } from './workorder/workorderClient'\n\nexport const SF_API_VERSION: string = 'v57.0'\n\nexport class SFApiClient {\n private instance: SFApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: SFAuthenticator\n private baseUrl: string\n timesheetClient: SFTimesheetClient\n workorderClient: SFWorkorderClient\n practitionerClient: SFPractitionerClient\n\n constructor(baseUrl?: string) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.workorderClient = new SFWorkorderClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n }\n\n async init(\n sfClientId: string,\n sfClientSecret: string,\n onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>\n ) {\n // creates authenticator and adds token to axios instance\n await this.authenticator.initializeAuth(sfClientId, sfClientSecret, onTokenRefresh)\n }\n\n setInstance(instance: SFApiClient) {\n this.instance = instance\n }\n getInstance(): SFApiClient {\n return this.instance\n }\n\n async fetchRoles(): Promise<Role[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Label, Value FROM PicklistValueInfo \\\n WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c'\\\n AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' \\\n AND isActive = true`\n return this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Role => ({\n label: record.Label,\n value: record.Value\n })\n )\n )\n } catch (error) {\n console.error('Error fetching roles: ', error.message)\n throw error\n }\n }\n}\n"],"names":["SFAuthenticator","authenticatedAxiosInstance","baseUrl","axios","create","undefined","axiosTokenInstance","defaults","baseURL","_proto","prototype","initializeAuth","_initializeAuth","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","clientId","clientSecret","onTokenRefresh","_this","token","wrap","_callee2$","_context2","prev","next","postToken","sent","headers","common","interceptors","response","use","_ref","_callee","error","_error$response","originalRequest","newClientCredentials","newClientId","newClientSecret","newToken","_callee$","_context","config","_retryCount","status","tokenRefreshPromise","timeout","Promise","race","_","reject","setTimeout","Error","abrupt","t0","stop","_x4","apply","arguments","_x","_x2","_x3","_postToken","_callee3","_response$data","tokenFormRequestBody","_callee3$","_context3","FormData","refreshToken","append","post","getHeaders","data","_x5","_x6","SFTimesheetClient","axiosInstance","updateTimesheetHour","_updateTimesheetHour","timesheetHourId","timesheet","url","SF_API_VERSION","patch","Date__c","date","Callback__c","callbackHours","HoursEBAdjusted__c","regularHours","Misc__c","miscHours","OT1__c","overtime1Hours","OT2__c","overtime2Hours","OnCall__c","onCallHours","Misc1__c","misc1HoursA","Misc_1_Hours__c","misc1HoursB","Misc_2_Hours__c","misc2Hours","Misc_3_Hours__c","misc3Hours","Misc_4_Hours__c","misc4Hours","Stat1__c","stat1Hours","Stat2__c","stat2Hours","In_Charge__c","inChargeHours","Shift_Travel_Stipend__c","shiftTravelPerDiemHours","includes","console","message","getTimesheetId","_getTimesheetId","workorderId","query","_yield$this$axiosInst","records","get","params","q","Id","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","personnelID","timesheets","_iterator","_step","_createForOfIteratorHelperLoose","done","value","push","WorkOrder__c","id","updatedAt","LastModifiedDate","getTimesheetHoursIds","_getTimesheetHoursIds","_callee4","timesheetId","_yield$this$axiosInst2","_callee4$","_context4","map","getTimesheetHours","_getTimesheetHours","_callee6","timesheetHourIds","_callee6$","_context6","all","_ref2","_callee5","_callee5$","_context5","then","res","toTimesheetDayEntry","_x7","getPayPeriods","_getPayPeriods","_callee7","payPeriods","_iterator2","_step2","payPeriod","_callee7$","_context7","name","Name","startDate","StartDate__c","endDate","EndDate__c","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","firstName","FirstName__c","lastName","LastName__c","email","Email__c","staffId","StaffID__c","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","record","establishmentId","HospitalID__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","Date","startdate__c","createdAt","CreatedDate","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value"],"mappings":"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"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.4.0",
2
+ "version": "1.4.2",
3
3
  "main": "dist/index.js",
4
4
  "typings": "dist/index.d.ts",
5
5
  "files": [
@@ -26,9 +26,13 @@ export class SFApiClient {
26
26
  this.practitionerClient = new SFPractitionerClient(this.axiosInstance)
27
27
  }
28
28
 
29
- async init(sfClientId: string, sfClientSecret: string) {
29
+ async init(
30
+ sfClientId: string,
31
+ sfClientSecret: string,
32
+ onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>
33
+ ) {
30
34
  // creates authenticator and adds token to axios instance
31
- await this.authenticator.initializeAuth(sfClientId, sfClientSecret)
35
+ await this.authenticator.initializeAuth(sfClientId, sfClientSecret, onTokenRefresh)
32
36
  }
33
37
 
34
38
  setInstance(instance: SFApiClient) {
@@ -14,7 +14,11 @@ export class SFAuthenticator {
14
14
  this.authenticatedAxiosInstance = authenticatedAxiosInstance
15
15
  }
16
16
 
17
- async initializeAuth(clientId: string, clientSecret: string) {
17
+ async initializeAuth(
18
+ clientId: string,
19
+ clientSecret: string,
20
+ onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>
21
+ ) {
18
22
  const token = await this.postToken(clientId, clientSecret)
19
23
  this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`
20
24
 
@@ -31,7 +35,11 @@ export class SFAuthenticator {
31
35
  try {
32
36
  // Use existing token refresh if one is in progress
33
37
  if (!this.tokenRefreshPromise) {
34
- this.tokenRefreshPromise = this.postToken(clientId, clientSecret)
38
+ const newClientCredentials = await onTokenRefresh?.()
39
+ const newClientId = newClientCredentials?.clientId || clientId
40
+ const newClientSecret =
41
+ newClientCredentials?.clientSecret || clientSecret
42
+ this.tokenRefreshPromise = this.postToken(newClientId, newClientSecret)
35
43
  }
36
44
 
37
45
  const newToken = await this.tokenRefreshPromise
@@ -103,6 +103,29 @@ export class SFTimesheetClient {
103
103
  )
104
104
  )
105
105
  }
106
+
107
+ async getPayPeriods(): Promise<any> {
108
+ const url = `/services/data/${SF_API_VERSION}/query`
109
+
110
+ const query = `SELECT Name,
111
+ StartDate__c,
112
+ EndDate__c
113
+ FROM PayPeriod__c`
114
+
115
+ const data = await this.axiosInstance.get(url, { params: { q: query } })
116
+
117
+ let payPeriods = []
118
+
119
+ for (const payPeriod of data.data.records) {
120
+ payPeriods.push({
121
+ name: payPeriod.Name,
122
+ startDate: payPeriod.StartDate__c,
123
+ endDate: payPeriod.EndDate__c
124
+ })
125
+ }
126
+
127
+ return payPeriods
128
+ }
106
129
  }
107
130
 
108
131
  function toTimesheetDayEntry(raw: any): TimesheetDayEntry {