@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.
- package/README.md +46 -3
- package/dist/IPFSLocal-BCIADaOU.d.ts +38 -0
- package/dist/IPFSLocal-DqzD3Y7I.d.cts +38 -0
- package/dist/{index.mjs → index.cjs} +610 -131
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +2576 -0
- package/dist/index.d.ts +2576 -0
- package/dist/index.js +522 -208
- package/dist/index.js.map +1 -1
- package/dist/providers/compute/{index.mjs → index.cjs} +5 -3
- package/dist/providers/compute/index.cjs.map +1 -0
- package/dist/providers/compute/index.d.cts +17 -0
- package/dist/providers/compute/index.d.ts +17 -0
- package/dist/providers/compute/index.js +1 -3
- package/dist/providers/compute/index.js.map +1 -1
- package/dist/providers/storage/{index.mjs → index.cjs} +23 -15
- package/dist/providers/storage/index.cjs.map +1 -0
- package/dist/providers/storage/index.d.cts +82 -0
- package/dist/providers/storage/index.d.ts +82 -0
- package/dist/providers/storage/index.js +13 -21
- package/dist/providers/storage/index.js.map +1 -1
- package/dist/types-CEFAgoAM.d.cts +756 -0
- package/dist/types-CEFAgoAM.d.ts +756 -0
- package/package.json +10 -9
- package/dist/index.mjs.map +0 -1
- package/dist/providers/compute/index.mjs.map +0 -1
- package/dist/providers/storage/index.mjs.map +0 -1
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
1
3
|
// src/providers/compute/index.ts
|
|
2
4
|
var LocalComputeProvider = class {
|
|
3
5
|
async inference(_model, _input) {
|
|
@@ -8,6 +10,6 @@ var LocalComputeProvider = class {
|
|
|
8
10
|
}
|
|
9
11
|
};
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
//# sourceMappingURL=index.
|
|
13
|
-
//# sourceMappingURL=index.
|
|
13
|
+
exports.LocalComputeProvider = LocalComputeProvider;
|
|
14
|
+
//# sourceMappingURL=index.cjs.map
|
|
15
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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.cjs","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"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { o as ComputeProvider } from '../../types-CEFAgoAM.cjs';
|
|
2
|
+
import 'ethers';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Compute Providers Export
|
|
6
|
+
* Placeholder for future compute providers (0G, etc.)
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Basic compute provider implementation
|
|
11
|
+
*/
|
|
12
|
+
declare class LocalComputeProvider implements ComputeProvider {
|
|
13
|
+
inference(_model: string, _input: unknown): Promise<unknown>;
|
|
14
|
+
getModels(): Promise<string[]>;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { LocalComputeProvider };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { o as ComputeProvider } from '../../types-CEFAgoAM.js';
|
|
2
|
+
import 'ethers';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Compute Providers Export
|
|
6
|
+
* Placeholder for future compute providers (0G, etc.)
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Basic compute provider implementation
|
|
11
|
+
*/
|
|
12
|
+
declare class LocalComputeProvider implements ComputeProvider {
|
|
13
|
+
inference(_model: string, _input: unknown): Promise<unknown>;
|
|
14
|
+
getModels(): Promise<string[]>;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { LocalComputeProvider };
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
1
|
// src/providers/compute/index.ts
|
|
4
2
|
var LocalComputeProvider = class {
|
|
5
3
|
async inference(_model, _input) {
|
|
@@ -10,6 +8,6 @@ var LocalComputeProvider = class {
|
|
|
10
8
|
}
|
|
11
9
|
};
|
|
12
10
|
|
|
13
|
-
|
|
11
|
+
export { LocalComputeProvider };
|
|
14
12
|
//# sourceMappingURL=index.js.map
|
|
15
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/providers/compute/index.ts"],"names":[],"mappings":"
|
|
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.js","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,4 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var axios = require('axios');
|
|
4
|
+
|
|
5
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
|
+
|
|
7
|
+
var axios__default = /*#__PURE__*/_interopDefault(axios);
|
|
2
8
|
|
|
3
9
|
// src/providers/storage/IPFSLocal.ts
|
|
4
10
|
var IPFSLocalStorage = class {
|
|
@@ -24,7 +30,7 @@ var IPFSLocalStorage = class {
|
|
|
24
30
|
const formData = new FormData();
|
|
25
31
|
const blob = new Blob([buffer], { type: options?.mime || "application/octet-stream" });
|
|
26
32
|
formData.append("file", blob);
|
|
27
|
-
const response = await
|
|
33
|
+
const response = await axios__default.default.post(`${this.apiUrl}/api/v0/add`, formData, {
|
|
28
34
|
headers: {
|
|
29
35
|
"Content-Type": "multipart/form-data"
|
|
30
36
|
},
|
|
@@ -49,7 +55,7 @@ var IPFSLocalStorage = class {
|
|
|
49
55
|
*/
|
|
50
56
|
async download(cid) {
|
|
51
57
|
try {
|
|
52
|
-
const response = await
|
|
58
|
+
const response = await axios__default.default.get(`${this.gatewayUrl}/ipfs/${cid}`, {
|
|
53
59
|
responseType: "arraybuffer"
|
|
54
60
|
});
|
|
55
61
|
return Buffer.from(response.data);
|
|
@@ -62,7 +68,7 @@ var IPFSLocalStorage = class {
|
|
|
62
68
|
*/
|
|
63
69
|
async pin(cid) {
|
|
64
70
|
try {
|
|
65
|
-
await
|
|
71
|
+
await axios__default.default.post(`${this.apiUrl}/api/v0/pin/add`, null, {
|
|
66
72
|
params: { arg: cid }
|
|
67
73
|
});
|
|
68
74
|
} catch (error) {
|
|
@@ -74,7 +80,7 @@ var IPFSLocalStorage = class {
|
|
|
74
80
|
*/
|
|
75
81
|
async unpin(cid) {
|
|
76
82
|
try {
|
|
77
|
-
await
|
|
83
|
+
await axios__default.default.post(`${this.apiUrl}/api/v0/pin/rm`, null, {
|
|
78
84
|
params: { arg: cid }
|
|
79
85
|
});
|
|
80
86
|
} catch (error) {
|
|
@@ -86,7 +92,7 @@ var IPFSLocalStorage = class {
|
|
|
86
92
|
*/
|
|
87
93
|
async isAvailable() {
|
|
88
94
|
try {
|
|
89
|
-
await
|
|
95
|
+
await axios__default.default.post(`${this.apiUrl}/api/v0/version`);
|
|
90
96
|
return true;
|
|
91
97
|
} catch {
|
|
92
98
|
return false;
|
|
@@ -97,7 +103,7 @@ var IPFSLocalStorage = class {
|
|
|
97
103
|
*/
|
|
98
104
|
async getVersion() {
|
|
99
105
|
try {
|
|
100
|
-
const response = await
|
|
106
|
+
const response = await axios__default.default.post(`${this.apiUrl}/api/v0/version`);
|
|
101
107
|
return response.data.Version;
|
|
102
108
|
} catch (error) {
|
|
103
109
|
throw new Error(`Failed to get IPFS version: ${error.message}`);
|
|
@@ -152,7 +158,7 @@ var PinataStorage = class {
|
|
|
152
158
|
if (options?.metadata) {
|
|
153
159
|
formData.append("pinataMetadata", JSON.stringify(options.metadata));
|
|
154
160
|
}
|
|
155
|
-
const response = await
|
|
161
|
+
const response = await axios__default.default.post(`${this.apiUrl}/pinning/pinFileToIPFS`, formData, {
|
|
156
162
|
headers: {
|
|
157
163
|
...this.getHeaders(),
|
|
158
164
|
"Content-Type": "multipart/form-data"
|
|
@@ -174,7 +180,7 @@ var PinataStorage = class {
|
|
|
174
180
|
*/
|
|
175
181
|
async download(cid) {
|
|
176
182
|
try {
|
|
177
|
-
const response = await
|
|
183
|
+
const response = await axios__default.default.get(`${this.gatewayUrl}/ipfs/${cid}`, {
|
|
178
184
|
responseType: "arraybuffer"
|
|
179
185
|
});
|
|
180
186
|
return Buffer.from(response.data);
|
|
@@ -187,7 +193,7 @@ var PinataStorage = class {
|
|
|
187
193
|
*/
|
|
188
194
|
async pin(cid) {
|
|
189
195
|
try {
|
|
190
|
-
await
|
|
196
|
+
await axios__default.default.post(
|
|
191
197
|
`${this.apiUrl}/pinning/pinByHash`,
|
|
192
198
|
{
|
|
193
199
|
hashToPin: cid
|
|
@@ -205,7 +211,7 @@ var PinataStorage = class {
|
|
|
205
211
|
*/
|
|
206
212
|
async unpin(cid) {
|
|
207
213
|
try {
|
|
208
|
-
await
|
|
214
|
+
await axios__default.default.delete(`${this.apiUrl}/pinning/unpin/${cid}`, {
|
|
209
215
|
headers: this.getHeaders()
|
|
210
216
|
});
|
|
211
217
|
} catch (error) {
|
|
@@ -217,7 +223,7 @@ var PinataStorage = class {
|
|
|
217
223
|
*/
|
|
218
224
|
async testAuthentication() {
|
|
219
225
|
try {
|
|
220
|
-
await
|
|
226
|
+
await axios__default.default.get(`${this.apiUrl}/data/testAuthentication`, {
|
|
221
227
|
headers: this.getHeaders()
|
|
222
228
|
});
|
|
223
229
|
return true;
|
|
@@ -273,6 +279,8 @@ var IrysStorage = class {
|
|
|
273
279
|
}
|
|
274
280
|
};
|
|
275
281
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
282
|
+
exports.IPFSLocalStorage = IPFSLocalStorage;
|
|
283
|
+
exports.IrysStorage = IrysStorage;
|
|
284
|
+
exports.PinataStorage = PinataStorage;
|
|
285
|
+
//# sourceMappingURL=index.cjs.map
|
|
286
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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.cjs","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"]}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export { I as IPFSLocalStorage } from '../../IPFSLocal-DqzD3Y7I.cjs';
|
|
2
|
+
import { n as StorageProvider, U as UploadOptions, i as UploadResult } from '../../types-CEFAgoAM.cjs';
|
|
3
|
+
import 'ethers';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Pinata IPFS Storage Provider
|
|
7
|
+
* Cloud-based IPFS pinning service
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
interface PinataConfig {
|
|
11
|
+
apiKey?: string;
|
|
12
|
+
apiSecret?: string;
|
|
13
|
+
jwt?: string;
|
|
14
|
+
gatewayUrl?: string;
|
|
15
|
+
}
|
|
16
|
+
declare class PinataStorage implements StorageProvider {
|
|
17
|
+
private apiKey?;
|
|
18
|
+
private apiSecret?;
|
|
19
|
+
private jwt?;
|
|
20
|
+
private gatewayUrl;
|
|
21
|
+
private apiUrl;
|
|
22
|
+
constructor(config: PinataConfig);
|
|
23
|
+
/**
|
|
24
|
+
* Get authorization headers
|
|
25
|
+
*/
|
|
26
|
+
private getHeaders;
|
|
27
|
+
/**
|
|
28
|
+
* Upload data to Pinata
|
|
29
|
+
*/
|
|
30
|
+
upload(data: Buffer | string | object, options?: UploadOptions): Promise<UploadResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Download data from Pinata gateway
|
|
33
|
+
*/
|
|
34
|
+
download(cid: string): Promise<Buffer>;
|
|
35
|
+
/**
|
|
36
|
+
* Pin existing IPFS content
|
|
37
|
+
*/
|
|
38
|
+
pin(cid: string): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Unpin content
|
|
41
|
+
*/
|
|
42
|
+
unpin(cid: string): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Test authentication
|
|
45
|
+
*/
|
|
46
|
+
testAuthentication(): Promise<boolean>;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Irys (Arweave) storage provider for ChaosChain SDK
|
|
51
|
+
* Provides permanent storage via Arweave blockchain
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
interface IrysConfig {
|
|
55
|
+
walletKey: string;
|
|
56
|
+
network?: 'mainnet' | 'devnet';
|
|
57
|
+
token?: string;
|
|
58
|
+
providerUrl?: string;
|
|
59
|
+
}
|
|
60
|
+
declare class IrysStorage implements StorageProvider {
|
|
61
|
+
private _config;
|
|
62
|
+
constructor(config: IrysConfig);
|
|
63
|
+
/**
|
|
64
|
+
* Upload data to Arweave via Irys
|
|
65
|
+
* Note: Requires @irys/sdk to be installed
|
|
66
|
+
*/
|
|
67
|
+
upload(_data: Buffer | string | object, _options?: UploadOptions): Promise<UploadResult>;
|
|
68
|
+
/**
|
|
69
|
+
* Download data from Arweave
|
|
70
|
+
*/
|
|
71
|
+
download(cid: string): Promise<Buffer>;
|
|
72
|
+
/**
|
|
73
|
+
* Pin - no-op for Arweave (content is permanent)
|
|
74
|
+
*/
|
|
75
|
+
pin(_cid: string): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Unpin - no-op for Arweave (content is permanent)
|
|
78
|
+
*/
|
|
79
|
+
unpin(_cid: string): Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export { type IrysConfig, IrysStorage, type PinataConfig, PinataStorage };
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export { I as IPFSLocalStorage } from '../../IPFSLocal-BCIADaOU.js';
|
|
2
|
+
import { n as StorageProvider, U as UploadOptions, i as UploadResult } from '../../types-CEFAgoAM.js';
|
|
3
|
+
import 'ethers';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Pinata IPFS Storage Provider
|
|
7
|
+
* Cloud-based IPFS pinning service
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
interface PinataConfig {
|
|
11
|
+
apiKey?: string;
|
|
12
|
+
apiSecret?: string;
|
|
13
|
+
jwt?: string;
|
|
14
|
+
gatewayUrl?: string;
|
|
15
|
+
}
|
|
16
|
+
declare class PinataStorage implements StorageProvider {
|
|
17
|
+
private apiKey?;
|
|
18
|
+
private apiSecret?;
|
|
19
|
+
private jwt?;
|
|
20
|
+
private gatewayUrl;
|
|
21
|
+
private apiUrl;
|
|
22
|
+
constructor(config: PinataConfig);
|
|
23
|
+
/**
|
|
24
|
+
* Get authorization headers
|
|
25
|
+
*/
|
|
26
|
+
private getHeaders;
|
|
27
|
+
/**
|
|
28
|
+
* Upload data to Pinata
|
|
29
|
+
*/
|
|
30
|
+
upload(data: Buffer | string | object, options?: UploadOptions): Promise<UploadResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Download data from Pinata gateway
|
|
33
|
+
*/
|
|
34
|
+
download(cid: string): Promise<Buffer>;
|
|
35
|
+
/**
|
|
36
|
+
* Pin existing IPFS content
|
|
37
|
+
*/
|
|
38
|
+
pin(cid: string): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Unpin content
|
|
41
|
+
*/
|
|
42
|
+
unpin(cid: string): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Test authentication
|
|
45
|
+
*/
|
|
46
|
+
testAuthentication(): Promise<boolean>;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Irys (Arweave) storage provider for ChaosChain SDK
|
|
51
|
+
* Provides permanent storage via Arweave blockchain
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
interface IrysConfig {
|
|
55
|
+
walletKey: string;
|
|
56
|
+
network?: 'mainnet' | 'devnet';
|
|
57
|
+
token?: string;
|
|
58
|
+
providerUrl?: string;
|
|
59
|
+
}
|
|
60
|
+
declare class IrysStorage implements StorageProvider {
|
|
61
|
+
private _config;
|
|
62
|
+
constructor(config: IrysConfig);
|
|
63
|
+
/**
|
|
64
|
+
* Upload data to Arweave via Irys
|
|
65
|
+
* Note: Requires @irys/sdk to be installed
|
|
66
|
+
*/
|
|
67
|
+
upload(_data: Buffer | string | object, _options?: UploadOptions): Promise<UploadResult>;
|
|
68
|
+
/**
|
|
69
|
+
* Download data from Arweave
|
|
70
|
+
*/
|
|
71
|
+
download(cid: string): Promise<Buffer>;
|
|
72
|
+
/**
|
|
73
|
+
* Pin - no-op for Arweave (content is permanent)
|
|
74
|
+
*/
|
|
75
|
+
pin(_cid: string): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Unpin - no-op for Arweave (content is permanent)
|
|
78
|
+
*/
|
|
79
|
+
unpin(_cid: string): Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export { type IrysConfig, IrysStorage, type PinataConfig, PinataStorage };
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var axios = require('axios');
|
|
4
|
-
|
|
5
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
|
-
|
|
7
|
-
var axios__default = /*#__PURE__*/_interopDefault(axios);
|
|
1
|
+
import axios from 'axios';
|
|
8
2
|
|
|
9
3
|
// src/providers/storage/IPFSLocal.ts
|
|
10
4
|
var IPFSLocalStorage = class {
|
|
@@ -30,7 +24,7 @@ var IPFSLocalStorage = class {
|
|
|
30
24
|
const formData = new FormData();
|
|
31
25
|
const blob = new Blob([buffer], { type: options?.mime || "application/octet-stream" });
|
|
32
26
|
formData.append("file", blob);
|
|
33
|
-
const response = await
|
|
27
|
+
const response = await axios.post(`${this.apiUrl}/api/v0/add`, formData, {
|
|
34
28
|
headers: {
|
|
35
29
|
"Content-Type": "multipart/form-data"
|
|
36
30
|
},
|
|
@@ -55,7 +49,7 @@ var IPFSLocalStorage = class {
|
|
|
55
49
|
*/
|
|
56
50
|
async download(cid) {
|
|
57
51
|
try {
|
|
58
|
-
const response = await
|
|
52
|
+
const response = await axios.get(`${this.gatewayUrl}/ipfs/${cid}`, {
|
|
59
53
|
responseType: "arraybuffer"
|
|
60
54
|
});
|
|
61
55
|
return Buffer.from(response.data);
|
|
@@ -68,7 +62,7 @@ var IPFSLocalStorage = class {
|
|
|
68
62
|
*/
|
|
69
63
|
async pin(cid) {
|
|
70
64
|
try {
|
|
71
|
-
await
|
|
65
|
+
await axios.post(`${this.apiUrl}/api/v0/pin/add`, null, {
|
|
72
66
|
params: { arg: cid }
|
|
73
67
|
});
|
|
74
68
|
} catch (error) {
|
|
@@ -80,7 +74,7 @@ var IPFSLocalStorage = class {
|
|
|
80
74
|
*/
|
|
81
75
|
async unpin(cid) {
|
|
82
76
|
try {
|
|
83
|
-
await
|
|
77
|
+
await axios.post(`${this.apiUrl}/api/v0/pin/rm`, null, {
|
|
84
78
|
params: { arg: cid }
|
|
85
79
|
});
|
|
86
80
|
} catch (error) {
|
|
@@ -92,7 +86,7 @@ var IPFSLocalStorage = class {
|
|
|
92
86
|
*/
|
|
93
87
|
async isAvailable() {
|
|
94
88
|
try {
|
|
95
|
-
await
|
|
89
|
+
await axios.post(`${this.apiUrl}/api/v0/version`);
|
|
96
90
|
return true;
|
|
97
91
|
} catch {
|
|
98
92
|
return false;
|
|
@@ -103,7 +97,7 @@ var IPFSLocalStorage = class {
|
|
|
103
97
|
*/
|
|
104
98
|
async getVersion() {
|
|
105
99
|
try {
|
|
106
|
-
const response = await
|
|
100
|
+
const response = await axios.post(`${this.apiUrl}/api/v0/version`);
|
|
107
101
|
return response.data.Version;
|
|
108
102
|
} catch (error) {
|
|
109
103
|
throw new Error(`Failed to get IPFS version: ${error.message}`);
|
|
@@ -158,7 +152,7 @@ var PinataStorage = class {
|
|
|
158
152
|
if (options?.metadata) {
|
|
159
153
|
formData.append("pinataMetadata", JSON.stringify(options.metadata));
|
|
160
154
|
}
|
|
161
|
-
const response = await
|
|
155
|
+
const response = await axios.post(`${this.apiUrl}/pinning/pinFileToIPFS`, formData, {
|
|
162
156
|
headers: {
|
|
163
157
|
...this.getHeaders(),
|
|
164
158
|
"Content-Type": "multipart/form-data"
|
|
@@ -180,7 +174,7 @@ var PinataStorage = class {
|
|
|
180
174
|
*/
|
|
181
175
|
async download(cid) {
|
|
182
176
|
try {
|
|
183
|
-
const response = await
|
|
177
|
+
const response = await axios.get(`${this.gatewayUrl}/ipfs/${cid}`, {
|
|
184
178
|
responseType: "arraybuffer"
|
|
185
179
|
});
|
|
186
180
|
return Buffer.from(response.data);
|
|
@@ -193,7 +187,7 @@ var PinataStorage = class {
|
|
|
193
187
|
*/
|
|
194
188
|
async pin(cid) {
|
|
195
189
|
try {
|
|
196
|
-
await
|
|
190
|
+
await axios.post(
|
|
197
191
|
`${this.apiUrl}/pinning/pinByHash`,
|
|
198
192
|
{
|
|
199
193
|
hashToPin: cid
|
|
@@ -211,7 +205,7 @@ var PinataStorage = class {
|
|
|
211
205
|
*/
|
|
212
206
|
async unpin(cid) {
|
|
213
207
|
try {
|
|
214
|
-
await
|
|
208
|
+
await axios.delete(`${this.apiUrl}/pinning/unpin/${cid}`, {
|
|
215
209
|
headers: this.getHeaders()
|
|
216
210
|
});
|
|
217
211
|
} catch (error) {
|
|
@@ -223,7 +217,7 @@ var PinataStorage = class {
|
|
|
223
217
|
*/
|
|
224
218
|
async testAuthentication() {
|
|
225
219
|
try {
|
|
226
|
-
await
|
|
220
|
+
await axios.get(`${this.apiUrl}/data/testAuthentication`, {
|
|
227
221
|
headers: this.getHeaders()
|
|
228
222
|
});
|
|
229
223
|
return true;
|
|
@@ -279,8 +273,6 @@ var IrysStorage = class {
|
|
|
279
273
|
}
|
|
280
274
|
};
|
|
281
275
|
|
|
282
|
-
|
|
283
|
-
exports.IrysStorage = IrysStorage;
|
|
284
|
-
exports.PinataStorage = PinataStorage;
|
|
276
|
+
export { IPFSLocalStorage, IrysStorage, PinataStorage };
|
|
285
277
|
//# sourceMappingURL=index.js.map
|
|
286
278
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
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.js","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"]}
|
|
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.js","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"]}
|