@nevermined-io/ui-widgets 1.31.0 → 1.32.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 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
@@ -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,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC5E,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"}
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;CAgDtB"}
1
+ {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/widgets/checkout.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nevermined-io/ui-widgets",
3
- "version": "1.31.0",
3
+ "version": "1.32.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",