mp-js-api 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/api.d.ts +74 -0
  2. package/dist/api.d.ts.map +1 -0
  3. package/dist/api.js +158 -0
  4. package/dist/index.d.ts +56 -48
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +73 -306
  7. package/dist/tables/addresses.d.ts +0 -2
  8. package/dist/tables/addresses.d.ts.map +1 -1
  9. package/dist/tables/addresses.js +0 -58
  10. package/dist/tables/contact-attributes.d.ts +0 -2
  11. package/dist/tables/contact-attributes.d.ts.map +1 -1
  12. package/dist/tables/contact-attributes.js +0 -22
  13. package/dist/tables/contacts.d.ts +0 -2
  14. package/dist/tables/contacts.d.ts.map +1 -1
  15. package/dist/tables/contacts.js +0 -112
  16. package/dist/tables/event-participants.d.ts +0 -2
  17. package/dist/tables/event-participants.d.ts.map +1 -1
  18. package/dist/tables/event-participants.js +0 -50
  19. package/dist/tables/events.d.ts +0 -2
  20. package/dist/tables/events.d.ts.map +1 -1
  21. package/dist/tables/events.js +0 -120
  22. package/dist/tables/form-responses.d.ts +49 -0
  23. package/dist/tables/form-responses.d.ts.map +1 -0
  24. package/dist/tables/form-responses.js +2 -0
  25. package/dist/tables/from-response-answers.d.ts +21 -0
  26. package/dist/tables/from-response-answers.d.ts.map +1 -0
  27. package/dist/tables/from-response-answers.js +2 -0
  28. package/dist/tables/group-participants.d.ts +0 -2
  29. package/dist/tables/group-participants.d.ts.map +1 -1
  30. package/dist/tables/group-participants.js +0 -64
  31. package/dist/tables/groups.d.ts +0 -2
  32. package/dist/tables/groups.d.ts.map +1 -1
  33. package/dist/tables/groups.js +0 -106
  34. package/dist/tables/households.d.ts +0 -2
  35. package/dist/tables/households.d.ts.map +1 -1
  36. package/dist/tables/households.js +0 -58
  37. package/dist/tables/participants.d.ts +0 -2
  38. package/dist/tables/participants.d.ts.map +1 -1
  39. package/dist/tables/participants.js +0 -66
  40. package/dist/utils/strings.d.ts +14 -0
  41. package/dist/utils/strings.d.ts.map +1 -1
  42. package/dist/utils/strings.js +54 -0
  43. package/package.json +1 -1
  44. package/src/api.ts +266 -0
  45. package/src/index.ts +207 -424
  46. package/src/tables/addresses.ts +1 -59
  47. package/src/tables/contact-attributes.ts +0 -23
  48. package/src/tables/contacts.ts +0 -118
  49. package/src/tables/event-participants.ts +1 -51
  50. package/src/tables/events.ts +0 -119
  51. package/src/tables/form-responses.ts +51 -0
  52. package/src/tables/from-response-answers.ts +23 -0
  53. package/src/tables/group-participants.ts +55 -119
  54. package/src/tables/groups.ts +1 -107
  55. package/src/tables/households.ts +0 -58
  56. package/src/tables/participants.ts +1 -67
  57. package/src/utils/strings.ts +60 -1
@@ -1 +1 @@
1
- {"version":3,"file":"households.d.ts","sourceRoot":"","sources":["../../src/tables/households.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,IAAI,GAAG,MAAM,CAAC;IACrC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,IAAI,GAAG,MAAM,CAAC;IAC/B,cAAc,EAAE,IAAI,GAAG,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,mCAAmC,EAAE,IAAI,GAAG,MAAM,CAAC;IACnD,yBAAyB,EAAE,IAAI,GAAG,MAAM,CAAC;IACzC,YAAY,EAAE,IAAI,GAAG,MAAM,CAAC;IAC5B,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uCAAuC,EAAE,IAAI,GAAG,MAAM,CAAC;IACvD,uBAAuB,EAAE,IAAI,GAAG,MAAM,CAAC;IACvC,gBAAgB,EAAE,IAAI,GAAG,MAAM,CAAC;IAChC,YAAY,EAAE,IAAI,GAAG,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,IAAI,GAAG,MAAM,CAAC;IACpC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,IAAI,GAAG,MAAM,CAAC;IAC7B,YAAY,EAAE,IAAI,GAAG,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,gCAAgC,EAAE,IAAI,GAAG,MAAM,CAAC;IAChD,uBAAuB,EAAE,IAAI,GAAG,MAAM,CAAC;IACvC,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC;IAC3B,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,mCAAmC,EAAE,IAAI,GAAG,MAAM,CAAC;IACnD,qBAAqB,EAAE,IAAI,GAAG,MAAM,CAAC;IACrC,eAAe,EAAE,IAAI,GAAG,MAAM,CAAC;IAC/B,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC;CAC9B;AAED,wBAAgB,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,SAAS,CA2B9E;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,SAAS,GAAG,eAAe,CA2BnF"}
1
+ {"version":3,"file":"households.d.ts","sourceRoot":"","sources":["../../src/tables/households.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,IAAI,GAAG,MAAM,CAAC;IACrC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,IAAI,GAAG,MAAM,CAAC;IAC/B,cAAc,EAAE,IAAI,GAAG,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,mCAAmC,EAAE,IAAI,GAAG,MAAM,CAAC;IACnD,yBAAyB,EAAE,IAAI,GAAG,MAAM,CAAC;IACzC,YAAY,EAAE,IAAI,GAAG,MAAM,CAAC;IAC5B,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uCAAuC,EAAE,IAAI,GAAG,MAAM,CAAC;IACvD,uBAAuB,EAAE,IAAI,GAAG,MAAM,CAAC;IACvC,gBAAgB,EAAE,IAAI,GAAG,MAAM,CAAC;IAChC,YAAY,EAAE,IAAI,GAAG,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,IAAI,GAAG,MAAM,CAAC;IACpC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,IAAI,GAAG,MAAM,CAAC;IAC7B,YAAY,EAAE,IAAI,GAAG,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,gCAAgC,EAAE,IAAI,GAAG,MAAM,CAAC;IAChD,uBAAuB,EAAE,IAAI,GAAG,MAAM,CAAC;IACvC,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC;IAC3B,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,mCAAmC,EAAE,IAAI,GAAG,MAAM,CAAC;IACnD,qBAAqB,EAAE,IAAI,GAAG,MAAM,CAAC;IACrC,eAAe,EAAE,IAAI,GAAG,MAAM,CAAC;IAC/B,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC;CAC9B"}
@@ -1,60 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mapHouseholdRecord = mapHouseholdRecord;
4
- exports.mapHouseholdToHouseholdRecord = mapHouseholdToHouseholdRecord;
5
- function mapHouseholdRecord(householdRecord) {
6
- return {
7
- householdID: householdRecord.Household_ID,
8
- householdName: householdRecord.Household_Name,
9
- addressID: householdRecord.Address_ID,
10
- homePhone: householdRecord.Home_Phone,
11
- congregationID: householdRecord.Congregation_ID,
12
- carePerson: householdRecord.Care_Person,
13
- householdSourceID: householdRecord.Household_Source_ID,
14
- familyCallNumber: householdRecord.Family_Call_Number,
15
- householdPreferences: householdRecord.Household_Preferences,
16
- homePhoneUnlisted: householdRecord.Home_Phone_Unlisted,
17
- homeAddressUnlisted: householdRecord.Home_Address_Unlisted,
18
- bulkMailOptOut: householdRecord.Bulk_Mail_Opt_Out,
19
- firstDonation: householdRecord._First_Donation,
20
- lastDonation: householdRecord._Last_Donation,
21
- lastActivity: householdRecord._Last_Activity,
22
- seasonalAlternateAddressSettings: householdRecord.Seasonal_Alternate_Address_Settings,
23
- alternateMailingAddress: householdRecord.Alternate_Mailing_Address,
24
- seasonStart: householdRecord.Season_Start,
25
- seasonEnd: householdRecord.Season_End,
26
- repeatsAnnually: householdRecord.Repeats_Annually,
27
- endSeasonalAlternateAddressSettings: householdRecord.End_Seasonal_Alternate_Address_Settings,
28
- congregationDriveTime: householdRecord.Congregation_Drive_Time,
29
- drivingDistance: householdRecord.Driving_Distance,
30
- drivingTime: householdRecord.Driving_Time,
31
- };
32
- }
33
- function mapHouseholdToHouseholdRecord(household) {
34
- return {
35
- Household_ID: household.householdID,
36
- Household_Name: household.householdName,
37
- Address_ID: household.addressID,
38
- Home_Phone: household.homePhone,
39
- Congregation_ID: household.congregationID,
40
- Care_Person: household.carePerson,
41
- Household_Source_ID: household.householdSourceID,
42
- Family_Call_Number: household.familyCallNumber,
43
- Household_Preferences: household.householdPreferences,
44
- Home_Phone_Unlisted: household.homePhoneUnlisted,
45
- Home_Address_Unlisted: household.homeAddressUnlisted,
46
- Bulk_Mail_Opt_Out: household.bulkMailOptOut,
47
- _First_Donation: household.firstDonation,
48
- _Last_Donation: household.lastDonation,
49
- _Last_Activity: household.lastActivity,
50
- Seasonal_Alternate_Address_Settings: household.seasonalAlternateAddressSettings,
51
- Alternate_Mailing_Address: household.alternateMailingAddress,
52
- Season_Start: household.seasonStart,
53
- Season_End: household.seasonEnd,
54
- Repeats_Annually: household.repeatsAnnually,
55
- End_Seasonal_Alternate_Address_Settings: household.endSeasonalAlternateAddressSettings,
56
- Congregation_Drive_Time: household.congregationDriveTime,
57
- Driving_Distance: household.drivingDistance,
58
- Driving_Time: household.drivingTime,
59
- };
60
- }
@@ -58,6 +58,4 @@ export interface Participant {
58
58
  birthCertificateCity: null | string;
59
59
  birthCertificateState: null | string;
60
60
  }
61
- export declare function mapParticipantRecord(record: ParticipantRecord): Participant;
62
- export declare function mapParticipantToParticipantRecord(participant: Participant): ParticipantRecord;
63
61
  //# sourceMappingURL=participants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"participants.d.ts","sourceRoot":"","sources":["../../src/tables/participants.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,IAAI,GAAG,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,IAAI,GAAG,MAAM,CAAC;IAChC,yBAAyB,EAAE,MAAM,CAAC;IAClC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,IAAI,GAAG,MAAM,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB,EAAE,IAAI,GAAG,MAAM,CAAC;IACtC,uBAAuB,EAAE,IAAI,GAAG,MAAM,CAAC;IACvC,sBAAsB,EAAE,IAAI,GAAG,MAAM,CAAC;IACtC,qBAAqB,EAAE,IAAI,GAAG,MAAM,CAAC;IACrC,cAAc,EAAE,IAAI,GAAG,MAAM,CAAC;IAC9B,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC;IAC3B,mBAAmB,EAAE,IAAI,GAAG,MAAM,CAAC;IACnC,aAAa,EAAE,IAAI,GAAG,MAAM,CAAC;IAC7B,6BAA6B,EAAE,IAAI,GAAG,MAAM,CAAC;IAC7C,sBAAsB,EAAE,IAAI,GAAG,MAAM,CAAC;IACtC,wBAAwB,EAAE,IAAI,GAAG,MAAM,CAAC;IACxC,sBAAsB,EAAE,IAAI,GAAG,MAAM,CAAC;IACtC,qBAAqB,EAAE,IAAI,GAAG,MAAM,CAAC;IACrC,gBAAgB,EAAE,IAAI,GAAG,MAAM,CAAC;IAChC,mBAAmB,EAAE,IAAI,GAAG,MAAM,CAAC;IACnC,sBAAsB,EAAE,IAAI,GAAG,MAAM,CAAC;IACtC,yBAAyB,EAAE,IAAI,GAAG,MAAM,CAAC;IACzC,sBAAsB,EAAE,IAAI,GAAG,MAAM,CAAC;IACtC,uBAAuB,EAAE,IAAI,GAAG,MAAM,CAAC;CAC1C;AAED,MAAM,WAAW,WAAW;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,IAAI,GAAG,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,IAAI,GAAG,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,IAAI,GAAG,MAAM,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,IAAI,GAAG,MAAM,CAAC;IACnC,oBAAoB,EAAE,IAAI,GAAG,MAAM,CAAC;IACpC,mBAAmB,EAAE,IAAI,GAAG,MAAM,CAAC;IACnC,kBAAkB,EAAE,IAAI,GAAG,MAAM,CAAC;IAClC,aAAa,EAAE,IAAI,GAAG,MAAM,CAAC;IAC7B,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,kBAAkB,EAAE,IAAI,GAAG,MAAM,CAAC;IAClC,YAAY,EAAE,IAAI,GAAG,MAAM,CAAC;IAC5B,0BAA0B,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1C,mBAAmB,EAAE,IAAI,GAAG,MAAM,CAAC;IACnC,qBAAqB,EAAE,IAAI,GAAG,MAAM,CAAC;IACrC,mBAAmB,EAAE,IAAI,GAAG,MAAM,CAAC;IACnC,oBAAoB,EAAE,IAAI,GAAG,MAAM,CAAC;IACpC,cAAc,EAAE,IAAI,GAAG,MAAM,CAAC;IAC9B,iBAAiB,EAAE,IAAI,GAAG,MAAM,CAAC;IACjC,oBAAoB,EAAE,IAAI,GAAG,MAAM,CAAC;IACpC,uBAAuB,EAAE,IAAI,GAAG,MAAM,CAAC;IACvC,oBAAoB,EAAE,IAAI,GAAG,MAAM,CAAC;IACpC,qBAAqB,EAAE,IAAI,GAAG,MAAM,CAAC;CACxC;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CA+B3E;AAED,wBAAgB,iCAAiC,CAAC,WAAW,EAAE,WAAW,GAAG,iBAAiB,CA+B7F"}
1
+ {"version":3,"file":"participants.d.ts","sourceRoot":"","sources":["../../src/tables/participants.ts"],"names":[],"mappings":"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"}
@@ -1,68 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mapParticipantRecord = mapParticipantRecord;
4
- exports.mapParticipantToParticipantRecord = mapParticipantToParticipantRecord;
5
- function mapParticipantRecord(record) {
6
- return {
7
- participantID: record.Participant_ID,
8
- redFlagNotes: record.Red_Flag_Notes,
9
- contactID: record.Contact_ID,
10
- participantTypeID: record.Participant_Type_ID,
11
- memberStatusID: record.Member_Status_ID,
12
- participantEngagementID: record.Participant_Engagement_ID,
13
- participantStartDate: record.Participant_Start_Date,
14
- participantEndDate: record.Participant_End_Date,
15
- notes: record.Notes,
16
- firstAttendanceEver: record._First_Attendance_Ever,
17
- secondAttendanceEver: record._Second_Attendance_Ever,
18
- thirdAttendanceEver: record._Third_Attendance_Ever,
19
- lastAttendanceEver: record._Last_Attendance_Ever,
20
- subStatusName: record.SubStatus_Name,
21
- statusDate: record.Status_Date,
22
- formerDenomination: record.Former_Denomination,
23
- formerChurch: record.Former_Church,
24
- backgroundCheckInformation: record._Background_Check_Information,
25
- backgroundCheckType: record._Background_Check_Type,
26
- backgroundCheckStatus: record._Background_Check_Status,
27
- backgroundCheckDate: record._Background_Check_Date,
28
- sacramentInformation: record.Sacrament_Information,
29
- churchOfRecord: record.Church_of_Record,
30
- baptismParishName: record.Baptism_Parish_Name,
31
- baptismParishAddress: record.Baptism_Parish_Address,
32
- birthCertificateAddress: record.Birth_Certificate_Address,
33
- birthCertificateCity: record.Birth_Certificate_City,
34
- birthCertificateState: record.Birth_Certificate_State,
35
- };
36
- }
37
- function mapParticipantToParticipantRecord(participant) {
38
- return {
39
- Participant_ID: participant.participantID,
40
- Red_Flag_Notes: participant.redFlagNotes,
41
- Contact_ID: participant.contactID,
42
- Participant_Type_ID: participant.participantTypeID,
43
- Member_Status_ID: participant.memberStatusID,
44
- Participant_Engagement_ID: participant.participantEngagementID,
45
- Participant_Start_Date: participant.participantStartDate,
46
- Participant_End_Date: participant.participantEndDate,
47
- Notes: participant.notes,
48
- _First_Attendance_Ever: participant.firstAttendanceEver,
49
- _Second_Attendance_Ever: participant.secondAttendanceEver,
50
- _Third_Attendance_Ever: participant.thirdAttendanceEver,
51
- _Last_Attendance_Ever: participant.lastAttendanceEver,
52
- SubStatus_Name: participant.subStatusName,
53
- Status_Date: participant.statusDate,
54
- Former_Denomination: participant.formerDenomination,
55
- Former_Church: participant.formerChurch,
56
- _Background_Check_Information: participant.backgroundCheckInformation,
57
- _Background_Check_Type: participant.backgroundCheckType,
58
- _Background_Check_Status: participant.backgroundCheckStatus,
59
- _Background_Check_Date: participant.backgroundCheckDate,
60
- Sacrament_Information: participant.sacramentInformation,
61
- Church_of_Record: participant.churchOfRecord,
62
- Baptism_Parish_Name: participant.baptismParishName,
63
- Baptism_Parish_Address: participant.baptismParishAddress,
64
- Birth_Certificate_Address: participant.birthCertificateAddress,
65
- Birth_Certificate_City: participant.birthCertificateCity,
66
- Birth_Certificate_State: participant.birthCertificateState,
67
- };
68
- }
@@ -1,2 +1,16 @@
1
+ export declare function stringifyURLParams<T = any>(mpOptions?: Record<string, T>): string;
1
2
  export declare function escapeSql(str: string): string;
3
+ export declare function toCamelCase(str: string, { capitalIds }?: {
4
+ capitalIds?: boolean;
5
+ }): string;
6
+ export declare function toCapitalSnakeCase(str: string, { capitalIds, capitalSnake }?: {
7
+ capitalIds?: boolean;
8
+ capitalSnake?: boolean;
9
+ }): string;
10
+ export declare function caseConverter<T>(obj: T, { type, capitalIds }: {
11
+ type: 'toCamel' | 'toSnake';
12
+ capitalIds?: boolean;
13
+ }): any;
14
+ export declare function convertToCamelCase<T = any, R = any>(obj: Partial<T>, capitalIds?: boolean): R;
15
+ export declare function convertToSnakeCase<T = any, R = any>(obj: Partial<T>, capitalIds?: boolean): R;
2
16
  //# sourceMappingURL=strings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../src/utils/strings.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,UA2BpC"}
1
+ {"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../src/utils/strings.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAM,UAS5E;AAGD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,UA2BpC;AAID,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,UAAkB,EAAE,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;CAAM,UAM7F;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,UAAkB,EAAE,YAAmB,EAAE,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CAAM,UAKjJ;AAGD,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,UAAkB,EAAE,EAAE;IAAE,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAAE,OAkB5H;AAED,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,UAAO,GAAG,CAAC,CAE1F;AAED,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,UAAO,GAAG,CAAC,CAE1F"}
@@ -1,6 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringifyURLParams = stringifyURLParams;
3
4
  exports.escapeSql = escapeSql;
5
+ exports.toCamelCase = toCamelCase;
6
+ exports.toCapitalSnakeCase = toCapitalSnakeCase;
7
+ exports.caseConverter = caseConverter;
8
+ exports.convertToCamelCase = convertToCamelCase;
9
+ exports.convertToSnakeCase = convertToSnakeCase;
10
+ function stringifyURLParams(mpOptions = {}) {
11
+ return escapeSql(Object.entries(mpOptions).reduce((acc, [key, value]) => {
12
+ if (!acc) {
13
+ acc += `?$${key}=${value}`;
14
+ }
15
+ else {
16
+ acc += `&$${key}=${value}`;
17
+ }
18
+ return acc;
19
+ }, ''));
20
+ }
4
21
  function escapeSql(str) {
5
22
  return str.replace(/%|(?<=\w)'(?=\w)/g, function (char) {
6
23
  switch (char) {
@@ -29,3 +46,40 @@ function escapeSql(str) {
29
46
  }
30
47
  });
31
48
  }
49
+ function toCamelCase(str, { capitalIds = false } = {}) {
50
+ str = str.replace('-', '');
51
+ str = str.replace(/^_?[A-Z]{1,3}/, match => match.toLowerCase()); // Don't convert if start with ID, HS, SMS, etc
52
+ str = str.replace(/(?<=^_|^__)[^\W_]/g, match => match.at(-1)?.toLowerCase() || ''); // keep underscore if first char
53
+ str = str.replace(/(?<!^_|^)_[^\W_]/g, match => match.charAt(1).toUpperCase()); // remove underscore if not first char
54
+ return capitalIds ? str.replace(/id$/i, 'ID') : str;
55
+ }
56
+ function toCapitalSnakeCase(str, { capitalIds = false, capitalSnake = true } = {}) {
57
+ str = str.replace(/(?<=^_|^__)[^\W_]/, match => match.at(0)?.toUpperCase() || '');
58
+ str = str.replace(/(?<!_|\/)(ID|[A-Z])/g, match => `_${match}`);
59
+ str = capitalSnake ? str.charAt(0).toUpperCase() + str.slice(1) : str;
60
+ return capitalIds ? str.replace(/_id$/i, '_ID') : str;
61
+ }
62
+ // Function to recursively convert object keys to Capital_Snake_Case
63
+ function caseConverter(obj, { type, capitalIds = false }) {
64
+ const caseFn = type === 'toCamel' ? toCamelCase : toCapitalSnakeCase;
65
+ if (Array.isArray(obj)) {
66
+ return obj.map(val => caseConverter(val, { type })); // Recursively process each array element
67
+ }
68
+ if (obj !== null && typeof obj === 'object') {
69
+ const snakeCaseObj = {};
70
+ for (const key in obj) {
71
+ if (obj.hasOwnProperty(key)) {
72
+ const snakeCaseKey = caseFn(key, { capitalIds }); // Convert key to Snake_Case
73
+ snakeCaseObj[snakeCaseKey] = caseConverter(obj[key], { type }); // Recursively process nested objects
74
+ }
75
+ }
76
+ return snakeCaseObj;
77
+ }
78
+ return obj; // Return value if it's neither an array nor an object
79
+ }
80
+ function convertToCamelCase(obj, capitalIds = true) {
81
+ return caseConverter(obj, { type: 'toCamel', capitalIds });
82
+ }
83
+ function convertToSnakeCase(obj, capitalIds = true) {
84
+ return caseConverter(obj, { type: 'toSnake', capitalIds });
85
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mp-js-api",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "description": "Node MinistryPlatform API",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
package/src/api.ts ADDED
@@ -0,0 +1,266 @@
1
+ import axios, { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
2
+ import { URLSearchParams } from 'url';
3
+ import { convertToCamelCase, convertToSnakeCase, stringifyURLParams } from './utils/strings';
4
+
5
+
6
+ export type APIGetOneInstance = <T, R>({ id, path, mpOptions, config }: APIGetParameter & { id: number; }) => Promise<R | undefined | { error: ErrorDetails; }>;
7
+ export type APIGetMultipleInstance = <T, R>({ path, mpOptions, config }: APIGetParameter) => Promise<R[] | { error: ErrorDetails; }>;
8
+ export type APICreateInstance = <T, R>({ path, mpOptions, params, config }: APICreateParameter<T>) => Promise<R | { error: ErrorDetails; }>;
9
+ export type APIUpdateInstance = <T, R>({ path, mpOptions, params, config }: APIUpdateParameter<T>) => Promise<R[] | { error: ErrorDetails; }>;
10
+
11
+
12
+ export interface MPApiBase {
13
+ getOne: APIGetOneInstance;
14
+ getMultiple: APIGetMultipleInstance;
15
+ create: APICreateInstance;
16
+ update: APIUpdateInstance;
17
+ get: AxiosInstance['get'];
18
+ post: AxiosInstance['post'];
19
+ put: AxiosInstance['put'];
20
+ getError: (error: AxiosError) => ErrorDetails;
21
+ }
22
+
23
+ export interface ErrorDetails {
24
+ message: string;
25
+ name: string;
26
+ code?: string;
27
+ status?: number;
28
+ method?: string;
29
+ url?: string;
30
+ data: string;
31
+ error: true;
32
+ }
33
+
34
+
35
+ const createTokenGetter = (auth: { username: string; password: string; }) => {
36
+ let token: AccessToken | undefined;
37
+
38
+ return async () => {
39
+ // If the token is near expiration, get a new one.
40
+ if (!token || token.expiration - 60000 < Date.now()) {
41
+ const tokenRes = await axios.post<TokenData>(
42
+ 'https://mp.revival.com/ministryplatformapi/oauth/connect/token',
43
+ new URLSearchParams({
44
+ grant_type: 'client_credentials',
45
+ scope: 'http://www.thinkministry.com/dataplatform/scopes/all',
46
+ }).toString(),
47
+ { auth }
48
+ );
49
+ const [, payload] = tokenRes.data.access_token.split('.');
50
+ try {
51
+ const jsonPayload: { exp: number; } = JSON.parse(
52
+ Buffer.from(payload, 'base64url').toString()
53
+ );
54
+ token = {
55
+ digest: tokenRes.data.access_token,
56
+ expiration: jsonPayload.exp * 1000,
57
+ };
58
+ return token.digest;
59
+ } catch (err) {
60
+ console.error(err);
61
+ }
62
+ } else {
63
+ return token.digest;
64
+ }
65
+ };
66
+ };
67
+
68
+ export const createApiBase = ({ auth }: { auth: { username: string; password: string; }; }): MPApiBase => {
69
+ /**
70
+ * Gets MP oauth token.
71
+ * @returns token
72
+ */
73
+ const getToken = createTokenGetter(auth);
74
+ const api = axios.create({
75
+ baseURL: 'https://mp.revival.com/ministryplatformapi',
76
+ });
77
+
78
+ const getOne: APIGetOneInstance = async <T, R>({ id, path, mpOptions, config }) => {
79
+ try {
80
+ const url = `${path}/${id}` + stringifyURLParams(mpOptions);
81
+ const res = await api.get<T>(url, {
82
+ ...config,
83
+ headers: {
84
+ ...config?.headers,
85
+ Authorization: `Bearer ${await getToken()}`,
86
+ },
87
+ });
88
+ return res.data[0] ? convertToCamelCase<T, R>(res.data[0]) : undefined;
89
+ }
90
+ catch (err) {
91
+ return { error: getError(err) };
92
+ }
93
+ };
94
+
95
+ const getMultiple: APIGetMultipleInstance = async <T, R>({ path, mpOptions, config }: APIGetParameter) => {
96
+ try {
97
+ const url = path + stringifyURLParams(mpOptions);
98
+ const res = await api.get<T[]>(url, {
99
+ ...config,
100
+ headers: {
101
+ ...config?.headers,
102
+ Authorization: `Bearer ${await getToken()}`,
103
+ },
104
+ });
105
+ return res.data.map(record => convertToCamelCase<T, R>(record));
106
+ }
107
+ catch (err) {
108
+ return { error: getError(err) };
109
+ }
110
+ };
111
+
112
+
113
+ const create: APICreateInstance = async <T, R>({ path, mpOptions, params, config }: APICreateParameter<T>) => {
114
+ const query = stringifyURLParams(mpOptions);
115
+ const data = [convertToSnakeCase<T>(params)];
116
+ try {
117
+ const res = await api.post(path + query, data, {
118
+ ...config,
119
+ headers: {
120
+ ...config?.headers,
121
+ Authorization: `Bearer ${await getToken()}`,
122
+ },
123
+ });
124
+ return convertToCamelCase<any, R>(res.data[0]);
125
+ }
126
+ catch (err) {
127
+ return { error: getError(err) };
128
+ }
129
+
130
+ };
131
+
132
+
133
+ const update: APIUpdateInstance = async <T, R>({ path, mpOptions, params, config }: APIUpdateParameter<T>) => {
134
+ const query = stringifyURLParams(mpOptions);
135
+ const data = params.map(r => convertToSnakeCase<T>(r));
136
+ try {
137
+ const res = await api.put(path + query, data, {
138
+ ...config,
139
+ headers: {
140
+ ...config?.headers,
141
+ Authorization: `Bearer ${await getToken()}`,
142
+ },
143
+ });
144
+ return res.data.map(record => convertToCamelCase<any, R>(record));
145
+ }
146
+ catch (err) {
147
+ return { error: getError(err) };
148
+ }
149
+
150
+ };
151
+
152
+ const get = async <T = any, R = AxiosResponse<T, any>>(
153
+ url: string,
154
+ config?: AxiosRequestConfig
155
+ ) =>
156
+ api.get<T, R>(url, {
157
+ ...config,
158
+ headers: {
159
+ ...config?.headers,
160
+ Authorization: `Bearer ${await getToken()}`,
161
+ },
162
+ });
163
+
164
+ const post = async <T, R = AxiosResponse<T, any>>(
165
+ url: string,
166
+ data?: any,
167
+ config?: AxiosRequestConfig
168
+ ) =>
169
+ api.post<T, R>(url, data, {
170
+ ...config,
171
+ headers: {
172
+ ...config?.headers,
173
+ Authorization: `Bearer ${await getToken()}`,
174
+ },
175
+ });
176
+
177
+ const put = async <T, R = AxiosResponse<T, any>>(
178
+ url: string,
179
+ data?: any,
180
+ config?: AxiosRequestConfig
181
+ ) =>
182
+ api.put<T, R>(url, data, {
183
+ ...config,
184
+ headers: {
185
+ ...config?.headers,
186
+ Authorization: `Bearer ${await getToken()}`,
187
+ },
188
+ });
189
+
190
+
191
+ const getError = function (error: AxiosError): ErrorDetails {
192
+ return {
193
+ error: true,
194
+ message: error.message,
195
+ name: error.name,
196
+ code: error.code,
197
+ status: error.status,
198
+ method: error.config?.method,
199
+ url: error.config?.url,
200
+ data: error.config?.data
201
+ };
202
+ };
203
+
204
+ return {
205
+ create,
206
+ update,
207
+ get,
208
+ put,
209
+ post,
210
+ getOne,
211
+ getMultiple,
212
+ getError
213
+ };
214
+ };
215
+
216
+
217
+
218
+
219
+
220
+ interface TokenData {
221
+ access_token: string;
222
+ expires_in: number;
223
+ token_type: 'Bearer';
224
+ }
225
+
226
+ interface AccessToken {
227
+ digest: string;
228
+ expiration: number;
229
+ }
230
+
231
+ export type MPGetOptions = {
232
+ select?: string;
233
+ filter?: string;
234
+ orderBy?: string;
235
+ groupBy?: string;
236
+ top?: number;
237
+ skip?: number;
238
+ distinct?: boolean;
239
+ };
240
+
241
+ export type MPCreateOptions = {
242
+ userId?: number;
243
+ select?: string;
244
+ };
245
+
246
+ export type MPUpdateOptions = MPCreateOptions;
247
+
248
+ interface APIGetParameter {
249
+ path: string;
250
+ mpOptions?: MPGetOptions;
251
+ config?: AxiosRequestConfig;
252
+ }
253
+
254
+ interface APICreateParameter<T> {
255
+ path: string;
256
+ params: T,
257
+ mpOptions?: MPCreateOptions;
258
+ config?: AxiosRequestConfig;
259
+ };
260
+
261
+ interface APIUpdateParameter<T> {
262
+ path: string;
263
+ params: T[],
264
+ mpOptions?: MPCreateOptions;
265
+ config?: AxiosRequestConfig;
266
+ };