@juspay-tech/react-hyper-js 1.0.1 → 1.1.0

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 (44) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +3 -0
  3. package/build.js +18 -9
  4. package/index.js +1 -1
  5. package/index.mjs +1 -0
  6. package/package.json +16 -22
  7. package/rescript.json +23 -0
  8. package/src/Context.bs.js +63 -24
  9. package/src/Context.res +116 -61
  10. package/src/Index.bs.js +52 -272
  11. package/src/Index.res +20 -173
  12. package/src/Index.resi +153 -119
  13. package/src/OrcaJs.bs.js +6 -6
  14. package/src/OrcaJs.res +14 -15
  15. package/src/Window.res +3 -3
  16. package/src/components/ApplePayElement.bs.js +24 -0
  17. package/src/components/ApplePayElement.res +6 -0
  18. package/src/components/CardCVC.bs.js +24 -0
  19. package/src/components/CardCVC.res +6 -0
  20. package/src/components/CardElement.bs.js +24 -0
  21. package/src/components/CardElement.res +4 -0
  22. package/src/components/CardExpiry.bs.js +24 -0
  23. package/src/components/CardExpiry.res +6 -0
  24. package/src/components/CardNumber.bs.js +24 -0
  25. package/src/components/CardNumber.res +6 -0
  26. package/src/components/Elements.bs.js +71 -0
  27. package/src/components/Elements.res +39 -0
  28. package/src/components/ExpressCheckoutElement.bs.js +24 -0
  29. package/src/components/ExpressCheckoutElement.res +6 -0
  30. package/src/components/GooglePayElement.bs.js +24 -0
  31. package/src/components/GooglePayElement.res +6 -0
  32. package/src/components/HyperElements.bs.js +71 -0
  33. package/src/components/HyperElements.res +39 -0
  34. package/src/components/HyperManagementElements.bs.js +65 -0
  35. package/src/components/HyperManagementElements.res +41 -0
  36. package/src/components/PayPalElement.bs.js +24 -0
  37. package/src/components/PayPalElement.res +6 -0
  38. package/src/components/PaymentElement.bs.js +24 -0
  39. package/src/components/PaymentElement.res +6 -0
  40. package/src/components/PaymentElementsWrapper.bs.js +50 -0
  41. package/src/components/PaymentElementsWrapper.res +34 -0
  42. package/src/components/PaymentMethodsManagementElement.bs.js +58 -0
  43. package/src/components/PaymentMethodsManagementElement.res +45 -0
  44. package/bsconfig.json +0 -19
package/CHANGELOG.md ADDED
@@ -0,0 +1,9 @@
1
+ ## v1.1.0 (2024-07-12)
2
+
3
+ ### Feature
4
+
5
+ - Added Payment Management & Express Checkout Widgets
6
+
7
+ ### Refactoring
8
+
9
+ - Upgraded the Rescript Version & better coding practices.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # @juspay-tech/react-hyper-js
2
+
3
+ The official documentation can be found in [hyperswitch docs](https://docs.hyperswitch.io/hyperswitch-cloud/integration-guide/web/node-and-react)
package/build.js CHANGED
@@ -1,12 +1,11 @@
1
1
  const esbuild = require("esbuild");
2
2
  const inlineImage = require("esbuild-plugin-inline-image");
3
3
  const postcss = require("esbuild-postcss");
4
- //const { copy } = require("esbuild-plugin-copy");
5
4
 
6
5
  esbuild
7
6
  .build({
8
7
  entryPoints: ["./src/Index.bs.js"],
9
- outfile: "index.js",
8
+ outfile: "index.mjs",
10
9
  minify: true,
11
10
  bundle: true,
12
11
  loader: {
@@ -17,13 +16,23 @@ esbuild
17
16
  plugins: [
18
17
  inlineImage(),
19
18
  postcss(),
20
- // copy({
21
- // assets: {
22
- // from: ["./public/**/*"],
23
- // to: ["../"],
24
- // keepStructure: true,
25
- // },
26
- // }),
27
19
  ],
28
20
  })
29
21
  .catch(() => process.exit(1));
22
+
23
+ esbuild
24
+ .build({
25
+ entryPoints: ["./src/Index.bs.js"],
26
+ outfile: "index.js",
27
+ minify: true,
28
+ bundle: true,
29
+ loader: {
30
+ ".js": "jsx",
31
+ },
32
+ format: "cjs",
33
+ external: ["react", "react-dom"],
34
+ plugins: [
35
+ inlineImage(),
36
+ postcss(),
37
+ ],
38
+ }).catch(() => process.exit(1));
package/index.js CHANGED
@@ -1 +1 @@
1
- function $(e,n,r){for(var i=new Array(r),t=0,u=n;t<r;)i[t]=e[u],t=t+1|0,u=u+1|0;return i}function x(e,n){for(;;){var r=n,i=e,t=i.length,u=t===0?1:t,c=r.length,a=u-c|0;if(a===0)return i.apply(null,r);if(a>=0)return function(s,l){return function(f){return x(s,l.concat([f]))}}(i,r);n=$(r,u,-a|0),e=i.apply(null,$(r,0,u))}}function d(e,n){var r=e.length;if(r===1)return e(n);switch(r){case 1:return e(n);case 2:return function(i){return e(n,i)};case 3:return function(i,t){return e(n,i,t)};case 4:return function(i,t,u){return e(n,i,t,u)};case 5:return function(i,t,u,c){return e(n,i,t,u,c)};case 6:return function(i,t,u,c,a){return e(n,i,t,u,c,a)};case 7:return function(i,t,u,c,a,s){return e(n,i,t,u,c,a,s)};default:return x(e,[n])}}function V(e){var n=e.length;return n===1?e:function(r){return d(e,r)}}function p(e,n,r){var i=e.length;if(i===2)return e(n,r);switch(i){case 1:return x(e(n),[r]);case 2:return e(n,r);case 3:return function(t){return e(n,r,t)};case 4:return function(t,u){return e(n,r,t,u)};case 5:return function(t,u,c){return e(n,r,t,u,c)};case 6:return function(t,u,c,a){return e(n,r,t,u,c,a)};case 7:return function(t,u,c,a,s){return e(n,r,t,u,c,a,s)};default:return x(e,[n,r])}}import*as o from"react";import*as L from"react";function ae(e,n){}function le(e){}function fe(e){}function se(e){}function me(e){}function de(e){}function ve(e){}function pe(e){}function _e(e){}var Y={on:ae,collapse:le,blur:fe,update:se,destroy:me,unmount:de,mount:ve,focus:pe,clear:_e};function E(e){return e===void 0?{BS_PRIVATE_NESTED_SOME_NONE:0}:e!==null&&e.BS_PRIVATE_NESTED_SOME_NONE!==void 0?{BS_PRIVATE_NESTED_SOME_NONE:e.BS_PRIVATE_NESTED_SOME_NONE+1|0}:e}function H(e){if(!(e!==null&&e.BS_PRIVATE_NESTED_SOME_NONE!==void 0))return e;var n=e.BS_PRIVATE_NESTED_SOME_NONE;if(n!==0)return{BS_PRIVATE_NESTED_SOME_NONE:n-1|0}}function N(e,n){if(n in e)return E(e[n])}function Z(e){if(typeof e=="string")return e}function j(e){if(typeof e=="object"&&!Array.isArray(e)&&e!==null)return E(e)}function ee(e){if(Array.isArray(e))return e}function he(e,n){if(e!==void 0)return n(H(e))}function P(e,n){return he(e,V(n))}function h(e,n){return e!==void 0?H(e):n}function we(e){return Promise.resolve({})}function Se(e,n,r){return Promise.resolve({})}function Re(e){return Promise.resolve({})}function Oe(e){return e}var k={clientSecret:"",confirmPayment:we,confirmCardPayment:Se,retrievePaymentIntent:Re,paymentRequest:Oe},g=L.createContext(k);function xe(e,n,r){return{value:e,children:n}}var Ve=g.Provider,w={makeProps:xe,make:Ve};function z(e,n,r){return h(P(N(e,n),Z),r)}function K(e){var n=h(j(e),{});return{fonts:h(P(N(n,"fonts"),ee),[]),locale:z(n,"locale",""),clientSecret:z(n,"clientSecret",""),appearance:h(P(N(n,"appearance"),j),{}),loader:z(n,"loader","auto")}}function Ne(e){}function Pe(e){}function ke(e){return new Promise(function(n,r){setTimeout(function(i){n({})},1e3)})}function Ae(e,n){return Y}var Be={fonts:[],locale:"",clientSecret:"",appearance:{},loader:""},A={options:Be,update:Ne,getElement:Pe,fetchUpdates:ke,create:Ae},S=L.createContext(A);function Te(e,n,r){return{value:e,children:n}}var Fe=S.Provider,R={makeProps:Te,make:Fe};function Q(e,n){return n.then(V(e))}function De(e){var n=e.children,r=e.stripe,i=e.options,t=K(i),u=o.useState(function(){return k}),c=u[1],a=o.useState(function(){return A}),s=a[1];return o.useEffect(function(){Q(function(l){var f=d(l.elements,i),v=f.update,_=f.getElement,m=f.fetchUpdates,y=f.create,B={options:t,update:v,getElement:_,fetchUpdates:m,create:y},oe=t.clientSecret,T=l.confirmPayment,F=l.confirmCardPayment,b=l.retrievePaymentIntent,I=l.paymentRequest,D=t.clientSecret,U=T,J=F,M=b,W=I,C={clientSecret:D,confirmPayment:U,confirmCardPayment:J,retrievePaymentIntent:M,paymentRequest:W};return d(c,function(q){return C}),d(s,function(q){return B}),Promise.resolve(C)},r)},[]),o.createElement(w.make,w.makeProps(u[0],o.createElement(R.make,R.makeProps(a[0],n,void 0)),void 0))}function Ue(e){var n=e.children,r=e.hyper,i=e.options,t=K(i),u=o.useState(function(){return k}),c=u[1],a=o.useState(function(){return A}),s=a[1];return o.useEffect(function(){Q(function(l){var f=d(l.elements,i),v=f.update,_=f.getElement,m=f.fetchUpdates,y=f.create,B={options:t,update:v,getElement:_,fetchUpdates:m,create:y},oe=t.clientSecret,T=l.confirmPayment,F=l.confirmCardPayment,b=l.retrievePaymentIntent,I=l.paymentRequest,D=t.clientSecret,U=T,J=F,M=b,W=I,C={clientSecret:D,confirmPayment:U,confirmCardPayment:J,retrievePaymentIntent:M,paymentRequest:W};return d(c,function(q){return C}),d(s,function(q){return B}),Promise.resolve(C)},r)},[]),o.createElement(w.make,w.makeProps(u[0],o.createElement(R.make,R.makeProps(a[0],n,void 0)),void 0))}function Me(e){return o.useContext(g)}function We(e){return console.warn("useStripe() is deprecated. Use useHyper() instead"),o.useContext(g)}function qe(e){return o.useContext(S)}function $e(e){return console.warn("useElements() is deprecated. Use useWidgets() instead"),o.useContext(S)}function O(e){var n=e.id,r=e.options,i=e.onChange,t=e.onReady,u=e.componentType,c=e.onFocus,a=e.onBlur,s=e.onClick,l=n!==void 0?n:"payment-Element",f=o.useContext(g),v=o.useContext(S),_=o.useRef(null),m=p(v.create,u,r);return o.useEffect(function(){var y=p(v.create,u,r);d(y.mount,"#orca-elements-payment-element-"+l)},[_,v]),o.useEffect(function(){p(m.on,"ready",t),p(m.on,"focus",c),p(m.on,"blur",a),p(m.on,"clickTriggered",s),p(m.on,"change",i)},[v,f]),o.createElement("div",{ref:_,id:"orca-elements-payment-element-"+l})}function ne(e){var n=e.id,r=e.options,i=e.onChange,t=e.onReady,u=e.onFocus,c=e.onBlur,a=e.onClick;return o.createElement(O,{id:n,options:r,onChange:i,onReady:t,componentType:"payment",onFocus:u,onBlur:c,onClick:a})}function te(e){var n=e.id,r=e.options,i=e.onChange,t=e.onReady,u=e.onFocus,c=e.onBlur,a=e.onClick;return o.createElement(O,{id:n,options:r,onChange:i,onReady:t,componentType:"card",onFocus:u,onBlur:c,onClick:a})}function re(e){var n=e.id,r=e.options,i=e.onChange,t=e.onReady,u=e.onFocus,c=e.onBlur,a=e.onClick;return o.createElement(O,{id:n,options:r,onChange:i,onReady:t,componentType:"cardNumber",onFocus:u,onBlur:c,onClick:a})}function ue(e){var n=e.id,r=e.options,i=e.onChange,t=e.onReady,u=e.onFocus,c=e.onBlur,a=e.onClick;return o.createElement(O,{id:n,options:r,onChange:i,onReady:t,componentType:"cardCvc",onFocus:u,onBlur:c,onClick:a})}function ie(e){var n=e.id,r=e.options,i=e.onChange,t=e.onReady,u=e.onFocus,c=e.onBlur,a=e.onClick;return o.createElement(O,{id:n,options:r,onChange:i,onReady:t,componentType:"cardExpiry",onFocus:u,onBlur:c,onClick:a})}var Ge=De,He=Ue,Xe=ne,je=ne,ze=te,Le=te,Ke=re,Qe=re,Ye=ie,Ze=ie,en=ue,nn=ue;export{en as CardCVCElement,nn as CardCVCWidget,ze as CardElement,Ye as CardExpiryElement,Ze as CardExpiryWidget,Ke as CardNumberElement,Qe as CardNumberWidget,Le as CardWidget,Ge as Elements,He as HyperElements,Xe as PaymentElement,je as UnifiedCheckout,$e as useElements,Me as useHyper,We as useStripe,qe as useWidgets};
1
+ var We=Object.create;var U=Object.defineProperty;var Ae=Object.getOwnPropertyDescriptor;var De=Object.getOwnPropertyNames;var Ue=Object.getPrototypeOf,$e=Object.prototype.hasOwnProperty;var je=(e,t)=>{for(var r in t)U(e,r,{get:t[r],enumerable:!0})},me=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of De(t))!$e.call(e,n)&&n!==r&&U(e,n,{get:()=>t[n],enumerable:!(o=Ae(t,n))||o.enumerable});return e};var a=(e,t,r)=>(r=e!=null?We(Ue(e)):{},me(t||!e||!e.__esModule?U(r,"default",{value:e,enumerable:!0}):r,e)),Ie=e=>me(U({},"__esModule",{value:!0}),e);var yn={};je(yn,{ApplePayElement:()=>fn,CardCVCElement:()=>an,CardCVCWidget:()=>mn,CardElement:()=>nn,CardExpiryElement:()=>ln,CardExpiryWidget:()=>cn,CardNumberElement:()=>on,CardNumberWidget:()=>un,CardWidget:()=>rn,Elements:()=>Yt,ExpressCheckoutElement:()=>pn,GooglePayElement:()=>sn,HyperElements:()=>Zt,HyperManagementElements:()=>Cn,PayPalElement:()=>dn,PaymentElement:()=>en,UnifiedCheckout:()=>tn,useElements:()=>Qt,useHyper:()=>Xt,useStripe:()=>Lt,useWidgets:()=>zt});module.exports=Ie(yn);var D=a(require("react"));var xe=a(require("react/jsx-runtime"));var E=a(require("react"));var J=a(require("react"));function qe(e,t){}function He(){}function Ge(){}function Ke(e){}function Xe(){}function Le(){}function ze(e){}function Qe(){}function Ye(){}var le={on:qe,collapse:He,blur:Ge,update:Ke,destroy:Xe,unmount:Le,mount:ze,focus:Qe,clear:Ye};function et(e){if(typeof e=="boolean")return e}function tt(e){if(e===null)return null}function nt(e){if(typeof e=="string")return e}function rt(e){if(typeof e=="number")return e}function ot(e){if(typeof e=="object"&&!Array.isArray(e)&&e!==null)return e}function ut(e){if(Array.isArray(e))return e}var v={bool:et,$$null:tt,string:nt,$$float:rt,object:ot,array:ut};function L(e,t,r){for(var o=new Array(r),n=0,u=t;n<r;)o[n]=e[u],n=n+1|0,u=u+1|0;return o}function ce(e,t){for(;;){var r=t,o=e,n=o.length,u=n===0?1:n,m=r.length,s=u-m|0;if(s===0)return o.apply(null,r);if(s>=0)return function(f,i){return function(l){return ce(f,i.concat([l]))}}(o,r);t=L(r,u,-s|0),e=o.apply(null,L(r,0,u))}}function mt(e,t){var r=e.length;if(r===1)return e(t);switch(r){case 1:return e(t);case 2:return function(o){return e(t,o)};case 3:return function(o,n){return e(t,o,n)};case 4:return function(o,n,u){return e(t,o,n,u)};case 5:return function(o,n,u,m){return e(t,o,n,u,m)};case 6:return function(o,n,u,m,s){return e(t,o,n,u,m,s)};case 7:return function(o,n,u,m,s,f){return e(t,o,n,u,m,s,f)};default:return ce(e,[t])}}function $(e){var t=e.length;return t===1?e:function(r){return mt(e,r)}}function j(e){return e===void 0?{BS_PRIVATE_NESTED_SOME_NONE:0}:e!==null&&e.BS_PRIVATE_NESTED_SOME_NONE!==void 0?{BS_PRIVATE_NESTED_SOME_NONE:e.BS_PRIVATE_NESTED_SOME_NONE+1|0}:e}function I(e){if(!(e!==null&&e.BS_PRIVATE_NESTED_SOME_NONE!==void 0))return e;var t=e.BS_PRIVATE_NESTED_SOME_NONE;if(t!==0)return{BS_PRIVATE_NESTED_SOME_NONE:t-1|0}}function lt(e,t){if(e!==void 0)return t(I(e))}function P(e,t){return lt(e,$(t))}function _(e,t){return e!==void 0?I(e):t}function ft(e){return Promise.resolve({})}function dt(e,t,r){return Promise.resolve({})}function pt(e){return Promise.resolve({})}function fe(e){return e}var V={clientSecret:"",confirmPayment:ft,confirmCardPayment:dt,retrievePaymentIntent:pt,paymentRequest:fe},R=J.createContext(V),Ct=R.Provider,q={make:Ct},Q={ephemeralKey:"",paymentRequest:fe},yt=J.createContext(Q),vt=yt.Provider,de={make:vt};function g(e,t,r){return _(P(e[t],v.string),r)}function H(e){var t=_(v.object(e),{});return{fonts:_(P(t.fonts,v.array),[]),locale:g(t,"locale",""),clientSecret:g(t,"clientSecret",""),appearance:_(P(t.appearance,v.object),{}),loader:g(t,"loader","auto")}}function pe(e){}function Ce(e){}function ye(){return new Promise(function(e,t){setTimeout(function(){e({})},1e3)})}function ve(e,t){return le}var _t={fonts:[],locale:"",clientSecret:"",appearance:{},loader:""},b={options:_t,update:pe,getElement:Ce,fetchUpdates:ye,create:ve},O=J.createContext(b),Et=O.Provider,G={make:Et};function _e(e){var t=_(v.object(e),{});return{fonts:_(P(t.fonts,v.array),[]),locale:g(t,"locale",""),ephemeralKey:g(t,"ephemeralKey",""),appearance:_(P(t.appearance,v.object),{}),loader:g(t,"loader","auto")}}var ht={fonts:[],locale:"",ephemeralKey:"",appearance:{},loader:""},Y={options:ht,update:pe,getElement:Ce,fetchUpdates:ye,create:ve},xt=J.createContext(Y),Pt=xt.Provider,Ee={make:Pt};var he=a(require("react/jsx-runtime"));function gt(e){var t=e.onClick,r=e.onBlur,o=e.onFocus,n=e.componentType,u=e.onReady,m=e.onChange,s=e.options,f=e.id,i=f!==void 0?f:"payment-Element",l=E.useContext(R),p=E.useContext(O),y=E.useRef(null),d=p.create(n,s);return E.useEffect(function(){var h=p.create(n,s);h.mount("#orca-elements-payment-element-"+i)},[y,p]),E.useEffect(function(){d.on("ready",u),d.on("focus",o),d.on("blur",r),d.on("clickTriggered",t),d.on("change",m)},[p,l]),he.jsx("div",{ref:j(y),id:"orca-elements-payment-element-"+i})}var c=gt;function Rt(e){return xe.jsx(c,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"cardCvc",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var Z=Rt;var T=a(require("react"));function k(e,t){return t.then($(e))}var te=a(require("react/jsx-runtime"));function kt(e){var t=e.options,r=e.stripe,o=H(t),n=T.useState(function(){return V}),u=n[1],m=T.useState(function(){return b}),s=m[1];return T.useEffect(function(){(function(f){return k(function(i){var l=i.elements(t),p=l.update,y=l.getElement,d=l.fetchUpdates,h=l.create,S={options:o,update:p,getElement:y,fetchUpdates:d,create:h},w=o.clientSecret,M=i.confirmPayment,x=i.confirmCardPayment,N=i.retrievePaymentIntent,K=i.paymentRequest,F={clientSecret:w,confirmPayment:M,confirmCardPayment:x,retrievePaymentIntent:N,paymentRequest:K};return u(function(X){return F}),s(function(X){return S}),Promise.resolve(F)},f)})(r)},[]),te.jsx(q.make,{value:n[0],children:te.jsx(G.make,{value:m[0],children:e.children})})}var Pe=kt;var ge=a(require("react/jsx-runtime"));function wt(e){return ge.jsx(c,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"cardExpiry",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var ne=wt;var Re=a(require("react/jsx-runtime"));function Nt(e){return Re.jsx(c,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"cardNumber",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var re=Nt;var Oe=a(require("react/jsx-runtime"));function Jt(e){return Oe.jsx(c,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"card",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var oe=Jt;var W=a(require("react"));var ue=a(require("react/jsx-runtime"));function bt(e){var t=e.options,r=e.hyper,o=H(t),n=W.useState(function(){return V}),u=n[1],m=W.useState(function(){return b}),s=m[1];return W.useEffect(function(){(function(f){return k(function(i){var l=i.elements(t),p=l.update,y=l.getElement,d=l.fetchUpdates,h=l.create,S={options:o,update:p,getElement:y,fetchUpdates:d,create:h},w=o.clientSecret,M=i.confirmPayment,x=i.confirmCardPayment,N=i.retrievePaymentIntent,K=i.paymentRequest,F={clientSecret:w,confirmPayment:M,confirmCardPayment:x,retrievePaymentIntent:N,paymentRequest:K};return u(function(X){return F}),s(function(X){return S}),Promise.resolve(F)},f)})(r)},[]),ue.jsx(q.make,{value:n[0],children:ue.jsx(G.make,{value:m[0],children:e.children})})}var ke=bt;var Se=a(require("react/jsx-runtime"));function Tt(e){return Se.jsx(c,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"payPal",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var we=Tt;var Me=a(require("react/jsx-runtime"));function At(e){return Me.jsx(c,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"payment",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var ie=At;var Ne=a(require("react/jsx-runtime"));function Ut(e){return Ne.jsx(c,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"applePay",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var Fe=Ut;var Je=a(require("react/jsx-runtime"));function jt(e){return Je.jsx(c,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"googlePay",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var Ve=jt;var be=a(require("react/jsx-runtime"));function qt(e){return be.jsx(c,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"expressCheckout",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var Be=qt;var A=a(require("react"));var ae=a(require("react/jsx-runtime"));function Gt(e){var t=e.options,r=e.hyper,o=_e(t),n=A.useState(function(){return Q}),u=n[1],m=A.useState(function(){return Y}),s=m[1];return A.useEffect(function(){(function(f){return k(function(i){var l=i.paymentMethodsManagementElements(t),p=l.update,y=l.getElement,d=l.fetchUpdates,h=l.create,S={options:o,update:p,getElement:y,fetchUpdates:d,create:h},w=o.ephemeralKey,M=i.paymentRequest,x={ephemeralKey:w,paymentRequest:M};return u(function(N){return x}),s(function(N){return S}),Promise.resolve(x)},f)})(r)},[]),ae.jsx(de.make,{value:n[0],children:ae.jsx(Ee.make,{value:m[0],children:e.children})})}var Te=Gt;function Xt(){return D.useContext(R)}function Lt(){return console.warn("useStripe() is deprecated. Use useHyper() instead"),D.useContext(R)}function zt(){return D.useContext(O)}function Qt(){return console.warn("useElements() is deprecated. Use useWidgets() instead"),D.useContext(O)}var Yt=Pe,Zt=ke,en=ie,tn=ie,nn=oe,rn=oe,on=re,un=re,an=Z,mn=Z,ln=ne,cn=ne,sn=Ve,fn=Fe,dn=we,pn=Be,Cn=Te;
package/index.mjs ADDED
@@ -0,0 +1 @@
1
+ import*as A from"react";import*as _e from"react/jsx-runtime";import*as _ from"react";import*as F from"react";function be(e,t){}function Be(){}function Te(){}function We(e){}function Ae(){}function De(){}function Ue(e){}function $e(){}function je(){}var ie={on:be,collapse:Be,blur:Te,update:We,destroy:Ae,unmount:De,mount:Ue,focus:$e,clear:je};function qe(e){if(typeof e=="boolean")return e}function He(e){if(e===null)return null}function Ge(e){if(typeof e=="string")return e}function Ke(e){if(typeof e=="number")return e}function Xe(e){if(typeof e=="object"&&!Array.isArray(e)&&e!==null)return e}function Le(e){if(Array.isArray(e))return e}var y={bool:qe,$$null:He,string:Ge,$$float:Ke,object:Xe,array:Le};function K(e,t,o){for(var n=new Array(o),r=0,u=t;r<o;)n[r]=e[u],r=r+1|0,u=u+1|0;return n}function ae(e,t){for(;;){var o=t,n=e,r=n.length,u=r===0?1:r,a=o.length,c=u-a|0;if(c===0)return n.apply(null,o);if(c>=0)return function(s,i){return function(m){return ae(s,i.concat([m]))}}(n,o);t=K(o,u,-c|0),e=n.apply(null,K(o,0,u))}}function Ye(e,t){var o=e.length;if(o===1)return e(t);switch(o){case 1:return e(t);case 2:return function(n){return e(t,n)};case 3:return function(n,r){return e(t,n,r)};case 4:return function(n,r,u){return e(t,n,r,u)};case 5:return function(n,r,u,a){return e(t,n,r,u,a)};case 6:return function(n,r,u,a,c){return e(t,n,r,u,a,c)};case 7:return function(n,r,u,a,c,s){return e(t,n,r,u,a,c,s)};default:return ae(e,[t])}}function D(e){var t=e.length;return t===1?e:function(o){return Ye(e,o)}}function U(e){return e===void 0?{BS_PRIVATE_NESTED_SOME_NONE:0}:e!==null&&e.BS_PRIVATE_NESTED_SOME_NONE!==void 0?{BS_PRIVATE_NESTED_SOME_NONE:e.BS_PRIVATE_NESTED_SOME_NONE+1|0}:e}function $(e){if(!(e!==null&&e.BS_PRIVATE_NESTED_SOME_NONE!==void 0))return e;var t=e.BS_PRIVATE_NESTED_SOME_NONE;if(t!==0)return{BS_PRIVATE_NESTED_SOME_NONE:t-1|0}}function Ze(e,t){if(e!==void 0)return t($(e))}function x(e,t){return Ze(e,D(t))}function v(e,t){return e!==void 0?$(e):t}function nt(e){return Promise.resolve({})}function rt(e,t,o){return Promise.resolve({})}function ot(e){return Promise.resolve({})}function le(e){return e}var J={clientSecret:"",confirmPayment:nt,confirmCardPayment:rt,retrievePaymentIntent:ot,paymentRequest:le},g=F.createContext(J),ut=g.Provider,j={make:ut},L={ephemeralKey:"",paymentRequest:le},it=F.createContext(L),at=it.Provider,ce={make:at};function P(e,t,o){return v(x(e[t],y.string),o)}function I(e){var t=v(y.object(e),{});return{fonts:v(x(t.fonts,y.array),[]),locale:P(t,"locale",""),clientSecret:P(t,"clientSecret",""),appearance:v(x(t.appearance,y.object),{}),loader:P(t,"loader","auto")}}function se(e){}function fe(e){}function de(){return new Promise(function(e,t){setTimeout(function(){e({})},1e3)})}function pe(e,t){return ie}var mt={fonts:[],locale:"",clientSecret:"",appearance:{},loader:""},V={options:mt,update:se,getElement:fe,fetchUpdates:de,create:pe},R=F.createContext(V),lt=R.Provider,q={make:lt};function Ce(e){var t=v(y.object(e),{});return{fonts:v(x(t.fonts,y.array),[]),locale:P(t,"locale",""),ephemeralKey:P(t,"ephemeralKey",""),appearance:v(x(t.appearance,y.object),{}),loader:P(t,"loader","auto")}}var ct={fonts:[],locale:"",ephemeralKey:"",appearance:{},loader:""},z={options:ct,update:se,getElement:fe,fetchUpdates:de,create:pe},st=F.createContext(z),ft=st.Provider,ye={make:ft};import*as ve from"react/jsx-runtime";function dt(e){var t=e.onClick,o=e.onBlur,n=e.onFocus,r=e.componentType,u=e.onReady,a=e.onChange,c=e.options,s=e.id,i=s!==void 0?s:"payment-Element",m=_.useContext(g),d=_.useContext(R),C=_.useRef(null),f=d.create(r,c);return _.useEffect(function(){var E=d.create(r,c);E.mount("#orca-elements-payment-element-"+i)},[C,d]),_.useEffect(function(){f.on("ready",u),f.on("focus",n),f.on("blur",o),f.on("clickTriggered",t),f.on("change",a)},[d,m]),ve.jsx("div",{ref:U(C),id:"orca-elements-payment-element-"+i})}var l=dt;function pt(e){return _e.jsx(l,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"cardCvc",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var Q=pt;import*as B from"react";function O(e,t){return t.then(D(e))}import*as Z from"react/jsx-runtime";function yt(e){var t=e.options,o=e.stripe,n=I(t),r=B.useState(function(){return J}),u=r[1],a=B.useState(function(){return V}),c=a[1];return B.useEffect(function(){(function(s){return O(function(i){var m=i.elements(t),d=m.update,C=m.getElement,f=m.fetchUpdates,E=m.create,k={options:n,update:d,getElement:C,fetchUpdates:f,create:E},S=n.clientSecret,w=i.confirmPayment,h=i.confirmCardPayment,M=i.retrievePaymentIntent,H=i.paymentRequest,N={clientSecret:S,confirmPayment:w,confirmCardPayment:h,retrievePaymentIntent:M,paymentRequest:H};return u(function(G){return N}),c(function(G){return k}),Promise.resolve(N)},s)})(o)},[]),Z.jsx(j.make,{value:r[0],children:Z.jsx(q.make,{value:a[0],children:e.children})})}var Ee=yt;import*as he from"react/jsx-runtime";function _t(e){return he.jsx(l,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"cardExpiry",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var ee=_t;import*as xe from"react/jsx-runtime";function ht(e){return xe.jsx(l,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"cardNumber",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var te=ht;import*as Pe from"react/jsx-runtime";function Pt(e){return Pe.jsx(l,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"card",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var ne=Pt;import*as T from"react";import*as re from"react/jsx-runtime";function Rt(e){var t=e.options,o=e.hyper,n=I(t),r=T.useState(function(){return J}),u=r[1],a=T.useState(function(){return V}),c=a[1];return T.useEffect(function(){(function(s){return O(function(i){var m=i.elements(t),d=m.update,C=m.getElement,f=m.fetchUpdates,E=m.create,k={options:n,update:d,getElement:C,fetchUpdates:f,create:E},S=n.clientSecret,w=i.confirmPayment,h=i.confirmCardPayment,M=i.retrievePaymentIntent,H=i.paymentRequest,N={clientSecret:S,confirmPayment:w,confirmCardPayment:h,retrievePaymentIntent:M,paymentRequest:H};return u(function(G){return N}),c(function(G){return k}),Promise.resolve(N)},s)})(o)},[]),re.jsx(j.make,{value:r[0],children:re.jsx(q.make,{value:a[0],children:e.children})})}var ge=Rt;import*as Re from"react/jsx-runtime";function kt(e){return Re.jsx(l,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"payPal",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var Oe=kt;import*as ke from"react/jsx-runtime";function wt(e){return ke.jsx(l,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"payment",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var oe=wt;import*as Se from"react/jsx-runtime";function Nt(e){return Se.jsx(l,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"applePay",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var we=Nt;import*as Me from"react/jsx-runtime";function Jt(e){return Me.jsx(l,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"googlePay",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var Ne=Jt;import*as Fe from"react/jsx-runtime";function bt(e){return Fe.jsx(l,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"expressCheckout",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var Je=bt;import*as W from"react";import*as ue from"react/jsx-runtime";function Tt(e){var t=e.options,o=e.hyper,n=Ce(t),r=W.useState(function(){return L}),u=r[1],a=W.useState(function(){return z}),c=a[1];return W.useEffect(function(){(function(s){return O(function(i){var m=i.paymentMethodsManagementElements(t),d=m.update,C=m.getElement,f=m.fetchUpdates,E=m.create,k={options:n,update:d,getElement:C,fetchUpdates:f,create:E},S=n.ephemeralKey,w=i.paymentRequest,h={ephemeralKey:S,paymentRequest:w};return u(function(M){return h}),c(function(M){return k}),Promise.resolve(h)},s)})(o)},[]),ue.jsx(ce.make,{value:r[0],children:ue.jsx(ye.make,{value:a[0],children:e.children})})}var Ve=Tt;function Dt(){return A.useContext(g)}function Ut(){return console.warn("useStripe() is deprecated. Use useHyper() instead"),A.useContext(g)}function $t(){return A.useContext(R)}function jt(){return console.warn("useElements() is deprecated. Use useWidgets() instead"),A.useContext(R)}var It=Ee,qt=ge,Ht=oe,Gt=oe,Kt=ne,Xt=ne,Lt=te,zt=te,Qt=Q,Yt=Q,Zt=ee,en=ee,tn=Ne,nn=we,rn=Oe,on=Je,un=Ve;export{nn as ApplePayElement,Qt as CardCVCElement,Yt as CardCVCWidget,Kt as CardElement,Zt as CardExpiryElement,en as CardExpiryWidget,Lt as CardNumberElement,zt as CardNumberWidget,Xt as CardWidget,It as Elements,on as ExpressCheckoutElement,tn as GooglePayElement,qt as HyperElements,un as HyperManagementElements,rn as PayPalElement,Ht as PaymentElement,Gt as UnifiedCheckout,jt as useElements,Dt as useHyper,Ut as useStripe,$t as useWidgets};
package/package.json CHANGED
@@ -1,14 +1,20 @@
1
1
  {
2
2
  "name": "@juspay-tech/react-hyper-js",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "main": "index.js",
5
+ "module": "index.mjs",
6
+ "exports": {
7
+ ".": {
8
+ "import": "./index.mjs",
9
+ "require": "./index.js"
10
+ }
11
+ },
5
12
  "dependencies": {
6
- "@rescript/react": "^0.10.3",
13
+ "@rescript/react": "^0.12.1",
7
14
  "@ryyppy/rescript-promise": "^2.1.0",
8
- "bs-fetch": "^0.6.2",
9
- "bs-webapi": "^0.19.1",
10
15
  "postcss": "^8.4.19",
11
- "react-scripts": "^3.4.0"
16
+ "react-scripts": "^5.0.1",
17
+ "@rescript/core": "^0.7.0"
12
18
  },
13
19
  "peerDependencies": {
14
20
  "react": "^16.9.0 || ^17.0.0 || ^18.0.0",
@@ -20,32 +26,20 @@
20
26
  "build:es": "node build.js",
21
27
  "re:build": "rescript",
22
28
  "re:start": "rescript build -w",
29
+ "re:format": "rescript format -all",
30
+ "re:clean": "rescript clean",
23
31
  "publish:public": "npm publish --access public"
24
32
  },
25
33
  "devDependencies": {
26
- "@babel/cli": "^7.7.0",
27
- "@babel/core": "^7.7.2",
28
- "@babel/plugin-transform-react-jsx": "^7.10.1",
29
34
  "@babel/preset-env": "^7.7.1",
30
35
  "@babel/preset-react": "^7.7.0",
31
- "babel-cli": "^6.26.0",
32
- "babel-core": "^6.26.3",
33
- "babel-eslint": "^10.0.3",
34
- "babel-jest": "^24.9.0",
35
- "babel-loader": "^8.0.6",
36
- "babel-preset-env": "^1.7.0",
37
- "babel-preset-react": "^6.24.1",
38
- "babel-preset-stage-2": "^6.24.1",
39
- "css-loader": "^0.28.11",
36
+ "babel-loader": "^8.3.0",
37
+ "css-loader": "^6.8.1",
40
38
  "esbuild": "^0.17.4",
41
39
  "esbuild-plugin-copy": "^1.3.0",
42
40
  "esbuild-plugin-inline-image": "0.0.8",
43
41
  "esbuild-postcss": "0.0.4",
44
- "node-sass": "^4.9.0",
45
- "react-hot-loader": "^4.3.3",
46
- "rescript": "^10.0.1",
47
- "rollup-plugin-babel": "^4.3.3",
48
- "sass-loader": "^7.0.3",
42
+ "rescript": "^11.1.0",
49
43
  "style-loader": "^0.21.0"
50
44
  },
51
45
  "directories": {
package/rescript.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "react-orca-js",
3
+ "sources": [
4
+ {
5
+ "dir": "src",
6
+ "subdirs": true
7
+ }
8
+ ],
9
+ "bsc-flags": ["-bs-super-errors", "-open RescriptCore"],
10
+ "package-specs": [
11
+ {
12
+ "module": "esmodule",
13
+ "in-source": true
14
+ }
15
+ ],
16
+ "suffix": ".bs.js",
17
+ "jsx": { "version": 4 },
18
+ "bs-dependencies": [
19
+ "@rescript/react",
20
+ "@ryyppy/rescript-promise",
21
+ "@rescript/core"
22
+ ]
23
+ }
package/src/Context.bs.js CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  import * as React from "react";
4
4
  import * as OrcaJs from "./OrcaJs.bs.js";
5
- import * as Js_dict from "rescript/lib/es6/js_dict.js";
6
- import * as Js_json from "rescript/lib/es6/js_json.js";
5
+ import * as Core__JSON from "@rescript/core/src/Core__JSON.bs.js";
7
6
  import * as Belt_Option from "rescript/lib/es6/belt_Option.js";
7
+ import * as Core__Option from "@rescript/core/src/Core__Option.bs.js";
8
8
 
9
9
  function confirmPaymentFn(_elements) {
10
10
  return Promise.resolve({});
@@ -32,31 +32,36 @@ var defaultSwitchContext = {
32
32
 
33
33
  var switchContext = React.createContext(defaultSwitchContext);
34
34
 
35
- function makeProps(value, children, param) {
36
- return {
37
- value: value,
38
- children: children
39
- };
40
- }
41
-
42
35
  var make = switchContext.Provider;
43
36
 
44
37
  var SwitchContextProvider = {
45
- makeProps: makeProps,
46
38
  make: make
47
39
  };
48
40
 
41
+ var defaultPaymentMethodsManagementSwitchContext = {
42
+ ephemeralKey: "",
43
+ paymentRequest: paymentRequest
44
+ };
45
+
46
+ var paymentMethodsManagementSwitchContext = React.createContext(defaultPaymentMethodsManagementSwitchContext);
47
+
48
+ var make$1 = paymentMethodsManagementSwitchContext.Provider;
49
+
50
+ var PaymentMethodsManagementSwitchContextProvider = {
51
+ make: make$1
52
+ };
53
+
49
54
  function getString(dict, key, defaultVal) {
50
- return Belt_Option.getWithDefault(Belt_Option.flatMap(Js_dict.get(dict, key), Js_json.decodeString), defaultVal);
55
+ return Core__Option.getOr(Belt_Option.flatMap(dict[key], Core__JSON.Decode.string), defaultVal);
51
56
  }
52
57
 
53
58
  function elementsOptionObjMapper(options) {
54
- var dict = Belt_Option.getWithDefault(Js_json.decodeObject(options), {});
59
+ var dict = Core__Option.getOr(Core__JSON.Decode.object(options), {});
55
60
  return {
56
- fonts: Belt_Option.getWithDefault(Belt_Option.flatMap(Js_dict.get(dict, "fonts"), Js_json.decodeArray), []),
61
+ fonts: Core__Option.getOr(Belt_Option.flatMap(dict["fonts"], Core__JSON.Decode.array), []),
57
62
  locale: getString(dict, "locale", ""),
58
63
  clientSecret: getString(dict, "clientSecret", ""),
59
- appearance: Belt_Option.getWithDefault(Belt_Option.flatMap(Js_dict.get(dict, "appearance"), Js_json.decodeObject), {}),
64
+ appearance: Core__Option.getOr(Belt_Option.flatMap(dict["appearance"], Core__JSON.Decode.object), {}),
60
65
  loader: getString(dict, "loader", "auto")
61
66
  };
62
67
  }
@@ -69,9 +74,9 @@ function getElement(_componentName) {
69
74
 
70
75
  }
71
76
 
72
- function fetchUpdates(param) {
77
+ function fetchUpdates() {
73
78
  return new Promise((function (resolve, param) {
74
- setTimeout((function (param) {
79
+ setTimeout((function () {
75
80
  resolve({});
76
81
  }), 1000);
77
82
  }));
@@ -99,18 +104,45 @@ var defaultElementsContext = {
99
104
 
100
105
  var elementsContext = React.createContext(defaultElementsContext);
101
106
 
102
- function makeProps$1(value, children, param) {
107
+ var make$2 = elementsContext.Provider;
108
+
109
+ var ElementsContextProvider = {
110
+ make: make$2
111
+ };
112
+
113
+ function paymentMethodsManagementElementsOptionObjMapper(options) {
114
+ var dict = Core__Option.getOr(Core__JSON.Decode.object(options), {});
103
115
  return {
104
- value: value,
105
- children: children
116
+ fonts: Core__Option.getOr(Belt_Option.flatMap(dict["fonts"], Core__JSON.Decode.array), []),
117
+ locale: getString(dict, "locale", ""),
118
+ ephemeralKey: getString(dict, "ephemeralKey", ""),
119
+ appearance: Core__Option.getOr(Belt_Option.flatMap(dict["appearance"], Core__JSON.Decode.object), {}),
120
+ loader: getString(dict, "loader", "auto")
106
121
  };
107
122
  }
108
123
 
109
- var make$1 = elementsContext.Provider;
124
+ var defaultPaymentMethodsManagementElementsContext_options = {
125
+ fonts: [],
126
+ locale: "",
127
+ ephemeralKey: "",
128
+ appearance: {},
129
+ loader: ""
130
+ };
110
131
 
111
- var ElementsContextProvider = {
112
- makeProps: makeProps$1,
113
- make: make$1
132
+ var defaultPaymentMethodsManagementElementsContext = {
133
+ options: defaultPaymentMethodsManagementElementsContext_options,
134
+ update: update,
135
+ getElement: getElement,
136
+ fetchUpdates: fetchUpdates,
137
+ create: create
138
+ };
139
+
140
+ var paymentMethodsManagementElementsContext = React.createContext(defaultPaymentMethodsManagementElementsContext);
141
+
142
+ var make$3 = paymentMethodsManagementElementsContext.Provider;
143
+
144
+ var PaymentMethodsManagementElementsContextProvider = {
145
+ make: make$3
114
146
  };
115
147
 
116
148
  export {
@@ -121,6 +153,9 @@ export {
121
153
  defaultSwitchContext ,
122
154
  switchContext ,
123
155
  SwitchContextProvider ,
156
+ defaultPaymentMethodsManagementSwitchContext ,
157
+ paymentMethodsManagementSwitchContext ,
158
+ PaymentMethodsManagementSwitchContextProvider ,
124
159
  getString ,
125
160
  elementsOptionObjMapper ,
126
161
  update ,
@@ -130,5 +165,9 @@ export {
130
165
  defaultElementsContext ,
131
166
  elementsContext ,
132
167
  ElementsContextProvider ,
168
+ paymentMethodsManagementElementsOptionObjMapper ,
169
+ defaultPaymentMethodsManagementElementsContext ,
170
+ paymentMethodsManagementElementsContext ,
171
+ PaymentMethodsManagementElementsContextProvider ,
133
172
  }
134
- /* confirmCardPaymentFn Not a pure module */
173
+ /* switchContext Not a pure module */
package/src/Context.res CHANGED
@@ -2,10 +2,10 @@
2
2
  external contentWindow: Js.nullable<Dom.element> => Js.nullable<Dom.element> = "contentWindow"
3
3
  @send
4
4
  external postMessage: (Js.nullable<Dom.element>, string, string) => unit = "postMessage"
5
- external jsonToRef: Js.Json.t => React.ref<Js.nullable<Dom.element>> = "%identity"
5
+ external jsonToRef: JSON.t => React.ref<Js.nullable<Dom.element>> = "%identity"
6
6
  @get external getClientSecret: 'a => string = "clientSecret"
7
- external toJson: 'b => Js.Json.t = "%identity"
8
- type func = (. unit) => string
7
+ external toJson: 'b => JSON.t = "%identity"
8
+ type func = unit => string
9
9
  external toFunc: 'c => func = "%identity"
10
10
 
11
11
  type paymentElement
@@ -18,7 +18,7 @@ type address = {
18
18
  postal_code: option<string>,
19
19
  state: option<string>,
20
20
  }
21
- type confirmCardPaymentMethodType = String(string) | Obj(Js.Json.t)
21
+ type confirmCardPaymentMethodType = String(string) | Obj(JSON.t)
22
22
  type shipping = {
23
23
  address: address,
24
24
  name: string,
@@ -40,49 +40,64 @@ type confirmCardPaymentDataType = {
40
40
  payment_method_options: string,
41
41
  }
42
42
  type elementsOptions = {
43
- fonts: Js.Array2.t<Js.Json.t>,
43
+ fonts: array<JSON.t>,
44
44
  locale: string,
45
45
  clientSecret: string,
46
- appearance: Js.Dict.t<Js.Json.t>,
46
+ appearance: Dict.t<JSON.t>,
47
47
  loader: string,
48
48
  }
49
- external optionsToJson: elementsOptions => Js.Json.t = "%identity"
49
+ type paymentMethodsManagementElementsOptions = {
50
+ fonts: array<JSON.t>,
51
+ locale: string,
52
+ ephemeralKey: string,
53
+ appearance: Dict.t<JSON.t>,
54
+ loader: string,
55
+ }
56
+ external optionsToJson: elementsOptions => JSON.t = "%identity"
50
57
  type rec elementsType = {
51
58
  options: elementsOptions,
52
- update: Js.Json.t => unit,
53
- getElement: Js.Dict.key => option<OrcaJs.paymentElement>,
54
- fetchUpdates: unit => Js.Promise.t<Js.Json.t>,
55
- create: (string, Js.Json.t) => OrcaJs.paymentElement, // return a react component instead by doing new Payment Element.
59
+ update: JSON.t => unit,
60
+ getElement: string => option<OrcaJs.paymentElement>,
61
+ fetchUpdates: unit => Promise.t<JSON.t>,
62
+ create: (string, JSON.t) => OrcaJs.paymentElement, // return a react component instead by doing new Payment Element.
56
63
  }
57
64
 
58
- type elementsContextType = {options: Js.Dict.t<Js.Json.t>}
65
+ type rec paymentMethodsManagementElementsType = {
66
+ options: paymentMethodsManagementElementsOptions,
67
+ update: JSON.t => unit,
68
+ getElement: string => option<OrcaJs.paymentElement>,
69
+ fetchUpdates: unit => Promise.t<JSON.t>,
70
+ create: (string, JSON.t) => OrcaJs.paymentElement,
71
+ }
72
+
73
+ type elementsContextType = {options: Dict.t<JSON.t>}
59
74
  type confirmPaymentParams = {return_url: string}
60
75
  type switchContextType = {
61
76
  clientSecret: string,
62
- confirmPayment: Js.Json.t => Js.Promise.t<Js.Json.t>,
63
- confirmCardPayment: Js_OO.Callback.arity4<
64
- (OrcaJs.This.t, string, option<Js.Json.t>, option<Js.Json.t>) => Js.Promise.t<Js.Json.t>,
65
- >,
66
- retrievePaymentIntent: string => Js.Promise.t<Js.Json.t>,
67
- paymentRequest: Js.Json.t => Js.Json.t,
68
- }
69
-
70
- let confirmPaymentFn = (_elements: Js.Json.t) => {
71
- Js.Promise.resolve(Js.Dict.empty()->Js.Json.object_)
72
- }
73
- let confirmCardPaymentFn =
74
- @this
75
- (
76
- _this: OrcaJs.This.t,
77
- _clientSecretId: string,
78
- _data: option<Js.Json.t>,
79
- _options: option<Js.Json.t>,
80
- ) => {
81
- Js.Promise.resolve(Js.Dict.empty()->Js.Json.object_)
82
- }
77
+ confirmPayment: JSON.t => Promise.t<JSON.t>,
78
+ confirmCardPayment: (string, option<JSON.t>, option<JSON.t>) => Promise.t<JSON.t>,
79
+ retrievePaymentIntent: string => Promise.t<JSON.t>,
80
+ paymentRequest: JSON.t => JSON.t,
81
+ }
82
+
83
+ type paymentMethodsManagementSwitchContextType = {
84
+ ephemeralKey: string,
85
+ paymentRequest: JSON.t => JSON.t,
86
+ }
87
+
88
+ let confirmPaymentFn = (_elements: JSON.t) => {
89
+ Promise.resolve(Dict.make()->JSON.Encode.object)
90
+ }
91
+ let confirmCardPaymentFn = (
92
+ _clientSecretId: string,
93
+ _data: option<JSON.t>,
94
+ _options: option<JSON.t>,
95
+ ) => {
96
+ Promise.resolve(Dict.make()->JSON.Encode.object)
97
+ }
83
98
 
84
99
  let retrievePaymentIntentFn = _paymentIntentId => {
85
- Js.Promise.resolve(Js.Dict.empty()->Js.Json.object_)
100
+ Promise.resolve(Dict.make()->JSON.Encode.object)
86
101
  }
87
102
  let paymentRequest = options => {
88
103
  options
@@ -99,35 +114,42 @@ let defaultSwitchContext = {
99
114
  let switchContext = React.createContext(defaultSwitchContext)
100
115
 
101
116
  module SwitchContextProvider = {
102
- let makeProps = (~value, ~children, ()) =>
103
- {
104
- "value": value,
105
- "children": children,
106
- }
107
-
108
117
  let make = React.Context.provider(switchContext)
109
118
  }
110
119
 
120
+ let defaultPaymentMethodsManagementSwitchContext = {
121
+ ephemeralKey: "",
122
+ paymentRequest,
123
+ }
124
+
125
+ let paymentMethodsManagementSwitchContext = React.createContext(
126
+ defaultPaymentMethodsManagementSwitchContext,
127
+ )
128
+
129
+ module PaymentMethodsManagementSwitchContextProvider = {
130
+ let make = React.Context.provider(paymentMethodsManagementSwitchContext)
131
+ }
132
+
111
133
  let getString = (dict, key, defaultVal) => {
112
134
  dict
113
- ->Js.Dict.get(key)
114
- ->Belt.Option.flatMap(Js.Json.decodeString)
115
- ->Belt.Option.getWithDefault(defaultVal)
135
+ ->Dict.get(key)
136
+ ->Belt.Option.flatMap(JSON.Decode.string)
137
+ ->Option.getOr(defaultVal)
116
138
  }
117
139
 
118
- let elementsOptionObjMapper = (options: Js.Json.t) => {
119
- let dict = options->Js.Json.decodeObject->Belt.Option.getWithDefault(Js.Dict.empty())
140
+ let elementsOptionObjMapper = (options: JSON.t) => {
141
+ let dict = options->JSON.Decode.object->Option.getOr(Dict.make())
120
142
  {
121
143
  fonts: dict
122
- ->Js.Dict.get("fonts")
123
- ->Belt.Option.flatMap(Js.Json.decodeArray)
124
- ->Belt.Option.getWithDefault([]),
144
+ ->Dict.get("fonts")
145
+ ->Belt.Option.flatMap(JSON.Decode.array)
146
+ ->Option.getOr([]),
125
147
  locale: dict->getString("locale", ""),
126
148
  clientSecret: dict->getString("clientSecret", ""),
127
149
  appearance: dict
128
- ->Js.Dict.get("appearance")
129
- ->Belt.Option.flatMap(Js.Json.decodeObject)
130
- ->Belt.Option.getWithDefault(Js.Dict.empty()),
150
+ ->Dict.get("appearance")
151
+ ->Belt.Option.flatMap(JSON.Decode.object)
152
+ ->Option.getOr(Dict.make()),
131
153
  loader: dict->getString("loader", "auto"),
132
154
  }
133
155
  }
@@ -142,20 +164,20 @@ let getElement = _componentName => {
142
164
 
143
165
  let fetchUpdates = () => {
144
166
  //add API call
145
- Js.Promise.make((~resolve, ~reject as _) => {
146
- Js.Global.setTimeout(() => resolve(. Js.Dict.empty()->Js.Json.object_), 1000)->ignore
167
+ Promise.make((resolve, _) => {
168
+ setTimeout(() => resolve(Dict.make()->JSON.Encode.object), 1000)->ignore
147
169
  })
148
170
  }
149
171
 
150
172
  let create = (_componentType, _options) => {
151
173
  OrcaJs.defaultPaymentElement
152
174
  }
153
- let defaultElementsContext = {
175
+ let defaultElementsContext: elementsType = {
154
176
  options: {
155
177
  fonts: [],
156
178
  locale: "",
157
179
  clientSecret: "",
158
- appearance: Js.Dict.empty(),
180
+ appearance: Dict.make(),
159
181
  loader: "",
160
182
  },
161
183
  update,
@@ -167,11 +189,44 @@ let defaultElementsContext = {
167
189
  let elementsContext = React.createContext(defaultElementsContext)
168
190
 
169
191
  module ElementsContextProvider = {
170
- let makeProps = (~value, ~children, ()) =>
171
- {
172
- "value": value,
173
- "children": children,
174
- }
175
-
176
192
  let make = React.Context.provider(elementsContext)
177
193
  }
194
+
195
+ let paymentMethodsManagementElementsOptionObjMapper = (options: JSON.t) => {
196
+ let dict = options->JSON.Decode.object->Option.getOr(Dict.make())
197
+ {
198
+ fonts: dict
199
+ ->Dict.get("fonts")
200
+ ->Belt.Option.flatMap(JSON.Decode.array)
201
+ ->Option.getOr([]),
202
+ locale: dict->getString("locale", ""),
203
+ ephemeralKey: dict->getString("ephemeralKey", ""),
204
+ appearance: dict
205
+ ->Dict.get("appearance")
206
+ ->Belt.Option.flatMap(JSON.Decode.object)
207
+ ->Option.getOr(Dict.make()),
208
+ loader: dict->getString("loader", "auto"),
209
+ }
210
+ }
211
+
212
+ let defaultPaymentMethodsManagementElementsContext: paymentMethodsManagementElementsType = {
213
+ options: {
214
+ fonts: [],
215
+ locale: "",
216
+ ephemeralKey: "",
217
+ appearance: Js.Dict.empty(),
218
+ loader: "",
219
+ },
220
+ update,
221
+ getElement,
222
+ fetchUpdates,
223
+ create,
224
+ }
225
+
226
+ let paymentMethodsManagementElementsContext = React.createContext(
227
+ defaultPaymentMethodsManagementElementsContext,
228
+ )
229
+
230
+ module PaymentMethodsManagementElementsContextProvider = {
231
+ let make = React.Context.provider(paymentMethodsManagementElementsContext)
232
+ }