@nibgate/sdk 0.2.4 → 0.2.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/nibgate.js +38 -7
- package/dist/nibgate.js.map +2 -2
- package/dist/nibgate.min.js +2 -2
- package/dist/nibgate.min.js.map +3 -3
- package/package.json +2 -2
- package/src/core/resource.js +43 -8
package/dist/nibgate.min.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var Nibgate=(()=>{var ie=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var Qe=Object.getOwnPropertyNames;var Ye=Object.prototype.hasOwnProperty;var Re=(t,e)=>()=>(t&&(e=t(t=0)),e);var Ce=(t,e)=>{for(var r in e)ie(t,r,{get:e[r],enumerable:!0})},Ke=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Qe(e))!Ye.call(t,a)&&a!==r&&ie(t,a,{get:()=>e[a],enumerable:!(n=Je(e,a))||n.enumerable});return t};var Ze=t=>Ke(ie({},"__esModule",{value:!0}),t);function ot(t,e){return typeof e=="bigint"?e.toString():e}function H(t){return JSON.stringify(t,ot)}var X=Re(()=>{});var Ue={};Ce(Ue,{createCircleGatewayBrowserAdapter:()=>lt});function it(t){let e=typeof t=="string"?t:H(t);return typeof Buffer<"u"?Buffer.from(e).toString("base64"):btoa(unescape(encodeURIComponent(e)))}function ut(t){return typeof Buffer<"u"?Buffer.from(t,"base64").toString("utf8"):decodeURIComponent(escape(atob(t)))}async function lt(t={}){let e=t.signer||await t.getSigner?.();if(!e?.address||typeof e.signTypedData!="function")throw new Error("Circle Gateway browser adapter requires an EVM signer with address and signTypedData.");let r=t.clientModule||(t.clientModuleUrl?await Me(t.clientModuleUrl):await Me("@circle-fin/x402-batching/client")),{BatchEvmScheme:n}=r,a=new n(e),c=t.network||t.chainId&&`eip155:${t.chainId}`||"eip155:5042002";function i(o){if(o&&typeof o=="object")return o;if(!o||typeof o!="string")throw new Error("Missing PAYMENT-REQUIRED header.");return JSON.parse(ut(o))}function m(o){let l=Array.isArray(o?.accepts)?o.accepts:[],u=l.find(y=>{let s=y.extra||{};return y.network===c&&s.name==="GatewayWalletBatched"&&s.version==="1"&&typeof s.verifyingContract=="string"})||l.find(y=>{let s=y.extra||{};return s.name==="GatewayWalletBatched"&&s.version==="1"&&typeof s.verifyingContract=="string"});if(!u){let y=l.map(d=>d.network).filter(Boolean).join(", ")||"none",s=l.some(d=>{let g=d.extra||{};return g.name==="GatewayWalletBatched"&&g.version==="1"&&typeof g.verifyingContract=="string"});throw new Error(s?`No Circle Gateway batching payment option found for ${c}. Server returned networks: ${y}.`:`The payment challenge is not a Circle Gateway batching challenge. Configure the creator access route with createCircleGatewayServer(...) or createNibgateServer({ paymentMode: 'circle-gateway', network: '${c}' }).`)}return u}return{signer:e,network:c,async pay({paymentRequiredHeader:o,challenge:l}){let u=i(o||l),y=m(u),s=u.x402Version??2,d=await a.createPaymentPayload(s,y),g=it({...d,resource:u.resource,accepted:y});return{paymentSignature:g,signature:g,metadata:{paymentProvider:"circle-gateway",network:y.network,payer:e.address,recipient:y.payTo||y.recipient,amount:y.amount,currency:y.asset}}}}}var Me,Be=Re(()=>{X();Me=new Function("specifier","return import(specifier)")});var ht={};Ce(ht,{ACCESS_MODES:()=>B,CONTENT_TYPES:()=>U,NIBGATE_CONTENT_HASH_NAMESPACE:()=>He,NIBGATE_CONTENT_SETTING_FIELDS:()=>De,NIBGATE_REPUTATION_ABI:()=>We,NIBGATE_REPUTATION_CHAIN_ID:()=>qe,NIBGATE_REPUTATION_CHAIN_NAME:()=>Ge,NIBGATE_REPUTATION_CONTRACT:()=>pe,NIBGATE_REPUTATION_RPC_URL:()=>ze,PAYMENT_RAILS:()=>q,UNLOCK_MODES:()=>G,checkResourceAccess:()=>x,contentRatingHash:()=>he,createCircleGatewayBrowserAdapter:()=>D,createEvmGatewayUnlock:()=>ne,createGate:()=>E,createNibgate:()=>we,createNibgateContentSettings:()=>Ve,createOnchainRating:()=>ce,createTransferCheckout:()=>$,createWalletCheckout:()=>te,mountRatingUI:()=>oe,nibgate:()=>be,normalizeAccessPolicy:()=>I,normalizeContentType:()=>N,normalizePaymentRail:()=>M,normalizeResource:()=>w,normalizeUnlockPolicy:()=>O,payAndUnlockResource:()=>W,payWithPaymentSignature:()=>z,payWithTransfer:()=>se,rateContentOnchain:()=>ae,rateResource:()=>V,reviewTextHash:()=>Le,settingsToAccessPolicy:()=>$e,settingsToUnlockPolicy:()=>je,setupResourcePage:()=>ee,trackResourcePage:()=>v,validateResourceMetadata:()=>Y});var q=["gateway","transfer"];function M(t,e="gateway"){let r=String(t||"").trim().toLowerCase().replace(/[-\s]+/g,"_");return r==="circle_gateway"||r==="x402"?"gateway":r==="direct_transfer"||r==="wallet_transfer"?"transfer":q.includes(r)?r:e}var U=["music","video","article","image"],Xe={audio:"music",song:"music",track:"music",album:"music",playlist:"music",photo:"image",picture:"image",illustration:"image",art:"image",movie:"video",clip:"video"},B=["free","paid","blocked"],G=["one_time","metered_stream","metered_read","time_pass","agent_quota"];function N(t){let e=String(t||"").trim().toLowerCase();return U.includes(e)?e:Xe[e]||"article"}function ue(t,e="paid"){let r=String(t||"").trim().toLowerCase();return B.includes(r)?r:e}function I(t={}){if(typeof t=="string"){let e=ue(t);return{humans:e,agents:e}}return{humans:ue(t.humans||t.human||t.default,"paid"),agents:ue(t.agents||t.agent||t.default,"paid")}}function O(t={}){let e=typeof t=="string"?{mode:t}:t||{},r=String(e.mode||e.type||"one_time").trim().toLowerCase().replace(/[-\s]+/g,"_");return{...e,mode:G.includes(r)?r:"one_time"}}function Ae(){return typeof window<"u"?window:null}function et(t){let e=Ae();if(!e)return"";let r=`meta[name="${t}"], meta[property="${t}"]`,n=e.document.querySelector(r);return n&&n.getAttribute("content")||""}function tt(t){let e=Ae();if(!(!e||!t))return`${e.location.origin}${t.startsWith("/")?t:"/"+t}`}function rt(){return et("og:image")||void 0}function w(t={}){let e=typeof t=="string"?{id:t}:t||{},{publisher:r,publisherId:n,publisherWallet:a,publisherHandle:c,publisherName:i,publisherProfileUrl:m,publisherOrigin:o,publisherVerification:l,authorHandle:u,...y}=e,s=e.path||e.route||void 0,d=e.url||tt(s)||void 0;return{...y,id:String(e.id||e.contentId||e.slug||"").trim(),title:String(e.title||e.name||"").trim(),type:N(e.type||e.contentType),price:e.price??e.amount??"",paymentRail:M(e.paymentRail||e.paymentMode||e.rail),recipient:e.recipient||e.receiver||e.receiverAddress||e.payTo||e.creatorWallet||void 0,payTo:e.payTo||e.recipient||e.receiver||e.receiverAddress||e.creatorWallet||void 0,path:s,url:d,imageUrl:e.imageUrl||e.image||rt()||void 0,tags:e.tags||void 0,access:I(e.access),unlock:O(e.unlock),ratingsEnabled:e.ratingsEnabled??e.enableRatings??e.reputation?.ratingsEnabled??!0,reputation:{...typeof e.reputation=="object"&&e.reputation?e.reputation:{},ratingsEnabled:e.ratingsEnabled??e.enableRatings??e.reputation?.ratingsEnabled??!0}}}function Q(t){return Array.isArray(t)?t.length>0:t!=null&&String(t).trim()!==""}function nt(t={}){let e=I(t.access);return e.humans==="paid"||e.agents==="paid"||Number.parseFloat(t.price||t.amount||"0")>0}function Y(t={},e={}){let r=w(t),n=[],a=[],c=e.required||["id","title","url","type"],i=e.recommended||["description","imageUrl","tags"];for(let o of c)Q(r[o])||a.push(`Missing required content metadata: ${o}`);for(let o of i)Q(r[o])||n.push(`Missing recommended discovery metadata: ${o}`);U.includes(r.type)||a.push("Content type must be one of music, video, article, or image."),r.url&&!/^https?:\/\//i.test(String(r.url))&&n.push("Use an absolute canonical url for stronger discovery identity."),r.imageUrl&&!/^https?:\/\//i.test(String(r.imageUrl))&&n.push("Use an absolute imageUrl for thumbnails in Explore and agent discovery."),nt(r)&&(Q(r.price)||a.push("Paid content requires price."),Q(r.recipient||r.payTo)||n.push("Paid content should include recipient/payTo (server value from 402 challenge is used for actual payment)."));let m=Math.max(0,100-a.length*20-n.length*8);return{ok:a.length===0,score:m,errors:a,warnings:n,resource:r}}function h(){return typeof window>"u"?null:window}function at(t,e){let r=h();return r?(r.__nibgateClientQueue=r.__nibgateClientQueue||[],r.__nibgateClientQueue.push({eventName:t,payload:e}),!0):!1}function K(){let t=h();if(!t?.nibgateHub?.track||!Array.isArray(t.__nibgateClientQueue))return!1;let e=t.__nibgateClientQueue.splice(0);return e.forEach(r=>{t.nibgateHub.track(r.eventName,r.payload)}),e.length>0}function ct(){let t=h();if(!t||t.__nibgateClientFlushStarted)return;t.__nibgateClientFlushStarted=!0;let e=0,r=t.setInterval(()=>{e+=1,K(),(t.nibgateHub?.track||e>=80)&&(t.clearInterval(r),t.__nibgateClientFlushStarted=!1)},250)}function R(t,e={}){let r=h();return r?r.nibgateHub?.track?(r.nibgateHub.track(t,e),K(),!0):(at(t,e),ct(),!1):!1}function A(t,e={}){return{...e,resource:w(t)}}function le(t){return`nibgate:unlock:${t.id||t.path||t.url||"content"}`}function me(t){return`nibgate:payment-proof:${t.id||t.path||t.url||"content"}`}function Z(t,e={}){let r=h();if(!r)return!1;try{return r.localStorage.setItem(le(t),JSON.stringify({unlockedAt:new Date().toISOString(),payment:e})),!0}catch{return!1}}function de(t,e){let r=h();if(!r||!e)return!1;try{let n=typeof e=="string"?e:JSON.stringify(e);return r.localStorage.setItem(me(t),n),!0}catch{return!1}}function fe(t){let e=h();if(!e)return"";try{return e.localStorage.getItem(me(t))||""}catch{return""}}function Pe(t){let e=w(t),r=h();if(!r)return!1;try{return r.localStorage.removeItem(me(e)),r.localStorage.removeItem(le(e)),!0}catch{return!1}}function _e(t){let e=h();if(!e)return!1;try{return!!e.localStorage.getItem(le(t))}catch{return!1}}var Ne=null;function Ie(t){Ne=t}function E(t,e={}){let r=w(t),n=e.client||Ne;return{resource:r,content(a={}){return n.content(r,a)},view(a={}){return n.view(r,a)},track(a,c={}){return n.track(a,A(r,c))},unlockStarted(a={}){return n.unlockStarted(r,a)},unlockCompleted(a={}){return Z(r,a),n.unlockCompleted(r,a)},paymentCompleted(a={}){return n.paymentCompleted(r,a)},isUnlocked(){return _e(r)},markUnlocked(a={}){return Z(r,a),n.unlockCompleted(r,a),n.paymentCompleted(r,a),!0},async unlock(a={}){n.unlockStarted(r);let c=typeof a=="function"?await a(r):a;return Z(r,c||{}),n.unlockCompleted(r,c||{}),n.paymentCompleted(r,c||{}),{unlocked:!0,resource:r,payment:c||{}}},rate(a={},c={}){return n.rateResource(r,a,c)}}}X();function v(t,e={}){let r=E(t,e.gateOptions||{}),n=Y(r.resource,e.validation||{});return(n.warnings.length||n.errors.length)&&e.warn!==!1&&h()?.console?.warn&&h().console.warn("Nibgate content metadata needs attention",n),r.content({source:e.source,metadataQuality:{score:n.score,warnings:n.warnings,errors:n.errors},...e.content||{}}),r.view({source:e.source,path:e.path||h()?.location?.pathname||r.resource.path,referrer:e.referrer??h()?.document?.referrer??"",...e.view||{}}),r}function ee(t,e={}){let r=v(t,e),n=h();if(!n)return r;let a=typeof e.button=="string"?n.document.querySelector(e.button):e.button,c=typeof e.status=="string"?n.document.querySelector(e.status):e.status,i=e.onStatus||(m=>{c&&(c.textContent=m||"")});return a&&a.addEventListener("click",async()=>{a.disabled=!0;try{await x(t,{...e,onStatus:i})}finally{a.disabled=!1}}),r}async function x(t,e={}){let r=E(t,e.gateOptions||{}),n=e.accessPath||r.resource.accessPath||"/api/nibgate/access",a=typeof e.onStatus=="function"?e.onStatus:()=>{};a(e.checkingMessage||"Checking access route..."),r.unlockStarted({source:e.source,paymentProvider:e.paymentProvider||"nibgate-access-route"});let c=await fetch(n,{method:e.method||"GET",headers:{accept:"application/json",...fe(r.resource)?{"x-nibgate-payment-proof":fe(r.resource)}:{},...e.headers||{}},body:e.body}),i=await c.json().catch(()=>({}));if(c.status===402){if(r.track("payment_challenge_returned",{source:e.source,challenge:i,resource:r.resource}),a(e.challengeMessage||"Payment challenge returned. Continue with checkout."),typeof e.createPaymentSignature=="function"||typeof e.checkout=="function")return z(t,{...e,challenge:i,paymentRequiredHeader:c.headers.get("PAYMENT-REQUIRED")||c.headers.get("payment-required")||""});if(e.autoPay&&e.payPath){let o=await W(t,e);return o.ok&&e.retryAfterPay!==!1?x(t,{...e,autoPay:!1}):o}return{ok:!1,status:c.status,challenge:i,resource:r.resource,response:c}}if(!c.ok)return a(i.error||e.errorMessage||"Access check failed"),{ok:!1,status:c.status,error:i.error||"Access check failed",payload:i,resource:r.resource,response:c};let m=e.payment||i.payment||null;return m&&(r.unlockCompleted(m),r.paymentCompleted(m)),a(e.successMessage||"Access allowed and Nibgate events emitted."),{ok:!0,status:c.status,payload:i,payment:m,resource:r.resource,response:c}}async function z(t,e={}){let r=E(t,e.gateOptions||{}),n=e.accessPath||r.resource.accessPath||"/api/nibgate/access",a=typeof e.onStatus=="function"?e.onStatus:()=>{};a(e.paymentMessage||"Waiting for wallet payment approval..."),r.unlockStarted({source:e.source,paymentProvider:e.paymentProvider||"wallet-gateway"});let c=e.paymentSignature||"",i=e.memo||"",m=e.payment||{};if(!c){let s=e.paymentRequiredHeader||"",d=e.challenge||null,b=await(e.createPaymentSignature||e.checkout)({resource:r.resource,challenge:d,paymentRequiredHeader:s,accessPath:n});c=b?.paymentSignature||b?.signature||b?.payment||"",i=b?.memo||b?.paymentMemo||"",m=b?.metadata||b?.paymentMetadata||b||{}}if(!c){let s="Wallet did not return a payment signature.";return r.track("payment_failed",{source:e.source,error:s}),a(s),{ok:!1,status:400,error:s,resource:r.resource}}let o=await fetch(n,{method:e.method||"GET",headers:{accept:"application/json","payment-signature":c,...i?{"payment-memo":i}:{},...e.headers||{}}}),l=await o.text(),u={};try{u=l?JSON.parse(l):{}}catch{u={error:l||"Payment verification failed"}}if(!o.ok){let s=u.detail||u.reason||u.invalidReason||u.error||l||"Payment verification failed",d=typeof s=="string"?s:H(s);return r.track("payment_failed",{source:e.source,status:o.status,error:d,...m}),a(e.paymentErrorMessage||d),{ok:!1,status:o.status,error:d,payload:u,resource:r.resource,response:o}}let y=u.payment||{paymentProvider:e.paymentProvider||"wallet-gateway",paymentId:c,memo:i,amount:Number(r.resource.price||0),revenue:Number(r.resource.price||0),currency:r.resource.currency||"USDC",...m};return de(r.resource,u.unlockProof),r.markUnlocked(y),a(e.paymentSuccessMessage||"Payment verified. Content unlocked."),{ok:!0,status:o.status,payload:u,payment:y,resource:r.resource,response:o}}async function W(t,e={}){let r=E(t,e.gateOptions||{}),n=e.payPath||r.resource.payPath||"/api/nibgate/pay",a=typeof e.onStatus=="function"?e.onStatus:()=>{};a(e.paymentMessage||"Starting payment..."),r.unlockStarted({source:e.source,paymentProvider:e.paymentProvider||"circle-gateway"});let c=await fetch(n,{method:e.payMethod||"POST",headers:{accept:"application/json","content-type":"application/json",...e.payHeaders||{}},body:JSON.stringify({resource:r.resource,...e.payPayload||{}})}),i=await c.json().catch(()=>({}));if(!c.ok||!i.ok)return r.track("payment_failed",{source:e.source,status:c.status,error:i.error||"Payment failed",detail:i.detail||""}),a(i.detail||i.error||e.paymentErrorMessage||"Payment failed."),{ok:!1,status:c.status,payload:i,resource:r.resource,response:c};let m=i.payment||{paymentProvider:e.paymentProvider||"circle-gateway",paymentId:i.paymentId||`nibgate_payment_${Date.now()}`,amount:Number(r.resource.price||0),revenue:Number(r.resource.price||0),currency:r.resource.currency||"USDC"};return de(r.resource,i.unlockProof),r.markUnlocked(m),a(e.paymentSuccessMessage||"Payment verified. Content unlocked."),{ok:!0,status:c.status,payload:i,payment:m,resource:r.resource,response:c}}function st(t,e){let r=h();if(!t||!r)return;let n=typeof t=="string"?r.document.querySelector(t):t;n&&(n.textContent=e||"")}function ve(t,e){let r=h();if(!t||!r)return;let n=typeof t=="string"?r.document.querySelector(t):t;n&&"disabled"in n&&(n.disabled=!!e)}function te(t,e={}){let r=w(t),n=e.accessPath||r.accessPath||"/api/nibgate/access",a=e.button||null,c=e.status||null,i=typeof e.onStatus=="function"?e.onStatus:u=>st(c,u),m=e.checkout||e.createPaymentSignature||e.pay;if(typeof m!="function")throw new Error("createWalletCheckout requires checkout/createPaymentSignature/pay callback for the active wallet or Gateway adapter.");async function o(u={}){ve(a,!0);try{return await x(r,{...e,...u,accessPath:n,createPaymentSignature:m,onStatus:i})}finally{ve(a,!1)}}function l(){let u=h();if(!u||!a)return{unlock:o};let y=typeof a=="string"?u.document.querySelector(a):a;return y&&y.addEventListener("click",()=>o().catch(s=>i(s.message||"Checkout failed."))),{unlock:o}}return{resource:r,unlock:o,mount:l}}function L(t={}){let e=typeof t=="number"?t:t.rating??t.stars??t.ratingValue??t.score,r=Number.parseFloat(e),n=Number.isFinite(r)?Math.max(1,Math.min(50,r<=5?Math.round(r*10):Math.round(r))):null;return{...t,rating:n?n/10:void 0,ratingValue:n||void 0}}function re(t,e={},r={}){let n=w(t),c=L(e).ratingValue||0;return["Nibgate content rating",`site:${r.siteDomain||r.domain||n.siteDomain||n.domain||""}`,`content:${n.externalId||n.id}`,`url:${n.url||r.url||""}`,`rating:${c}`,"I confirm this rating is tied to my unlock/payment proof."].join(`
|
|
2
|
-
`)}X();async function D(t={}){return(await Promise.resolve().then(()=>(Be(),Ue))).createCircleGatewayBrowserAdapter(t)}function ne(t,e={}){let r=E(t,e.gateOptions||{}),n=h(),a=e.accessPath||r.resource.accessPath||"/api/nibgate/access",c=e.source||"nibgate-evm-gateway",i=e.network||"eip155:5042002",m=typeof e.status=="string"?n?.document.querySelector(e.status):e.status,o=typeof e.connectButton=="string"?n?.document.querySelector(e.connectButton):e.connectButton,l=typeof e.disconnectButton=="string"?n?.document.querySelector(e.disconnectButton):e.disconnectButton,u=typeof e.unlockButton=="string"?n?.document.querySelector(e.unlockButton):e.unlockButton,y=typeof e.clearButton=="string"?n?.document.querySelector(e.clearButton):e.clearButton,s=typeof e.walletLabel=="string"?n?.document.querySelector(e.walletLabel):e.walletLabel,d=typeof e.unlockedTarget=="string"?n?.document.querySelector(e.unlockedTarget):e.unlockedTarget,g="",b=!1;function C(f){typeof e.onStatus=="function"&&e.onStatus(f),m&&(m.textContent=f||"")}function j(f){return f?`${f.slice(0,6)}...${f.slice(-4)}`:""}function _(){return n?.ethereum||e.provider||null}function P(f){b=!!f,[o,l,u,y].forEach(k=>{k&&"disabled"in k&&(k.disabled=b||k===o&&!_()||k===l&&!g)})}function p(){let f=!!_();s&&(s.textContent=g?j(g):f?"Ready to connect":"No wallet detected"),o&&(o.textContent=g?"Connected":"Connect wallet"),l&&(l.textContent="Disconnect"),o&&"disabled"in o&&(o.disabled=b||!f),l&&"disabled"in l&&(l.disabled=b||!g)}function S(f,k={}){u&&(u.textContent=f?"Unlocked":`Unlock for ${r.resource.price} ${r.resource.currency||"USDC"}`),d&&("hidden"in d&&(d.hidden=!f),d.setAttribute("aria-hidden",f?"false":"true")),f&&r.markUnlocked(k)}async function T(){P(!0),C("Opening wallet connection...");try{let f=_();if(!f)throw new Error(e.noWalletMessage||"Install or open an EVM wallet to continue.");let k=await f.request({method:"eth_requestAccounts"});if(g=Array.isArray(k)&&k[0]||"",!g)throw new Error("No wallet account selected.");return p(),C("Wallet connected. You can unlock now."),g}finally{P(!1)}}async function F(){P(!0);try{let f=_();if(f?.request&&g)try{await f.request({method:"wallet_revokePermissions",params:[{eth_accounts:{}}]})}catch{}return g="",p(),C(e.disconnectMessage||"Wallet disconnected for this page."),!0}finally{P(!1)}}async function J(f){let k=_();if(!k)throw new Error(e.noWalletMessage||"Install or open an EVM wallet to continue.");return g||await T(),(await D({network:i,signer:{address:g,signTypedData:Fe=>k.request({method:"eth_signTypedData_v4",params:[g,H(Fe)]})},clientModule:e.circleClientModule,clientModuleUrl:e.circleClientModuleUrl})).pay(f)}async function ke(){P(!0);try{g||await T(),P(!0),C("Requesting Gateway unlock...");let f=await x(r.resource,{accessPath:a,source:c,paymentProvider:e.paymentProvider||"circle-gateway-browser",challengeMessage:e.challengeMessage||"Gateway payment required. Connect your wallet to continue...",paymentMessage:e.paymentMessage||"Approve the Gateway payment proof in your wallet...",successMessage:e.successMessage||`Unlocked ${r.resource.title||"content"}.`,checkout:J,onStatus:C});return f.ok&&(S(!0,f.payment||{}),typeof e.onUnlock=="function"&&e.onUnlock(f)),f}catch(f){let k=f?.message||"Unlock failed. Please try again.";return C(k),{ok:!1,status:0,error:k,resource:r.resource}}finally{P(!1),p()}}function Se(){Pe(r.resource),S(!1),C("Local payment proof cleared. The next unlock will require Gateway payment again.")}async function Ee(){let f=_();try{let k=f?await f.request({method:"eth_accounts"}):[];g=Array.isArray(k)&&k[0]||""}catch{}p(),S(!1)}function xe(){return o?.addEventListener?.("click",()=>T().catch(f=>C(f?.message||"Could not connect wallet."))),l?.addEventListener?.("click",()=>F().catch(f=>C(f?.message||"Could not disconnect wallet."))),u?.addEventListener?.("click",()=>ke()),y?.addEventListener?.("click",Se),Ee(),v(r.resource,{source:c}),Te}let Te={resource:r.resource,connect:T,disconnect:F,unlock:ke,clear:Se,hydrate:Ee,mount:xe,getWalletAddress:()=>g};return e.autoMount!==!1&&xe(),Te}var mt="0xc62fad09",ge=`0x${"0".repeat(64)}`,He="nibgate:content:v1",qe=5042002,Ge="Arc Testnet",ze="https://rpc.testnet.arc.network",pe="0x9f27fd62e75f86a3c7addfdba443aab1f930e281",We=[{type:"function",name:"rateContent",stateMutability:"nonpayable",inputs:[{name:"contentId",type:"bytes32"},{name:"rating",type:"uint8"},{name:"reviewHash",type:"bytes32"},{name:"unlockRef",type:"string"}],outputs:[]}];function dt(t=""){return String(t||"").replace(/^0x/i,"").toLowerCase()}function Oe(t=""){let e=dt(t);if(e.length>64)throw new Error("ABI word is too long.");return e.padEnd(64,"0")}function ye(t=0){return Number(t||0).toString(16).padStart(64,"0")}function ft(t=""){return Array.from(new TextEncoder().encode(String(t||""))).map(e=>e.toString(16).padStart(2,"0")).join("")}function yt(t=""){let e=ft(t),r=e.length/2,n=Math.ceil(r/32)*64;return ye(r)+e.padEnd(n,"0")}function gt({contentId:t,ratingValue:e,reviewHash:r,unlockRef:n}){return mt+Oe(t)+ye(e)+Oe(r||ge)+ye(128)+yt(n||"")}function he(t,e={}){let r=e.contentId||e.contentHash;if(!r)throw new Error("contentId/contentHash is required. Use the Nibgate backend prepare endpoint or pass a known content hash.");return r}function Le(t=""){if(!t)return ge;throw new Error("Text review hashing is not available in direct-browser mode. Pass reviewHash from your app/backend.")}async function pt(t,e={}){if(e.contentId||e.contentHash)return{contentId:e.contentId||e.contentHash};let r=e.prepareUrl||e.indexUrl?.replace(/\/index$/,"/prepare");if(!r)throw new Error("contentId/contentHash or prepareUrl is required for onchain rating.");let n=await fetch(r,{method:"POST",headers:{"content-type":"application/json",...e.indexHeaders||{}},body:JSON.stringify({siteId:e.siteId,token:e.token,resource:t,url:t.url,path:t.path})}),a=await n.json().catch(()=>({}));if(!n.ok||!a.contentHash)throw new Error(a.error||"Could not prepare Nibgate onchain rating.");return a}async function ae(t,e={}){let r=w(t),n=L(e.rating??e.stars??e);if(!n.ratingValue)throw new Error("Rating must be between 0.1 and 5 stars.");let a=e.provider||globalThis?.ethereum;if(!a?.request)throw new Error("Connect an EVM wallet to rate this content onchain.");let c=e.contractAddress||e.reputationContract||pe;if(!c)throw new Error("Nibgate reputation contract address is not configured.");let i=await a.request({method:"eth_requestAccounts"}),m=Array.isArray(i)&&i[0]||"";if(!m)throw new Error("No wallet account selected.");let o=await pt(r,e),l=o.contentHash||o.contentId||he(r,e),u=e.reviewHash||ge,y=String(e.unlockRef||e.paymentId||e.txHash||""),s=gt({contentId:l,ratingValue:n.ratingValue,reviewHash:u,unlockRef:y}),d=await a.request({method:"eth_sendTransaction",params:[{from:m,to:c,data:s}]}),g=A(r,{rating:n.rating,ratingValue:n.ratingValue,walletAddress:m,txHash:d,contentHash:l,reviewHash:u,proofType:"onchain_pending",proof:y,paymentId:e.paymentId,actor:e.actor||"human"});return R("content_rating",g),e.indexUrl&&await fetch(e.indexUrl,{method:"POST",headers:{"content-type":"application/json",...e.indexHeaders||{}},body:JSON.stringify({siteId:e.siteId,token:e.token,txHash:d,resource:r,url:r.url,path:r.path,actor:e.actor||"human"})}).catch(()=>null),{txHash:d,walletAddress:m,contentId:l,ratingValue:n.ratingValue,reviewHash:u}}function V(t,e={},r={}){let n=w(t),a=L(e),c={...r,...a,ratingMessage:r.ratingMessage||e.message||e.ratingMessage||re(n,a,r),ratingSignature:r.ratingSignature||e.signature||e.ratingSignature||void 0,resource:n};return R("content_rating",c)}function ce(t,e={}){let r=E(t,e.gateOptions||{}),n=h(),a=typeof e.status=="string"?n?.document.querySelector(e.status):e.status,c=typeof e.ratingTarget=="string"?n?.document.querySelector(e.ratingTarget):e.ratingTarget,i=e.ratingButtons||e.buttons||"[data-nibgate-rating-value], [data-rating]",o=(Array.isArray(e.buttons)?e.buttons:typeof e.buttons=="string"?Array.from(n?.document.querySelectorAll(e.buttons)||[]):e.buttons?[e.buttons]:null)||Array.from(n?.document.querySelectorAll(i)||[]),l=e.source||"nibgate-onchain-rating",u=!1,y=e.payment||null;function s(p){typeof e.onStatus=="function"&&e.onStatus(p),a&&(a.textContent=p||"")}function d(p){u=!!p,o.forEach(S=>{S&&"disabled"in S&&(S.disabled=u)})}function g(p=null){return y=p||null,y}function b(p){return c&&("hidden"in c&&(c.hidden=!p),c.setAttribute("aria-hidden",p?"false":"true")),!!p}function C(p){let S=p?.dataset?.nibgateRatingValue||p?.dataset?.rating||p?.value||p?.textContent,T=Number.parseFloat(String(S||"").replace(/[^\d.]/g,""));return Number.isFinite(T)?T:Number(e.rating||e.stars||0)}async function j(p={}){d(!0);try{let S=Number.parseFloat(p.rating??p.stars??p.value??e.rating??e.stars);if(!Number.isFinite(S))throw new Error("Choose a rating before sending.");let T=p.paymentId||e.paymentId||(typeof e.getPaymentId=="function"?e.getPaymentId():y?.paymentId),F=p.unlockRef||e.unlockRef||(typeof e.getUnlockRef=="function"?e.getUnlockRef():null)||T||y?.txHash||y?.transactionHash||"";s(e.pendingMessage||"Send the onchain rating transaction...");let J=await ae(r.resource,{...e,...p,rating:S,paymentId:T,unlockRef:F,source:l});return s(e.successMessage||"Rating sent to Nibgate reputation."),typeof e.onRated=="function"&&e.onRated(J),J}catch(S){let T=S?.message||e.errorMessage||"Rating failed.";throw s(T),typeof e.onError=="function"&&e.onError(S),S}finally{d(!1)}}function _(){return o.forEach(p=>{p?.addEventListener?.("click",()=>j({rating:C(p)}).catch(()=>null))}),e.visible!==void 0&&b(!!e.visible),P}let P={resource:r.resource,rate:j,mount:_,setPayment:g,setVisible:b};return e.autoMount!==!1&&_(),P}function oe(t,e={}){let r=E(t,e.gateOptions||{}),n=h();if(!n)return null;let a=typeof e.target=="string"?n.document.querySelector(e.target):e.target;if(!a)return null;let c=[1,2,3,4,5],i=0,m=n.document.createElement("div");m.className="nibgate-rating-ui",m.style.cssText="display:flex;align-items:center;gap:4px;padding:8px 0";let o=c.map(s=>{let d=n.document.createElement("button");return d.type="button",d.dataset.nibgateRatingValue=String(s),d.setAttribute("aria-label",`${s} star${s>1?"s":""}`),d.innerHTML="\u2606",d.style.cssText="background:none;border:none;font-size:24px;cursor:pointer;color:#ccc;transition:color 0.15s;padding:2px;line-height:1",d.addEventListener("mouseenter",()=>{o.forEach((g,b)=>g.style.color=b<s?"#f5b342":"#ccc")}),d.addEventListener("mouseleave",()=>{o.forEach((g,b)=>g.style.color=b<i?"#f5b342":"#ccc")}),d.addEventListener("click",()=>{i=s,o.forEach((g,b)=>g.style.color=b<s?"#f5b342":"#ccc"),V(r.resource,{rating:s}).catch(()=>{})}),m.appendChild(d),d}),l=n.document.createElement("span");l.style.cssText="font-size:13px;color:#888;margin-left:8px",l.textContent=e.label||"Rate this content",m.appendChild(l),a.appendChild(m);function u(s,d={}){return r.rate({...d,rating:s})}function y(s){i=s,o.forEach((d,g)=>d.style.color=g<s?"#f5b342":"#ccc")}return{resource:r.resource,container:m,setRating:y,rate:u}}function $(t,e={}){let r=w({...t,paymentRail:"transfer"}),n=e.sendTransfer||e.transfer;if(typeof n!="function")throw new Error("createTransferCheckout requires sendTransfer({ resource, recipient, amount, currency, network }) and a server verifyTransfer hook.");return{resource:r,async pay(a={}){let c=r.recipient||r.payTo,i=String(r.price||r.amount||"0"),m=r.currency||"USDC",o=e.network||a.challenge?.accepts?.[0]?.network||"eip155:5042002",l=await n({resource:r,recipient:c,amount:i,currency:m,network:o,challenge:a.challenge}),u=l?.txHash||l?.hash||l?.transactionHash||l?.paymentId||"";if(!u)throw new Error("Transfer checkout did not return a txHash.");return{paymentSignature:u,signature:u,memo:l.memo||"",metadata:{paymentProvider:"direct-transfer",paymentId:u,txHash:u,recipient:c,amount:Number(i),currency:m,network:o,...l.metadata||l}}}}}async function se(t,e={}){let n=await(e.checkout||$(t,e).pay)({resource:w(t),challenge:e.challenge||null}),a=n?.metadata?.txHash||n?.txHash||n?.paymentSignature||n?.signature||"";if(!a)throw new Error("Transfer checkout did not return a txHash.");return x(t,{...e,headers:{...e.headers||{},"x-nibgate-transfer-tx":a},payment:n.metadata||{paymentProvider:"direct-transfer",txHash:a,paymentId:a}})}function we(t={}){let e=t.resource?w(t.resource):null;function r(n={}){return w({...e||{},...typeof n=="string"?{id:n}:n})}return{content(n,a={}){return R("content_registered",A(r(n),a))},registerContent(n,a={}){return R("content_registered",A(r(n),a))},view(n,a={}){return R("resource_view",A(r(n),a))},track(n,a={}){return R(n||"custom",a)},unlockStarted(n,a={}){return R("unlock_started",A(r(n),a))},unlockCompleted(n,a={}){return R("unlock_completed",A(r(n),a))},paymentCompleted(n,a={}){return R("payment_completed",A(r(n),a))},rateResource(n,a={},c={}){return V(r(n),a,c)},ratingMessage(n,a={},c={}){return re(r(n),a,c)},gate(n,a={}){return E(r(n),{...a,client:this})},trackResourcePage(n,a={}){return v(r(n),a)},checkResourceAccess(n,a={}){return x(r(n),a)},payWithPaymentSignature(n,a={}){return z(r(n),a)},createWalletCheckout(n,a={}){return te(r(n),a)},createCircleGatewayBrowserAdapter(n={}){return D(n)},createTransferCheckout(n,a={}){return $(r(n),a)},payWithTransfer(n,a={}){return se(r(n),a)},createEvmGatewayUnlock(n,a={}){return ne(r(n),a)},createOnchainRating(n,a={}){return ce(r(n),a)},mountRatingUI(n,a={}){return oe(r(n),a)},payAndUnlockResource(n,a={}){return W(r(n),a)},setupResourcePage(n,a={}){return ee(r(n),a)},normalizeResource:r,normalizeContentType:N,flush:K}}var be=we();Ie(be);var De=[{name:"publishToNibgate",label:"Publish to Nibgate discovery",type:"boolean",defaultValue:!0},{name:"type",label:"Content type",type:"select",options:U,defaultValue:"article"},{name:"humanAccess",label:"Human access",type:"select",options:B,defaultValue:"paid"},{name:"agentAccess",label:"Agent access",type:"select",options:B,defaultValue:"paid"},{name:"unlockMode",label:"Unlock mode",type:"select",options:G,defaultValue:"one_time"},{name:"paymentRail",label:"Payment rail",type:"select",options:q,defaultValue:"gateway"},{name:"price",label:"Price",type:"text",defaultValue:"0.005"},{name:"currency",label:"Currency",type:"text",defaultValue:"USDC"},{name:"recipient",label:"Recipient wallet",type:"wallet",defaultValue:""},{name:"ratingsEnabled",label:"Enable ratings",type:"boolean",defaultValue:!0},{name:"license",label:"License / terms",type:"textarea",defaultValue:""}];function Ve(t={}){let e=I(t.access||{humans:t.humanAccess,agents:t.agentAccess}),r=O(t.unlock||t.unlockMode||"one_time");return{publishToNibgate:t.publishToNibgate??t.publishedToNibgate??!0,type:N(t.type||t.contentType||"article"),humanAccess:e.humans,agentAccess:e.agents,unlockMode:r.mode,paymentRail:M(t.paymentRail||t.paymentMode||t.rail),price:String(t.price??t.amount??"0.005"),currency:t.currency||"USDC",recipient:t.recipient||t.payTo||t.receiverAddress||t.creatorWallet||"",ratingsEnabled:t.ratingsEnabled??t.enableRatings??t.reputation?.ratingsEnabled??!0,license:t.license||t.terms||""}}function $e(t={}){return I({humans:t.humanAccess,agents:t.agentAccess})}function je(t={}){return O(t.unlockMode||t.unlock||"one_time")}return Ze(ht);})();
|
|
1
|
+
var Nibgate=(()=>{var ue=Object.defineProperty;var Qe=Object.getOwnPropertyDescriptor;var Ye=Object.getOwnPropertyNames;var Ke=Object.prototype.hasOwnProperty;var Pe=(t,e)=>()=>(t&&(e=t(t=0)),e);var Ae=(t,e)=>{for(var r in e)ue(t,r,{get:e[r],enumerable:!0})},Ze=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Ye(e))!Ke.call(t,a)&&a!==r&&ue(t,a,{get:()=>e[a],enumerable:!(n=Qe(e,a))||n.enumerable});return t};var Xe=t=>Ze(ue({},"__esModule",{value:!0}),t);function dt(t,e){return typeof e=="bigint"?e.toString():e}function q(t){return JSON.stringify(t,dt)}var ee=Pe(()=>{});var Be={};Ae(Be,{createCircleGatewayBrowserAdapter:()=>gt});function ft(t){let e=typeof t=="string"?t:q(t);return typeof Buffer<"u"?Buffer.from(e).toString("base64"):btoa(unescape(encodeURIComponent(e)))}function yt(t){return typeof Buffer<"u"?Buffer.from(t,"base64").toString("utf8"):decodeURIComponent(escape(atob(t)))}async function gt(t={}){let e=t.signer||await t.getSigner?.();if(!e?.address||typeof e.signTypedData!="function")throw new Error("Circle Gateway browser adapter requires an EVM signer with address and signTypedData.");let r=t.clientModule||(t.clientModuleUrl?await Ue(t.clientModuleUrl):await Ue("@circle-fin/x402-batching/client")),{BatchEvmScheme:n}=r,a=new n(e),c=t.network||t.chainId&&`eip155:${t.chainId}`||"eip155:5042002";function i(o){if(o&&typeof o=="object")return o;if(!o||typeof o!="string")throw new Error("Missing PAYMENT-REQUIRED header.");return JSON.parse(yt(o))}function d(o){let l=Array.isArray(o?.accepts)?o.accepts:[],u=l.find(g=>{let s=g.extra||{};return g.network===c&&s.name==="GatewayWalletBatched"&&s.version==="1"&&typeof s.verifyingContract=="string"})||l.find(g=>{let s=g.extra||{};return s.name==="GatewayWalletBatched"&&s.version==="1"&&typeof s.verifyingContract=="string"});if(!u){let g=l.map(m=>m.network).filter(Boolean).join(", ")||"none",s=l.some(m=>{let f=m.extra||{};return f.name==="GatewayWalletBatched"&&f.version==="1"&&typeof f.verifyingContract=="string"});throw new Error(s?`No Circle Gateway batching payment option found for ${c}. Server returned networks: ${g}.`:`The payment challenge is not a Circle Gateway batching challenge. Configure the creator access route with createCircleGatewayServer(...) or createNibgateServer({ paymentMode: 'circle-gateway', network: '${c}' }).`)}return u}return{signer:e,network:c,async pay({paymentRequiredHeader:o,challenge:l}){let u=i(o||l),g=d(u),s=u.x402Version??2,m=await a.createPaymentPayload(s,g),f=ft({...m,resource:u.resource,accepted:g});return{paymentSignature:f,signature:f,metadata:{paymentProvider:"circle-gateway",network:g.network,payer:e.address,recipient:g.payTo||g.recipient,amount:g.amount,currency:g.asset}}}}}var Ue,Oe=Pe(()=>{ee();Ue=new Function("specifier","return import(specifier)")});var Et={};Ae(Et,{ACCESS_MODES:()=>O,CONTENT_TYPES:()=>B,NIBGATE_CONTENT_HASH_NAMESPACE:()=>qe,NIBGATE_CONTENT_SETTING_FIELDS:()=>Ve,NIBGATE_REPUTATION_ABI:()=>De,NIBGATE_REPUTATION_CHAIN_ID:()=>Ge,NIBGATE_REPUTATION_CHAIN_NAME:()=>ze,NIBGATE_REPUTATION_CONTRACT:()=>we,NIBGATE_REPUTATION_RPC_URL:()=>We,PAYMENT_RAILS:()=>G,UNLOCK_MODES:()=>z,checkResourceAccess:()=>T,contentRatingHash:()=>be,createCircleGatewayBrowserAdapter:()=>V,createEvmGatewayUnlock:()=>ae,createGate:()=>E,createNibgate:()=>ke,createNibgateContentSettings:()=>$e,createOnchainRating:()=>oe,createTransferCheckout:()=>j,createWalletCheckout:()=>re,mountRatingUI:()=>se,nibgate:()=>Se,normalizeAccessPolicy:()=>I,normalizeContentType:()=>v,normalizePaymentRail:()=>U,normalizeResource:()=>b,normalizeUnlockPolicy:()=>H,payAndUnlockResource:()=>D,payWithPaymentSignature:()=>W,payWithTransfer:()=>ie,rateContentOnchain:()=>ce,rateResource:()=>$,reviewTextHash:()=>Le,settingsToAccessPolicy:()=>je,settingsToUnlockPolicy:()=>Fe,setupResourcePage:()=>te,trackResourcePage:()=>M,validateResourceMetadata:()=>K});var G=["gateway","transfer"];function U(t,e="gateway"){let r=String(t||"").trim().toLowerCase().replace(/[-\s]+/g,"_");return r==="circle_gateway"||r==="x402"?"gateway":r==="direct_transfer"||r==="wallet_transfer"?"transfer":G.includes(r)?r:e}var B=["music","video","article","image"],et={audio:"music",song:"music",track:"music",album:"music",playlist:"music",photo:"image",picture:"image",illustration:"image",art:"image",movie:"video",clip:"video"},O=["free","paid","blocked"],z=["one_time","metered_stream","metered_read","time_pass","agent_quota"];function v(t){let e=String(t||"").trim().toLowerCase();return B.includes(e)?e:et[e]||"article"}function le(t,e="paid"){let r=String(t||"").trim().toLowerCase();return O.includes(r)?r:e}function I(t={}){if(typeof t=="string"){let e=le(t);return{humans:e,agents:e}}return{humans:le(t.humans||t.human||t.default,"paid"),agents:le(t.agents||t.agent||t.default,"paid")}}function H(t={}){let e=typeof t=="string"?{mode:t}:t||{},r=String(e.mode||e.type||"one_time").trim().toLowerCase().replace(/[-\s]+/g,"_");return{...e,mode:z.includes(r)?r:"one_time"}}function de(){return typeof window<"u"?window:null}function N(t){let e=de();if(!e)return"";let r=`meta[name="${t}"], meta[property="${t}"]`,n=e.document.querySelector(r);return n&&n.getAttribute("content")||""}function tt(t){let e=de();if(!(!e||!t))return`${e.location.origin}${t.startsWith("/")?t:"/"+t}`}function rt(){return N("og:image")||void 0}function nt(){return N("og:description")||N("description")||void 0}function at(){let t=de();return N("og:title")||N("twitter:title")||(t?t.document.title:"")||void 0}function ct(){let t=N("og:type").toLowerCase();return t.includes("music")||t.includes("audio")||t.includes("song")?"music":t.includes("video")||t.includes("movie")?"video":t.includes("image")||t.includes("photo")?"image":"article"}function ot(){let t=N("keywords");if(t)return t.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean).slice(0,8)}function st(t,e){return e&&typeof e=="object"&&Object.keys(e).length>0?I(e):t!=null&&t!==""&&Number.parseFloat(t)>0?{humans:"paid",agents:"paid"}:{humans:"free",agents:"free"}}function b(t={}){let e=typeof t=="string"?{id:t}:t||{},{publisher:r,publisherId:n,publisherWallet:a,publisherHandle:c,publisherName:i,publisherProfileUrl:d,publisherOrigin:o,publisherVerification:l,authorHandle:u,...g}=e,s=e.path||e.route||void 0,m=e.url||tt(s)||void 0,f=e.access,w=e.price??e.amount??"";return{...g,id:String(e.id||e.contentId||e.slug||"").trim(),title:String(e.title||e.name||at()||"Untitled").trim(),type:v(e.type||e.contentType||ct()),price:w,currency:e.currency||"USDC",paymentRail:U(e.paymentRail||e.paymentMode||e.rail),recipient:e.recipient||e.receiver||e.receiverAddress||e.payTo||e.creatorWallet||void 0,payTo:e.payTo||e.recipient||e.receiver||e.receiverAddress||e.creatorWallet||void 0,path:s,url:m,imageUrl:e.imageUrl||e.image||rt()||void 0,description:e.description||e.summary||nt()||void 0,tags:e.tags||ot()||void 0,access:st(w,f),unlock:H(e.unlock),ratingsEnabled:e.ratingsEnabled??e.enableRatings??e.reputation?.ratingsEnabled??!0,reputation:{...typeof e.reputation=="object"&&e.reputation?e.reputation:{},ratingsEnabled:e.ratingsEnabled??e.enableRatings??e.reputation?.ratingsEnabled??!0}}}function Y(t){return Array.isArray(t)?t.length>0:t!=null&&String(t).trim()!==""}function it(t={}){let e=I(t.access);return e.humans==="paid"||e.agents==="paid"||Number.parseFloat(t.price||t.amount||"0")>0}function K(t={},e={}){let r=b(t),n=[],a=[],c=e.required||["id"],i=e.recommended||["title","url","description","imageUrl","tags"];for(let o of c)Y(r[o])||a.push(`Missing required content metadata: ${o}`);for(let o of i)Y(r[o])||n.push(`Missing recommended discovery metadata: ${o}`);B.includes(r.type)||a.push("Content type must be one of music, video, article, or image."),r.url&&!/^https?:\/\//i.test(String(r.url))&&n.push("Use an absolute canonical url for stronger discovery identity."),r.imageUrl&&!/^https?:\/\//i.test(String(r.imageUrl))&&n.push("Use an absolute imageUrl for thumbnails in Explore and agent discovery."),it(r)&&(Y(r.price)||a.push("Paid content requires price."),Y(r.recipient||r.payTo)||n.push("Paid content should include recipient/payTo (server value from 402 challenge is used for actual payment)."));let d=Math.max(0,100-a.length*20-n.length*8);return{ok:a.length===0,score:d,errors:a,warnings:n,resource:r}}function h(){return typeof window>"u"?null:window}function ut(t,e){let r=h();return r?(r.__nibgateClientQueue=r.__nibgateClientQueue||[],r.__nibgateClientQueue.push({eventName:t,payload:e}),!0):!1}function Z(){let t=h();if(!t?.nibgateHub?.track||!Array.isArray(t.__nibgateClientQueue))return!1;let e=t.__nibgateClientQueue.splice(0);return e.forEach(r=>{t.nibgateHub.track(r.eventName,r.payload)}),e.length>0}function lt(){let t=h();if(!t||t.__nibgateClientFlushStarted)return;t.__nibgateClientFlushStarted=!0;let e=0,r=t.setInterval(()=>{e+=1,Z(),(t.nibgateHub?.track||e>=80)&&(t.clearInterval(r),t.__nibgateClientFlushStarted=!1)},250)}function C(t,e={}){let r=h();return r?r.nibgateHub?.track?(r.nibgateHub.track(t,e),Z(),!0):(ut(t,e),lt(),!1):!1}function P(t,e={}){return{...e,resource:b(t)}}function me(t){return`nibgate:unlock:${t.id||t.path||t.url||"content"}`}function fe(t){return`nibgate:payment-proof:${t.id||t.path||t.url||"content"}`}function X(t,e={}){let r=h();if(!r)return!1;try{return r.localStorage.setItem(me(t),JSON.stringify({unlockedAt:new Date().toISOString(),payment:e})),!0}catch{return!1}}function ye(t,e){let r=h();if(!r||!e)return!1;try{let n=typeof e=="string"?e:JSON.stringify(e);return r.localStorage.setItem(fe(t),n),!0}catch{return!1}}function ge(t){let e=h();if(!e)return"";try{return e.localStorage.getItem(fe(t))||""}catch{return""}}function _e(t){let e=b(t),r=h();if(!r)return!1;try{return r.localStorage.removeItem(fe(e)),r.localStorage.removeItem(me(e)),!0}catch{return!1}}function Ne(t){let e=h();if(!e)return!1;try{return!!e.localStorage.getItem(me(t))}catch{return!1}}var ve=null;function Ie(t){ve=t}function E(t,e={}){let r=b(t),n=e.client||ve;return{resource:r,content(a={}){return n.content(r,a)},view(a={}){return n.view(r,a)},track(a,c={}){return n.track(a,P(r,c))},unlockStarted(a={}){return n.unlockStarted(r,a)},unlockCompleted(a={}){return X(r,a),n.unlockCompleted(r,a)},paymentCompleted(a={}){return n.paymentCompleted(r,a)},isUnlocked(){return Ne(r)},markUnlocked(a={}){return X(r,a),n.unlockCompleted(r,a),n.paymentCompleted(r,a),!0},async unlock(a={}){n.unlockStarted(r);let c=typeof a=="function"?await a(r):a;return X(r,c||{}),n.unlockCompleted(r,c||{}),n.paymentCompleted(r,c||{}),{unlocked:!0,resource:r,payment:c||{}}},rate(a={},c={}){return n.rateResource(r,a,c)}}}ee();function M(t,e={}){let r=E(t,e.gateOptions||{}),n=K(r.resource,e.validation||{});return(n.warnings.length||n.errors.length)&&e.warn!==!1&&h()?.console?.warn&&h().console.warn("Nibgate content metadata needs attention",n),r.content({source:e.source,metadataQuality:{score:n.score,warnings:n.warnings,errors:n.errors},...e.content||{}}),r.view({source:e.source,path:e.path||h()?.location?.pathname||r.resource.path,referrer:e.referrer??h()?.document?.referrer??"",...e.view||{}}),r}function te(t,e={}){let r=M(t,e),n=h();if(!n)return r;let a=typeof e.button=="string"?n.document.querySelector(e.button):e.button,c=typeof e.status=="string"?n.document.querySelector(e.status):e.status,i=e.onStatus||(d=>{c&&(c.textContent=d||"")});return a&&a.addEventListener("click",async()=>{a.disabled=!0;try{await T(t,{...e,onStatus:i})}finally{a.disabled=!1}}),r}async function T(t,e={}){let r=E(t,e.gateOptions||{}),n=e.accessPath||r.resource.accessPath||"/api/nibgate/access",a=typeof e.onStatus=="function"?e.onStatus:()=>{};a(e.checkingMessage||"Checking access route..."),r.unlockStarted({source:e.source,paymentProvider:e.paymentProvider||"nibgate-access-route"});let c=await fetch(n,{method:e.method||"GET",headers:{accept:"application/json",...ge(r.resource)?{"x-nibgate-payment-proof":ge(r.resource)}:{},...e.headers||{}},body:e.body}),i=await c.json().catch(()=>({}));if(c.status===402){if(r.track("payment_challenge_returned",{source:e.source,challenge:i,resource:r.resource}),a(e.challengeMessage||"Payment challenge returned. Continue with checkout."),typeof e.createPaymentSignature=="function"||typeof e.checkout=="function")return W(t,{...e,challenge:i,paymentRequiredHeader:c.headers.get("PAYMENT-REQUIRED")||c.headers.get("payment-required")||""});if(e.autoPay&&e.payPath){let o=await D(t,e);return o.ok&&e.retryAfterPay!==!1?T(t,{...e,autoPay:!1}):o}return{ok:!1,status:c.status,challenge:i,resource:r.resource,response:c}}if(!c.ok)return a(i.error||e.errorMessage||"Access check failed"),{ok:!1,status:c.status,error:i.error||"Access check failed",payload:i,resource:r.resource,response:c};let d=e.payment||i.payment||null;return d&&(r.unlockCompleted(d),r.paymentCompleted(d)),a(e.successMessage||"Access allowed and Nibgate events emitted."),{ok:!0,status:c.status,payload:i,payment:d,resource:r.resource,response:c}}async function W(t,e={}){let r=E(t,e.gateOptions||{}),n=e.accessPath||r.resource.accessPath||"/api/nibgate/access",a=typeof e.onStatus=="function"?e.onStatus:()=>{};a(e.paymentMessage||"Waiting for wallet payment approval..."),r.unlockStarted({source:e.source,paymentProvider:e.paymentProvider||"wallet-gateway"});let c=e.paymentSignature||"",i=e.memo||"",d=e.payment||{};if(!c){let s=e.paymentRequiredHeader||"",m=e.challenge||null,w=await(e.createPaymentSignature||e.checkout)({resource:r.resource,challenge:m,paymentRequiredHeader:s,accessPath:n});c=w?.paymentSignature||w?.signature||w?.payment||"",i=w?.memo||w?.paymentMemo||"",d=w?.metadata||w?.paymentMetadata||w||{}}if(!c){let s="Wallet did not return a payment signature.";return r.track("payment_failed",{source:e.source,error:s}),a(s),{ok:!1,status:400,error:s,resource:r.resource}}let o=await fetch(n,{method:e.method||"GET",headers:{accept:"application/json","payment-signature":c,...i?{"payment-memo":i}:{},...e.headers||{}}}),l=await o.text(),u={};try{u=l?JSON.parse(l):{}}catch{u={error:l||"Payment verification failed"}}if(!o.ok){let s=u.detail||u.reason||u.invalidReason||u.error||l||"Payment verification failed",m=typeof s=="string"?s:q(s);return r.track("payment_failed",{source:e.source,status:o.status,error:m,...d}),a(e.paymentErrorMessage||m),{ok:!1,status:o.status,error:m,payload:u,resource:r.resource,response:o}}let g=u.payment||{paymentProvider:e.paymentProvider||"wallet-gateway",paymentId:c,memo:i,amount:Number(r.resource.price||0),revenue:Number(r.resource.price||0),currency:r.resource.currency||"USDC",...d};return ye(r.resource,u.unlockProof),r.markUnlocked(g),a(e.paymentSuccessMessage||"Payment verified. Content unlocked."),{ok:!0,status:o.status,payload:u,payment:g,resource:r.resource,response:o}}async function D(t,e={}){let r=E(t,e.gateOptions||{}),n=e.payPath||r.resource.payPath||"/api/nibgate/pay",a=typeof e.onStatus=="function"?e.onStatus:()=>{};a(e.paymentMessage||"Starting payment..."),r.unlockStarted({source:e.source,paymentProvider:e.paymentProvider||"circle-gateway"});let c=await fetch(n,{method:e.payMethod||"POST",headers:{accept:"application/json","content-type":"application/json",...e.payHeaders||{}},body:JSON.stringify({resource:r.resource,...e.payPayload||{}})}),i=await c.json().catch(()=>({}));if(!c.ok||!i.ok)return r.track("payment_failed",{source:e.source,status:c.status,error:i.error||"Payment failed",detail:i.detail||""}),a(i.detail||i.error||e.paymentErrorMessage||"Payment failed."),{ok:!1,status:c.status,payload:i,resource:r.resource,response:c};let d=i.payment||{paymentProvider:e.paymentProvider||"circle-gateway",paymentId:i.paymentId||`nibgate_payment_${Date.now()}`,amount:Number(r.resource.price||0),revenue:Number(r.resource.price||0),currency:r.resource.currency||"USDC"};return ye(r.resource,i.unlockProof),r.markUnlocked(d),a(e.paymentSuccessMessage||"Payment verified. Content unlocked."),{ok:!0,status:c.status,payload:i,payment:d,resource:r.resource,response:c}}function mt(t,e){let r=h();if(!t||!r)return;let n=typeof t=="string"?r.document.querySelector(t):t;n&&(n.textContent=e||"")}function Me(t,e){let r=h();if(!t||!r)return;let n=typeof t=="string"?r.document.querySelector(t):t;n&&"disabled"in n&&(n.disabled=!!e)}function re(t,e={}){let r=b(t),n=e.accessPath||r.accessPath||"/api/nibgate/access",a=e.button||null,c=e.status||null,i=typeof e.onStatus=="function"?e.onStatus:u=>mt(c,u),d=e.checkout||e.createPaymentSignature||e.pay;if(typeof d!="function")throw new Error("createWalletCheckout requires checkout/createPaymentSignature/pay callback for the active wallet or Gateway adapter.");async function o(u={}){Me(a,!0);try{return await T(r,{...e,...u,accessPath:n,createPaymentSignature:d,onStatus:i})}finally{Me(a,!1)}}function l(){let u=h();if(!u||!a)return{unlock:o};let g=typeof a=="string"?u.document.querySelector(a):a;return g&&g.addEventListener("click",()=>o().catch(s=>i(s.message||"Checkout failed."))),{unlock:o}}return{resource:r,unlock:o,mount:l}}function L(t={}){let e=typeof t=="number"?t:t.rating??t.stars??t.ratingValue??t.score,r=Number.parseFloat(e),n=Number.isFinite(r)?Math.max(1,Math.min(50,r<=5?Math.round(r*10):Math.round(r))):null;return{...t,rating:n?n/10:void 0,ratingValue:n||void 0}}function ne(t,e={},r={}){let n=b(t),c=L(e).ratingValue||0;return["Nibgate content rating",`site:${r.siteDomain||r.domain||n.siteDomain||n.domain||""}`,`content:${n.externalId||n.id}`,`url:${n.url||r.url||""}`,`rating:${c}`,"I confirm this rating is tied to my unlock/payment proof."].join(`
|
|
2
|
+
`)}ee();async function V(t={}){return(await Promise.resolve().then(()=>(Oe(),Be))).createCircleGatewayBrowserAdapter(t)}function ae(t,e={}){let r=E(t,e.gateOptions||{}),n=h(),a=e.accessPath||r.resource.accessPath||"/api/nibgate/access",c=e.source||"nibgate-evm-gateway",i=e.network||"eip155:5042002",d=typeof e.status=="string"?n?.document.querySelector(e.status):e.status,o=typeof e.connectButton=="string"?n?.document.querySelector(e.connectButton):e.connectButton,l=typeof e.disconnectButton=="string"?n?.document.querySelector(e.disconnectButton):e.disconnectButton,u=typeof e.unlockButton=="string"?n?.document.querySelector(e.unlockButton):e.unlockButton,g=typeof e.clearButton=="string"?n?.document.querySelector(e.clearButton):e.clearButton,s=typeof e.walletLabel=="string"?n?.document.querySelector(e.walletLabel):e.walletLabel,m=typeof e.unlockedTarget=="string"?n?.document.querySelector(e.unlockedTarget):e.unlockedTarget,f="",w=!1;function R(y){typeof e.onStatus=="function"&&e.onStatus(y),d&&(d.textContent=y||"")}function F(y){return y?`${y.slice(0,6)}...${y.slice(-4)}`:""}function _(){return n?.ethereum||e.provider||null}function A(y){w=!!y,[o,l,u,g].forEach(k=>{k&&"disabled"in k&&(k.disabled=w||k===o&&!_()||k===l&&!f)})}function p(){let y=!!_();s&&(s.textContent=f?F(f):y?"Ready to connect":"No wallet detected"),o&&(o.textContent=f?"Connected":"Connect wallet"),l&&(l.textContent="Disconnect"),o&&"disabled"in o&&(o.disabled=w||!y),l&&"disabled"in l&&(l.disabled=w||!f)}function S(y,k={}){u&&(u.textContent=y?"Unlocked":`Unlock for ${r.resource.price} ${r.resource.currency||"USDC"}`),m&&("hidden"in m&&(m.hidden=!y),m.setAttribute("aria-hidden",y?"false":"true")),y&&r.markUnlocked(k)}async function x(){A(!0),R("Opening wallet connection...");try{let y=_();if(!y)throw new Error(e.noWalletMessage||"Install or open an EVM wallet to continue.");let k=await y.request({method:"eth_requestAccounts"});if(f=Array.isArray(k)&&k[0]||"",!f)throw new Error("No wallet account selected.");return p(),R("Wallet connected. You can unlock now."),f}finally{A(!1)}}async function J(){A(!0);try{let y=_();if(y?.request&&f)try{await y.request({method:"wallet_revokePermissions",params:[{eth_accounts:{}}]})}catch{}return f="",p(),R(e.disconnectMessage||"Wallet disconnected for this page."),!0}finally{A(!1)}}async function Q(y){let k=_();if(!k)throw new Error(e.noWalletMessage||"Install or open an EVM wallet to continue.");return f||await x(),(await V({network:i,signer:{address:f,signTypedData:Je=>k.request({method:"eth_signTypedData_v4",params:[f,q(Je)]})},clientModule:e.circleClientModule,clientModuleUrl:e.circleClientModuleUrl})).pay(y)}async function Ee(){A(!0);try{f||await x(),A(!0),R("Requesting Gateway unlock...");let y=await T(r.resource,{accessPath:a,source:c,paymentProvider:e.paymentProvider||"circle-gateway-browser",challengeMessage:e.challengeMessage||"Gateway payment required. Connect your wallet to continue...",paymentMessage:e.paymentMessage||"Approve the Gateway payment proof in your wallet...",successMessage:e.successMessage||`Unlocked ${r.resource.title||"content"}.`,checkout:Q,onStatus:R});return y.ok&&(S(!0,y.payment||{}),typeof e.onUnlock=="function"&&e.onUnlock(y)),y}catch(y){let k=y?.message||"Unlock failed. Please try again.";return R(k),{ok:!1,status:0,error:k,resource:r.resource}}finally{A(!1),p()}}function Te(){_e(r.resource),S(!1),R("Local payment proof cleared. The next unlock will require Gateway payment again.")}async function xe(){let y=_();try{let k=y?await y.request({method:"eth_accounts"}):[];f=Array.isArray(k)&&k[0]||""}catch{}p(),S(!1)}function Ce(){return o?.addEventListener?.("click",()=>x().catch(y=>R(y?.message||"Could not connect wallet."))),l?.addEventListener?.("click",()=>J().catch(y=>R(y?.message||"Could not disconnect wallet."))),u?.addEventListener?.("click",()=>Ee()),g?.addEventListener?.("click",Te),xe(),M(r.resource,{source:c}),Re}let Re={resource:r.resource,connect:x,disconnect:J,unlock:Ee,clear:Te,hydrate:xe,mount:Ce,getWalletAddress:()=>f};return e.autoMount!==!1&&Ce(),Re}var pt="0xc62fad09",he=`0x${"0".repeat(64)}`,qe="nibgate:content:v1",Ge=5042002,ze="Arc Testnet",We="https://rpc.testnet.arc.network",we="0x9f27fd62e75f86a3c7addfdba443aab1f930e281",De=[{type:"function",name:"rateContent",stateMutability:"nonpayable",inputs:[{name:"contentId",type:"bytes32"},{name:"rating",type:"uint8"},{name:"reviewHash",type:"bytes32"},{name:"unlockRef",type:"string"}],outputs:[]}];function ht(t=""){return String(t||"").replace(/^0x/i,"").toLowerCase()}function He(t=""){let e=ht(t);if(e.length>64)throw new Error("ABI word is too long.");return e.padEnd(64,"0")}function pe(t=0){return Number(t||0).toString(16).padStart(64,"0")}function wt(t=""){return Array.from(new TextEncoder().encode(String(t||""))).map(e=>e.toString(16).padStart(2,"0")).join("")}function bt(t=""){let e=wt(t),r=e.length/2,n=Math.ceil(r/32)*64;return pe(r)+e.padEnd(n,"0")}function kt({contentId:t,ratingValue:e,reviewHash:r,unlockRef:n}){return pt+He(t)+pe(e)+He(r||he)+pe(128)+bt(n||"")}function be(t,e={}){let r=e.contentId||e.contentHash;if(!r)throw new Error("contentId/contentHash is required. Use the Nibgate backend prepare endpoint or pass a known content hash.");return r}function Le(t=""){if(!t)return he;throw new Error("Text review hashing is not available in direct-browser mode. Pass reviewHash from your app/backend.")}async function St(t,e={}){if(e.contentId||e.contentHash)return{contentId:e.contentId||e.contentHash};let r=e.prepareUrl||e.indexUrl?.replace(/\/index$/,"/prepare");if(!r)throw new Error("contentId/contentHash or prepareUrl is required for onchain rating.");let n=await fetch(r,{method:"POST",headers:{"content-type":"application/json",...e.indexHeaders||{}},body:JSON.stringify({siteId:e.siteId,token:e.token,resource:t,url:t.url,path:t.path})}),a=await n.json().catch(()=>({}));if(!n.ok||!a.contentHash)throw new Error(a.error||"Could not prepare Nibgate onchain rating.");return a}async function ce(t,e={}){let r=b(t),n=L(e.rating??e.stars??e);if(!n.ratingValue)throw new Error("Rating must be between 0.1 and 5 stars.");let a=e.provider||globalThis?.ethereum;if(!a?.request)throw new Error("Connect an EVM wallet to rate this content onchain.");let c=e.contractAddress||e.reputationContract||we;if(!c)throw new Error("Nibgate reputation contract address is not configured.");let i=await a.request({method:"eth_requestAccounts"}),d=Array.isArray(i)&&i[0]||"";if(!d)throw new Error("No wallet account selected.");let o=await St(r,e),l=o.contentHash||o.contentId||be(r,e),u=e.reviewHash||he,g=String(e.unlockRef||e.paymentId||e.txHash||""),s=kt({contentId:l,ratingValue:n.ratingValue,reviewHash:u,unlockRef:g}),m=await a.request({method:"eth_sendTransaction",params:[{from:d,to:c,data:s}]}),f=P(r,{rating:n.rating,ratingValue:n.ratingValue,walletAddress:d,txHash:m,contentHash:l,reviewHash:u,proofType:"onchain_pending",proof:g,paymentId:e.paymentId,actor:e.actor||"human"});return C("content_rating",f),e.indexUrl&&await fetch(e.indexUrl,{method:"POST",headers:{"content-type":"application/json",...e.indexHeaders||{}},body:JSON.stringify({siteId:e.siteId,token:e.token,txHash:m,resource:r,url:r.url,path:r.path,actor:e.actor||"human"})}).catch(()=>null),{txHash:m,walletAddress:d,contentId:l,ratingValue:n.ratingValue,reviewHash:u}}function $(t,e={},r={}){let n=b(t),a=L(e),c={...r,...a,ratingMessage:r.ratingMessage||e.message||e.ratingMessage||ne(n,a,r),ratingSignature:r.ratingSignature||e.signature||e.ratingSignature||void 0,resource:n};return C("content_rating",c)}function oe(t,e={}){let r=E(t,e.gateOptions||{}),n=h(),a=typeof e.status=="string"?n?.document.querySelector(e.status):e.status,c=typeof e.ratingTarget=="string"?n?.document.querySelector(e.ratingTarget):e.ratingTarget,i=e.ratingButtons||e.buttons||"[data-nibgate-rating-value], [data-rating]",o=(Array.isArray(e.buttons)?e.buttons:typeof e.buttons=="string"?Array.from(n?.document.querySelectorAll(e.buttons)||[]):e.buttons?[e.buttons]:null)||Array.from(n?.document.querySelectorAll(i)||[]),l=e.source||"nibgate-onchain-rating",u=!1,g=e.payment||null;function s(p){typeof e.onStatus=="function"&&e.onStatus(p),a&&(a.textContent=p||"")}function m(p){u=!!p,o.forEach(S=>{S&&"disabled"in S&&(S.disabled=u)})}function f(p=null){return g=p||null,g}function w(p){return c&&("hidden"in c&&(c.hidden=!p),c.setAttribute("aria-hidden",p?"false":"true")),!!p}function R(p){let S=p?.dataset?.nibgateRatingValue||p?.dataset?.rating||p?.value||p?.textContent,x=Number.parseFloat(String(S||"").replace(/[^\d.]/g,""));return Number.isFinite(x)?x:Number(e.rating||e.stars||0)}async function F(p={}){m(!0);try{let S=Number.parseFloat(p.rating??p.stars??p.value??e.rating??e.stars);if(!Number.isFinite(S))throw new Error("Choose a rating before sending.");let x=p.paymentId||e.paymentId||(typeof e.getPaymentId=="function"?e.getPaymentId():g?.paymentId),J=p.unlockRef||e.unlockRef||(typeof e.getUnlockRef=="function"?e.getUnlockRef():null)||x||g?.txHash||g?.transactionHash||"";s(e.pendingMessage||"Send the onchain rating transaction...");let Q=await ce(r.resource,{...e,...p,rating:S,paymentId:x,unlockRef:J,source:l});return s(e.successMessage||"Rating sent to Nibgate reputation."),typeof e.onRated=="function"&&e.onRated(Q),Q}catch(S){let x=S?.message||e.errorMessage||"Rating failed.";throw s(x),typeof e.onError=="function"&&e.onError(S),S}finally{m(!1)}}function _(){return o.forEach(p=>{p?.addEventListener?.("click",()=>F({rating:R(p)}).catch(()=>null))}),e.visible!==void 0&&w(!!e.visible),A}let A={resource:r.resource,rate:F,mount:_,setPayment:f,setVisible:w};return e.autoMount!==!1&&_(),A}function se(t,e={}){let r=E(t,e.gateOptions||{}),n=h();if(!n)return null;let a=typeof e.target=="string"?n.document.querySelector(e.target):e.target;if(!a)return null;let c=[1,2,3,4,5],i=0,d=n.document.createElement("div");d.className="nibgate-rating-ui",d.style.cssText="display:flex;align-items:center;gap:4px;padding:8px 0";let o=c.map(s=>{let m=n.document.createElement("button");return m.type="button",m.dataset.nibgateRatingValue=String(s),m.setAttribute("aria-label",`${s} star${s>1?"s":""}`),m.innerHTML="\u2606",m.style.cssText="background:none;border:none;font-size:24px;cursor:pointer;color:#ccc;transition:color 0.15s;padding:2px;line-height:1",m.addEventListener("mouseenter",()=>{o.forEach((f,w)=>f.style.color=w<s?"#f5b342":"#ccc")}),m.addEventListener("mouseleave",()=>{o.forEach((f,w)=>f.style.color=w<i?"#f5b342":"#ccc")}),m.addEventListener("click",()=>{i=s,o.forEach((f,w)=>f.style.color=w<s?"#f5b342":"#ccc"),$(r.resource,{rating:s}).catch(()=>{})}),d.appendChild(m),m}),l=n.document.createElement("span");l.style.cssText="font-size:13px;color:#888;margin-left:8px",l.textContent=e.label||"Rate this content",d.appendChild(l),a.appendChild(d);function u(s,m={}){return r.rate({...m,rating:s})}function g(s){i=s,o.forEach((m,f)=>m.style.color=f<s?"#f5b342":"#ccc")}return{resource:r.resource,container:d,setRating:g,rate:u}}function j(t,e={}){let r=b({...t,paymentRail:"transfer"}),n=e.sendTransfer||e.transfer;if(typeof n!="function")throw new Error("createTransferCheckout requires sendTransfer({ resource, recipient, amount, currency, network }) and a server verifyTransfer hook.");return{resource:r,async pay(a={}){let c=r.recipient||r.payTo,i=String(r.price||r.amount||"0"),d=r.currency||"USDC",o=e.network||a.challenge?.accepts?.[0]?.network||"eip155:5042002",l=await n({resource:r,recipient:c,amount:i,currency:d,network:o,challenge:a.challenge}),u=l?.txHash||l?.hash||l?.transactionHash||l?.paymentId||"";if(!u)throw new Error("Transfer checkout did not return a txHash.");return{paymentSignature:u,signature:u,memo:l.memo||"",metadata:{paymentProvider:"direct-transfer",paymentId:u,txHash:u,recipient:c,amount:Number(i),currency:d,network:o,...l.metadata||l}}}}}async function ie(t,e={}){let n=await(e.checkout||j(t,e).pay)({resource:b(t),challenge:e.challenge||null}),a=n?.metadata?.txHash||n?.txHash||n?.paymentSignature||n?.signature||"";if(!a)throw new Error("Transfer checkout did not return a txHash.");return T(t,{...e,headers:{...e.headers||{},"x-nibgate-transfer-tx":a},payment:n.metadata||{paymentProvider:"direct-transfer",txHash:a,paymentId:a}})}function ke(t={}){let e=t.resource?b(t.resource):null;function r(n={}){return b({...e||{},...typeof n=="string"?{id:n}:n})}return{content(n,a={}){return C("content_registered",P(r(n),a))},registerContent(n,a={}){return C("content_registered",P(r(n),a))},view(n,a={}){return C("resource_view",P(r(n),a))},track(n,a={}){return C(n||"custom",a)},unlockStarted(n,a={}){return C("unlock_started",P(r(n),a))},unlockCompleted(n,a={}){return C("unlock_completed",P(r(n),a))},paymentCompleted(n,a={}){return C("payment_completed",P(r(n),a))},rateResource(n,a={},c={}){return $(r(n),a,c)},ratingMessage(n,a={},c={}){return ne(r(n),a,c)},gate(n,a={}){return E(r(n),{...a,client:this})},trackResourcePage(n,a={}){return M(r(n),a)},checkResourceAccess(n,a={}){return T(r(n),a)},payWithPaymentSignature(n,a={}){return W(r(n),a)},createWalletCheckout(n,a={}){return re(r(n),a)},createCircleGatewayBrowserAdapter(n={}){return V(n)},createTransferCheckout(n,a={}){return j(r(n),a)},payWithTransfer(n,a={}){return ie(r(n),a)},createEvmGatewayUnlock(n,a={}){return ae(r(n),a)},createOnchainRating(n,a={}){return oe(r(n),a)},mountRatingUI(n,a={}){return se(r(n),a)},payAndUnlockResource(n,a={}){return D(r(n),a)},setupResourcePage(n,a={}){return te(r(n),a)},normalizeResource:r,normalizeContentType:v,flush:Z}}var Se=ke();Ie(Se);var Ve=[{name:"publishToNibgate",label:"Publish to Nibgate discovery",type:"boolean",defaultValue:!0},{name:"type",label:"Content type",type:"select",options:B,defaultValue:"article"},{name:"humanAccess",label:"Human access",type:"select",options:O,defaultValue:"paid"},{name:"agentAccess",label:"Agent access",type:"select",options:O,defaultValue:"paid"},{name:"unlockMode",label:"Unlock mode",type:"select",options:z,defaultValue:"one_time"},{name:"paymentRail",label:"Payment rail",type:"select",options:G,defaultValue:"gateway"},{name:"price",label:"Price",type:"text",defaultValue:"0.005"},{name:"currency",label:"Currency",type:"text",defaultValue:"USDC"},{name:"recipient",label:"Recipient wallet",type:"wallet",defaultValue:""},{name:"ratingsEnabled",label:"Enable ratings",type:"boolean",defaultValue:!0},{name:"license",label:"License / terms",type:"textarea",defaultValue:""}];function $e(t={}){let e=I(t.access||{humans:t.humanAccess,agents:t.agentAccess}),r=H(t.unlock||t.unlockMode||"one_time");return{publishToNibgate:t.publishToNibgate??t.publishedToNibgate??!0,type:v(t.type||t.contentType||"article"),humanAccess:e.humans,agentAccess:e.agents,unlockMode:r.mode,paymentRail:U(t.paymentRail||t.paymentMode||t.rail),price:String(t.price??t.amount??"0.005"),currency:t.currency||"USDC",recipient:t.recipient||t.payTo||t.receiverAddress||t.creatorWallet||"",ratingsEnabled:t.ratingsEnabled??t.enableRatings??t.reputation?.ratingsEnabled??!0,license:t.license||t.terms||""}}function je(t={}){return I({humans:t.humanAccess,agents:t.agentAccess})}function Fe(t={}){return H(t.unlockMode||t.unlock||"one_time")}return Xe(Et);})();
|
|
3
3
|
//# sourceMappingURL=nibgate.min.js.map
|