@amos.com/amos-js 0.3.5 → 0.3.6

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.
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var R=Object.defineProperty;var o=(e,n)=>R(e,"name",{value:n,configurable:!0});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function m(e){const[n="",t="",i=""]=e?.split(".")??[],r=typeof atob=="function"?atob:a=>Buffer.from(a,"base64").toString("utf8");return{header:JSON.parse(r(n)),payload:JSON.parse(r(t)),signature:i}}o(m,"decodeJwt");function u(e){const{env:n="sandbox"}=m(e).payload;switch(n){case"production":return"https://embed.amos.com";case"sandbox":return"https://embed-sandbox.amos.com";default:return"https://embed-sandbox.amos.com"}}o(u,"getEmbedOrigin");function F(e){return e}o(F,"createMessage");function l(e){e?.contentWindow?.postMessage({type:"PARENT_ACKNOWLEDGED_IFRAME_READY"},"*")}o(l,"sendParentReadyMessage");function c({iframe:e,appearance:n={}}){e?.contentWindow?.postMessage({type:"UPDATE_APPEARANCE",appearance:n},"*")}o(c,"updateAppearance");function y({iframe:e,amount:n}){e?.contentWindow?.postMessage({type:"UPDATE_AMOUNT",amount:n},"*")}o(y,"updateAmount");function E({iframe:e,merchantName:n}){e?.contentWindow?.postMessage({type:"UPDATE_MERCHANT_NAME",merchantName:n},"*")}o(E,"updateMerchantName");function S({iframe:e}){const n=crypto.randomUUID();return new Promise(t=>{e?.contentWindow?.postMessage({type:"VALIDATE_FORM",requestId:n},"*");const i=setTimeout(()=>{window.removeEventListener("message",r),t(!1)},5e3);function r(a){a.data.type==="VALIDATE_FORM"&&a.data.requestId===n&&(window.removeEventListener("message",r),clearTimeout(i),t(a.data.isValid??!1))}o(r,"handleMessage"),window.addEventListener("message",r)})}o(S,"validateForm");function f({iframe:e,token:n}){const{payment_intent_id:t}=m(n).payload;e?.contentWindow?.postMessage({type:"CONFIRM_PAYMENT_INTENT",token:n,id:t??void 0},"*")}o(f,"confirmPaymentIntent");function O({iframe:e,token:n}){const{setup_intent_id:t}=m(n).payload;e?.contentWindow?.postMessage({type:"CONFIRM_SETUP_INTENT",token:n,id:t??void 0},"*")}o(O,"confirmSetupIntent");function C({iframe:e,errorMessage:n}){e?.contentWindow?.postMessage({type:"CONFIRMATION_FAILED",errorMessage:n},"*")}o(C,"sendConfirmationFailed");function I(e){return`${u(e)}/iframe/google-pay?token=${e}`}o(I,"getGooglePayButtonSrc");function M(){return"40px"}o(M,"getGooglePayButtonInitialHeight");function N(e,n){let t={...n};function i(){y({iframe:e,amount:t.amount})}o(i,"pushAmount");function r(){E({iframe:e,merchantName:t.merchantName})}o(r,"pushMerchantName");function a(s){switch(s.data.type){case"IFRAME_READY":l(e),c({iframe:e,appearance:t.appearance}),i(),r();break;case"UPDATE_HEIGHT":t.onHeightChange?.(s.data.height);break;case"UPDATE_APPEARANCE":c({iframe:e,appearance:s.data.appearance});break;case"UPDATED_APPEARANCE":t.onAppearanceReady?.();break;case"CREATE_PAYMENT_INTENT":t.onInitiatePaymentIntentRequest({paymentIntentCreateAttributes:s.data.paymentIntentCreateAttributes,customerCreateAttributes:s.data.customerCreateAttributes}).then(d=>{f({iframe:e,token:d})}).catch(d=>{C({iframe:e,errorMessage:d instanceof Error?d.message:"Unknown error"})});break;case"PAYMENT_INTENT_CONFIRMATION_SUCCEEDED":t.onPaymentIntentConfirmationSucceeded(s.data.paymentIntent);break;case"CONFIRMATION_FAILED":t.onConfirmationFailed(s.data.errorMessage);break}}return o(a,"handleMessage"),window.addEventListener("message",a),{update(s){const d="appearance"in s,p="amount"in s,w="merchantName"in s;t={...t,...s},d&&c({iframe:e,appearance:t.appearance}),p&&i(),w&&r()},destroy(){window.removeEventListener("message",a)}}}o(N,"attachGooglePayButtonListeners");function k({paymentData:e}){return{paymentMethod:{billing_address_attributes:{name:e.shippingAddress?.name,address_line1:e.shippingAddress?.address1,address_line2:e.shippingAddress?.address2,city:e.shippingAddress?.locality,state:e.shippingAddress?.administrativeArea,postal_code:e.shippingAddress?.postalCode,country:e.shippingAddress?.countryCode,email:e.email,phone:e.shippingAddress?.phoneNumber},card_profile_attributes:{wallet_provider:"googlepay",wallet_payload:e.paymentMethodData.tokenizationData.token,wallet_last4:e.paymentMethodData.info?.cardDetails,wallet_brand:(()=>{switch(e.paymentMethodData.info?.cardNetwork){case"AMEX":return"american_express";case"VISA":return"visa";case"MASTERCARD":return"master";case"DISCOVER":return"discover";default:return}})()}}}}o(k,"formatGooglePayPaymentData");function P(e,n={cardholderName:!1}){const t=Object.entries(n).filter(([,i])=>i).map(([i])=>i).join(",");return`${u(e)}/iframe/card?token=${e}&additionalFields=${t}`}o(P,"getCreditCardFormSrc");function _(e){return`${u(e)}/iframe/bank?token=${e}`}o(_,"getBankAccountFormSrc");function b(e={cardholderName:!1}){return e.cardholderName?"292px":"212px"}o(b,"getCreditCardFormInitialHeight");function T(){return"400px"}o(T,"getBankAccountFormInitialHeight");function g(e,n){let t={...n};function i(r){switch(r.data.type){case"IFRAME_READY":l(e),c({iframe:e,appearance:t.appearance});break;case"UPDATE_HEIGHT":t.onHeightChange?.(r.data.height);break;case"UPDATE_APPEARANCE":c({iframe:e,appearance:r.data.appearance});break;case"UPDATED_APPEARANCE":t.onAppearanceReady?.();break;case"PAYMENT_INTENT_CONFIRMATION_SUCCEEDED":t.onPaymentIntentConfirmationSucceeded?.(r.data.paymentIntent);break;case"SETUP_INTENT_CONFIRMATION_SUCCEEDED":t.onSetupIntentConfirmationSucceeded?.(r.data.setupIntent);break;case"CONFIRMATION_FAILED":t.onConfirmationFailed(r.data.errorMessage);break}}return o(i,"handleMessage"),window.addEventListener("message",i),{update(r){const a="appearance"in r;t={...t,...r},a&&c({iframe:e,appearance:t.appearance})},destroy(){window.removeEventListener("message",i)}}}o(g,"attachPaymentMethodFormListeners");function A(e){if(typeof e=="string"){const n=document.querySelector(e);if(!(n instanceof HTMLElement))throw new Error(`[amos-js] Container "${e}" did not match any HTMLElement.`);return n}return e}o(A,"resolveContainer");const D={width:"calc(100% + 8px)",transition:"opacity 150ms ease-in, height 200ms ease-in-out",margin:"0 -4px",opacity:"0",border:"0"};function h({src:e,title:n,name:t,height:i,allow:r}){const a=document.createElement("iframe");return a.src=e,a.title=n,a.name=t,a.setAttribute("role","presentation"),a.scrolling="no",r&&(a.allow=r),Object.assign(a.style,D,{height:i}),a}o(h,"createIframe");function H(e,n){const t=A(e),{renderToken:i,additionalFields:r={cardholderName:!1},...a}=n,s=h({src:P(i,r),title:"Secure credit card payment method form powered by Amos",name:"amos-credit-card-payment-method-form",height:b(r)});t.appendChild(s);const d=g(s,{...a,onHeightChange:o(p=>{s.style.height=p,a.onHeightChange?.(p)},"onHeightChange"),onAppearanceReady:o(()=>{s.style.opacity="1",a.onAppearanceReady?.()},"onAppearanceReady")});return{iframe:s,update:d.update,destroy(){d.destroy(),s.remove()}}}o(H,"mountAmosCreditCardPaymentMethodForm");function L(e,n){const t=A(e),{renderToken:i,...r}=n,a=h({src:_(i),title:"Secure bank account payment method form powered by Amos",name:"amos-bank-account-payment-method-form",height:T()});t.appendChild(a);const s=g(a,{...r,onHeightChange:o(d=>{a.style.height=d,r.onHeightChange?.(d)},"onHeightChange"),onAppearanceReady:o(()=>{a.style.opacity="1",r.onAppearanceReady?.()},"onAppearanceReady")});return{iframe:a,update:s.update,destroy(){s.destroy(),a.remove()}}}o(L,"mountAmosBankAccountPaymentMethodForm");function U(e,n){const t=A(e),{renderToken:i,...r}=n,a=h({src:I(i),title:"Secure Google Pay button powered by Amos",name:"amos-google-pay-button",height:M(),allow:"payment"});t.appendChild(a);const s=N(a,{...r,onHeightChange:o(d=>{a.style.height=d,r.onHeightChange?.(d)},"onHeightChange"),onAppearanceReady:o(()=>{a.style.opacity="1",r.onAppearanceReady?.()},"onAppearanceReady")});return{iframe:a,update:s.update,destroy(){s.destroy(),a.remove()}}}o(U,"mountAmosGooglePayButton");exports.attachGooglePayButtonListeners=N;exports.attachPaymentMethodFormListeners=g;exports.confirmPaymentIntent=f;exports.confirmSetupIntent=O;exports.createMessage=F;exports.decodeJwt=m;exports.formatGooglePayPaymentData=k;exports.getBankAccountFormInitialHeight=T;exports.getBankAccountFormSrc=_;exports.getCreditCardFormInitialHeight=b;exports.getCreditCardFormSrc=P;exports.getEmbedOrigin=u;exports.getGooglePayButtonInitialHeight=M;exports.getGooglePayButtonSrc=I;exports.mountAmosBankAccountPaymentMethodForm=L;exports.mountAmosCreditCardPaymentMethodForm=H;exports.mountAmosGooglePayButton=U;exports.sendConfirmationFailed=C;exports.sendParentReadyMessage=l;exports.updateAmount=y;exports.updateAppearance=c;exports.updateMerchantName=E;exports.validateForm=S;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){let[t=``,n=``,r=``]=e?.split(`.`)??[],i=typeof atob==`function`?atob:e=>Buffer.from(e,`base64`).toString(`utf8`);return{header:JSON.parse(i(t)),payload:JSON.parse(i(n)),signature:r}}function t(t){let{env:n=`sandbox`}=e(t).payload;switch(n){case`production`:return`https://embed.amos.com`;case`sandbox`:return`https://embed-sandbox.amos.com`;default:return`https://embed-sandbox.amos.com`}}function n(e){return e}function r(e){e?.contentWindow?.postMessage(n({type:`PARENT_ACKNOWLEDGED_IFRAME_READY`}),`*`)}function i({iframe:e,appearance:t={}}){e?.contentWindow?.postMessage(n({type:`UPDATE_APPEARANCE`,appearance:t}),`*`)}function a({iframe:e,amount:t}){e?.contentWindow?.postMessage(n({type:`UPDATE_AMOUNT`,amount:t}),`*`)}function o({iframe:e,merchantName:t}){e?.contentWindow?.postMessage(n({type:`UPDATE_MERCHANT_NAME`,merchantName:t}),`*`)}function s({iframe:e}){let t=crypto.randomUUID();return new Promise(r=>{e?.contentWindow?.postMessage(n({type:`VALIDATE_FORM`,requestId:t}),`*`);let i=setTimeout(()=>{window.removeEventListener(`message`,a),r(!1)},5e3);function a(e){e.data.type===`VALIDATE_FORM`&&e.data.requestId===t&&(window.removeEventListener(`message`,a),clearTimeout(i),r(e.data.isValid??!1))}window.addEventListener(`message`,a)})}function c({iframe:t,token:r}){let{payment_intent_id:i}=e(r).payload;t?.contentWindow?.postMessage(n({type:`CONFIRM_PAYMENT_INTENT`,token:r,id:i??void 0}),`*`)}function l({iframe:t,token:r}){let{setup_intent_id:i}=e(r).payload;t?.contentWindow?.postMessage(n({type:`CONFIRM_SETUP_INTENT`,token:r,id:i??void 0}),`*`)}function u({iframe:e,errorMessage:t}){e?.contentWindow?.postMessage(n({type:`CONFIRMATION_FAILED`,errorMessage:t}),`*`)}function d(e){return`${t(e)}/iframe/google-pay?token=${e}`}function f(){return`40px`}function p(e,t){let n={...t};function s(){a({iframe:e,amount:n.amount})}function l(){o({iframe:e,merchantName:n.merchantName})}function d(t){switch(t.data.type){case`IFRAME_READY`:r(e),i({iframe:e,appearance:n.appearance}),s(),l();break;case`UPDATE_HEIGHT`:n.onHeightChange?.(t.data.height);break;case`UPDATE_APPEARANCE`:i({iframe:e,appearance:t.data.appearance});break;case`UPDATED_APPEARANCE`:n.onAppearanceReady?.();break;case`CREATE_PAYMENT_INTENT`:n.onInitiatePaymentIntentRequest({paymentIntentCreateAttributes:t.data.paymentIntentCreateAttributes,customerCreateAttributes:t.data.customerCreateAttributes}).then(t=>{c({iframe:e,token:t})}).catch(t=>{u({iframe:e,errorMessage:t instanceof Error?t.message:`Unknown error`})});break;case`PAYMENT_INTENT_CONFIRMATION_SUCCEEDED`:n.onPaymentIntentConfirmationSucceeded(t.data.paymentIntent);break;case`CONFIRMATION_FAILED`:n.onConfirmationFailed(t.data.errorMessage);break}}return window.addEventListener(`message`,d),{update(t){let r=`appearance`in t,a=`amount`in t,o=`merchantName`in t;n={...n,...t},r&&i({iframe:e,appearance:n.appearance}),a&&s(),o&&l()},destroy(){window.removeEventListener(`message`,d)}}}function m({paymentData:e}){return{paymentMethod:{billing_address_attributes:{name:e.shippingAddress?.name,address_line1:e.shippingAddress?.address1,address_line2:e.shippingAddress?.address2,city:e.shippingAddress?.locality,state:e.shippingAddress?.administrativeArea,postal_code:e.shippingAddress?.postalCode,country:e.shippingAddress?.countryCode,email:e.email,phone:e.shippingAddress?.phoneNumber},card_profile_attributes:{wallet_provider:`googlepay`,wallet_payload:e.paymentMethodData.tokenizationData.token,wallet_last4:e.paymentMethodData.info?.cardDetails,wallet_brand:(()=>{switch(e.paymentMethodData.info?.cardNetwork){case`AMEX`:return`american_express`;case`VISA`:return`visa`;case`MASTERCARD`:return`master`;case`DISCOVER`:return`discover`;default:return}})()}}}}function h(e,n={cardholderName:!1}){let r=Object.entries(n).filter(([,e])=>e).map(([e])=>e).join(`,`);return`${t(e)}/iframe/card?token=${e}&additionalFields=${r}`}function g(e){return`${t(e)}/iframe/bank?token=${e}`}function _(e={cardholderName:!1}){return e.cardholderName?`292px`:`212px`}function v(){return`400px`}function y(e,t){let n={...t};function a(t){switch(t.data.type){case`IFRAME_READY`:r(e),i({iframe:e,appearance:n.appearance});break;case`UPDATE_HEIGHT`:n.onHeightChange?.(t.data.height);break;case`UPDATE_APPEARANCE`:i({iframe:e,appearance:t.data.appearance});break;case`UPDATED_APPEARANCE`:n.onAppearanceReady?.();break;case`PAYMENT_INTENT_CONFIRMATION_SUCCEEDED`:n.onPaymentIntentConfirmationSucceeded?.(t.data.paymentIntent);break;case`SETUP_INTENT_CONFIRMATION_SUCCEEDED`:n.onSetupIntentConfirmationSucceeded?.(t.data.setupIntent);break;case`CONFIRMATION_FAILED`:n.onConfirmationFailed(t.data.errorMessage);break}}return window.addEventListener(`message`,a),{update(t){let r=`appearance`in t;n={...n,...t},r&&i({iframe:e,appearance:n.appearance})},destroy(){window.removeEventListener(`message`,a)}}}function b(e){if(typeof e==`string`){let t=document.querySelector(e);if(!(t instanceof HTMLElement))throw Error(`[amos-js] Container "${e}" did not match any HTMLElement.`);return t}return e}var x={width:`calc(100% + 8px)`,transition:`opacity 150ms ease-in, height 200ms ease-in-out`,margin:`0 -4px`,opacity:`0`,border:`0`};function S({src:e,title:t,name:n,height:r,allow:i}){let a=document.createElement(`iframe`);return a.src=e,a.title=t,a.name=n,a.setAttribute(`role`,`presentation`),a.scrolling=`no`,i&&(a.allow=i),Object.assign(a.style,x,{height:r}),a}function C(e,t){let n=b(e),{renderToken:r,additionalFields:i={cardholderName:!1},...a}=t,o=S({src:h(r,i),title:`Secure credit card payment method form powered by Amos`,name:`amos-credit-card-payment-method-form`,height:_(i)});n.appendChild(o);let s=y(o,{...a,onHeightChange:e=>{o.style.height=e,a.onHeightChange?.(e)},onAppearanceReady:()=>{o.style.opacity=`1`,a.onAppearanceReady?.()}});return{iframe:o,update:s.update,destroy(){s.destroy(),o.remove()}}}function w(e,t){let n=b(e),{renderToken:r,...i}=t,a=S({src:g(r),title:`Secure bank account payment method form powered by Amos`,name:`amos-bank-account-payment-method-form`,height:v()});n.appendChild(a);let o=y(a,{...i,onHeightChange:e=>{a.style.height=e,i.onHeightChange?.(e)},onAppearanceReady:()=>{a.style.opacity=`1`,i.onAppearanceReady?.()}});return{iframe:a,update:o.update,destroy(){o.destroy(),a.remove()}}}function T(e,t){let n=b(e),{renderToken:r,...i}=t,a=S({src:d(r),title:`Secure Google Pay button powered by Amos`,name:`amos-google-pay-button`,height:f(),allow:`payment`});n.appendChild(a);let o=p(a,{...i,onHeightChange:e=>{a.style.height=e,i.onHeightChange?.(e)},onAppearanceReady:()=>{a.style.opacity=`1`,i.onAppearanceReady?.()}});return{iframe:a,update:o.update,destroy(){o.destroy(),a.remove()}}}exports.attachGooglePayButtonListeners=p,exports.attachPaymentMethodFormListeners=y,exports.confirmPaymentIntent=c,exports.confirmSetupIntent=l,exports.createMessage=n,exports.decodeJwt=e,exports.formatGooglePayPaymentData=m,exports.getBankAccountFormInitialHeight=v,exports.getBankAccountFormSrc=g,exports.getCreditCardFormInitialHeight=_,exports.getCreditCardFormSrc=h,exports.getEmbedOrigin=t,exports.getGooglePayButtonInitialHeight=f,exports.getGooglePayButtonSrc=d,exports.mountAmosBankAccountPaymentMethodForm=w,exports.mountAmosCreditCardPaymentMethodForm=C,exports.mountAmosGooglePayButton=T,exports.sendConfirmationFailed=u,exports.sendParentReadyMessage=r,exports.updateAmount=a,exports.updateAppearance=i,exports.updateMerchantName=o,exports.validateForm=s;
package/dist/index.mjs CHANGED
@@ -1,422 +1,357 @@
1
- var y = Object.defineProperty;
2
- var o = (e, n) => y(e, "name", { value: n, configurable: !0 });
3
- function u(e) {
4
- const [n = "", t = "", i = ""] = e?.split(".") ?? [], r = typeof atob == "function" ? atob : (a) => Buffer.from(a, "base64").toString("utf8");
5
- return {
6
- header: JSON.parse(r(n)),
7
- payload: JSON.parse(r(t)),
8
- signature: i
9
- };
1
+ //#region src/jwt.ts
2
+ function e(e) {
3
+ let [t = "", n = "", r = ""] = e?.split(".") ?? [], i = typeof atob == "function" ? atob : (e) => Buffer.from(e, "base64").toString("utf8");
4
+ return {
5
+ header: JSON.parse(i(t)),
6
+ payload: JSON.parse(i(n)),
7
+ signature: r
8
+ };
10
9
  }
11
- o(u, "decodeJwt");
12
- function m(e) {
13
- const { env: n = "sandbox" } = u(e).payload;
14
- switch (n) {
15
- case "production":
16
- return "https://embed.amos.com";
17
- case "sandbox":
18
- return "https://embed-sandbox.amos.com";
19
- default:
20
- return "https://embed-sandbox.amos.com";
21
- }
10
+ function t(t) {
11
+ let { env: n = "sandbox" } = e(t).payload;
12
+ switch (n) {
13
+ case "production": return "https://embed.amos.com";
14
+ case "sandbox": return "https://embed-sandbox.amos.com";
15
+ default: return "https://embed-sandbox.amos.com";
16
+ }
22
17
  }
23
- o(m, "getEmbedOrigin");
24
- function D(e) {
25
- return e;
18
+ //#endregion
19
+ //#region src/types.ts
20
+ function n(e) {
21
+ return e;
26
22
  }
27
- o(D, "createMessage");
28
- function h(e) {
29
- e?.contentWindow?.postMessage(
30
- { type: "PARENT_ACKNOWLEDGED_IFRAME_READY" },
31
- "*"
32
- );
23
+ //#endregion
24
+ //#region src/messaging.ts
25
+ function r(e) {
26
+ e?.contentWindow?.postMessage(n({ type: "PARENT_ACKNOWLEDGED_IFRAME_READY" }), "*");
33
27
  }
34
- o(h, "sendParentReadyMessage");
35
- function c({
36
- iframe: e,
37
- appearance: n = {}
38
- }) {
39
- e?.contentWindow?.postMessage(
40
- { type: "UPDATE_APPEARANCE", appearance: n },
41
- "*"
42
- );
28
+ function i({ iframe: e, appearance: t = {} }) {
29
+ e?.contentWindow?.postMessage(n({
30
+ type: "UPDATE_APPEARANCE",
31
+ appearance: t
32
+ }), "*");
43
33
  }
44
- o(c, "updateAppearance");
45
- function f({
46
- iframe: e,
47
- amount: n
48
- }) {
49
- e?.contentWindow?.postMessage(
50
- { type: "UPDATE_AMOUNT", amount: n },
51
- "*"
52
- );
34
+ function a({ iframe: e, amount: t }) {
35
+ e?.contentWindow?.postMessage(n({
36
+ type: "UPDATE_AMOUNT",
37
+ amount: t
38
+ }), "*");
53
39
  }
54
- o(f, "updateAmount");
55
- function C({
56
- iframe: e,
57
- merchantName: n
58
- }) {
59
- e?.contentWindow?.postMessage(
60
- { type: "UPDATE_MERCHANT_NAME", merchantName: n },
61
- "*"
62
- );
40
+ function o({ iframe: e, merchantName: t }) {
41
+ e?.contentWindow?.postMessage(n({
42
+ type: "UPDATE_MERCHANT_NAME",
43
+ merchantName: t
44
+ }), "*");
63
45
  }
64
- o(C, "updateMerchantName");
65
- function k({ iframe: e }) {
66
- const n = crypto.randomUUID();
67
- return new Promise((t) => {
68
- e?.contentWindow?.postMessage(
69
- { type: "VALIDATE_FORM", requestId: n },
70
- "*"
71
- );
72
- const i = setTimeout(() => {
73
- window.removeEventListener("message", r), t(!1);
74
- }, 5e3);
75
- function r(a) {
76
- a.data.type === "VALIDATE_FORM" && a.data.requestId === n && (window.removeEventListener("message", r), clearTimeout(i), t(a.data.isValid ?? !1));
77
- }
78
- o(r, "handleMessage"), window.addEventListener("message", r);
79
- });
46
+ function s({ iframe: e }) {
47
+ let t = crypto.randomUUID();
48
+ return new Promise((r) => {
49
+ e?.contentWindow?.postMessage(n({
50
+ type: "VALIDATE_FORM",
51
+ requestId: t
52
+ }), "*");
53
+ let i = setTimeout(() => {
54
+ window.removeEventListener("message", a), r(!1);
55
+ }, 5e3);
56
+ function a(e) {
57
+ e.data.type === "VALIDATE_FORM" && e.data.requestId === t && (window.removeEventListener("message", a), clearTimeout(i), r(e.data.isValid ?? !1));
58
+ }
59
+ window.addEventListener("message", a);
60
+ });
80
61
  }
81
- o(k, "validateForm");
82
- function N({
83
- iframe: e,
84
- token: n
85
- }) {
86
- const { payment_intent_id: t } = u(n).payload;
87
- e?.contentWindow?.postMessage(
88
- {
89
- type: "CONFIRM_PAYMENT_INTENT",
90
- token: n,
91
- id: t ?? void 0
92
- },
93
- "*"
94
- );
62
+ function c({ iframe: t, token: r }) {
63
+ let { payment_intent_id: i } = e(r).payload;
64
+ t?.contentWindow?.postMessage(n({
65
+ type: "CONFIRM_PAYMENT_INTENT",
66
+ token: r,
67
+ id: i ?? void 0
68
+ }), "*");
95
69
  }
96
- o(N, "confirmPaymentIntent");
97
- function S({
98
- iframe: e,
99
- token: n
100
- }) {
101
- const { setup_intent_id: t } = u(n).payload;
102
- e?.contentWindow?.postMessage(
103
- {
104
- type: "CONFIRM_SETUP_INTENT",
105
- token: n,
106
- id: t ?? void 0
107
- },
108
- "*"
109
- );
70
+ function l({ iframe: t, token: r }) {
71
+ let { setup_intent_id: i } = e(r).payload;
72
+ t?.contentWindow?.postMessage(n({
73
+ type: "CONFIRM_SETUP_INTENT",
74
+ token: r,
75
+ id: i ?? void 0
76
+ }), "*");
110
77
  }
111
- o(S, "confirmSetupIntent");
112
- function I({
113
- iframe: e,
114
- errorMessage: n
115
- }) {
116
- e?.contentWindow?.postMessage(
117
- {
118
- type: "CONFIRMATION_FAILED",
119
- errorMessage: n
120
- },
121
- "*"
122
- );
78
+ function u({ iframe: e, errorMessage: t }) {
79
+ e?.contentWindow?.postMessage(n({
80
+ type: "CONFIRMATION_FAILED",
81
+ errorMessage: t
82
+ }), "*");
123
83
  }
124
- o(I, "sendConfirmationFailed");
125
- function _(e) {
126
- return `${m(e)}/iframe/google-pay?token=${e}`;
84
+ //#endregion
85
+ //#region src/google-pay.ts
86
+ function d(e) {
87
+ return `${t(e)}/iframe/google-pay?token=${e}`;
127
88
  }
128
- o(_, "getGooglePayButtonSrc");
129
- function M() {
130
- return "40px";
89
+ function f() {
90
+ return "40px";
131
91
  }
132
- o(M, "getGooglePayButtonInitialHeight");
133
- function b(e, n) {
134
- let t = { ...n };
135
- function i() {
136
- f({ iframe: e, amount: t.amount });
137
- }
138
- o(i, "pushAmount");
139
- function r() {
140
- C({ iframe: e, merchantName: t.merchantName });
141
- }
142
- o(r, "pushMerchantName");
143
- function a(s) {
144
- switch (s.data.type) {
145
- case "IFRAME_READY":
146
- h(e), c({ iframe: e, appearance: t.appearance }), i(), r();
147
- break;
148
- case "UPDATE_HEIGHT":
149
- t.onHeightChange?.(s.data.height);
150
- break;
151
- case "UPDATE_APPEARANCE":
152
- c({ iframe: e, appearance: s.data.appearance });
153
- break;
154
- case "UPDATED_APPEARANCE":
155
- t.onAppearanceReady?.();
156
- break;
157
- case "CREATE_PAYMENT_INTENT":
158
- t.onInitiatePaymentIntentRequest({
159
- paymentIntentCreateAttributes: s.data.paymentIntentCreateAttributes,
160
- customerCreateAttributes: s.data.customerCreateAttributes
161
- }).then((d) => {
162
- N({ iframe: e, token: d });
163
- }).catch((d) => {
164
- I({
165
- iframe: e,
166
- errorMessage: d instanceof Error ? d.message : "Unknown error"
167
- });
168
- });
169
- break;
170
- case "PAYMENT_INTENT_CONFIRMATION_SUCCEEDED":
171
- t.onPaymentIntentConfirmationSucceeded(s.data.paymentIntent);
172
- break;
173
- case "CONFIRMATION_FAILED":
174
- t.onConfirmationFailed(s.data.errorMessage);
175
- break;
176
- }
177
- }
178
- return o(a, "handleMessage"), window.addEventListener("message", a), {
179
- update(s) {
180
- const d = "appearance" in s, p = "amount" in s, E = "merchantName" in s;
181
- t = { ...t, ...s }, d && c({ iframe: e, appearance: t.appearance }), p && i(), E && r();
182
- },
183
- destroy() {
184
- window.removeEventListener("message", a);
185
- }
186
- };
92
+ function p(e, t) {
93
+ let n = { ...t };
94
+ function s() {
95
+ a({
96
+ iframe: e,
97
+ amount: n.amount
98
+ });
99
+ }
100
+ function l() {
101
+ o({
102
+ iframe: e,
103
+ merchantName: n.merchantName
104
+ });
105
+ }
106
+ function d(t) {
107
+ switch (t.data.type) {
108
+ case "IFRAME_READY":
109
+ r(e), i({
110
+ iframe: e,
111
+ appearance: n.appearance
112
+ }), s(), l();
113
+ break;
114
+ case "UPDATE_HEIGHT":
115
+ n.onHeightChange?.(t.data.height);
116
+ break;
117
+ case "UPDATE_APPEARANCE":
118
+ i({
119
+ iframe: e,
120
+ appearance: t.data.appearance
121
+ });
122
+ break;
123
+ case "UPDATED_APPEARANCE":
124
+ n.onAppearanceReady?.();
125
+ break;
126
+ case "CREATE_PAYMENT_INTENT":
127
+ n.onInitiatePaymentIntentRequest({
128
+ paymentIntentCreateAttributes: t.data.paymentIntentCreateAttributes,
129
+ customerCreateAttributes: t.data.customerCreateAttributes
130
+ }).then((t) => {
131
+ c({
132
+ iframe: e,
133
+ token: t
134
+ });
135
+ }).catch((t) => {
136
+ u({
137
+ iframe: e,
138
+ errorMessage: t instanceof Error ? t.message : "Unknown error"
139
+ });
140
+ });
141
+ break;
142
+ case "PAYMENT_INTENT_CONFIRMATION_SUCCEEDED":
143
+ n.onPaymentIntentConfirmationSucceeded(t.data.paymentIntent);
144
+ break;
145
+ case "CONFIRMATION_FAILED":
146
+ n.onConfirmationFailed(t.data.errorMessage);
147
+ break;
148
+ }
149
+ }
150
+ return window.addEventListener("message", d), {
151
+ update(t) {
152
+ let r = "appearance" in t, a = "amount" in t, o = "merchantName" in t;
153
+ n = {
154
+ ...n,
155
+ ...t
156
+ }, r && i({
157
+ iframe: e,
158
+ appearance: n.appearance
159
+ }), a && s(), o && l();
160
+ },
161
+ destroy() {
162
+ window.removeEventListener("message", d);
163
+ }
164
+ };
187
165
  }
188
- o(b, "attachGooglePayButtonListeners");
189
- function H({
190
- paymentData: e
191
- }) {
192
- return {
193
- paymentMethod: {
194
- billing_address_attributes: {
195
- name: e.shippingAddress?.name,
196
- address_line1: e.shippingAddress?.address1,
197
- address_line2: e.shippingAddress?.address2,
198
- city: e.shippingAddress?.locality,
199
- state: e.shippingAddress?.administrativeArea,
200
- postal_code: e.shippingAddress?.postalCode,
201
- country: e.shippingAddress?.countryCode,
202
- email: e.email,
203
- phone: e.shippingAddress?.phoneNumber
204
- },
205
- card_profile_attributes: {
206
- wallet_provider: "googlepay",
207
- wallet_payload: e.paymentMethodData.tokenizationData.token,
208
- wallet_last4: e.paymentMethodData.info?.cardDetails,
209
- wallet_brand: (() => {
210
- switch (e.paymentMethodData.info?.cardNetwork) {
211
- case "AMEX":
212
- return "american_express";
213
- case "VISA":
214
- return "visa";
215
- case "MASTERCARD":
216
- return "master";
217
- case "DISCOVER":
218
- return "discover";
219
- default:
220
- return;
221
- }
222
- })()
223
- }
224
- }
225
- };
166
+ function m({ paymentData: e }) {
167
+ return { paymentMethod: {
168
+ billing_address_attributes: {
169
+ name: e.shippingAddress?.name,
170
+ address_line1: e.shippingAddress?.address1,
171
+ address_line2: e.shippingAddress?.address2,
172
+ city: e.shippingAddress?.locality,
173
+ state: e.shippingAddress?.administrativeArea,
174
+ postal_code: e.shippingAddress?.postalCode,
175
+ country: e.shippingAddress?.countryCode,
176
+ email: e.email,
177
+ phone: e.shippingAddress?.phoneNumber
178
+ },
179
+ card_profile_attributes: {
180
+ wallet_provider: "googlepay",
181
+ wallet_payload: e.paymentMethodData.tokenizationData.token,
182
+ wallet_last4: e.paymentMethodData.info?.cardDetails,
183
+ wallet_brand: (() => {
184
+ switch (e.paymentMethodData.info?.cardNetwork) {
185
+ case "AMEX": return "american_express";
186
+ case "VISA": return "visa";
187
+ case "MASTERCARD": return "master";
188
+ case "DISCOVER": return "discover";
189
+ default: return;
190
+ }
191
+ })()
192
+ }
193
+ } };
226
194
  }
227
- o(H, "formatGooglePayPaymentData");
228
- function T(e, n = { cardholderName: !1 }) {
229
- const t = Object.entries(n).filter(([, i]) => i).map(([i]) => i).join(",");
230
- return `${m(e)}/iframe/card?token=${e}&additionalFields=${t}`;
195
+ //#endregion
196
+ //#region src/payment-method-form.ts
197
+ function h(e, n = { cardholderName: !1 }) {
198
+ let r = Object.entries(n).filter(([, e]) => e).map(([e]) => e).join(",");
199
+ return `${t(e)}/iframe/card?token=${e}&additionalFields=${r}`;
231
200
  }
232
- o(T, "getCreditCardFormSrc");
233
- function P(e) {
234
- return `${m(e)}/iframe/bank?token=${e}`;
201
+ function g(e) {
202
+ return `${t(e)}/iframe/bank?token=${e}`;
235
203
  }
236
- o(P, "getBankAccountFormSrc");
237
- function w(e = { cardholderName: !1 }) {
238
- return e.cardholderName ? "292px" : "212px";
204
+ function _(e = { cardholderName: !1 }) {
205
+ return e.cardholderName ? "292px" : "212px";
239
206
  }
240
- o(w, "getCreditCardFormInitialHeight");
241
- function R() {
242
- return "400px";
207
+ function v() {
208
+ return "400px";
243
209
  }
244
- o(R, "getBankAccountFormInitialHeight");
245
- function g(e, n) {
246
- let t = { ...n };
247
- function i(r) {
248
- switch (r.data.type) {
249
- case "IFRAME_READY":
250
- h(e), c({ iframe: e, appearance: t.appearance });
251
- break;
252
- case "UPDATE_HEIGHT":
253
- t.onHeightChange?.(r.data.height);
254
- break;
255
- case "UPDATE_APPEARANCE":
256
- c({ iframe: e, appearance: r.data.appearance });
257
- break;
258
- case "UPDATED_APPEARANCE":
259
- t.onAppearanceReady?.();
260
- break;
261
- case "PAYMENT_INTENT_CONFIRMATION_SUCCEEDED":
262
- t.onPaymentIntentConfirmationSucceeded?.(
263
- r.data.paymentIntent
264
- );
265
- break;
266
- case "SETUP_INTENT_CONFIRMATION_SUCCEEDED":
267
- t.onSetupIntentConfirmationSucceeded?.(r.data.setupIntent);
268
- break;
269
- case "CONFIRMATION_FAILED":
270
- t.onConfirmationFailed(r.data.errorMessage);
271
- break;
272
- }
273
- }
274
- return o(i, "handleMessage"), window.addEventListener("message", i), {
275
- update(r) {
276
- const a = "appearance" in r;
277
- t = { ...t, ...r }, a && c({ iframe: e, appearance: t.appearance });
278
- },
279
- destroy() {
280
- window.removeEventListener("message", i);
281
- }
282
- };
210
+ function y(e, t) {
211
+ let n = { ...t };
212
+ function a(t) {
213
+ switch (t.data.type) {
214
+ case "IFRAME_READY":
215
+ r(e), i({
216
+ iframe: e,
217
+ appearance: n.appearance
218
+ });
219
+ break;
220
+ case "UPDATE_HEIGHT":
221
+ n.onHeightChange?.(t.data.height);
222
+ break;
223
+ case "UPDATE_APPEARANCE":
224
+ i({
225
+ iframe: e,
226
+ appearance: t.data.appearance
227
+ });
228
+ break;
229
+ case "UPDATED_APPEARANCE":
230
+ n.onAppearanceReady?.();
231
+ break;
232
+ case "PAYMENT_INTENT_CONFIRMATION_SUCCEEDED":
233
+ n.onPaymentIntentConfirmationSucceeded?.(t.data.paymentIntent);
234
+ break;
235
+ case "SETUP_INTENT_CONFIRMATION_SUCCEEDED":
236
+ n.onSetupIntentConfirmationSucceeded?.(t.data.setupIntent);
237
+ break;
238
+ case "CONFIRMATION_FAILED":
239
+ n.onConfirmationFailed(t.data.errorMessage);
240
+ break;
241
+ }
242
+ }
243
+ return window.addEventListener("message", a), {
244
+ update(t) {
245
+ let r = "appearance" in t;
246
+ n = {
247
+ ...n,
248
+ ...t
249
+ }, r && i({
250
+ iframe: e,
251
+ appearance: n.appearance
252
+ });
253
+ },
254
+ destroy() {
255
+ window.removeEventListener("message", a);
256
+ }
257
+ };
283
258
  }
284
- o(g, "attachPaymentMethodFormListeners");
285
- function l(e) {
286
- if (typeof e == "string") {
287
- const n = document.querySelector(e);
288
- if (!(n instanceof HTMLElement))
289
- throw new Error(
290
- `[amos-js] Container "${e}" did not match any HTMLElement.`
291
- );
292
- return n;
293
- }
294
- return e;
259
+ //#endregion
260
+ //#region src/mount.ts
261
+ function b(e) {
262
+ if (typeof e == "string") {
263
+ let t = document.querySelector(e);
264
+ if (!(t instanceof HTMLElement)) throw Error(`[amos-js] Container "${e}" did not match any HTMLElement.`);
265
+ return t;
266
+ }
267
+ return e;
295
268
  }
296
- o(l, "resolveContainer");
297
- const F = {
298
- width: "calc(100% + 8px)",
299
- transition: "opacity 150ms ease-in, height 200ms ease-in-out",
300
- margin: "0 -4px",
301
- opacity: "0",
302
- border: "0"
269
+ var x = {
270
+ width: "calc(100% + 8px)",
271
+ transition: "opacity 150ms ease-in, height 200ms ease-in-out",
272
+ margin: "0 -4px",
273
+ opacity: "0",
274
+ border: "0"
303
275
  };
304
- function A({
305
- src: e,
306
- title: n,
307
- name: t,
308
- height: i,
309
- allow: r
310
- }) {
311
- const a = document.createElement("iframe");
312
- return a.src = e, a.title = n, a.name = t, a.setAttribute("role", "presentation"), a.scrolling = "no", r && (a.allow = r), Object.assign(a.style, F, { height: i }), a;
276
+ function S({ src: e, title: t, name: n, height: r, allow: i }) {
277
+ let a = document.createElement("iframe");
278
+ return a.src = e, a.title = t, a.name = n, a.setAttribute("role", "presentation"), a.scrolling = "no", i && (a.allow = i), Object.assign(a.style, x, { height: r }), a;
313
279
  }
314
- o(A, "createIframe");
315
- function L(e, n) {
316
- const t = l(e), {
317
- renderToken: i,
318
- additionalFields: r = { cardholderName: !1 },
319
- ...a
320
- } = n, s = A({
321
- src: T(i, r),
322
- title: "Secure credit card payment method form powered by Amos",
323
- name: "amos-credit-card-payment-method-form",
324
- height: w(r)
325
- });
326
- t.appendChild(s);
327
- const d = g(s, {
328
- ...a,
329
- onHeightChange: /* @__PURE__ */ o((p) => {
330
- s.style.height = p, a.onHeightChange?.(p);
331
- }, "onHeightChange"),
332
- onAppearanceReady: /* @__PURE__ */ o(() => {
333
- s.style.opacity = "1", a.onAppearanceReady?.();
334
- }, "onAppearanceReady")
335
- });
336
- return {
337
- iframe: s,
338
- update: d.update,
339
- destroy() {
340
- d.destroy(), s.remove();
341
- }
342
- };
280
+ function C(e, t) {
281
+ let n = b(e), { renderToken: r, additionalFields: i = { cardholderName: !1 }, ...a } = t, o = S({
282
+ src: h(r, i),
283
+ title: "Secure credit card payment method form powered by Amos",
284
+ name: "amos-credit-card-payment-method-form",
285
+ height: _(i)
286
+ });
287
+ n.appendChild(o);
288
+ let s = y(o, {
289
+ ...a,
290
+ onHeightChange: (e) => {
291
+ o.style.height = e, a.onHeightChange?.(e);
292
+ },
293
+ onAppearanceReady: () => {
294
+ o.style.opacity = "1", a.onAppearanceReady?.();
295
+ }
296
+ });
297
+ return {
298
+ iframe: o,
299
+ update: s.update,
300
+ destroy() {
301
+ s.destroy(), o.remove();
302
+ }
303
+ };
343
304
  }
344
- o(L, "mountAmosCreditCardPaymentMethodForm");
345
- function U(e, n) {
346
- const t = l(e), { renderToken: i, ...r } = n, a = A({
347
- src: P(i),
348
- title: "Secure bank account payment method form powered by Amos",
349
- name: "amos-bank-account-payment-method-form",
350
- height: R()
351
- });
352
- t.appendChild(a);
353
- const s = g(a, {
354
- ...r,
355
- onHeightChange: /* @__PURE__ */ o((d) => {
356
- a.style.height = d, r.onHeightChange?.(d);
357
- }, "onHeightChange"),
358
- onAppearanceReady: /* @__PURE__ */ o(() => {
359
- a.style.opacity = "1", r.onAppearanceReady?.();
360
- }, "onAppearanceReady")
361
- });
362
- return {
363
- iframe: a,
364
- update: s.update,
365
- destroy() {
366
- s.destroy(), a.remove();
367
- }
368
- };
305
+ function w(e, t) {
306
+ let n = b(e), { renderToken: r, ...i } = t, a = S({
307
+ src: g(r),
308
+ title: "Secure bank account payment method form powered by Amos",
309
+ name: "amos-bank-account-payment-method-form",
310
+ height: v()
311
+ });
312
+ n.appendChild(a);
313
+ let o = y(a, {
314
+ ...i,
315
+ onHeightChange: (e) => {
316
+ a.style.height = e, i.onHeightChange?.(e);
317
+ },
318
+ onAppearanceReady: () => {
319
+ a.style.opacity = "1", i.onAppearanceReady?.();
320
+ }
321
+ });
322
+ return {
323
+ iframe: a,
324
+ update: o.update,
325
+ destroy() {
326
+ o.destroy(), a.remove();
327
+ }
328
+ };
369
329
  }
370
- o(U, "mountAmosBankAccountPaymentMethodForm");
371
- function x(e, n) {
372
- const t = l(e), { renderToken: i, ...r } = n, a = A({
373
- src: _(i),
374
- title: "Secure Google Pay button powered by Amos",
375
- name: "amos-google-pay-button",
376
- height: M(),
377
- allow: "payment"
378
- });
379
- t.appendChild(a);
380
- const s = b(a, {
381
- ...r,
382
- onHeightChange: /* @__PURE__ */ o((d) => {
383
- a.style.height = d, r.onHeightChange?.(d);
384
- }, "onHeightChange"),
385
- onAppearanceReady: /* @__PURE__ */ o(() => {
386
- a.style.opacity = "1", r.onAppearanceReady?.();
387
- }, "onAppearanceReady")
388
- });
389
- return {
390
- iframe: a,
391
- update: s.update,
392
- destroy() {
393
- s.destroy(), a.remove();
394
- }
395
- };
330
+ function T(e, t) {
331
+ let n = b(e), { renderToken: r, ...i } = t, a = S({
332
+ src: d(r),
333
+ title: "Secure Google Pay button powered by Amos",
334
+ name: "amos-google-pay-button",
335
+ height: f(),
336
+ allow: "payment"
337
+ });
338
+ n.appendChild(a);
339
+ let o = p(a, {
340
+ ...i,
341
+ onHeightChange: (e) => {
342
+ a.style.height = e, i.onHeightChange?.(e);
343
+ },
344
+ onAppearanceReady: () => {
345
+ a.style.opacity = "1", i.onAppearanceReady?.();
346
+ }
347
+ });
348
+ return {
349
+ iframe: a,
350
+ update: o.update,
351
+ destroy() {
352
+ o.destroy(), a.remove();
353
+ }
354
+ };
396
355
  }
397
- o(x, "mountAmosGooglePayButton");
398
- export {
399
- b as attachGooglePayButtonListeners,
400
- g as attachPaymentMethodFormListeners,
401
- N as confirmPaymentIntent,
402
- S as confirmSetupIntent,
403
- D as createMessage,
404
- u as decodeJwt,
405
- H as formatGooglePayPaymentData,
406
- R as getBankAccountFormInitialHeight,
407
- P as getBankAccountFormSrc,
408
- w as getCreditCardFormInitialHeight,
409
- T as getCreditCardFormSrc,
410
- m as getEmbedOrigin,
411
- M as getGooglePayButtonInitialHeight,
412
- _ as getGooglePayButtonSrc,
413
- U as mountAmosBankAccountPaymentMethodForm,
414
- L as mountAmosCreditCardPaymentMethodForm,
415
- x as mountAmosGooglePayButton,
416
- I as sendConfirmationFailed,
417
- h as sendParentReadyMessage,
418
- f as updateAmount,
419
- c as updateAppearance,
420
- C as updateMerchantName,
421
- k as validateForm
422
- };
356
+ //#endregion
357
+ export { p as attachGooglePayButtonListeners, y as attachPaymentMethodFormListeners, c as confirmPaymentIntent, l as confirmSetupIntent, n as createMessage, e as decodeJwt, m as formatGooglePayPaymentData, v as getBankAccountFormInitialHeight, g as getBankAccountFormSrc, _ as getCreditCardFormInitialHeight, h as getCreditCardFormSrc, t as getEmbedOrigin, f as getGooglePayButtonInitialHeight, d as getGooglePayButtonSrc, w as mountAmosBankAccountPaymentMethodForm, C as mountAmosCreditCardPaymentMethodForm, T as mountAmosGooglePayButton, u as sendConfirmationFailed, r as sendParentReadyMessage, a as updateAmount, i as updateAppearance, o as updateMerchantName, s as validateForm };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amos.com/amos-js",
3
- "version": "0.3.5",
3
+ "version": "0.3.6",
4
4
  "main": "dist/index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -34,15 +34,15 @@
34
34
  "author": "Amos",
35
35
  "description": "Amos JavaScript SDK for embedding payment methods via iframes.",
36
36
  "devDependencies": {
37
- "@changesets/cli": "2.31.0",
38
37
  "@biomejs/biome": "2.4.15",
38
+ "@changesets/cli": "2.31.0",
39
39
  "@types/node": "25.9.1",
40
40
  "typescript": "6.0.3",
41
- "vite": "7.3.3",
41
+ "vite": "^8.0.16",
42
42
  "vite-plugin-dts": "4.5.4"
43
43
  },
44
44
  "dependencies": {
45
- "@amos.com/node": "0.1.10",
45
+ "@amos.com/node": "0.1.11",
46
46
  "@types/googlepay": "0.7.10"
47
47
  },
48
48
  "peerDependencies": {