diff --git a/CHANGELOG.md b/CHANGELOG.md index 2faccd80..e3d4af1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ + +# [2.4.0](https://github.com/bigcommerce-labs/bigpay-client-js/compare/2.3.0...2.4.0) (2017-09-20) + + +### Features + +* **Payment Mappers:** map BT PayPal Credit to braintree ([44e3183](https://github.com/bigcommerce-labs/bigpay-client-js/commit/44e3183)) + + + # [2.3.0](https://github.com/bigcommerce-labs/bigpay-client-js/compare/2.2.0...2.3.0) (2017-09-04) diff --git a/lib/payment/payment-method-ids.js b/lib/payment/payment-method-ids.js index f2ef205d..ccc13bb1 100644 --- a/lib/payment/payment-method-ids.js +++ b/lib/payment/payment-method-ids.js @@ -5,5 +5,6 @@ Object.defineProperty(exports, "__esModule", { }); var BRAINTREE = exports.BRAINTREE = 'braintree'; var BRAINTREE_PAYPAL = exports.BRAINTREE_PAYPAL = 'braintreepaypal'; +var BRAINTREE_PAYPAL_CREDIT = exports.BRAINTREE_PAYPAL_CREDIT = 'braintreepaypalcredit'; var BRAINTREE_VISACHECKOUT = exports.BRAINTREE_VISACHECKOUT = 'braintreevisacheckout'; //# sourceMappingURL=payment-method-ids.js.map \ No newline at end of file diff --git a/lib/payment/payment-method-ids.js.map b/lib/payment/payment-method-ids.js.map index 5de6076a..95965363 100644 --- a/lib/payment/payment-method-ids.js.map +++ b/lib/payment/payment-method-ids.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/payment/payment-method-ids.js"],"names":["BRAINTREE","BRAINTREE_PAYPAL","BRAINTREE_VISACHECKOUT"],"mappings":";;;;;AAAO,IAAMA,gCAAY,WAAlB;AACA,IAAMC,8CAAmB,iBAAzB;AACA,IAAMC,0DAAyB,uBAA/B","file":"payment-method-ids.js","sourcesContent":["export const BRAINTREE = 'braintree';\nexport const BRAINTREE_PAYPAL = 'braintreepaypal';\nexport const BRAINTREE_VISACHECKOUT = 'braintreevisacheckout';\n"]} \ No newline at end of file +{"version":3,"sources":["../../src/payment/payment-method-ids.js"],"names":["BRAINTREE","BRAINTREE_PAYPAL","BRAINTREE_PAYPAL_CREDIT","BRAINTREE_VISACHECKOUT"],"mappings":";;;;;AAAO,IAAMA,gCAAY,WAAlB;AACA,IAAMC,8CAAmB,iBAAzB;AACA,IAAMC,4DAA0B,uBAAhC;AACA,IAAMC,0DAAyB,uBAA/B","file":"payment-method-ids.js","sourcesContent":["export const BRAINTREE = 'braintree';\nexport const BRAINTREE_PAYPAL = 'braintreepaypal';\nexport const BRAINTREE_PAYPAL_CREDIT = 'braintreepaypalcredit';\nexport const BRAINTREE_VISACHECKOUT = 'braintreevisacheckout';\n"]} \ No newline at end of file diff --git a/lib/payment/payment-method-mappers/payment-method-id-mapper.js b/lib/payment/payment-method-mappers/payment-method-id-mapper.js index 868e5777..1ce86266 100644 --- a/lib/payment/payment-method-mappers/payment-method-id-mapper.js +++ b/lib/payment/payment-method-mappers/payment-method-id-mapper.js @@ -6,12 +6,27 @@ Object.defineProperty(exports, "__esModule", { var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); -var _paymentMethodIds = require('../payment-method-ids'); - var _paymentMethodTypes = require('../payment-method-types'); +var _paymentMethodIds = require('../payment-method-ids'); + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +/** + * @param {string} id + * @return {Boolean} + */ +function isBraintreePaymentMethod(id) { + switch (id) { + case _paymentMethodIds.BRAINTREE_PAYPAL: + case _paymentMethodIds.BRAINTREE_PAYPAL_CREDIT: + case _paymentMethodIds.BRAINTREE_VISACHECKOUT: + return true; + default: + return false; + } +} + var PaymentMethodIdMapper = function () { function PaymentMethodIdMapper() { _classCallCheck(this, PaymentMethodIdMapper); @@ -33,7 +48,7 @@ var PaymentMethodIdMapper = function () { id = paymentMethod.gateway; } - if (id === _paymentMethodIds.BRAINTREE_PAYPAL || id === _paymentMethodIds.BRAINTREE_VISACHECKOUT) { + if (isBraintreePaymentMethod(id)) { return _paymentMethodIds.BRAINTREE; } diff --git a/lib/payment/payment-method-mappers/payment-method-id-mapper.js.map b/lib/payment/payment-method-mappers/payment-method-id-mapper.js.map index 05cea74a..00917025 100644 --- a/lib/payment/payment-method-mappers/payment-method-id-mapper.js.map +++ b/lib/payment/payment-method-mappers/payment-method-id-mapper.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/payment/payment-method-mappers/payment-method-id-mapper.js"],"names":["PaymentMethodIdMapper","paymentMethod","id","method","gateway"],"mappings":";;;;;;;;AAAA;;AACA;;;;IAEqBA,qB;;;;;;;;;AAQjB;;;;gCAIQC,a,EAAe;AAAA,gBACbC,EADa,GACND,aADM,CACbC,EADa;;;AAGnB,gBAAID,cAAcE,MAAd,qCAAJ,EAA2C;AACvCD,qBAAKD,cAAcG,OAAnB;AACH;;AAED,gBAAIF,6CAA2BA,+CAA/B,EAA8D;AAC1D;AACH;;AAED,mBAAOA,EAAP;AACH;;;;AAvBD;;;iCAGgB;AACZ,mBAAO,IAAIF,qBAAJ,EAAP;AACH;;;;;;kBANgBA,qB","file":"payment-method-id-mapper.js","sourcesContent":["import { BRAINTREE, BRAINTREE_PAYPAL, BRAINTREE_VISACHECKOUT } from '../payment-method-ids';\nimport { MULTI_OPTION } from '../payment-method-types';\n\nexport default class PaymentMethodIdMapper {\n /**\n * @returns {PaymentMethodIdMapper}\n */\n static create() {\n return new PaymentMethodIdMapper();\n }\n\n /**\n * @param {PaymentMethod} paymentMethod\n * @returns {string}\n */\n mapToId(paymentMethod) {\n let { id } = paymentMethod;\n\n if (paymentMethod.method === MULTI_OPTION) {\n id = paymentMethod.gateway;\n }\n\n if (id === BRAINTREE_PAYPAL || id === BRAINTREE_VISACHECKOUT) {\n return BRAINTREE;\n }\n\n return id;\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../../../src/payment/payment-method-mappers/payment-method-id-mapper.js"],"names":["isBraintreePaymentMethod","id","PaymentMethodIdMapper","paymentMethod","method","gateway"],"mappings":";;;;;;;;AAAA;;AACA;;;;AAOA;;;;AAIA,SAASA,wBAAT,CAAkCC,EAAlC,EAAsC;AAClC,YAAQA,EAAR;AACA;AACA;AACA;AACI,mBAAO,IAAP;AACJ;AACI,mBAAO,KAAP;AANJ;AAQH;;IAEoBC,qB;;;;;;;;;AAQjB;;;;gCAIQC,a,EAAe;AAAA,gBACbF,EADa,GACNE,aADM,CACbF,EADa;;;AAGnB,gBAAIE,cAAcC,MAAd,qCAAJ,EAA2C;AACvCH,qBAAKE,cAAcE,OAAnB;AACH;;AAED,gBAAIL,yBAAyBC,EAAzB,CAAJ,EAAkC;AAC9B;AACH;;AAED,mBAAOA,EAAP;AACH;;;;AAvBD;;;iCAGgB;AACZ,mBAAO,IAAIC,qBAAJ,EAAP;AACH;;;;;;kBANgBA,qB","file":"payment-method-id-mapper.js","sourcesContent":["import { MULTI_OPTION } from '../payment-method-types';\nimport {\n BRAINTREE,\n BRAINTREE_PAYPAL,\n BRAINTREE_PAYPAL_CREDIT,\n BRAINTREE_VISACHECKOUT,\n} from '../payment-method-ids';\n\n/**\n * @param {string} id\n * @return {Boolean}\n */\nfunction isBraintreePaymentMethod(id) {\n switch (id) {\n case BRAINTREE_PAYPAL:\n case BRAINTREE_PAYPAL_CREDIT:\n case BRAINTREE_VISACHECKOUT:\n return true;\n default:\n return false;\n }\n}\n\nexport default class PaymentMethodIdMapper {\n /**\n * @returns {PaymentMethodIdMapper}\n */\n static create() {\n return new PaymentMethodIdMapper();\n }\n\n /**\n * @param {PaymentMethod} paymentMethod\n * @returns {string}\n */\n mapToId(paymentMethod) {\n let { id } = paymentMethod;\n\n if (paymentMethod.method === MULTI_OPTION) {\n id = paymentMethod.gateway;\n }\n\n if (isBraintreePaymentMethod(id)) {\n return BRAINTREE;\n }\n\n return id;\n }\n}\n"]} \ No newline at end of file diff --git a/lib/payment/v1/payment-mappers/payment-mapper.js b/lib/payment/v1/payment-mappers/payment-mapper.js index ef306649..664e843b 100644 --- a/lib/payment/v1/payment-mappers/payment-mapper.js +++ b/lib/payment/v1/payment-mappers/payment-mapper.js @@ -115,7 +115,8 @@ var PaymentMapper = function () { month: payment.ccExpiry ? (0, _utils.toNumber)(payment.ccExpiry.month) : null, number: payment.ccNumber, verification_value: payment.ccCvv, - year: payment.ccExpiry ? (0, _utils.toNumber)(payment.ccExpiry.year) : null + year: payment.ccExpiry ? (0, _utils.toNumber)(payment.ccExpiry.year) : null, + customer_code: payment.ccCustomerCode }); } }]); diff --git a/lib/payment/v1/payment-mappers/payment-mapper.js.map b/lib/payment/v1/payment-mappers/payment-mapper.js.map index 63f9b181..6191a734 100644 --- a/lib/payment/v1/payment-mappers/payment-mapper.js.map +++ b/lib/payment/v1/payment-mappers/payment-mapper.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/payment/v1/payment-mappers/payment-mapper.js"],"names":["PaymentMapper","paymentMethodIdMapper","create","data","order","orderMeta","payment","paymentMethod","quoteMeta","payload","device_info","request","deviceSessionId","device","deviceFingerprint","fingerprint_id","gateway","mapToId","notify_url","callbackUrl","return_url","returnUrl","nonce","credit_card_token","token","credit_card","mapToCreditCard","account_name","ccName","month","ccExpiry","number","ccNumber","verification_value","ccCvv","year"],"mappings":";;;;;;;;AAAA;;;;AACA;;;;AACA;;;;;;IAEqBA,a;;;;AACjB;;;;iCAIgB;AACZ,gBAAMC,wBAAwB,gCAAsBC,MAAtB,EAA9B;;AAEA,mBAAO,IAAIF,aAAJ,CAAkBC,qBAAlB,CAAP;AACH;;AAED;;;;;;;AAIA,2BAAYA,qBAAZ,EAAmC;AAAA;;AAC/B;;;;AAIA,aAAKA,qBAAL,GAA6BA,qBAA7B;AACH;;AAED;;;;;;;;qCAIaE,I,EAAM;AAAA,8BAOXA,IAPW,CAEXC,KAFW;AAAA,gBAEXA,KAFW,+BAEH,EAFG;AAAA,kCAOXD,IAPW,CAGXE,SAHW;AAAA,gBAGXA,SAHW,mCAGC,EAHD;AAAA,gCAOXF,IAPW,CAIXG,OAJW;AAAA,gBAIXA,OAJW,iCAID,EAJC;AAAA,sCAOXH,IAPW,CAKXI,aALW;AAAA,gBAKXA,aALW,uCAKK,EALL;AAAA,kCAOXJ,IAPW,CAMXK,SANW;AAAA,gBAMXA,SANW,mCAMC,EAND;;;AASf,gBAAMC,UAAU;AACZC,6BAAaF,UAAUG,OAAV,GAAoBH,UAAUG,OAAV,CAAkBC,eAAtC,GAAwD,IADzD;AAEZC,wBAAQR,UAAUS,iBAAV,GAA8B,EAAEC,gBAAgBV,UAAUS,iBAA5B,EAA9B,GAAgF,IAF5E;AAGZE,yBAAS,KAAKf,qBAAL,CAA2BgB,OAA3B,CAAmCV,aAAnC,CAHG;AAIZW,4BAAYd,MAAMe,WAJN;AAKZC,4BAAYb,cAAcc,SAAd,KAA4BjB,MAAME,OAAN,GAAgBF,MAAME,OAAN,CAAce,SAA9B,GAA0C,IAAtE;AALA,aAAhB;;AAQA,gBAAMC,QAAQhB,QAAQgB,KAAR,IAAiBf,cAAce,KAA7C;;AAEA,gBAAIA,KAAJ,EAAW;AACP,4CAAab,OAAb,EAAsB;AAClBc,uCAAmB;AACfC,+BAAOF;AADQ;AADD,iBAAtB;AAKH,aAND,MAMO;AACH,4CAAab,OAAb,EAAsB;AAClBgB,iCAAa,KAAKC,eAAL,CAAqBvB,IAArB;AADK,iBAAtB;AAGH;;AAED,mBAAO,oBAAQM,OAAR,CAAP;AACH;;AAED;;;;;;;;wCAKgBN,I,EAAM;AAAA,iCACOA,IADP,CACVG,OADU;AAAA,gBACVA,OADU,kCACA,EADA;;;AAGlB,mBAAO,oBAAQ;AACXqB,8BAAcrB,QAAQsB,MADX;AAEXC,uBAAOvB,QAAQwB,QAAR,GAAmB,qBAASxB,QAAQwB,QAAR,CAAiBD,KAA1B,CAAnB,GAAsD,IAFlD;AAGXE,wBAAQzB,QAAQ0B,QAHL;AAIXC,oCAAoB3B,QAAQ4B,KAJjB;AAKXC,sBAAM7B,QAAQwB,QAAR,GAAmB,qBAASxB,QAAQwB,QAAR,CAAiBK,IAA1B,CAAnB,GAAqD;AALhD,aAAR,CAAP;AAOH;;;;;;kBA5EgBnC,a","file":"payment-mapper.js","sourcesContent":["import objectAssign from 'object-assign';\nimport PaymentMethodIdMapper from '../../payment-method-mappers/payment-method-id-mapper';\nimport { omitNil, toNumber } from '../../../common/utils';\n\nexport default class PaymentMapper {\n /**\n * @param {PaymentMethodIdMapper} paymentMethodIdMapper\n * @returns {PaymentMapper}\n */\n static create() {\n const paymentMethodIdMapper = PaymentMethodIdMapper.create();\n\n return new PaymentMapper(paymentMethodIdMapper);\n }\n\n /**\n * @param {PaymentMethodIdMapper} paymentMethodIdMapper\n * @returns {void}\n */\n constructor(paymentMethodIdMapper) {\n /**\n * @private\n * @type {PaymentMethodIdMapper}\n */\n this.paymentMethodIdMapper = paymentMethodIdMapper;\n }\n\n /**\n * @param {PaymentRequestData} data\n * @returns {Object}\n */\n mapToPayment(data) {\n const {\n order = {},\n orderMeta = {},\n payment = {},\n paymentMethod = {},\n quoteMeta = {},\n } = data;\n\n const payload = {\n device_info: quoteMeta.request ? quoteMeta.request.deviceSessionId : null,\n device: orderMeta.deviceFingerprint ? { fingerprint_id: orderMeta.deviceFingerprint } : null,\n gateway: this.paymentMethodIdMapper.mapToId(paymentMethod),\n notify_url: order.callbackUrl,\n return_url: paymentMethod.returnUrl || (order.payment ? order.payment.returnUrl : null),\n };\n\n const nonce = payment.nonce || paymentMethod.nonce;\n\n if (nonce) {\n objectAssign(payload, {\n credit_card_token: {\n token: nonce,\n },\n });\n } else {\n objectAssign(payload, {\n credit_card: this.mapToCreditCard(data),\n });\n }\n\n return omitNil(payload);\n }\n\n /**\n * @private\n * @param {PaymentRequestData} data\n * @returns {Object}\n */\n mapToCreditCard(data) {\n const { payment = {} } = data;\n\n return omitNil({\n account_name: payment.ccName,\n month: payment.ccExpiry ? toNumber(payment.ccExpiry.month) : null,\n number: payment.ccNumber,\n verification_value: payment.ccCvv,\n year: payment.ccExpiry ? toNumber(payment.ccExpiry.year) : null,\n });\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/payment/v1/payment-mappers/payment-mapper.js"],"names":["PaymentMapper","paymentMethodIdMapper","create","data","order","orderMeta","payment","paymentMethod","quoteMeta","payload","device_info","request","deviceSessionId","device","deviceFingerprint","fingerprint_id","gateway","mapToId","notify_url","callbackUrl","return_url","returnUrl","nonce","credit_card_token","token","credit_card","mapToCreditCard","account_name","ccName","month","ccExpiry","number","ccNumber","verification_value","ccCvv","year","customer_code","ccCustomerCode"],"mappings":";;;;;;;;AAAA;;;;AACA;;;;AACA;;;;;;IAEqBA,a;;;;AACjB;;;;iCAIgB;AACZ,gBAAMC,wBAAwB,gCAAsBC,MAAtB,EAA9B;;AAEA,mBAAO,IAAIF,aAAJ,CAAkBC,qBAAlB,CAAP;AACH;;AAED;;;;;;;AAIA,2BAAYA,qBAAZ,EAAmC;AAAA;;AAC/B;;;;AAIA,aAAKA,qBAAL,GAA6BA,qBAA7B;AACH;;AAED;;;;;;;;qCAIaE,I,EAAM;AAAA,8BAOXA,IAPW,CAEXC,KAFW;AAAA,gBAEXA,KAFW,+BAEH,EAFG;AAAA,kCAOXD,IAPW,CAGXE,SAHW;AAAA,gBAGXA,SAHW,mCAGC,EAHD;AAAA,gCAOXF,IAPW,CAIXG,OAJW;AAAA,gBAIXA,OAJW,iCAID,EAJC;AAAA,sCAOXH,IAPW,CAKXI,aALW;AAAA,gBAKXA,aALW,uCAKK,EALL;AAAA,kCAOXJ,IAPW,CAMXK,SANW;AAAA,gBAMXA,SANW,mCAMC,EAND;;;AASf,gBAAMC,UAAU;AACZC,6BAAaF,UAAUG,OAAV,GAAoBH,UAAUG,OAAV,CAAkBC,eAAtC,GAAwD,IADzD;AAEZC,wBAAQR,UAAUS,iBAAV,GAA8B,EAAEC,gBAAgBV,UAAUS,iBAA5B,EAA9B,GAAgF,IAF5E;AAGZE,yBAAS,KAAKf,qBAAL,CAA2BgB,OAA3B,CAAmCV,aAAnC,CAHG;AAIZW,4BAAYd,MAAMe,WAJN;AAKZC,4BAAYb,cAAcc,SAAd,KAA4BjB,MAAME,OAAN,GAAgBF,MAAME,OAAN,CAAce,SAA9B,GAA0C,IAAtE;AALA,aAAhB;;AAQA,gBAAMC,QAAQhB,QAAQgB,KAAR,IAAiBf,cAAce,KAA7C;;AAEA,gBAAIA,KAAJ,EAAW;AACP,4CAAab,OAAb,EAAsB;AAClBc,uCAAmB;AACfC,+BAAOF;AADQ;AADD,iBAAtB;AAKH,aAND,MAMO;AACH,4CAAab,OAAb,EAAsB;AAClBgB,iCAAa,KAAKC,eAAL,CAAqBvB,IAArB;AADK,iBAAtB;AAGH;;AAED,mBAAO,oBAAQM,OAAR,CAAP;AACH;;AAED;;;;;;;;wCAKgBN,I,EAAM;AAAA,iCACOA,IADP,CACVG,OADU;AAAA,gBACVA,OADU,kCACA,EADA;;;AAGlB,mBAAO,oBAAQ;AACXqB,8BAAcrB,QAAQsB,MADX;AAEXC,uBAAOvB,QAAQwB,QAAR,GAAmB,qBAASxB,QAAQwB,QAAR,CAAiBD,KAA1B,CAAnB,GAAsD,IAFlD;AAGXE,wBAAQzB,QAAQ0B,QAHL;AAIXC,oCAAoB3B,QAAQ4B,KAJjB;AAKXC,sBAAM7B,QAAQwB,QAAR,GAAmB,qBAASxB,QAAQwB,QAAR,CAAiBK,IAA1B,CAAnB,GAAqD,IALhD;AAMXC,+BAAe9B,QAAQ+B;AANZ,aAAR,CAAP;AAQH;;;;;;kBA7EgBrC,a","file":"payment-mapper.js","sourcesContent":["import objectAssign from 'object-assign';\nimport PaymentMethodIdMapper from '../../payment-method-mappers/payment-method-id-mapper';\nimport { omitNil, toNumber } from '../../../common/utils';\n\nexport default class PaymentMapper {\n /**\n * @param {PaymentMethodIdMapper} paymentMethodIdMapper\n * @returns {PaymentMapper}\n */\n static create() {\n const paymentMethodIdMapper = PaymentMethodIdMapper.create();\n\n return new PaymentMapper(paymentMethodIdMapper);\n }\n\n /**\n * @param {PaymentMethodIdMapper} paymentMethodIdMapper\n * @returns {void}\n */\n constructor(paymentMethodIdMapper) {\n /**\n * @private\n * @type {PaymentMethodIdMapper}\n */\n this.paymentMethodIdMapper = paymentMethodIdMapper;\n }\n\n /**\n * @param {PaymentRequestData} data\n * @returns {Object}\n */\n mapToPayment(data) {\n const {\n order = {},\n orderMeta = {},\n payment = {},\n paymentMethod = {},\n quoteMeta = {},\n } = data;\n\n const payload = {\n device_info: quoteMeta.request ? quoteMeta.request.deviceSessionId : null,\n device: orderMeta.deviceFingerprint ? { fingerprint_id: orderMeta.deviceFingerprint } : null,\n gateway: this.paymentMethodIdMapper.mapToId(paymentMethod),\n notify_url: order.callbackUrl,\n return_url: paymentMethod.returnUrl || (order.payment ? order.payment.returnUrl : null),\n };\n\n const nonce = payment.nonce || paymentMethod.nonce;\n\n if (nonce) {\n objectAssign(payload, {\n credit_card_token: {\n token: nonce,\n },\n });\n } else {\n objectAssign(payload, {\n credit_card: this.mapToCreditCard(data),\n });\n }\n\n return omitNil(payload);\n }\n\n /**\n * @private\n * @param {PaymentRequestData} data\n * @returns {Object}\n */\n mapToCreditCard(data) {\n const { payment = {} } = data;\n\n return omitNil({\n account_name: payment.ccName,\n month: payment.ccExpiry ? toNumber(payment.ccExpiry.month) : null,\n number: payment.ccNumber,\n verification_value: payment.ccCvv,\n year: payment.ccExpiry ? toNumber(payment.ccExpiry.year) : null,\n customer_code: payment.ccCustomerCode,\n });\n }\n}\n"]} \ No newline at end of file diff --git a/package.json b/package.json index ddbe42bd..87fc5051 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bigpay-client", - "version": "2.3.0", + "version": "2.4.0", "description": "JavaScript client for Bigpay", "main": "lib/index.js", "scripts": {