@nibgate/sdk 0.2.12 → 0.2.14
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 +35 -2
- package/dist/nibgate.js.map +3 -3
- package/dist/nibgate.min.js +33 -33
- package/dist/nibgate.min.js.map +3 -3
- package/package.json +1 -1
- package/src/browser/gateway.js +10 -1
package/dist/nibgate.min.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/core/payment.js", "../src/core/resource.js", "../src/browser/env.js", "../src/browser/events.js", "../src/browser/storage.js", "../src/browser/gate.js", "../src/browser/json.js", "../src/core/rating.js", "../src/browser/schemes/batch-scheme.js", "../src/browser/gateway.js", "../src/browser/reputation.js", "../src/browser/rating-ui.js", "../src/browser/index.js", "../src/browser/access.js", "../src/browser/track.js", "../src/browser/checkout.js", "../src/browser/client.js", "../src/browser/evm-gateway.js", "../src/browser/transfer.js", "../src/browser/default-ui.js", "../src/core/settings.js"],
|
|
4
|
-
"sourcesContent": ["export const PAYMENT_RAILS = ['gateway', 'transfer'];\n\nexport function normalizePaymentRail(value, fallback = 'gateway') {\n const rail = String(value || '').trim().toLowerCase().replace(/[-\\s]+/g, '_');\n if (rail === 'circle_gateway' || rail === 'x402') return 'gateway';\n if (rail === 'direct_transfer' || rail === 'wallet_transfer') return 'transfer';\n return PAYMENT_RAILS.includes(rail) ? rail : fallback;\n}\n", "import { normalizePaymentRail } from './payment.js';\nexport const CONTENT_TYPES = ['music', 'video', 'article', 'image'];\nexport const TYPE_ALIASES = {\n audio: 'music',\n song: 'music',\n track: 'music',\n album: 'music',\n playlist: 'music',\n photo: 'image',\n picture: 'image',\n illustration: 'image',\n art: 'image',\n movie: 'video',\n clip: 'video'\n};\nexport const ACCESS_MODES = ['free', 'paid', 'blocked'];\nexport const UNLOCK_MODES = ['one_time', 'metered_stream', 'metered_read', 'time_pass', 'agent_quota'];\n\nexport function normalizeContentType(value) {\n const type = String(value || '').trim().toLowerCase();\n if (CONTENT_TYPES.includes(type)) return type;\n return TYPE_ALIASES[type] || 'article';\n}\n\nexport function normalizeAccessMode(value, fallback = 'paid') {\n const mode = String(value || '').trim().toLowerCase();\n return ACCESS_MODES.includes(mode) ? mode : fallback;\n}\n\nexport function normalizeAccessPolicy(value = {}) {\n if (typeof value === 'string') {\n const mode = normalizeAccessMode(value);\n return { humans: mode, agents: mode };\n }\n\n return {\n humans: normalizeAccessMode(value.humans || value.human || value.default, 'paid'),\n agents: normalizeAccessMode(value.agents || value.agent || value.default, 'paid')\n };\n}\n\nexport function normalizeUnlockPolicy(value = {}) {\n const input = typeof value === 'string' ? { mode: value } : (value || {});\n const mode = String(input.mode || input.type || 'one_time').trim().toLowerCase().replace(/[-\\s]+/g, '_');\n return {\n ...input,\n mode: UNLOCK_MODES.includes(mode) ? mode : 'one_time'\n };\n}\n\nfunction browserEnv() {\n return typeof window !== 'undefined' ? window : null;\n}\n\nfunction metaContent(name) {\n const win = browserEnv();\n if (!win) return '';\n const selector = `meta[name=\"${name}\"], meta[property=\"${name}\"]`;\n const node = win.document.querySelector(selector);\n return node ? node.getAttribute('content') || '' : '';\n}\n\nfunction autoDeriveUrl(path) {\n const win = browserEnv();\n if (!win || !path) return undefined;\n return `${win.location.origin}${path.startsWith('/') ? path : '/' + path}`;\n}\n\nfunction autoDeriveImage() {\n return metaContent('og:image') || undefined;\n}\n\nfunction autoDeriveDescription() {\n return metaContent('og:description') || metaContent('description') || undefined;\n}\n\nfunction autoDeriveTitle() {\n const win = browserEnv();\n return metaContent('og:title') || metaContent('twitter:title') || (win ? win.document.title : '') || undefined;\n}\n\nfunction autoDeriveType() {\n const ogType = metaContent('og:type').toLowerCase();\n if (ogType.includes('music') || ogType.includes('audio') || ogType.includes('song')) return 'music';\n if (ogType.includes('video') || ogType.includes('movie')) return 'video';\n if (ogType.includes('image') || ogType.includes('photo')) return 'image';\n return 'article';\n}\n\nfunction autoDeriveTags() {\n const kw = metaContent('keywords');\n if (!kw) return undefined;\n return kw.split(',').map((t) => t.trim().toLowerCase()).filter(Boolean).slice(0, 8);\n}\n\nfunction accessForPrice(price, explicitAccess) {\n if (explicitAccess && typeof explicitAccess === 'object' && Object.keys(explicitAccess).length > 0) {\n return normalizeAccessPolicy(explicitAccess);\n }\n const hasPrice = price !== undefined && price !== null && price !== '' && Number.parseFloat(price) > 0;\n if (hasPrice) return { humans: 'paid', agents: 'paid' };\n return { humans: 'free', agents: 'free' };\n}\n\nexport function normalizeResource(resource = {}) {\n const input = typeof resource === 'string' ? { id: resource } : (resource || {});\n const {\n publisher,\n publisherId,\n publisherWallet,\n publisherHandle,\n publisherName,\n publisherProfileUrl,\n publisherOrigin,\n publisherVerification,\n authorHandle,\n ...v1Input\n } = input;\n\n const path = input.path || input.route || undefined;\n const url = input.url || autoDeriveUrl(path) || undefined;\n const explicitAccess = input.access;\n const price = input.price ?? input.amount ?? '';\n\n return {\n ...v1Input,\n id: String(input.id || input.contentId || input.slug || '').trim(),\n title: String(input.title || input.name || autoDeriveTitle() || 'Untitled').trim(),\n type: normalizeContentType(input.type || input.contentType || autoDeriveType()),\n price,\n currency: input.currency || 'USDC',\n paymentRail: normalizePaymentRail(input.paymentRail || input.paymentMode || input.rail),\n recipient: input.recipient || input.receiver || input.receiverAddress || input.payTo || input.creatorWallet || undefined,\n payTo: input.payTo || input.recipient || input.receiver || input.receiverAddress || input.creatorWallet || undefined,\n path,\n url,\n imageUrl: input.imageUrl || input.image || autoDeriveImage() || undefined,\n description: input.description || input.summary || autoDeriveDescription() || undefined,\n tags: input.tags || autoDeriveTags() || undefined,\n access: accessForPrice(price, explicitAccess),\n unlock: normalizeUnlockPolicy(input.unlock),\n ratingsEnabled: input.ratingsEnabled ?? input.enableRatings ?? input.reputation?.ratingsEnabled ?? true,\n reputation: {\n ...(typeof input.reputation === 'object' && input.reputation ? input.reputation : {}),\n ratingsEnabled: input.ratingsEnabled ?? input.enableRatings ?? input.reputation?.ratingsEnabled ?? true\n }\n };\n}\n\nfunction hasValue(value) {\n if (Array.isArray(value)) return value.length > 0;\n return value !== undefined && value !== null && String(value).trim() !== '';\n}\n\nfunction isPaidResource(resource = {}) {\n const access = normalizeAccessPolicy(resource.access);\n return access.humans === 'paid' || access.agents === 'paid' || Number.parseFloat(resource.price || resource.amount || '0') > 0;\n}\n\nexport function validateResourceMetadata(resource = {}, options = {}) {\n const normalized = normalizeResource(resource);\n const warnings = [];\n const errors = [];\n const required = options.required || ['id', 'type'];\n const recommended = options.recommended || ['title', 'url', 'description', 'imageUrl', 'tags'];\n\n for (const field of required) {\n if (!hasValue(normalized[field])) errors.push(`Missing required content metadata: ${field}`);\n }\n\n for (const field of recommended) {\n if (!hasValue(normalized[field])) warnings.push(`Missing recommended discovery metadata: ${field}`);\n }\n\n if (!CONTENT_TYPES.includes(normalized.type)) errors.push('Content type must be one of music, video, article, or image.');\n\n if (normalized.url && !/^https?:\\/\\//i.test(String(normalized.url))) {\n warnings.push('Use an absolute canonical url for stronger discovery identity.');\n }\n\n if (normalized.imageUrl && !/^https?:\\/\\//i.test(String(normalized.imageUrl))) {\n warnings.push('Use an absolute imageUrl for thumbnails in Explore and agent discovery.');\n }\n\n if (isPaidResource(normalized)) {\n if (!hasValue(normalized.price)) errors.push('Paid content requires price.');\n }\n\n const score = Math.max(0, 100 - errors.length * 20 - warnings.length * 8);\n return {\n ok: errors.length === 0,\n score,\n errors,\n warnings,\n resource: normalized\n };\n}\n\nexport function normalizeServerResource(resource = {}) {\n const normalized = normalizeResource(resource);\n return {\n ...normalized,\n title: normalized.title || String((typeof resource === 'object' && (resource.name || resource.id)) || 'Untitled content').trim(),\n price: normalized.price || '0',\n path: normalized.path || '/',\n };\n}\n", "export function browserWindow() {\n return typeof window === 'undefined' ? null : window;\n}\n", "import { browserWindow } from './env.js';\nimport { normalizeResource } from '../core/resource.js';\n\nexport function queueEvent(eventName, payload) {\n const win = browserWindow();\n if (!win) return false;\n win.__nibgateClientQueue = win.__nibgateClientQueue || [];\n win.__nibgateClientQueue.push({ eventName, payload });\n return true;\n}\n\nexport function flushQueue() {\n const win = browserWindow();\n if (!win?.nibgateHub?.track || !Array.isArray(win.__nibgateClientQueue)) return false;\n const queue = win.__nibgateClientQueue.splice(0);\n queue.forEach((entry) => {\n win.nibgateHub.track(entry.eventName, entry.payload);\n });\n return queue.length > 0;\n}\n\nexport function startQueueFlush() {\n const win = browserWindow();\n if (!win || win.__nibgateClientFlushStarted) return;\n win.__nibgateClientFlushStarted = true;\n let attempts = 0;\n const timer = win.setInterval(() => {\n attempts += 1;\n flushQueue();\n if (win.nibgateHub?.track || attempts >= 80) {\n win.clearInterval(timer);\n win.__nibgateClientFlushStarted = false;\n }\n }, 250);\n}\n\nexport function emit(eventName, payload = {}) {\n const win = browserWindow();\n if (!win) return false;\n\n if (win.nibgateHub?.track) {\n win.nibgateHub.track(eventName, payload);\n flushQueue();\n return true;\n }\n\n queueEvent(eventName, payload);\n startQueueFlush();\n return false;\n}\n\nexport function payloadWithResource(resource, extra = {}) {\n return {\n ...extra,\n resource: normalizeResource(resource)\n };\n}\n", "import { browserWindow } from './env.js';\nimport { normalizeResource } from '../core/resource.js';\n\nexport function unlockStorageKey(resource) {\n return `nibgate:unlock:${resource.id || resource.path || resource.url || 'content'}`;\n}\n\nexport function proofStorageKey(resource) {\n return `nibgate:payment-proof:${resource.id || resource.path || resource.url || 'content'}`;\n}\n\nexport function markUnlocked(resource, payment = {}) {\n const win = browserWindow();\n if (!win) return false;\n try {\n win.localStorage.setItem(unlockStorageKey(resource), JSON.stringify({\n unlockedAt: new Date().toISOString(),\n payment\n }));\n return true;\n } catch (_error) {\n return false;\n }\n}\n\nexport function storePaymentProof(resource, proof) {\n const win = browserWindow();\n if (!win || !proof) return false;\n try {\n const value = typeof proof === 'string' ? proof : JSON.stringify(proof);\n win.localStorage.setItem(proofStorageKey(resource), value);\n return true;\n } catch (_error) {\n return false;\n }\n}\n\nexport function getPaymentProof(resource) {\n const win = browserWindow();\n if (!win) return '';\n try {\n return win.localStorage.getItem(proofStorageKey(resource)) || '';\n } catch (_error) {\n return '';\n }\n}\n\nexport function clearPaymentProof(resource) {\n const normalized = normalizeResource(resource);\n const win = browserWindow();\n if (!win) return false;\n try {\n win.localStorage.removeItem(proofStorageKey(normalized));\n win.localStorage.removeItem(unlockStorageKey(normalized));\n return true;\n } catch (_error) {\n return false;\n }\n}\n\nexport function hasUnlock(resource) {\n const win = browserWindow();\n if (!win) return false;\n try {\n return Boolean(win.localStorage.getItem(unlockStorageKey(resource)));\n } catch (_error) {\n return false;\n }\n}\n", "import { normalizeResource } from '../core/resource.js';\nimport { emit, payloadWithResource } from './events.js';\nimport { hasUnlock, markUnlocked } from './storage.js';\n\nlet defaultClient = null;\n\nexport function setDefaultClient(client) {\n defaultClient = client;\n}\n\nexport function getDefaultClient() {\n return defaultClient;\n}\n\nexport function createGate(resource, options = {}) {\n const normalized = normalizeResource(resource);\n const client = options.client || defaultClient;\n\n return {\n resource: normalized,\n content(extra = {}) {\n return client.content(normalized, extra);\n },\n view(extra = {}) {\n return client.view(normalized, extra);\n },\n track(eventName, payload = {}) {\n return client.track(eventName, payloadWithResource(normalized, payload));\n },\n unlockStarted(extra = {}) {\n return client.unlockStarted(normalized, extra);\n },\n unlockCompleted(payment = {}) {\n markUnlocked(normalized, payment);\n return client.unlockCompleted(normalized, payment);\n },\n paymentCompleted(payment = {}) {\n return client.paymentCompleted(normalized, payment);\n },\n isUnlocked() {\n return hasUnlock(normalized);\n },\n markUnlocked(payment = {}) {\n markUnlocked(normalized, payment);\n client.unlockCompleted(normalized, payment);\n client.paymentCompleted(normalized, payment);\n return true;\n },\n async unlock(handlerOrPayment = {}) {\n client.unlockStarted(normalized);\n const payment = typeof handlerOrPayment === 'function'\n ? await handlerOrPayment(normalized)\n : handlerOrPayment;\n markUnlocked(normalized, payment || {});\n client.unlockCompleted(normalized, payment || {});\n client.paymentCompleted(normalized, payment || {});\n return { unlocked: true, resource: normalized, payment: payment || {} };\n },\n rate(rating = {}, extra = {}) {\n return client.rateResource(normalized, rating, extra);\n }\n };\n}\n", "export function jsonReplacer(_key, value) {\n if (typeof value === 'bigint') return value.toString();\n return value;\n}\n\nexport function stringifyJson(value) {\n return JSON.stringify(value, jsonReplacer);\n}\n", "import { normalizeResource } from './resource.js';\n\nexport function normalizeRating(input = {}) {\n const value = typeof input === 'number' ? input : (input.rating ?? input.stars ?? input.ratingValue ?? input.score);\n const numeric = Number.parseFloat(value);\n const ratingValue = Number.isFinite(numeric)\n ? Math.max(1, Math.min(50, numeric <= 5 ? Math.round(numeric * 10) : Math.round(numeric)))\n : null;\n return {\n ...input,\n rating: ratingValue ? ratingValue / 10 : undefined,\n ratingValue: ratingValue || undefined\n };\n}\n\nexport function ratingMessage(resource, rating = {}, options = {}) {\n const normalized = normalizeResource(resource);\n const normalizedRating = normalizeRating(rating);\n const value = normalizedRating.ratingValue || 0;\n return [\n 'Nibgate content rating',\n `site:${options.siteDomain || options.domain || normalized.siteDomain || normalized.domain || ''}`,\n `content:${normalized.externalId || normalized.id}`,\n `url:${normalized.url || options.url || ''}`,\n `rating:${value}`,\n 'I confirm this rating is tied to my unlock/payment proof.'\n ].join('\\n');\n}\n", "export const CIRCLE_BATCHING_NAME = 'GatewayWalletBatched';\nexport const CIRCLE_BATCHING_VERSION = '1';\nexport const GATEWAY_MIN_AUTH_VALIDITY_SECONDS = 7 * 24 * 60 * 60;\nexport const GATEWAY_AUTH_VALIDITY_WINDOW_SECONDS = GATEWAY_MIN_AUTH_VALIDITY_SECONDS + 100;\n\nconst authorizationTypes = {\n TransferWithAuthorization: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' }\n ]\n};\n\nfunction supportsBatching(requirements) {\n const extra = requirements.extra;\n if (!extra) return false;\n return extra.name === CIRCLE_BATCHING_NAME && extra.version === CIRCLE_BATCHING_VERSION;\n}\n\nfunction getVerifyingContract(requirements) {\n if (!supportsBatching(requirements)) return undefined;\n return requirements.extra?.verifyingContract;\n}\n\nfunction createNonce() {\n const bytes = new Uint8Array(32);\n crypto.getRandomValues(bytes);\n return '0x' + Array.from(bytes).map((b) => b.toString(16).padStart(2, '0')).join('');\n}\n\nfunction getAddress(value) {\n return value && typeof value === 'string' && value.startsWith('0x') ? value.toLowerCase() : value;\n}\n\nexport class BatchEvmScheme {\n constructor(signer) {\n this.signer = signer;\n this.scheme = CIRCLE_BATCHING_NAME;\n this._beforeHooks = [];\n this._afterHooks = [];\n this._failureHooks = [];\n }\n\n onBeforePaymentCreation(hook) {\n this._beforeHooks.push(hook);\n return this;\n }\n\n onAfterPaymentCreation(hook) {\n this._afterHooks.push(hook);\n return this;\n }\n\n onPaymentCreationFailure(hook) {\n this._failureHooks.push(hook);\n return this;\n }\n\n async createPaymentPayload(x402Version, paymentRequirements) {\n const context = {\n paymentRequired: { x402Version, accepts: [paymentRequirements] },\n selectedRequirements: paymentRequirements\n };\n\n for (const hook of this._beforeHooks) {\n const result = await hook(context);\n if (result && result.abort) {\n throw new Error('Payment creation aborted: ' + result.reason);\n }\n }\n\n try {\n if (!supportsBatching(paymentRequirements)) {\n throw new Error(\n 'BatchEvmScheme can only handle Circle batching options. Expected extra.name=\"' +\n CIRCLE_BATCHING_NAME + '\" and extra.version=\"' + CIRCLE_BATCHING_VERSION + '\"'\n );\n }\n\n const verifyingContract = getVerifyingContract(paymentRequirements);\n if (!verifyingContract) {\n throw new Error(\n 'Circle batching option missing extra.verifyingContract (GatewayWallet address)'\n );\n }\n\n const nonce = createNonce();\n const now = Math.floor(Date.now() / 1000);\n const validityWindowSeconds = Math.max(\n paymentRequirements.maxTimeoutSeconds || 0,\n GATEWAY_AUTH_VALIDITY_WINDOW_SECONDS\n );\n\n const authorization = {\n from: getAddress(this.signer.address),\n to: getAddress(paymentRequirements.payTo),\n value: paymentRequirements.amount,\n validAfter: String(now - 600),\n validBefore: String(now + validityWindowSeconds),\n nonce\n };\n\n const signature = await this.signAuthorization(authorization, paymentRequirements, verifyingContract);\n\n const payload = { authorization, signature };\n const result = { x402Version, payload };\n\n const createdContext = { ...context, paymentPayload: result };\n for (const hook of this._afterHooks) {\n try { await hook(createdContext); } catch {}\n }\n\n return result;\n } catch (error) {\n const failureContext = { ...context, error };\n for (const hook of this._failureHooks) {\n const result = await hook(failureContext);\n if (result && result.recovered) {\n return { x402Version: result.payload.x402Version, payload: result.payload.payload };\n }\n }\n throw error;\n }\n }\n\n async signAuthorization(authorization, requirements, verifyingContract) {\n if (!requirements.network.startsWith('eip155:')) {\n throw new Error('BatchEvmScheme: unsupported network format \"' + requirements.network + '\". Expected \"eip155:<chainId>\"');\n }\n\n const chainId = parseInt(requirements.network.split(':')[1], 10);\n\n const domain = {\n name: CIRCLE_BATCHING_NAME,\n version: CIRCLE_BATCHING_VERSION,\n chainId,\n verifyingContract: getAddress(verifyingContract)\n };\n\n const message = {\n from: getAddress(authorization.from),\n to: getAddress(authorization.to),\n value: BigInt(authorization.value),\n validAfter: BigInt(authorization.validAfter),\n validBefore: BigInt(authorization.validBefore),\n nonce: authorization.nonce\n };\n\n const typedData = {\n domain,\n types: authorizationTypes,\n primaryType: 'TransferWithAuthorization',\n message\n };\n\n return this.signer.signTypedData(typedData);\n }\n}\n", "import { BatchEvmScheme } from './schemes/batch-scheme.js';\nimport { stringifyJson } from './json.js';\n\nfunction encodeBase64(value) {\n const text = typeof value === 'string' ? value : stringifyJson(value);\n if (typeof Buffer !== 'undefined') return Buffer.from(text).toString('base64');\n return btoa(unescape(encodeURIComponent(text)));\n}\n\nfunction decodeBase64(value) {\n if (typeof Buffer !== 'undefined') return Buffer.from(value, 'base64').toString('utf8');\n return decodeURIComponent(escape(atob(value)));\n}\n\nexport async function createCircleGatewayBrowserAdapter(options = {}) {\n const signer = options.signer || await options.getSigner?.();\n if (!signer?.address || typeof signer.signTypedData !== 'function') {\n throw new Error('Circle Gateway browser adapter requires an EVM signer with address and signTypedData.');\n }\n\n const scheme = options.clientModule?.BatchEvmScheme\n ? new options.clientModule.BatchEvmScheme(signer)\n : new BatchEvmScheme(signer);\n const network = options.network || options.chainId && `eip155:${options.chainId}` || 'eip155:5042002';\n\n function parsePaymentRequired(input) {\n if (input && typeof input === 'object') return input;\n if (!input || typeof input !== 'string') throw new Error('Missing PAYMENT-REQUIRED header.');\n return JSON.parse(decodeBase64(input));\n }\n\n function selectGatewayRequirement(paymentRequired) {\n const accepts = Array.isArray(paymentRequired?.accepts) ? paymentRequired.accepts : [];\n const selected = accepts.find((option) => {\n const extra = option.extra || {};\n return option.network === network\n && extra.name === 'GatewayWalletBatched'\n && extra.version === '1'\n && typeof extra.verifyingContract === 'string';\n }) || accepts.find((option) => {\n const extra = option.extra || {};\n return extra.name === 'GatewayWalletBatched'\n && extra.version === '1'\n && typeof extra.verifyingContract === 'string';\n });\n if (!selected) {\n const networks = accepts.map((option) => option.network).filter(Boolean).join(', ') || 'none';\n const hasGatewayExtra = accepts.some((option) => {\n const extra = option.extra || {};\n return extra.name === 'GatewayWalletBatched' && extra.version === '1' && typeof extra.verifyingContract === 'string';\n });\n throw new Error(\n hasGatewayExtra\n ? `No Circle Gateway batching payment option found for ${network}. Server returned networks: ${networks}.`\n : `The payment challenge is not a Circle Gateway batching challenge. Configure the creator access route with createCircleGatewayServer(...) or createNibgateServer({ paymentMode: 'circle-gateway', network: '${network}' }).`\n );\n }\n return selected;\n }\n\n return {\n signer,\n network,\n async pay({ paymentRequiredHeader, challenge }) {\n const paymentRequired = parsePaymentRequired(paymentRequiredHeader || challenge);\n const accepted = selectGatewayRequirement(paymentRequired);\n const x402Version = paymentRequired.x402Version ?? 2;\n const paymentPayload = await scheme.createPaymentPayload(x402Version, accepted);\n const paymentSignature = encodeBase64({\n ...paymentPayload,\n resource: paymentRequired.resource,\n accepted\n });\n return {\n paymentSignature,\n signature: paymentSignature,\n metadata: {\n paymentProvider: 'circle-gateway',\n network: accepted.network,\n payer: signer.address,\n recipient: accepted.payTo || accepted.recipient,\n amount: accepted.amount,\n currency: accepted.asset\n }\n };\n }\n };\n}\n", "import { normalizeRating } from '../core/rating.js';\nimport { normalizeResource } from '../core/resource.js';\nimport { emit, payloadWithResource } from './events.js';\n\nconst RATE_CONTENT_SELECTOR = '0xc62fad09';\nconst ZERO_HASH = `0x${'0'.repeat(64)}`;\n\nexport const NIBGATE_CONTENT_HASH_NAMESPACE = 'nibgate:content:v1';\nexport const NIBGATE_REPUTATION_CHAIN_ID = 5042002;\nexport const NIBGATE_REPUTATION_CHAIN_NAME = 'Arc Testnet';\nexport const NIBGATE_REPUTATION_RPC_URL = 'https://rpc.testnet.arc.io';\nexport const NIBGATE_REPUTATION_CONTRACT = '0x9f27fd62e75f86a3c7addfdba443aab1f930e281';\n\nexport const NIBGATE_REPUTATION_ABI = [\n {\n type: 'function',\n name: 'rateContent',\n stateMutability: 'nonpayable',\n inputs: [\n { name: 'contentId', type: 'bytes32' },\n { name: 'rating', type: 'uint8' },\n { name: 'reviewHash', type: 'bytes32' },\n { name: 'unlockRef', type: 'string' }\n ],\n outputs: []\n }\n];\n\nfunction stripHex(value = '') {\n return String(value || '').replace(/^0x/i, '').replace(/[^0-9a-fA-F]/g, '').toLowerCase();\n}\n\nfunction word(hex = '') {\n const clean = stripHex(hex);\n if (clean.length > 64) throw new Error('ABI word is too long.');\n return clean.padStart(64, '0');\n}\n\nfunction wordRight(hex = '') {\n const clean = stripHex(hex);\n if (clean.length > 64) throw new Error('ABI word is too long.');\n return clean.padEnd(64, '0');\n}\n\nfunction numberWord(value = 0) {\n return Number(value || 0).toString(16).padStart(64, '0');\n}\n\nfunction utf8Hex(value = '') {\n return Array.from(new TextEncoder().encode(String(value || '')))\n .map((byte) => byte.toString(16).padStart(2, '0'))\n .join('');\n}\n\nfunction encodeString(value = '') {\n const hex = utf8Hex(value);\n const byteLength = hex.length / 2;\n const paddedLength = Math.ceil(byteLength / 32) * 64;\n return numberWord(byteLength) + hex.padEnd(paddedLength, '0');\n}\n\nfunction encodeRateContent({ contentId, ratingValue, reviewHash, unlockRef }) {\n return RATE_CONTENT_SELECTOR\n + wordRight(contentId)\n + numberWord(ratingValue)\n + wordRight(reviewHash || ZERO_HASH)\n + numberWord(128)\n + encodeString(unlockRef || '');\n}\n\nexport function contentRatingHash(_resource, options = {}) {\n const contentId = options.contentId || options.contentHash;\n if (!contentId) {\n throw new Error('contentId/contentHash is required. Use the Nibgate backend prepare endpoint or pass a known content hash.');\n }\n return contentId;\n}\n\nexport function reviewTextHash(review = '') {\n if (!review) return ZERO_HASH;\n throw new Error('Text review hashing is not available in direct-browser mode. Pass reviewHash from your app/backend.');\n}\n\nasync function prepareOnchainRating(resource, options = {}) {\n if (options.contentId || options.contentHash) return { contentId: options.contentId || options.contentHash };\n const prepareUrl = options.prepareUrl || options.indexUrl?.replace(/\\/index$/, '/prepare');\n if (!prepareUrl) throw new Error('contentId/contentHash or prepareUrl is required for onchain rating.');\n const response = await fetch(prepareUrl, {\n method: 'POST',\n headers: { 'content-type': 'application/json', ...(options.indexHeaders || {}) },\n body: JSON.stringify({\n siteId: options.siteId,\n token: options.token,\n resource,\n url: resource.url,\n path: resource.path\n })\n });\n const payload = await response.json().catch(() => ({}));\n if (!response.ok || !payload.contentHash) throw new Error(payload.error || 'Could not prepare Nibgate onchain rating.');\n return payload;\n}\n\nexport async function rateContentOnchain(resource, options = {}) {\n const normalized = normalizeResource(resource);\n const rating = normalizeRating(options.rating ?? options.stars ?? options);\n if (!rating.ratingValue) throw new Error('Rating must be between 0.1 and 5 stars.');\n\n const provider = options.provider || globalThis?.ethereum;\n if (!provider?.request) throw new Error('Connect an EVM wallet to rate this content onchain.');\n\n const contractAddress = options.contractAddress || options.reputationContract || NIBGATE_REPUTATION_CONTRACT;\n if (!contractAddress) throw new Error('Nibgate reputation contract address is not configured.');\n\n const accounts = await provider.request({ method: 'eth_requestAccounts' });\n const walletAddress = Array.isArray(accounts) ? accounts[0] || '' : '';\n if (!walletAddress) throw new Error('No wallet account selected.');\n\n const prepared = await prepareOnchainRating(normalized, options);\n const contentId = prepared.contentHash || prepared.contentId || contentRatingHash(normalized, options);\n const reviewHash = options.reviewHash || ZERO_HASH;\n const unlockRef = String(options.unlockRef || options.paymentId || options.txHash || '');\n const data = encodeRateContent({ contentId, ratingValue: rating.ratingValue, reviewHash, unlockRef });\n\n const txHash = await provider.request({\n method: 'eth_sendTransaction',\n params: [{\n from: walletAddress,\n to: contractAddress,\n data\n }]\n });\n\n const payload = payloadWithResource(normalized, {\n rating: rating.rating,\n ratingValue: rating.ratingValue,\n walletAddress,\n txHash,\n contentHash: contentId,\n reviewHash,\n proofType: 'onchain_pending',\n proof: unlockRef,\n paymentId: options.paymentId,\n actor: options.actor || 'human'\n });\n emit('content_rating', payload);\n\n if (options.indexUrl) {\n await fetch(options.indexUrl, {\n method: 'POST',\n headers: { 'content-type': 'application/json', ...(options.indexHeaders || {}) },\n body: JSON.stringify({\n siteId: options.siteId,\n token: options.token,\n txHash,\n resource: normalized,\n url: normalized.url,\n path: normalized.path,\n actor: options.actor || 'human'\n })\n }).catch(() => null);\n }\n\n return { txHash, walletAddress, contentId, ratingValue: rating.ratingValue, reviewHash };\n}\n", "import { normalizeResource, normalizeContentType } from '../core/resource.js';\nimport { normalizeRating, ratingMessage } from '../core/rating.js';\nimport { emit } from './events.js';\nimport { browserWindow } from './env.js';\nimport { rateContentOnchain } from './reputation.js';\nimport { createGate } from './gate.js';\n\nexport function rateResource(resource, rating = {}, extra = {}) {\n const normalized = normalizeResource(resource);\n const normalizedRating = normalizeRating(rating);\n const payload = {\n ...extra,\n ...normalizedRating,\n ratingMessage: extra.ratingMessage || rating.message || rating.ratingMessage || ratingMessage(normalized, normalizedRating, extra),\n ratingSignature: extra.ratingSignature || rating.signature || rating.ratingSignature || undefined,\n resource: normalized\n };\n return emit('content_rating', payload);\n}\n\nexport function createOnchainRating(resource, options = {}) {\n const item = createGate(resource, options.gateOptions || {});\n const win = browserWindow();\n const statusTarget = typeof options.status === 'string' ? win?.document.querySelector(options.status) : options.status;\n const ratingTarget = typeof options.ratingTarget === 'string' ? win?.document.querySelector(options.ratingTarget) : options.ratingTarget;\n const buttonSelector = options.ratingButtons || options.buttons || '[data-nibgate-rating-value], [data-rating]';\n const explicitButtons = Array.isArray(options.buttons)\n ? options.buttons\n : typeof options.buttons === 'string'\n ? Array.from(win?.document.querySelectorAll(options.buttons) || [])\n : options.buttons\n ? [options.buttons]\n : null;\n const buttons = explicitButtons || Array.from(win?.document.querySelectorAll(buttonSelector) || []);\n const source = options.source || 'nibgate-onchain-rating';\n\n let busy = false;\n let payment = options.payment || null;\n\n function setStatus(message) {\n if (typeof options.onStatus === 'function') options.onStatus(message);\n if (statusTarget) statusTarget.textContent = message || '';\n }\n\n function setBusy(value) {\n busy = Boolean(value);\n buttons.forEach((button) => {\n if (button && 'disabled' in button) button.disabled = busy;\n });\n }\n\n function setPayment(nextPayment = null) {\n payment = nextPayment || null;\n return payment;\n }\n\n function setVisible(isVisible) {\n if (!ratingTarget) return Boolean(isVisible);\n if ('hidden' in ratingTarget) ratingTarget.hidden = !isVisible;\n ratingTarget.setAttribute('aria-hidden', isVisible ? 'false' : 'true');\n return Boolean(isVisible);\n }\n\n function valueFromButton(button) {\n const raw = button?.dataset?.nibgateRatingValue || button?.dataset?.rating || button?.value || button?.textContent;\n const numeric = Number.parseFloat(String(raw || '').replace(/[^\\d.]/g, ''));\n return Number.isFinite(numeric) ? numeric : Number(options.rating || options.stars || 0);\n }\n\n async function rate(input = {}) {\n setBusy(true);\n try {\n const rating = Number.parseFloat(input.rating ?? input.stars ?? input.value ?? options.rating ?? options.stars);\n if (!Number.isFinite(rating)) throw new Error('Choose a rating before sending.');\n const paymentId = input.paymentId || options.paymentId || (typeof options.getPaymentId === 'function' ? options.getPaymentId() : payment?.paymentId);\n const unlockRef = input.unlockRef || options.unlockRef\n || (typeof options.getUnlockRef === 'function' ? options.getUnlockRef() : null)\n || paymentId || payment?.txHash || payment?.transactionHash || '';\n\n setStatus(options.pendingMessage || 'Send the onchain rating transaction...');\n const result = await rateContentOnchain(item.resource, { ...options, ...input, rating, paymentId, unlockRef, source });\n setStatus(options.successMessage || 'Rating sent to Nibgate reputation.');\n if (typeof options.onRated === 'function') options.onRated(result);\n return result;\n } catch (error) {\n const message = error?.message || options.errorMessage || 'Rating failed.';\n setStatus(message);\n if (typeof options.onError === 'function') options.onError(error);\n throw error;\n } finally {\n setBusy(false);\n }\n }\n\n function mount() {\n buttons.forEach((button) => {\n button?.addEventListener?.('click', () => rate({ rating: valueFromButton(button) }).catch(() => null));\n });\n if (options.visible !== undefined) setVisible(Boolean(options.visible));\n return controller;\n }\n\n const controller = { resource: item.resource, rate, mount, setPayment, setVisible };\n if (options.autoMount !== false) mount();\n return controller;\n}\n\nexport function mountRatingUI(resource, options = {}) {\n const item = createGate(resource, options.gateOptions || {});\n const win = browserWindow();\n if (!win) return null;\n const target = typeof options.target === 'string' ? win.document.querySelector(options.target) : options.target;\n if (!target) return null;\n\n const stars = [1, 2, 3, 4, 5];\n let selectedRating = 0;\n\n const container = win.document.createElement('div');\n container.className = 'nibgate-rating-ui';\n container.style.cssText = 'display:flex;align-items:center;gap:4px;padding:8px 0';\n\n const starButtons = stars.map((value) => {\n const btn = win.document.createElement('button');\n btn.type = 'button';\n btn.dataset.nibgateRatingValue = String(value);\n btn.setAttribute('aria-label', `${value} star${value > 1 ? 's' : ''}`);\n btn.innerHTML = '\u2606';\n btn.style.cssText = 'background:none;border:none;font-size:24px;cursor:pointer;color:#ccc;transition:color 0.15s;padding:2px;line-height:1';\n btn.addEventListener('mouseenter', () => {\n starButtons.forEach((b, i) => b.style.color = i < value ? '#f5b342' : '#ccc');\n });\n btn.addEventListener('mouseleave', () => {\n starButtons.forEach((b, i) => b.style.color = i < selectedRating ? '#f5b342' : '#ccc');\n });\n btn.addEventListener('click', () => {\n selectedRating = value;\n starButtons.forEach((b, i) => b.style.color = i < value ? '#f5b342' : '#ccc');\n rateResource(item.resource, { rating: value }).catch(() => {});\n });\n container.appendChild(btn);\n return btn;\n });\n\n const statusEl = win.document.createElement('span');\n statusEl.style.cssText = 'font-size:13px;color:#888;margin-left:8px';\n statusEl.textContent = options.label || 'Rate this content';\n container.appendChild(statusEl);\n\n target.appendChild(container);\n\n function rate(r, input = {}) {\n return item.rate({ ...input, rating: r });\n }\n\n function setRating(value) {\n selectedRating = value;\n starButtons.forEach((b, i) => b.style.color = i < value ? '#f5b342' : '#ccc');\n }\n\n return { resource: item.resource, container, setRating, rate };\n}\n", "export { createGate } from './gate.js';\nexport { checkResourceAccess, payWithPaymentSignature, payAndUnlockResource } from './access.js';\nexport { createWalletCheckout } from './checkout.js';\nexport { createNibgate, nibgate } from './client.js';\nexport { createEvmGatewayUnlock, createHostedUnlock, createCircleGatewayBrowserAdapter } from './evm-gateway.js';\nexport { rateResource, createOnchainRating, mountRatingUI } from './rating-ui.js';\nexport { trackResourcePage, setupResourcePage } from './track.js';\nexport { createTransferCheckout, payWithTransfer } from './transfer.js';\nexport { contentRatingHash, NIBGATE_CONTENT_HASH_NAMESPACE, NIBGATE_REPUTATION_ABI, NIBGATE_REPUTATION_CHAIN_ID, NIBGATE_REPUTATION_CHAIN_NAME, NIBGATE_REPUTATION_CONTRACT, NIBGATE_REPUTATION_RPC_URL, rateContentOnchain, reviewTextHash } from './reputation.js';\nexport { renderDefaultUnlockUI, renderDefaultRatingUI, renderDefaultGatewayWalletUI } from './default-ui.js';\nexport { CONTENT_TYPES, ACCESS_MODES, UNLOCK_MODES, normalizeContentType, normalizeResource, normalizeAccessPolicy, normalizeUnlockPolicy, validateResourceMetadata } from '../core/resource.js';\nexport { NIBGATE_CONTENT_SETTING_FIELDS, createNibgateContentSettings, settingsToAccessPolicy, settingsToUnlockPolicy } from '../core/settings.js';\nexport { PAYMENT_RAILS, normalizePaymentRail } from '../core/payment.js';\n", "import { normalizeResource } from '../core/resource.js';\nimport { browserWindow } from './env.js';\nimport { emit } from './events.js';\nimport { getPaymentProof, storePaymentProof } from './storage.js';\nimport { stringifyJson } from './json.js';\nimport { createGate } from './gate.js';\nimport { trackResourcePage } from './track.js';\n\nexport async function checkResourceAccess(resource, options = {}) {\n const item = createGate(resource, options.gateOptions || {});\n const accessPath = options.accessPath || item.resource.accessPath || '/api/nibgate/access';\n const status = typeof options.onStatus === 'function' ? options.onStatus : () => {};\n\n status(options.checkingMessage || 'Checking access route...');\n item.unlockStarted({ source: options.source, paymentProvider: options.paymentProvider || 'nibgate-access-route' });\n\n const response = await fetch(accessPath, {\n method: options.method || 'GET',\n headers: {\n accept: 'application/json',\n ...(getPaymentProof(item.resource) ? { 'x-nibgate-payment-proof': getPaymentProof(item.resource) } : {}),\n ...(options.headers || {})\n },\n body: options.body\n });\n const payload = await response.json().catch(() => ({}));\n\n if (response.status === 402) {\n item.track('payment_challenge_returned', { source: options.source, challenge: payload, resource: item.resource });\n status(options.challengeMessage || 'Payment challenge returned. Continue with checkout.');\n if (typeof options.createPaymentSignature === 'function' || typeof options.checkout === 'function') {\n return payWithPaymentSignature(resource, {\n ...options, challenge: payload,\n paymentRequiredHeader: response.headers.get('PAYMENT-REQUIRED') || response.headers.get('payment-required') || ''\n });\n }\n if (options.autoPay && options.payPath) {\n const paymentResult = await payAndUnlockResource(resource, options);\n if (paymentResult.ok && options.retryAfterPay !== false) {\n return checkResourceAccess(resource, { ...options, autoPay: false });\n }\n return paymentResult;\n }\n return { ok: false, status: response.status, challenge: payload, resource: item.resource, response };\n }\n\n if (!response.ok) {\n status(payload.error || options.errorMessage || 'Access check failed');\n return { ok: false, status: response.status, error: payload.error || 'Access check failed', payload, resource: item.resource, response };\n }\n\n const payment = options.payment || payload.payment || null;\n if (payment) {\n item.unlockCompleted(payment);\n item.paymentCompleted(payment);\n }\n status(options.successMessage || 'Access allowed and Nibgate events emitted.');\n return { ok: true, status: response.status, payload, payment, resource: item.resource, response };\n}\n\nexport async function payWithPaymentSignature(resource, options = {}) {\n const item = createGate(resource, options.gateOptions || {});\n const accessPath = options.accessPath || item.resource.accessPath || '/api/nibgate/access';\n const status = typeof options.onStatus === 'function' ? options.onStatus : () => {};\n\n status(options.paymentMessage || 'Waiting for wallet payment approval...');\n item.unlockStarted({ source: options.source, paymentProvider: options.paymentProvider || 'wallet-gateway' });\n\n let paymentSignature = options.paymentSignature || '';\n let paymentMemo = options.memo || '';\n let paymentMetadata = options.payment || {};\n\n if (!paymentSignature) {\n const paymentRequiredHeader = options.paymentRequiredHeader || '';\n const challenge = options.challenge || null;\n const checkout = options.createPaymentSignature || options.checkout;\n const result = await checkout({\n resource: item.resource, challenge, paymentRequiredHeader, accessPath\n });\n paymentSignature = result?.paymentSignature || result?.signature || result?.payment || '';\n paymentMemo = result?.memo || result?.paymentMemo || '';\n paymentMetadata = result?.metadata || result?.paymentMetadata || result || {};\n }\n\n if (!paymentSignature) {\n const error = 'Wallet did not return a payment signature.';\n item.track('payment_failed', { source: options.source, error });\n status(error);\n return { ok: false, status: 400, error, resource: item.resource };\n }\n\n const response = await fetch(accessPath, {\n method: options.method || 'GET',\n headers: {\n accept: 'application/json',\n 'payment-signature': paymentSignature,\n ...(paymentMemo ? { 'payment-memo': paymentMemo } : {}),\n ...(options.headers || {})\n }\n });\n const responseText = await response.text();\n let payload = {};\n try {\n payload = responseText ? JSON.parse(responseText) : {};\n } catch (_error) {\n payload = { error: responseText || 'Payment verification failed' };\n }\n\n if (!response.ok) {\n const detail = payload.detail || payload.reason || payload.invalidReason || payload.error || responseText || 'Payment verification failed';\n const error = typeof detail === 'string' ? detail : stringifyJson(detail);\n item.track('payment_failed', { source: options.source, status: response.status, error, ...paymentMetadata });\n status(options.paymentErrorMessage || error);\n return { ok: false, status: response.status, error, payload, resource: item.resource, response };\n }\n\n const payment = payload.payment || {\n paymentProvider: options.paymentProvider || 'wallet-gateway',\n paymentId: paymentSignature,\n memo: paymentMemo,\n amount: Number(item.resource.price || 0),\n revenue: Number(item.resource.price || 0),\n currency: item.resource.currency || 'USDC',\n ...paymentMetadata\n };\n storePaymentProof(item.resource, payload.unlockProof);\n item.markUnlocked(payment);\n status(options.paymentSuccessMessage || 'Payment verified. Content unlocked.');\n return { ok: true, status: response.status, payload, payment, resource: item.resource, response };\n}\n\nexport async function payAndUnlockResource(resource, options = {}) {\n const item = createGate(resource, options.gateOptions || {});\n const payPath = options.payPath || item.resource.payPath || '/api/nibgate/pay';\n const status = typeof options.onStatus === 'function' ? options.onStatus : () => {};\n\n status(options.paymentMessage || 'Starting payment...');\n item.unlockStarted({ source: options.source, paymentProvider: options.paymentProvider || 'circle-gateway' });\n\n const response = await fetch(payPath, {\n method: options.payMethod || 'POST',\n headers: {\n accept: 'application/json',\n 'content-type': 'application/json',\n ...(options.payHeaders || {})\n },\n body: JSON.stringify({ resource: item.resource, ...(options.payPayload || {}) })\n });\n const payload = await response.json().catch(() => ({}));\n\n if (!response.ok || !payload.ok) {\n item.track('payment_failed', { source: options.source, status: response.status, error: payload.error || 'Payment failed', detail: payload.detail || '' });\n status(payload.detail || payload.error || options.paymentErrorMessage || 'Payment failed.');\n return { ok: false, status: response.status, payload, resource: item.resource, response };\n }\n\n const payment = payload.payment || {\n paymentProvider: options.paymentProvider || 'circle-gateway',\n paymentId: payload.paymentId || `nibgate_payment_${Date.now()}`,\n amount: Number(item.resource.price || 0),\n revenue: Number(item.resource.price || 0),\n currency: item.resource.currency || 'USDC'\n };\n storePaymentProof(item.resource, payload.unlockProof);\n item.markUnlocked(payment);\n status(options.paymentSuccessMessage || 'Payment verified. Content unlocked.');\n return { ok: true, status: response.status, payload, payment, resource: item.resource, response };\n}\n", "import { validateResourceMetadata } from '../core/resource.js';\nimport { browserWindow } from './env.js';\nimport { createGate } from './gate.js';\nimport { checkResourceAccess } from './access.js';\n\nexport function trackResourcePage(resource, options = {}) {\n const item = createGate(resource, options.gateOptions || {});\n const validation = validateResourceMetadata(item.resource, options.validation || {});\n if ((validation.warnings.length || validation.errors.length) && options.warn !== false && browserWindow()?.console?.warn) {\n browserWindow().console.warn('Nibgate content metadata needs attention', validation);\n }\n item.content({ source: options.source, metadataQuality: { score: validation.score, warnings: validation.warnings, errors: validation.errors }, ...(options.content || {}) });\n item.view({\n source: options.source,\n path: options.path || browserWindow()?.location?.pathname || item.resource.path,\n referrer: options.referrer ?? browserWindow()?.document?.referrer ?? '',\n ...(options.view || {})\n });\n return item;\n}\n\nexport function setupResourcePage(resource, options = {}) {\n const item = trackResourcePage(resource, options);\n const win = browserWindow();\n if (!win) return item;\n\n const button = typeof options.button === 'string' ? win.document.querySelector(options.button) : options.button;\n const statusElement = typeof options.status === 'string' ? win.document.querySelector(options.status) : options.status;\n const setStatus = options.onStatus || ((message) => {\n if (statusElement) statusElement.textContent = message || '';\n });\n\n if (button) {\n button.addEventListener('click', async () => {\n button.disabled = true;\n try {\n await checkResourceAccess(resource, { ...options, onStatus: setStatus });\n } finally {\n button.disabled = false;\n }\n });\n }\n\n return item;\n}\n", "import { normalizeResource } from '../core/resource.js';\nimport { browserWindow } from './env.js';\nimport { checkResourceAccess } from './access.js';\n\nfunction setElementText(target, message) {\n const win = browserWindow();\n if (!target || !win) return;\n const element = typeof target === 'string' ? win.document.querySelector(target) : target;\n if (element) element.textContent = message || '';\n}\n\nfunction setElementDisabled(target, disabled) {\n const win = browserWindow();\n if (!target || !win) return;\n const element = typeof target === 'string' ? win.document.querySelector(target) : target;\n if (element && 'disabled' in element) element.disabled = Boolean(disabled);\n}\n\nexport function createWalletCheckout(resource, options = {}) {\n const normalized = normalizeResource(resource);\n const accessPath = options.accessPath || normalized.accessPath || '/api/nibgate/access';\n const button = options.button || null;\n const statusTarget = options.status || null;\n const status = typeof options.onStatus === 'function'\n ? options.onStatus\n : (message) => setElementText(statusTarget, message);\n const checkout = options.checkout || options.createPaymentSignature || options.pay;\n\n if (typeof checkout !== 'function') {\n throw new Error('createWalletCheckout requires checkout/createPaymentSignature/pay callback for the active wallet or Gateway adapter.');\n }\n\n async function unlock(extra = {}) {\n setElementDisabled(button, true);\n try {\n return await checkResourceAccess(normalized, {\n ...options, ...extra, accessPath, createPaymentSignature: checkout, onStatus: status\n });\n } finally {\n setElementDisabled(button, false);\n }\n }\n\n function mount() {\n const win = browserWindow();\n if (!win || !button) return { unlock };\n const element = typeof button === 'string' ? win.document.querySelector(button) : button;\n if (element) element.addEventListener('click', () => unlock().catch((error) => status(error.message || 'Checkout failed.')));\n return { unlock };\n }\n\n return { resource: normalized, unlock, mount };\n}\n", "import { normalizeResource, normalizeContentType } from '../core/resource.js';\nimport { ratingMessage } from '../core/rating.js';\nimport { emit, flushQueue, payloadWithResource } from './events.js';\nimport { setDefaultClient } from './gate.js';\nimport { createGate } from './gate.js';\nimport { checkResourceAccess, payWithPaymentSignature, payAndUnlockResource } from './access.js';\nimport { createWalletCheckout } from './checkout.js';\nimport { createEvmGatewayUnlock, createCircleGatewayBrowserAdapter } from './evm-gateway.js';\nimport { rateResource, createOnchainRating, mountRatingUI } from './rating-ui.js';\nimport { trackResourcePage, setupResourcePage } from './track.js';\nimport { createTransferCheckout, payWithTransfer } from './transfer.js';\n\nexport function createNibgate(defaults = {}) {\n const defaultResource = defaults.resource ? normalizeResource(defaults.resource) : null;\n\n function resourceWithDefaults(resource = {}) {\n return normalizeResource({\n ...(defaultResource || {}),\n ...(typeof resource === 'string' ? { id: resource } : resource)\n });\n }\n\n return {\n content(resource, extra = {}) {\n return emit('content_registered', payloadWithResource(resourceWithDefaults(resource), extra));\n },\n registerContent(resource, extra = {}) {\n return emit('content_registered', payloadWithResource(resourceWithDefaults(resource), extra));\n },\n view(resource, extra = {}) {\n return emit('resource_view', payloadWithResource(resourceWithDefaults(resource), extra));\n },\n track(eventName, payload = {}) {\n return emit(eventName || 'custom', payload);\n },\n unlockStarted(resource, extra = {}) {\n return emit('unlock_started', payloadWithResource(resourceWithDefaults(resource), extra));\n },\n unlockCompleted(resource, payment = {}) {\n return emit('unlock_completed', payloadWithResource(resourceWithDefaults(resource), payment));\n },\n paymentCompleted(resource, payment = {}) {\n return emit('payment_completed', payloadWithResource(resourceWithDefaults(resource), payment));\n },\n rateResource(resource, rating = {}, extra = {}) {\n return rateResource(resourceWithDefaults(resource), rating, extra);\n },\n ratingMessage(resource, rating = {}, messageOptions = {}) {\n return ratingMessage(resourceWithDefaults(resource), rating, messageOptions);\n },\n gate(resource, options = {}) {\n return createGate(resourceWithDefaults(resource), { ...options, client: this });\n },\n trackResourcePage(resource, options = {}) {\n return trackResourcePage(resourceWithDefaults(resource), options);\n },\n checkResourceAccess(resource, options = {}) {\n return checkResourceAccess(resourceWithDefaults(resource), options);\n },\n payWithPaymentSignature(resource, options = {}) {\n return payWithPaymentSignature(resourceWithDefaults(resource), options);\n },\n createWalletCheckout(resource, options = {}) {\n return createWalletCheckout(resourceWithDefaults(resource), options);\n },\n createCircleGatewayBrowserAdapter(options = {}) {\n return createCircleGatewayBrowserAdapter(options);\n },\n createTransferCheckout(resource, options = {}) {\n return createTransferCheckout(resourceWithDefaults(resource), options);\n },\n payWithTransfer(resource, options = {}) {\n return payWithTransfer(resourceWithDefaults(resource), options);\n },\n createEvmGatewayUnlock(resource, options = {}) {\n return createEvmGatewayUnlock(resourceWithDefaults(resource), options);\n },\n createOnchainRating(resource, options = {}) {\n return createOnchainRating(resourceWithDefaults(resource), options);\n },\n mountRatingUI(resource, options = {}) {\n return mountRatingUI(resourceWithDefaults(resource), options);\n },\n payAndUnlockResource(resource, options = {}) {\n return payAndUnlockResource(resourceWithDefaults(resource), options);\n },\n setupResourcePage(resource, options = {}) {\n return setupResourcePage(resourceWithDefaults(resource), options);\n },\n normalizeResource: resourceWithDefaults,\n normalizeContentType,\n flush: flushQueue\n };\n}\n\nexport const nibgate = createNibgate();\nsetDefaultClient(nibgate);\n", "import { normalizeResource } from '../core/resource.js';\nimport { browserWindow } from './env.js';\nimport { clearPaymentProof } from './storage.js';\nimport { stringifyJson } from './json.js';\nimport { createGate } from './gate.js';\nimport { checkResourceAccess } from './access.js';\nimport { trackResourcePage } from './track.js';\n\nexport async function createCircleGatewayBrowserAdapter(options = {}) {\n const gateway = await import('./gateway.js');\n return gateway.createCircleGatewayBrowserAdapter(options);\n}\n\nconst HOSTED_PAY_URL = 'https://api.nibgate.xyz/api/hub/pay';\n\nfunction resolveAccessPath(resource, options) {\n if (options.hosted || options.accessPath === 'hosted') return HOSTED_PAY_URL;\n return options.accessPath || resource.accessPath || '/api/nibgate/access';\n}\n\nexport function createEvmGatewayUnlock(resource, options = {}) {\n const item = createGate(resource, options.gateOptions || {});\n const win = browserWindow();\n const accessPath = resolveAccessPath(item.resource, options);\n const source = options.source || 'nibgate-evm-gateway';\n const network = options.network || 'eip155:5042002';\n const statusTarget = typeof options.status === 'string' ? win?.document.querySelector(options.status) : options.status;\n const connectButton = typeof options.connectButton === 'string' ? win?.document.querySelector(options.connectButton) : options.connectButton;\n const disconnectButton = typeof options.disconnectButton === 'string' ? win?.document.querySelector(options.disconnectButton) : options.disconnectButton;\n const unlockButton = typeof options.unlockButton === 'string' ? win?.document.querySelector(options.unlockButton) : options.unlockButton;\n const clearButton = typeof options.clearButton === 'string' ? win?.document.querySelector(options.clearButton) : options.clearButton;\n const walletLabel = typeof options.walletLabel === 'string' ? win?.document.querySelector(options.walletLabel) : options.walletLabel;\n const unlockedTarget = typeof options.unlockedTarget === 'string' ? win?.document.querySelector(options.unlockedTarget) : options.unlockedTarget;\n\n let walletAddress = '';\n let busy = false;\n\n function setStatus(message) {\n if (typeof options.onStatus === 'function') options.onStatus(message);\n if (statusTarget) statusTarget.textContent = message || '';\n }\n\n function shortAddress(address) {\n return address ? `${address.slice(0, 6)}...${address.slice(-4)}` : '';\n }\n\n function provider() {\n return win?.ethereum || options.provider || null;\n }\n\n function setBusy(value) {\n busy = Boolean(value);\n [connectButton, disconnectButton, unlockButton, clearButton].forEach((button) => {\n if (button && 'disabled' in button) {\n button.disabled = busy || (button === connectButton && !provider()) || (button === disconnectButton && !walletAddress);\n }\n });\n }\n\n function renderWallet() {\n const hasProvider = Boolean(provider());\n if (walletLabel) walletLabel.textContent = walletAddress ? shortAddress(walletAddress) : hasProvider ? 'Ready to connect' : 'No wallet detected';\n if (connectButton) connectButton.textContent = walletAddress ? 'Connected' : 'Connect wallet';\n if (disconnectButton) disconnectButton.textContent = 'Disconnect';\n if (connectButton && 'disabled' in connectButton) connectButton.disabled = busy || !hasProvider;\n if (disconnectButton && 'disabled' in disconnectButton) disconnectButton.disabled = busy || !walletAddress;\n }\n\n function setUnlocked(isUnlocked, payment = {}) {\n if (unlockButton) unlockButton.textContent = isUnlocked ? 'Unlocked' : `Unlock for ${item.resource.price} ${item.resource.currency || 'USDC'}`;\n if (unlockedTarget) {\n if ('hidden' in unlockedTarget) unlockedTarget.hidden = !isUnlocked;\n unlockedTarget.setAttribute('aria-hidden', isUnlocked ? 'false' : 'true');\n }\n if (isUnlocked) item.markUnlocked(payment);\n }\n\n async function connect() {\n setBusy(true);\n setStatus('Opening wallet connection...');\n try {\n const evm = provider();\n if (!evm) throw new Error(options.noWalletMessage || 'Install or open an EVM wallet to continue.');\n const accounts = await evm.request({ method: 'eth_requestAccounts' });\n walletAddress = Array.isArray(accounts) ? accounts[0] || '' : '';\n if (!walletAddress) throw new Error('No wallet account selected.');\n renderWallet();\n setStatus('Wallet connected. You can unlock now.');\n return walletAddress;\n } finally {\n setBusy(false);\n }\n }\n\n async function disconnect() {\n setBusy(true);\n try {\n const evm = provider();\n if (evm?.request && walletAddress) {\n try {\n await evm.request({ method: 'wallet_revokePermissions', params: [{ eth_accounts: {} }] });\n } catch (_error) { }\n }\n walletAddress = '';\n renderWallet();\n setStatus(options.disconnectMessage || 'Wallet disconnected for this page.');\n return true;\n } finally {\n setBusy(false);\n }\n }\n\n async function checkout(input) {\n const evm = provider();\n if (!evm) throw new Error(options.noWalletMessage || 'Install or open an EVM wallet to continue.');\n if (!walletAddress) await connect();\n const gatewayWallet = await createCircleGatewayBrowserAdapter({\n network,\n signer: {\n address: walletAddress,\n signTypedData: (typedData) => evm.request({ method: 'eth_signTypedData_v4', params: [walletAddress, stringifyJson(typedData)] })\n },\n clientModule: options.circleClientModule\n });\n return gatewayWallet.pay(input);\n }\n\n async function unlock() {\n setBusy(true);\n try {\n if (!walletAddress) await connect();\n setBusy(true);\n setStatus('Requesting Gateway unlock...');\n const result = await checkResourceAccess(item.resource, {\n accessPath, source,\n paymentProvider: options.paymentProvider || 'circle-gateway-browser',\n challengeMessage: options.challengeMessage || 'Gateway payment required. Connect your wallet to continue...',\n paymentMessage: options.paymentMessage || 'Approve the Gateway payment proof in your wallet...',\n successMessage: options.successMessage || `Unlocked ${item.resource.title || 'content'}.`,\n method: options.method,\n headers: options.headers,\n body: options.body,\n checkout, onStatus: setStatus\n });\n if (result.ok) {\n setUnlocked(true, result.payment || {});\n if (typeof options.onUnlock === 'function') options.onUnlock(result);\n }\n return result;\n } catch (error) {\n const message = error?.message || 'Unlock failed. Please try again.';\n setStatus(message);\n return { ok: false, status: 0, error: message, resource: item.resource };\n } finally {\n setBusy(false);\n renderWallet();\n }\n }\n\n function clear() {\n clearPaymentProof(item.resource);\n setUnlocked(false);\n setStatus('Local payment proof cleared. The next unlock will require Gateway payment again.');\n }\n\n async function hydrate() {\n const evm = provider();\n try {\n const accounts = evm ? await evm.request({ method: 'eth_accounts' }) : [];\n walletAddress = Array.isArray(accounts) ? accounts[0] || '' : '';\n } catch { }\n renderWallet();\n setUnlocked(false);\n }\n\n function mount() {\n connectButton?.addEventListener?.('click', () => connect().catch((error) => setStatus(error?.message || 'Could not connect wallet.')));\n disconnectButton?.addEventListener?.('click', () => disconnect().catch((error) => setStatus(error?.message || 'Could not disconnect wallet.')));\n unlockButton?.addEventListener?.('click', () => unlock());\n clearButton?.addEventListener?.('click', clear);\n hydrate();\n trackResourcePage(item.resource, { source });\n return controller;\n }\n\n const controller = { resource: item.resource, connect, disconnect, unlock, clear, hydrate, mount, getWalletAddress: () => walletAddress };\n if (options.autoMount !== false) mount();\n return controller;\n}\n\nexport function createHostedUnlock(resource, options = {}) {\n return createEvmGatewayUnlock(resource, {\n ...options,\n hosted: true,\n noWalletMessage: options.noWalletMessage || 'Install MetaMask or another EVM wallet to unlock premium content.',\n });\n}\n", "import { normalizeResource } from '../core/resource.js';\nimport { checkResourceAccess } from './index.js';\n\nexport function createTransferCheckout(resource, options = {}) {\n const normalized = normalizeResource({ ...resource, paymentRail: 'transfer' });\n const sendTransfer = options.sendTransfer || options.transfer;\n if (typeof sendTransfer !== 'function') {\n throw new Error('createTransferCheckout requires sendTransfer({ resource, recipient, amount, currency, network }) and a server verifyTransfer hook.');\n }\n\n return {\n resource: normalized,\n async pay(input = {}) {\n const recipient = normalized.recipient || normalized.payTo;\n const amount = String(normalized.price || normalized.amount || '0');\n const currency = normalized.currency || 'USDC';\n const network = options.network || input.challenge?.accepts?.[0]?.network || 'eip155:5042002';\n const result = await sendTransfer({ resource: normalized, recipient, amount, currency, network, challenge: input.challenge });\n const txHash = result?.txHash || result?.hash || result?.transactionHash || result?.paymentId || '';\n if (!txHash) throw new Error('Transfer checkout did not return a txHash.');\n return {\n paymentSignature: txHash,\n signature: txHash,\n memo: result.memo || '',\n metadata: {\n paymentProvider: 'direct-transfer',\n paymentId: txHash,\n txHash,\n recipient,\n amount: Number(amount),\n currency,\n network,\n ...(result.metadata || result)\n }\n };\n }\n };\n}\n\nexport async function payWithTransfer(resource, options = {}) {\n const checkout = options.checkout || createTransferCheckout(resource, options).pay;\n const result = await checkout({ resource: normalizeResource(resource), challenge: options.challenge || null });\n const txHash = result?.metadata?.txHash || result?.txHash || result?.paymentSignature || result?.signature || '';\n if (!txHash) throw new Error('Transfer checkout did not return a txHash.');\n return checkResourceAccess(resource, {\n ...options,\n headers: {\n ...(options.headers || {}),\n 'x-nibgate-transfer-tx': txHash\n },\n payment: result.metadata || { paymentProvider: 'direct-transfer', txHash, paymentId: txHash }\n });\n}\n", "import { createEvmGatewayUnlock } from './evm-gateway.js';\n\nconst SID = 'nibgate-ui-styles';\n\nconst theme = {\n bg: 'var(--bg, #f4f4f0)',\n fg: 'var(--fg, #0a0a0a)',\n muted: 'var(--muted, #6b6862)',\n border: 'var(--border, #cecdc3)',\n accent: 'var(--accent, #7c9a6d)',\n accentSoft: 'var(--accent-soft, #d8e8d3)',\n cardHover: 'var(--card-hover, #e0ddd3)',\n};\n\nconst css = (s) => Object.entries(s).map(([k, v]) => `${k.replace(/[A-Z]/g, m => '-' + m.toLowerCase())}:${v}`).join(';');\n\nfunction h(tag, attrs, children) {\n const e = document.createElement(tag);\n for (const [k, v] of Object.entries(attrs || {})) {\n if (k === 'dataset') Object.assign(e.dataset, v);\n else if (k.startsWith('on')) e.addEventListener(k.slice(2).toLowerCase(), v);\n else if (k === 'style' && typeof v === 'object') e.style.cssText = css(v);\n else if (k === 'cls') e.className = v;\n else e.setAttribute(k, String(v));\n }\n if (typeof children === 'string') e.innerHTML = children;\n else if (children) (Array.isArray(children) ? children : [children]).forEach(c => { if (c != null) e.appendChild(typeof c === 'string' ? document.createTextNode(c) : c); });\n return e;\n}\n\nfunction inject() {\n if (document.getElementById(SID)) return;\n const s = h('style', { id: SID }, `\n@keyframes nfade { from { opacity:0;transform:translateY(6px) } to { opacity:1;transform:translateY(0) } }\n@keyframes nscale { from { opacity:0;transform:scale(0.96) } to { opacity:1;transform:scale(1) } }\n@keyframes nshimmer { 0% { transform:translateX(-100%) } 100% { transform:translateX(100%) } }\n\n.nui { font-family:var(--font-content,'Kumbh Sans','ABC Favorit',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif);color:${theme.fg};line-height:1.5;-webkit-font-smoothing:antialiased;font-size:19px }\n.nui *,.nui *::before,.nui *::after { box-sizing:border-box }\n.nui-btn { display:flex;align-items:center;justify-content:center;gap:8px;font-size:18px;font-weight:600;padding:14px 28px;border-radius:12px;cursor:pointer;transition:all.12s;font-family:inherit;line-height:1;border:none }\n.nui-btn:disabled { opacity:0.35;cursor:default;pointer-events:none }\n.nui-btn:focus-visible { outline:2px solid ${theme.accent};outline-offset:2px }\n.nui-btn-primary { background:${theme.accent};color:${theme.bg} }\n.nui-btn-primary:hover:not(:disabled) { opacity:0.9 }\n.nui-btn-primary:active:not(:disabled) { transform:scale(.98) }\n.nui-btn-outline { background:transparent;border:1px solid ${theme.border};color:${theme.fg} }\n.nui-btn-outline:hover:not(:disabled) { border-color:${theme.accent};color:${theme.accent} }\n.nui-input { padding:14px 16px;font-size:18px;border-radius:12px;border:1px solid ${theme.border};background:transparent;color:${theme.fg};width:100%;font-family:inherit;outline:none;transition:border-color.12s }\n.nui-input:focus { border-color:${theme.accent} }\n.nui-input::placeholder { color:${theme.muted} }\n.nui-label { font-size:17px;font-weight:600;color:${theme.muted};margin-bottom:8px;display:block }\n.nui-mono { font-family:ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,monospace }\n.nui-stat { font-size:18px;color:${theme.muted};line-height:1.4;min-height:28px }\n.nui-stat-err { color:#dc2626 }\n.nui-stat-ok { color:#16a34a }\n`);\n document.head.appendChild(s);\n}\n\nfunction el(tag, a, c) { return h(tag, a, c); }\n\nfunction status(el, msg) {\n if (!el) return;\n el.textContent = msg || '';\n}\n\nfunction esc(s) {\n const d = document.createElement('div');\n d.textContent = String(s ?? '');\n return d.innerHTML;\n}\n\nexport function renderDefaultUnlockUI(container, resource, options = {}) {\n inject();\n\n const card = el('div', { cls: 'nui', style: { animation: 'nfade .2s ease-out' } });\n\n const lockSVG = '<svg width=\"24\" height=\"24\" viewBox=\"0 0 32 32\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"vertical-align:middle\"><path d=\"M6 16v8a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-8\"/><path d=\"M10 16v-5a6 6 0 0 1 12 0v5\"/><circle cx=\"16\" cy=\"21\" r=\"2\"/></svg>';\n\n card.innerHTML = `\n <div style=\"display:flex;flex-direction:column;align-items:center;text-align:center;max-width:580px;margin:0 auto;padding:40px 52px\">\n <div id=\"nibgate-lottie\" style=\"width:165px;height:168px;margin-bottom:24px\"></div>\n <div style=\"font-size:50px;font-weight:700;letter-spacing:-.03em;color:${theme.fg};margin-bottom:12px\">${esc(resource.price)} USDC</div>\n <div style=\"font-size:21px;color:${theme.muted};margin-bottom:48px\">Pay to unlock this content</div>\n <div data-nibgate-wallet-label class=\"nui-mono\" style=\"font-size:18px;color:${theme.muted};margin-bottom:40px;min-height:28px\">Connect wallet</div>\n <div data-nibgate-unlock-wrap style=\"width:100%;position:relative;border-radius:12px;overflow:hidden;cursor:pointer\">\n <div data-nibgate-unlock-progress style=\"position:absolute;inset:0;width:0%;background:linear-gradient(90deg,rgba(255,255,255,0.1),rgba(255,255,255,0.45));border-radius:12px;transition:width .05s linear;z-index:2\"></div>\n <div data-nibgate-shimmer style=\"position:absolute;inset:0;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,0.12),transparent);border-radius:12px;transform:translateX(-100%);z-index:3;pointer-events:none\"></div>\n <button type=\"button\" data-nibgate-unlock disabled class=\"nui-btn nui-btn-primary\" style=\"width:100%;padding:24px 32px;font-size:24px;position:relative;z-index:4;background:${theme.accent};transition:transform .1s,opacity .15s;display:flex\">${lockSVG}Hold to pay ${esc(resource.price)} USDC</button></div>\n <div class=\"nui-stat\" style=\"text-align:center;margin-top:16px\" data-nibgate-status></div>\n </div>\n <div data-nibgate-premium hidden style=\"margin-top:32px;border-top:1px solid ${theme.border};padding-top:32px\"></div>\n `;\n\n (typeof container === 'string' ? document.querySelector(container) : container)?.appendChild(card);\n // Load Lottie animation\n (function loadLottie() {\n if (!document.getElementById('nibgate-lottie')) return;\n\n function startAnim(data) {\n var d = document.getElementById('nibgate-lottie');\n if (d && window.lottie) {\n window.lottie.loadAnimation({ container: d, animationData: data, loop: true, autoplay: true });\n }\n }\n\n if (window.lottie) {\n if (window._lottieData) {\n startAnim(window._lottieData);\n } else {\n fetch('/nibgate-unlock-key.json?t=1').then(function(r) { if (!r.ok) throw new Error(); return r.json(); }).then(function(d) { window._lottieData = d; startAnim(d); }).catch(function() {});\n }\n return;\n }\n\n if (window._lottieLoading) return;\n window._lottieLoading = true;\n var s = document.createElement('script');\n s.src = 'https://cdnjs.cloudflare.com/ajax/libs/lottie-web/5.12.2/lottie.min.js';\n s.onload = function() {\n fetch('/nibgate-unlock-key.json?t=1').then(function(r) { if (!r.ok) throw new Error(); return r.json(); }).then(function(d) { window._lottieData = d; startAnim(d); }).catch(function() {});\n };\n document.head.appendChild(s);\n })();\n\n\n const st = card.querySelector('[data-nibgate-status]');\n const label = card.querySelector('[data-nibgate-wallet-label]');\n const wrap = card.querySelector('[data-nibgate-unlock-wrap]');\n const prog = card.querySelector('[data-nibgate-unlock-progress]');\n const shimmer = card.querySelector('[data-nibgate-shimmer]');\n const btn = card.querySelector('[data-nibgate-unlock]');\n\n const HOLD_MS = 1500;\n let holdTimer = null, holdActive = false, holdComplete = false;\n\n const ctrl = createEvmGatewayUnlock(resource, {\n ...options,\n connectButton: null,\n unlockButton: null,\n walletLabel: null,\n status: '[data-nibgate-status]',\n unlockedTarget: '[data-nibgate-premium]',\n onStatus: (msg) => status(st, msg),\n });\n\n function shortAddress(a) { return a ? a.slice(0, 6) + '...' + a.slice(-4) : ''; }\n\n function updateLabel() {\n const addr = ctrl.getWalletAddress();\n if (addr) {\n label.innerHTML = shortAddress(addr) + ' <span data-nibgate-disconnect style=\"cursor:pointer\">\u00B7 Disconnect</span>';\n btn.disabled = false;\n btn.style.cursor = 'pointer';\n } else {\n label.textContent = 'Connect wallet';\n btn.disabled = true;\n btn.style.cursor = 'default';\n btn.innerHTML = lockSVG + 'Hold to pay ' + esc(resource.price) + ' USDC';\n }\n }\n\n function setBtnText(t) { btn.innerHTML = lockSVG + t; }\n\n function resetHold() {\n holdActive = false;\n holdComplete = false;\n holdTimer = null;\n btn.style.transform = 'scale(1)';\n prog.style.width = '0%';\n shimmer.style.animation = 'none';\n shimmer.style.transform = 'translateX(-100%)';\n if (!btn.disabled) setBtnText('Hold to pay ' + esc(resource.price) + ' USDC');\n }\n\n function startHold(e) {\n if (btn.disabled || holdActive) return;\n e.preventDefault();\n holdActive = true;\n holdComplete = false;\n btn.style.transform = 'scale(.97)';\n prog.style.transition = 'none';\n prog.style.width = '0%';\n shimmer.style.animation = 'nshimmer 1s ease-in-out infinite';\n shimmer.style.transform = 'none';\n setBtnText('Hold\\u2026');\n requestAnimationFrame(() => {\n prog.style.transition = 'width ' + HOLD_MS + 'ms linear';\n prog.style.width = '100%';\n });\n const t1 = setTimeout(() => { if (holdActive && !holdComplete) setBtnText('Keep holding\\u2026'); }, HOLD_MS * 0.4);\n const t2 = setTimeout(() => { if (holdActive && !holdComplete) setBtnText('Almost there\\u2026'); }, HOLD_MS * 0.75);\n holdTimer = setTimeout(() => {\n holdComplete = true;\n holdActive = false;\n clearTimeout(t1); clearTimeout(t2);\n btn.style.transform = 'scale(1)';\n shimmer.style.animation = 'none';\n prog.style.transition = 'width .05s linear';\n setBtnText('Processing\\u2026');\n btn.disabled = true;\n setTimeout(() => ctrl.unlock().then(updateLabel).catch(updateLabel), 300);\n }, HOLD_MS);\n }\n\n function cancelHold() {\n if (!holdActive || holdComplete) return;\n clearTimeout(holdTimer);\n resetHold();\n }\n\n label.addEventListener('click', (e) => {\n if (e.target.dataset.nibgateDisconnect !== undefined) {\n ctrl.disconnect().then(updateLabel);\n } else if (!ctrl.getWalletAddress()) {\n ctrl.connect().then(updateLabel).catch(() => updateLabel());\n }\n });\n\n wrap.addEventListener('mousedown', startHold);\n wrap.addEventListener('touchstart', startHold, { passive: false });\n document.addEventListener('mouseup', cancelHold);\n document.addEventListener('touchend', cancelHold);\n wrap.addEventListener('mouseleave', cancelHold);\n\n setTimeout(updateLabel, 200);\n\n const cleanup = () => { document.removeEventListener('mouseup', cancelHold); document.removeEventListener('touchend', cancelHold); };\n card.addEventListener('remove', cleanup);\n\n return { ...ctrl, element: card, destroy: () => { cleanup(); card.remove(); } };\n}\n\nexport function renderDefaultRatingUI(container, resource, options = {}) {\n inject();\n\n let sel = 0, busy = false, ctrl = null, statusTimer = null;\n\n const wrap = el('div', { cls: 'nui', style: { animation: 'nfade .2s ease-out', textAlign: 'center', padding: '28px 0' } });\n\n const starRow = el('div', { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', gap: '4px' } });\n const stars = [];\n for (let i = 1; i <= 5; i++) {\n const b = el('button', {\n type: 'button', 'aria-label': `${i} star${i > 1 ? 's' : ''}`,\n 'data-star': i,\n style: {\n background: 'none', border: 'none', cursor: 'pointer',\n padding: '4px', fontSize: '31px', lineHeight: '1',\n color: theme.border, transition: 'color .12s, transform .12s',\n borderRadius: '4px',\n fontFamily: 'inherit',\n },\n }, '\u2606');\n stars.push(b);\n starRow.appendChild(b);\n }\n\n const avgEl = el('span', { style: { fontSize: '17px', color: theme.muted, marginLeft: '12px' } });\n avgEl.textContent = 'No ratings yet';\n starRow.appendChild(avgEl);\n\n const st = el('div', { style: { fontSize: '17px', color: theme.muted, marginTop: '8px', minHeight: '1.4em' } });\n st.textContent = 'Tap stars to rate';\n\n wrap.append(starRow, st);\n\n (typeof container === 'string' ? document.querySelector(container) : container)?.appendChild(wrap);\n\n function clearStatus() {\n if (statusTimer) { clearTimeout(statusTimer); statusTimer = null; }\n st.textContent = sel > 0 ? '' : 'Tap stars to rate';\n st.style.color = theme.muted;\n }\n\n function setStatus(msg, color, autoClear) {\n st.textContent = msg || '';\n st.style.color = color || '';\n if (autoClear) statusTimer = setTimeout(clearStatus, autoClear);\n }\n\n function fill(h) {\n stars.forEach((b, i) => {\n const active = i < h;\n b.style.color = active ? theme.accent : theme.border;\n b.textContent = active ? '\u2605' : '\u2606';\n b.style.transform = active ? 'scale(1.08)' : 'scale(1)';\n });\n }\n\n function setPrompt(v) {\n const labels = ['', 'Poor', 'Below average', 'Average', 'Good', 'Excellent'];\n setStatus(labels[v]);\n }\n\n async function rate(v) {\n if (busy || !ctrl) return;\n busy = true;\n stars.forEach(b => { b.disabled = true; b.style.cursor = 'default'; });\n sel = v;\n fill(v);\n setStatus('Submitting\\u2026');\n try {\n await ctrl.rate({ rating: v });\n fill(v);\n setStatus('You rated ' + v + ' \\u2605'.repeat(v), theme.accent, 3000);\n refresh();\n } catch (e) {\n setStatus(e?.message || 'Could not save rating. Try again.', '#dc2626');\n fill(sel);\n } finally {\n busy = false;\n stars.forEach(b => { b.disabled = false; b.style.cursor = 'pointer'; });\n }\n }\n\n function refresh() {\n const u = options.statsUrl || (resource.id ? `${options.apiBase || '/api'}/rating/${resource.id}` : null);\n if (!u) return;\n fetch(u).then(r => r.json()).then(d => {\n if (d.count > 0) {\n avgEl.textContent = `${d.average.toFixed(1)} \\u2014 ${d.count} rating${d.count !== 1 ? 's' : ''}`;\n } else {\n avgEl.textContent = 'No ratings yet';\n }\n }).catch(() => {});\n }\n\n stars.forEach(b => {\n const v = parseInt(b.dataset.star);\n b.addEventListener('mouseenter', () => {\n if (!busy) { fill(v); setPrompt(v); }\n });\n b.addEventListener('mouseleave', () => {\n if (!busy) { fill(sel); clearStatus(); }\n });\n b.addEventListener('click', () => rate(v));\n b.addEventListener('keydown', (e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); rate(v); } });\n });\n\n import('./rating-ui.js').then(m => {\n ctrl = m.createOnchainRating(resource, {\n autoMount: false,\n contentId: options.contentId || '0x' + (resource.id || '').replace(/-/g, ''),\n onRated: (r) => { setStatus('Rating saved', theme.accent, 3000); refresh(); if (typeof options.onRated === 'function') options.onRated(r); },\n onError: (e) => { setStatus(e?.message || 'Could not save rating. Try again.', '#dc2626'); if (typeof options.onError === 'function') options.onError(e); },\n });\n refresh();\n }).catch(() => { setStatus('Could not load rating', '#dc2626'); });\n\n return { element: wrap, destroy: () => wrap.remove(), refresh, setRating: (v) => { sel = v; fill(v); } };\n}\n\nexport function renderDefaultGatewayWalletUI(container, options = {}) {\n inject();\n let tab = 'deposit';\n\n const wrap = el('div', { cls: 'nui', style: { animation: 'nfade .2s ease-out', border: '1px solid ' + theme.border, borderRadius: '16px', padding: '28px' } });\n\n wrap.innerHTML = `\n <div style=\"display:flex;gap:12px;margin-bottom:20px\">\n <div data-gw-wallet-card style=\"flex:1;background:${theme.bg};border:1px solid ${theme.border};border-radius:12px;padding:16px\">\n <div style=\"display:flex;align-items:center;justify-content:space-between;margin-bottom:4px\">\n <div style=\"font-size:12px;font-weight:600;color:${theme.muted};letter-spacing:.02em\">Wallet</div>\n <button data-gw-connect style=\"font-size:12px;font-weight:600;cursor:pointer;border:1px solid ${theme.accent};background:transparent;color:${theme.accent};border-radius:8px;padding:4px 12px;font-family:inherit\">Connect</button>\n </div>\n <div data-gw-wallet-balance class=\"nui-mono\" style=\"font-size:24px;font-weight:700;color:${theme.fg}\">\u2014</div>\n </div>\n <div style=\"flex:1;background:${theme.bg};border:1px solid ${theme.border};border-radius:12px;padding:16px\">\n <div style=\"font-size:12px;font-weight:600;color:${theme.muted};margin-bottom:4px;letter-spacing:.02em\">Gateway</div>\n <div data-gw-balance class=\"nui-mono\" style=\"font-size:24px;font-weight:700;color:${theme.fg}\">\u2014</div>\n </div>\n </div>\n <div style=\"display:flex;gap:0;margin-bottom:20px;border-bottom:1px solid ${theme.border}\">\n <button data-tab=\"deposit\" style=\"flex:1;padding:10px 0;font-size:15px;font-weight:600;cursor:pointer;border:none;background:transparent;color:${theme.fg};border-bottom:2px solid ${theme.accent};font-family:inherit\">Deposit</button>\n <button data-tab=\"withdraw\" style=\"flex:1;padding:10px 0;font-size:15px;font-weight:600;cursor:pointer;border:none;background:transparent;color:${theme.muted};border-bottom:2px solid transparent;font-family:inherit\">Withdraw</button>\n </div>\n <div data-gw-form></div>\n `;\n\n (typeof container === 'string' ? document.querySelector(container) : container)?.appendChild(wrap);\n\n const formEl = wrap.querySelector('[data-gw-form]');\n const tabs = wrap.querySelectorAll('[data-tab]');\n\n function select(btns, t) {\n btns.forEach(b => {\n const on = b.dataset.tab === t;\n b.style.color = on ? theme.fg : theme.muted;\n b.style.borderBottomColor = on ? theme.accent : 'transparent';\n });\n }\n\n function render(t) {\n tab = t;\n select(tabs, t);\n if (t === 'deposit') {\n formEl.innerHTML = `\n <label class=\"nui-label\">Amount (USDC)</label>\n <input type=\"number\" step=\"0.01\" min=\"0\" placeholder=\"0.00\" data-gw-deposit-amount class=\"nui-input\" style=\"margin-bottom:16px\">\n <button type=\"button\" data-gw-deposit class=\"nui-btn nui-btn-primary\" style=\"width:100%;padding:16px 28px;font-size:20px\">Deposit</button>\n <div data-gw-tx class=\"nui-mono\" style=\"font-size:12px;color:${theme.muted};word-break:break-all;margin-top:12px;display:none\"></div>\n `;\n } else {\n formEl.innerHTML = `\n <label class=\"nui-label\">Amount (USDC)</label>\n <input type=\"number\" step=\"0.01\" min=\"0\" placeholder=\"0.00\" data-gw-withdraw-amount class=\"nui-input\" style=\"margin-bottom:16px\">\n <button type=\"button\" data-gw-withdraw class=\"nui-btn nui-btn-primary\" style=\"width:100%;padding:16px 28px;font-size:20px\">Withdraw to your wallet</button>\n <div data-gw-tx class=\"nui-mono\" style=\"font-size:12px;color:${theme.muted};word-break:break-all;margin-top:12px;display:none\"></div>\n `;\n }\n }\n\n render('deposit');\n tabs.forEach(b => b.addEventListener('click', () => render(b.dataset.tab)));\n\n return { element: wrap, destroy: () => wrap.remove(), switchTab: render };\n}\n", "import { PAYMENT_RAILS, normalizePaymentRail } from './payment.js';\nimport { ACCESS_MODES, CONTENT_TYPES, UNLOCK_MODES, normalizeAccessPolicy, normalizeContentType, normalizeUnlockPolicy } from './resource.js';\n\nexport const NIBGATE_CONTENT_SETTING_FIELDS = [\n { name: 'publishToNibgate', label: 'Publish to Nibgate discovery', type: 'boolean', defaultValue: true },\n { name: 'type', label: 'Content type', type: 'select', options: CONTENT_TYPES, defaultValue: 'article' },\n { name: 'humanAccess', label: 'Human access', type: 'select', options: ACCESS_MODES, defaultValue: 'paid' },\n { name: 'agentAccess', label: 'Agent access', type: 'select', options: ACCESS_MODES, defaultValue: 'paid' },\n { name: 'unlockMode', label: 'Unlock mode', type: 'select', options: UNLOCK_MODES, defaultValue: 'one_time' },\n { name: 'paymentRail', label: 'Payment rail', type: 'select', options: PAYMENT_RAILS, defaultValue: 'gateway' },\n { name: 'price', label: 'Price', type: 'text', defaultValue: '0.005' },\n { name: 'currency', label: 'Currency', type: 'text', defaultValue: 'USDC' },\n { name: 'recipient', label: 'Recipient wallet', type: 'wallet', defaultValue: '' },\n { name: 'ratingsEnabled', label: 'Enable ratings', type: 'boolean', defaultValue: true },\n { name: 'license', label: 'License / terms', type: 'textarea', defaultValue: '' }\n];\n\nexport function createNibgateContentSettings(input = {}) {\n const access = normalizeAccessPolicy(input.access || {\n humans: input.humanAccess,\n agents: input.agentAccess\n });\n const unlock = normalizeUnlockPolicy(input.unlock || input.unlockMode || 'one_time');\n\n return {\n publishToNibgate: input.publishToNibgate ?? input.publishedToNibgate ?? true,\n type: normalizeContentType(input.type || input.contentType || 'article'),\n humanAccess: access.humans,\n agentAccess: access.agents,\n unlockMode: unlock.mode,\n paymentRail: normalizePaymentRail(input.paymentRail || input.paymentMode || input.rail),\n price: String(input.price ?? input.amount ?? '0.005'),\n currency: input.currency || 'USDC',\n recipient: input.recipient || input.payTo || input.receiverAddress || input.creatorWallet || '',\n ratingsEnabled: input.ratingsEnabled ?? input.enableRatings ?? input.reputation?.ratingsEnabled ?? true,\n license: input.license || input.terms || ''\n };\n}\n\nexport function settingsToAccessPolicy(settings = {}) {\n return normalizeAccessPolicy({\n humans: settings.humanAccess,\n agents: settings.agentAccess\n });\n}\n\nexport function settingsToUnlockPolicy(settings = {}) {\n return normalizeUnlockPolicy(settings.unlockMode || settings.unlock || 'one_time');\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["normalizePaymentRail", "value", "fallback", "rail", "PAYMENT_RAILS", "init_payment", "__esmMin", "normalizeContentType", "value", "type", "CONTENT_TYPES", "TYPE_ALIASES", "normalizeAccessMode", "fallback", "mode", "ACCESS_MODES", "normalizeAccessPolicy", "normalizeUnlockPolicy", "input", "UNLOCK_MODES", "browserEnv", "metaContent", "name", "win", "selector", "node", "autoDeriveUrl", "path", "autoDeriveImage", "autoDeriveDescription", "autoDeriveTitle", "autoDeriveType", "ogType", "autoDeriveTags", "kw", "t", "accessForPrice", "price", "explicitAccess", "normalizeResource", "resource", "publisher", "publisherId", "publisherWallet", "publisherHandle", "publisherName", "publisherProfileUrl", "publisherOrigin", "publisherVerification", "authorHandle", "v1Input", "url", "normalizePaymentRail", "hasValue", "isPaidResource", "access", "validateResourceMetadata", "options", "normalized", "warnings", "errors", "required", "recommended", "field", "score", "init_resource", "__esmMin", "init_payment", "browserWindow", "init_env", "__esmMin", "queueEvent", "eventName", "payload", "win", "browserWindow", "flushQueue", "queue", "entry", "startQueueFlush", "attempts", "timer", "emit", "payloadWithResource", "resource", "extra", "normalizeResource", "init_events", "__esmMin", "init_env", "init_resource", "unlockStorageKey", "resource", "proofStorageKey", "markUnlocked", "payment", "win", "browserWindow", "storePaymentProof", "proof", "value", "getPaymentProof", "clearPaymentProof", "normalized", "normalizeResource", "hasUnlock", "init_storage", "__esmMin", "init_env", "init_resource", "setDefaultClient", "client", "defaultClient", "createGate", "resource", "options", "normalized", "normalizeResource", "extra", "eventName", "payload", "payloadWithResource", "payment", "markUnlocked", "hasUnlock", "handlerOrPayment", "rating", "init_gate", "__esmMin", "init_resource", "init_events", "init_storage", "jsonReplacer", "_key", "value", "stringifyJson", "init_json", "__esmMin", "normalizeRating", "input", "value", "numeric", "ratingValue", "ratingMessage", "resource", "rating", "options", "normalized", "normalizeResource", "init_rating", "__esmMin", "init_resource", "supportsBatching", "requirements", "extra", "CIRCLE_BATCHING_NAME", "getVerifyingContract", "createNonce", "bytes", "b", "getAddress", "value", "authorizationTypes", "BatchEvmScheme", "init_batch_scheme", "__esmMin", "signer", "hook", "x402Version", "paymentRequirements", "context", "result", "verifyingContract", "nonce", "now", "validityWindowSeconds", "authorization", "signature", "createdContext", "error", "failureContext", "chainId", "domain", "message", "typedData", "gateway_exports", "__export", "createCircleGatewayBrowserAdapter", "encodeBase64", "value", "text", "stringifyJson", "decodeBase64", "options", "signer", "scheme", "BatchEvmScheme", "network", "parsePaymentRequired", "input", "selectGatewayRequirement", "paymentRequired", "accepts", "selected", "option", "extra", "networks", "hasGatewayExtra", "paymentRequiredHeader", "challenge", "accepted", "x402Version", "paymentPayload", "paymentSignature", "init_gateway", "__esmMin", "init_batch_scheme", "init_json", "stripHex", "value", "wordRight", "hex", "clean", "numberWord", "utf8Hex", "byte", "encodeString", "byteLength", "paddedLength", "encodeRateContent", "contentId", "ratingValue", "reviewHash", "unlockRef", "RATE_CONTENT_SELECTOR", "ZERO_HASH", "contentRatingHash", "_resource", "options", "reviewTextHash", "review", "prepareOnchainRating", "resource", "prepareUrl", "response", "payload", "rateContentOnchain", "normalized", "normalizeResource", "rating", "normalizeRating", "provider", "contractAddress", "NIBGATE_REPUTATION_CONTRACT", "accounts", "walletAddress", "prepared", "data", "txHash", "payloadWithResource", "emit", "NIBGATE_CONTENT_HASH_NAMESPACE", "NIBGATE_REPUTATION_CHAIN_ID", "NIBGATE_REPUTATION_CHAIN_NAME", "NIBGATE_REPUTATION_RPC_URL", "NIBGATE_REPUTATION_ABI", "init_reputation", "__esmMin", "init_rating", "init_resource", "init_events", "rating_ui_exports", "__export", "createOnchainRating", "mountRatingUI", "rateResource", "resource", "rating", "extra", "normalized", "normalizeResource", "normalizedRating", "normalizeRating", "payload", "ratingMessage", "emit", "options", "item", "createGate", "win", "browserWindow", "statusTarget", "ratingTarget", "buttonSelector", "buttons", "source", "busy", "payment", "setStatus", "message", "setBusy", "value", "button", "setPayment", "nextPayment", "setVisible", "isVisible", "valueFromButton", "raw", "numeric", "rate", "input", "paymentId", "unlockRef", "result", "rateContentOnchain", "error", "mount", "controller", "target", "stars", "selectedRating", "container", "starButtons", "btn", "b", "i", "statusEl", "r", "setRating", "init_rating_ui", "__esmMin", "init_resource", "init_rating", "init_events", "init_env", "init_reputation", "init_gate", "index_exports", "__export", "ACCESS_MODES", "CONTENT_TYPES", "NIBGATE_CONTENT_HASH_NAMESPACE", "NIBGATE_CONTENT_SETTING_FIELDS", "NIBGATE_REPUTATION_ABI", "NIBGATE_REPUTATION_CHAIN_ID", "NIBGATE_REPUTATION_CHAIN_NAME", "NIBGATE_REPUTATION_CONTRACT", "NIBGATE_REPUTATION_RPC_URL", "PAYMENT_RAILS", "UNLOCK_MODES", "checkResourceAccess", "contentRatingHash", "createCircleGatewayBrowserAdapter", "createEvmGatewayUnlock", "createGate", "createHostedUnlock", "createNibgate", "createNibgateContentSettings", "createOnchainRating", "createTransferCheckout", "createWalletCheckout", "mountRatingUI", "nibgate", "normalizeAccessPolicy", "normalizeContentType", "normalizePaymentRail", "normalizeResource", "normalizeUnlockPolicy", "payAndUnlockResource", "payWithPaymentSignature", "payWithTransfer", "rateContentOnchain", "rateResource", "renderDefaultGatewayWalletUI", "renderDefaultRatingUI", "renderDefaultUnlockUI", "reviewTextHash", "settingsToAccessPolicy", "settingsToUnlockPolicy", "setupResourcePage", "trackResourcePage", "validateResourceMetadata", "init_gate", "init_events", "init_storage", "init_json", "init_gate", "init_resource", "init_env", "init_gate", "trackResourcePage", "resource", "options", "item", "createGate", "validation", "validateResourceMetadata", "browserWindow", "setupResourcePage", "win", "button", "statusElement", "setStatus", "message", "checkResourceAccess", "checkResourceAccess", "resource", "options", "item", "createGate", "accessPath", "status", "response", "getPaymentProof", "payload", "payWithPaymentSignature", "paymentResult", "payAndUnlockResource", "payment", "paymentSignature", "paymentMemo", "paymentMetadata", "paymentRequiredHeader", "challenge", "result", "error", "responseText", "detail", "stringifyJson", "storePaymentProof", "payPath", "init_resource", "init_env", "setElementText", "target", "message", "win", "browserWindow", "element", "setElementDisabled", "disabled", "createWalletCheckout", "resource", "options", "normalized", "normalizeResource", "accessPath", "button", "statusTarget", "status", "checkout", "unlock", "extra", "checkResourceAccess", "mount", "error", "init_resource", "init_rating", "init_events", "init_gate", "init_env", "init_storage", "init_json", "init_gate", "createCircleGatewayBrowserAdapter", "options", "HOSTED_PAY_URL", "resolveAccessPath", "resource", "createEvmGatewayUnlock", "item", "createGate", "win", "browserWindow", "accessPath", "source", "network", "statusTarget", "connectButton", "disconnectButton", "unlockButton", "clearButton", "walletLabel", "unlockedTarget", "walletAddress", "busy", "setStatus", "message", "shortAddress", "address", "provider", "setBusy", "value", "button", "renderWallet", "hasProvider", "setUnlocked", "isUnlocked", "payment", "connect", "evm", "accounts", "disconnect", "checkout", "input", "typedData", "stringifyJson", "unlock", "result", "checkResourceAccess", "error", "clear", "clearPaymentProof", "hydrate", "mount", "trackResourcePage", "controller", "createHostedUnlock", "init_rating_ui", "init_resource", "createTransferCheckout", "resource", "options", "normalized", "normalizeResource", "sendTransfer", "input", "recipient", "amount", "currency", "network", "result", "txHash", "payWithTransfer", "checkResourceAccess", "createNibgate", "defaults", "defaultResource", "normalizeResource", "resourceWithDefaults", "resource", "extra", "emit", "payloadWithResource", "eventName", "payload", "payment", "rating", "rateResource", "messageOptions", "ratingMessage", "options", "createGate", "trackResourcePage", "checkResourceAccess", "payWithPaymentSignature", "createWalletCheckout", "createCircleGatewayBrowserAdapter", "createTransferCheckout", "payWithTransfer", "createEvmGatewayUnlock", "createOnchainRating", "mountRatingUI", "payAndUnlockResource", "setupResourcePage", "normalizeContentType", "flushQueue", "nibgate", "setDefaultClient", "init_rating_ui", "init_reputation", "SID", "theme", "css", "s", "k", "v", "m", "h", "tag", "attrs", "children", "e", "c", "inject", "el", "a", "status", "msg", "esc", "d", "renderDefaultUnlockUI", "container", "resource", "options", "card", "lockSVG", "startAnim", "data", "r", "st", "label", "wrap", "prog", "shimmer", "btn", "HOLD_MS", "holdTimer", "holdActive", "holdComplete", "ctrl", "createEvmGatewayUnlock", "shortAddress", "updateLabel", "addr", "setBtnText", "t", "resetHold", "startHold", "t1", "t2", "cancelHold", "cleanup", "renderDefaultRatingUI", "sel", "busy", "statusTimer", "starRow", "stars", "i", "b", "avgEl", "clearStatus", "setStatus", "color", "autoClear", "fill", "active", "setPrompt", "rate", "refresh", "u", "renderDefaultGatewayWalletUI", "tab", "formEl", "tabs", "select", "btns", "on", "render", "init_resource", "init_payment", "init_resource", "NIBGATE_CONTENT_SETTING_FIELDS", "CONTENT_TYPES", "ACCESS_MODES", "UNLOCK_MODES", "PAYMENT_RAILS", "createNibgateContentSettings", "input", "access", "normalizeAccessPolicy", "unlock", "normalizeUnlockPolicy", "normalizeContentType", "normalizePaymentRail", "settingsToAccessPolicy", "settings", "settingsToUnlockPolicy", "init_payment"]
|
|
4
|
+
"sourcesContent": ["export const PAYMENT_RAILS = ['gateway', 'transfer'];\n\nexport function normalizePaymentRail(value, fallback = 'gateway') {\n const rail = String(value || '').trim().toLowerCase().replace(/[-\\s]+/g, '_');\n if (rail === 'circle_gateway' || rail === 'x402') return 'gateway';\n if (rail === 'direct_transfer' || rail === 'wallet_transfer') return 'transfer';\n return PAYMENT_RAILS.includes(rail) ? rail : fallback;\n}\n", "import { normalizePaymentRail } from './payment.js';\nexport const CONTENT_TYPES = ['music', 'video', 'article', 'image'];\nexport const TYPE_ALIASES = {\n audio: 'music',\n song: 'music',\n track: 'music',\n album: 'music',\n playlist: 'music',\n photo: 'image',\n picture: 'image',\n illustration: 'image',\n art: 'image',\n movie: 'video',\n clip: 'video'\n};\nexport const ACCESS_MODES = ['free', 'paid', 'blocked'];\nexport const UNLOCK_MODES = ['one_time', 'metered_stream', 'metered_read', 'time_pass', 'agent_quota'];\n\nexport function normalizeContentType(value) {\n const type = String(value || '').trim().toLowerCase();\n if (CONTENT_TYPES.includes(type)) return type;\n return TYPE_ALIASES[type] || 'article';\n}\n\nexport function normalizeAccessMode(value, fallback = 'paid') {\n const mode = String(value || '').trim().toLowerCase();\n return ACCESS_MODES.includes(mode) ? mode : fallback;\n}\n\nexport function normalizeAccessPolicy(value = {}) {\n if (typeof value === 'string') {\n const mode = normalizeAccessMode(value);\n return { humans: mode, agents: mode };\n }\n\n return {\n humans: normalizeAccessMode(value.humans || value.human || value.default, 'paid'),\n agents: normalizeAccessMode(value.agents || value.agent || value.default, 'paid')\n };\n}\n\nexport function normalizeUnlockPolicy(value = {}) {\n const input = typeof value === 'string' ? { mode: value } : (value || {});\n const mode = String(input.mode || input.type || 'one_time').trim().toLowerCase().replace(/[-\\s]+/g, '_');\n return {\n ...input,\n mode: UNLOCK_MODES.includes(mode) ? mode : 'one_time'\n };\n}\n\nfunction browserEnv() {\n return typeof window !== 'undefined' ? window : null;\n}\n\nfunction metaContent(name) {\n const win = browserEnv();\n if (!win) return '';\n const selector = `meta[name=\"${name}\"], meta[property=\"${name}\"]`;\n const node = win.document.querySelector(selector);\n return node ? node.getAttribute('content') || '' : '';\n}\n\nfunction autoDeriveUrl(path) {\n const win = browserEnv();\n if (!win || !path) return undefined;\n return `${win.location.origin}${path.startsWith('/') ? path : '/' + path}`;\n}\n\nfunction autoDeriveImage() {\n return metaContent('og:image') || undefined;\n}\n\nfunction autoDeriveDescription() {\n return metaContent('og:description') || metaContent('description') || undefined;\n}\n\nfunction autoDeriveTitle() {\n const win = browserEnv();\n return metaContent('og:title') || metaContent('twitter:title') || (win ? win.document.title : '') || undefined;\n}\n\nfunction autoDeriveType() {\n const ogType = metaContent('og:type').toLowerCase();\n if (ogType.includes('music') || ogType.includes('audio') || ogType.includes('song')) return 'music';\n if (ogType.includes('video') || ogType.includes('movie')) return 'video';\n if (ogType.includes('image') || ogType.includes('photo')) return 'image';\n return 'article';\n}\n\nfunction autoDeriveTags() {\n const kw = metaContent('keywords');\n if (!kw) return undefined;\n return kw.split(',').map((t) => t.trim().toLowerCase()).filter(Boolean).slice(0, 8);\n}\n\nfunction accessForPrice(price, explicitAccess) {\n if (explicitAccess && typeof explicitAccess === 'object' && Object.keys(explicitAccess).length > 0) {\n return normalizeAccessPolicy(explicitAccess);\n }\n const hasPrice = price !== undefined && price !== null && price !== '' && Number.parseFloat(price) > 0;\n if (hasPrice) return { humans: 'paid', agents: 'paid' };\n return { humans: 'free', agents: 'free' };\n}\n\nexport function normalizeResource(resource = {}) {\n const input = typeof resource === 'string' ? { id: resource } : (resource || {});\n const {\n publisher,\n publisherId,\n publisherWallet,\n publisherHandle,\n publisherName,\n publisherProfileUrl,\n publisherOrigin,\n publisherVerification,\n authorHandle,\n ...v1Input\n } = input;\n\n const path = input.path || input.route || undefined;\n const url = input.url || autoDeriveUrl(path) || undefined;\n const explicitAccess = input.access;\n const price = input.price ?? input.amount ?? '';\n\n return {\n ...v1Input,\n id: String(input.id || input.contentId || input.slug || '').trim(),\n title: String(input.title || input.name || autoDeriveTitle() || 'Untitled').trim(),\n type: normalizeContentType(input.type || input.contentType || autoDeriveType()),\n price,\n currency: input.currency || 'USDC',\n paymentRail: normalizePaymentRail(input.paymentRail || input.paymentMode || input.rail),\n recipient: input.recipient || input.receiver || input.receiverAddress || input.payTo || input.creatorWallet || undefined,\n payTo: input.payTo || input.recipient || input.receiver || input.receiverAddress || input.creatorWallet || undefined,\n path,\n url,\n imageUrl: input.imageUrl || input.image || autoDeriveImage() || undefined,\n description: input.description || input.summary || autoDeriveDescription() || undefined,\n tags: input.tags || autoDeriveTags() || undefined,\n access: accessForPrice(price, explicitAccess),\n unlock: normalizeUnlockPolicy(input.unlock),\n ratingsEnabled: input.ratingsEnabled ?? input.enableRatings ?? input.reputation?.ratingsEnabled ?? true,\n reputation: {\n ...(typeof input.reputation === 'object' && input.reputation ? input.reputation : {}),\n ratingsEnabled: input.ratingsEnabled ?? input.enableRatings ?? input.reputation?.ratingsEnabled ?? true\n }\n };\n}\n\nfunction hasValue(value) {\n if (Array.isArray(value)) return value.length > 0;\n return value !== undefined && value !== null && String(value).trim() !== '';\n}\n\nfunction isPaidResource(resource = {}) {\n const access = normalizeAccessPolicy(resource.access);\n return access.humans === 'paid' || access.agents === 'paid' || Number.parseFloat(resource.price || resource.amount || '0') > 0;\n}\n\nexport function validateResourceMetadata(resource = {}, options = {}) {\n const normalized = normalizeResource(resource);\n const warnings = [];\n const errors = [];\n const required = options.required || ['id', 'type'];\n const recommended = options.recommended || ['title', 'url', 'description', 'imageUrl', 'tags'];\n\n for (const field of required) {\n if (!hasValue(normalized[field])) errors.push(`Missing required content metadata: ${field}`);\n }\n\n for (const field of recommended) {\n if (!hasValue(normalized[field])) warnings.push(`Missing recommended discovery metadata: ${field}`);\n }\n\n if (!CONTENT_TYPES.includes(normalized.type)) errors.push('Content type must be one of music, video, article, or image.');\n\n if (normalized.url && !/^https?:\\/\\//i.test(String(normalized.url))) {\n warnings.push('Use an absolute canonical url for stronger discovery identity.');\n }\n\n if (normalized.imageUrl && !/^https?:\\/\\//i.test(String(normalized.imageUrl))) {\n warnings.push('Use an absolute imageUrl for thumbnails in Explore and agent discovery.');\n }\n\n if (isPaidResource(normalized)) {\n if (!hasValue(normalized.price)) errors.push('Paid content requires price.');\n }\n\n const score = Math.max(0, 100 - errors.length * 20 - warnings.length * 8);\n return {\n ok: errors.length === 0,\n score,\n errors,\n warnings,\n resource: normalized\n };\n}\n\nexport function normalizeServerResource(resource = {}) {\n const normalized = normalizeResource(resource);\n return {\n ...normalized,\n title: normalized.title || String((typeof resource === 'object' && (resource.name || resource.id)) || 'Untitled content').trim(),\n price: normalized.price || '0',\n path: normalized.path || '/',\n };\n}\n", "export function browserWindow() {\n return typeof window === 'undefined' ? null : window;\n}\n", "import { browserWindow } from './env.js';\nimport { normalizeResource } from '../core/resource.js';\n\nexport function queueEvent(eventName, payload) {\n const win = browserWindow();\n if (!win) return false;\n win.__nibgateClientQueue = win.__nibgateClientQueue || [];\n win.__nibgateClientQueue.push({ eventName, payload });\n return true;\n}\n\nexport function flushQueue() {\n const win = browserWindow();\n if (!win?.nibgateHub?.track || !Array.isArray(win.__nibgateClientQueue)) return false;\n const queue = win.__nibgateClientQueue.splice(0);\n queue.forEach((entry) => {\n win.nibgateHub.track(entry.eventName, entry.payload);\n });\n return queue.length > 0;\n}\n\nexport function startQueueFlush() {\n const win = browserWindow();\n if (!win || win.__nibgateClientFlushStarted) return;\n win.__nibgateClientFlushStarted = true;\n let attempts = 0;\n const timer = win.setInterval(() => {\n attempts += 1;\n flushQueue();\n if (win.nibgateHub?.track || attempts >= 80) {\n win.clearInterval(timer);\n win.__nibgateClientFlushStarted = false;\n }\n }, 250);\n}\n\nexport function emit(eventName, payload = {}) {\n const win = browserWindow();\n if (!win) return false;\n\n if (win.nibgateHub?.track) {\n win.nibgateHub.track(eventName, payload);\n flushQueue();\n return true;\n }\n\n queueEvent(eventName, payload);\n startQueueFlush();\n return false;\n}\n\nexport function payloadWithResource(resource, extra = {}) {\n return {\n ...extra,\n resource: normalizeResource(resource)\n };\n}\n", "import { browserWindow } from './env.js';\nimport { normalizeResource } from '../core/resource.js';\n\nexport function unlockStorageKey(resource) {\n return `nibgate:unlock:${resource.id || resource.path || resource.url || 'content'}`;\n}\n\nexport function proofStorageKey(resource) {\n return `nibgate:payment-proof:${resource.id || resource.path || resource.url || 'content'}`;\n}\n\nexport function markUnlocked(resource, payment = {}) {\n const win = browserWindow();\n if (!win) return false;\n try {\n win.localStorage.setItem(unlockStorageKey(resource), JSON.stringify({\n unlockedAt: new Date().toISOString(),\n payment\n }));\n return true;\n } catch (_error) {\n return false;\n }\n}\n\nexport function storePaymentProof(resource, proof) {\n const win = browserWindow();\n if (!win || !proof) return false;\n try {\n const value = typeof proof === 'string' ? proof : JSON.stringify(proof);\n win.localStorage.setItem(proofStorageKey(resource), value);\n return true;\n } catch (_error) {\n return false;\n }\n}\n\nexport function getPaymentProof(resource) {\n const win = browserWindow();\n if (!win) return '';\n try {\n return win.localStorage.getItem(proofStorageKey(resource)) || '';\n } catch (_error) {\n return '';\n }\n}\n\nexport function clearPaymentProof(resource) {\n const normalized = normalizeResource(resource);\n const win = browserWindow();\n if (!win) return false;\n try {\n win.localStorage.removeItem(proofStorageKey(normalized));\n win.localStorage.removeItem(unlockStorageKey(normalized));\n return true;\n } catch (_error) {\n return false;\n }\n}\n\nexport function hasUnlock(resource) {\n const win = browserWindow();\n if (!win) return false;\n try {\n return Boolean(win.localStorage.getItem(unlockStorageKey(resource)));\n } catch (_error) {\n return false;\n }\n}\n", "import { normalizeResource } from '../core/resource.js';\nimport { emit, payloadWithResource } from './events.js';\nimport { hasUnlock, markUnlocked } from './storage.js';\n\nlet defaultClient = null;\n\nexport function setDefaultClient(client) {\n defaultClient = client;\n}\n\nexport function getDefaultClient() {\n return defaultClient;\n}\n\nexport function createGate(resource, options = {}) {\n const normalized = normalizeResource(resource);\n const client = options.client || defaultClient;\n\n return {\n resource: normalized,\n content(extra = {}) {\n return client.content(normalized, extra);\n },\n view(extra = {}) {\n return client.view(normalized, extra);\n },\n track(eventName, payload = {}) {\n return client.track(eventName, payloadWithResource(normalized, payload));\n },\n unlockStarted(extra = {}) {\n return client.unlockStarted(normalized, extra);\n },\n unlockCompleted(payment = {}) {\n markUnlocked(normalized, payment);\n return client.unlockCompleted(normalized, payment);\n },\n paymentCompleted(payment = {}) {\n return client.paymentCompleted(normalized, payment);\n },\n isUnlocked() {\n return hasUnlock(normalized);\n },\n markUnlocked(payment = {}) {\n markUnlocked(normalized, payment);\n client.unlockCompleted(normalized, payment);\n client.paymentCompleted(normalized, payment);\n return true;\n },\n async unlock(handlerOrPayment = {}) {\n client.unlockStarted(normalized);\n const payment = typeof handlerOrPayment === 'function'\n ? await handlerOrPayment(normalized)\n : handlerOrPayment;\n markUnlocked(normalized, payment || {});\n client.unlockCompleted(normalized, payment || {});\n client.paymentCompleted(normalized, payment || {});\n return { unlocked: true, resource: normalized, payment: payment || {} };\n },\n rate(rating = {}, extra = {}) {\n return client.rateResource(normalized, rating, extra);\n }\n };\n}\n", "export function jsonReplacer(_key, value) {\n if (typeof value === 'bigint') return value.toString();\n return value;\n}\n\nexport function stringifyJson(value) {\n return JSON.stringify(value, jsonReplacer);\n}\n", "import { normalizeResource } from './resource.js';\n\nexport function normalizeRating(input = {}) {\n const value = typeof input === 'number' ? input : (input.rating ?? input.stars ?? input.ratingValue ?? input.score);\n const numeric = Number.parseFloat(value);\n const ratingValue = Number.isFinite(numeric)\n ? Math.max(1, Math.min(50, numeric <= 5 ? Math.round(numeric * 10) : Math.round(numeric)))\n : null;\n return {\n ...input,\n rating: ratingValue ? ratingValue / 10 : undefined,\n ratingValue: ratingValue || undefined\n };\n}\n\nexport function ratingMessage(resource, rating = {}, options = {}) {\n const normalized = normalizeResource(resource);\n const normalizedRating = normalizeRating(rating);\n const value = normalizedRating.ratingValue || 0;\n return [\n 'Nibgate content rating',\n `site:${options.siteDomain || options.domain || normalized.siteDomain || normalized.domain || ''}`,\n `content:${normalized.externalId || normalized.id}`,\n `url:${normalized.url || options.url || ''}`,\n `rating:${value}`,\n 'I confirm this rating is tied to my unlock/payment proof.'\n ].join('\\n');\n}\n", "export const CIRCLE_BATCHING_NAME = 'GatewayWalletBatched';\nexport const CIRCLE_BATCHING_VERSION = '1';\nexport const GATEWAY_MIN_AUTH_VALIDITY_SECONDS = 7 * 24 * 60 * 60;\nexport const GATEWAY_AUTH_VALIDITY_WINDOW_SECONDS = GATEWAY_MIN_AUTH_VALIDITY_SECONDS + 100;\n\nconst authorizationTypes = {\n TransferWithAuthorization: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' }\n ]\n};\n\nfunction supportsBatching(requirements) {\n const extra = requirements.extra;\n if (!extra) return false;\n return extra.name === CIRCLE_BATCHING_NAME && extra.version === CIRCLE_BATCHING_VERSION;\n}\n\nfunction getVerifyingContract(requirements) {\n if (!supportsBatching(requirements)) return undefined;\n return requirements.extra?.verifyingContract;\n}\n\nfunction createNonce() {\n const bytes = new Uint8Array(32);\n crypto.getRandomValues(bytes);\n return '0x' + Array.from(bytes).map((b) => b.toString(16).padStart(2, '0')).join('');\n}\n\nfunction getAddress(value) {\n return value && typeof value === 'string' && value.startsWith('0x') ? value.toLowerCase() : value;\n}\n\nexport class BatchEvmScheme {\n constructor(signer) {\n this.signer = signer;\n this.scheme = CIRCLE_BATCHING_NAME;\n this._beforeHooks = [];\n this._afterHooks = [];\n this._failureHooks = [];\n }\n\n onBeforePaymentCreation(hook) {\n this._beforeHooks.push(hook);\n return this;\n }\n\n onAfterPaymentCreation(hook) {\n this._afterHooks.push(hook);\n return this;\n }\n\n onPaymentCreationFailure(hook) {\n this._failureHooks.push(hook);\n return this;\n }\n\n async createPaymentPayload(x402Version, paymentRequirements) {\n const context = {\n paymentRequired: { x402Version, accepts: [paymentRequirements] },\n selectedRequirements: paymentRequirements\n };\n\n for (const hook of this._beforeHooks) {\n const result = await hook(context);\n if (result && result.abort) {\n throw new Error('Payment creation aborted: ' + result.reason);\n }\n }\n\n try {\n if (!supportsBatching(paymentRequirements)) {\n throw new Error(\n 'BatchEvmScheme can only handle Circle batching options. Expected extra.name=\"' +\n CIRCLE_BATCHING_NAME + '\" and extra.version=\"' + CIRCLE_BATCHING_VERSION + '\"'\n );\n }\n\n const verifyingContract = getVerifyingContract(paymentRequirements);\n if (!verifyingContract) {\n throw new Error(\n 'Circle batching option missing extra.verifyingContract (GatewayWallet address)'\n );\n }\n\n const nonce = createNonce();\n const now = Math.floor(Date.now() / 1000);\n const validityWindowSeconds = Math.max(\n paymentRequirements.maxTimeoutSeconds || 0,\n GATEWAY_AUTH_VALIDITY_WINDOW_SECONDS\n );\n\n const authorization = {\n from: getAddress(this.signer.address),\n to: getAddress(paymentRequirements.payTo),\n value: paymentRequirements.amount,\n validAfter: String(now - 600),\n validBefore: String(now + validityWindowSeconds),\n nonce\n };\n\n const signature = await this.signAuthorization(authorization, paymentRequirements, verifyingContract);\n\n const payload = { authorization, signature };\n const result = { x402Version, payload };\n\n const createdContext = { ...context, paymentPayload: result };\n for (const hook of this._afterHooks) {\n try { await hook(createdContext); } catch {}\n }\n\n return result;\n } catch (error) {\n const failureContext = { ...context, error };\n for (const hook of this._failureHooks) {\n const result = await hook(failureContext);\n if (result && result.recovered) {\n return { x402Version: result.payload.x402Version, payload: result.payload.payload };\n }\n }\n throw error;\n }\n }\n\n async signAuthorization(authorization, requirements, verifyingContract) {\n if (!requirements.network.startsWith('eip155:')) {\n throw new Error('BatchEvmScheme: unsupported network format \"' + requirements.network + '\". Expected \"eip155:<chainId>\"');\n }\n\n const chainId = parseInt(requirements.network.split(':')[1], 10);\n\n const domain = {\n name: CIRCLE_BATCHING_NAME,\n version: CIRCLE_BATCHING_VERSION,\n chainId,\n verifyingContract: getAddress(verifyingContract)\n };\n\n const message = {\n from: getAddress(authorization.from),\n to: getAddress(authorization.to),\n value: BigInt(authorization.value),\n validAfter: BigInt(authorization.validAfter),\n validBefore: BigInt(authorization.validBefore),\n nonce: authorization.nonce\n };\n\n const typedData = {\n domain,\n types: authorizationTypes,\n primaryType: 'TransferWithAuthorization',\n message\n };\n\n return this.signer.signTypedData(typedData);\n }\n}\n", "import { stringifyJson } from './json.js';\n\nfunction encodeBase64(value) {\n const text = typeof value === 'string' ? value : stringifyJson(value);\n if (typeof Buffer !== 'undefined') return Buffer.from(text).toString('base64');\n return btoa(unescape(encodeURIComponent(text)));\n}\n\nfunction decodeBase64(value) {\n if (typeof Buffer !== 'undefined') return Buffer.from(value, 'base64').toString('utf8');\n return decodeURIComponent(escape(atob(value)));\n}\n\nexport async function createCircleGatewayBrowserAdapter(options = {}) {\n const signer = options.signer || await options.getSigner?.();\n if (!signer?.address || typeof signer.signTypedData !== 'function') {\n throw new Error('Circle Gateway browser adapter requires an EVM signer with address and signTypedData.');\n }\n\n let BatchEvmScheme;\n try {\n const circle = await import('@circle-fin/x402-batching/client');\n BatchEvmScheme = circle.BatchEvmScheme;\n } catch (err) {\n console.warn('[nibgate] Failed to import @circle-fin/x402-batching/client:', err.message);\n console.warn('[nibgate] Falling back to custom BatchEvmScheme');\n const local = await import('./schemes/batch-scheme.js');\n BatchEvmScheme = local.BatchEvmScheme;\n }\n const scheme = options.clientModule?.BatchEvmScheme\n ? new options.clientModule.BatchEvmScheme(signer)\n : new BatchEvmScheme(signer);\n const network = options.network || options.chainId && `eip155:${options.chainId}` || 'eip155:5042002';\n\n function parsePaymentRequired(input) {\n if (input && typeof input === 'object') return input;\n if (!input || typeof input !== 'string') throw new Error('Missing PAYMENT-REQUIRED header.');\n return JSON.parse(decodeBase64(input));\n }\n\n function selectGatewayRequirement(paymentRequired) {\n const accepts = Array.isArray(paymentRequired?.accepts) ? paymentRequired.accepts : [];\n const selected = accepts.find((option) => {\n const extra = option.extra || {};\n return option.network === network\n && extra.name === 'GatewayWalletBatched'\n && extra.version === '1'\n && typeof extra.verifyingContract === 'string';\n }) || accepts.find((option) => {\n const extra = option.extra || {};\n return extra.name === 'GatewayWalletBatched'\n && extra.version === '1'\n && typeof extra.verifyingContract === 'string';\n });\n if (!selected) {\n const networks = accepts.map((option) => option.network).filter(Boolean).join(', ') || 'none';\n const hasGatewayExtra = accepts.some((option) => {\n const extra = option.extra || {};\n return extra.name === 'GatewayWalletBatched' && extra.version === '1' && typeof extra.verifyingContract === 'string';\n });\n throw new Error(\n hasGatewayExtra\n ? `No Circle Gateway batching payment option found for ${network}. Server returned networks: ${networks}.`\n : `The payment challenge is not a Circle Gateway batching challenge. Configure the creator access route with createCircleGatewayServer(...) or createNibgateServer({ paymentMode: 'circle-gateway', network: '${network}' }).`\n );\n }\n return selected;\n }\n\n return {\n signer,\n network,\n async pay({ paymentRequiredHeader, challenge }) {\n const paymentRequired = parsePaymentRequired(paymentRequiredHeader || challenge);\n const accepted = selectGatewayRequirement(paymentRequired);\n const x402Version = paymentRequired.x402Version ?? 2;\n const paymentPayload = await scheme.createPaymentPayload(x402Version, accepted);\n const paymentSignature = encodeBase64({\n ...paymentPayload,\n resource: paymentRequired.resource,\n accepted\n });\n return {\n paymentSignature,\n signature: paymentSignature,\n metadata: {\n paymentProvider: 'circle-gateway',\n network: accepted.network,\n payer: signer.address,\n recipient: accepted.payTo || accepted.recipient,\n amount: accepted.amount,\n currency: accepted.asset\n }\n };\n }\n };\n}\n", "import { normalizeRating } from '../core/rating.js';\nimport { normalizeResource } from '../core/resource.js';\nimport { emit, payloadWithResource } from './events.js';\n\nconst RATE_CONTENT_SELECTOR = '0xc62fad09';\nconst ZERO_HASH = `0x${'0'.repeat(64)}`;\n\nexport const NIBGATE_CONTENT_HASH_NAMESPACE = 'nibgate:content:v1';\nexport const NIBGATE_REPUTATION_CHAIN_ID = 5042002;\nexport const NIBGATE_REPUTATION_CHAIN_NAME = 'Arc Testnet';\nexport const NIBGATE_REPUTATION_RPC_URL = 'https://rpc.testnet.arc.io';\nexport const NIBGATE_REPUTATION_CONTRACT = '0x9f27fd62e75f86a3c7addfdba443aab1f930e281';\n\nexport const NIBGATE_REPUTATION_ABI = [\n {\n type: 'function',\n name: 'rateContent',\n stateMutability: 'nonpayable',\n inputs: [\n { name: 'contentId', type: 'bytes32' },\n { name: 'rating', type: 'uint8' },\n { name: 'reviewHash', type: 'bytes32' },\n { name: 'unlockRef', type: 'string' }\n ],\n outputs: []\n }\n];\n\nfunction stripHex(value = '') {\n return String(value || '').replace(/^0x/i, '').replace(/[^0-9a-fA-F]/g, '').toLowerCase();\n}\n\nfunction word(hex = '') {\n const clean = stripHex(hex);\n if (clean.length > 64) throw new Error('ABI word is too long.');\n return clean.padStart(64, '0');\n}\n\nfunction wordRight(hex = '') {\n const clean = stripHex(hex);\n if (clean.length > 64) throw new Error('ABI word is too long.');\n return clean.padEnd(64, '0');\n}\n\nfunction numberWord(value = 0) {\n return Number(value || 0).toString(16).padStart(64, '0');\n}\n\nfunction utf8Hex(value = '') {\n return Array.from(new TextEncoder().encode(String(value || '')))\n .map((byte) => byte.toString(16).padStart(2, '0'))\n .join('');\n}\n\nfunction encodeString(value = '') {\n const hex = utf8Hex(value);\n const byteLength = hex.length / 2;\n const paddedLength = Math.ceil(byteLength / 32) * 64;\n return numberWord(byteLength) + hex.padEnd(paddedLength, '0');\n}\n\nfunction encodeRateContent({ contentId, ratingValue, reviewHash, unlockRef }) {\n return RATE_CONTENT_SELECTOR\n + wordRight(contentId)\n + numberWord(ratingValue)\n + wordRight(reviewHash || ZERO_HASH)\n + numberWord(128)\n + encodeString(unlockRef || '');\n}\n\nexport function contentRatingHash(_resource, options = {}) {\n const contentId = options.contentId || options.contentHash;\n if (!contentId) {\n throw new Error('contentId/contentHash is required. Use the Nibgate backend prepare endpoint or pass a known content hash.');\n }\n return contentId;\n}\n\nexport function reviewTextHash(review = '') {\n if (!review) return ZERO_HASH;\n throw new Error('Text review hashing is not available in direct-browser mode. Pass reviewHash from your app/backend.');\n}\n\nasync function prepareOnchainRating(resource, options = {}) {\n if (options.contentId || options.contentHash) return { contentId: options.contentId || options.contentHash };\n const prepareUrl = options.prepareUrl || options.indexUrl?.replace(/\\/index$/, '/prepare');\n if (!prepareUrl) throw new Error('contentId/contentHash or prepareUrl is required for onchain rating.');\n const response = await fetch(prepareUrl, {\n method: 'POST',\n headers: { 'content-type': 'application/json', ...(options.indexHeaders || {}) },\n body: JSON.stringify({\n siteId: options.siteId,\n token: options.token,\n resource,\n url: resource.url,\n path: resource.path\n })\n });\n const payload = await response.json().catch(() => ({}));\n if (!response.ok || !payload.contentHash) throw new Error(payload.error || 'Could not prepare Nibgate onchain rating.');\n return payload;\n}\n\nexport async function rateContentOnchain(resource, options = {}) {\n const normalized = normalizeResource(resource);\n const rating = normalizeRating(options.rating ?? options.stars ?? options);\n if (!rating.ratingValue) throw new Error('Rating must be between 0.1 and 5 stars.');\n\n const provider = options.provider || globalThis?.ethereum;\n if (!provider?.request) throw new Error('Connect an EVM wallet to rate this content onchain.');\n\n const contractAddress = options.contractAddress || options.reputationContract || NIBGATE_REPUTATION_CONTRACT;\n if (!contractAddress) throw new Error('Nibgate reputation contract address is not configured.');\n\n const accounts = await provider.request({ method: 'eth_requestAccounts' });\n const walletAddress = Array.isArray(accounts) ? accounts[0] || '' : '';\n if (!walletAddress) throw new Error('No wallet account selected.');\n\n const prepared = await prepareOnchainRating(normalized, options);\n const contentId = prepared.contentHash || prepared.contentId || contentRatingHash(normalized, options);\n const reviewHash = options.reviewHash || ZERO_HASH;\n const unlockRef = String(options.unlockRef || options.paymentId || options.txHash || '');\n const data = encodeRateContent({ contentId, ratingValue: rating.ratingValue, reviewHash, unlockRef });\n\n const txHash = await provider.request({\n method: 'eth_sendTransaction',\n params: [{\n from: walletAddress,\n to: contractAddress,\n data\n }]\n });\n\n const payload = payloadWithResource(normalized, {\n rating: rating.rating,\n ratingValue: rating.ratingValue,\n walletAddress,\n txHash,\n contentHash: contentId,\n reviewHash,\n proofType: 'onchain_pending',\n proof: unlockRef,\n paymentId: options.paymentId,\n actor: options.actor || 'human'\n });\n emit('content_rating', payload);\n\n if (options.indexUrl) {\n await fetch(options.indexUrl, {\n method: 'POST',\n headers: { 'content-type': 'application/json', ...(options.indexHeaders || {}) },\n body: JSON.stringify({\n siteId: options.siteId,\n token: options.token,\n txHash,\n resource: normalized,\n url: normalized.url,\n path: normalized.path,\n actor: options.actor || 'human'\n })\n }).catch(() => null);\n }\n\n return { txHash, walletAddress, contentId, ratingValue: rating.ratingValue, reviewHash };\n}\n", "import { normalizeResource, normalizeContentType } from '../core/resource.js';\nimport { normalizeRating, ratingMessage } from '../core/rating.js';\nimport { emit } from './events.js';\nimport { browserWindow } from './env.js';\nimport { rateContentOnchain } from './reputation.js';\nimport { createGate } from './gate.js';\n\nexport function rateResource(resource, rating = {}, extra = {}) {\n const normalized = normalizeResource(resource);\n const normalizedRating = normalizeRating(rating);\n const payload = {\n ...extra,\n ...normalizedRating,\n ratingMessage: extra.ratingMessage || rating.message || rating.ratingMessage || ratingMessage(normalized, normalizedRating, extra),\n ratingSignature: extra.ratingSignature || rating.signature || rating.ratingSignature || undefined,\n resource: normalized\n };\n return emit('content_rating', payload);\n}\n\nexport function createOnchainRating(resource, options = {}) {\n const item = createGate(resource, options.gateOptions || {});\n const win = browserWindow();\n const statusTarget = typeof options.status === 'string' ? win?.document.querySelector(options.status) : options.status;\n const ratingTarget = typeof options.ratingTarget === 'string' ? win?.document.querySelector(options.ratingTarget) : options.ratingTarget;\n const buttonSelector = options.ratingButtons || options.buttons || '[data-nibgate-rating-value], [data-rating]';\n const explicitButtons = Array.isArray(options.buttons)\n ? options.buttons\n : typeof options.buttons === 'string'\n ? Array.from(win?.document.querySelectorAll(options.buttons) || [])\n : options.buttons\n ? [options.buttons]\n : null;\n const buttons = explicitButtons || Array.from(win?.document.querySelectorAll(buttonSelector) || []);\n const source = options.source || 'nibgate-onchain-rating';\n\n let busy = false;\n let payment = options.payment || null;\n\n function setStatus(message) {\n if (typeof options.onStatus === 'function') options.onStatus(message);\n if (statusTarget) statusTarget.textContent = message || '';\n }\n\n function setBusy(value) {\n busy = Boolean(value);\n buttons.forEach((button) => {\n if (button && 'disabled' in button) button.disabled = busy;\n });\n }\n\n function setPayment(nextPayment = null) {\n payment = nextPayment || null;\n return payment;\n }\n\n function setVisible(isVisible) {\n if (!ratingTarget) return Boolean(isVisible);\n if ('hidden' in ratingTarget) ratingTarget.hidden = !isVisible;\n ratingTarget.setAttribute('aria-hidden', isVisible ? 'false' : 'true');\n return Boolean(isVisible);\n }\n\n function valueFromButton(button) {\n const raw = button?.dataset?.nibgateRatingValue || button?.dataset?.rating || button?.value || button?.textContent;\n const numeric = Number.parseFloat(String(raw || '').replace(/[^\\d.]/g, ''));\n return Number.isFinite(numeric) ? numeric : Number(options.rating || options.stars || 0);\n }\n\n async function rate(input = {}) {\n setBusy(true);\n try {\n const rating = Number.parseFloat(input.rating ?? input.stars ?? input.value ?? options.rating ?? options.stars);\n if (!Number.isFinite(rating)) throw new Error('Choose a rating before sending.');\n const paymentId = input.paymentId || options.paymentId || (typeof options.getPaymentId === 'function' ? options.getPaymentId() : payment?.paymentId);\n const unlockRef = input.unlockRef || options.unlockRef\n || (typeof options.getUnlockRef === 'function' ? options.getUnlockRef() : null)\n || paymentId || payment?.txHash || payment?.transactionHash || '';\n\n setStatus(options.pendingMessage || 'Send the onchain rating transaction...');\n const result = await rateContentOnchain(item.resource, { ...options, ...input, rating, paymentId, unlockRef, source });\n setStatus(options.successMessage || 'Rating sent to Nibgate reputation.');\n if (typeof options.onRated === 'function') options.onRated(result);\n return result;\n } catch (error) {\n const message = error?.message || options.errorMessage || 'Rating failed.';\n setStatus(message);\n if (typeof options.onError === 'function') options.onError(error);\n throw error;\n } finally {\n setBusy(false);\n }\n }\n\n function mount() {\n buttons.forEach((button) => {\n button?.addEventListener?.('click', () => rate({ rating: valueFromButton(button) }).catch(() => null));\n });\n if (options.visible !== undefined) setVisible(Boolean(options.visible));\n return controller;\n }\n\n const controller = { resource: item.resource, rate, mount, setPayment, setVisible };\n if (options.autoMount !== false) mount();\n return controller;\n}\n\nexport function mountRatingUI(resource, options = {}) {\n const item = createGate(resource, options.gateOptions || {});\n const win = browserWindow();\n if (!win) return null;\n const target = typeof options.target === 'string' ? win.document.querySelector(options.target) : options.target;\n if (!target) return null;\n\n const stars = [1, 2, 3, 4, 5];\n let selectedRating = 0;\n\n const container = win.document.createElement('div');\n container.className = 'nibgate-rating-ui';\n container.style.cssText = 'display:flex;align-items:center;gap:4px;padding:8px 0';\n\n const starButtons = stars.map((value) => {\n const btn = win.document.createElement('button');\n btn.type = 'button';\n btn.dataset.nibgateRatingValue = String(value);\n btn.setAttribute('aria-label', `${value} star${value > 1 ? 's' : ''}`);\n btn.innerHTML = '\u2606';\n btn.style.cssText = 'background:none;border:none;font-size:24px;cursor:pointer;color:#ccc;transition:color 0.15s;padding:2px;line-height:1';\n btn.addEventListener('mouseenter', () => {\n starButtons.forEach((b, i) => b.style.color = i < value ? '#f5b342' : '#ccc');\n });\n btn.addEventListener('mouseleave', () => {\n starButtons.forEach((b, i) => b.style.color = i < selectedRating ? '#f5b342' : '#ccc');\n });\n btn.addEventListener('click', () => {\n selectedRating = value;\n starButtons.forEach((b, i) => b.style.color = i < value ? '#f5b342' : '#ccc');\n rateResource(item.resource, { rating: value }).catch(() => {});\n });\n container.appendChild(btn);\n return btn;\n });\n\n const statusEl = win.document.createElement('span');\n statusEl.style.cssText = 'font-size:13px;color:#888;margin-left:8px';\n statusEl.textContent = options.label || 'Rate this content';\n container.appendChild(statusEl);\n\n target.appendChild(container);\n\n function rate(r, input = {}) {\n return item.rate({ ...input, rating: r });\n }\n\n function setRating(value) {\n selectedRating = value;\n starButtons.forEach((b, i) => b.style.color = i < value ? '#f5b342' : '#ccc');\n }\n\n return { resource: item.resource, container, setRating, rate };\n}\n", "export { createGate } from './gate.js';\nexport { checkResourceAccess, payWithPaymentSignature, payAndUnlockResource } from './access.js';\nexport { createWalletCheckout } from './checkout.js';\nexport { createNibgate, nibgate } from './client.js';\nexport { createEvmGatewayUnlock, createHostedUnlock, createCircleGatewayBrowserAdapter } from './evm-gateway.js';\nexport { rateResource, createOnchainRating, mountRatingUI } from './rating-ui.js';\nexport { trackResourcePage, setupResourcePage } from './track.js';\nexport { createTransferCheckout, payWithTransfer } from './transfer.js';\nexport { contentRatingHash, NIBGATE_CONTENT_HASH_NAMESPACE, NIBGATE_REPUTATION_ABI, NIBGATE_REPUTATION_CHAIN_ID, NIBGATE_REPUTATION_CHAIN_NAME, NIBGATE_REPUTATION_CONTRACT, NIBGATE_REPUTATION_RPC_URL, rateContentOnchain, reviewTextHash } from './reputation.js';\nexport { renderDefaultUnlockUI, renderDefaultRatingUI, renderDefaultGatewayWalletUI } from './default-ui.js';\nexport { CONTENT_TYPES, ACCESS_MODES, UNLOCK_MODES, normalizeContentType, normalizeResource, normalizeAccessPolicy, normalizeUnlockPolicy, validateResourceMetadata } from '../core/resource.js';\nexport { NIBGATE_CONTENT_SETTING_FIELDS, createNibgateContentSettings, settingsToAccessPolicy, settingsToUnlockPolicy } from '../core/settings.js';\nexport { PAYMENT_RAILS, normalizePaymentRail } from '../core/payment.js';\n", "import { normalizeResource } from '../core/resource.js';\nimport { browserWindow } from './env.js';\nimport { emit } from './events.js';\nimport { getPaymentProof, storePaymentProof } from './storage.js';\nimport { stringifyJson } from './json.js';\nimport { createGate } from './gate.js';\nimport { trackResourcePage } from './track.js';\n\nexport async function checkResourceAccess(resource, options = {}) {\n const item = createGate(resource, options.gateOptions || {});\n const accessPath = options.accessPath || item.resource.accessPath || '/api/nibgate/access';\n const status = typeof options.onStatus === 'function' ? options.onStatus : () => {};\n\n status(options.checkingMessage || 'Checking access route...');\n item.unlockStarted({ source: options.source, paymentProvider: options.paymentProvider || 'nibgate-access-route' });\n\n const response = await fetch(accessPath, {\n method: options.method || 'GET',\n headers: {\n accept: 'application/json',\n ...(getPaymentProof(item.resource) ? { 'x-nibgate-payment-proof': getPaymentProof(item.resource) } : {}),\n ...(options.headers || {})\n },\n body: options.body\n });\n const payload = await response.json().catch(() => ({}));\n\n if (response.status === 402) {\n item.track('payment_challenge_returned', { source: options.source, challenge: payload, resource: item.resource });\n status(options.challengeMessage || 'Payment challenge returned. Continue with checkout.');\n if (typeof options.createPaymentSignature === 'function' || typeof options.checkout === 'function') {\n return payWithPaymentSignature(resource, {\n ...options, challenge: payload,\n paymentRequiredHeader: response.headers.get('PAYMENT-REQUIRED') || response.headers.get('payment-required') || ''\n });\n }\n if (options.autoPay && options.payPath) {\n const paymentResult = await payAndUnlockResource(resource, options);\n if (paymentResult.ok && options.retryAfterPay !== false) {\n return checkResourceAccess(resource, { ...options, autoPay: false });\n }\n return paymentResult;\n }\n return { ok: false, status: response.status, challenge: payload, resource: item.resource, response };\n }\n\n if (!response.ok) {\n status(payload.error || options.errorMessage || 'Access check failed');\n return { ok: false, status: response.status, error: payload.error || 'Access check failed', payload, resource: item.resource, response };\n }\n\n const payment = options.payment || payload.payment || null;\n if (payment) {\n item.unlockCompleted(payment);\n item.paymentCompleted(payment);\n }\n status(options.successMessage || 'Access allowed and Nibgate events emitted.');\n return { ok: true, status: response.status, payload, payment, resource: item.resource, response };\n}\n\nexport async function payWithPaymentSignature(resource, options = {}) {\n const item = createGate(resource, options.gateOptions || {});\n const accessPath = options.accessPath || item.resource.accessPath || '/api/nibgate/access';\n const status = typeof options.onStatus === 'function' ? options.onStatus : () => {};\n\n status(options.paymentMessage || 'Waiting for wallet payment approval...');\n item.unlockStarted({ source: options.source, paymentProvider: options.paymentProvider || 'wallet-gateway' });\n\n let paymentSignature = options.paymentSignature || '';\n let paymentMemo = options.memo || '';\n let paymentMetadata = options.payment || {};\n\n if (!paymentSignature) {\n const paymentRequiredHeader = options.paymentRequiredHeader || '';\n const challenge = options.challenge || null;\n const checkout = options.createPaymentSignature || options.checkout;\n const result = await checkout({\n resource: item.resource, challenge, paymentRequiredHeader, accessPath\n });\n paymentSignature = result?.paymentSignature || result?.signature || result?.payment || '';\n paymentMemo = result?.memo || result?.paymentMemo || '';\n paymentMetadata = result?.metadata || result?.paymentMetadata || result || {};\n }\n\n if (!paymentSignature) {\n const error = 'Wallet did not return a payment signature.';\n item.track('payment_failed', { source: options.source, error });\n status(error);\n return { ok: false, status: 400, error, resource: item.resource };\n }\n\n const response = await fetch(accessPath, {\n method: options.method || 'GET',\n headers: {\n accept: 'application/json',\n 'payment-signature': paymentSignature,\n ...(paymentMemo ? { 'payment-memo': paymentMemo } : {}),\n ...(options.headers || {})\n }\n });\n const responseText = await response.text();\n let payload = {};\n try {\n payload = responseText ? JSON.parse(responseText) : {};\n } catch (_error) {\n payload = { error: responseText || 'Payment verification failed' };\n }\n\n if (!response.ok) {\n const detail = payload.detail || payload.reason || payload.invalidReason || payload.error || responseText || 'Payment verification failed';\n const error = typeof detail === 'string' ? detail : stringifyJson(detail);\n item.track('payment_failed', { source: options.source, status: response.status, error, ...paymentMetadata });\n status(options.paymentErrorMessage || error);\n return { ok: false, status: response.status, error, payload, resource: item.resource, response };\n }\n\n const payment = payload.payment || {\n paymentProvider: options.paymentProvider || 'wallet-gateway',\n paymentId: paymentSignature,\n memo: paymentMemo,\n amount: Number(item.resource.price || 0),\n revenue: Number(item.resource.price || 0),\n currency: item.resource.currency || 'USDC',\n ...paymentMetadata\n };\n storePaymentProof(item.resource, payload.unlockProof);\n item.markUnlocked(payment);\n status(options.paymentSuccessMessage || 'Payment verified. Content unlocked.');\n return { ok: true, status: response.status, payload, payment, resource: item.resource, response };\n}\n\nexport async function payAndUnlockResource(resource, options = {}) {\n const item = createGate(resource, options.gateOptions || {});\n const payPath = options.payPath || item.resource.payPath || '/api/nibgate/pay';\n const status = typeof options.onStatus === 'function' ? options.onStatus : () => {};\n\n status(options.paymentMessage || 'Starting payment...');\n item.unlockStarted({ source: options.source, paymentProvider: options.paymentProvider || 'circle-gateway' });\n\n const response = await fetch(payPath, {\n method: options.payMethod || 'POST',\n headers: {\n accept: 'application/json',\n 'content-type': 'application/json',\n ...(options.payHeaders || {})\n },\n body: JSON.stringify({ resource: item.resource, ...(options.payPayload || {}) })\n });\n const payload = await response.json().catch(() => ({}));\n\n if (!response.ok || !payload.ok) {\n item.track('payment_failed', { source: options.source, status: response.status, error: payload.error || 'Payment failed', detail: payload.detail || '' });\n status(payload.detail || payload.error || options.paymentErrorMessage || 'Payment failed.');\n return { ok: false, status: response.status, payload, resource: item.resource, response };\n }\n\n const payment = payload.payment || {\n paymentProvider: options.paymentProvider || 'circle-gateway',\n paymentId: payload.paymentId || `nibgate_payment_${Date.now()}`,\n amount: Number(item.resource.price || 0),\n revenue: Number(item.resource.price || 0),\n currency: item.resource.currency || 'USDC'\n };\n storePaymentProof(item.resource, payload.unlockProof);\n item.markUnlocked(payment);\n status(options.paymentSuccessMessage || 'Payment verified. Content unlocked.');\n return { ok: true, status: response.status, payload, payment, resource: item.resource, response };\n}\n", "import { validateResourceMetadata } from '../core/resource.js';\nimport { browserWindow } from './env.js';\nimport { createGate } from './gate.js';\nimport { checkResourceAccess } from './access.js';\n\nexport function trackResourcePage(resource, options = {}) {\n const item = createGate(resource, options.gateOptions || {});\n const validation = validateResourceMetadata(item.resource, options.validation || {});\n if ((validation.warnings.length || validation.errors.length) && options.warn !== false && browserWindow()?.console?.warn) {\n browserWindow().console.warn('Nibgate content metadata needs attention', validation);\n }\n item.content({ source: options.source, metadataQuality: { score: validation.score, warnings: validation.warnings, errors: validation.errors }, ...(options.content || {}) });\n item.view({\n source: options.source,\n path: options.path || browserWindow()?.location?.pathname || item.resource.path,\n referrer: options.referrer ?? browserWindow()?.document?.referrer ?? '',\n ...(options.view || {})\n });\n return item;\n}\n\nexport function setupResourcePage(resource, options = {}) {\n const item = trackResourcePage(resource, options);\n const win = browserWindow();\n if (!win) return item;\n\n const button = typeof options.button === 'string' ? win.document.querySelector(options.button) : options.button;\n const statusElement = typeof options.status === 'string' ? win.document.querySelector(options.status) : options.status;\n const setStatus = options.onStatus || ((message) => {\n if (statusElement) statusElement.textContent = message || '';\n });\n\n if (button) {\n button.addEventListener('click', async () => {\n button.disabled = true;\n try {\n await checkResourceAccess(resource, { ...options, onStatus: setStatus });\n } finally {\n button.disabled = false;\n }\n });\n }\n\n return item;\n}\n", "import { normalizeResource } from '../core/resource.js';\nimport { browserWindow } from './env.js';\nimport { checkResourceAccess } from './access.js';\n\nfunction setElementText(target, message) {\n const win = browserWindow();\n if (!target || !win) return;\n const element = typeof target === 'string' ? win.document.querySelector(target) : target;\n if (element) element.textContent = message || '';\n}\n\nfunction setElementDisabled(target, disabled) {\n const win = browserWindow();\n if (!target || !win) return;\n const element = typeof target === 'string' ? win.document.querySelector(target) : target;\n if (element && 'disabled' in element) element.disabled = Boolean(disabled);\n}\n\nexport function createWalletCheckout(resource, options = {}) {\n const normalized = normalizeResource(resource);\n const accessPath = options.accessPath || normalized.accessPath || '/api/nibgate/access';\n const button = options.button || null;\n const statusTarget = options.status || null;\n const status = typeof options.onStatus === 'function'\n ? options.onStatus\n : (message) => setElementText(statusTarget, message);\n const checkout = options.checkout || options.createPaymentSignature || options.pay;\n\n if (typeof checkout !== 'function') {\n throw new Error('createWalletCheckout requires checkout/createPaymentSignature/pay callback for the active wallet or Gateway adapter.');\n }\n\n async function unlock(extra = {}) {\n setElementDisabled(button, true);\n try {\n return await checkResourceAccess(normalized, {\n ...options, ...extra, accessPath, createPaymentSignature: checkout, onStatus: status\n });\n } finally {\n setElementDisabled(button, false);\n }\n }\n\n function mount() {\n const win = browserWindow();\n if (!win || !button) return { unlock };\n const element = typeof button === 'string' ? win.document.querySelector(button) : button;\n if (element) element.addEventListener('click', () => unlock().catch((error) => status(error.message || 'Checkout failed.')));\n return { unlock };\n }\n\n return { resource: normalized, unlock, mount };\n}\n", "import { normalizeResource, normalizeContentType } from '../core/resource.js';\nimport { ratingMessage } from '../core/rating.js';\nimport { emit, flushQueue, payloadWithResource } from './events.js';\nimport { setDefaultClient } from './gate.js';\nimport { createGate } from './gate.js';\nimport { checkResourceAccess, payWithPaymentSignature, payAndUnlockResource } from './access.js';\nimport { createWalletCheckout } from './checkout.js';\nimport { createEvmGatewayUnlock, createCircleGatewayBrowserAdapter } from './evm-gateway.js';\nimport { rateResource, createOnchainRating, mountRatingUI } from './rating-ui.js';\nimport { trackResourcePage, setupResourcePage } from './track.js';\nimport { createTransferCheckout, payWithTransfer } from './transfer.js';\n\nexport function createNibgate(defaults = {}) {\n const defaultResource = defaults.resource ? normalizeResource(defaults.resource) : null;\n\n function resourceWithDefaults(resource = {}) {\n return normalizeResource({\n ...(defaultResource || {}),\n ...(typeof resource === 'string' ? { id: resource } : resource)\n });\n }\n\n return {\n content(resource, extra = {}) {\n return emit('content_registered', payloadWithResource(resourceWithDefaults(resource), extra));\n },\n registerContent(resource, extra = {}) {\n return emit('content_registered', payloadWithResource(resourceWithDefaults(resource), extra));\n },\n view(resource, extra = {}) {\n return emit('resource_view', payloadWithResource(resourceWithDefaults(resource), extra));\n },\n track(eventName, payload = {}) {\n return emit(eventName || 'custom', payload);\n },\n unlockStarted(resource, extra = {}) {\n return emit('unlock_started', payloadWithResource(resourceWithDefaults(resource), extra));\n },\n unlockCompleted(resource, payment = {}) {\n return emit('unlock_completed', payloadWithResource(resourceWithDefaults(resource), payment));\n },\n paymentCompleted(resource, payment = {}) {\n return emit('payment_completed', payloadWithResource(resourceWithDefaults(resource), payment));\n },\n rateResource(resource, rating = {}, extra = {}) {\n return rateResource(resourceWithDefaults(resource), rating, extra);\n },\n ratingMessage(resource, rating = {}, messageOptions = {}) {\n return ratingMessage(resourceWithDefaults(resource), rating, messageOptions);\n },\n gate(resource, options = {}) {\n return createGate(resourceWithDefaults(resource), { ...options, client: this });\n },\n trackResourcePage(resource, options = {}) {\n return trackResourcePage(resourceWithDefaults(resource), options);\n },\n checkResourceAccess(resource, options = {}) {\n return checkResourceAccess(resourceWithDefaults(resource), options);\n },\n payWithPaymentSignature(resource, options = {}) {\n return payWithPaymentSignature(resourceWithDefaults(resource), options);\n },\n createWalletCheckout(resource, options = {}) {\n return createWalletCheckout(resourceWithDefaults(resource), options);\n },\n createCircleGatewayBrowserAdapter(options = {}) {\n return createCircleGatewayBrowserAdapter(options);\n },\n createTransferCheckout(resource, options = {}) {\n return createTransferCheckout(resourceWithDefaults(resource), options);\n },\n payWithTransfer(resource, options = {}) {\n return payWithTransfer(resourceWithDefaults(resource), options);\n },\n createEvmGatewayUnlock(resource, options = {}) {\n return createEvmGatewayUnlock(resourceWithDefaults(resource), options);\n },\n createOnchainRating(resource, options = {}) {\n return createOnchainRating(resourceWithDefaults(resource), options);\n },\n mountRatingUI(resource, options = {}) {\n return mountRatingUI(resourceWithDefaults(resource), options);\n },\n payAndUnlockResource(resource, options = {}) {\n return payAndUnlockResource(resourceWithDefaults(resource), options);\n },\n setupResourcePage(resource, options = {}) {\n return setupResourcePage(resourceWithDefaults(resource), options);\n },\n normalizeResource: resourceWithDefaults,\n normalizeContentType,\n flush: flushQueue\n };\n}\n\nexport const nibgate = createNibgate();\nsetDefaultClient(nibgate);\n", "import { normalizeResource } from '../core/resource.js';\nimport { browserWindow } from './env.js';\nimport { clearPaymentProof } from './storage.js';\nimport { stringifyJson } from './json.js';\nimport { createGate } from './gate.js';\nimport { checkResourceAccess } from './access.js';\nimport { trackResourcePage } from './track.js';\n\nexport async function createCircleGatewayBrowserAdapter(options = {}) {\n const gateway = await import('./gateway.js');\n return gateway.createCircleGatewayBrowserAdapter(options);\n}\n\nconst HOSTED_PAY_URL = 'https://api.nibgate.xyz/api/hub/pay';\n\nfunction resolveAccessPath(resource, options) {\n if (options.hosted || options.accessPath === 'hosted') return HOSTED_PAY_URL;\n return options.accessPath || resource.accessPath || '/api/nibgate/access';\n}\n\nexport function createEvmGatewayUnlock(resource, options = {}) {\n const item = createGate(resource, options.gateOptions || {});\n const win = browserWindow();\n const accessPath = resolveAccessPath(item.resource, options);\n const source = options.source || 'nibgate-evm-gateway';\n const network = options.network || 'eip155:5042002';\n const statusTarget = typeof options.status === 'string' ? win?.document.querySelector(options.status) : options.status;\n const connectButton = typeof options.connectButton === 'string' ? win?.document.querySelector(options.connectButton) : options.connectButton;\n const disconnectButton = typeof options.disconnectButton === 'string' ? win?.document.querySelector(options.disconnectButton) : options.disconnectButton;\n const unlockButton = typeof options.unlockButton === 'string' ? win?.document.querySelector(options.unlockButton) : options.unlockButton;\n const clearButton = typeof options.clearButton === 'string' ? win?.document.querySelector(options.clearButton) : options.clearButton;\n const walletLabel = typeof options.walletLabel === 'string' ? win?.document.querySelector(options.walletLabel) : options.walletLabel;\n const unlockedTarget = typeof options.unlockedTarget === 'string' ? win?.document.querySelector(options.unlockedTarget) : options.unlockedTarget;\n\n let walletAddress = '';\n let busy = false;\n\n function setStatus(message) {\n if (typeof options.onStatus === 'function') options.onStatus(message);\n if (statusTarget) statusTarget.textContent = message || '';\n }\n\n function shortAddress(address) {\n return address ? `${address.slice(0, 6)}...${address.slice(-4)}` : '';\n }\n\n function provider() {\n return win?.ethereum || options.provider || null;\n }\n\n function setBusy(value) {\n busy = Boolean(value);\n [connectButton, disconnectButton, unlockButton, clearButton].forEach((button) => {\n if (button && 'disabled' in button) {\n button.disabled = busy || (button === connectButton && !provider()) || (button === disconnectButton && !walletAddress);\n }\n });\n }\n\n function renderWallet() {\n const hasProvider = Boolean(provider());\n if (walletLabel) walletLabel.textContent = walletAddress ? shortAddress(walletAddress) : hasProvider ? 'Ready to connect' : 'No wallet detected';\n if (connectButton) connectButton.textContent = walletAddress ? 'Connected' : 'Connect wallet';\n if (disconnectButton) disconnectButton.textContent = 'Disconnect';\n if (connectButton && 'disabled' in connectButton) connectButton.disabled = busy || !hasProvider;\n if (disconnectButton && 'disabled' in disconnectButton) disconnectButton.disabled = busy || !walletAddress;\n }\n\n function setUnlocked(isUnlocked, payment = {}) {\n if (unlockButton) unlockButton.textContent = isUnlocked ? 'Unlocked' : `Unlock for ${item.resource.price} ${item.resource.currency || 'USDC'}`;\n if (unlockedTarget) {\n if ('hidden' in unlockedTarget) unlockedTarget.hidden = !isUnlocked;\n unlockedTarget.setAttribute('aria-hidden', isUnlocked ? 'false' : 'true');\n }\n if (isUnlocked) item.markUnlocked(payment);\n }\n\n async function connect() {\n setBusy(true);\n setStatus('Opening wallet connection...');\n try {\n const evm = provider();\n if (!evm) throw new Error(options.noWalletMessage || 'Install or open an EVM wallet to continue.');\n const accounts = await evm.request({ method: 'eth_requestAccounts' });\n walletAddress = Array.isArray(accounts) ? accounts[0] || '' : '';\n if (!walletAddress) throw new Error('No wallet account selected.');\n renderWallet();\n setStatus('Wallet connected. You can unlock now.');\n return walletAddress;\n } finally {\n setBusy(false);\n }\n }\n\n async function disconnect() {\n setBusy(true);\n try {\n const evm = provider();\n if (evm?.request && walletAddress) {\n try {\n await evm.request({ method: 'wallet_revokePermissions', params: [{ eth_accounts: {} }] });\n } catch (_error) { }\n }\n walletAddress = '';\n renderWallet();\n setStatus(options.disconnectMessage || 'Wallet disconnected for this page.');\n return true;\n } finally {\n setBusy(false);\n }\n }\n\n async function checkout(input) {\n const evm = provider();\n if (!evm) throw new Error(options.noWalletMessage || 'Install or open an EVM wallet to continue.');\n if (!walletAddress) await connect();\n const gatewayWallet = await createCircleGatewayBrowserAdapter({\n network,\n signer: {\n address: walletAddress,\n signTypedData: (typedData) => evm.request({ method: 'eth_signTypedData_v4', params: [walletAddress, stringifyJson(typedData)] })\n },\n clientModule: options.circleClientModule\n });\n return gatewayWallet.pay(input);\n }\n\n async function unlock() {\n setBusy(true);\n try {\n if (!walletAddress) await connect();\n setBusy(true);\n setStatus('Requesting Gateway unlock...');\n const result = await checkResourceAccess(item.resource, {\n accessPath, source,\n paymentProvider: options.paymentProvider || 'circle-gateway-browser',\n challengeMessage: options.challengeMessage || 'Gateway payment required. Connect your wallet to continue...',\n paymentMessage: options.paymentMessage || 'Approve the Gateway payment proof in your wallet...',\n successMessage: options.successMessage || `Unlocked ${item.resource.title || 'content'}.`,\n method: options.method,\n headers: options.headers,\n body: options.body,\n checkout, onStatus: setStatus\n });\n if (result.ok) {\n setUnlocked(true, result.payment || {});\n if (typeof options.onUnlock === 'function') options.onUnlock(result);\n }\n return result;\n } catch (error) {\n const message = error?.message || 'Unlock failed. Please try again.';\n setStatus(message);\n return { ok: false, status: 0, error: message, resource: item.resource };\n } finally {\n setBusy(false);\n renderWallet();\n }\n }\n\n function clear() {\n clearPaymentProof(item.resource);\n setUnlocked(false);\n setStatus('Local payment proof cleared. The next unlock will require Gateway payment again.');\n }\n\n async function hydrate() {\n const evm = provider();\n try {\n const accounts = evm ? await evm.request({ method: 'eth_accounts' }) : [];\n walletAddress = Array.isArray(accounts) ? accounts[0] || '' : '';\n } catch { }\n renderWallet();\n setUnlocked(false);\n }\n\n function mount() {\n connectButton?.addEventListener?.('click', () => connect().catch((error) => setStatus(error?.message || 'Could not connect wallet.')));\n disconnectButton?.addEventListener?.('click', () => disconnect().catch((error) => setStatus(error?.message || 'Could not disconnect wallet.')));\n unlockButton?.addEventListener?.('click', () => unlock());\n clearButton?.addEventListener?.('click', clear);\n hydrate();\n trackResourcePage(item.resource, { source });\n return controller;\n }\n\n const controller = { resource: item.resource, connect, disconnect, unlock, clear, hydrate, mount, getWalletAddress: () => walletAddress };\n if (options.autoMount !== false) mount();\n return controller;\n}\n\nexport function createHostedUnlock(resource, options = {}) {\n return createEvmGatewayUnlock(resource, {\n ...options,\n hosted: true,\n noWalletMessage: options.noWalletMessage || 'Install MetaMask or another EVM wallet to unlock premium content.',\n });\n}\n", "import { normalizeResource } from '../core/resource.js';\nimport { checkResourceAccess } from './index.js';\n\nexport function createTransferCheckout(resource, options = {}) {\n const normalized = normalizeResource({ ...resource, paymentRail: 'transfer' });\n const sendTransfer = options.sendTransfer || options.transfer;\n if (typeof sendTransfer !== 'function') {\n throw new Error('createTransferCheckout requires sendTransfer({ resource, recipient, amount, currency, network }) and a server verifyTransfer hook.');\n }\n\n return {\n resource: normalized,\n async pay(input = {}) {\n const recipient = normalized.recipient || normalized.payTo;\n const amount = String(normalized.price || normalized.amount || '0');\n const currency = normalized.currency || 'USDC';\n const network = options.network || input.challenge?.accepts?.[0]?.network || 'eip155:5042002';\n const result = await sendTransfer({ resource: normalized, recipient, amount, currency, network, challenge: input.challenge });\n const txHash = result?.txHash || result?.hash || result?.transactionHash || result?.paymentId || '';\n if (!txHash) throw new Error('Transfer checkout did not return a txHash.');\n return {\n paymentSignature: txHash,\n signature: txHash,\n memo: result.memo || '',\n metadata: {\n paymentProvider: 'direct-transfer',\n paymentId: txHash,\n txHash,\n recipient,\n amount: Number(amount),\n currency,\n network,\n ...(result.metadata || result)\n }\n };\n }\n };\n}\n\nexport async function payWithTransfer(resource, options = {}) {\n const checkout = options.checkout || createTransferCheckout(resource, options).pay;\n const result = await checkout({ resource: normalizeResource(resource), challenge: options.challenge || null });\n const txHash = result?.metadata?.txHash || result?.txHash || result?.paymentSignature || result?.signature || '';\n if (!txHash) throw new Error('Transfer checkout did not return a txHash.');\n return checkResourceAccess(resource, {\n ...options,\n headers: {\n ...(options.headers || {}),\n 'x-nibgate-transfer-tx': txHash\n },\n payment: result.metadata || { paymentProvider: 'direct-transfer', txHash, paymentId: txHash }\n });\n}\n", "import { createEvmGatewayUnlock } from './evm-gateway.js';\n\nconst SID = 'nibgate-ui-styles';\n\nconst theme = {\n bg: 'var(--bg, #f4f4f0)',\n fg: 'var(--fg, #0a0a0a)',\n muted: 'var(--muted, #6b6862)',\n border: 'var(--border, #cecdc3)',\n accent: 'var(--accent, #7c9a6d)',\n accentSoft: 'var(--accent-soft, #d8e8d3)',\n cardHover: 'var(--card-hover, #e0ddd3)',\n};\n\nconst css = (s) => Object.entries(s).map(([k, v]) => `${k.replace(/[A-Z]/g, m => '-' + m.toLowerCase())}:${v}`).join(';');\n\nfunction h(tag, attrs, children) {\n const e = document.createElement(tag);\n for (const [k, v] of Object.entries(attrs || {})) {\n if (k === 'dataset') Object.assign(e.dataset, v);\n else if (k.startsWith('on')) e.addEventListener(k.slice(2).toLowerCase(), v);\n else if (k === 'style' && typeof v === 'object') e.style.cssText = css(v);\n else if (k === 'cls') e.className = v;\n else e.setAttribute(k, String(v));\n }\n if (typeof children === 'string') e.innerHTML = children;\n else if (children) (Array.isArray(children) ? children : [children]).forEach(c => { if (c != null) e.appendChild(typeof c === 'string' ? document.createTextNode(c) : c); });\n return e;\n}\n\nfunction inject() {\n if (document.getElementById(SID)) return;\n const s = h('style', { id: SID }, `\n@keyframes nfade { from { opacity:0;transform:translateY(6px) } to { opacity:1;transform:translateY(0) } }\n@keyframes nscale { from { opacity:0;transform:scale(0.96) } to { opacity:1;transform:scale(1) } }\n@keyframes nshimmer { 0% { transform:translateX(-100%) } 100% { transform:translateX(100%) } }\n\n.nui { font-family:var(--font-content,'Kumbh Sans','ABC Favorit',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif);color:${theme.fg};line-height:1.5;-webkit-font-smoothing:antialiased;font-size:19px }\n.nui *,.nui *::before,.nui *::after { box-sizing:border-box }\n.nui-btn { display:flex;align-items:center;justify-content:center;gap:8px;font-size:18px;font-weight:600;padding:14px 28px;border-radius:12px;cursor:pointer;transition:all.12s;font-family:inherit;line-height:1;border:none }\n.nui-btn:disabled { opacity:0.35;cursor:default;pointer-events:none }\n.nui-btn:focus-visible { outline:2px solid ${theme.accent};outline-offset:2px }\n.nui-btn-primary { background:${theme.accent};color:${theme.bg} }\n.nui-btn-primary:hover:not(:disabled) { opacity:0.9 }\n.nui-btn-primary:active:not(:disabled) { transform:scale(.98) }\n.nui-btn-outline { background:transparent;border:1px solid ${theme.border};color:${theme.fg} }\n.nui-btn-outline:hover:not(:disabled) { border-color:${theme.accent};color:${theme.accent} }\n.nui-input { padding:14px 16px;font-size:18px;border-radius:12px;border:1px solid ${theme.border};background:transparent;color:${theme.fg};width:100%;font-family:inherit;outline:none;transition:border-color.12s }\n.nui-input:focus { border-color:${theme.accent} }\n.nui-input::placeholder { color:${theme.muted} }\n.nui-label { font-size:17px;font-weight:600;color:${theme.muted};margin-bottom:8px;display:block }\n.nui-mono { font-family:ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,monospace }\n.nui-stat { font-size:18px;color:${theme.muted};line-height:1.4;min-height:28px }\n.nui-stat-err { color:#dc2626 }\n.nui-stat-ok { color:#16a34a }\n`);\n document.head.appendChild(s);\n}\n\nfunction el(tag, a, c) { return h(tag, a, c); }\n\nfunction status(el, msg) {\n if (!el) return;\n el.textContent = msg || '';\n}\n\nfunction esc(s) {\n const d = document.createElement('div');\n d.textContent = String(s ?? '');\n return d.innerHTML;\n}\n\nexport function renderDefaultUnlockUI(container, resource, options = {}) {\n inject();\n\n const card = el('div', { cls: 'nui', style: { animation: 'nfade .2s ease-out' } });\n\n const lockSVG = '<svg width=\"24\" height=\"24\" viewBox=\"0 0 32 32\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"vertical-align:middle\"><path d=\"M6 16v8a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-8\"/><path d=\"M10 16v-5a6 6 0 0 1 12 0v5\"/><circle cx=\"16\" cy=\"21\" r=\"2\"/></svg>';\n\n card.innerHTML = `\n <div style=\"display:flex;flex-direction:column;align-items:center;text-align:center;max-width:580px;margin:0 auto;padding:40px 52px\">\n <div id=\"nibgate-lottie\" style=\"width:165px;height:168px;margin-bottom:24px\"></div>\n <div style=\"font-size:50px;font-weight:700;letter-spacing:-.03em;color:${theme.fg};margin-bottom:12px\">${esc(resource.price)} USDC</div>\n <div style=\"font-size:21px;color:${theme.muted};margin-bottom:48px\">Pay to unlock this content</div>\n <div data-nibgate-wallet-label class=\"nui-mono\" style=\"font-size:18px;color:${theme.muted};margin-bottom:40px;min-height:28px\">Connect wallet</div>\n <div data-nibgate-unlock-wrap style=\"width:100%;position:relative;border-radius:12px;overflow:hidden;cursor:pointer\">\n <div data-nibgate-unlock-progress style=\"position:absolute;inset:0;width:0%;background:linear-gradient(90deg,rgba(255,255,255,0.1),rgba(255,255,255,0.45));border-radius:12px;transition:width .05s linear;z-index:2\"></div>\n <div data-nibgate-shimmer style=\"position:absolute;inset:0;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,0.12),transparent);border-radius:12px;transform:translateX(-100%);z-index:3;pointer-events:none\"></div>\n <button type=\"button\" data-nibgate-unlock disabled class=\"nui-btn nui-btn-primary\" style=\"width:100%;padding:24px 32px;font-size:24px;position:relative;z-index:4;background:${theme.accent};transition:transform .1s,opacity .15s;display:flex\">${lockSVG}Hold to pay ${esc(resource.price)} USDC</button></div>\n <div class=\"nui-stat\" style=\"text-align:center;margin-top:16px\" data-nibgate-status></div>\n </div>\n <div data-nibgate-premium hidden style=\"margin-top:32px;border-top:1px solid ${theme.border};padding-top:32px\"></div>\n `;\n\n (typeof container === 'string' ? document.querySelector(container) : container)?.appendChild(card);\n // Load Lottie animation\n (function loadLottie() {\n if (!document.getElementById('nibgate-lottie')) return;\n\n function startAnim(data) {\n var d = document.getElementById('nibgate-lottie');\n if (d && window.lottie) {\n window.lottie.loadAnimation({ container: d, animationData: data, loop: true, autoplay: true });\n }\n }\n\n if (window.lottie) {\n if (window._lottieData) {\n startAnim(window._lottieData);\n } else {\n fetch('/nibgate-unlock-key.json?t=1').then(function(r) { if (!r.ok) throw new Error(); return r.json(); }).then(function(d) { window._lottieData = d; startAnim(d); }).catch(function() {});\n }\n return;\n }\n\n if (window._lottieLoading) return;\n window._lottieLoading = true;\n var s = document.createElement('script');\n s.src = 'https://cdnjs.cloudflare.com/ajax/libs/lottie-web/5.12.2/lottie.min.js';\n s.onload = function() {\n fetch('/nibgate-unlock-key.json?t=1').then(function(r) { if (!r.ok) throw new Error(); return r.json(); }).then(function(d) { window._lottieData = d; startAnim(d); }).catch(function() {});\n };\n document.head.appendChild(s);\n })();\n\n\n const st = card.querySelector('[data-nibgate-status]');\n const label = card.querySelector('[data-nibgate-wallet-label]');\n const wrap = card.querySelector('[data-nibgate-unlock-wrap]');\n const prog = card.querySelector('[data-nibgate-unlock-progress]');\n const shimmer = card.querySelector('[data-nibgate-shimmer]');\n const btn = card.querySelector('[data-nibgate-unlock]');\n\n const HOLD_MS = 1500;\n let holdTimer = null, holdActive = false, holdComplete = false;\n\n const ctrl = createEvmGatewayUnlock(resource, {\n ...options,\n connectButton: null,\n unlockButton: null,\n walletLabel: null,\n status: '[data-nibgate-status]',\n unlockedTarget: '[data-nibgate-premium]',\n onStatus: (msg) => status(st, msg),\n });\n\n function shortAddress(a) { return a ? a.slice(0, 6) + '...' + a.slice(-4) : ''; }\n\n function updateLabel() {\n const addr = ctrl.getWalletAddress();\n if (addr) {\n label.innerHTML = shortAddress(addr) + ' <span data-nibgate-disconnect style=\"cursor:pointer\">\u00B7 Disconnect</span>';\n btn.disabled = false;\n btn.style.cursor = 'pointer';\n } else {\n label.textContent = 'Connect wallet';\n btn.disabled = true;\n btn.style.cursor = 'default';\n btn.innerHTML = lockSVG + 'Hold to pay ' + esc(resource.price) + ' USDC';\n }\n }\n\n function setBtnText(t) { btn.innerHTML = lockSVG + t; }\n\n function resetHold() {\n holdActive = false;\n holdComplete = false;\n holdTimer = null;\n btn.style.transform = 'scale(1)';\n prog.style.width = '0%';\n shimmer.style.animation = 'none';\n shimmer.style.transform = 'translateX(-100%)';\n if (!btn.disabled) setBtnText('Hold to pay ' + esc(resource.price) + ' USDC');\n }\n\n function startHold(e) {\n if (btn.disabled || holdActive) return;\n e.preventDefault();\n holdActive = true;\n holdComplete = false;\n btn.style.transform = 'scale(.97)';\n prog.style.transition = 'none';\n prog.style.width = '0%';\n shimmer.style.animation = 'nshimmer 1s ease-in-out infinite';\n shimmer.style.transform = 'none';\n setBtnText('Hold\\u2026');\n requestAnimationFrame(() => {\n prog.style.transition = 'width ' + HOLD_MS + 'ms linear';\n prog.style.width = '100%';\n });\n const t1 = setTimeout(() => { if (holdActive && !holdComplete) setBtnText('Keep holding\\u2026'); }, HOLD_MS * 0.4);\n const t2 = setTimeout(() => { if (holdActive && !holdComplete) setBtnText('Almost there\\u2026'); }, HOLD_MS * 0.75);\n holdTimer = setTimeout(() => {\n holdComplete = true;\n holdActive = false;\n clearTimeout(t1); clearTimeout(t2);\n btn.style.transform = 'scale(1)';\n shimmer.style.animation = 'none';\n prog.style.transition = 'width .05s linear';\n setBtnText('Processing\\u2026');\n btn.disabled = true;\n setTimeout(() => ctrl.unlock().then(updateLabel).catch(updateLabel), 300);\n }, HOLD_MS);\n }\n\n function cancelHold() {\n if (!holdActive || holdComplete) return;\n clearTimeout(holdTimer);\n resetHold();\n }\n\n label.addEventListener('click', (e) => {\n if (e.target.dataset.nibgateDisconnect !== undefined) {\n ctrl.disconnect().then(updateLabel);\n } else if (!ctrl.getWalletAddress()) {\n ctrl.connect().then(updateLabel).catch(() => updateLabel());\n }\n });\n\n wrap.addEventListener('mousedown', startHold);\n wrap.addEventListener('touchstart', startHold, { passive: false });\n document.addEventListener('mouseup', cancelHold);\n document.addEventListener('touchend', cancelHold);\n wrap.addEventListener('mouseleave', cancelHold);\n\n setTimeout(updateLabel, 200);\n\n const cleanup = () => { document.removeEventListener('mouseup', cancelHold); document.removeEventListener('touchend', cancelHold); };\n card.addEventListener('remove', cleanup);\n\n return { ...ctrl, element: card, destroy: () => { cleanup(); card.remove(); } };\n}\n\nexport function renderDefaultRatingUI(container, resource, options = {}) {\n inject();\n\n let sel = 0, busy = false, ctrl = null, statusTimer = null;\n\n const wrap = el('div', { cls: 'nui', style: { animation: 'nfade .2s ease-out', textAlign: 'center', padding: '28px 0' } });\n\n const starRow = el('div', { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', gap: '4px' } });\n const stars = [];\n for (let i = 1; i <= 5; i++) {\n const b = el('button', {\n type: 'button', 'aria-label': `${i} star${i > 1 ? 's' : ''}`,\n 'data-star': i,\n style: {\n background: 'none', border: 'none', cursor: 'pointer',\n padding: '4px', fontSize: '31px', lineHeight: '1',\n color: theme.border, transition: 'color .12s, transform .12s',\n borderRadius: '4px',\n fontFamily: 'inherit',\n },\n }, '\u2606');\n stars.push(b);\n starRow.appendChild(b);\n }\n\n const avgEl = el('span', { style: { fontSize: '17px', color: theme.muted, marginLeft: '12px' } });\n avgEl.textContent = 'No ratings yet';\n starRow.appendChild(avgEl);\n\n const st = el('div', { style: { fontSize: '17px', color: theme.muted, marginTop: '8px', minHeight: '1.4em' } });\n st.textContent = 'Tap stars to rate';\n\n wrap.append(starRow, st);\n\n (typeof container === 'string' ? document.querySelector(container) : container)?.appendChild(wrap);\n\n function clearStatus() {\n if (statusTimer) { clearTimeout(statusTimer); statusTimer = null; }\n st.textContent = sel > 0 ? '' : 'Tap stars to rate';\n st.style.color = theme.muted;\n }\n\n function setStatus(msg, color, autoClear) {\n st.textContent = msg || '';\n st.style.color = color || '';\n if (autoClear) statusTimer = setTimeout(clearStatus, autoClear);\n }\n\n function fill(h) {\n stars.forEach((b, i) => {\n const active = i < h;\n b.style.color = active ? theme.accent : theme.border;\n b.textContent = active ? '\u2605' : '\u2606';\n b.style.transform = active ? 'scale(1.08)' : 'scale(1)';\n });\n }\n\n function setPrompt(v) {\n const labels = ['', 'Poor', 'Below average', 'Average', 'Good', 'Excellent'];\n setStatus(labels[v]);\n }\n\n async function rate(v) {\n if (busy || !ctrl) return;\n busy = true;\n stars.forEach(b => { b.disabled = true; b.style.cursor = 'default'; });\n sel = v;\n fill(v);\n setStatus('Submitting\\u2026');\n try {\n await ctrl.rate({ rating: v });\n fill(v);\n setStatus('You rated ' + v + ' \\u2605'.repeat(v), theme.accent, 3000);\n refresh();\n } catch (e) {\n setStatus(e?.message || 'Could not save rating. Try again.', '#dc2626');\n fill(sel);\n } finally {\n busy = false;\n stars.forEach(b => { b.disabled = false; b.style.cursor = 'pointer'; });\n }\n }\n\n function refresh() {\n const u = options.statsUrl || (resource.id ? `${options.apiBase || '/api'}/rating/${resource.id}` : null);\n if (!u) return;\n fetch(u).then(r => r.json()).then(d => {\n if (d.count > 0) {\n avgEl.textContent = `${d.average.toFixed(1)} \\u2014 ${d.count} rating${d.count !== 1 ? 's' : ''}`;\n } else {\n avgEl.textContent = 'No ratings yet';\n }\n }).catch(() => {});\n }\n\n stars.forEach(b => {\n const v = parseInt(b.dataset.star);\n b.addEventListener('mouseenter', () => {\n if (!busy) { fill(v); setPrompt(v); }\n });\n b.addEventListener('mouseleave', () => {\n if (!busy) { fill(sel); clearStatus(); }\n });\n b.addEventListener('click', () => rate(v));\n b.addEventListener('keydown', (e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); rate(v); } });\n });\n\n import('./rating-ui.js').then(m => {\n ctrl = m.createOnchainRating(resource, {\n autoMount: false,\n contentId: options.contentId || '0x' + (resource.id || '').replace(/-/g, ''),\n onRated: (r) => { setStatus('Rating saved', theme.accent, 3000); refresh(); if (typeof options.onRated === 'function') options.onRated(r); },\n onError: (e) => { setStatus(e?.message || 'Could not save rating. Try again.', '#dc2626'); if (typeof options.onError === 'function') options.onError(e); },\n });\n refresh();\n }).catch(() => { setStatus('Could not load rating', '#dc2626'); });\n\n return { element: wrap, destroy: () => wrap.remove(), refresh, setRating: (v) => { sel = v; fill(v); } };\n}\n\nexport function renderDefaultGatewayWalletUI(container, options = {}) {\n inject();\n let tab = 'deposit';\n\n const wrap = el('div', { cls: 'nui', style: { animation: 'nfade .2s ease-out', border: '1px solid ' + theme.border, borderRadius: '16px', padding: '28px' } });\n\n wrap.innerHTML = `\n <div style=\"display:flex;gap:12px;margin-bottom:20px\">\n <div data-gw-wallet-card style=\"flex:1;background:${theme.bg};border:1px solid ${theme.border};border-radius:12px;padding:16px\">\n <div style=\"display:flex;align-items:center;justify-content:space-between;margin-bottom:4px\">\n <div style=\"font-size:12px;font-weight:600;color:${theme.muted};letter-spacing:.02em\">Wallet</div>\n <button data-gw-connect style=\"font-size:12px;font-weight:600;cursor:pointer;border:1px solid ${theme.accent};background:transparent;color:${theme.accent};border-radius:8px;padding:4px 12px;font-family:inherit\">Connect</button>\n </div>\n <div data-gw-wallet-balance class=\"nui-mono\" style=\"font-size:24px;font-weight:700;color:${theme.fg}\">\u2014</div>\n </div>\n <div style=\"flex:1;background:${theme.bg};border:1px solid ${theme.border};border-radius:12px;padding:16px\">\n <div style=\"font-size:12px;font-weight:600;color:${theme.muted};margin-bottom:4px;letter-spacing:.02em\">Gateway</div>\n <div data-gw-balance class=\"nui-mono\" style=\"font-size:24px;font-weight:700;color:${theme.fg}\">\u2014</div>\n </div>\n </div>\n <div style=\"display:flex;gap:0;margin-bottom:20px;border-bottom:1px solid ${theme.border}\">\n <button data-tab=\"deposit\" style=\"flex:1;padding:10px 0;font-size:15px;font-weight:600;cursor:pointer;border:none;background:transparent;color:${theme.fg};border-bottom:2px solid ${theme.accent};font-family:inherit\">Deposit</button>\n <button data-tab=\"withdraw\" style=\"flex:1;padding:10px 0;font-size:15px;font-weight:600;cursor:pointer;border:none;background:transparent;color:${theme.muted};border-bottom:2px solid transparent;font-family:inherit\">Withdraw</button>\n </div>\n <div data-gw-form></div>\n `;\n\n (typeof container === 'string' ? document.querySelector(container) : container)?.appendChild(wrap);\n\n const formEl = wrap.querySelector('[data-gw-form]');\n const tabs = wrap.querySelectorAll('[data-tab]');\n\n function select(btns, t) {\n btns.forEach(b => {\n const on = b.dataset.tab === t;\n b.style.color = on ? theme.fg : theme.muted;\n b.style.borderBottomColor = on ? theme.accent : 'transparent';\n });\n }\n\n function render(t) {\n tab = t;\n select(tabs, t);\n if (t === 'deposit') {\n formEl.innerHTML = `\n <label class=\"nui-label\">Amount (USDC)</label>\n <input type=\"number\" step=\"0.01\" min=\"0\" placeholder=\"0.00\" data-gw-deposit-amount class=\"nui-input\" style=\"margin-bottom:16px\">\n <button type=\"button\" data-gw-deposit class=\"nui-btn nui-btn-primary\" style=\"width:100%;padding:16px 28px;font-size:20px\">Deposit</button>\n <div data-gw-tx class=\"nui-mono\" style=\"font-size:12px;color:${theme.muted};word-break:break-all;margin-top:12px;display:none\"></div>\n `;\n } else {\n formEl.innerHTML = `\n <label class=\"nui-label\">Amount (USDC)</label>\n <input type=\"number\" step=\"0.01\" min=\"0\" placeholder=\"0.00\" data-gw-withdraw-amount class=\"nui-input\" style=\"margin-bottom:16px\">\n <button type=\"button\" data-gw-withdraw class=\"nui-btn nui-btn-primary\" style=\"width:100%;padding:16px 28px;font-size:20px\">Withdraw to your wallet</button>\n <div data-gw-tx class=\"nui-mono\" style=\"font-size:12px;color:${theme.muted};word-break:break-all;margin-top:12px;display:none\"></div>\n `;\n }\n }\n\n render('deposit');\n tabs.forEach(b => b.addEventListener('click', () => render(b.dataset.tab)));\n\n return { element: wrap, destroy: () => wrap.remove(), switchTab: render };\n}\n", "import { PAYMENT_RAILS, normalizePaymentRail } from './payment.js';\nimport { ACCESS_MODES, CONTENT_TYPES, UNLOCK_MODES, normalizeAccessPolicy, normalizeContentType, normalizeUnlockPolicy } from './resource.js';\n\nexport const NIBGATE_CONTENT_SETTING_FIELDS = [\n { name: 'publishToNibgate', label: 'Publish to Nibgate discovery', type: 'boolean', defaultValue: true },\n { name: 'type', label: 'Content type', type: 'select', options: CONTENT_TYPES, defaultValue: 'article' },\n { name: 'humanAccess', label: 'Human access', type: 'select', options: ACCESS_MODES, defaultValue: 'paid' },\n { name: 'agentAccess', label: 'Agent access', type: 'select', options: ACCESS_MODES, defaultValue: 'paid' },\n { name: 'unlockMode', label: 'Unlock mode', type: 'select', options: UNLOCK_MODES, defaultValue: 'one_time' },\n { name: 'paymentRail', label: 'Payment rail', type: 'select', options: PAYMENT_RAILS, defaultValue: 'gateway' },\n { name: 'price', label: 'Price', type: 'text', defaultValue: '0.005' },\n { name: 'currency', label: 'Currency', type: 'text', defaultValue: 'USDC' },\n { name: 'recipient', label: 'Recipient wallet', type: 'wallet', defaultValue: '' },\n { name: 'ratingsEnabled', label: 'Enable ratings', type: 'boolean', defaultValue: true },\n { name: 'license', label: 'License / terms', type: 'textarea', defaultValue: '' }\n];\n\nexport function createNibgateContentSettings(input = {}) {\n const access = normalizeAccessPolicy(input.access || {\n humans: input.humanAccess,\n agents: input.agentAccess\n });\n const unlock = normalizeUnlockPolicy(input.unlock || input.unlockMode || 'one_time');\n\n return {\n publishToNibgate: input.publishToNibgate ?? input.publishedToNibgate ?? true,\n type: normalizeContentType(input.type || input.contentType || 'article'),\n humanAccess: access.humans,\n agentAccess: access.agents,\n unlockMode: unlock.mode,\n paymentRail: normalizePaymentRail(input.paymentRail || input.paymentMode || input.rail),\n price: String(input.price ?? input.amount ?? '0.005'),\n currency: input.currency || 'USDC',\n recipient: input.recipient || input.payTo || input.receiverAddress || input.creatorWallet || '',\n ratingsEnabled: input.ratingsEnabled ?? input.enableRatings ?? input.reputation?.ratingsEnabled ?? true,\n license: input.license || input.terms || ''\n };\n}\n\nexport function settingsToAccessPolicy(settings = {}) {\n return normalizeAccessPolicy({\n humans: settings.humanAccess,\n agents: settings.agentAccess\n });\n}\n\nexport function settingsToUnlockPolicy(settings = {}) {\n return normalizeUnlockPolicy(settings.unlockMode || settings.unlock || 'one_time');\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["normalizePaymentRail", "value", "fallback", "rail", "PAYMENT_RAILS", "init_payment", "__esmMin", "normalizeContentType", "value", "type", "CONTENT_TYPES", "TYPE_ALIASES", "normalizeAccessMode", "fallback", "mode", "ACCESS_MODES", "normalizeAccessPolicy", "normalizeUnlockPolicy", "input", "UNLOCK_MODES", "browserEnv", "metaContent", "name", "win", "selector", "node", "autoDeriveUrl", "path", "autoDeriveImage", "autoDeriveDescription", "autoDeriveTitle", "autoDeriveType", "ogType", "autoDeriveTags", "kw", "t", "accessForPrice", "price", "explicitAccess", "normalizeResource", "resource", "publisher", "publisherId", "publisherWallet", "publisherHandle", "publisherName", "publisherProfileUrl", "publisherOrigin", "publisherVerification", "authorHandle", "v1Input", "url", "normalizePaymentRail", "hasValue", "isPaidResource", "access", "validateResourceMetadata", "options", "normalized", "warnings", "errors", "required", "recommended", "field", "score", "init_resource", "__esmMin", "init_payment", "browserWindow", "init_env", "__esmMin", "queueEvent", "eventName", "payload", "win", "browserWindow", "flushQueue", "queue", "entry", "startQueueFlush", "attempts", "timer", "emit", "payloadWithResource", "resource", "extra", "normalizeResource", "init_events", "__esmMin", "init_env", "init_resource", "unlockStorageKey", "resource", "proofStorageKey", "markUnlocked", "payment", "win", "browserWindow", "storePaymentProof", "proof", "value", "getPaymentProof", "clearPaymentProof", "normalized", "normalizeResource", "hasUnlock", "init_storage", "__esmMin", "init_env", "init_resource", "setDefaultClient", "client", "defaultClient", "createGate", "resource", "options", "normalized", "normalizeResource", "extra", "eventName", "payload", "payloadWithResource", "payment", "markUnlocked", "hasUnlock", "handlerOrPayment", "rating", "init_gate", "__esmMin", "init_resource", "init_events", "init_storage", "jsonReplacer", "_key", "value", "stringifyJson", "init_json", "__esmMin", "normalizeRating", "input", "value", "numeric", "ratingValue", "ratingMessage", "resource", "rating", "options", "normalized", "normalizeResource", "init_rating", "__esmMin", "init_resource", "batch_scheme_exports", "__export", "BatchEvmScheme", "CIRCLE_BATCHING_NAME", "CIRCLE_BATCHING_VERSION", "GATEWAY_AUTH_VALIDITY_WINDOW_SECONDS", "GATEWAY_MIN_AUTH_VALIDITY_SECONDS", "supportsBatching", "requirements", "extra", "getVerifyingContract", "createNonce", "bytes", "b", "getAddress", "value", "authorizationTypes", "init_batch_scheme", "__esmMin", "signer", "hook", "x402Version", "paymentRequirements", "context", "result", "verifyingContract", "nonce", "now", "validityWindowSeconds", "authorization", "signature", "createdContext", "error", "failureContext", "chainId", "domain", "message", "typedData", "gateway_exports", "__export", "createCircleGatewayBrowserAdapter", "encodeBase64", "value", "text", "stringifyJson", "decodeBase64", "options", "signer", "BatchEvmScheme", "err", "scheme", "network", "parsePaymentRequired", "input", "selectGatewayRequirement", "paymentRequired", "accepts", "selected", "option", "extra", "networks", "hasGatewayExtra", "paymentRequiredHeader", "challenge", "accepted", "x402Version", "paymentPayload", "paymentSignature", "init_gateway", "__esmMin", "init_json", "stripHex", "value", "wordRight", "hex", "clean", "numberWord", "utf8Hex", "byte", "encodeString", "byteLength", "paddedLength", "encodeRateContent", "contentId", "ratingValue", "reviewHash", "unlockRef", "RATE_CONTENT_SELECTOR", "ZERO_HASH", "contentRatingHash", "_resource", "options", "reviewTextHash", "review", "prepareOnchainRating", "resource", "prepareUrl", "response", "payload", "rateContentOnchain", "normalized", "normalizeResource", "rating", "normalizeRating", "provider", "contractAddress", "NIBGATE_REPUTATION_CONTRACT", "accounts", "walletAddress", "prepared", "data", "txHash", "payloadWithResource", "emit", "NIBGATE_CONTENT_HASH_NAMESPACE", "NIBGATE_REPUTATION_CHAIN_ID", "NIBGATE_REPUTATION_CHAIN_NAME", "NIBGATE_REPUTATION_RPC_URL", "NIBGATE_REPUTATION_ABI", "init_reputation", "__esmMin", "init_rating", "init_resource", "init_events", "rating_ui_exports", "__export", "createOnchainRating", "mountRatingUI", "rateResource", "resource", "rating", "extra", "normalized", "normalizeResource", "normalizedRating", "normalizeRating", "payload", "ratingMessage", "emit", "options", "item", "createGate", "win", "browserWindow", "statusTarget", "ratingTarget", "buttonSelector", "buttons", "source", "busy", "payment", "setStatus", "message", "setBusy", "value", "button", "setPayment", "nextPayment", "setVisible", "isVisible", "valueFromButton", "raw", "numeric", "rate", "input", "paymentId", "unlockRef", "result", "rateContentOnchain", "error", "mount", "controller", "target", "stars", "selectedRating", "container", "starButtons", "btn", "b", "i", "statusEl", "r", "setRating", "init_rating_ui", "__esmMin", "init_resource", "init_rating", "init_events", "init_env", "init_reputation", "init_gate", "index_exports", "__export", "ACCESS_MODES", "CONTENT_TYPES", "NIBGATE_CONTENT_HASH_NAMESPACE", "NIBGATE_CONTENT_SETTING_FIELDS", "NIBGATE_REPUTATION_ABI", "NIBGATE_REPUTATION_CHAIN_ID", "NIBGATE_REPUTATION_CHAIN_NAME", "NIBGATE_REPUTATION_CONTRACT", "NIBGATE_REPUTATION_RPC_URL", "PAYMENT_RAILS", "UNLOCK_MODES", "checkResourceAccess", "contentRatingHash", "createCircleGatewayBrowserAdapter", "createEvmGatewayUnlock", "createGate", "createHostedUnlock", "createNibgate", "createNibgateContentSettings", "createOnchainRating", "createTransferCheckout", "createWalletCheckout", "mountRatingUI", "nibgate", "normalizeAccessPolicy", "normalizeContentType", "normalizePaymentRail", "normalizeResource", "normalizeUnlockPolicy", "payAndUnlockResource", "payWithPaymentSignature", "payWithTransfer", "rateContentOnchain", "rateResource", "renderDefaultGatewayWalletUI", "renderDefaultRatingUI", "renderDefaultUnlockUI", "reviewTextHash", "settingsToAccessPolicy", "settingsToUnlockPolicy", "setupResourcePage", "trackResourcePage", "validateResourceMetadata", "init_gate", "init_events", "init_storage", "init_json", "init_gate", "init_resource", "init_env", "init_gate", "trackResourcePage", "resource", "options", "item", "createGate", "validation", "validateResourceMetadata", "browserWindow", "setupResourcePage", "win", "button", "statusElement", "setStatus", "message", "checkResourceAccess", "checkResourceAccess", "resource", "options", "item", "createGate", "accessPath", "status", "response", "getPaymentProof", "payload", "payWithPaymentSignature", "paymentResult", "payAndUnlockResource", "payment", "paymentSignature", "paymentMemo", "paymentMetadata", "paymentRequiredHeader", "challenge", "result", "error", "responseText", "detail", "stringifyJson", "storePaymentProof", "payPath", "init_resource", "init_env", "setElementText", "target", "message", "win", "browserWindow", "element", "setElementDisabled", "disabled", "createWalletCheckout", "resource", "options", "normalized", "normalizeResource", "accessPath", "button", "statusTarget", "status", "checkout", "unlock", "extra", "checkResourceAccess", "mount", "error", "init_resource", "init_rating", "init_events", "init_gate", "init_env", "init_storage", "init_json", "init_gate", "createCircleGatewayBrowserAdapter", "options", "HOSTED_PAY_URL", "resolveAccessPath", "resource", "createEvmGatewayUnlock", "item", "createGate", "win", "browserWindow", "accessPath", "source", "network", "statusTarget", "connectButton", "disconnectButton", "unlockButton", "clearButton", "walletLabel", "unlockedTarget", "walletAddress", "busy", "setStatus", "message", "shortAddress", "address", "provider", "setBusy", "value", "button", "renderWallet", "hasProvider", "setUnlocked", "isUnlocked", "payment", "connect", "evm", "accounts", "disconnect", "checkout", "input", "typedData", "stringifyJson", "unlock", "result", "checkResourceAccess", "error", "clear", "clearPaymentProof", "hydrate", "mount", "trackResourcePage", "controller", "createHostedUnlock", "init_rating_ui", "init_resource", "createTransferCheckout", "resource", "options", "normalized", "normalizeResource", "sendTransfer", "input", "recipient", "amount", "currency", "network", "result", "txHash", "payWithTransfer", "checkResourceAccess", "createNibgate", "defaults", "defaultResource", "normalizeResource", "resourceWithDefaults", "resource", "extra", "emit", "payloadWithResource", "eventName", "payload", "payment", "rating", "rateResource", "messageOptions", "ratingMessage", "options", "createGate", "trackResourcePage", "checkResourceAccess", "payWithPaymentSignature", "createWalletCheckout", "createCircleGatewayBrowserAdapter", "createTransferCheckout", "payWithTransfer", "createEvmGatewayUnlock", "createOnchainRating", "mountRatingUI", "payAndUnlockResource", "setupResourcePage", "normalizeContentType", "flushQueue", "nibgate", "setDefaultClient", "init_rating_ui", "init_reputation", "SID", "theme", "css", "s", "k", "v", "m", "h", "tag", "attrs", "children", "e", "c", "inject", "el", "a", "status", "msg", "esc", "d", "renderDefaultUnlockUI", "container", "resource", "options", "card", "lockSVG", "startAnim", "data", "r", "st", "label", "wrap", "prog", "shimmer", "btn", "HOLD_MS", "holdTimer", "holdActive", "holdComplete", "ctrl", "createEvmGatewayUnlock", "shortAddress", "updateLabel", "addr", "setBtnText", "t", "resetHold", "startHold", "t1", "t2", "cancelHold", "cleanup", "renderDefaultRatingUI", "sel", "busy", "statusTimer", "starRow", "stars", "i", "b", "avgEl", "clearStatus", "setStatus", "color", "autoClear", "fill", "active", "setPrompt", "rate", "refresh", "u", "renderDefaultGatewayWalletUI", "tab", "formEl", "tabs", "select", "btns", "on", "render", "init_resource", "init_payment", "init_resource", "NIBGATE_CONTENT_SETTING_FIELDS", "CONTENT_TYPES", "ACCESS_MODES", "UNLOCK_MODES", "PAYMENT_RAILS", "createNibgateContentSettings", "input", "access", "normalizeAccessPolicy", "unlock", "normalizeUnlockPolicy", "normalizeContentType", "normalizePaymentRail", "settingsToAccessPolicy", "settings", "settingsToUnlockPolicy", "init_payment"]
|
|
7
7
|
}
|