@chaoschain/sdk 0.2.2 → 0.2.3

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.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/providers/compute/index.ts"],"names":[],"mappings":";AAUO,IAAM,uBAAN,MAAsD;AAAA,EAC3D,MAAM,SAAA,CAAU,MAAA,EAAgB,MAAA,EAAmC;AACjE,IAAA,MAAM,IAAI,MAAM,sEAAsE,CAAA;AAAA,EACxF;AAAA,EAEA,MAAM,SAAA,GAA+B;AACnC,IAAA,OAAO,EAAC;AAAA,EACV;AACF","file":"index.mjs","sourcesContent":["/**\n * Compute Providers Export\n * Placeholder for future compute providers (0G, etc.)\n */\n\nimport { ComputeProvider } from '../../types';\n\n/**\n * Basic compute provider implementation\n */\nexport class LocalComputeProvider implements ComputeProvider {\n async inference(_model: string, _input: unknown): Promise<unknown> {\n throw new Error('Local compute not yet implemented. Use 0G Compute or other provider.');\n }\n\n async getModels(): Promise<string[]> {\n return [];\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/providers/storage/IPFSLocal.ts","../../../src/providers/storage/IPFSPinata.ts","../../../src/providers/storage/Irys.ts"],"names":["axios"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Local IPFS Storage Provider\n * Uses HTTP API client to interact with local IPFS daemon\n */\n\nimport axios from 'axios';\nimport { StorageProvider, UploadOptions, UploadResult } from '../../types';\n\nexport class IPFSLocalStorage implements StorageProvider {\n private apiUrl: string;\n private gatewayUrl: string;\n\n constructor(\n apiUrl: string = 'http://localhost:5001',\n gatewayUrl: string = 'http://localhost:8080'\n ) {\n this.apiUrl = apiUrl;\n this.gatewayUrl = gatewayUrl;\n }\n\n /**\n * Upload data to local IPFS\n */\n async upload(data: Buffer | string | object, options?: UploadOptions): Promise<UploadResult> {\n try {\n let buffer: Buffer;\n\n // Convert data to buffer\n if (Buffer.isBuffer(data)) {\n buffer = data;\n } else if (typeof data === 'string') {\n buffer = Buffer.from(data, 'utf-8');\n } else {\n buffer = Buffer.from(JSON.stringify(data), 'utf-8');\n }\n\n // Create form data\n const formData = new FormData();\n const blob = new Blob([buffer], { type: options?.mime || 'application/octet-stream' });\n formData.append('file', blob);\n\n // Upload to IPFS\n const response = await axios.post(`${this.apiUrl}/api/v0/add`, formData, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n params: {\n pin: options?.pin !== false, // Pin by default\n },\n });\n\n const cid = response.data.Hash;\n\n return {\n cid,\n uri: `ipfs://${cid}`,\n size: response.data.Size,\n timestamp: Date.now(),\n };\n } catch (error) {\n throw new Error(`Failed to upload to IPFS: ${(error as Error).message}`);\n }\n }\n\n /**\n * Download data from IPFS\n */\n async download(cid: string): Promise<Buffer> {\n try {\n const response = await axios.get(`${this.gatewayUrl}/ipfs/${cid}`, {\n responseType: 'arraybuffer',\n });\n\n return Buffer.from(response.data);\n } catch (error) {\n throw new Error(`Failed to download from IPFS: ${(error as Error).message}`);\n }\n }\n\n /**\n * Pin content\n */\n async pin(cid: string): Promise<void> {\n try {\n await axios.post(`${this.apiUrl}/api/v0/pin/add`, null, {\n params: { arg: cid },\n });\n } catch (error) {\n throw new Error(`Failed to pin content: ${(error as Error).message}`);\n }\n }\n\n /**\n * Unpin content\n */\n async unpin(cid: string): Promise<void> {\n try {\n await axios.post(`${this.apiUrl}/api/v0/pin/rm`, null, {\n params: { arg: cid },\n });\n } catch (error) {\n throw new Error(`Failed to unpin content: ${(error as Error).message}`);\n }\n }\n\n /**\n * Check if IPFS daemon is running\n */\n async isAvailable(): Promise<boolean> {\n try {\n await axios.post(`${this.apiUrl}/api/v0/version`);\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Get IPFS version\n */\n async getVersion(): Promise<string> {\n try {\n const response = await axios.post(`${this.apiUrl}/api/v0/version`);\n return response.data.Version;\n } catch (error) {\n throw new Error(`Failed to get IPFS version: ${(error as Error).message}`);\n }\n }\n}\n","/**\n * Pinata IPFS Storage Provider\n * Cloud-based IPFS pinning service\n */\n\nimport axios from 'axios';\nimport { StorageProvider, UploadOptions, UploadResult } from '../../types';\n\nexport interface PinataConfig {\n apiKey?: string;\n apiSecret?: string;\n jwt?: string;\n gatewayUrl?: string;\n}\n\nexport class PinataStorage implements StorageProvider {\n private apiKey?: string;\n private apiSecret?: string;\n private jwt?: string;\n private gatewayUrl: string;\n private apiUrl: string = 'https://api.pinata.cloud';\n\n constructor(config: PinataConfig) {\n this.apiKey = config.apiKey;\n this.apiSecret = config.apiSecret;\n this.jwt = config.jwt;\n this.gatewayUrl = config.gatewayUrl || 'https://gateway.pinata.cloud';\n\n if (!this.jwt && (!this.apiKey || !this.apiSecret)) {\n throw new Error('Pinata requires either JWT or API key/secret');\n }\n }\n\n /**\n * Get authorization headers\n */\n private getHeaders(): Record<string, string> {\n if (this.jwt) {\n return {\n Authorization: `Bearer ${this.jwt}`,\n };\n }\n return {\n pinata_api_key: this.apiKey!,\n pinata_secret_api_key: this.apiSecret!,\n };\n }\n\n /**\n * Upload data to Pinata\n */\n async upload(data: Buffer | string | object, options?: UploadOptions): Promise<UploadResult> {\n try {\n let buffer: Buffer;\n\n // Convert data to buffer\n if (Buffer.isBuffer(data)) {\n buffer = data;\n } else if (typeof data === 'string') {\n buffer = Buffer.from(data, 'utf-8');\n } else {\n buffer = Buffer.from(JSON.stringify(data), 'utf-8');\n }\n\n // Create form data\n const formData = new FormData();\n const blob = new Blob([buffer], { type: options?.mime || 'application/octet-stream' });\n formData.append('file', blob, 'file');\n\n // Add metadata if provided\n if (options?.metadata) {\n formData.append('pinataMetadata', JSON.stringify(options.metadata));\n }\n\n // Upload to Pinata\n const response = await axios.post(`${this.apiUrl}/pinning/pinFileToIPFS`, formData, {\n headers: {\n ...this.getHeaders(),\n 'Content-Type': 'multipart/form-data',\n },\n });\n\n const cid = response.data.IpfsHash;\n\n return {\n cid,\n uri: `ipfs://${cid}`,\n size: response.data.PinSize,\n timestamp: Date.now(),\n };\n } catch (error) {\n throw new Error(`Failed to upload to Pinata: ${(error as Error).message}`);\n }\n }\n\n /**\n * Download data from Pinata gateway\n */\n async download(cid: string): Promise<Buffer> {\n try {\n const response = await axios.get(`${this.gatewayUrl}/ipfs/${cid}`, {\n responseType: 'arraybuffer',\n });\n\n return Buffer.from(response.data);\n } catch (error) {\n throw new Error(`Failed to download from Pinata: ${(error as Error).message}`);\n }\n }\n\n /**\n * Pin existing IPFS content\n */\n async pin(cid: string): Promise<void> {\n try {\n await axios.post(\n `${this.apiUrl}/pinning/pinByHash`,\n {\n hashToPin: cid,\n },\n {\n headers: this.getHeaders(),\n }\n );\n } catch (error) {\n throw new Error(`Failed to pin content: ${(error as Error).message}`);\n }\n }\n\n /**\n * Unpin content\n */\n async unpin(cid: string): Promise<void> {\n try {\n await axios.delete(`${this.apiUrl}/pinning/unpin/${cid}`, {\n headers: this.getHeaders(),\n });\n } catch (error) {\n throw new Error(`Failed to unpin content: ${(error as Error).message}`);\n }\n }\n\n /**\n * Test authentication\n */\n async testAuthentication(): Promise<boolean> {\n try {\n await axios.get(`${this.apiUrl}/data/testAuthentication`, {\n headers: this.getHeaders(),\n });\n return true;\n } catch {\n return false;\n }\n }\n}\n","/**\n * Irys (Arweave) storage provider for ChaosChain SDK\n * Provides permanent storage via Arweave blockchain\n */\n\nimport { StorageProvider, UploadOptions, UploadResult } from '../../types';\n\nexport interface IrysConfig {\n walletKey: string;\n network?: 'mainnet' | 'devnet';\n token?: string;\n providerUrl?: string;\n}\n\nexport class IrysStorage implements StorageProvider {\n private _config: IrysConfig;\n\n constructor(config: IrysConfig) {\n this._config = {\n network: 'mainnet' as 'mainnet' | 'devnet',\n token: 'ethereum',\n ...config,\n };\n // Config stored for future use when @irys/sdk is installed\n console.log(`Irys storage configured for ${this._config.network}`);\n }\n\n /**\n * Upload data to Arweave via Irys\n * Note: Requires @irys/sdk to be installed\n */\n async upload(_data: Buffer | string | object, _options?: UploadOptions): Promise<UploadResult> {\n try {\n // This is a placeholder - actual implementation requires @irys/sdk\n throw new Error('Irys storage requires @irys/sdk to be installed: npm install @irys/sdk');\n\n // In production with @irys/sdk installed:\n // const Irys = require('@irys/sdk').default;\n // const irys = new Irys({\n // network: this._config.network,\n // token: this._config.token,\n // key: this._config.walletKey,\n // });\n //\n // const buffer = this.toBuffer(_data);\n // const tx = await irys.upload(buffer, {\n // tags: [{ name: 'Content-Type', value: _options?.contentType || 'application/json' }],\n // });\n //\n // return {\n // cid: tx.id,\n // uri: `https://arweave.net/${tx.id}`,\n // };\n } catch (error: any) {\n throw new Error(`Irys upload failed: ${error.message}`);\n }\n }\n\n /**\n * Download data from Arweave\n */\n async download(cid: string): Promise<Buffer> {\n try {\n const response = await fetch(`https://arweave.net/${cid}`);\n const data = await response.arrayBuffer();\n return Buffer.from(data);\n } catch (error: any) {\n throw new Error(`Irys download failed: ${error.message}`);\n }\n }\n\n /**\n * Pin - no-op for Arweave (content is permanent)\n */\n async pin(_cid: string): Promise<void> {\n // No-op: Arweave content is permanent\n }\n\n /**\n * Unpin - no-op for Arweave (content is permanent)\n */\n async unpin(_cid: string): Promise<void> {\n // No-op: Arweave content is permanent\n }\n}\n"]}