@nevermined-io/ui-widgets 1.31.0 → 1.33.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.
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +10 -1
- package/dist/widgets/checkout.d.ts +22 -0
- package/dist/widgets/checkout.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export { WidgetMessageType, WIDGET_MESSAGE_VERSION, createMessage, parseMessage,
|
|
|
8
8
|
export { WidgetApiError, WidgetInitError, WidgetSessionExpiredError } from './utils/errors.js';
|
|
9
9
|
export type { WidgetConfig, WidgetSession, WidgetAccount, Environment, EmbedError, WidgetSuccessHandle, WidgetSuccessEvent, } from './types.js';
|
|
10
10
|
export type { IframeOptions } from './iframe-manager.js';
|
|
11
|
-
export type { CheckoutOptions, CheckoutResult } from './widgets/checkout.js';
|
|
11
|
+
export type { CheckoutOptions, CheckoutResult, OrderCheckoutOptions, OrderCheckoutResult, PlanCheckoutOptions, PlanCheckoutResult, } from './widgets/checkout.js';
|
|
12
12
|
export type { CardAction, CreateDelegationOptions, CreateDelegationResult, EnrollCardOptions, EnrollCardProvider, EnrollCardResult, ListCardsOptions, SetupCardOptions, SetupCardResult, WidgetIframeCss, } from './widgets/delegations.js';
|
|
13
13
|
export type { WidgetMessage, ParseResult } from './messages.js';
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,YAAY,GACb,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAC9F,YAAY,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,YAAY,GACb,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAC9F,YAAY,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,YAAY,EACV,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EACV,UAAU,EACV,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.NeverminedWidgets={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=[`local`,`sandbox`,`live`,`staging_sandbox`,`staging_live`],n={local:`http://localhost:3001`,sandbox:`https://api.sandbox.nevermined.app`,live:`https://api.live.nevermined.app`,staging_sandbox:`https://api.sandbox.nevermined.dev`,staging_live:`https://api.live.nevermined.dev`},r={local:`http://localhost:4250`,sandbox:`https://embed.nevermined.app`,live:`https://embed.nevermined.app`,staging_sandbox:`https://embed.nevermined.dev`,staging_live:`https://embed.nevermined.dev`};function i(e){return n[e]}function a(e){return r[e]}var o={local:`sandbox`,sandbox:`sandbox`,live:`live`,staging_sandbox:`sandbox`,staging_live:`live`};function s(e){return o[e]}var c={MISSING_SESSION:{numericCode:`WDG.0001`,message:`session is required — pass the WidgetSession returned by createWidgetSession on the backend`},INVALID_ENVIRONMENT:{numericCode:`WDG.0002`,message:`environment must be one of: sandbox, live, staging_sandbox, staging_live, local`},INVALID_SESSION:{numericCode:`WDG.0003`,message:`session is missing required fields`},SESSION_EXPIRED:{numericCode:`WDG.0006`,message:`Widget session has expired`}},l=class extends Error{code;constructor(e,t,n){super(t??c[e].message,{cause:n}),this.code=e,this.name=`WidgetInitError`}},u=class extends Error{code=`SESSION_EXPIRED`;constructor(){super(c.SESSION_EXPIRED.message),this.name=`WidgetSessionExpiredError`}},d=class extends Error{status;apiCode;constructor(e,t,n){super(e),this.status=t,this.apiCode=n,this.name=`WidgetApiError`}},f=.8,p=class{session;expiresMs;timer=null;constructor(e){this.session=e,this.expiresMs=new Date(e.expiresAt).getTime(),Number.isNaN(this.expiresMs)&&console.warn(`[SessionManager] malformed expiresAt, session will be treated as expired:`,e.expiresAt)}isValid(){return!Number.isNaN(this.expiresMs)&&this.expiresMs>Date.now()}getToken(){return this.session.sessionToken}getSession(){return this.session}startAutoRefresh(e,t){if(this.stopAutoRefresh(),!this.isValid()){t();return}let n=Math.max(0,Math.floor((this.expiresMs-Date.now())*f));this.timer=setTimeout(()=>{this.timer=null,e().then(n=>{if(this.session=n,this.expiresMs=new Date(n.expiresAt).getTime(),!this.isValid()){t();return}this.startAutoRefresh(e,t)},e=>{console.error(`[SessionManager] session refresh failed:`,e),t()})},n)}stopAutoRefresh(){this.timer!==null&&(clearTimeout(this.timer),this.timer=null)}},m=class{listeners=new Map;on(e,t){let n=this.listeners.get(e)??new Set;return n.add(t),this.listeners.set(e,n),this}off(e,t){let n=this.listeners.get(e);return n?(n.delete(t),n.size===0&&this.listeners.delete(e),this):this}once(e,t){let n=r=>{this.off(e,n),t(r)};return this.on(e,n)}removeAllListeners(e){return e===void 0?this.listeners.clear():this.listeners.delete(e),this}emit(e,t){let n=this.listeners.get(e);n&&[...n].forEach(e=>{try{e(t)}catch(e){console.error(`[TypedEventEmitter] Handler threw:`,e)}})}},h=function(e){return e.INIT=`nvm:init`,e.CLOSE=`nvm:close`,e.BOOTED=`nvm:booted`,e.READY=`nvm:ready`,e.RESIZE=`nvm:resize`,e.SUCCESS=`nvm:success`,e.ERROR=`nvm:error`,e.CARD_ACTION=`nvm:card-action`,e}({}),g=`1`,_=`1`;function v(e){return typeof e==`string`&&Object.values(h).includes(e)}function y(e,t){return{type:e,version:_,payload:t}}function b(e){if(typeof e!=`object`||!e)return{ok:!1,reason:`not an object`};let t=e;return v(t.type)?t.version===_?{ok:!0,message:{type:t.type,version:t.version,payload:t.payload}}:{ok:!1,reason:`version mismatch: received "${t.version}", expected "${_}"`}:{ok:!1,reason:typeof t.type==`string`&&t.type.startsWith(`nvm:`)?`unknown nvm: type "${t.type}"`:`missing or unknown type`}}function x(e,t,n){return Math.max(t,Math.min(n,Math.round(e)))}var S=class{expectedOrigin;iframe=null;messageHandlers=new Set;protocolErrorHandlers=new Set;messageListener=null;destroyed=!1;constructor(e){if(this.expectedOrigin=e,e===`*`)throw Error(`[IframeManager] Wildcard origin "*" is not allowed — pass an explicit origin`)}create(e,t){this.iframe?.remove();let n=document.createElement(`iframe`);if(n.src=e,n.style.display=`block`,n.setAttribute(`allow`,`payment *`),n.setAttribute(`sandbox`,`allow-scripts allow-same-origin allow-forms allow-popups allow-popups-to-escape-sandbox allow-top-navigation-by-user-activation`),!t?.container)n.style.width=`100%`,n.style.height=`100%`,n.style.border=`none`,n.style.position=`fixed`,n.style.top=`0`,n.style.left=`0`,n.style.right=`0`,n.style.bottom=`0`,n.style.zIndex=`9999`;else{let e=x(t.width??480,440,720),r=x(t.height??720,640,960);n.style.width=`${e}px`,n.style.height=`${r}px`,n.style.border=`1px solid #e5e7eb`,n.style.borderRadius=`8px`,n.style.boxSizing=`border-box`}return t?.style&&Object.assign(n.style,t.style),(t?.container??document.body).appendChild(n),this.iframe=n,n}destroy(){this.destroyed=!0,this.messageListener&&=(window.removeEventListener(`message`,this.messageListener),null),this.messageHandlers.clear(),this.protocolErrorHandlers.clear(),this.iframe?.remove(),this.iframe=null}postMessage(e){this.destroyed||this.iframe?.contentWindow?.postMessage(e,this.expectedOrigin)}onMessage(e){return this.destroyed?()=>void 0:(this.messageHandlers.add(e),this.ensureListener(),()=>this.messageHandlers.delete(e))}onProtocolError(e){return this.destroyed?()=>void 0:(this.protocolErrorHandlers.add(e),this.ensureListener(),()=>this.protocolErrorHandlers.delete(e))}ensureListener(){this.messageListener||(this.messageListener=e=>{if(e.origin!==this.expectedOrigin)return;let t=b(e.data);if(!t.ok){console.warn(`[IframeManager] Discarding message from ${this.expectedOrigin}: ${t.reason}`),this.protocolErrorHandlers.forEach(e=>{try{e(t.reason)}catch(e){console.error(`[IframeManager] Protocol error handler threw:`,e)}});return}this.messageHandlers.forEach(e=>{try{e(t.message)}catch(e){console.error(`[IframeManager] Message handler threw:`,e)}})},window.addEventListener(`message`,this.messageListener))}},C={code:`UNKNOWN`,message:`Unknown widget error`},w=class{session;embedBase;embedNetwork;manager=null;destroyed=!1;constructor(e,t,n){this.session=e,this.embedBase=t,this.embedNetwork=n}start(e){if(this.destroyed)throw Error(`[CheckoutWidget] cannot start: instance has been destroyed`);if(!e.did||typeof e.did!=`string`)throw Error(`[CheckoutWidget] did is required`);let t=new URL(`/checkout/${encodeURIComponent(e.did)}`,this.embedBase);e.planId&&t.searchParams.set(`planId`,e.planId),this.mount(t,e,t=>({did:t.did??e.did,planId:t.planId??e.planId,txHash:t.txHash}),e.onSuccess)}startPlan(e){if(this.destroyed)throw Error(`[CheckoutWidget] cannot start: instance has been destroyed`);if(!e.planId||typeof e.planId!=`string`)throw Error(`[CheckoutWidget] planId is required`);let t=new URL(`/checkout/plan/${encodeURIComponent(e.planId)}`,this.embedBase);this.mount(t,e,t=>({planId:t.planId??e.planId,txHash:t.txHash}),e.onSuccess)}destroy(){this.destroyed=!0,this.manager?.destroy(),this.manager=null}closeFromIframe(e,t){this.destroyed||this.manager!==t||(this.destroy(),e.onClose?.())}buildSuccessHandle(e,t){return{close:()=>this.closeFromIframe(e,t)}}mount(e,t,n,r){this.manager?.destroy();let i=new URL(this.embedBase).origin;e.searchParams.set(`parentOrigin`,window.location.origin),e.searchParams.set(`network`,this.embedNetwork);let a=new S(i);this.manager=a,a.create(e.toString(),{container:t.container,width:t.width,height:t.height}),a.onMessage(e=>this.handleMessage(e,t,a,n,r))}handleMessage(e,t,n,r,i){switch(e.type){case h.BOOTED:this.manager?.postMessage(y(h.INIT,{sessionToken:this.session.getToken()})),t.onBooted?.();return;case h.READY:t.onReady?.();return;case h.SUCCESS:{let a=r(e.payload!=null&&typeof e.payload==`object`?e.payload:{});i?.({result:a,handle:this.buildSuccessHandle(t,n)});return}case h.ERROR:{let n=e.payload;t.onError?.(n?.error??C);return}case h.CLOSE:this.closeFromIframe(t,n);return;default:return}}},T={code:`UNKNOWN`,message:`Unknown widget error`},E={code:`UNKNOWN`,message:`Malformed nvm:success payload — paymentMethodId missing or invalid`},D={code:`UNKNOWN`,message:`Malformed nvm:success payload — delegationId missing or invalid`},O={code:`UNKNOWN`,message:`Malformed nvm:success payload — paymentMethodId or delegationId missing or invalid`};function k(e){return typeof e==`string`&&e.length>0}var A=/^0x[a-fA-F0-9]{40}$/;function j(e){return e&&A.test(e)?`crypto`:`card`}var M=4096;function N(e,t){if(!t||Object.keys(t).length===0)return{provider:e};let n=JSON.stringify(t);if(n.length>M)throw Error(`[DelegationsWidget] iframeCss is too large (max ${M} bytes once JSON-encoded)`);return{provider:e,iframeCss:n}}var P=class{session;embedBase;apiBase;embedNetwork;manager=null;destroyed=!1;constructor(e,t,n,r){this.session=e,this.embedBase=t,this.apiBase=n,this.embedNetwork=r}enrollCard(e){this.assertAlive(`enrollCard`);let t=e.provider??`stripe`,n=this.mountIframe(`/cards/enroll`,e.container,N(t,e.iframeCss),{width:e.width,height:e.height});n.onMessage(t=>this.handleEnrollMessage(t,e,n))}listCards(e){this.assertAlive(`listCards`);let t=this.mountIframe(`/cards/list`,e.container,void 0,{width:e.width,height:e.height});t.onMessage(n=>this.handleListMessage(n,e,t))}createDelegation(e){this.assertAlive(`createDelegation`);let t=e.provider??j(e.paymentMethodId);if(t===`card`&&(typeof e.paymentMethodId!=`string`||e.paymentMethodId.length===0))throw Error(`[DelegationsWidget] createDelegation: paymentMethodId is required for provider 'card'`);let n=this.mountIframe(`/cards/delegate`,e.container,{provider:t,...t===`card`&&e.paymentMethodId?{paymentMethodId:e.paymentMethodId}:{}},{width:e.width,height:e.height});n.onMessage(t=>this.handleCreateDelegationMessage(t,e,n))}setupCard(e){this.assertAlive(`setupCard`);let t=e.provider??`stripe`,n=this.mountIframe(`/cards/setup`,e.container,N(t,e.iframeCss),{width:e.width,height:e.height});n.onMessage(t=>this.handleSetupMessage(t,e,n))}async revokeCard(e){if(typeof e!=`string`||e.length===0)throw Error(`[DelegationsWidget] revokeCard: paymentMethodId is required`);await this.deleteWithSession(`${this.apiBase}/api/v1/widgets/payment-methods/${encodeURIComponent(e)}`,`Failed to revoke payment method`)}async revokeDelegation(e){if(typeof e!=`string`||e.length===0)throw Error(`[DelegationsWidget] revokeDelegation: delegationId is required`);await this.deleteWithSession(`${this.apiBase}/api/v1/widgets/delegation/${encodeURIComponent(e)}`,`Failed to revoke delegation`)}destroy(){this.destroyed=!0,this.manager?.destroy(),this.manager=null}assertAlive(e){if(this.destroyed)throw Error(`[DelegationsWidget] cannot ${e}: instance has been destroyed`)}mountIframe(e,t,n={},r={}){this.manager?.destroy();let i=new URL(this.embedBase).origin,a=window.location.origin,o=new URL(e,this.embedBase);o.searchParams.set(`parentOrigin`,a),o.searchParams.set(`network`,this.embedNetwork);for(let[e,t]of Object.entries(n))o.searchParams.set(e,t);let s=new S(i);return this.manager=s,s.create(o.toString(),{container:t,width:r.width,height:r.height}),s}postInitOnBooted(){this.manager?.postMessage(y(h.INIT,{sessionToken:this.session.getToken()}))}dispatchLifecycle(e,t,n){switch(e.type){case h.BOOTED:this.postInitOnBooted(),t.onBooted?.();return;case h.READY:t.onReady?.();return;case h.ERROR:{let n=e.payload;t.onError?.(n?.error??T);return}case h.CLOSE:this.closeFromIframe(t,n);return;default:return}}handleEnrollMessage(e,t,n){if(e.type===h.SUCCESS){let r=e.payload??{};if(!k(r.paymentMethodId)){t.onError?.(E);return}t.onSuccess?.({result:{paymentMethodId:r.paymentMethodId},handle:this.buildSuccessHandle(t,n)});return}this.dispatchLifecycle(e,t,n)}handleListMessage(e,t,n){if(e.type===h.CARD_ACTION){let n=e.payload??{};if(n.action!==`delegate`&&n.action!==`revoked`||!k(n.paymentMethodId))return;t.onCardAction?.({action:n.action,paymentMethodId:n.paymentMethodId});return}this.dispatchLifecycle(e,t,n)}handleCreateDelegationMessage(e,t,n){if(e.type===h.SUCCESS){let r=e.payload??{};if(!k(r.delegationId)){t.onError?.(D);return}t.onSuccess?.({result:{delegationId:r.delegationId,paymentMethodId:t.paymentMethodId},handle:this.buildSuccessHandle(t,n)});return}this.dispatchLifecycle(e,t,n)}handleSetupMessage(e,t,n){if(e.type===h.SUCCESS){let r=e.payload??{};if(!k(r.paymentMethodId)||!k(r.delegationId)){t.onError?.(O);return}t.onSuccess?.({result:{paymentMethodId:r.paymentMethodId,delegationId:r.delegationId},handle:this.buildSuccessHandle(t,n)});return}this.dispatchLifecycle(e,t,n)}closeFromIframe(e,t){this.destroyed||this.manager!==t||(this.destroy(),e.onClose?.())}buildSuccessHandle(e,t){return{close:()=>this.closeFromIframe(e,t)}}async deleteWithSession(e,t){let n;try{n=await fetch(e,{method:`DELETE`,headers:{Authorization:`Bearer ${this.session.getToken()}`,Accept:`application/json`}})}catch(e){throw new d(e instanceof Error&&e.message?e.message:t)}if(n.ok)return;let r,i=t;try{let e=await n.json();typeof e?.message==`string`&&e.message.length>0&&(i=e.message),typeof e?.code==`string`&&(r=e.code)}catch{}throw new d(i,n.status,r)}};function F(e){if(typeof e!=`object`||!e)return!1;let t=e;return[`sessionToken`,`userId`,`expiresAt`,`apiKeyHash`].every(e=>typeof t[e]==`string`)&&typeof t.userWallet==`string`&&t.userWallet.startsWith(`0x`)}var I=class e{sessionManager;_account;environment;_checkout=null;_delegations=null;events=new m;constructor(e,t,n){this.sessionManager=e,this._account=t,this.environment=n}static async initialize(n){let{session:r,environment:i}=n;if(!r||typeof r!=`object`)throw new l(`MISSING_SESSION`);if(!i||!t.includes(i))throw new l(`INVALID_ENVIRONMENT`);if(!F(r))throw new l(`INVALID_SESSION`);let a=new p(r),o=new e(a,{userId:r.userId,userWallet:r.userWallet},i);return a.startAutoRefresh(()=>o.refreshSession(),()=>o.events.emit(`session-expired`,void 0)),o}async refreshSession(){let e=await fetch(`${i(this.environment)}/api/v1/widgets/session/refresh`,{method:`POST`,headers:{Authorization:`Bearer ${this.sessionManager.getToken()}`}});if(!e.ok)throw Error(`Session refresh failed with status ${e.status}`);let t=await e.json();if(!F(t))throw Error(`Session refresh returned an invalid response`);return t}on(e,t){return this.events.on(e,t),this}off(e,t){return this.events.off(e,t),this}get account(){return this._account}get hasValidSession(){return this.sessionManager.isValid()}getSessionToken(){if(!this.sessionManager.isValid())throw new u;return this.sessionManager.getToken()}get checkout(){return this._checkout||=new w(this.sessionManager,a(this.environment),s(this.environment)),this._checkout}get delegations(){return this._delegations||=new P(this.sessionManager,a(this.environment),i(this.environment),s(this.environment)),this._delegations}destroy(){this.sessionManager.stopAutoRefresh(),this._checkout?.destroy(),this._checkout=null,this._delegations?.destroy(),this._delegations=null,this.events.removeAllListeners()}};e.CheckoutWidget=w,e.DelegationsWidget=P,e.IframeManager=S,e.NeverminedWidgets=I,e.SessionManager=p,e.TypedEventEmitter=m,e.WIDGET_MESSAGE_VERSION=g,e.WidgetApiError=d,e.WidgetInitError=l,e.WidgetMessageType=h,e.WidgetSessionExpiredError=u,e.createMessage=y,e.parseMessage=b});
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.NeverminedWidgets={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=[`local`,`sandbox`,`live`,`staging_sandbox`,`staging_live`],n={local:`http://localhost:3001`,sandbox:`https://api.sandbox.nevermined.app`,live:`https://api.live.nevermined.app`,staging_sandbox:`https://api.sandbox.nevermined.dev`,staging_live:`https://api.live.nevermined.dev`},r={local:`http://localhost:4250`,sandbox:`https://embed.nevermined.app`,live:`https://embed.nevermined.app`,staging_sandbox:`https://embed.nevermined.dev`,staging_live:`https://embed.nevermined.dev`};function i(e){return n[e]}function a(e){return r[e]}var o={local:`sandbox`,sandbox:`sandbox`,live:`live`,staging_sandbox:`sandbox`,staging_live:`live`};function s(e){return o[e]}var c={MISSING_SESSION:{numericCode:`WDG.0001`,message:`session is required — pass the WidgetSession returned by createWidgetSession on the backend`},INVALID_ENVIRONMENT:{numericCode:`WDG.0002`,message:`environment must be one of: sandbox, live, staging_sandbox, staging_live, local`},INVALID_SESSION:{numericCode:`WDG.0003`,message:`session is missing required fields`},SESSION_EXPIRED:{numericCode:`WDG.0006`,message:`Widget session has expired`}},l=class extends Error{code;constructor(e,t,n){super(t??c[e].message,{cause:n}),this.code=e,this.name=`WidgetInitError`}},u=class extends Error{code=`SESSION_EXPIRED`;constructor(){super(c.SESSION_EXPIRED.message),this.name=`WidgetSessionExpiredError`}},d=class extends Error{status;apiCode;constructor(e,t,n){super(e),this.status=t,this.apiCode=n,this.name=`WidgetApiError`}},f=.8,p=class{session;expiresMs;timer=null;constructor(e){this.session=e,this.expiresMs=new Date(e.expiresAt).getTime(),Number.isNaN(this.expiresMs)&&console.warn(`[SessionManager] malformed expiresAt, session will be treated as expired:`,e.expiresAt)}isValid(){return!Number.isNaN(this.expiresMs)&&this.expiresMs>Date.now()}getToken(){return this.session.sessionToken}getSession(){return this.session}startAutoRefresh(e,t){if(this.stopAutoRefresh(),!this.isValid()){t();return}let n=Math.max(0,Math.floor((this.expiresMs-Date.now())*f));this.timer=setTimeout(()=>{this.timer=null,e().then(n=>{if(this.session=n,this.expiresMs=new Date(n.expiresAt).getTime(),!this.isValid()){t();return}this.startAutoRefresh(e,t)},e=>{console.error(`[SessionManager] session refresh failed:`,e),t()})},n)}stopAutoRefresh(){this.timer!==null&&(clearTimeout(this.timer),this.timer=null)}},m=class{listeners=new Map;on(e,t){let n=this.listeners.get(e)??new Set;return n.add(t),this.listeners.set(e,n),this}off(e,t){let n=this.listeners.get(e);return n?(n.delete(t),n.size===0&&this.listeners.delete(e),this):this}once(e,t){let n=r=>{this.off(e,n),t(r)};return this.on(e,n)}removeAllListeners(e){return e===void 0?this.listeners.clear():this.listeners.delete(e),this}emit(e,t){let n=this.listeners.get(e);n&&[...n].forEach(e=>{try{e(t)}catch(e){console.error(`[TypedEventEmitter] Handler threw:`,e)}})}},h=function(e){return e.INIT=`nvm:init`,e.CLOSE=`nvm:close`,e.BOOTED=`nvm:booted`,e.READY=`nvm:ready`,e.RESIZE=`nvm:resize`,e.SUCCESS=`nvm:success`,e.ERROR=`nvm:error`,e.CARD_ACTION=`nvm:card-action`,e}({}),g=`1`,_=`1`;function v(e){return typeof e==`string`&&Object.values(h).includes(e)}function y(e,t){return{type:e,version:_,payload:t}}function b(e){if(typeof e!=`object`||!e)return{ok:!1,reason:`not an object`};let t=e;return v(t.type)?t.version===_?{ok:!0,message:{type:t.type,version:t.version,payload:t.payload}}:{ok:!1,reason:`version mismatch: received "${t.version}", expected "${_}"`}:{ok:!1,reason:typeof t.type==`string`&&t.type.startsWith(`nvm:`)?`unknown nvm: type "${t.type}"`:`missing or unknown type`}}function x(e,t,n){return Math.max(t,Math.min(n,Math.round(e)))}var S=class{expectedOrigin;iframe=null;messageHandlers=new Set;protocolErrorHandlers=new Set;messageListener=null;destroyed=!1;constructor(e){if(this.expectedOrigin=e,e===`*`)throw Error(`[IframeManager] Wildcard origin "*" is not allowed — pass an explicit origin`)}create(e,t){this.iframe?.remove();let n=document.createElement(`iframe`);if(n.src=e,n.style.display=`block`,n.setAttribute(`allow`,`payment *`),n.setAttribute(`sandbox`,`allow-scripts allow-same-origin allow-forms allow-popups allow-popups-to-escape-sandbox allow-top-navigation-by-user-activation`),!t?.container)n.style.width=`100%`,n.style.height=`100%`,n.style.border=`none`,n.style.position=`fixed`,n.style.top=`0`,n.style.left=`0`,n.style.right=`0`,n.style.bottom=`0`,n.style.zIndex=`9999`;else{let e=x(t.width??480,440,720),r=x(t.height??720,640,960);n.style.width=`${e}px`,n.style.height=`${r}px`,n.style.border=`1px solid #e5e7eb`,n.style.borderRadius=`8px`,n.style.boxSizing=`border-box`}return t?.style&&Object.assign(n.style,t.style),(t?.container??document.body).appendChild(n),this.iframe=n,n}destroy(){this.destroyed=!0,this.messageListener&&=(window.removeEventListener(`message`,this.messageListener),null),this.messageHandlers.clear(),this.protocolErrorHandlers.clear(),this.iframe?.remove(),this.iframe=null}postMessage(e){this.destroyed||this.iframe?.contentWindow?.postMessage(e,this.expectedOrigin)}onMessage(e){return this.destroyed?()=>void 0:(this.messageHandlers.add(e),this.ensureListener(),()=>this.messageHandlers.delete(e))}onProtocolError(e){return this.destroyed?()=>void 0:(this.protocolErrorHandlers.add(e),this.ensureListener(),()=>this.protocolErrorHandlers.delete(e))}ensureListener(){this.messageListener||(this.messageListener=e=>{if(e.origin!==this.expectedOrigin)return;let t=b(e.data);if(!t.ok){console.warn(`[IframeManager] Discarding message from ${this.expectedOrigin}: ${t.reason}`),this.protocolErrorHandlers.forEach(e=>{try{e(t.reason)}catch(e){console.error(`[IframeManager] Protocol error handler threw:`,e)}});return}this.messageHandlers.forEach(e=>{try{e(t.message)}catch(e){console.error(`[IframeManager] Message handler threw:`,e)}})},window.addEventListener(`message`,this.messageListener))}},C={code:`UNKNOWN`,message:`Unknown widget error`},w=class{session;embedBase;embedNetwork;manager=null;destroyed=!1;constructor(e,t,n){this.session=e,this.embedBase=t,this.embedNetwork=n}start(e){if(this.destroyed)throw Error(`[CheckoutWidget] cannot start: instance has been destroyed`);if(!e.did||typeof e.did!=`string`)throw Error(`[CheckoutWidget] did is required`);let t=new URL(`/checkout/${encodeURIComponent(e.did)}`,this.embedBase);e.planId&&t.searchParams.set(`planId`,e.planId),this.mount(t,e,t=>({did:t.did??e.did,planId:t.planId??e.planId,txHash:t.txHash}),e.onSuccess)}startPlan(e){if(this.destroyed)throw Error(`[CheckoutWidget] cannot start: instance has been destroyed`);if(!e.planId||typeof e.planId!=`string`)throw Error(`[CheckoutWidget] planId is required`);let t=new URL(`/checkout/plan/${encodeURIComponent(e.planId)}`,this.embedBase);this.mount(t,e,t=>({planId:t.planId??e.planId,txHash:t.txHash}),e.onSuccess)}startOrder(e){if(this.destroyed)throw Error(`[CheckoutWidget] cannot start: instance has been destroyed`);if(!e.orderId||typeof e.orderId!=`string`)throw Error(`[CheckoutWidget] orderId is required`);let t=new URL(`/checkout/order/${encodeURIComponent(e.orderId)}`,this.embedBase);this.mount(t,e,t=>({orderId:t.orderId??e.orderId,paymentIntent:t.paymentIntent}),e.onSuccess)}destroy(){this.destroyed=!0,this.manager?.destroy(),this.manager=null}closeFromIframe(e,t){this.destroyed||this.manager!==t||(this.destroy(),e.onClose?.())}buildSuccessHandle(e,t){return{close:()=>this.closeFromIframe(e,t)}}mount(e,t,n,r){this.manager?.destroy();let i=new URL(this.embedBase).origin;e.searchParams.set(`parentOrigin`,window.location.origin),e.searchParams.set(`network`,this.embedNetwork);let a=new S(i);this.manager=a,a.create(e.toString(),{container:t.container,width:t.width,height:t.height}),a.onMessage(e=>this.handleMessage(e,t,a,n,r))}handleMessage(e,t,n,r,i){switch(e.type){case h.BOOTED:this.manager?.postMessage(y(h.INIT,{sessionToken:this.session.getToken()})),t.onBooted?.();return;case h.READY:`onReady`in t&&t.onReady?.();return;case h.SUCCESS:{let a=r(e.payload!=null&&typeof e.payload==`object`?e.payload:{});i?.({result:a,handle:this.buildSuccessHandle(t,n)});return}case h.ERROR:{let n=e.payload;t.onError?.(n?.error??C);return}case h.CLOSE:this.closeFromIframe(t,n);return;default:return}}},T={code:`UNKNOWN`,message:`Unknown widget error`},E={code:`UNKNOWN`,message:`Malformed nvm:success payload — paymentMethodId missing or invalid`},D={code:`UNKNOWN`,message:`Malformed nvm:success payload — delegationId missing or invalid`},O={code:`UNKNOWN`,message:`Malformed nvm:success payload — paymentMethodId or delegationId missing or invalid`};function k(e){return typeof e==`string`&&e.length>0}var A=/^0x[a-fA-F0-9]{40}$/;function j(e){return e&&A.test(e)?`crypto`:`card`}var M=4096;function N(e,t){if(!t||Object.keys(t).length===0)return{provider:e};let n=JSON.stringify(t);if(n.length>M)throw Error(`[DelegationsWidget] iframeCss is too large (max ${M} bytes once JSON-encoded)`);return{provider:e,iframeCss:n}}var P=class{session;embedBase;apiBase;embedNetwork;manager=null;destroyed=!1;constructor(e,t,n,r){this.session=e,this.embedBase=t,this.apiBase=n,this.embedNetwork=r}enrollCard(e){this.assertAlive(`enrollCard`);let t=e.provider??`stripe`,n=this.mountIframe(`/cards/enroll`,e.container,N(t,e.iframeCss),{width:e.width,height:e.height});n.onMessage(t=>this.handleEnrollMessage(t,e,n))}listCards(e){this.assertAlive(`listCards`);let t=this.mountIframe(`/cards/list`,e.container,void 0,{width:e.width,height:e.height});t.onMessage(n=>this.handleListMessage(n,e,t))}createDelegation(e){this.assertAlive(`createDelegation`);let t=e.provider??j(e.paymentMethodId);if(t===`card`&&(typeof e.paymentMethodId!=`string`||e.paymentMethodId.length===0))throw Error(`[DelegationsWidget] createDelegation: paymentMethodId is required for provider 'card'`);let n=this.mountIframe(`/cards/delegate`,e.container,{provider:t,...t===`card`&&e.paymentMethodId?{paymentMethodId:e.paymentMethodId}:{}},{width:e.width,height:e.height});n.onMessage(t=>this.handleCreateDelegationMessage(t,e,n))}setupCard(e){this.assertAlive(`setupCard`);let t=e.provider??`stripe`,n=this.mountIframe(`/cards/setup`,e.container,N(t,e.iframeCss),{width:e.width,height:e.height});n.onMessage(t=>this.handleSetupMessage(t,e,n))}async revokeCard(e){if(typeof e!=`string`||e.length===0)throw Error(`[DelegationsWidget] revokeCard: paymentMethodId is required`);await this.deleteWithSession(`${this.apiBase}/api/v1/widgets/payment-methods/${encodeURIComponent(e)}`,`Failed to revoke payment method`)}async revokeDelegation(e){if(typeof e!=`string`||e.length===0)throw Error(`[DelegationsWidget] revokeDelegation: delegationId is required`);await this.deleteWithSession(`${this.apiBase}/api/v1/widgets/delegation/${encodeURIComponent(e)}`,`Failed to revoke delegation`)}destroy(){this.destroyed=!0,this.manager?.destroy(),this.manager=null}assertAlive(e){if(this.destroyed)throw Error(`[DelegationsWidget] cannot ${e}: instance has been destroyed`)}mountIframe(e,t,n={},r={}){this.manager?.destroy();let i=new URL(this.embedBase).origin,a=window.location.origin,o=new URL(e,this.embedBase);o.searchParams.set(`parentOrigin`,a),o.searchParams.set(`network`,this.embedNetwork);for(let[e,t]of Object.entries(n))o.searchParams.set(e,t);let s=new S(i);return this.manager=s,s.create(o.toString(),{container:t,width:r.width,height:r.height}),s}postInitOnBooted(){this.manager?.postMessage(y(h.INIT,{sessionToken:this.session.getToken()}))}dispatchLifecycle(e,t,n){switch(e.type){case h.BOOTED:this.postInitOnBooted(),t.onBooted?.();return;case h.READY:t.onReady?.();return;case h.ERROR:{let n=e.payload;t.onError?.(n?.error??T);return}case h.CLOSE:this.closeFromIframe(t,n);return;default:return}}handleEnrollMessage(e,t,n){if(e.type===h.SUCCESS){let r=e.payload??{};if(!k(r.paymentMethodId)){t.onError?.(E);return}t.onSuccess?.({result:{paymentMethodId:r.paymentMethodId},handle:this.buildSuccessHandle(t,n)});return}this.dispatchLifecycle(e,t,n)}handleListMessage(e,t,n){if(e.type===h.CARD_ACTION){let n=e.payload??{};if(n.action!==`delegate`&&n.action!==`revoked`||!k(n.paymentMethodId))return;t.onCardAction?.({action:n.action,paymentMethodId:n.paymentMethodId});return}this.dispatchLifecycle(e,t,n)}handleCreateDelegationMessage(e,t,n){if(e.type===h.SUCCESS){let r=e.payload??{};if(!k(r.delegationId)){t.onError?.(D);return}t.onSuccess?.({result:{delegationId:r.delegationId,paymentMethodId:t.paymentMethodId},handle:this.buildSuccessHandle(t,n)});return}this.dispatchLifecycle(e,t,n)}handleSetupMessage(e,t,n){if(e.type===h.SUCCESS){let r=e.payload??{};if(!k(r.paymentMethodId)||!k(r.delegationId)){t.onError?.(O);return}t.onSuccess?.({result:{paymentMethodId:r.paymentMethodId,delegationId:r.delegationId},handle:this.buildSuccessHandle(t,n)});return}this.dispatchLifecycle(e,t,n)}closeFromIframe(e,t){this.destroyed||this.manager!==t||(this.destroy(),e.onClose?.())}buildSuccessHandle(e,t){return{close:()=>this.closeFromIframe(e,t)}}async deleteWithSession(e,t){let n;try{n=await fetch(e,{method:`DELETE`,headers:{Authorization:`Bearer ${this.session.getToken()}`,Accept:`application/json`}})}catch(e){throw new d(e instanceof Error&&e.message?e.message:t)}if(n.ok)return;let r,i=t;try{let e=await n.json();typeof e?.message==`string`&&e.message.length>0&&(i=e.message),typeof e?.code==`string`&&(r=e.code)}catch{}throw new d(i,n.status,r)}};function F(e){if(typeof e!=`object`||!e)return!1;let t=e;return[`sessionToken`,`userId`,`expiresAt`,`apiKeyHash`].every(e=>typeof t[e]==`string`)&&typeof t.userWallet==`string`&&t.userWallet.startsWith(`0x`)}var I=class e{sessionManager;_account;environment;_checkout=null;_delegations=null;events=new m;constructor(e,t,n){this.sessionManager=e,this._account=t,this.environment=n}static async initialize(n){let{session:r,environment:i}=n;if(!r||typeof r!=`object`)throw new l(`MISSING_SESSION`);if(!i||!t.includes(i))throw new l(`INVALID_ENVIRONMENT`);if(!F(r))throw new l(`INVALID_SESSION`);let a=new p(r),o=new e(a,{userId:r.userId,userWallet:r.userWallet},i);return a.startAutoRefresh(()=>o.refreshSession(),()=>o.events.emit(`session-expired`,void 0)),o}async refreshSession(){let e=await fetch(`${i(this.environment)}/api/v1/widgets/session/refresh`,{method:`POST`,headers:{Authorization:`Bearer ${this.sessionManager.getToken()}`}});if(!e.ok)throw Error(`Session refresh failed with status ${e.status}`);let t=await e.json();if(!F(t))throw Error(`Session refresh returned an invalid response`);return t}on(e,t){return this.events.on(e,t),this}off(e,t){return this.events.off(e,t),this}get account(){return this._account}get hasValidSession(){return this.sessionManager.isValid()}getSessionToken(){if(!this.sessionManager.isValid())throw new u;return this.sessionManager.getToken()}get checkout(){return this._checkout||=new w(this.sessionManager,a(this.environment),s(this.environment)),this._checkout}get delegations(){return this._delegations||=new P(this.sessionManager,a(this.environment),i(this.environment),s(this.environment)),this._delegations}destroy(){this.sessionManager.stopAutoRefresh(),this._checkout?.destroy(),this._checkout=null,this._delegations?.destroy(),this._delegations=null,this.events.removeAllListeners()}};e.CheckoutWidget=w,e.DelegationsWidget=P,e.IframeManager=S,e.NeverminedWidgets=I,e.SessionManager=p,e.TypedEventEmitter=m,e.WIDGET_MESSAGE_VERSION=g,e.WidgetApiError=d,e.WidgetInitError=l,e.WidgetMessageType=h,e.WidgetSessionExpiredError=u,e.createMessage=y,e.parseMessage=b});
|
package/dist/index.mjs
CHANGED
|
@@ -258,6 +258,15 @@ var x = class {
|
|
|
258
258
|
txHash: t.txHash
|
|
259
259
|
}), e.onSuccess);
|
|
260
260
|
}
|
|
261
|
+
startOrder(e) {
|
|
262
|
+
if (this.destroyed) throw Error("[CheckoutWidget] cannot start: instance has been destroyed");
|
|
263
|
+
if (!e.orderId || typeof e.orderId != "string") throw Error("[CheckoutWidget] orderId is required");
|
|
264
|
+
let t = new URL(`/checkout/order/${encodeURIComponent(e.orderId)}`, this.embedBase);
|
|
265
|
+
this.mount(t, e, (t) => ({
|
|
266
|
+
orderId: t.orderId ?? e.orderId,
|
|
267
|
+
paymentIntent: t.paymentIntent
|
|
268
|
+
}), e.onSuccess);
|
|
269
|
+
}
|
|
261
270
|
destroy() {
|
|
262
271
|
this.destroyed = !0, this.manager?.destroy(), this.manager = null;
|
|
263
272
|
}
|
|
@@ -284,7 +293,7 @@ var x = class {
|
|
|
284
293
|
this.manager?.postMessage(v(m.INIT, { sessionToken: this.session.getToken() })), t.onBooted?.();
|
|
285
294
|
return;
|
|
286
295
|
case m.READY:
|
|
287
|
-
t.onReady?.();
|
|
296
|
+
"onReady" in t && t.onReady?.();
|
|
288
297
|
return;
|
|
289
298
|
case m.SUCCESS: {
|
|
290
299
|
let a = r(e.payload != null && typeof e.payload == "object" ? e.payload : {});
|
|
@@ -47,6 +47,21 @@ export interface PlanCheckoutOptions {
|
|
|
47
47
|
onError?: (error: EmbedError) => void;
|
|
48
48
|
onClose?: () => void;
|
|
49
49
|
}
|
|
50
|
+
export interface OrderCheckoutResult {
|
|
51
|
+
orderId: string;
|
|
52
|
+
/** The Stripe PaymentIntent id that settled the order. */
|
|
53
|
+
paymentIntent?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface OrderCheckoutOptions {
|
|
56
|
+
orderId: string;
|
|
57
|
+
container?: HTMLElement;
|
|
58
|
+
width?: number;
|
|
59
|
+
height?: number;
|
|
60
|
+
onBooted?: () => void;
|
|
61
|
+
onSuccess?: (event: WidgetSuccessEvent<OrderCheckoutResult>) => void;
|
|
62
|
+
onError?: (error: EmbedError) => void;
|
|
63
|
+
onClose?: () => void;
|
|
64
|
+
}
|
|
50
65
|
/**
|
|
51
66
|
* Checkout widget.
|
|
52
67
|
*
|
|
@@ -75,6 +90,13 @@ export declare class CheckoutWidget {
|
|
|
75
90
|
* `nvm:close` — see class JSDoc).
|
|
76
91
|
*/
|
|
77
92
|
startPlan(options: PlanCheckoutOptions): void;
|
|
93
|
+
/**
|
|
94
|
+
* Mounts a browser-fiat **Order** checkout iframe (#3249) — the buyer surface for an
|
|
95
|
+
* arbitrary-amount charge. Unlike `start` / `startPlan`, the Order surface is auth-free: the
|
|
96
|
+
* opaque `orderId` is the sole access control and Stripe confirms the PaymentIntent client-side,
|
|
97
|
+
* so no NVM entitlement or login is required to pay. Throws if called after `destroy()`.
|
|
98
|
+
*/
|
|
99
|
+
startOrder(options: OrderCheckoutOptions): void;
|
|
78
100
|
destroy(): void;
|
|
79
101
|
/**
|
|
80
102
|
* Shared close path for `handle.close()` (integrator-driven) and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/widgets/checkout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEjE,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,WAAW,CAAA;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAA;IAC/D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IACrC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,WAAW,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAA;IACnE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IACrC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAID;;;;;;;;GAQG;AACH,qBAAa,cAAc;IAKvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAN/B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,SAAS,CAAQ;gBAGN,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,SAAS,GAAG,MAAM;IAGnD;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAuBrC;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAqB7C,OAAO,IAAI,IAAI;IAMf;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,KAAK;IAyBb,OAAO,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/widgets/checkout.ts"],"names":[],"mappings":"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"}
|