@lumeweb/pinner 0.1.0 → 0.1.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.
Files changed (180) hide show
  1. package/README.md +197 -18
  2. package/dist/esm/_virtual/{rolldown_runtime.js → _rolldown/runtime.js} +2 -2
  3. package/dist/esm/adapters/pinata/index.d.ts +4 -4
  4. package/dist/esm/adapters/pinata/index.js +6 -3
  5. package/dist/esm/adapters/pinata/legacy/adapter.d.ts +73 -0
  6. package/dist/esm/adapters/pinata/legacy/adapter.js +124 -0
  7. package/dist/esm/adapters/pinata/legacy/adapter.js.map +1 -0
  8. package/dist/esm/adapters/pinata/legacy/index.d.ts +1 -0
  9. package/dist/esm/adapters/pinata/legacy/index.js +1 -0
  10. package/dist/esm/adapters/pinata/shared/index.d.ts +1 -0
  11. package/dist/esm/adapters/pinata/shared/index.js +1 -0
  12. package/dist/esm/adapters/pinata/shared/types.d.ts +218 -0
  13. package/dist/esm/adapters/pinata/shared/utils.d.ts +1 -0
  14. package/dist/esm/adapters/pinata/shared/utils.js +78 -0
  15. package/dist/esm/adapters/pinata/shared/utils.js.map +1 -0
  16. package/dist/esm/adapters/pinata/v2/adapter-interface.d.ts +197 -0
  17. package/dist/esm/adapters/pinata/v2/adapter.d.ts +16 -0
  18. package/dist/esm/adapters/pinata/v2/adapter.js +636 -0
  19. package/dist/esm/adapters/pinata/v2/adapter.js.map +1 -0
  20. package/dist/esm/adapters/pinata/v2/index.d.ts +3 -0
  21. package/dist/esm/adapters/pinata/v2/index.js +1 -0
  22. package/dist/esm/adapters/pinata/v2/types.d.ts +308 -0
  23. package/dist/esm/api/generated/schemas/iPNSKeyListResponse.d.ts +46 -0
  24. package/dist/esm/api/generated/schemas/iPNSKeyListResponseResponse.d.ts +10 -0
  25. package/dist/esm/api/generated/schemas/iPNSKeyRequest.d.ts +43 -0
  26. package/dist/esm/api/generated/schemas/iPNSKeyResponse.d.ts +46 -0
  27. package/dist/esm/api/generated/schemas/iPNSPublishRequest.d.ts +44 -0
  28. package/dist/esm/api/generated/schemas/iPNSPublishResponse.d.ts +46 -0
  29. package/dist/esm/api/generated/schemas/iPNSResolveResponse.d.ts +47 -0
  30. package/dist/esm/api/generated/schemas/sSLStatusInfo.d.ts +45 -0
  31. package/dist/esm/api/generated/schemas/websiteConfigResponse.d.ts +43 -0
  32. package/dist/esm/api/generated/schemas/websiteItem.d.ts +23 -0
  33. package/dist/esm/api/generated/schemas/websiteItemResponse.d.ts +10 -0
  34. package/dist/esm/api/generated/schemas/websiteRequest.d.ts +45 -0
  35. package/dist/esm/api/generated/schemas/websiteResponse.d.ts +23 -0
  36. package/dist/esm/api/generated/schemas/websiteUpdateRequest.d.ts +45 -0
  37. package/dist/esm/api/generated/schemas/websiteValidateResponse.d.ts +45 -0
  38. package/dist/esm/api/ipns.d.ts +28 -0
  39. package/dist/esm/api/ipns.js +83 -0
  40. package/dist/esm/api/ipns.js.map +1 -0
  41. package/dist/esm/api/websites.d.ts +48 -0
  42. package/dist/esm/api/websites.js +168 -0
  43. package/dist/esm/api/websites.js.map +1 -0
  44. package/dist/esm/blockstore/unstorage-base.d.ts +4 -1
  45. package/dist/esm/blockstore/unstorage-base.js +3 -3
  46. package/dist/esm/blockstore/unstorage-base.js.map +1 -1
  47. package/dist/esm/blockstore/unstorage.d.ts +3 -31
  48. package/dist/esm/blockstore/unstorage.js +2 -2
  49. package/dist/esm/blockstore/unstorage.js.map +1 -1
  50. package/dist/esm/encoder/base64.js.map +1 -1
  51. package/dist/esm/encoder/csv/row-formatter.js.map +1 -1
  52. package/dist/esm/encoder/csv.js.map +1 -1
  53. package/dist/esm/encoder/json.js.map +1 -1
  54. package/dist/esm/encoder/text.js.map +1 -1
  55. package/dist/esm/encoder/url.js.map +1 -1
  56. package/dist/esm/index.d.ts +7 -5
  57. package/dist/esm/index.js +5 -2
  58. package/dist/esm/pin/client.js +8 -5
  59. package/dist/esm/pin/client.js.map +1 -1
  60. package/dist/esm/pinner.d.ts +16 -0
  61. package/dist/esm/pinner.js +24 -0
  62. package/dist/esm/pinner.js.map +1 -1
  63. package/dist/esm/types/constants.js +6 -2
  64. package/dist/esm/types/constants.js.map +1 -1
  65. package/dist/esm/types/pin.d.ts +4 -1
  66. package/dist/esm/types/type-guards.d.ts +0 -1
  67. package/dist/esm/types/upload.d.ts +0 -1
  68. package/dist/esm/upload/base-upload.js +3 -3
  69. package/dist/esm/upload/base-upload.js.map +1 -1
  70. package/dist/esm/upload/builder.d.ts +0 -1
  71. package/dist/esm/upload/car.js +3 -3
  72. package/dist/esm/upload/car.js.map +1 -1
  73. package/dist/esm/upload/manager.js +5 -5
  74. package/dist/esm/upload/manager.js.map +1 -1
  75. package/dist/esm/upload/normalize.js +1 -1
  76. package/dist/esm/upload/normalize.js.map +1 -1
  77. package/dist/esm/utils/stream.d.ts +0 -3
  78. package/dist/esm/utils/tus-patch.js +2 -2
  79. package/dist/esm/utils/tus-patch.js.map +1 -1
  80. package/dist/esm/utils/validation.js.map +1 -1
  81. package/package.json +33 -32
  82. package/dist/cjs/_virtual/rolldown_runtime.cjs +0 -29
  83. package/dist/cjs/adapters/pinata/adapter.cjs +0 -88
  84. package/dist/cjs/adapters/pinata/adapter.cjs.map +0 -1
  85. package/dist/cjs/adapters/pinata/adapter.d.cts +0 -35
  86. package/dist/cjs/adapters/pinata/builder.cjs +0 -194
  87. package/dist/cjs/adapters/pinata/builder.cjs.map +0 -1
  88. package/dist/cjs/adapters/pinata/index.cjs +0 -3
  89. package/dist/cjs/adapters/pinata/list-builder.cjs +0 -52
  90. package/dist/cjs/adapters/pinata/list-builder.cjs.map +0 -1
  91. package/dist/cjs/blockstore/index.cjs +0 -2
  92. package/dist/cjs/blockstore/unstorage-base.cjs +0 -240
  93. package/dist/cjs/blockstore/unstorage-base.cjs.map +0 -1
  94. package/dist/cjs/blockstore/unstorage-base.d.cts +0 -23
  95. package/dist/cjs/blockstore/unstorage.cjs +0 -39
  96. package/dist/cjs/blockstore/unstorage.cjs.map +0 -1
  97. package/dist/cjs/blockstore/unstorage.d.cts +0 -36
  98. package/dist/cjs/config.d.cts +0 -51
  99. package/dist/cjs/encoder/base64.cjs +0 -38
  100. package/dist/cjs/encoder/base64.cjs.map +0 -1
  101. package/dist/cjs/encoder/csv/csv-formatter.cjs +0 -81
  102. package/dist/cjs/encoder/csv/csv-formatter.cjs.map +0 -1
  103. package/dist/cjs/encoder/csv/field-formatter.cjs +0 -76
  104. package/dist/cjs/encoder/csv/field-formatter.cjs.map +0 -1
  105. package/dist/cjs/encoder/csv/row-formatter.cjs +0 -159
  106. package/dist/cjs/encoder/csv/row-formatter.cjs.map +0 -1
  107. package/dist/cjs/encoder/csv.cjs +0 -44
  108. package/dist/cjs/encoder/csv.cjs.map +0 -1
  109. package/dist/cjs/encoder/error.cjs +0 -19
  110. package/dist/cjs/encoder/error.cjs.map +0 -1
  111. package/dist/cjs/encoder/index.cjs +0 -6
  112. package/dist/cjs/encoder/json.cjs +0 -36
  113. package/dist/cjs/encoder/json.cjs.map +0 -1
  114. package/dist/cjs/encoder/text.cjs +0 -35
  115. package/dist/cjs/encoder/text.cjs.map +0 -1
  116. package/dist/cjs/encoder/url.cjs +0 -39
  117. package/dist/cjs/encoder/url.cjs.map +0 -1
  118. package/dist/cjs/errors/index.cjs +0 -104
  119. package/dist/cjs/errors/index.cjs.map +0 -1
  120. package/dist/cjs/errors/index.d.cts +0 -47
  121. package/dist/cjs/index.cjs +0 -42
  122. package/dist/cjs/index.d.cts +0 -14
  123. package/dist/cjs/pin/client.cjs +0 -96
  124. package/dist/cjs/pin/client.cjs.map +0 -1
  125. package/dist/cjs/pin/index.cjs +0 -1
  126. package/dist/cjs/pinner.cjs +0 -126
  127. package/dist/cjs/pinner.cjs.map +0 -1
  128. package/dist/cjs/pinner.d.cts +0 -77
  129. package/dist/cjs/types/constants.cjs +0 -34
  130. package/dist/cjs/types/constants.cjs.map +0 -1
  131. package/dist/cjs/types/mime-types.cjs +0 -11
  132. package/dist/cjs/types/mime-types.cjs.map +0 -1
  133. package/dist/cjs/types/mime-types.d.cts +0 -7
  134. package/dist/cjs/types/pin.d.cts +0 -74
  135. package/dist/cjs/types/pinata.d.cts +0 -99
  136. package/dist/cjs/types/type-guards.cjs +0 -20
  137. package/dist/cjs/types/type-guards.cjs.map +0 -1
  138. package/dist/cjs/types/type-guards.d.cts +0 -15
  139. package/dist/cjs/types/upload.cjs +0 -18
  140. package/dist/cjs/types/upload.cjs.map +0 -1
  141. package/dist/cjs/types/upload.d.cts +0 -189
  142. package/dist/cjs/upload/base-upload.cjs +0 -135
  143. package/dist/cjs/upload/base-upload.cjs.map +0 -1
  144. package/dist/cjs/upload/builder.cjs +0 -174
  145. package/dist/cjs/upload/builder.cjs.map +0 -1
  146. package/dist/cjs/upload/builder.d.cts +0 -60
  147. package/dist/cjs/upload/car.cjs +0 -129
  148. package/dist/cjs/upload/car.cjs.map +0 -1
  149. package/dist/cjs/upload/car.d.cts +0 -19
  150. package/dist/cjs/upload/constants.cjs +0 -9
  151. package/dist/cjs/upload/constants.cjs.map +0 -1
  152. package/dist/cjs/upload/index.cjs +0 -8
  153. package/dist/cjs/upload/manager.cjs +0 -249
  154. package/dist/cjs/upload/manager.cjs.map +0 -1
  155. package/dist/cjs/upload/manager.d.cts +0 -35
  156. package/dist/cjs/upload/normalize.cjs +0 -28
  157. package/dist/cjs/upload/normalize.cjs.map +0 -1
  158. package/dist/cjs/upload/tus-upload.cjs +0 -74
  159. package/dist/cjs/upload/tus-upload.cjs.map +0 -1
  160. package/dist/cjs/upload/xhr-upload.cjs +0 -41
  161. package/dist/cjs/upload/xhr-upload.cjs.map +0 -1
  162. package/dist/cjs/utils/env.cjs +0 -12
  163. package/dist/cjs/utils/env.cjs.map +0 -1
  164. package/dist/cjs/utils/stream.cjs +0 -141
  165. package/dist/cjs/utils/stream.cjs.map +0 -1
  166. package/dist/cjs/utils/stream.d.cts +0 -23
  167. package/dist/cjs/utils/tus-patch.cjs +0 -50
  168. package/dist/cjs/utils/tus-patch.cjs.map +0 -1
  169. package/dist/cjs/utils/validation.cjs +0 -62
  170. package/dist/cjs/utils/validation.cjs.map +0 -1
  171. package/dist/esm/adapters/pinata/adapter.d.ts +0 -35
  172. package/dist/esm/adapters/pinata/adapter.js +0 -87
  173. package/dist/esm/adapters/pinata/adapter.js.map +0 -1
  174. package/dist/esm/adapters/pinata/builder.d.ts +0 -1
  175. package/dist/esm/adapters/pinata/builder.js +0 -187
  176. package/dist/esm/adapters/pinata/builder.js.map +0 -1
  177. package/dist/esm/adapters/pinata/list-builder.d.ts +0 -1
  178. package/dist/esm/adapters/pinata/list-builder.js +0 -51
  179. package/dist/esm/adapters/pinata/list-builder.js.map +0 -1
  180. package/dist/esm/types/pinata.d.ts +0 -99
package/README.md CHANGED
@@ -7,6 +7,7 @@ A TypeScript library for uploading files to IPFS and managing pinning operations
7
7
  - **Multiple Upload Methods**: TUS resumable uploads, XHR uploads, and direct CAR file uploads
8
8
  - **Directory Support**: Upload multiple files as a directory to IPFS
9
9
  - **Pin Management**: Add, list, remove, and check status of pinned content
10
+ - **Websites & IPNS**: Manage decentralized websites and IPNS name resolution entries
10
11
  - **Custom Blockstore**: Flexible storage backend using unstorage (IndexedDB, filesystem, Redis, etc.)
11
12
  - **Adapters**: Built-in Pinata adapter with extensible adapter pattern
12
13
  - **Encoders**: Support for CSV, JSON, text, base64, and URL encoding
@@ -160,6 +161,157 @@ operation.on("error", (error) => {
160
161
  const result = await operation.result;
161
162
  ```
162
163
 
164
+ ## Websites & IPNS APIs
165
+
166
+ The Pinner client supports managing Websites and IPNS (InterPlanetary Name System) entries for decentralized website hosting and name resolution.
167
+
168
+ ### Websites API
169
+
170
+ The WebsitesClient provides methods for managing website configurations that link domains to IPFS or IPNS content.
171
+
172
+ #### List Websites
173
+
174
+ ```typescript
175
+ // List all websites
176
+ const websites = await pinner.websites.listWebsites();
177
+
178
+ websites.data.forEach(website => {
179
+ console.log("ID:", website.id);
180
+ console.log("Domain:", website.domain);
181
+ console.log("Target Type:", website.target_type); // "ipfs" or "ipns"
182
+ console.log("Target Hash:", website.target_hash);
183
+ console.log("Status:", website.status);
184
+ console.log("Created:", website.created);
185
+ });
186
+ ```
187
+
188
+ #### Get Website by ID
189
+
190
+ ```typescript
191
+ const website = await pinner.websites.getWebsite(websiteId);
192
+ console.log("Website details:", website);
193
+ ```
194
+
195
+ #### Create Website
196
+
197
+ ```typescript
198
+ // Create a new website with IPFS target
199
+ const website = await pinner.websites.createWebsite({
200
+ domain: "example.com",
201
+ target_type: "ipfs",
202
+ target_hash: "Qm..."
203
+ });
204
+
205
+ // Create a new website with IPNS target
206
+ const website = await pinner.websites.createWebsite({
207
+ domain: "example.com",
208
+ target_type: "ipns",
209
+ target_hash: "k51qzi5uqu5dj14p8d8q8y4e8y4e8y4e8y4e8y4e8y4e8y4e8y4e8y4e8y4e"
210
+ });
211
+ ```
212
+
213
+ #### Update Website
214
+
215
+ ```typescript
216
+ // Update website details (domain, target_type, or target_hash)
217
+ const website = await pinner.websites.updateWebsite(websiteId, {
218
+ domain: "new-domain.com",
219
+ target_type: "ipfs",
220
+ target_hash: "QmNew..."
221
+ });
222
+ ```
223
+
224
+ #### Delete Website
225
+
226
+ ```typescript
227
+ await pinner.websites.deleteWebsite(websiteId);
228
+ ```
229
+
230
+ #### Validate Website DNS
231
+
232
+ ```typescript
233
+ // Trigger DNS TXT record validation for a website domain
234
+ const validation = await pinner.websites.validateWebsite(websiteId);
235
+ console.log("Valid:", validation.valid);
236
+ console.log("Message:", validation.message);
237
+ ```
238
+
239
+ ### IPNS API
240
+
241
+ The IpnsClient provides methods for managing IPNS keys and publishing content to IPNS names.
242
+
243
+ #### List IPNS Keys
244
+
245
+ ```typescript
246
+ // List all IPNS keys
247
+ const keys = await pinner.ipns.listKeys();
248
+
249
+ keys.forEach(key => {
250
+ console.log("ID:", key.id);
251
+ console.log("Name:", key.name);
252
+ console.log("IPNS Name:", key.ipns_name);
253
+ console.log("Peer ID:", key.peer_id);
254
+ console.log("Created:", key.created);
255
+ });
256
+ ```
257
+
258
+ #### Get IPNS Key by ID
259
+
260
+ ```typescript
261
+ const key = await pinner.ipns.getKey(keyId);
262
+ console.log("IPNS key details:", key);
263
+ ```
264
+
265
+ #### Create IPNS Key
266
+
267
+ ```typescript
268
+ // Create a new IPNS key
269
+ const key = await pinner.ipns.createKey({
270
+ name: "my-website",
271
+ key: "optional-key-value"
272
+ });
273
+ ```
274
+
275
+ #### Delete IPNS Key
276
+
277
+ ```typescript
278
+ await pinner.ipns.deleteKey(keyId);
279
+ ```
280
+
281
+ #### Publish to IPNS
282
+
283
+ ```typescript
284
+ // Publish a CID to an IPNS key
285
+ const result = await pinner.ipns.publish({
286
+ key_id: keyId,
287
+ cid: "Qm...",
288
+ ttl: "24h" // optional time-to-live
289
+ });
290
+
291
+ console.log("Published:", result.name);
292
+ console.log("Value:", result.value);
293
+ console.log("Sequence:", result.sequence);
294
+ ```
295
+
296
+ #### Republish IPNS Records
297
+
298
+ ```typescript
299
+ // Manually trigger IPNS record republishing for all keys
300
+ await pinner.ipns.republish();
301
+ ```
302
+
303
+ #### Resolve IPNS Name
304
+
305
+ ```typescript
306
+ // Resolve an IPNS name to its current CID
307
+ const result = await pinner.ipns.resolve("k51qzi5uqu5dj14p8d8q8y4e8y4e8y4e8y4e8y4e8y4e8y4e8y4e8y4e8y4e8y4e");
308
+
309
+ console.log("Value:", result.value);
310
+ console.log("Path:", result.path);
311
+ console.log("Sequence:", result.sequence);
312
+ console.log("Expired:", result.expired);
313
+ ```
314
+
163
315
  ## Pin Management
164
316
 
165
317
  ### Pin by CID
@@ -293,22 +445,39 @@ See [blockstore/README.md](./src/blockstore/README.md) for detailed blockstore d
293
445
 
294
446
  ## Adapters
295
447
 
296
- ### Pinata Adapter
448
+ ### Pinata Adapters
297
449
 
298
- The Pinata adapter provides a Pinata SDK-compatible interface for the Pinner client, making it easy to migrate from Pinata SDK with minimal code changes.
450
+ The Pinata adapters provide Pinata SDK API compatibility for the Pinner client, allowing applications written for the Pinata SDK to work with Lume's IPFS pinning infrastructure with minimal code changes.
451
+
452
+ **Attribution**: These adapters include TypeScript type definitions and API interfaces adapted from the Pinata SDK for compatibility purposes. The original Pinata SDK is available at:
453
+ - **Pinata SDK 2.x**: https://github.com/PinataCloud/pinata/commit/cdc0c06116aaadaf7c4b287a2673cd23b6ba1125
454
+ - **Pinata SDK 1.x**: https://github.com/PinataCloud/pinata/commit/c141177ff3036e46fa7b95fcc68c159b58817836
455
+
456
+ The adapters provide Pinata SDK API compatibility but route all operations through Lume's IPFS pinning infrastructure. They do NOT use Pinata's servers or services.
457
+
458
+ #### Available Adapters
459
+
460
+ - **V2 Adapter** (`pinataAdapter`): Compatible with Pinata SDK 2.x API (recommended, latest)
461
+ - **Legacy Adapter** (`pinataLegacyAdapter`): Compatible with Pinata SDK 1.x API
462
+
463
+ See [adapters/README.md](./src/adapters/README.md) for comprehensive documentation including migration guides, feature support tables, and detailed examples.
299
464
 
300
465
  #### Setup
301
466
 
302
467
  ```typescript
303
- import { Pinner, pinataAdapter } from "@lumeweb/pinner";
468
+ import { Pinner, pinataAdapter, pinataLegacyAdapter } from "@lumeweb/pinner";
304
469
 
305
470
  // Initialize Pinner
306
471
  const pinner = new Pinner({
307
- jwt: "your-jwt-token"
472
+ jwt: "your-jwt-token",
473
+ endpoint: "https://your-pinning-service-endpoint.com"
308
474
  });
309
475
 
310
- // Create Pinata adapter
476
+ // Create Pinata V2 adapter (recommended)
311
477
  const pinata = pinataAdapter(pinner);
478
+
479
+ // Or use the legacy adapter
480
+ const pinataLegacy = pinataLegacyAdapter(pinner);
312
481
  ```
313
482
 
314
483
  #### Upload Methods
@@ -319,12 +488,12 @@ The Pinata adapter provides multiple upload methods with a fluent builder patter
319
488
 
320
489
  ```typescript
321
490
  // Simple file upload
322
- const result = await pinata.upload.file(file).execute();
491
+ const result = await pinata.upload.public.file(file).execute();
323
492
  console.log("CID:", result.IpfsHash);
324
493
  console.log("Size:", result.PinSize);
325
494
 
326
495
  // Upload with metadata
327
- const result = await pinata.upload.file(file)
496
+ const result = await pinata.upload.public.file(file)
328
497
  .name("My File")
329
498
  .keyvalues({ key: "value" })
330
499
  .execute();
@@ -338,7 +507,7 @@ const files = [
338
507
  new File(["content2"], "file2.txt")
339
508
  ];
340
509
 
341
- const result = await pinata.upload.fileArray(files)
510
+ const result = await pinata.upload.public.fileArray(files)
342
511
  .name("My Directory")
343
512
  .keyvalues({ type: "directory" })
344
513
  .execute();
@@ -349,7 +518,7 @@ const result = await pinata.upload.fileArray(files)
349
518
  ```typescript
350
519
  const data = { foo: "bar", number: 42 };
351
520
 
352
- const result = await pinata.upload.json(data)
521
+ const result = await pinata.upload.public.json(data)
353
522
  .name("data.json")
354
523
  .keyvalues({ format: "json" })
355
524
  .execute();
@@ -360,7 +529,7 @@ const result = await pinata.upload.json(data)
360
529
  ```typescript
361
530
  const base64String = "SGVsbG8sIHdvcmxkIQ==";
362
531
 
363
- const result = await pinata.upload.base64(base64String)
532
+ const result = await pinata.upload.public.base64(base64String)
364
533
  .name("base64-file.txt")
365
534
  .execute();
366
535
  ```
@@ -368,7 +537,7 @@ const result = await pinata.upload.base64(base64String)
368
537
  ##### Upload from URL
369
538
 
370
539
  ```typescript
371
- const result = await pinata.upload.url("https://example.com/data.json")
540
+ const result = await pinata.upload.public.url("https://example.com/data.json")
372
541
  .name("downloaded-file.json")
373
542
  .execute();
374
543
  ```
@@ -377,10 +546,10 @@ const result = await pinata.upload.url("https://example.com/data.json")
377
546
 
378
547
  ```typescript
379
548
  // Pin existing content
380
- await pinata.upload.cid("Qm...").execute();
549
+ await pinata.upload.public.cid("Qm...").execute();
381
550
 
382
551
  // Pin with metadata
383
- await pinata.upload.cid("Qm...")
552
+ await pinata.upload.public.cid("Qm...")
384
553
  .name("Existing Content")
385
554
  .keyvalues({ source: "external" })
386
555
  .execute();
@@ -438,10 +607,10 @@ await pinata.setPinMetadata("Qm...", {
438
607
 
439
608
  ```typescript
440
609
  // List all files
441
- const files = await pinata.files.list().execute();
610
+ const files = await pinata.files.public.list().execute();
442
611
 
443
612
  // List with pagination
444
- const files = await pinata.files.list()
613
+ const files = await pinata.files.public.list()
445
614
  .limit(10)
446
615
  .pageToken("next-page-token")
447
616
  .execute();
@@ -458,7 +627,7 @@ files.forEach(file => {
458
627
  ##### Get File by ID
459
628
 
460
629
  ```typescript
461
- const file = await pinata.files.get("Qm...");
630
+ const file = await pinata.files.public.get("Qm...");
462
631
  console.log("File details:", file);
463
632
  ```
464
633
 
@@ -484,7 +653,7 @@ import { Pinner, pinataAdapter } from '@lumeweb/pinner';
484
653
  const pinner = new Pinner({ jwt: 'your-jwt-token' });
485
654
  const pinata = pinataAdapter(pinner);
486
655
 
487
- const result = await pinata.upload.file(file)
656
+ const result = await pinata.upload.public.file(file)
488
657
  .name('My File')
489
658
  .execute();
490
659
  ```
@@ -682,6 +851,16 @@ import type {
682
851
  RemoteLsOptions
683
852
  } from "@lumeweb/pinner";
684
853
 
854
+ // Websites & IPNS APIs
855
+ import type {
856
+ Website,
857
+ WebsiteCreateRequest,
858
+ WebsiteUpdateRequest,
859
+ IPNSEntry,
860
+ IPNSEntryCreateRequest,
861
+ IPNSEntryUpdateRequest
862
+ } from "@lumeweb/pinner";
863
+
685
864
  // Blockstore
686
865
  import {
687
866
  createBlockstore,
@@ -690,7 +869,7 @@ import {
690
869
  } from "@lumeweb/pinner";
691
870
 
692
871
  // Adapters
693
- import { pinataAdapter } from "@lumeweb/pinner/adapters/pinata";
872
+ import { pinataAdapter, pinataLegacyAdapter } from "@lumeweb/pinner";
694
873
 
695
874
  // Blockstore module
696
875
  import { UnstorageBlockstore } from "@lumeweb/pinner/blockstore";
@@ -1,7 +1,7 @@
1
- //#region rolldown:runtime
1
+ //#region \0rolldown/runtime.js
2
2
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { get: (a, b) => (typeof require !== "undefined" ? require : a)[b] }) : x)(function(x) {
3
3
  if (typeof require !== "undefined") return require.apply(this, arguments);
4
- throw Error("Calling `require` for \"" + x + "\" in an environment that doesn't expose the `require` function.");
4
+ throw Error("Calling `require` for \"" + x + "\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.");
5
5
  });
6
6
 
7
7
  //#endregion
@@ -1,4 +1,4 @@
1
- import { PinByHashOptions, PinataFile, PinataListBuilder, PinataMetadata, PinataMetadataOptions, PinataPin, PinataUploadBuilder, PinataUploadResult } from "../../types/pinata.js";
2
- import { PinataAdapter, pinataAdapter } from "./adapter.js";
3
- import "./builder.js";
4
- import "./list-builder.js";
1
+ import { PinataAdapter } from "./v2/adapter-interface.js";
2
+ import { pinataAdapter } from "./v2/adapter.js";
3
+ import { AnalyticsQuery, FileListItem, FileListQuery, FileListResponse, PinJobItem, PinJobQuery, PinJobResponse, PinataConfig, PinataMetadata, SignedUrlOptions, SwapCidOptions, SwapCidResponse, SwapHistoryOptions, TimeIntervalAnalyticsQuery, TimeIntervalAnalyticsResponse, TimePeriodItem, TopAnalyticsItem, TopAnalyticsQuery, TopAnalyticsResponse, UploadOptions, UploadResponse } from "./shared/types.js";
4
+ import { PinataLegacyAdapter, pinataLegacyAdapter } from "./legacy/adapter.js";
@@ -1,3 +1,6 @@
1
- import { PinataAdapterError } from "./builder.js";
2
- import { createListBuilder } from "./list-builder.js";
3
- import { pinataAdapter } from "./adapter.js";
1
+ import { createFileListItem, createPinJobItem, createUploadResponse, notSupported, parseCID } from "./shared/utils.js";
2
+ import { pinataAdapter } from "./v2/adapter.js";
3
+ import "./v2/index.js";
4
+ import { pinataLegacyAdapter } from "./legacy/adapter.js";
5
+ import "./legacy/index.js";
6
+ import "./shared/index.js";
@@ -0,0 +1,73 @@
1
+ import { Pinner } from "../../../pinner.js";
2
+ import { FileListQuery, FileListResponse, PinJobQuery, PinJobResponse, PinataConfig, SignedUrlOptions, SwapCidOptions, SwapCidResponse, SwapHistoryOptions, TimeIntervalAnalyticsQuery, TimeIntervalAnalyticsResponse, TopAnalyticsQuery, TopAnalyticsResponse, UploadOptions, UploadResponse } from "../shared/types.js";
3
+
4
+ //#region src/adapters/pinata/legacy/adapter.d.ts
5
+ /**
6
+ * Pinata 1.x Legacy Adapter Interface
7
+ * Matches Pinata SDK 1.x API exactly
8
+ */
9
+ interface PinataLegacyAdapter {
10
+ /**
11
+ * Upload a file to IPFS
12
+ */
13
+ pinFileToIPFS(file: File, options?: UploadOptions): Promise<UploadResponse>;
14
+ /**
15
+ * Upload JSON data to IPFS
16
+ */
17
+ pinJSONToIPFS(data: any, options?: UploadOptions): Promise<UploadResponse>;
18
+ /**
19
+ * Pin content by CID
20
+ */
21
+ pinByHash(cid: string, options?: UploadOptions): Promise<UploadResponse>;
22
+ /**
23
+ * List pinned files
24
+ */
25
+ pinList(query?: FileListQuery): Promise<FileListResponse>;
26
+ /**
27
+ * Unpin content by CID
28
+ */
29
+ unpin(cid: string): Promise<{
30
+ message: string;
31
+ }>;
32
+ /**
33
+ * Update pin metadata
34
+ */
35
+ hashMetadata(cid: string, metadata: Record<string, string>): Promise<{
36
+ message: string;
37
+ }>;
38
+ /**
39
+ * Create signed URL for private IPFS files
40
+ */
41
+ createSignedURL(options: SignedUrlOptions): Promise<string>;
42
+ /**
43
+ * Get pin jobs
44
+ */
45
+ pinJobs(query?: PinJobQuery): Promise<PinJobResponse>;
46
+ /**
47
+ * Get top usage analytics
48
+ */
49
+ topUsageAnalytics(query: TopAnalyticsQuery): Promise<TopAnalyticsResponse>;
50
+ /**
51
+ * Get date interval analytics
52
+ */
53
+ dateIntervalAnalytics(query: TimeIntervalAnalyticsQuery): Promise<TimeIntervalAnalyticsResponse>;
54
+ /**
55
+ * Swap CID
56
+ */
57
+ swapCid(options: SwapCidOptions): Promise<SwapCidResponse>;
58
+ /**
59
+ * Get swap history
60
+ */
61
+ swapHistory(options: SwapHistoryOptions): Promise<SwapCidResponse[]>;
62
+ }
63
+ /**
64
+ * Create Pinata 1.x Legacy Adapter
65
+ *
66
+ * @param pinner - Pinner client instance
67
+ * @param config - Pinata configuration
68
+ * @returns PinataLegacyAdapter
69
+ */
70
+ declare function pinataLegacyAdapter(pinner: Pinner, config?: PinataConfig): PinataLegacyAdapter;
71
+ //#endregion
72
+ export { PinataLegacyAdapter, pinataLegacyAdapter };
73
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1,124 @@
1
+ import { DEFAULT_GATEWAY } from "../../../types/constants.js";
2
+ import { createFileListItem, createPinJobItem, createUploadResponse, notSupported, parseCID } from "../shared/utils.js";
3
+
4
+ //#region src/adapters/pinata/legacy/adapter.ts
5
+ /**
6
+ * Create Pinata 1.x Legacy Adapter
7
+ *
8
+ * @param pinner - Pinner client instance
9
+ * @param config - Pinata configuration
10
+ * @returns PinataLegacyAdapter
11
+ */
12
+ function pinataLegacyAdapter(pinner, config) {
13
+ return {
14
+ /**
15
+ * Pin a file to IPFS
16
+ */
17
+ async pinFileToIPFS(file, options) {
18
+ return createUploadResponse(await pinner.uploadAndWait(file, {
19
+ name: options?.metadata?.name,
20
+ keyvalues: options?.metadata?.keyvalues
21
+ }), file.name);
22
+ },
23
+ /**
24
+ * Pin JSON data to IPFS
25
+ */
26
+ async pinJSONToIPFS(data, options) {
27
+ const jsonString = JSON.stringify(data);
28
+ const file = new File([jsonString], options?.metadata?.name || "data.json", { type: "application/json" });
29
+ return createUploadResponse(await pinner.uploadAndWait(file, {
30
+ name: options?.metadata?.name,
31
+ keyvalues: options?.metadata?.keyvalues
32
+ }), file.name);
33
+ },
34
+ /**
35
+ * Pin content by CID
36
+ */
37
+ async pinByHash(cid, options) {
38
+ const cidObj = parseCID(cid);
39
+ const generator = await pinner.pinByHash(cidObj, {
40
+ name: options?.metadata?.name,
41
+ metadata: options?.metadata?.keyvalues
42
+ });
43
+ for await (const _ of generator);
44
+ const pin = await pinner.getPinStatus(cidObj);
45
+ return createUploadResponse({
46
+ cid: pin.cid.toString(),
47
+ size: pin.size || 0,
48
+ createdAt: pin.created
49
+ }, pin.name || "");
50
+ },
51
+ /**
52
+ * List pinned files
53
+ */
54
+ async pinList(query) {
55
+ return {
56
+ files: (await pinner.listPins({ limit: query?.limit })).map(createFileListItem),
57
+ next_page_token: ""
58
+ };
59
+ },
60
+ /**
61
+ * Unpin content
62
+ */
63
+ async unpin(cid) {
64
+ await pinner.unpin(cid);
65
+ return { message: `Unpinned ${cid}` };
66
+ },
67
+ /**
68
+ * Update pin metadata
69
+ */
70
+ async hashMetadata(cid, metadata) {
71
+ await pinner.setPinMetadata(cid, metadata);
72
+ return { message: `Updated metadata for ${cid}` };
73
+ },
74
+ /**
75
+ * Create signed URL (not fully supported in Pinner)
76
+ * Returns a gateway URL instead
77
+ */
78
+ async createSignedURL(options) {
79
+ return `${config?.pinataGateway || "https://dweb.link"}/ipfs/${options.cid}`;
80
+ },
81
+ /**
82
+ * Get pin jobs
83
+ */
84
+ async pinJobs(query) {
85
+ return { rows: (await pinner.listPins({ limit: query?.limit })).map(createPinJobItem) };
86
+ },
87
+ /**
88
+ * Get top usage analytics (not supported in Pinner)
89
+ * Returns empty data
90
+ */
91
+ async topUsageAnalytics(query) {
92
+ return { data: [] };
93
+ },
94
+ /**
95
+ * Get date interval analytics (not supported in Pinner)
96
+ * Returns empty data
97
+ */
98
+ async dateIntervalAnalytics(query) {
99
+ return {
100
+ total_requests: 0,
101
+ total_bandwidth: 0,
102
+ time_periods: []
103
+ };
104
+ },
105
+ /**
106
+ * Swap CID (not supported in Pinner)
107
+ * Returns error
108
+ */
109
+ async swapCid(options) {
110
+ notSupported("Swap CID");
111
+ },
112
+ /**
113
+ * Get swap history (not supported in Pinner)
114
+ * Returns empty array
115
+ */
116
+ async swapHistory(options) {
117
+ return [];
118
+ }
119
+ };
120
+ }
121
+
122
+ //#endregion
123
+ export { pinataLegacyAdapter };
124
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","names":[],"sources":["../../../../../src/adapters/pinata/legacy/adapter.ts"],"sourcesContent":["/**\n * Pinata SDK 1.x Legacy Adapter\n * Provides compatibility with Pinata SDK 1.x API\n *\n * Source: https://github.com/PinataCloud/pinata/commit/c141177ff3036e46fa7b95fcc68c159b58817836\n * - src/core/pinataSDK.ts\n * - src/core/types.ts\n *\n * Copyright © 2024 Pinata Cloud Technologies\n * Type definitions and API interfaces adapted from Pinata SDK for compatibility.\n * Original Pinata SDK: https://github.com/PinataCloud/pinata\n */\n\nimport type { Pinner } from \"@/pinner\";\nimport type {\n\tPinataConfig,\n\tUploadResponse,\n\tUploadOptions,\n\tFileListResponse,\n\tFileListQuery,\n\tPinJobResponse,\n\tPinJobQuery,\n\tDeleteResponse,\n\tPinataMetadata,\n\tSignedUrlOptions,\n\tTopAnalyticsQuery,\n\tTopAnalyticsResponse,\n\tTimeIntervalAnalyticsQuery,\n\tTimeIntervalAnalyticsResponse,\n\tSwapCidOptions,\n\tSwapCidResponse,\n\tSwapHistoryOptions,\n} from \"../shared/types\";\nimport { parseCID, createUploadResponse, createFileListItem, createPinJobItem, notSupported } from \"../shared/utils\";\nimport { DEFAULT_GATEWAY } from \"@/types/constants\";\n\n/**\n * Pinata 1.x Legacy Adapter Interface\n * Matches Pinata SDK 1.x API exactly\n */\nexport interface PinataLegacyAdapter {\n\t/**\n\t * Upload a file to IPFS\n\t */\n\tpinFileToIPFS(file: File, options?: UploadOptions): Promise<UploadResponse>;\n\n\t/**\n\t * Upload JSON data to IPFS\n\t */\n\tpinJSONToIPFS(data: any, options?: UploadOptions): Promise<UploadResponse>;\n\n\t/**\n\t * Pin content by CID\n\t */\n\tpinByHash(cid: string, options?: UploadOptions): Promise<UploadResponse>;\n\n\t/**\n\t * List pinned files\n\t */\n\tpinList(query?: FileListQuery): Promise<FileListResponse>;\n\n\t/**\n\t * Unpin content by CID\n\t */\n\tunpin(cid: string): Promise<{ message: string }>;\n\n\t/**\n\t * Update pin metadata\n\t */\n\thashMetadata(cid: string, metadata: Record<string, string>): Promise<{ message: string }>;\n\n\t/**\n\t * Create signed URL for private IPFS files\n\t */\n\tcreateSignedURL(options: SignedUrlOptions): Promise<string>;\n\n\t/**\n\t * Get pin jobs\n\t */\n\tpinJobs(query?: PinJobQuery): Promise<PinJobResponse>;\n\n\t/**\n\t * Get top usage analytics\n\t */\n\ttopUsageAnalytics(query: TopAnalyticsQuery): Promise<TopAnalyticsResponse>;\n\n\t/**\n\t * Get date interval analytics\n\t */\n\tdateIntervalAnalytics(\n\t\tquery: TimeIntervalAnalyticsQuery,\n\t): Promise<TimeIntervalAnalyticsResponse>;\n\n\t/**\n\t * Swap CID\n\t */\n\tswapCid(options: SwapCidOptions): Promise<SwapCidResponse>;\n\n\t/**\n\t * Get swap history\n\t */\n\tswapHistory(options: SwapHistoryOptions): Promise<SwapCidResponse[]>;\n}\n\n/**\n * Create Pinata 1.x Legacy Adapter\n *\n * @param pinner - Pinner client instance\n * @param config - Pinata configuration\n * @returns PinataLegacyAdapter\n */\nexport function pinataLegacyAdapter(\n\tpinner: Pinner,\n\tconfig?: PinataConfig,\n): PinataLegacyAdapter {\n\treturn {\n\t\t/**\n\t\t * Pin a file to IPFS\n\t\t */\n\t\tasync pinFileToIPFS(\n\t\t\tfile: File,\n\t\t\toptions?: UploadOptions,\n\t\t): Promise<UploadResponse> {\n\t\t\tconst result = await pinner.uploadAndWait(file, {\n\t\t\t\tname: options?.metadata?.name,\n\t\t\t\tkeyvalues: options?.metadata?.keyvalues,\n\t\t\t});\n\n\t\t\treturn createUploadResponse(result, file.name);\n\t\t},\n\n\t\t/**\n\t\t * Pin JSON data to IPFS\n\t\t */\n\t\tasync pinJSONToIPFS(\n\t\t\tdata: any,\n\t\t\toptions?: UploadOptions,\n\t\t): Promise<UploadResponse> {\n\t\t\t// Convert JSON to File\n\t\t\tconst jsonString = JSON.stringify(data);\n\t\t\tconst file = new File(\n\t\t\t\t[jsonString],\n\t\t\t\toptions?.metadata?.name || \"data.json\",\n\t\t\t\t{ type: \"application/json\" },\n\t\t\t);\n\n\t\t\tconst result = await pinner.uploadAndWait(file, {\n\t\t\t\tname: options?.metadata?.name,\n\t\t\t\tkeyvalues: options?.metadata?.keyvalues,\n\t\t\t});\n\n\t\t\treturn createUploadResponse(result, file.name);\n\t\t},\n\n\t\t/**\n\t\t * Pin content by CID\n\t\t */\n\t\tasync pinByHash(\n\t\t\tcid: string,\n\t\t\toptions?: UploadOptions,\n\t\t): Promise<UploadResponse> {\n\t\t\tconst cidObj = parseCID(cid);\n\t\t\tconst generator = await pinner.pinByHash(cidObj, {\n\t\t\t\tname: options?.metadata?.name,\n\t\t\t\tmetadata: options?.metadata?.keyvalues,\n\t\t\t});\n\n\t\t\tfor await (const _ of generator) {\n\t\t\t\t// Wait for pin to complete\n\t\t\t}\n\n\t\t\tconst pin = await pinner.getPinStatus(cidObj);\n\t\t\treturn createUploadResponse(\n\t\t\t\t{\n\t\t\t\t\tcid: pin.cid.toString(),\n\t\t\t\t\tsize: pin.size || 0,\n\t\t\t\t\tcreatedAt: pin.created,\n\t\t\t\t},\n\t\t\t\tpin.name || \"\",\n\t\t\t);\n\t\t},\n\n\t\t/**\n\t\t * List pinned files\n\t\t */\n\t\tasync pinList(query?: FileListQuery): Promise<FileListResponse> {\n\t\t\tconst pins = await pinner.listPins({\n\t\t\t\tlimit: query?.limit,\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tfiles: pins.map(createFileListItem),\n\t\t\t\tnext_page_token: \"\",\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Unpin content\n\t\t */\n\t\tasync unpin(cid: string): Promise<{ message: string }> {\n\t\t\tawait pinner.unpin(cid);\n\t\t\treturn { message: `Unpinned ${cid}` };\n\t\t},\n\n\t\t/**\n\t\t * Update pin metadata\n\t\t */\n\t\tasync hashMetadata(\n\t\t\tcid: string,\n\t\t\tmetadata: Record<string, string>,\n\t\t): Promise<{ message: string }> {\n\t\t\tawait pinner.setPinMetadata(cid, metadata);\n\t\t\treturn { message: `Updated metadata for ${cid}` };\n\t\t},\n\n\t\t/**\n\t\t * Create signed URL (not fully supported in Pinner)\n\t\t * Returns a gateway URL instead\n\t\t */\n\t\tasync createSignedURL(options: SignedUrlOptions): Promise<string> {\n\t\t\t// Pinner doesn't support signed URLs for private files\n\t\t\t// Return a gateway URL as fallback\n\t\t\tconst gateway = config?.pinataGateway || DEFAULT_GATEWAY;\n\t\t\treturn `${gateway}/ipfs/${options.cid}`;\n\t\t},\n\n\t\t/**\n\t\t * Get pin jobs\n\t\t */\n\t\tasync pinJobs(query?: PinJobQuery): Promise<PinJobResponse> {\n\t\t\tconst pins = await pinner.listPins({\n\t\t\t\tlimit: query?.limit,\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\trows: pins.map(createPinJobItem),\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Get top usage analytics (not supported in Pinner)\n\t\t * Returns empty data\n\t\t */\n\t\tasync topUsageAnalytics(\n\t\t\tquery: TopAnalyticsQuery,\n\t\t): Promise<TopAnalyticsResponse> {\n\t\t\t// Pinner doesn't support analytics\n\t\t\treturn {\n\t\t\t\tdata: [],\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Get date interval analytics (not supported in Pinner)\n\t\t * Returns empty data\n\t\t */\n\t\tasync dateIntervalAnalytics(\n\t\t\tquery: TimeIntervalAnalyticsQuery,\n\t\t): Promise<TimeIntervalAnalyticsResponse> {\n\t\t\t// Pinner doesn't support analytics\n\t\t\treturn {\n\t\t\t\ttotal_requests: 0,\n\t\t\t\ttotal_bandwidth: 0,\n\t\t\t\ttime_periods: [],\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Swap CID (not supported in Pinner)\n\t\t * Returns error\n\t\t */\n\t\tasync swapCid(options: SwapCidOptions): Promise<SwapCidResponse> {\n\t\t\tnotSupported(\"Swap CID\");\n\t\t},\n\n\t\t/**\n\t\t * Get swap history (not supported in Pinner)\n\t\t * Returns empty array\n\t\t */\n\t\tasync swapHistory(options: SwapHistoryOptions): Promise<SwapCidResponse[]> {\n\t\t\t// Pinner doesn't support swaps\n\t\t\treturn [];\n\t\t},\n\t};\n}\n"],"mappings":";;;;;;;;;;;AA+GA,SAAgB,oBACf,QACA,QACsB;AACtB,QAAO;;;;EAIN,MAAM,cACL,MACA,SAC0B;AAM1B,UAAO,qBAAqB,MALP,OAAO,cAAc,MAAM;IAC/C,MAAM,SAAS,UAAU;IACzB,WAAW,SAAS,UAAU;IAC9B,CAAC,EAEkC,KAAK,KAAK;;;;;EAM/C,MAAM,cACL,MACA,SAC0B;GAE1B,MAAM,aAAa,KAAK,UAAU,KAAK;GACvC,MAAM,OAAO,IAAI,KAChB,CAAC,WAAW,EACZ,SAAS,UAAU,QAAQ,aAC3B,EAAE,MAAM,oBAAoB,CAC5B;AAOD,UAAO,qBAAqB,MALP,OAAO,cAAc,MAAM;IAC/C,MAAM,SAAS,UAAU;IACzB,WAAW,SAAS,UAAU;IAC9B,CAAC,EAEkC,KAAK,KAAK;;;;;EAM/C,MAAM,UACL,KACA,SAC0B;GAC1B,MAAM,SAAS,SAAS,IAAI;GAC5B,MAAM,YAAY,MAAM,OAAO,UAAU,QAAQ;IAChD,MAAM,SAAS,UAAU;IACzB,UAAU,SAAS,UAAU;IAC7B,CAAC;AAEF,cAAW,MAAM,KAAK;GAItB,MAAM,MAAM,MAAM,OAAO,aAAa,OAAO;AAC7C,UAAO,qBACN;IACC,KAAK,IAAI,IAAI,UAAU;IACvB,MAAM,IAAI,QAAQ;IAClB,WAAW,IAAI;IACf,EACD,IAAI,QAAQ,GACZ;;;;;EAMF,MAAM,QAAQ,OAAkD;AAK/D,UAAO;IACN,QAAO,MALW,OAAO,SAAS,EAClC,OAAO,OAAO,OACd,CAAC,EAGW,IAAI,mBAAmB;IACnC,iBAAiB;IACjB;;;;;EAMF,MAAM,MAAM,KAA2C;AACtD,SAAM,OAAO,MAAM,IAAI;AACvB,UAAO,EAAE,SAAS,YAAY,OAAO;;;;;EAMtC,MAAM,aACL,KACA,UAC+B;AAC/B,SAAM,OAAO,eAAe,KAAK,SAAS;AAC1C,UAAO,EAAE,SAAS,wBAAwB,OAAO;;;;;;EAOlD,MAAM,gBAAgB,SAA4C;AAIjE,UAAO,GADS,QAAQ,qCACN,QAAQ,QAAQ;;;;;EAMnC,MAAM,QAAQ,OAA8C;AAK3D,UAAO,EACN,OAAM,MALY,OAAO,SAAS,EAClC,OAAO,OAAO,OACd,CAAC,EAGU,IAAI,iBAAiB,EAChC;;;;;;EAOF,MAAM,kBACL,OACgC;AAEhC,UAAO,EACN,MAAM,EAAE,EACR;;;;;;EAOF,MAAM,sBACL,OACyC;AAEzC,UAAO;IACN,gBAAgB;IAChB,iBAAiB;IACjB,cAAc,EAAE;IAChB;;;;;;EAOF,MAAM,QAAQ,SAAmD;AAChE,gBAAa,WAAW;;;;;;EAOzB,MAAM,YAAY,SAAyD;AAE1E,UAAO,EAAE;;EAEV"}
@@ -0,0 +1 @@
1
+ import { PinataLegacyAdapter, pinataLegacyAdapter } from "./adapter.js";
@@ -0,0 +1 @@
1
+ import { pinataLegacyAdapter } from "./adapter.js";
@@ -0,0 +1 @@
1
+ import { AnalyticsQuery, FileListItem, FileListQuery, FileListResponse, PinJobItem, PinJobQuery, PinJobResponse, PinataConfig, PinataMetadata, SignedUrlOptions, SwapCidOptions, SwapCidResponse, SwapHistoryOptions, TimeIntervalAnalyticsQuery, TimeIntervalAnalyticsResponse, TimePeriodItem, TopAnalyticsItem, TopAnalyticsQuery, TopAnalyticsResponse, UploadOptions, UploadResponse } from "./types.js";
@@ -0,0 +1 @@
1
+ import { createFileListItem, createPinJobItem, createUploadResponse, notSupported, parseCID } from "./utils.js";