@powerhousedao/connect 1.0.22-dev.0 → 1.0.22-dev.2
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/assets/{app-DOR_8r1B.js → app-CMvmK1ZV.js} +307 -329
- package/dist/assets/{app-DOR_8r1B.js.map → app-CMvmK1ZV.js.map} +1 -1
- package/dist/assets/{app-loader-uXeiy6sl.js → app-loader-yUQ3CH1e.js} +44 -36
- package/dist/assets/app-loader-yUQ3CH1e.js.map +1 -0
- package/dist/assets/{browser-B5bfipse.js → browser-DwVW0p-5.js} +4 -4
- package/dist/assets/{browser-B5bfipse.js.map → browser-DwVW0p-5.js.map} +1 -1
- package/dist/assets/{ccip-Cu6cyUtU.js → ccip-D3ep6jzQ.js} +4 -4
- package/dist/assets/{ccip-Cu6cyUtU.js.map → ccip-D3ep6jzQ.js.map} +1 -1
- package/dist/assets/{content-Cxj0K1dm.js → content-DcB11C-t.js} +5 -5
- package/dist/assets/{content-Cxj0K1dm.js.map → content-DcB11C-t.js.map} +1 -1
- package/dist/assets/{index-BBO5Ckrr.js → index-B1leI6f5.js} +14 -168
- package/dist/assets/index-B1leI6f5.js.map +1 -0
- package/dist/assets/{index-CT91u5m_.js → index-BlVppmJk.js} +4 -4
- package/dist/assets/{index-CT91u5m_.js.map → index-BlVppmJk.js.map} +1 -1
- package/dist/assets/{index-B7pq58I6.js → index-CFSbUvM7.js} +4 -4
- package/dist/assets/{index-B7pq58I6.js.map → index-CFSbUvM7.js.map} +1 -1
- package/dist/assets/{index-Ct3xGcDm.js → index-DrLZKy3E.js} +4 -4
- package/dist/assets/{index-Ct3xGcDm.js.map → index-DrLZKy3E.js.map} +1 -1
- package/dist/assets/{main.CMSwP7lX.js → main.ejU8LHpz.js} +2 -2
- package/dist/assets/{main.CMSwP7lX.js.map → main.ejU8LHpz.js.map} +1 -1
- package/dist/assets/{reactor-analytics-CrWekgnx.js → reactor-analytics-uLER5fzr.js} +16 -12
- package/dist/assets/reactor-analytics-uLER5fzr.js.map +1 -0
- package/dist/assets/{router-BDGkWvYS.js → router-BzfSlrCZ.js} +7 -7
- package/dist/assets/{router-BDGkWvYS.js.map → router-BzfSlrCZ.js.map} +1 -1
- package/dist/index.html +1 -1
- package/dist/vite-envs.sh +1 -1
- package/package.json +9 -9
- package/dist/assets/app-loader-uXeiy6sl.js.map +0 -1
- package/dist/assets/index-BBO5Ckrr.js.map +0 -1
- package/dist/assets/reactor-analytics-CrWekgnx.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"mappings":"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","names":["store","_store"],"ignoreList":[],"sources":["../../src/services/crypto/browser.ts","../../src/services/crypto/index.ts","../../src/services/renown/utils.ts","../../src/services/storage/index.ts","../../src/services/storage/browser.ts","../../src/services/renown/browser.ts","../../src/services/renown/index.ts"],"sourcesContent":["import { type JsonWebKeyPairStorage, type JwkKeyPair } from './index.js';\n\nexport class BrowserKeyStorage implements JsonWebKeyPairStorage {\n static #DB_NAME = 'browserKeyDB';\n static #STORE_NAME = 'keyPairs';\n static #KEY = 'keyPair';\n\n #db: Promise<IDBDatabase>;\n constructor() {\n this.#db = new Promise((resolve, reject) => {\n const req = indexedDB.open(BrowserKeyStorage.#DB_NAME, 1);\n req.onupgradeneeded = () => {\n req.result.createObjectStore(BrowserKeyStorage.#STORE_NAME);\n };\n req.onsuccess = () => resolve(req.result);\n req.onerror = () => reject(req.error as Error);\n });\n }\n\n async #useStore(mode: IDBTransactionMode = 'readwrite') {\n const database = await this.#db;\n const transaction = database.transaction(\n BrowserKeyStorage.#STORE_NAME,\n mode,\n );\n const store = transaction.objectStore(BrowserKeyStorage.#STORE_NAME);\n return store;\n }\n\n async saveKeyPair(keyPair: JwkKeyPair) {\n const store = await this.#useStore();\n const request = store.put(keyPair, BrowserKeyStorage.#KEY);\n return new Promise<void>((resolve, reject) => {\n request.onsuccess = () => {\n resolve();\n };\n request.onerror = () => {\n reject(new Error('Failed to save key pair'));\n };\n });\n }\n\n async loadKeyPair(): Promise<JwkKeyPair | undefined> {\n const store = await this.#useStore('readonly');\n const request = store.getAll();\n\n return new Promise<JwkKeyPair | undefined>((resolve, reject) => {\n request.onsuccess = () => {\n const keyPair = request.result.length\n ? (request.result[0] as JwkKeyPair)\n : undefined;\n resolve(keyPair);\n };\n request.onerror = () => {\n reject(new Error('Failed to load key pair'));\n };\n });\n }\n}\n","/* eslint-disable no-unused-private-class-members */\nimport {\n compressedKeyInHexfromRaw,\n encodeDIDfromHexString,\n rawKeyInHexfromUncompressed,\n} from 'did-key-creator';\n\nexport type JwkKeyPair = {\n publicKey: JsonWebKey;\n privateKey: JsonWebKey;\n};\n\nexport interface JsonWebKeyPairStorage {\n loadKeyPair(): Promise<JwkKeyPair | undefined>;\n saveKeyPair(keyPair: JwkKeyPair): Promise<void>;\n}\n\nfunction ab2hex(ab: ArrayBuffer) {\n return Array.prototype.map\n .call(new Uint8Array(ab), (x: number) =>\n ('00' + x.toString(16)).slice(-2),\n )\n .join('');\n}\n\nexport interface IConnectCrypto {\n did: () => Promise<DID>;\n regenerateDid(): Promise<void>;\n sign: (data: Uint8Array) => Promise<Uint8Array>;\n}\n\nexport type DID = `did:key:${string}`;\n\nexport class ConnectCrypto implements IConnectCrypto {\n #subtleCrypto: Promise<SubtleCrypto>;\n #keyPair: CryptoKeyPair | undefined;\n #keyPairStorage: JsonWebKeyPairStorage;\n\n #did: Promise<DID>;\n\n static algorithm: EcKeyAlgorithm = {\n name: 'ECDSA',\n namedCurve: 'P-256',\n };\n\n static signAlgorithm = {\n name: 'ECDSA',\n namedCurve: 'P-256',\n hash: 'SHA-256',\n };\n\n constructor(keyPairStorage: JsonWebKeyPairStorage) {\n this.#keyPairStorage = keyPairStorage;\n\n // Initializes the subtleCrypto module according to the host environment\n this.#subtleCrypto = this.#initCrypto();\n\n this.#did = this.#initialize();\n }\n\n #initCrypto() {\n return new Promise<SubtleCrypto>((resolve, reject) => {\n if (typeof window === 'undefined') {\n import('node:crypto')\n .then(module => {\n resolve(module.webcrypto.subtle as SubtleCrypto);\n })\n .catch(reject);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!window.crypto?.subtle) {\n reject(new Error('Crypto module not available'));\n }\n resolve(window.crypto.subtle);\n }\n });\n }\n\n // loads the key pair from storage or generates a new one if none is stored\n async #initialize() {\n const loadedKeyPair = await this.#keyPairStorage.loadKeyPair();\n if (loadedKeyPair) {\n this.#keyPair = await this.#importKeyPair(loadedKeyPair);\n console.log('Found key pair');\n } else {\n this.#keyPair = await this.#generateECDSAKeyPair();\n console.log('Created key pair');\n await this.#keyPairStorage.saveKeyPair(await this.#exportKeyPair());\n }\n const did = await this.#parseDid();\n console.log('Connect DID:', did);\n return did;\n }\n\n did() {\n return this.#did;\n }\n\n async regenerateDid() {\n this.#keyPair = await this.#generateECDSAKeyPair();\n await this.#keyPairStorage.saveKeyPair(await this.#exportKeyPair());\n }\n\n async #parseDid(): Promise<DID> {\n if (!this.#keyPair) {\n throw new Error('No key pair available');\n }\n\n const subtleCrypto = await this.#subtleCrypto;\n const publicKeyRaw = await subtleCrypto.exportKey(\n 'raw',\n this.#keyPair.publicKey,\n );\n\n const multicodecName = 'p256-pub';\n const rawKey = rawKeyInHexfromUncompressed(ab2hex(publicKeyRaw));\n const compressedKey = compressedKeyInHexfromRaw(rawKey);\n const did = encodeDIDfromHexString(multicodecName, compressedKey);\n return did as DID;\n }\n\n async #generateECDSAKeyPair() {\n const subtleCrypto = await this.#subtleCrypto;\n const keyPair = await subtleCrypto.generateKey(\n ConnectCrypto.algorithm,\n true,\n ['sign', 'verify'],\n );\n return keyPair;\n }\n\n async #exportKeyPair(): Promise<JwkKeyPair> {\n if (!this.#keyPair) {\n throw new Error('No key pair available');\n }\n const subtleCrypto = await this.#subtleCrypto;\n const jwkKeyPair = {\n publicKey: await subtleCrypto.exportKey(\n 'jwk',\n this.#keyPair.publicKey,\n ),\n privateKey: await subtleCrypto.exportKey(\n 'jwk',\n this.#keyPair.privateKey,\n ),\n };\n return jwkKeyPair;\n }\n\n async #importKeyPair(jwkKeyPair: JwkKeyPair): Promise<CryptoKeyPair> {\n const subtleCrypto = await this.#subtleCrypto;\n return {\n publicKey: await subtleCrypto.importKey(\n 'jwk',\n jwkKeyPair.publicKey,\n ConnectCrypto.algorithm,\n true,\n ['verify'],\n ),\n privateKey: await subtleCrypto.importKey(\n 'jwk',\n jwkKeyPair.privateKey,\n ConnectCrypto.algorithm,\n true,\n ['sign'],\n ),\n };\n }\n\n #sign = async (\n ...args: Parameters<SubtleCrypto['sign']>\n ): Promise<ArrayBuffer> => {\n return (await this.#subtleCrypto).sign(...args);\n };\n\n #verify = async (\n ...args: Parameters<SubtleCrypto['verify']>\n ): Promise<boolean> => {\n return (await this.#subtleCrypto).verify(...args);\n };\n\n async sign(data: Uint8Array): Promise<Uint8Array> {\n if (this.#keyPair?.privateKey) {\n const subtleCrypto = await this.#subtleCrypto;\n\n const arrayBuffer = await subtleCrypto.sign(\n ConnectCrypto.signAlgorithm,\n this.#keyPair.privateKey,\n data.buffer as ArrayBuffer,\n );\n\n return new Uint8Array(arrayBuffer);\n } else {\n throw new Error('No private key available');\n }\n }\n}\nexport * from './browser.js';\n// export * from './electron.js';\n","export type PKHDid = {\n networkId: string;\n chainId: number;\n address: `0x${string}`;\n};\n\nexport function parsePkhDid(did: string): PKHDid {\n const parts = did.split(':');\n if (!did.startsWith('did:pkh:') || parts.length !== 5) {\n throw new Error('Invalid pkh did');\n }\n const [, , networkId, chainIdStr, address] = parts;\n\n if (!address.startsWith('0x')) {\n throw new Error(`Invalid address: ${address}`);\n }\n\n const chainId = Number(chainIdStr);\n if (isNaN(chainId)) {\n throw new Error(`Invalid chain id: ${chainIdStr}`);\n }\n\n return {\n chainId,\n networkId,\n address: address as PKHDid['address'],\n };\n}\n","export interface IStorage<\n T extends Record<string, unknown> = Record<string, unknown>,\n> {\n get<Key extends keyof T>(key: Key): T[Key];\n set<Key extends keyof T>(key: Key, value?: T[Key]): void;\n delete<Key extends keyof T>(key: Key): void;\n}\n\nexport class BaseStorage<\n T extends Record<string, unknown> = Record<string, unknown>,\n> implements IStorage<T>\n{\n #store: IStorage<T>;\n #namespace: string;\n\n protected constructor(store: IStorage<T>, namespace: string) {\n this.#store = store;\n this.#namespace = namespace;\n }\n\n #buildKey<Key extends keyof T>(key: Key): Key {\n return `${this.#namespace}:${key.toString()}` as Key;\n }\n\n get<Key extends keyof T>(key: Key): T[Key] {\n return this.#store.get(this.#buildKey(key));\n }\n set<Key extends keyof T>(key: Key, value?: T[Key] | undefined): void {\n return this.#store.set(this.#buildKey(key), value);\n }\n delete<Key extends keyof T>(key: Key): void {\n return this.#store.delete(this.#buildKey(key));\n }\n}\n","import connectConfig from '#connect-config';\nimport { BaseStorage, type IStorage } from './index.js';\n\nconst store: IStorage = {\n get: function <Key extends string>(key: Key): unknown {\n const value = localStorage.getItem(key);\n if (value) {\n return JSON.parse(value);\n }\n return undefined;\n },\n set: function <Key extends string>(key: Key, value?: unknown): void {\n return value\n ? localStorage.setItem(key, JSON.stringify(value))\n : localStorage.removeItem(key);\n },\n delete: function <Key extends string>(key: Key): void {\n return localStorage.removeItem(key);\n },\n};\n\nexport class BrowserStorage<\n T extends Record<string, unknown> = Record<string, unknown>,\n> extends BaseStorage<T> {\n constructor(namespace: string) {\n super(\n store as IStorage<T>,\n `${connectConfig.routerBasename}:${namespace}`,\n );\n }\n}\n","import { Renown } from './index.js';\nimport { BrowserStorage } from '../storage/browser.js';\n\nexport function initRenownBrowser(connectId: string) {\n return new Renown(new BrowserStorage('renown'), connectId);\n}\n","import { logger } from 'document-drive';\nimport type { IStorage } from '../storage/index.js';\nimport { getEnsInfo } from '../viem.js';\nimport { RENOWN_URL } from './constants.js';\nimport {\n type PowerhouseVerifiableCredential,\n type RenownStorage,\n type User,\n} from './types.js';\nimport { parsePkhDid } from './utils.js';\n\nexport * from './browser.js';\nexport * from './constants.js';\nexport * from './types.js';\nexport type {\n PowerhouseVerifiableCredential,\n Unsubscribe,\n User,\n} from './types.js';\nexport * from './utils.js';\n\nexport class Renown {\n #baseUrl: string;\n #store: RenownStorage;\n #connectId: string;\n #eventEmitter = new EventTarget();\n\n constructor(store: IStorage, connectId: string, baseUrl = RENOWN_URL) {\n this.#store = store as RenownStorage;\n this.#connectId = connectId;\n this.#baseUrl = baseUrl;\n\n if (this.user) {\n this.login(this.user.did).catch(() => void 0);\n }\n }\n\n get user() {\n return this.#store.get('user');\n }\n\n #updateUser(user: User | undefined) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n user ? this.#store.set('user', user) : this.#store.delete('user');\n this.#eventEmitter.dispatchEvent(\n new CustomEvent('user', { detail: user }),\n );\n }\n\n set connectId(connectId: string) {\n this.#connectId = connectId;\n const user = this.user;\n\n this.#updateUser(undefined);\n\n // tries to login with new connectId\n if (user) {\n this.login(user.did).catch(e => {\n console.log('User no longer authenticated:', e);\n });\n }\n }\n\n async login(did: string): Promise<User> {\n try {\n const result = parsePkhDid(did);\n\n const credential = await this.#getCredential(\n result.address,\n result.chainId,\n this.#connectId,\n );\n if (!credential) {\n this.#updateUser(undefined);\n throw new Error('Credential not found');\n }\n const user: User = {\n ...result,\n did,\n credential,\n };\n\n getEnsInfo(user.address, user.chainId)\n .then(ens => {\n if (\n this.user?.address === user.address &&\n this.user.chainId === user.chainId\n ) {\n this.#updateUser({ ...this.user, ens });\n }\n })\n .catch(logger.error);\n\n this.#updateUser(user);\n return user;\n } catch (error) {\n logger.error(error);\n this.#updateUser(undefined);\n throw error;\n }\n }\n\n logout() {\n this.#updateUser(undefined);\n }\n\n on(event: 'user', listener: (user: User) => void) {\n const eventListener = ((e: CustomEvent<User>) => {\n listener(e.detail);\n }) as EventListener;\n\n this.#eventEmitter.addEventListener(event, eventListener);\n return () => {\n this.#eventEmitter.removeEventListener(event, eventListener);\n };\n }\n\n async #getCredential(\n address: string,\n chainId: number,\n connectId: string,\n ): Promise<PowerhouseVerifiableCredential | undefined> {\n if (!this.#baseUrl) {\n throw new Error('RENOWN_URL is not set');\n }\n const url = new URL(\n `/api/auth/credential?address=${encodeURIComponent(address)}&chainId=${encodeURIComponent(chainId)}&connectId=${encodeURIComponent(connectId)}`,\n this.#baseUrl,\n );\n const response = await fetch(url, {\n method: 'GET',\n });\n if (response.ok) {\n const result = (await response.json()) as {\n credential: PowerhouseVerifiableCredential;\n };\n return result.credential;\n } else {\n throw new Error('Failed to get credential');\n }\n }\n}\n"],"file":"assets/index-BBO5Ckrr.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"mappings":";;;;;;;AAWA,eAAe,qBACX,SACA,gBACF;AACE,QAAM,EAAE,qBAAqB;0DAAM,OAC/B,qBACJ;AAAA,+BAAAA,kBAAA;AAAA;AAEA,SAAO,MAAM,QAAQ;AAAA,IACjB;AAAA,IACA,iBAAiB,EAAE,eAAgB;AAAA,EACvC;AACJ;AAEO,SAAS,wBAAwB;AACpC,QAAM,QAAQ,kBAAkB;AAChC,QAAM,UAAU,6BAA6B;AAE7C,YAAU,MAAM;AACR,SAAC,SAAS,CAAC,SAAS;AACpB;AAAA;AAEJ,YAAQ,IAAI,2BAA2B;AACvC,yBAAqB,SAAS,KAAK,EAAE,MAAM,OAAO,KAAK;AAAA,KACxD,CAAC,OAAO,OAAO,CAAC;AAEZ;AACX;AAEgB,kCAAyB,EAAE,YAA+B;AAElE;AAAA,IAAC;AAAA;AAAA,MACG,cAAc,GAAG,cAAc,cAAc;AAAA,MAE5C;AAAA;AAAA,EACL;AAER","names":["processorFactory"],"ignoreList":[],"sources":["../../src/context/reactor-analytics.tsx"],"sourcesContent":["import connectConfig from '#connect-config';\nimport { type IAnalyticsStore } from '@powerhousedao/reactor-browser/analytics';\nimport {\n AnalyticsProvider,\n useAnalyticsStore,\n} from '@powerhousedao/reactor-browser/analytics/context';\nimport { logger } from 'document-drive';\nimport { type ProcessorManager } from 'document-drive/processors/processor-manager';\nimport { useEffect, type PropsWithChildren } from 'react';\nimport { useUnwrappedProcessorManager } from '../store/processors';\n\nasync function registerDiffAnalyzer(\n manager: ProcessorManager,\n analyticsStore: IAnalyticsStore,\n) {\n const { processorFactory } = await import(\n '@powerhousedao/diff-analyzer/processors'\n );\n\n return await manager.registerFactory(\n '@powerhousedao/diff-analyzer',\n processorFactory({ analyticsStore }),\n );\n}\n\nexport function DiffAnalyzerProcessor() {\n const store = useAnalyticsStore();\n const manager = useUnwrappedProcessorManager();\n\n useEffect(() => {\n if (!store || !manager) {\n return;\n }\n console.log('registering diff analyzer');\n registerDiffAnalyzer(manager, store).catch(logger.error);\n }, [store, manager]);\n\n return null;\n}\n\nexport function ReactorAnalyticsProvider({ children }: PropsWithChildren) {\n return (\n <AnalyticsProvider\n databaseName={`${connectConfig.routerBasename}:analytics`}\n >\n {children}\n </AnalyticsProvider>\n );\n}\n\nexport default ReactorAnalyticsProvider;\n"],"file":"assets/reactor-analytics-CrWekgnx.js"}
|