@juspay-tech/react-hyper-js 1.0.2 → 1.1.1

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 +15 -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 -21
  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,15 @@
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.
10
+
11
+ ## v1.1.1 (2024-07-12)
12
+
13
+ ### Fix
14
+
15
+ - Build files updated.
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 je=Object.create;var j=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var qe=Object.getOwnPropertyNames;var He=Object.getPrototypeOf,Ge=Object.prototype.hasOwnProperty;var Ke=(e,n)=>{for(var r in n)j(e,r,{get:n[r],enumerable:!0})},se=(e,n,r,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of qe(n))!Ge.call(e,t)&&t!==r&&j(e,t,{get:()=>n[t],enumerable:!(o=Ie(n,t))||o.enumerable});return e};var m=(e,n,r)=>(r=e!=null?je(He(e)):{},se(n||!e||!e.__esModule?j(r,"default",{value:e,enumerable:!0}):r,e)),Xe=e=>se(j({},"__esModule",{value:!0}),e);var gt={};Ke(gt,{ApplePayElement:()=>vt,CardCVCElement:()=>ft,CardCVCWidget:()=>dt,CardElement:()=>mt,CardExpiryElement:()=>pt,CardExpiryWidget:()=>yt,CardNumberElement:()=>ct,CardNumberWidget:()=>st,CardWidget:()=>lt,Elements:()=>ot,ExpressCheckoutElement:()=>Et,GooglePayElement:()=>Ct,HyperElements:()=>at,HyperManagementElements:()=>ht,PayPalElement:()=>_t,PaymentElement:()=>ut,PaymentMethodsManagementElement:()=>xt,UnifiedCheckout:()=>it,useElements:()=>rt,useHyper:()=>et,useStripe:()=>nt,useWidgets:()=>tt});module.exports=Xe(gt);var U=m(require("react"));var Re=m(require("react/jsx-runtime"));var h=m(require("react"));var b=m(require("react"));function Le(e,n){}function ze(){}function Qe(){}function Ye(e){}function Ze(){}function en(){}function nn(e){}function tn(){}function rn(){}var fe={on:Le,collapse:ze,blur:Qe,update:Ye,destroy:Ze,unmount:en,mount:nn,focus:tn,clear:rn};function an(e){if(typeof e=="boolean")return e}function un(e){if(e===null)return null}function mn(e){if(typeof e=="string")return e}function ln(e){if(typeof e=="number")return e}function cn(e){if(typeof e=="object"&&!Array.isArray(e)&&e!==null)return e}function sn(e){if(Array.isArray(e))return e}var _={bool:an,$$null:un,string:mn,$$float:ln,object:cn,array:sn};function Q(e,n,r){for(var o=new Array(r),t=0,a=n;t<r;)o[t]=e[a],t=t+1|0,a=a+1|0;return o}function de(e,n){for(;;){var r=n,o=e,t=o.length,a=t===0?1:t,l=r.length,c=a-l|0;if(c===0)return o.apply(null,r);if(c>=0)return function(d,u){return function(i){return de(d,u.concat([i]))}}(o,r);n=Q(r,a,-c|0),e=o.apply(null,Q(r,0,a))}}function pn(e,n){var r=e.length;if(r===1)return e(n);switch(r){case 1:return e(n);case 2:return function(o){return e(n,o)};case 3:return function(o,t){return e(n,o,t)};case 4:return function(o,t,a){return e(n,o,t,a)};case 5:return function(o,t,a,l){return e(n,o,t,a,l)};case 6:return function(o,t,a,l,c){return e(n,o,t,a,l,c)};case 7:return function(o,t,a,l,c,d){return e(n,o,t,a,l,c,d)};default:return de(e,[n])}}function I(e){var n=e.length;return n===1?e:function(r){return pn(e,r)}}function R(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 q(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 yn(e,n){if(e!==void 0)return n(q(e))}function k(e,n){return yn(e,I(n))}function E(e,n){return e!==void 0?q(e):n}function _n(e){return Promise.resolve({})}function En(e,n,r){return Promise.resolve({})}function hn(e){return Promise.resolve({})}function ye(e){return e}var B={clientSecret:"",confirmPayment:_n,confirmCardPayment:En,retrievePaymentIntent:hn,paymentRequest:ye},S=b.createContext(B),xn=S.Provider,G={make:xn},Y={ephemeralKey:"",paymentRequest:ye},Z=b.createContext(Y),gn=Z.Provider,Ce={make:gn};function O(e,n,r){return E(k(e[n],_.string),r)}function K(e){var n=E(_.object(e),{});return{fonts:E(k(n.fonts,_.array),[]),locale:O(n,"locale",""),clientSecret:O(n,"clientSecret",""),appearance:E(k(n.appearance,_.object),{}),loader:O(n,"loader","auto")}}function ve(e){}function _e(e){}function Ee(){return new Promise(function(e,n){setTimeout(function(){e({})},1e3)})}function he(e,n){return fe}var Pn={fonts:[],locale:"",clientSecret:"",appearance:{},loader:""},W={options:Pn,update:ve,getElement:_e,fetchUpdates:Ee,create:he},M=b.createContext(W),Rn=M.Provider,X={make:Rn};function xe(e){var n=E(_.object(e),{});return{fonts:E(k(n.fonts,_.array),[]),locale:O(n,"locale",""),ephemeralKey:O(n,"ephemeralKey",""),appearance:E(k(n.appearance,_.object),{}),loader:O(n,"loader","auto")}}var kn={fonts:[],locale:"",ephemeralKey:"",appearance:{},loader:""},ee={options:kn,update:ve,getElement:_e,fetchUpdates:Ee,create:he},ne=b.createContext(ee),On=ne.Provider,ge={make:On};var Pe=m(require("react/jsx-runtime"));function Sn(e){var n=e.onClick,r=e.onBlur,o=e.onFocus,t=e.componentType,a=e.onReady,l=e.onChange,c=e.options,d=e.id,u=d!==void 0?d:"payment-Element",i=h.useContext(S),C=h.useContext(M),y=h.useRef(null),p=C.create(t,c);return h.useEffect(function(){var s=C.create(t,c);s.mount("#orca-elements-payment-element-"+u)},[y,C]),h.useEffect(function(){p.on("ready",a),p.on("focus",o),p.on("blur",r),p.on("clickTriggered",n),p.on("change",l)},[C,i]),Pe.jsx("div",{ref:R(y),id:"orca-elements-payment-element-"+u})}var f=Sn;function Mn(e){return Re.jsx(f,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"cardCvc",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var te=Mn;var A=m(require("react"));function N(e,n){return n.then(I(e))}var oe=m(require("react/jsx-runtime"));function Nn(e){var n=e.options,r=e.stripe,o=K(n),t=A.useState(function(){return B}),a=t[1],l=A.useState(function(){return W}),c=l[1];return A.useEffect(function(){(function(d){return N(function(u){var i=u.elements(n),C=i.update,y=i.getElement,p=i.fetchUpdates,s=i.create,g={options:o,update:C,getElement:y,fetchUpdates:p,create:s},F=o.clientSecret,J=u.confirmPayment,P=u.confirmCardPayment,V=u.retrievePaymentIntent,L=u.paymentRequest,T={clientSecret:F,confirmPayment:J,confirmCardPayment:P,retrievePaymentIntent:V,paymentRequest:L};return a(function(z){return T}),c(function(z){return g}),Promise.resolve(T)},d)})(r)},[]),oe.jsx(G.make,{value:t[0],children:oe.jsx(X.make,{value:l[0],children:e.children})})}var ke=Nn;var Oe=m(require("react/jsx-runtime"));function Jn(e){return Oe.jsx(f,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"cardExpiry",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var ae=Jn;var Se=m(require("react/jsx-runtime"));function Tn(e){return Se.jsx(f,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"cardNumber",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var ue=Tn;var Me=m(require("react/jsx-runtime"));function Bn(e){return Me.jsx(f,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"card",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var ie=Bn;var D=m(require("react"));var me=m(require("react/jsx-runtime"));function An(e){var n=e.options,r=e.hyper,o=K(n),t=D.useState(function(){return B}),a=t[1],l=D.useState(function(){return W}),c=l[1];return D.useEffect(function(){(function(d){return N(function(u){var i=u.elements(n),C=i.update,y=i.getElement,p=i.fetchUpdates,s=i.create,g={options:o,update:C,getElement:y,fetchUpdates:p,create:s},F=o.clientSecret,J=u.confirmPayment,P=u.confirmCardPayment,V=u.retrievePaymentIntent,L=u.paymentRequest,T={clientSecret:F,confirmPayment:J,confirmCardPayment:P,retrievePaymentIntent:V,paymentRequest:L};return a(function(z){return T}),c(function(z){return g}),Promise.resolve(T)},d)})(r)},[]),me.jsx(G.make,{value:t[0],children:me.jsx(X.make,{value:l[0],children:e.children})})}var we=An;var Ne=m(require("react/jsx-runtime"));function $n(e){return Ne.jsx(f,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"payPal",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var Fe=$n;var Je=m(require("react/jsx-runtime"));function jn(e){return Je.jsx(f,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"payment",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var le=jn;var Ve=m(require("react/jsx-runtime"));function qn(e){return Ve.jsx(f,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"applePay",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var Te=qn;var be=m(require("react/jsx-runtime"));function Gn(e){return be.jsx(f,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"googlePay",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var Be=Gn;var We=m(require("react/jsx-runtime"));function Xn(e){return We.jsx(f,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"expressCheckout",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var Ae=Xn;var $=m(require("react"));var ce=m(require("react/jsx-runtime"));function zn(e){var n=e.options,r=e.hyper,o=xe(n),t=$.useState(function(){return Y}),a=t[1],l=$.useState(function(){return ee}),c=l[1];return $.useEffect(function(){(function(d){return N(function(u){var i=u.paymentMethodsManagementElements(n),C=i.update,y=i.getElement,p=i.fetchUpdates,s=i.create,g={options:o,update:C,getElement:y,fetchUpdates:p,create:s},F=o.ephemeralKey,J=u.paymentRequest,P={ephemeralKey:F,paymentRequest:J};return a(function(V){return P}),c(function(V){return g}),Promise.resolve(P)},d)})(r)},[]),ce.jsx(Ce.make,{value:t[0],children:ce.jsx(ge.make,{value:l[0],children:e.children})})}var De=zn;var x=m(require("react"));var $e=m(require("react/jsx-runtime"));function Yn(e){var n=e.onClick,r=e.onBlur,o=e.onFocus,t=e.componentType,a=e.onReady,l=e.onChange,c=e.options,d=e.id,u=d!==void 0?d:"payment-management",i=t!==void 0?t:"paymentMethodsManagement",C=x.useContext(Z),y=x.useContext(ne),p=x.useRef(null),s=y.create(i,c);return x.useEffect(function(){var g=y.create(i,c);g.mount("#orca-elements-payment-management-"+u)},[p,y]),x.useEffect(function(){return s.on("ready",a),s.on("focus",o),s.on("blur",r),s.on("clickTriggered",n),s.on("change",l),function(){s.on("ready",void 0),s.on("focus",void 0),s.on("blur",void 0),s.on("clickTriggered",void 0),s.on("change",void 0)}},[y,C]),$e.jsx("div",{ref:R(p),id:"orca-elements-payment-management-"+u})}var Ue=Yn;function et(){return U.useContext(S)}function nt(){return console.warn("useStripe() is deprecated. Use useHyper() instead"),U.useContext(S)}function tt(){return U.useContext(M)}function rt(){return console.warn("useElements() is deprecated. Use useWidgets() instead"),U.useContext(M)}var ot=ke,at=we,ut=le,it=le,mt=ie,lt=ie,ct=ue,st=ue,ft=te,dt=te,pt=ae,yt=ae,Ct=Be,vt=Te,_t=Fe,Et=Ae,ht=De,xt=Ue;
package/index.mjs ADDED
@@ -0,0 +1 @@
1
+ import*as $ from"react";import*as xe from"react/jsx-runtime";import*as E from"react";import*as T from"react";function De(e,n){}function $e(){}function Ue(){}function je(e){}function Ie(){}function qe(){}function He(e){}function Ge(){}function Ke(){}var le={on:De,collapse:$e,blur:Ue,update:je,destroy:Ie,unmount:qe,mount:He,focus:Ge,clear:Ke};function Le(e){if(typeof e=="boolean")return e}function ze(e){if(e===null)return null}function Qe(e){if(typeof e=="string")return e}function Ye(e){if(typeof e=="number")return e}function Ze(e){if(typeof e=="object"&&!Array.isArray(e)&&e!==null)return e}function en(e){if(Array.isArray(e))return e}var v={bool:Le,$$null:ze,string:Qe,$$float:Ye,object:Ze,array:en};function L(e,n,o){for(var t=new Array(o),r=0,a=n;r<o;)t[r]=e[a],r=r+1|0,a=a+1|0;return t}function ce(e,n){for(;;){var o=n,t=e,r=t.length,a=r===0?1:r,m=o.length,l=a-m|0;if(l===0)return t.apply(null,o);if(l>=0)return function(f,u){return function(i){return ce(f,u.concat([i]))}}(t,o);n=L(o,a,-l|0),e=t.apply(null,L(o,0,a))}}function rn(e,n){var o=e.length;if(o===1)return e(n);switch(o){case 1:return e(n);case 2:return function(t){return e(n,t)};case 3:return function(t,r){return e(n,t,r)};case 4:return function(t,r,a){return e(n,t,r,a)};case 5:return function(t,r,a,m){return e(n,t,r,a,m)};case 6:return function(t,r,a,m,l){return e(n,t,r,a,m,l)};case 7:return function(t,r,a,m,l,f){return e(n,t,r,a,m,l,f)};default:return ce(e,[n])}}function U(e){var n=e.length;return n===1?e:function(o){return rn(e,o)}}function P(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 j(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 on(e,n){if(e!==void 0)return n(j(e))}function R(e,n){return on(e,U(n))}function _(e,n){return e!==void 0?j(e):n}function mn(e){return Promise.resolve({})}function ln(e,n,o){return Promise.resolve({})}function cn(e){return Promise.resolve({})}function fe(e){return e}var b={clientSecret:"",confirmPayment:mn,confirmCardPayment:ln,retrievePaymentIntent:cn,paymentRequest:fe},O=T.createContext(b),sn=O.Provider,q={make:sn},z={ephemeralKey:"",paymentRequest:fe},Q=T.createContext(z),fn=Q.Provider,de={make:fn};function k(e,n,o){return _(R(e[n],v.string),o)}function H(e){var n=_(v.object(e),{});return{fonts:_(R(n.fonts,v.array),[]),locale:k(n,"locale",""),clientSecret:k(n,"clientSecret",""),appearance:_(R(n.appearance,v.object),{}),loader:k(n,"loader","auto")}}function pe(e){}function ye(e){}function Ce(){return new Promise(function(e,n){setTimeout(function(){e({})},1e3)})}function ve(e,n){return le}var dn={fonts:[],locale:"",clientSecret:"",appearance:{},loader:""},B={options:dn,update:pe,getElement:ye,fetchUpdates:Ce,create:ve},S=T.createContext(B),pn=S.Provider,G={make:pn};function _e(e){var n=_(v.object(e),{});return{fonts:_(R(n.fonts,v.array),[]),locale:k(n,"locale",""),ephemeralKey:k(n,"ephemeralKey",""),appearance:_(R(n.appearance,v.object),{}),loader:k(n,"loader","auto")}}var yn={fonts:[],locale:"",ephemeralKey:"",appearance:{},loader:""},Y={options:yn,update:pe,getElement:ye,fetchUpdates:Ce,create:ve},Z=T.createContext(Y),Cn=Z.Provider,Ee={make:Cn};import*as he from"react/jsx-runtime";function vn(e){var n=e.onClick,o=e.onBlur,t=e.onFocus,r=e.componentType,a=e.onReady,m=e.onChange,l=e.options,f=e.id,u=f!==void 0?f:"payment-Element",i=E.useContext(O),y=E.useContext(S),p=E.useRef(null),d=y.create(r,l);return E.useEffect(function(){var c=y.create(r,l);c.mount("#orca-elements-payment-element-"+u)},[p,y]),E.useEffect(function(){d.on("ready",a),d.on("focus",t),d.on("blur",o),d.on("clickTriggered",n),d.on("change",m)},[y,i]),he.jsx("div",{ref:P(p),id:"orca-elements-payment-element-"+u})}var s=vn;function _n(e){return xe.jsx(s,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"cardCvc",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var ee=_n;import*as W from"react";function w(e,n){return n.then(U(e))}import*as te from"react/jsx-runtime";function hn(e){var n=e.options,o=e.stripe,t=H(n),r=W.useState(function(){return b}),a=r[1],m=W.useState(function(){return B}),l=m[1];return W.useEffect(function(){(function(f){return w(function(u){var i=u.elements(n),y=i.update,p=i.getElement,d=i.fetchUpdates,c=i.create,x={options:t,update:y,getElement:p,fetchUpdates:d,create:c},N=t.clientSecret,F=u.confirmPayment,g=u.confirmCardPayment,J=u.retrievePaymentIntent,K=u.paymentRequest,V={clientSecret:N,confirmPayment:F,confirmCardPayment:g,retrievePaymentIntent:J,paymentRequest:K};return a(function(X){return V}),l(function(X){return x}),Promise.resolve(V)},f)})(o)},[]),te.jsx(q.make,{value:r[0],children:te.jsx(G.make,{value:m[0],children:e.children})})}var ge=hn;import*as Pe from"react/jsx-runtime";function gn(e){return Pe.jsx(s,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"cardExpiry",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var re=gn;import*as Re from"react/jsx-runtime";function Rn(e){return Re.jsx(s,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"cardNumber",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var oe=Rn;import*as ke from"react/jsx-runtime";function On(e){return ke.jsx(s,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"card",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var ae=On;import*as A from"react";import*as ue from"react/jsx-runtime";function Mn(e){var n=e.options,o=e.hyper,t=H(n),r=A.useState(function(){return b}),a=r[1],m=A.useState(function(){return B}),l=m[1];return A.useEffect(function(){(function(f){return w(function(u){var i=u.elements(n),y=i.update,p=i.getElement,d=i.fetchUpdates,c=i.create,x={options:t,update:y,getElement:p,fetchUpdates:d,create:c},N=t.clientSecret,F=u.confirmPayment,g=u.confirmCardPayment,J=u.retrievePaymentIntent,K=u.paymentRequest,V={clientSecret:N,confirmPayment:F,confirmCardPayment:g,retrievePaymentIntent:J,paymentRequest:K};return a(function(X){return V}),l(function(X){return x}),Promise.resolve(V)},f)})(o)},[]),ue.jsx(q.make,{value:r[0],children:ue.jsx(G.make,{value:m[0],children:e.children})})}var Oe=Mn;import*as Se from"react/jsx-runtime";function Nn(e){return Se.jsx(s,{id:e.id,options:e.options,onChange:e.onChange,onReady:e.onReady,componentType:"payPal",onFocus:e.onFocus,onBlur:e.onBlur,onClick:e.onClick})}var Me=Nn;import*as we from"react/jsx-runtime";function Jn(e){return we.jsx(s,{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=Jn;import*as Ne from"react/jsx-runtime";function Tn(e){return Ne.jsx(s,{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=Tn;import*as Je from"react/jsx-runtime";function Bn(e){return Je.jsx(s,{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=Bn;import*as Te from"react/jsx-runtime";function An(e){return Te.jsx(s,{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=An;import*as D from"react";import*as me from"react/jsx-runtime";function $n(e){var n=e.options,o=e.hyper,t=_e(n),r=D.useState(function(){return z}),a=r[1],m=D.useState(function(){return Y}),l=m[1];return D.useEffect(function(){(function(f){return w(function(u){var i=u.paymentMethodsManagementElements(n),y=i.update,p=i.getElement,d=i.fetchUpdates,c=i.create,x={options:t,update:y,getElement:p,fetchUpdates:d,create:c},N=t.ephemeralKey,F=u.paymentRequest,g={ephemeralKey:N,paymentRequest:F};return a(function(J){return g}),l(function(J){return x}),Promise.resolve(g)},f)})(o)},[]),me.jsx(de.make,{value:r[0],children:me.jsx(Ee.make,{value:m[0],children:e.children})})}var Be=$n;import*as h from"react";import*as We from"react/jsx-runtime";function jn(e){var n=e.onClick,o=e.onBlur,t=e.onFocus,r=e.componentType,a=e.onReady,m=e.onChange,l=e.options,f=e.id,u=f!==void 0?f:"payment-management",i=r!==void 0?r:"paymentMethodsManagement",y=h.useContext(Q),p=h.useContext(Z),d=h.useRef(null),c=p.create(i,l);return h.useEffect(function(){var x=p.create(i,l);x.mount("#orca-elements-payment-management-"+u)},[d,p]),h.useEffect(function(){return c.on("ready",a),c.on("focus",t),c.on("blur",o),c.on("clickTriggered",n),c.on("change",m),function(){c.on("ready",void 0),c.on("focus",void 0),c.on("blur",void 0),c.on("clickTriggered",void 0),c.on("change",void 0)}},[p,y]),We.jsx("div",{ref:P(d),id:"orca-elements-payment-management-"+u})}var Ae=jn;function Hn(){return $.useContext(O)}function Gn(){return console.warn("useStripe() is deprecated. Use useHyper() instead"),$.useContext(O)}function Kn(){return $.useContext(S)}function Xn(){return console.warn("useElements() is deprecated. Use useWidgets() instead"),$.useContext(S)}var Ln=ge,zn=Oe,Qn=ie,Yn=ie,Zn=ae,et=ae,nt=oe,tt=oe,rt=ee,ot=ee,at=re,ut=re,it=Ve,mt=Fe,lt=Me,ct=be,st=Be,ft=Ae;export{mt as ApplePayElement,rt as CardCVCElement,ot as CardCVCWidget,Zn as CardElement,at as CardExpiryElement,ut as CardExpiryWidget,nt as CardNumberElement,tt as CardNumberWidget,et as CardWidget,Ln as Elements,ct as ExpressCheckoutElement,it as GooglePayElement,zn as HyperElements,st as HyperManagementElements,lt as PayPalElement,Qn as PaymentElement,ft as PaymentMethodsManagementElement,Yn as UnifiedCheckout,Xn as useElements,Hn as useHyper,Gn as useStripe,Kn as useWidgets};
package/package.json CHANGED
@@ -1,13 +1,20 @@
1
1
  {
2
2
  "name": "@juspay-tech/react-hyper-js",
3
- "version": "1.0.2",
3
+ "version": "1.1.1",
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
15
  "postcss": "^8.4.19",
10
- "react-scripts": "^3.4.0"
16
+ "react-scripts": "^5.0.1",
17
+ "@rescript/core": "^0.7.0"
11
18
  },
12
19
  "peerDependencies": {
13
20
  "react": "^16.9.0 || ^17.0.0 || ^18.0.0",
@@ -19,32 +26,20 @@
19
26
  "build:es": "node build.js",
20
27
  "re:build": "rescript",
21
28
  "re:start": "rescript build -w",
29
+ "re:format": "rescript format -all",
30
+ "re:clean": "rescript clean",
22
31
  "publish:public": "npm publish --access public"
23
32
  },
24
33
  "devDependencies": {
25
- "@babel/cli": "^7.7.0",
26
- "@babel/core": "^7.7.2",
27
- "@babel/plugin-transform-react-jsx": "^7.10.1",
28
34
  "@babel/preset-env": "^7.7.1",
29
35
  "@babel/preset-react": "^7.7.0",
30
- "babel-cli": "^6.26.0",
31
- "babel-core": "^6.26.3",
32
- "babel-eslint": "^10.0.3",
33
- "babel-jest": "^24.9.0",
34
- "babel-loader": "^8.0.6",
35
- "babel-preset-env": "^1.7.0",
36
- "babel-preset-react": "^6.24.1",
37
- "babel-preset-stage-2": "^6.24.1",
38
- "css-loader": "^0.28.11",
36
+ "babel-loader": "^8.3.0",
37
+ "css-loader": "^6.8.1",
39
38
  "esbuild": "^0.17.4",
40
39
  "esbuild-plugin-copy": "^1.3.0",
41
40
  "esbuild-plugin-inline-image": "0.0.8",
42
41
  "esbuild-postcss": "0.0.4",
43
- "node-sass": "^4.9.0",
44
- "react-hot-loader": "^4.3.3",
45
- "rescript": "^10.0.1",
46
- "rollup-plugin-babel": "^4.3.3",
47
- "sass-loader": "^7.0.3",
42
+ "rescript": "^11.1.0",
48
43
  "style-loader": "^0.21.0"
49
44
  },
50
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
+ }