@lukso/up-connector 0.8.4 → 0.8.5
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/auto-setup.cjs +2 -2
- package/dist/auto-setup.d.cts +1 -1
- package/dist/auto-setup.d.ts +1 -1
- package/dist/auto-setup.js +1 -1
- package/dist/{chunk-DXCWF7PX.cjs → chunk-R7V3Q7Z6.cjs} +2 -2
- package/dist/chunk-R7V3Q7Z6.cjs.map +1 -0
- package/dist/{chunk-47T7DEEN.js → chunk-XR4C6P3Z.js} +2 -2
- package/dist/chunk-XR4C6P3Z.js.map +1 -0
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/package.json +3 -3
- package/src/auto-setup.ts +2 -1
- package/dist/chunk-47T7DEEN.js.map +0 -1
- package/dist/chunk-DXCWF7PX.cjs.map +0 -1
package/dist/auto-setup.cjs
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkR7V3Q7Z6cjs = require('./chunk-R7V3Q7Z6.cjs');
|
|
8
8
|
require('./chunk-455JZ6IZ.cjs');
|
|
9
9
|
require('./chunk-ZBDE64SD.cjs');
|
|
10
10
|
|
|
@@ -13,5 +13,5 @@ require('./chunk-ZBDE64SD.cjs');
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
exports.EMBEDDED_WALLET_ID =
|
|
16
|
+
exports.EMBEDDED_WALLET_ID = _chunkR7V3Q7Z6cjs.EMBEDDED_WALLET_ID; exports.EMBEDDED_WALLET_URL_DEV = _chunkR7V3Q7Z6cjs.EMBEDDED_WALLET_URL_DEV; exports.EMBEDDED_WALLET_URL_PROD = _chunkR7V3Q7Z6cjs.EMBEDDED_WALLET_URL_PROD; exports.UP_EXTENSION_ID = _chunkR7V3Q7Z6cjs.UP_EXTENSION_ID; exports.setupLuksoConnector = _chunkR7V3Q7Z6cjs.setupLuksoConnector;
|
|
17
17
|
//# sourceMappingURL=auto-setup.cjs.map
|
package/dist/auto-setup.d.cts
CHANGED
|
@@ -14,7 +14,7 @@ import { Config } from '@wagmi/core';
|
|
|
14
14
|
*/
|
|
15
15
|
declare const EMBEDDED_WALLET_ID = "dev.lukso.auth";
|
|
16
16
|
declare const EMBEDDED_WALLET_URL_DEV = "http://localhost:9100";
|
|
17
|
-
declare const EMBEDDED_WALLET_URL_PROD = "https://
|
|
17
|
+
declare const EMBEDDED_WALLET_URL_PROD = "https://feed.api.universalprofile.cloud";
|
|
18
18
|
/**
|
|
19
19
|
* UP Extension ID
|
|
20
20
|
*/
|
package/dist/auto-setup.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ import { Config } from '@wagmi/core';
|
|
|
14
14
|
*/
|
|
15
15
|
declare const EMBEDDED_WALLET_ID = "dev.lukso.auth";
|
|
16
16
|
declare const EMBEDDED_WALLET_URL_DEV = "http://localhost:9100";
|
|
17
|
-
declare const EMBEDDED_WALLET_URL_PROD = "https://
|
|
17
|
+
declare const EMBEDDED_WALLET_URL_PROD = "https://feed.api.universalprofile.cloud";
|
|
18
18
|
/**
|
|
19
19
|
* UP Extension ID
|
|
20
20
|
*/
|
package/dist/auto-setup.js
CHANGED
|
@@ -5,7 +5,7 @@ var _chunk455JZ6IZcjs = require('./chunk-455JZ6IZ.cjs');
|
|
|
5
5
|
// src/auto-setup.ts
|
|
6
6
|
var EMBEDDED_WALLET_ID = "dev.lukso.auth";
|
|
7
7
|
var EMBEDDED_WALLET_URL_DEV = "http://localhost:9100";
|
|
8
|
-
var EMBEDDED_WALLET_URL_PROD = "https://
|
|
8
|
+
var EMBEDDED_WALLET_URL_PROD = "https://feed.api.universalprofile.cloud";
|
|
9
9
|
var UP_EXTENSION_ID = "cloud.universalprofile";
|
|
10
10
|
function getDefaultWalletUrl() {
|
|
11
11
|
if (typeof process !== "undefined" && _optionalChain([process, 'access', _ => _.env, 'optionalAccess', _2 => _2.WALLET_URL])) {
|
|
@@ -178,4 +178,4 @@ function getDefaultStorage() {
|
|
|
178
178
|
|
|
179
179
|
|
|
180
180
|
exports.EMBEDDED_WALLET_ID = EMBEDDED_WALLET_ID; exports.EMBEDDED_WALLET_URL_DEV = EMBEDDED_WALLET_URL_DEV; exports.EMBEDDED_WALLET_URL_PROD = EMBEDDED_WALLET_URL_PROD; exports.UP_EXTENSION_ID = UP_EXTENSION_ID; exports.setupLuksoConnector = setupLuksoConnector;
|
|
181
|
-
//# sourceMappingURL=chunk-
|
|
181
|
+
//# sourceMappingURL=chunk-R7V3Q7Z6.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/service-auth-simple/service-auth-simple/packages/up-connector/dist/chunk-R7V3Q7Z6.cjs","../src/auto-setup.ts"],"names":[],"mappings":"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","file":"/home/runner/work/service-auth-simple/service-auth-simple/packages/up-connector/dist/chunk-R7V3Q7Z6.cjs","sourcesContent":[null,"/**\n * Auto-setup utilities for LUKSO products\n *\n * Provides zero-config setup for:\n * - Embedded Wallet (passkey-based)\n * - UP Extension (browser extension)\n * - UP Mobile (WalletConnect)\n */\n\nimport type { Config } from '@wagmi/core'\nimport { setupConnectModal } from './connect-modal/index.js'\n\n/**\n * Embedded wallet constants\n */\nexport const EMBEDDED_WALLET_ID = 'dev.lukso.auth'\nexport const EMBEDDED_WALLET_URL_DEV = 'http://localhost:9100'\nexport const EMBEDDED_WALLET_URL_PROD =\n 'https://feed.api.universalprofile.cloud'\n\n/**\n * UP Extension ID\n */\nexport const UP_EXTENSION_ID = 'cloud.universalprofile'\n\n/**\n * Get default wallet URL based on environment\n */\nfunction getDefaultWalletUrl(): string {\n // Check for environment variable (CI builds)\n if (typeof process !== 'undefined' && process.env?.WALLET_URL) {\n return process.env.WALLET_URL\n }\n\n // Check if we're in production (browser)\n if (typeof window !== 'undefined') {\n const isLocalhost =\n window.location.hostname === 'localhost' ||\n window.location.hostname === '127.0.0.1'\n return isLocalhost ? EMBEDDED_WALLET_URL_DEV : EMBEDDED_WALLET_URL_PROD\n }\n\n // Default to dev\n return EMBEDDED_WALLET_URL_DEV\n}\n\nexport interface LuksoConnectorConfig {\n /**\n * Embedded wallet configuration\n */\n embeddedWallet?: {\n /**\n * Enable embedded wallet option (default: true)\n */\n enabled?: boolean\n\n /**\n * URL to the wallet service\n * @default 'http://localhost:9100'\n */\n url?: string\n\n /**\n * Storage key for UP Provider state\n * @default 'up-provider'\n */\n storageKey?: string\n\n /**\n * Display name for the wallet\n * @default 'Create Passkey Wallet'\n */\n name?: string\n }\n\n /**\n * WalletConnect configuration for mobile app\n */\n walletConnect?: {\n /**\n * Enable WalletConnect (default: true)\n */\n enabled?: boolean\n\n /**\n * WalletConnect Project ID\n * @default LUKSO's default project ID\n */\n projectId?: string\n\n /**\n * Show QR code modal on mobile devices (default: false)\n */\n showQrModal?: boolean\n }\n\n /**\n * Chain configuration\n */\n chains?: {\n /**\n * Default chain ID\n * @default 42 (LUKSO mainnet)\n */\n defaultChainId?: number\n\n /**\n * Enable testnet (default: true)\n */\n enableTestnet?: boolean\n }\n\n /**\n * Storage configuration\n */\n storage?: {\n /**\n * Storage key prefix for wagmi state\n * @default 'up-wagmi'\n */\n key?: string\n }\n\n /**\n * Pass an existing wagmi config instead of auto-creating one\n */\n wagmiConfig?: any\n}\n\nconst DEFAULT_CONFIG: Required<LuksoConnectorConfig> = {\n embeddedWallet: {\n enabled: true,\n url: getDefaultWalletUrl(),\n storageKey: 'up-provider',\n name: 'UE Embedded Wallet',\n },\n walletConnect: {\n enabled: true,\n projectId: '7d1af65dc2722192d9914b5d6eaeb421', // LUKSO's default\n showQrModal: false,\n },\n chains: {\n defaultChainId: 42, // LUKSO mainnet\n enableTestnet: true,\n },\n storage: {\n key: 'up-wagmi',\n },\n wagmiConfig: undefined,\n}\n\n/**\n * Auto-setup LUKSO connector with sensible defaults\n *\n * This function creates a wagmi config and sets up the connect modal\n * with support for:\n * - Embedded Wallet (passkey-based)\n * - UP Extension (auto-detected via EIP-6963)\n * - UP Mobile (WalletConnect)\n *\n * @example\n * ```typescript\n * // Zero config - uses all defaults\n * setupLuksoConnector()\n *\n * // Custom configuration\n * setupLuksoConnector({\n * embeddedWallet: {\n * url: 'https://wallet.example.com'\n * },\n * chains: {\n * defaultChainId: 4201 // LUKSO Testnet\n * }\n * })\n * ```\n */\nexport async function setupLuksoConnector(\n config: LuksoConnectorConfig = {}\n): Promise<{ wagmiConfig: Config }> {\n const cfg = {\n embeddedWallet: {\n ...DEFAULT_CONFIG.embeddedWallet,\n ...config.embeddedWallet,\n } as Required<typeof DEFAULT_CONFIG.embeddedWallet>,\n walletConnect: {\n ...DEFAULT_CONFIG.walletConnect,\n ...config.walletConnect,\n } as Required<typeof DEFAULT_CONFIG.walletConnect>,\n chains: {\n ...DEFAULT_CONFIG.chains,\n ...config.chains,\n } as Required<typeof DEFAULT_CONFIG.chains>,\n storage: {\n ...DEFAULT_CONFIG.storage,\n ...config.storage,\n } as Required<typeof DEFAULT_CONFIG.storage>,\n wagmiConfig: config.wagmiConfig,\n }\n\n // IMPORTANT: Create UP Provider BEFORE wagmi config\n // The UP Provider registers via EIP-6963, and wagmi's injected() will detect it\n // This matches the order in demo-app: UP Provider first, then wagmi config\n\n // Step 1: Create UP Provider (if enabled)\n if (cfg.embeddedWallet?.enabled) {\n await createUPProvider(cfg.embeddedWallet)\n }\n\n // Step 2: Create or use provided wagmi config\n const wagmiConfig = cfg.wagmiConfig || (await createWagmiConfig(cfg))\n\n // Note: Wagmi will auto-reconnect in the background\n // The connector's watchWagmiAccount will detect the connection when it completes\n\n // Step 3: Setup connect modal\n // The UP Provider is already registered via EIP-6963 and will appear in wagmi connectors\n // Use the embedded wallet ID to identify it in the connector list\n setupConnectModal({\n wagmiConfig,\n chainId: cfg.chains.defaultChainId,\n embeddedWalletId: cfg.embeddedWallet.enabled\n ? EMBEDDED_WALLET_ID\n : undefined,\n })\n\n return { wagmiConfig }\n}\n\n/**\n * Create wagmi config with LUKSO chains and connectors\n */\nasync function createWagmiConfig(cfg: any): Promise<any> {\n try {\n // Dynamic imports to keep dependencies optional\n const [\n { createConfig, createStorage, injected },\n { walletConnect },\n { createClient, http },\n { lukso, luksoTestnet },\n ] = await Promise.all([\n import('@wagmi/core'),\n import('@wagmi/connectors'),\n import('viem'),\n import('viem/chains'),\n ])\n\n // Create storage adapter\n const storage = createStorage({\n key: cfg.storage.key,\n storage: getDefaultStorage(),\n })\n\n // Build chains array\n const chains = cfg.chains.enableTestnet\n ? ([luksoTestnet, lukso] as const)\n : ([lukso] as const)\n\n // Build connectors array\n const connectors = []\n\n // Add WalletConnect if enabled\n if (cfg.walletConnect.enabled) {\n connectors.push(\n walletConnect({\n projectId: cfg.walletConnect.projectId,\n showQrModal: cfg.walletConnect.showQrModal,\n })\n )\n }\n\n // Add injected (for UP Extension and other EIP-6963 wallets)\n connectors.push(injected())\n\n // Create wagmi config\n return createConfig({\n storage,\n multiInjectedProviderDiscovery: true, // Enable EIP-6963\n connectors,\n chains,\n client({ chain }: any) {\n return createClient({ chain, transport: http() })\n },\n })\n } catch (error) {\n console.error('Failed to create wagmi config:', error)\n throw new Error(\n 'Failed to create wagmi config. Make sure @wagmi/core, @wagmi/connectors, and viem are installed.'\n )\n }\n}\n\n/**\n * Create UP Provider (registers via EIP-6963)\n */\nasync function createUPProvider(config: {\n url: string\n storageKey: string\n name: string\n}): Promise<void> {\n // Validate URL - throw error if explicitly set to empty string\n if (config.url != null && config.url.trim() === '') {\n throw new Error(\n 'UP Provider URL is defined but empty. Please set WALLET_URL environment variable to a valid URL or leave it undefined.'\n )\n }\n\n try {\n const { createClientUPProvider } = await import('@lukso/up-provider')\n\n // Create UP Provider - it automatically registers via EIP-6963\n createClientUPProvider({\n url: config.url,\n mode: 'iframe',\n get: async () => {\n const stored = localStorage.getItem(config.storageKey)\n return stored ? JSON.parse(stored) : {}\n },\n set: async (value: Record<string, unknown>) => {\n localStorage.setItem(config.storageKey, JSON.stringify(value))\n },\n name: config.name,\n })\n\n // Wait for EIP-6963 registration\n await new Promise((resolve) => setTimeout(resolve, 100))\n } catch (error) {\n console.warn('⚠️ Failed to create UP Provider:', error)\n throw error\n }\n}\n\n/**\n * Default storage adapter (localStorage with error handling)\n */\nfunction getDefaultStorage() {\n const storage = (() => {\n if (typeof window !== 'undefined' && window.localStorage) {\n return window.localStorage\n }\n return {\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n }\n })()\n\n return {\n getItem(key: string) {\n return storage.getItem(key)\n },\n removeItem(key: string) {\n storage.removeItem(key)\n },\n setItem(key: string, value: string) {\n try {\n storage.setItem(key, value)\n } catch {\n // Silence QuotaExceededError, SecurityError, etc.\n }\n },\n }\n}\n"]}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
// src/auto-setup.ts
|
|
6
6
|
var EMBEDDED_WALLET_ID = "dev.lukso.auth";
|
|
7
7
|
var EMBEDDED_WALLET_URL_DEV = "http://localhost:9100";
|
|
8
|
-
var EMBEDDED_WALLET_URL_PROD = "https://
|
|
8
|
+
var EMBEDDED_WALLET_URL_PROD = "https://feed.api.universalprofile.cloud";
|
|
9
9
|
var UP_EXTENSION_ID = "cloud.universalprofile";
|
|
10
10
|
function getDefaultWalletUrl() {
|
|
11
11
|
if (typeof process !== "undefined" && process.env?.WALLET_URL) {
|
|
@@ -178,4 +178,4 @@ export {
|
|
|
178
178
|
UP_EXTENSION_ID,
|
|
179
179
|
setupLuksoConnector
|
|
180
180
|
};
|
|
181
|
-
//# sourceMappingURL=chunk-
|
|
181
|
+
//# sourceMappingURL=chunk-XR4C6P3Z.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/auto-setup.ts"],"sourcesContent":["/**\n * Auto-setup utilities for LUKSO products\n *\n * Provides zero-config setup for:\n * - Embedded Wallet (passkey-based)\n * - UP Extension (browser extension)\n * - UP Mobile (WalletConnect)\n */\n\nimport type { Config } from '@wagmi/core'\nimport { setupConnectModal } from './connect-modal/index.js'\n\n/**\n * Embedded wallet constants\n */\nexport const EMBEDDED_WALLET_ID = 'dev.lukso.auth'\nexport const EMBEDDED_WALLET_URL_DEV = 'http://localhost:9100'\nexport const EMBEDDED_WALLET_URL_PROD =\n 'https://feed.api.universalprofile.cloud'\n\n/**\n * UP Extension ID\n */\nexport const UP_EXTENSION_ID = 'cloud.universalprofile'\n\n/**\n * Get default wallet URL based on environment\n */\nfunction getDefaultWalletUrl(): string {\n // Check for environment variable (CI builds)\n if (typeof process !== 'undefined' && process.env?.WALLET_URL) {\n return process.env.WALLET_URL\n }\n\n // Check if we're in production (browser)\n if (typeof window !== 'undefined') {\n const isLocalhost =\n window.location.hostname === 'localhost' ||\n window.location.hostname === '127.0.0.1'\n return isLocalhost ? EMBEDDED_WALLET_URL_DEV : EMBEDDED_WALLET_URL_PROD\n }\n\n // Default to dev\n return EMBEDDED_WALLET_URL_DEV\n}\n\nexport interface LuksoConnectorConfig {\n /**\n * Embedded wallet configuration\n */\n embeddedWallet?: {\n /**\n * Enable embedded wallet option (default: true)\n */\n enabled?: boolean\n\n /**\n * URL to the wallet service\n * @default 'http://localhost:9100'\n */\n url?: string\n\n /**\n * Storage key for UP Provider state\n * @default 'up-provider'\n */\n storageKey?: string\n\n /**\n * Display name for the wallet\n * @default 'Create Passkey Wallet'\n */\n name?: string\n }\n\n /**\n * WalletConnect configuration for mobile app\n */\n walletConnect?: {\n /**\n * Enable WalletConnect (default: true)\n */\n enabled?: boolean\n\n /**\n * WalletConnect Project ID\n * @default LUKSO's default project ID\n */\n projectId?: string\n\n /**\n * Show QR code modal on mobile devices (default: false)\n */\n showQrModal?: boolean\n }\n\n /**\n * Chain configuration\n */\n chains?: {\n /**\n * Default chain ID\n * @default 42 (LUKSO mainnet)\n */\n defaultChainId?: number\n\n /**\n * Enable testnet (default: true)\n */\n enableTestnet?: boolean\n }\n\n /**\n * Storage configuration\n */\n storage?: {\n /**\n * Storage key prefix for wagmi state\n * @default 'up-wagmi'\n */\n key?: string\n }\n\n /**\n * Pass an existing wagmi config instead of auto-creating one\n */\n wagmiConfig?: any\n}\n\nconst DEFAULT_CONFIG: Required<LuksoConnectorConfig> = {\n embeddedWallet: {\n enabled: true,\n url: getDefaultWalletUrl(),\n storageKey: 'up-provider',\n name: 'UE Embedded Wallet',\n },\n walletConnect: {\n enabled: true,\n projectId: '7d1af65dc2722192d9914b5d6eaeb421', // LUKSO's default\n showQrModal: false,\n },\n chains: {\n defaultChainId: 42, // LUKSO mainnet\n enableTestnet: true,\n },\n storage: {\n key: 'up-wagmi',\n },\n wagmiConfig: undefined,\n}\n\n/**\n * Auto-setup LUKSO connector with sensible defaults\n *\n * This function creates a wagmi config and sets up the connect modal\n * with support for:\n * - Embedded Wallet (passkey-based)\n * - UP Extension (auto-detected via EIP-6963)\n * - UP Mobile (WalletConnect)\n *\n * @example\n * ```typescript\n * // Zero config - uses all defaults\n * setupLuksoConnector()\n *\n * // Custom configuration\n * setupLuksoConnector({\n * embeddedWallet: {\n * url: 'https://wallet.example.com'\n * },\n * chains: {\n * defaultChainId: 4201 // LUKSO Testnet\n * }\n * })\n * ```\n */\nexport async function setupLuksoConnector(\n config: LuksoConnectorConfig = {}\n): Promise<{ wagmiConfig: Config }> {\n const cfg = {\n embeddedWallet: {\n ...DEFAULT_CONFIG.embeddedWallet,\n ...config.embeddedWallet,\n } as Required<typeof DEFAULT_CONFIG.embeddedWallet>,\n walletConnect: {\n ...DEFAULT_CONFIG.walletConnect,\n ...config.walletConnect,\n } as Required<typeof DEFAULT_CONFIG.walletConnect>,\n chains: {\n ...DEFAULT_CONFIG.chains,\n ...config.chains,\n } as Required<typeof DEFAULT_CONFIG.chains>,\n storage: {\n ...DEFAULT_CONFIG.storage,\n ...config.storage,\n } as Required<typeof DEFAULT_CONFIG.storage>,\n wagmiConfig: config.wagmiConfig,\n }\n\n // IMPORTANT: Create UP Provider BEFORE wagmi config\n // The UP Provider registers via EIP-6963, and wagmi's injected() will detect it\n // This matches the order in demo-app: UP Provider first, then wagmi config\n\n // Step 1: Create UP Provider (if enabled)\n if (cfg.embeddedWallet?.enabled) {\n await createUPProvider(cfg.embeddedWallet)\n }\n\n // Step 2: Create or use provided wagmi config\n const wagmiConfig = cfg.wagmiConfig || (await createWagmiConfig(cfg))\n\n // Note: Wagmi will auto-reconnect in the background\n // The connector's watchWagmiAccount will detect the connection when it completes\n\n // Step 3: Setup connect modal\n // The UP Provider is already registered via EIP-6963 and will appear in wagmi connectors\n // Use the embedded wallet ID to identify it in the connector list\n setupConnectModal({\n wagmiConfig,\n chainId: cfg.chains.defaultChainId,\n embeddedWalletId: cfg.embeddedWallet.enabled\n ? EMBEDDED_WALLET_ID\n : undefined,\n })\n\n return { wagmiConfig }\n}\n\n/**\n * Create wagmi config with LUKSO chains and connectors\n */\nasync function createWagmiConfig(cfg: any): Promise<any> {\n try {\n // Dynamic imports to keep dependencies optional\n const [\n { createConfig, createStorage, injected },\n { walletConnect },\n { createClient, http },\n { lukso, luksoTestnet },\n ] = await Promise.all([\n import('@wagmi/core'),\n import('@wagmi/connectors'),\n import('viem'),\n import('viem/chains'),\n ])\n\n // Create storage adapter\n const storage = createStorage({\n key: cfg.storage.key,\n storage: getDefaultStorage(),\n })\n\n // Build chains array\n const chains = cfg.chains.enableTestnet\n ? ([luksoTestnet, lukso] as const)\n : ([lukso] as const)\n\n // Build connectors array\n const connectors = []\n\n // Add WalletConnect if enabled\n if (cfg.walletConnect.enabled) {\n connectors.push(\n walletConnect({\n projectId: cfg.walletConnect.projectId,\n showQrModal: cfg.walletConnect.showQrModal,\n })\n )\n }\n\n // Add injected (for UP Extension and other EIP-6963 wallets)\n connectors.push(injected())\n\n // Create wagmi config\n return createConfig({\n storage,\n multiInjectedProviderDiscovery: true, // Enable EIP-6963\n connectors,\n chains,\n client({ chain }: any) {\n return createClient({ chain, transport: http() })\n },\n })\n } catch (error) {\n console.error('Failed to create wagmi config:', error)\n throw new Error(\n 'Failed to create wagmi config. Make sure @wagmi/core, @wagmi/connectors, and viem are installed.'\n )\n }\n}\n\n/**\n * Create UP Provider (registers via EIP-6963)\n */\nasync function createUPProvider(config: {\n url: string\n storageKey: string\n name: string\n}): Promise<void> {\n // Validate URL - throw error if explicitly set to empty string\n if (config.url != null && config.url.trim() === '') {\n throw new Error(\n 'UP Provider URL is defined but empty. Please set WALLET_URL environment variable to a valid URL or leave it undefined.'\n )\n }\n\n try {\n const { createClientUPProvider } = await import('@lukso/up-provider')\n\n // Create UP Provider - it automatically registers via EIP-6963\n createClientUPProvider({\n url: config.url,\n mode: 'iframe',\n get: async () => {\n const stored = localStorage.getItem(config.storageKey)\n return stored ? JSON.parse(stored) : {}\n },\n set: async (value: Record<string, unknown>) => {\n localStorage.setItem(config.storageKey, JSON.stringify(value))\n },\n name: config.name,\n })\n\n // Wait for EIP-6963 registration\n await new Promise((resolve) => setTimeout(resolve, 100))\n } catch (error) {\n console.warn('⚠️ Failed to create UP Provider:', error)\n throw error\n }\n}\n\n/**\n * Default storage adapter (localStorage with error handling)\n */\nfunction getDefaultStorage() {\n const storage = (() => {\n if (typeof window !== 'undefined' && window.localStorage) {\n return window.localStorage\n }\n return {\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n }\n })()\n\n return {\n getItem(key: string) {\n return storage.getItem(key)\n },\n removeItem(key: string) {\n storage.removeItem(key)\n },\n setItem(key: string, value: string) {\n try {\n storage.setItem(key, value)\n } catch {\n // Silence QuotaExceededError, SecurityError, etc.\n }\n },\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.cjs
CHANGED
|
@@ -7,7 +7,7 @@ var _chunkD4X5RQWBcjs = require('./chunk-D4X5RQWB.cjs');
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkR7V3Q7Z6cjs = require('./chunk-R7V3Q7Z6.cjs');
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
@@ -796,5 +796,5 @@ var WindowPopupInstance = class extends BasePopupInstance {
|
|
|
796
796
|
|
|
797
797
|
|
|
798
798
|
|
|
799
|
-
exports.AccountModal = _chunkD4X5RQWBcjs.AccountModal; exports.BackupModal = _chunkEWIDQS53cjs.BackupModal; exports.ConnectModal = _chunk455JZ6IZcjs.ConnectModal; exports.DraggableAvatar = _chunk7LQ5EB2Xcjs.DraggableAvatar; exports.EMBEDDED_WALLET_ID =
|
|
799
|
+
exports.AccountModal = _chunkD4X5RQWBcjs.AccountModal; exports.BackupModal = _chunkEWIDQS53cjs.BackupModal; exports.ConnectModal = _chunk455JZ6IZcjs.ConnectModal; exports.DraggableAvatar = _chunk7LQ5EB2Xcjs.DraggableAvatar; exports.EMBEDDED_WALLET_ID = _chunkR7V3Q7Z6cjs.EMBEDDED_WALLET_ID; exports.EMBEDDED_WALLET_URL_DEV = _chunkR7V3Q7Z6cjs.EMBEDDED_WALLET_URL_DEV; exports.EMBEDDED_WALLET_URL_PROD = _chunkR7V3Q7Z6cjs.EMBEDDED_WALLET_URL_PROD; exports.ModalPopupInstance = ModalPopupInstance; exports.RestoreModal = _chunkOIB4M2BJcjs.RestoreModal; exports.UPConnector = UPConnector; exports.UP_EXTENSION_ID = _chunkR7V3Q7Z6cjs.UP_EXTENSION_ID; exports.WindowPopupInstance = WindowPopupInstance; exports.createAvatar = _chunk7LQ5EB2Xcjs.createAvatar; exports.createConnector = createConnector; exports.default = createConnector; exports.disconnect = _chunk455JZ6IZcjs.disconnect; exports.fromWagmiConnector = _chunk455JZ6IZcjs.fromWagmiConnector; exports.fromWagmiConnectors = _chunk455JZ6IZcjs.fromWagmiConnectors; exports.getConnection = _chunk455JZ6IZcjs.getConnection; exports.getWagmiSetup = _chunk455JZ6IZcjs.getWagmiSetup; exports.setupConnectModal = _chunk455JZ6IZcjs.setupWagmi; exports.setupLuksoConnector = _chunkR7V3Q7Z6cjs.setupLuksoConnector; exports.wagmi = _chunk455JZ6IZcjs.wagmiService; exports.watchConnection = _chunk455JZ6IZcjs.watchConnection;
|
|
800
800
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lukso/up-connector",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.5",
|
|
4
4
|
"description": "Universal Profile connector with draggable avatar and connection modal",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -85,9 +85,9 @@
|
|
|
85
85
|
"lit": "3.3.2",
|
|
86
86
|
"ws": "^8.19.0",
|
|
87
87
|
"zxcvbn": "^4.4.2",
|
|
88
|
-
"@lukso/core": "1.2.12",
|
|
89
|
-
"@lukso/transaction-view-core": "0.6.9",
|
|
90
88
|
"@lukso/passkey-auth": "1.2.7",
|
|
89
|
+
"@lukso/core": "1.2.12",
|
|
90
|
+
"@lukso/transaction-view-core": "0.6.10",
|
|
91
91
|
"@lukso/transaction-view-headless": "0.4.8"
|
|
92
92
|
},
|
|
93
93
|
"peerDependencies": {
|
package/src/auto-setup.ts
CHANGED
|
@@ -15,7 +15,8 @@ import { setupConnectModal } from './connect-modal/index.js'
|
|
|
15
15
|
*/
|
|
16
16
|
export const EMBEDDED_WALLET_ID = 'dev.lukso.auth'
|
|
17
17
|
export const EMBEDDED_WALLET_URL_DEV = 'http://localhost:9100'
|
|
18
|
-
export const EMBEDDED_WALLET_URL_PROD =
|
|
18
|
+
export const EMBEDDED_WALLET_URL_PROD =
|
|
19
|
+
'https://feed.api.universalprofile.cloud'
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* UP Extension ID
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/auto-setup.ts"],"sourcesContent":["/**\n * Auto-setup utilities for LUKSO products\n *\n * Provides zero-config setup for:\n * - Embedded Wallet (passkey-based)\n * - UP Extension (browser extension)\n * - UP Mobile (WalletConnect)\n */\n\nimport type { Config } from '@wagmi/core'\nimport { setupConnectModal } from './connect-modal/index.js'\n\n/**\n * Embedded wallet constants\n */\nexport const EMBEDDED_WALLET_ID = 'dev.lukso.auth'\nexport const EMBEDDED_WALLET_URL_DEV = 'http://localhost:9100'\nexport const EMBEDDED_WALLET_URL_PROD = 'https://auth-simple.pages.dev'\n\n/**\n * UP Extension ID\n */\nexport const UP_EXTENSION_ID = 'cloud.universalprofile'\n\n/**\n * Get default wallet URL based on environment\n */\nfunction getDefaultWalletUrl(): string {\n // Check for environment variable (CI builds)\n if (typeof process !== 'undefined' && process.env?.WALLET_URL) {\n return process.env.WALLET_URL\n }\n\n // Check if we're in production (browser)\n if (typeof window !== 'undefined') {\n const isLocalhost =\n window.location.hostname === 'localhost' ||\n window.location.hostname === '127.0.0.1'\n return isLocalhost ? EMBEDDED_WALLET_URL_DEV : EMBEDDED_WALLET_URL_PROD\n }\n\n // Default to dev\n return EMBEDDED_WALLET_URL_DEV\n}\n\nexport interface LuksoConnectorConfig {\n /**\n * Embedded wallet configuration\n */\n embeddedWallet?: {\n /**\n * Enable embedded wallet option (default: true)\n */\n enabled?: boolean\n\n /**\n * URL to the wallet service\n * @default 'http://localhost:9100'\n */\n url?: string\n\n /**\n * Storage key for UP Provider state\n * @default 'up-provider'\n */\n storageKey?: string\n\n /**\n * Display name for the wallet\n * @default 'Create Passkey Wallet'\n */\n name?: string\n }\n\n /**\n * WalletConnect configuration for mobile app\n */\n walletConnect?: {\n /**\n * Enable WalletConnect (default: true)\n */\n enabled?: boolean\n\n /**\n * WalletConnect Project ID\n * @default LUKSO's default project ID\n */\n projectId?: string\n\n /**\n * Show QR code modal on mobile devices (default: false)\n */\n showQrModal?: boolean\n }\n\n /**\n * Chain configuration\n */\n chains?: {\n /**\n * Default chain ID\n * @default 42 (LUKSO mainnet)\n */\n defaultChainId?: number\n\n /**\n * Enable testnet (default: true)\n */\n enableTestnet?: boolean\n }\n\n /**\n * Storage configuration\n */\n storage?: {\n /**\n * Storage key prefix for wagmi state\n * @default 'up-wagmi'\n */\n key?: string\n }\n\n /**\n * Pass an existing wagmi config instead of auto-creating one\n */\n wagmiConfig?: any\n}\n\nconst DEFAULT_CONFIG: Required<LuksoConnectorConfig> = {\n embeddedWallet: {\n enabled: true,\n url: getDefaultWalletUrl(),\n storageKey: 'up-provider',\n name: 'UE Embedded Wallet',\n },\n walletConnect: {\n enabled: true,\n projectId: '7d1af65dc2722192d9914b5d6eaeb421', // LUKSO's default\n showQrModal: false,\n },\n chains: {\n defaultChainId: 42, // LUKSO mainnet\n enableTestnet: true,\n },\n storage: {\n key: 'up-wagmi',\n },\n wagmiConfig: undefined,\n}\n\n/**\n * Auto-setup LUKSO connector with sensible defaults\n *\n * This function creates a wagmi config and sets up the connect modal\n * with support for:\n * - Embedded Wallet (passkey-based)\n * - UP Extension (auto-detected via EIP-6963)\n * - UP Mobile (WalletConnect)\n *\n * @example\n * ```typescript\n * // Zero config - uses all defaults\n * setupLuksoConnector()\n *\n * // Custom configuration\n * setupLuksoConnector({\n * embeddedWallet: {\n * url: 'https://wallet.example.com'\n * },\n * chains: {\n * defaultChainId: 4201 // LUKSO Testnet\n * }\n * })\n * ```\n */\nexport async function setupLuksoConnector(\n config: LuksoConnectorConfig = {}\n): Promise<{ wagmiConfig: Config }> {\n const cfg = {\n embeddedWallet: {\n ...DEFAULT_CONFIG.embeddedWallet,\n ...config.embeddedWallet,\n } as Required<typeof DEFAULT_CONFIG.embeddedWallet>,\n walletConnect: {\n ...DEFAULT_CONFIG.walletConnect,\n ...config.walletConnect,\n } as Required<typeof DEFAULT_CONFIG.walletConnect>,\n chains: {\n ...DEFAULT_CONFIG.chains,\n ...config.chains,\n } as Required<typeof DEFAULT_CONFIG.chains>,\n storage: {\n ...DEFAULT_CONFIG.storage,\n ...config.storage,\n } as Required<typeof DEFAULT_CONFIG.storage>,\n wagmiConfig: config.wagmiConfig,\n }\n\n // IMPORTANT: Create UP Provider BEFORE wagmi config\n // The UP Provider registers via EIP-6963, and wagmi's injected() will detect it\n // This matches the order in demo-app: UP Provider first, then wagmi config\n\n // Step 1: Create UP Provider (if enabled)\n if (cfg.embeddedWallet?.enabled) {\n await createUPProvider(cfg.embeddedWallet)\n }\n\n // Step 2: Create or use provided wagmi config\n const wagmiConfig = cfg.wagmiConfig || (await createWagmiConfig(cfg))\n\n // Note: Wagmi will auto-reconnect in the background\n // The connector's watchWagmiAccount will detect the connection when it completes\n\n // Step 3: Setup connect modal\n // The UP Provider is already registered via EIP-6963 and will appear in wagmi connectors\n // Use the embedded wallet ID to identify it in the connector list\n setupConnectModal({\n wagmiConfig,\n chainId: cfg.chains.defaultChainId,\n embeddedWalletId: cfg.embeddedWallet.enabled\n ? EMBEDDED_WALLET_ID\n : undefined,\n })\n\n return { wagmiConfig }\n}\n\n/**\n * Create wagmi config with LUKSO chains and connectors\n */\nasync function createWagmiConfig(cfg: any): Promise<any> {\n try {\n // Dynamic imports to keep dependencies optional\n const [\n { createConfig, createStorage, injected },\n { walletConnect },\n { createClient, http },\n { lukso, luksoTestnet },\n ] = await Promise.all([\n import('@wagmi/core'),\n import('@wagmi/connectors'),\n import('viem'),\n import('viem/chains'),\n ])\n\n // Create storage adapter\n const storage = createStorage({\n key: cfg.storage.key,\n storage: getDefaultStorage(),\n })\n\n // Build chains array\n const chains = cfg.chains.enableTestnet\n ? ([luksoTestnet, lukso] as const)\n : ([lukso] as const)\n\n // Build connectors array\n const connectors = []\n\n // Add WalletConnect if enabled\n if (cfg.walletConnect.enabled) {\n connectors.push(\n walletConnect({\n projectId: cfg.walletConnect.projectId,\n showQrModal: cfg.walletConnect.showQrModal,\n })\n )\n }\n\n // Add injected (for UP Extension and other EIP-6963 wallets)\n connectors.push(injected())\n\n // Create wagmi config\n return createConfig({\n storage,\n multiInjectedProviderDiscovery: true, // Enable EIP-6963\n connectors,\n chains,\n client({ chain }: any) {\n return createClient({ chain, transport: http() })\n },\n })\n } catch (error) {\n console.error('Failed to create wagmi config:', error)\n throw new Error(\n 'Failed to create wagmi config. Make sure @wagmi/core, @wagmi/connectors, and viem are installed.'\n )\n }\n}\n\n/**\n * Create UP Provider (registers via EIP-6963)\n */\nasync function createUPProvider(config: {\n url: string\n storageKey: string\n name: string\n}): Promise<void> {\n // Validate URL - throw error if explicitly set to empty string\n if (config.url != null && config.url.trim() === '') {\n throw new Error(\n 'UP Provider URL is defined but empty. Please set WALLET_URL environment variable to a valid URL or leave it undefined.'\n )\n }\n\n try {\n const { createClientUPProvider } = await import('@lukso/up-provider')\n\n // Create UP Provider - it automatically registers via EIP-6963\n createClientUPProvider({\n url: config.url,\n mode: 'iframe',\n get: async () => {\n const stored = localStorage.getItem(config.storageKey)\n return stored ? JSON.parse(stored) : {}\n },\n set: async (value: Record<string, unknown>) => {\n localStorage.setItem(config.storageKey, JSON.stringify(value))\n },\n name: config.name,\n })\n\n // Wait for EIP-6963 registration\n await new Promise((resolve) => setTimeout(resolve, 100))\n } catch (error) {\n console.warn('⚠️ Failed to create UP Provider:', error)\n throw error\n }\n}\n\n/**\n * Default storage adapter (localStorage with error handling)\n */\nfunction getDefaultStorage() {\n const storage = (() => {\n if (typeof window !== 'undefined' && window.localStorage) {\n return window.localStorage\n }\n return {\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n }\n })()\n\n return {\n getItem(key: string) {\n return storage.getItem(key)\n },\n removeItem(key: string) {\n storage.removeItem(key)\n },\n setItem(key: string, value: string) {\n try {\n storage.setItem(key, value)\n } catch {\n // Silence QuotaExceededError, SecurityError, etc.\n }\n },\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/service-auth-simple/service-auth-simple/packages/up-connector/dist/chunk-DXCWF7PX.cjs","../src/auto-setup.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACWO,IAAM,mBAAA,EAAqB,gBAAA;AAC3B,IAAM,wBAAA,EAA0B,uBAAA;AAChC,IAAM,yBAAA,EAA2B,+BAAA;AAKjC,IAAM,gBAAA,EAAkB,wBAAA;AAK/B,SAAS,mBAAA,CAAA,EAA8B;AAErC,EAAA,GAAA,CAAI,OAAO,QAAA,IAAY,YAAA,mBAAe,OAAA,mBAAQ,GAAA,6BAAK,YAAA,EAAY;AAC7D,IAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,UAAA;AAAA,EACrB;AAGA,EAAA,GAAA,CAAI,OAAO,OAAA,IAAW,WAAA,EAAa;AACjC,IAAA,MAAM,YAAA,EACJ,MAAA,CAAO,QAAA,CAAS,SAAA,IAAa,YAAA,GAC7B,MAAA,CAAO,QAAA,CAAS,SAAA,IAAa,WAAA;AAC/B,IAAA,OAAO,YAAA,EAAc,wBAAA,EAA0B,wBAAA;AAAA,EACjD;AAGA,EAAA,OAAO,uBAAA;AACT;AAqFA,IAAM,eAAA,EAAiD;AAAA,EACrD,cAAA,EAAgB;AAAA,IACd,OAAA,EAAS,IAAA;AAAA,IACT,GAAA,EAAK,mBAAA,CAAoB,CAAA;AAAA,IACzB,UAAA,EAAY,aAAA;AAAA,IACZ,IAAA,EAAM;AAAA,EACR,CAAA;AAAA,EACA,aAAA,EAAe;AAAA,IACb,OAAA,EAAS,IAAA;AAAA,IACT,SAAA,EAAW,kCAAA;AAAA;AAAA,IACX,WAAA,EAAa;AAAA,EACf,CAAA;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,cAAA,EAAgB,EAAA;AAAA;AAAA,IAChB,aAAA,EAAe;AAAA,EACjB,CAAA;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAA,EAAK;AAAA,EACP,CAAA;AAAA,EACA,WAAA,EAAa,KAAA;AACf,CAAA;AA2BA,MAAA,SAAsB,mBAAA,CACpB,OAAA,EAA+B,CAAC,CAAA,EACE;AAClC,EAAA,MAAM,IAAA,EAAM;AAAA,IACV,cAAA,EAAgB;AAAA,MACd,GAAG,cAAA,CAAe,cAAA;AAAA,MAClB,GAAG,MAAA,CAAO;AAAA,IACZ,CAAA;AAAA,IACA,aAAA,EAAe;AAAA,MACb,GAAG,cAAA,CAAe,aAAA;AAAA,MAClB,GAAG,MAAA,CAAO;AAAA,IACZ,CAAA;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,GAAG,cAAA,CAAe,MAAA;AAAA,MAClB,GAAG,MAAA,CAAO;AAAA,IACZ,CAAA;AAAA,IACA,OAAA,EAAS;AAAA,MACP,GAAG,cAAA,CAAe,OAAA;AAAA,MAClB,GAAG,MAAA,CAAO;AAAA,IACZ,CAAA;AAAA,IACA,WAAA,EAAa,MAAA,CAAO;AAAA,EACtB,CAAA;AAOA,EAAA,GAAA,iBAAI,GAAA,qBAAI,cAAA,6BAAgB,SAAA,EAAS;AAC/B,IAAA,MAAM,gBAAA,CAAiB,GAAA,CAAI,cAAc,CAAA;AAAA,EAC3C;AAGA,EAAA,MAAM,YAAA,EAAc,GAAA,CAAI,YAAA,GAAgB,MAAM,iBAAA,CAAkB,GAAG,CAAA;AAQnE,EAAA,0CAAA;AAAkB,IAChB,WAAA;AAAA,IACA,OAAA,EAAS,GAAA,CAAI,MAAA,CAAO,cAAA;AAAA,IACpB,gBAAA,EAAkB,GAAA,CAAI,cAAA,CAAe,QAAA,EACjC,mBAAA,EACA,KAAA;AAAA,EACN,CAAC,CAAA;AAED,EAAA,OAAO,EAAE,YAAY,CAAA;AACvB;AAKA,MAAA,SAAe,iBAAA,CAAkB,GAAA,EAAwB;AACvD,EAAA,IAAI;AAEF,IAAA,MAAM;AAAA,MACJ,EAAE,YAAA,EAAc,aAAA,EAAe,SAAS,CAAA;AAAA,MACxC,EAAE,cAAc,CAAA;AAAA,MAChB,EAAE,YAAA,EAAc,KAAK,CAAA;AAAA,MACrB,EAAE,KAAA,EAAO,aAAa;AAAA,IACxB,EAAA,EAAI,MAAM,OAAA,CAAQ,GAAA,CAAI;AAAA,MACpB,4DAAA,CAAO,aAAa,GAAA;AAAA,MACpB,4DAAA,CAAO,mBAAmB,GAAA;AAAA,MAC1B,4DAAA,CAAO,MAAM,GAAA;AAAA,MACb,4DAAA,CAAO,aAAa;AAAA,IACtB,CAAC,CAAA;AAGD,IAAA,MAAM,QAAA,EAAU,aAAA,CAAc;AAAA,MAC5B,GAAA,EAAK,GAAA,CAAI,OAAA,CAAQ,GAAA;AAAA,MACjB,OAAA,EAAS,iBAAA,CAAkB;AAAA,IAC7B,CAAC,CAAA;AAGD,IAAA,MAAM,OAAA,EAAS,GAAA,CAAI,MAAA,CAAO,cAAA,EACrB,CAAC,YAAA,EAAc,KAAK,EAAA,EACpB,CAAC,KAAK,CAAA;AAGX,IAAA,MAAM,WAAA,EAAa,CAAC,CAAA;AAGpB,IAAA,GAAA,CAAI,GAAA,CAAI,aAAA,CAAc,OAAA,EAAS;AAC7B,MAAA,UAAA,CAAW,IAAA;AAAA,QACT,aAAA,CAAc;AAAA,UACZ,SAAA,EAAW,GAAA,CAAI,aAAA,CAAc,SAAA;AAAA,UAC7B,WAAA,EAAa,GAAA,CAAI,aAAA,CAAc;AAAA,QACjC,CAAC;AAAA,MACH,CAAA;AAAA,IACF;AAGA,IAAA,UAAA,CAAW,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA;AAG1B,IAAA,OAAO,YAAA,CAAa;AAAA,MAClB,OAAA;AAAA,MACA,8BAAA,EAAgC,IAAA;AAAA;AAAA,MAChC,UAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA,CAAO,EAAE,MAAM,CAAA,EAAQ;AACrB,QAAA,OAAO,YAAA,CAAa,EAAE,KAAA,EAAO,SAAA,EAAW,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,MAClD;AAAA,IACF,CAAC,CAAA;AAAA,EACH,EAAA,MAAA,CAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,gCAAA,EAAkC,KAAK,CAAA;AACrD,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,IACF,CAAA;AAAA,EACF;AACF;AAKA,MAAA,SAAe,gBAAA,CAAiB,MAAA,EAId;AAEhB,EAAA,GAAA,CAAI,MAAA,CAAO,IAAA,GAAO,KAAA,GAAQ,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,EAAA,IAAM,EAAA,EAAI;AAClD,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,IACF,CAAA;AAAA,EACF;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,EAAE,uBAAuB,EAAA,EAAI,MAAM,4DAAA,CAAO,oBAAoB,GAAA;AAGpE,IAAA,sBAAA,CAAuB;AAAA,MACrB,GAAA,EAAK,MAAA,CAAO,GAAA;AAAA,MACZ,IAAA,EAAM,QAAA;AAAA,MACN,GAAA,EAAK,MAAA,CAAA,EAAA,GAAY;AACf,QAAA,MAAM,OAAA,EAAS,YAAA,CAAa,OAAA,CAAQ,MAAA,CAAO,UAAU,CAAA;AACrD,QAAA,OAAO,OAAA,EAAS,IAAA,CAAK,KAAA,CAAM,MAAM,EAAA,EAAI,CAAC,CAAA;AAAA,MACxC,CAAA;AAAA,MACA,GAAA,EAAK,MAAA,CAAO,KAAA,EAAA,GAAmC;AAC7C,QAAA,YAAA,CAAa,OAAA,CAAQ,MAAA,CAAO,UAAA,EAAY,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA,MAC/D,CAAA;AAAA,MACA,IAAA,EAAM,MAAA,CAAO;AAAA,IACf,CAAC,CAAA;AAGD,IAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAA,GAAY,UAAA,CAAW,OAAA,EAAS,GAAG,CAAC,CAAA;AAAA,EACzD,EAAA,MAAA,CAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,IAAA,CAAK,4CAAA,EAAoC,KAAK,CAAA;AACtD,IAAA,MAAM,KAAA;AAAA,EACR;AACF;AAKA,SAAS,iBAAA,CAAA,EAAoB;AAC3B,EAAA,MAAM,QAAA,EAAA,CAAW,CAAA,EAAA,GAAM;AACrB,IAAA,GAAA,CAAI,OAAO,OAAA,IAAW,YAAA,GAAe,MAAA,CAAO,YAAA,EAAc;AACxD,MAAA,OAAO,MAAA,CAAO,YAAA;AAAA,IAChB;AACA,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,CAAA,EAAA,GAAM,IAAA;AAAA,MACf,OAAA,EAAS,CAAA,EAAA,GAAM;AAAA,MAAC,CAAA;AAAA,MAChB,UAAA,EAAY,CAAA,EAAA,GAAM;AAAA,MAAC;AAAA,IACrB,CAAA;AAAA,EACF,CAAA,CAAA,CAAG,CAAA;AAEH,EAAA,OAAO;AAAA,IACL,OAAA,CAAQ,GAAA,EAAa;AACnB,MAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,GAAG,CAAA;AAAA,IAC5B,CAAA;AAAA,IACA,UAAA,CAAW,GAAA,EAAa;AACtB,MAAA,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA;AAAA,IACxB,CAAA;AAAA,IACA,OAAA,CAAQ,GAAA,EAAa,KAAA,EAAe;AAClC,MAAA,IAAI;AACF,QAAA,OAAA,CAAQ,OAAA,CAAQ,GAAA,EAAK,KAAK,CAAA;AAAA,MAC5B,EAAA,UAAQ;AAAA,MAER;AAAA,IACF;AAAA,EACF,CAAA;AACF;AD5LA;AACA;AACE;AACA;AACA;AACA;AACA;AACF,sQAAC","file":"/home/runner/work/service-auth-simple/service-auth-simple/packages/up-connector/dist/chunk-DXCWF7PX.cjs","sourcesContent":[null,"/**\n * Auto-setup utilities for LUKSO products\n *\n * Provides zero-config setup for:\n * - Embedded Wallet (passkey-based)\n * - UP Extension (browser extension)\n * - UP Mobile (WalletConnect)\n */\n\nimport type { Config } from '@wagmi/core'\nimport { setupConnectModal } from './connect-modal/index.js'\n\n/**\n * Embedded wallet constants\n */\nexport const EMBEDDED_WALLET_ID = 'dev.lukso.auth'\nexport const EMBEDDED_WALLET_URL_DEV = 'http://localhost:9100'\nexport const EMBEDDED_WALLET_URL_PROD = 'https://auth-simple.pages.dev'\n\n/**\n * UP Extension ID\n */\nexport const UP_EXTENSION_ID = 'cloud.universalprofile'\n\n/**\n * Get default wallet URL based on environment\n */\nfunction getDefaultWalletUrl(): string {\n // Check for environment variable (CI builds)\n if (typeof process !== 'undefined' && process.env?.WALLET_URL) {\n return process.env.WALLET_URL\n }\n\n // Check if we're in production (browser)\n if (typeof window !== 'undefined') {\n const isLocalhost =\n window.location.hostname === 'localhost' ||\n window.location.hostname === '127.0.0.1'\n return isLocalhost ? EMBEDDED_WALLET_URL_DEV : EMBEDDED_WALLET_URL_PROD\n }\n\n // Default to dev\n return EMBEDDED_WALLET_URL_DEV\n}\n\nexport interface LuksoConnectorConfig {\n /**\n * Embedded wallet configuration\n */\n embeddedWallet?: {\n /**\n * Enable embedded wallet option (default: true)\n */\n enabled?: boolean\n\n /**\n * URL to the wallet service\n * @default 'http://localhost:9100'\n */\n url?: string\n\n /**\n * Storage key for UP Provider state\n * @default 'up-provider'\n */\n storageKey?: string\n\n /**\n * Display name for the wallet\n * @default 'Create Passkey Wallet'\n */\n name?: string\n }\n\n /**\n * WalletConnect configuration for mobile app\n */\n walletConnect?: {\n /**\n * Enable WalletConnect (default: true)\n */\n enabled?: boolean\n\n /**\n * WalletConnect Project ID\n * @default LUKSO's default project ID\n */\n projectId?: string\n\n /**\n * Show QR code modal on mobile devices (default: false)\n */\n showQrModal?: boolean\n }\n\n /**\n * Chain configuration\n */\n chains?: {\n /**\n * Default chain ID\n * @default 42 (LUKSO mainnet)\n */\n defaultChainId?: number\n\n /**\n * Enable testnet (default: true)\n */\n enableTestnet?: boolean\n }\n\n /**\n * Storage configuration\n */\n storage?: {\n /**\n * Storage key prefix for wagmi state\n * @default 'up-wagmi'\n */\n key?: string\n }\n\n /**\n * Pass an existing wagmi config instead of auto-creating one\n */\n wagmiConfig?: any\n}\n\nconst DEFAULT_CONFIG: Required<LuksoConnectorConfig> = {\n embeddedWallet: {\n enabled: true,\n url: getDefaultWalletUrl(),\n storageKey: 'up-provider',\n name: 'UE Embedded Wallet',\n },\n walletConnect: {\n enabled: true,\n projectId: '7d1af65dc2722192d9914b5d6eaeb421', // LUKSO's default\n showQrModal: false,\n },\n chains: {\n defaultChainId: 42, // LUKSO mainnet\n enableTestnet: true,\n },\n storage: {\n key: 'up-wagmi',\n },\n wagmiConfig: undefined,\n}\n\n/**\n * Auto-setup LUKSO connector with sensible defaults\n *\n * This function creates a wagmi config and sets up the connect modal\n * with support for:\n * - Embedded Wallet (passkey-based)\n * - UP Extension (auto-detected via EIP-6963)\n * - UP Mobile (WalletConnect)\n *\n * @example\n * ```typescript\n * // Zero config - uses all defaults\n * setupLuksoConnector()\n *\n * // Custom configuration\n * setupLuksoConnector({\n * embeddedWallet: {\n * url: 'https://wallet.example.com'\n * },\n * chains: {\n * defaultChainId: 4201 // LUKSO Testnet\n * }\n * })\n * ```\n */\nexport async function setupLuksoConnector(\n config: LuksoConnectorConfig = {}\n): Promise<{ wagmiConfig: Config }> {\n const cfg = {\n embeddedWallet: {\n ...DEFAULT_CONFIG.embeddedWallet,\n ...config.embeddedWallet,\n } as Required<typeof DEFAULT_CONFIG.embeddedWallet>,\n walletConnect: {\n ...DEFAULT_CONFIG.walletConnect,\n ...config.walletConnect,\n } as Required<typeof DEFAULT_CONFIG.walletConnect>,\n chains: {\n ...DEFAULT_CONFIG.chains,\n ...config.chains,\n } as Required<typeof DEFAULT_CONFIG.chains>,\n storage: {\n ...DEFAULT_CONFIG.storage,\n ...config.storage,\n } as Required<typeof DEFAULT_CONFIG.storage>,\n wagmiConfig: config.wagmiConfig,\n }\n\n // IMPORTANT: Create UP Provider BEFORE wagmi config\n // The UP Provider registers via EIP-6963, and wagmi's injected() will detect it\n // This matches the order in demo-app: UP Provider first, then wagmi config\n\n // Step 1: Create UP Provider (if enabled)\n if (cfg.embeddedWallet?.enabled) {\n await createUPProvider(cfg.embeddedWallet)\n }\n\n // Step 2: Create or use provided wagmi config\n const wagmiConfig = cfg.wagmiConfig || (await createWagmiConfig(cfg))\n\n // Note: Wagmi will auto-reconnect in the background\n // The connector's watchWagmiAccount will detect the connection when it completes\n\n // Step 3: Setup connect modal\n // The UP Provider is already registered via EIP-6963 and will appear in wagmi connectors\n // Use the embedded wallet ID to identify it in the connector list\n setupConnectModal({\n wagmiConfig,\n chainId: cfg.chains.defaultChainId,\n embeddedWalletId: cfg.embeddedWallet.enabled\n ? EMBEDDED_WALLET_ID\n : undefined,\n })\n\n return { wagmiConfig }\n}\n\n/**\n * Create wagmi config with LUKSO chains and connectors\n */\nasync function createWagmiConfig(cfg: any): Promise<any> {\n try {\n // Dynamic imports to keep dependencies optional\n const [\n { createConfig, createStorage, injected },\n { walletConnect },\n { createClient, http },\n { lukso, luksoTestnet },\n ] = await Promise.all([\n import('@wagmi/core'),\n import('@wagmi/connectors'),\n import('viem'),\n import('viem/chains'),\n ])\n\n // Create storage adapter\n const storage = createStorage({\n key: cfg.storage.key,\n storage: getDefaultStorage(),\n })\n\n // Build chains array\n const chains = cfg.chains.enableTestnet\n ? ([luksoTestnet, lukso] as const)\n : ([lukso] as const)\n\n // Build connectors array\n const connectors = []\n\n // Add WalletConnect if enabled\n if (cfg.walletConnect.enabled) {\n connectors.push(\n walletConnect({\n projectId: cfg.walletConnect.projectId,\n showQrModal: cfg.walletConnect.showQrModal,\n })\n )\n }\n\n // Add injected (for UP Extension and other EIP-6963 wallets)\n connectors.push(injected())\n\n // Create wagmi config\n return createConfig({\n storage,\n multiInjectedProviderDiscovery: true, // Enable EIP-6963\n connectors,\n chains,\n client({ chain }: any) {\n return createClient({ chain, transport: http() })\n },\n })\n } catch (error) {\n console.error('Failed to create wagmi config:', error)\n throw new Error(\n 'Failed to create wagmi config. Make sure @wagmi/core, @wagmi/connectors, and viem are installed.'\n )\n }\n}\n\n/**\n * Create UP Provider (registers via EIP-6963)\n */\nasync function createUPProvider(config: {\n url: string\n storageKey: string\n name: string\n}): Promise<void> {\n // Validate URL - throw error if explicitly set to empty string\n if (config.url != null && config.url.trim() === '') {\n throw new Error(\n 'UP Provider URL is defined but empty. Please set WALLET_URL environment variable to a valid URL or leave it undefined.'\n )\n }\n\n try {\n const { createClientUPProvider } = await import('@lukso/up-provider')\n\n // Create UP Provider - it automatically registers via EIP-6963\n createClientUPProvider({\n url: config.url,\n mode: 'iframe',\n get: async () => {\n const stored = localStorage.getItem(config.storageKey)\n return stored ? JSON.parse(stored) : {}\n },\n set: async (value: Record<string, unknown>) => {\n localStorage.setItem(config.storageKey, JSON.stringify(value))\n },\n name: config.name,\n })\n\n // Wait for EIP-6963 registration\n await new Promise((resolve) => setTimeout(resolve, 100))\n } catch (error) {\n console.warn('⚠️ Failed to create UP Provider:', error)\n throw error\n }\n}\n\n/**\n * Default storage adapter (localStorage with error handling)\n */\nfunction getDefaultStorage() {\n const storage = (() => {\n if (typeof window !== 'undefined' && window.localStorage) {\n return window.localStorage\n }\n return {\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n }\n })()\n\n return {\n getItem(key: string) {\n return storage.getItem(key)\n },\n removeItem(key: string) {\n storage.removeItem(key)\n },\n setItem(key: string, value: string) {\n try {\n storage.setItem(key, value)\n } catch {\n // Silence QuotaExceededError, SecurityError, etc.\n }\n },\n }\n}\n"]}
|