@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
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.cjs","names":["createUploadBuilder","createFileArrayUploadBuilder","createJsonUploadBuilder","createBase64UploadBuilder","createUrlUploadBuilder","createCidUploadBuilder","CID","createListBuilder"],"sources":["../../../../src/adapters/pinata/adapter.ts"],"sourcesContent":["import type { Pinner } from \"@/pinner\";\nimport {\n createBase64UploadBuilder,\n createCidUploadBuilder,\n createFileArrayUploadBuilder,\n createJsonUploadBuilder,\n createUploadBuilder,\n createUrlUploadBuilder,\n} from \"./builder\";\nimport { createListBuilder } from \"./list-builder\";\nimport type {\n PinataFile,\n PinataListBuilder,\n PinataPin,\n PinataUploadBuilder,\n PinataUploadResult,\n PinByHashOptions,\n} from \"@/types/pinata\";\nimport { CID } from \"multiformats/cid\";\n\n/**\n * Creates a Pinata-compatible adapter for the Pinner client.\n * This allows users to migrate from Pinata SDK with minimal code changes.\n */\nexport interface PinataAdapter {\n upload: {\n file(file: File): PinataUploadBuilder<PinataUploadResult>;\n fileArray(files: File[]): PinataUploadBuilder<PinataUploadResult>;\n json(data: object): PinataUploadBuilder<PinataUploadResult>;\n base64(base64String: string): PinataUploadBuilder<PinataUploadResult>;\n url(urlString: string): PinataUploadBuilder<PinataUploadResult>;\n cid(cidString: string): PinataUploadBuilder<void>;\n };\n\n pinByHash(cid: string, options?: PinByHashOptions): Promise<void>;\n unpin(cid: string): Promise<void>;\n getPinStatus(cid: string): Promise<PinataPin>;\n isPinned(cid: string): Promise<boolean>;\n setPinMetadata(cid: string, metadata: Record<string, string>): Promise<void>;\n\n files: {\n list(): PinataListBuilder<PinataFile[]>;\n get(id: string): Promise<PinataFile>;\n };\n}\n\n/**\n * Creates a Pinata-compatible adapter for the Pinner client.\n */\nexport function pinataAdapter(pinner: Pinner): PinataAdapter {\n return {\n upload: {\n file(file: File): PinataUploadBuilder<PinataUploadResult> {\n return createUploadBuilder(pinner, file);\n },\n fileArray(files: File[]): PinataUploadBuilder<PinataUploadResult> {\n return createFileArrayUploadBuilder(pinner, files);\n },\n json(data: object): PinataUploadBuilder<PinataUploadResult> {\n return createJsonUploadBuilder(pinner, data);\n },\n base64(base64String: string): PinataUploadBuilder<PinataUploadResult> {\n return createBase64UploadBuilder(pinner, base64String);\n },\n url(urlString: string): PinataUploadBuilder<PinataUploadResult> {\n return createUrlUploadBuilder(pinner, urlString);\n },\n cid(cidString: string): PinataUploadBuilder<void> {\n return createCidUploadBuilder(pinner, cidString);\n },\n },\n\n async pinByHash(cid: string, options?: PinByHashOptions): Promise<void> {\n const cidObj = CID.parse(cid);\n const generatorPromise = pinner.pinByHash(cidObj, {\n name: options?.name,\n metadata: options?.keyvalues,\n });\n\n const generator = await generatorPromise;\n for await (const _ of generator) {\n // Pin operation in progress\n }\n },\n\n async unpin(cid: string): Promise<void> {\n await pinner.unpin(cid);\n },\n\n async getPinStatus(cid: string): Promise<PinataPin> {\n const cidObj = CID.parse(cid);\n const remotePin = await pinner.getPinStatus(cidObj);\n\n return {\n id: cidObj.toString(),\n ipfsPinHash: cidObj.toString(),\n size: remotePin.size || 0,\n userId: \"\",\n datePinned: remotePin.created.toISOString(),\n metadata: {\n name: remotePin.name,\n keyvalues: remotePin.metadata,\n },\n };\n },\n\n async isPinned(cid: string): Promise<boolean> {\n const cidObj = CID.parse(cid);\n return pinner.isPinned(cidObj);\n },\n\n async setPinMetadata(\n cid: string,\n metadata: Record<string, string>,\n ): Promise<void> {\n const cidObj = CID.parse(cid);\n await pinner.setPinMetadata(cidObj, metadata);\n },\n\n files: {\n list(): PinataListBuilder<PinataFile[]> {\n return createListBuilder(pinner);\n },\n async get(id: string): Promise<PinataFile> {\n const pins = await pinner.listPins();\n const pin = pins.find((p) => p.cid.toString() === id);\n\n if (!pin) {\n throw new Error(`Pin not found: ${id}`);\n }\n\n return {\n id: pin.cid.toString(),\n ipfsPinHash: pin.cid.toString(),\n size: pin.size || 0,\n name: pin.name || \"\",\n cid: pin.cid.toString(),\n createdAt: pin.created.toISOString(),\n };\n },\n },\n };\n}\n"],"mappings":";;;;;;;;;AAiDA,SAAgB,cAAc,QAA+B;AAC3D,QAAO;EACL,QAAQ;GACN,KAAK,MAAqD;AACxD,WAAOA,oCAAoB,QAAQ,KAAK;;GAE1C,UAAU,OAAwD;AAChE,WAAOC,6CAA6B,QAAQ,MAAM;;GAEpD,KAAK,MAAuD;AAC1D,WAAOC,wCAAwB,QAAQ,KAAK;;GAE9C,OAAO,cAA+D;AACpE,WAAOC,0CAA0B,QAAQ,aAAa;;GAExD,IAAI,WAA4D;AAC9D,WAAOC,uCAAuB,QAAQ,UAAU;;GAElD,IAAI,WAA8C;AAChD,WAAOC,uCAAuB,QAAQ,UAAU;;GAEnD;EAED,MAAM,UAAU,KAAa,SAA2C;GACtE,MAAM,SAASC,qBAAI,MAAM,IAAI;GAM7B,MAAM,YAAY,MALO,OAAO,UAAU,QAAQ;IAChD,MAAM,SAAS;IACf,UAAU,SAAS;IACpB,CAAC;AAGF,cAAW,MAAM,KAAK;;EAKxB,MAAM,MAAM,KAA4B;AACtC,SAAM,OAAO,MAAM,IAAI;;EAGzB,MAAM,aAAa,KAAiC;GAClD,MAAM,SAASA,qBAAI,MAAM,IAAI;GAC7B,MAAM,YAAY,MAAM,OAAO,aAAa,OAAO;AAEnD,UAAO;IACL,IAAI,OAAO,UAAU;IACrB,aAAa,OAAO,UAAU;IAC9B,MAAM,UAAU,QAAQ;IACxB,QAAQ;IACR,YAAY,UAAU,QAAQ,aAAa;IAC3C,UAAU;KACR,MAAM,UAAU;KAChB,WAAW,UAAU;KACtB;IACF;;EAGH,MAAM,SAAS,KAA+B;GAC5C,MAAM,SAASA,qBAAI,MAAM,IAAI;AAC7B,UAAO,OAAO,SAAS,OAAO;;EAGhC,MAAM,eACJ,KACA,UACe;GACf,MAAM,SAASA,qBAAI,MAAM,IAAI;AAC7B,SAAM,OAAO,eAAe,QAAQ,SAAS;;EAG/C,OAAO;GACL,OAAwC;AACtC,WAAOC,uCAAkB,OAAO;;GAElC,MAAM,IAAI,IAAiC;IAEzC,MAAM,OADO,MAAM,OAAO,UAAU,EACnB,MAAM,MAAM,EAAE,IAAI,UAAU,KAAK,GAAG;AAErD,QAAI,CAAC,IACH,OAAM,IAAI,MAAM,kBAAkB,KAAK;AAGzC,WAAO;KACL,IAAI,IAAI,IAAI,UAAU;KACtB,aAAa,IAAI,IAAI,UAAU;KAC/B,MAAM,IAAI,QAAQ;KAClB,MAAM,IAAI,QAAQ;KAClB,KAAK,IAAI,IAAI,UAAU;KACvB,WAAW,IAAI,QAAQ,aAAa;KACrC;;GAEJ;EACF"}
@@ -1,35 +0,0 @@
1
- import { Pinner } from "../../pinner.cjs";
2
- import { PinByHashOptions, PinataFile, PinataListBuilder, PinataPin, PinataUploadBuilder, PinataUploadResult } from "../../types/pinata.cjs";
3
-
4
- //#region src/adapters/pinata/adapter.d.ts
5
-
6
- /**
7
- * Creates a Pinata-compatible adapter for the Pinner client.
8
- * This allows users to migrate from Pinata SDK with minimal code changes.
9
- */
10
- interface PinataAdapter {
11
- upload: {
12
- file(file: File): PinataUploadBuilder<PinataUploadResult>;
13
- fileArray(files: File[]): PinataUploadBuilder<PinataUploadResult>;
14
- json(data: object): PinataUploadBuilder<PinataUploadResult>;
15
- base64(base64String: string): PinataUploadBuilder<PinataUploadResult>;
16
- url(urlString: string): PinataUploadBuilder<PinataUploadResult>;
17
- cid(cidString: string): PinataUploadBuilder<void>;
18
- };
19
- pinByHash(cid: string, options?: PinByHashOptions): Promise<void>;
20
- unpin(cid: string): Promise<void>;
21
- getPinStatus(cid: string): Promise<PinataPin>;
22
- isPinned(cid: string): Promise<boolean>;
23
- setPinMetadata(cid: string, metadata: Record<string, string>): Promise<void>;
24
- files: {
25
- list(): PinataListBuilder<PinataFile[]>;
26
- get(id: string): Promise<PinataFile>;
27
- };
28
- }
29
- /**
30
- * Creates a Pinata-compatible adapter for the Pinner client.
31
- */
32
- declare function pinataAdapter(pinner: Pinner): PinataAdapter;
33
- //#endregion
34
- export { pinataAdapter };
35
- //# sourceMappingURL=adapter.d.cts.map
@@ -1,194 +0,0 @@
1
- const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
- const require_json = require('../../encoder/json.cjs');
3
- const require_base64 = require('../../encoder/base64.cjs');
4
- const require_url = require('../../encoder/url.cjs');
5
- require('../../encoder/index.cjs');
6
- const require_validation = require('../../utils/validation.cjs');
7
- let multiformats_cid = require("multiformats/cid");
8
-
9
- //#region src/adapters/pinata/builder.ts
10
- /**
11
- * Error wrapper for Pinata adapter operations.
12
- */
13
- var PinataAdapterError = class extends Error {
14
- code;
15
- cause;
16
- constructor(message, code, cause) {
17
- super(message);
18
- this.name = "PinataAdapterError";
19
- this.code = code;
20
- this.cause = cause;
21
- }
22
- };
23
- /**
24
- * Base upload builder with common name/keyvalues functionality.
25
- */
26
- var BaseUploadBuilder = class {
27
- _name;
28
- _keyvalues;
29
- constructor(pinner) {
30
- this.pinner = pinner;
31
- }
32
- name(name) {
33
- this._name = name;
34
- return this;
35
- }
36
- keyvalues(kv) {
37
- this._keyvalues = kv;
38
- return this;
39
- }
40
- toUploadResult(result) {
41
- return {
42
- IpfsHash: result.cid,
43
- PinSize: result.size,
44
- Timestamp: result.createdAt.toISOString(),
45
- isDuplicate: false
46
- };
47
- }
48
- };
49
- /**
50
- * File upload builder.
51
- */
52
- var FileUploadBuilder = class extends BaseUploadBuilder {
53
- constructor(pinner, file) {
54
- super(pinner);
55
- this.file = file;
56
- }
57
- async execute() {
58
- const result = await this.pinner.uploadAndWait(this.file, {
59
- name: this._name,
60
- keyvalues: this._keyvalues
61
- });
62
- return this.toUploadResult(result);
63
- }
64
- };
65
- /**
66
- * File array upload builder.
67
- */
68
- var FileArrayUploadBuilder = class extends BaseUploadBuilder {
69
- constructor(pinner, files) {
70
- super(pinner);
71
- this.files = files;
72
- if (files.length === 0) throw new PinataAdapterError("Cannot upload empty file array", "EMPTY_FILE_ARRAY");
73
- }
74
- async execute() {
75
- try {
76
- const result = await (await this.pinner.uploadDirectory(this.files, {
77
- name: this._name,
78
- keyvalues: this._keyvalues
79
- })).result;
80
- return this.toUploadResult(result);
81
- } catch (error) {
82
- if (error instanceof Error) throw new PinataAdapterError(`File array upload failed: ${error.message}`, "UPLOAD_FAILED", error);
83
- throw error;
84
- }
85
- }
86
- };
87
- /**
88
- * Encoded upload builder - handles JSON, Base64, and URL uploads using encoders.
89
- */
90
- var EncodedUploadBuilder = class extends BaseUploadBuilder {
91
- constructor(pinner, encoderFn) {
92
- super(pinner);
93
- this.encoderFn = encoderFn;
94
- }
95
- async execute() {
96
- try {
97
- const encoded = await this.encoderFn(this._name, this._keyvalues);
98
- const result = await this.pinner.uploadAndWait(encoded.file, encoded.options);
99
- return this.toUploadResult(result);
100
- } catch (error) {
101
- if (error instanceof Error) throw new PinataAdapterError(`Upload failed: ${error.message}`, "UPLOAD_FAILED", error);
102
- throw error;
103
- }
104
- }
105
- };
106
- /**
107
- * CID upload builder (pin by CID).
108
- */
109
- var CidUploadBuilder = class {
110
- _name;
111
- _keyvalues;
112
- constructor(pinner, cidString) {
113
- this.pinner = pinner;
114
- this.cidString = cidString;
115
- }
116
- name(name) {
117
- this._name = name;
118
- return this;
119
- }
120
- keyvalues(kv) {
121
- this._keyvalues = kv;
122
- return this;
123
- }
124
- async execute() {
125
- try {
126
- const cid = multiformats_cid.CID.parse(this.cidString);
127
- const generator = await this.pinner.pinByHash(cid, {
128
- name: this._name,
129
- metadata: this._keyvalues
130
- });
131
- for await (const _ of generator);
132
- } catch (error) {
133
- if (error instanceof Error) throw new PinataAdapterError(`CID upload failed: ${error.message}`, "INVALID_CID", error);
134
- throw error;
135
- }
136
- }
137
- };
138
- /**
139
- * Create a file upload builder.
140
- */
141
- function createUploadBuilder(pinner, file) {
142
- return new FileUploadBuilder(pinner, file);
143
- }
144
- /**
145
- * Create a file array upload builder.
146
- */
147
- function createFileArrayUploadBuilder(pinner, files) {
148
- return new FileArrayUploadBuilder(pinner, files);
149
- }
150
- /**
151
- * Create a JSON upload builder.
152
- */
153
- function createJsonUploadBuilder(pinner, data) {
154
- return new EncodedUploadBuilder(pinner, (name, keyvalues) => require_json.jsonToFile(data, {
155
- name,
156
- keyvalues
157
- }));
158
- }
159
- /**
160
- * Create a base64 upload builder.
161
- */
162
- function createBase64UploadBuilder(pinner, base64String) {
163
- return new EncodedUploadBuilder(pinner, (name, keyvalues) => require_base64.base64ToFile(base64String, {
164
- name,
165
- keyvalues
166
- }));
167
- }
168
- /**
169
- * Create a URL upload builder.
170
- */
171
- function createUrlUploadBuilder(pinner, urlString, options) {
172
- require_validation.validateUrl(urlString);
173
- return new EncodedUploadBuilder(pinner, (name, keyvalues) => require_url.urlToFile(urlString, {
174
- name,
175
- keyvalues,
176
- fetch: options?.fetch
177
- }));
178
- }
179
- /**
180
- * Create a CID upload builder.
181
- */
182
- function createCidUploadBuilder(pinner, cidString) {
183
- return new CidUploadBuilder(pinner, cidString);
184
- }
185
-
186
- //#endregion
187
- exports.PinataAdapterError = PinataAdapterError;
188
- exports.createBase64UploadBuilder = createBase64UploadBuilder;
189
- exports.createCidUploadBuilder = createCidUploadBuilder;
190
- exports.createFileArrayUploadBuilder = createFileArrayUploadBuilder;
191
- exports.createJsonUploadBuilder = createJsonUploadBuilder;
192
- exports.createUploadBuilder = createUploadBuilder;
193
- exports.createUrlUploadBuilder = createUrlUploadBuilder;
194
- //# sourceMappingURL=builder.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.cjs","names":["CID","jsonToFile","base64ToFile","urlToFile"],"sources":["../../../../src/adapters/pinata/builder.ts"],"sourcesContent":["import type { Pinner } from \"@/pinner\";\nimport type {\n PinataUploadBuilder,\n PinataUploadResult,\n UrlUploadBuilderOptions,\n} from \"@/types/pinata\";\nimport type { UploadOptions } from \"@/encoder/types\";\nimport { CID } from \"multiformats/cid\";\nimport { base64ToFile, jsonToFile, urlToFile } from \"@/encoder\";\nimport { validateUrl } from \"@/utils/validation\";\n\n/**\n * Error wrapper for Pinata adapter operations.\n */\nexport class PinataAdapterError extends Error {\n code: \"UPLOAD_FAILED\" | \"EMPTY_FILE_ARRAY\" | \"INVALID_CID\";\n cause?: Error;\n\n constructor(\n message: string,\n code: PinataAdapterError[\"code\"],\n cause?: Error,\n ) {\n super(message);\n this.name = \"PinataAdapterError\";\n this.code = code;\n this.cause = cause;\n }\n}\n\n/**\n * Base upload builder with common name/keyvalues functionality.\n */\nabstract class BaseUploadBuilder<\n TResult,\n> implements PinataUploadBuilder<TResult> {\n protected _name?: string;\n protected _keyvalues?: Record<string, string>;\n\n constructor(protected pinner: Pinner) {}\n\n name(name: string): this {\n this._name = name;\n return this;\n }\n\n keyvalues(kv: Record<string, string>): this {\n this._keyvalues = kv;\n return this;\n }\n\n abstract execute(): Promise<TResult>;\n\n protected toUploadResult(result: {\n cid: string;\n size: number;\n createdAt: Date;\n }): PinataUploadResult {\n return {\n IpfsHash: result.cid,\n PinSize: result.size,\n Timestamp: result.createdAt.toISOString(),\n isDuplicate: false,\n };\n }\n}\n\n/**\n * File upload builder.\n */\nclass FileUploadBuilder extends BaseUploadBuilder<PinataUploadResult> {\n constructor(\n pinner: Pinner,\n private file: File,\n ) {\n super(pinner);\n }\n\n async execute(): Promise<PinataUploadResult> {\n const result = await this.pinner.uploadAndWait(this.file, {\n name: this._name,\n keyvalues: this._keyvalues,\n });\n return this.toUploadResult(result);\n }\n}\n\n/**\n * File array upload builder.\n */\nclass FileArrayUploadBuilder extends BaseUploadBuilder<PinataUploadResult> {\n constructor(\n pinner: Pinner,\n private files: File[],\n ) {\n super(pinner);\n if (files.length === 0) {\n throw new PinataAdapterError(\n \"Cannot upload empty file array\",\n \"EMPTY_FILE_ARRAY\",\n );\n }\n }\n\n async execute(): Promise<PinataUploadResult> {\n try {\n const operation = await this.pinner.uploadDirectory(this.files, {\n name: this._name,\n keyvalues: this._keyvalues,\n });\n const result = await operation.result;\n return this.toUploadResult(result);\n } catch (error) {\n if (error instanceof Error) {\n throw new PinataAdapterError(\n `File array upload failed: ${error.message}`,\n \"UPLOAD_FAILED\",\n error,\n );\n }\n throw error;\n }\n }\n}\n\n/**\n * Encoded upload builder - handles JSON, Base64, and URL uploads using encoders.\n */\nclass EncodedUploadBuilder extends BaseUploadBuilder<PinataUploadResult> {\n constructor(\n pinner: Pinner,\n private encoderFn: (\n name?: string,\n keyvalues?: Record<string, string>,\n ) => Promise<{ file: File; options: UploadOptions }>,\n ) {\n super(pinner);\n }\n\n async execute(): Promise<PinataUploadResult> {\n try {\n const encoded = await this.encoderFn(this._name, this._keyvalues);\n const result = await this.pinner.uploadAndWait(\n encoded.file,\n encoded.options,\n );\n return this.toUploadResult(result);\n } catch (error) {\n if (error instanceof Error) {\n throw new PinataAdapterError(\n `Upload failed: ${error.message}`,\n \"UPLOAD_FAILED\",\n error,\n );\n }\n throw error;\n }\n }\n}\n\n/**\n * CID upload builder (pin by CID).\n */\nclass CidUploadBuilder implements PinataUploadBuilder<void> {\n private _name?: string;\n private _keyvalues?: Record<string, string>;\n\n constructor(\n private pinner: Pinner,\n private cidString: string,\n ) {}\n\n name(name: string): this {\n this._name = name;\n return this;\n }\n\n keyvalues(kv: Record<string, string>): this {\n this._keyvalues = kv;\n return this;\n }\n\n async execute(): Promise<void> {\n try {\n const cid = CID.parse(this.cidString);\n const generator = await this.pinner.pinByHash(cid, {\n name: this._name,\n metadata: this._keyvalues,\n });\n for await (const _ of generator) {\n // Pin operation in progress\n }\n } catch (error) {\n if (error instanceof Error) {\n throw new PinataAdapterError(\n `CID upload failed: ${error.message}`,\n \"INVALID_CID\",\n error,\n );\n }\n throw error;\n }\n }\n}\n\n/**\n * Create a file upload builder.\n */\nexport function createUploadBuilder(\n pinner: Pinner,\n file: File,\n): PinataUploadBuilder<PinataUploadResult> {\n return new FileUploadBuilder(pinner, file);\n}\n\n/**\n * Create a file array upload builder.\n */\nexport function createFileArrayUploadBuilder(\n pinner: Pinner,\n files: File[],\n): PinataUploadBuilder<PinataUploadResult> {\n return new FileArrayUploadBuilder(pinner, files);\n}\n\n/**\n * Create a JSON upload builder.\n */\nexport function createJsonUploadBuilder(\n pinner: Pinner,\n data: object,\n): PinataUploadBuilder<PinataUploadResult> {\n return new EncodedUploadBuilder(pinner, (name, keyvalues) =>\n jsonToFile(data, { name, keyvalues }),\n );\n}\n\n/**\n * Create a base64 upload builder.\n */\nexport function createBase64UploadBuilder(\n pinner: Pinner,\n base64String: string,\n): PinataUploadBuilder<PinataUploadResult> {\n return new EncodedUploadBuilder(pinner, (name, keyvalues) =>\n base64ToFile(base64String, { name, keyvalues }),\n );\n}\n\n/**\n * Create a URL upload builder.\n */\nexport function createUrlUploadBuilder(\n pinner: Pinner,\n urlString: string,\n options?: UrlUploadBuilderOptions,\n): PinataUploadBuilder<PinataUploadResult> {\n // Validate URL to prevent SSRF attacks\n validateUrl(urlString);\n\n return new EncodedUploadBuilder(pinner, (name, keyvalues) =>\n urlToFile(urlString, { name, keyvalues, fetch: options?.fetch }),\n );\n}\n\n/**\n * Create a CID upload builder.\n */\nexport function createCidUploadBuilder(\n pinner: Pinner,\n cidString: string,\n): PinataUploadBuilder<void> {\n return new CidUploadBuilder(pinner, cidString);\n}\n"],"mappings":";;;;;;;;;;;;AAcA,IAAa,qBAAb,cAAwC,MAAM;CAC5C;CACA;CAEA,YACE,SACA,MACA,OACA;AACA,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,OAAO;AACZ,OAAK,QAAQ;;;;;;AAOjB,IAAe,oBAAf,MAE0C;CACxC,AAAU;CACV,AAAU;CAEV,YAAY,AAAU,QAAgB;EAAhB;;CAEtB,KAAK,MAAoB;AACvB,OAAK,QAAQ;AACb,SAAO;;CAGT,UAAU,IAAkC;AAC1C,OAAK,aAAa;AAClB,SAAO;;CAKT,AAAU,eAAe,QAIF;AACrB,SAAO;GACL,UAAU,OAAO;GACjB,SAAS,OAAO;GAChB,WAAW,OAAO,UAAU,aAAa;GACzC,aAAa;GACd;;;;;;AAOL,IAAM,oBAAN,cAAgC,kBAAsC;CACpE,YACE,QACA,AAAQ,MACR;AACA,QAAM,OAAO;EAFL;;CAKV,MAAM,UAAuC;EAC3C,MAAM,SAAS,MAAM,KAAK,OAAO,cAAc,KAAK,MAAM;GACxD,MAAM,KAAK;GACX,WAAW,KAAK;GACjB,CAAC;AACF,SAAO,KAAK,eAAe,OAAO;;;;;;AAOtC,IAAM,yBAAN,cAAqC,kBAAsC;CACzE,YACE,QACA,AAAQ,OACR;AACA,QAAM,OAAO;EAFL;AAGR,MAAI,MAAM,WAAW,EACnB,OAAM,IAAI,mBACR,kCACA,mBACD;;CAIL,MAAM,UAAuC;AAC3C,MAAI;GAKF,MAAM,SAAS,OAJG,MAAM,KAAK,OAAO,gBAAgB,KAAK,OAAO;IAC9D,MAAM,KAAK;IACX,WAAW,KAAK;IACjB,CAAC,EAC6B;AAC/B,UAAO,KAAK,eAAe,OAAO;WAC3B,OAAO;AACd,OAAI,iBAAiB,MACnB,OAAM,IAAI,mBACR,6BAA6B,MAAM,WACnC,iBACA,MACD;AAEH,SAAM;;;;;;;AAQZ,IAAM,uBAAN,cAAmC,kBAAsC;CACvE,YACE,QACA,AAAQ,WAIR;AACA,QAAM,OAAO;EALL;;CAQV,MAAM,UAAuC;AAC3C,MAAI;GACF,MAAM,UAAU,MAAM,KAAK,UAAU,KAAK,OAAO,KAAK,WAAW;GACjE,MAAM,SAAS,MAAM,KAAK,OAAO,cAC/B,QAAQ,MACR,QAAQ,QACT;AACD,UAAO,KAAK,eAAe,OAAO;WAC3B,OAAO;AACd,OAAI,iBAAiB,MACnB,OAAM,IAAI,mBACR,kBAAkB,MAAM,WACxB,iBACA,MACD;AAEH,SAAM;;;;;;;AAQZ,IAAM,mBAAN,MAA4D;CAC1D,AAAQ;CACR,AAAQ;CAER,YACE,AAAQ,QACR,AAAQ,WACR;EAFQ;EACA;;CAGV,KAAK,MAAoB;AACvB,OAAK,QAAQ;AACb,SAAO;;CAGT,UAAU,IAAkC;AAC1C,OAAK,aAAa;AAClB,SAAO;;CAGT,MAAM,UAAyB;AAC7B,MAAI;GACF,MAAM,MAAMA,qBAAI,MAAM,KAAK,UAAU;GACrC,MAAM,YAAY,MAAM,KAAK,OAAO,UAAU,KAAK;IACjD,MAAM,KAAK;IACX,UAAU,KAAK;IAChB,CAAC;AACF,cAAW,MAAM,KAAK;WAGf,OAAO;AACd,OAAI,iBAAiB,MACnB,OAAM,IAAI,mBACR,sBAAsB,MAAM,WAC5B,eACA,MACD;AAEH,SAAM;;;;;;;AAQZ,SAAgB,oBACd,QACA,MACyC;AACzC,QAAO,IAAI,kBAAkB,QAAQ,KAAK;;;;;AAM5C,SAAgB,6BACd,QACA,OACyC;AACzC,QAAO,IAAI,uBAAuB,QAAQ,MAAM;;;;;AAMlD,SAAgB,wBACd,QACA,MACyC;AACzC,QAAO,IAAI,qBAAqB,SAAS,MAAM,cAC7CC,wBAAW,MAAM;EAAE;EAAM;EAAW,CAAC,CACtC;;;;;AAMH,SAAgB,0BACd,QACA,cACyC;AACzC,QAAO,IAAI,qBAAqB,SAAS,MAAM,cAC7CC,4BAAa,cAAc;EAAE;EAAM;EAAW,CAAC,CAChD;;;;;AAMH,SAAgB,uBACd,QACA,WACA,SACyC;AAEzC,gCAAY,UAAU;AAEtB,QAAO,IAAI,qBAAqB,SAAS,MAAM,cAC7CC,sBAAU,WAAW;EAAE;EAAM;EAAW,OAAO,SAAS;EAAO,CAAC,CACjE;;;;;AAMH,SAAgB,uBACd,QACA,WAC2B;AAC3B,QAAO,IAAI,iBAAiB,QAAQ,UAAU"}
@@ -1,3 +0,0 @@
1
- const require_builder = require('./builder.cjs');
2
- const require_list_builder = require('./list-builder.cjs');
3
- const require_adapter = require('./adapter.cjs');
@@ -1,52 +0,0 @@
1
-
2
- //#region src/adapters/pinata/list-builder.ts
3
- /**
4
- * List builder for listing pins.
5
- *
6
- * Note: .pageToken() provides Pinata SDK API compatibility for easier migration.
7
- * The token is passed through to the underlying IPFS Pinning Service cursor parameter.
8
- * The server handles the actual pagination logic according to the IPFS Pinning Service spec.
9
- */
10
- var PinataListBuilderImpl = class {
11
- _limit;
12
- _pageToken;
13
- _offset;
14
- constructor(pinner) {
15
- this.pinner = pinner;
16
- }
17
- limit(limit) {
18
- this._limit = limit;
19
- return this;
20
- }
21
- offset(offset) {
22
- this._offset = offset;
23
- return this;
24
- }
25
- pageToken(pageToken) {
26
- this._pageToken = pageToken;
27
- return this;
28
- }
29
- async execute() {
30
- const options = {};
31
- if (this._limit !== void 0) options.limit = this._limit;
32
- if (this._pageToken !== void 0) options.cursor = this._pageToken;
33
- return (await this.pinner.listPins(options)).map((pin) => ({
34
- id: pin.cid.toString(),
35
- ipfsPinHash: pin.cid.toString(),
36
- size: pin.size || 0,
37
- name: pin.name || "",
38
- cid: pin.cid.toString(),
39
- createdAt: pin.created.toISOString()
40
- }));
41
- }
42
- };
43
- /**
44
- * Create a list builder.
45
- */
46
- function createListBuilder(pinner) {
47
- return new PinataListBuilderImpl(pinner);
48
- }
49
-
50
- //#endregion
51
- exports.createListBuilder = createListBuilder;
52
- //# sourceMappingURL=list-builder.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-builder.cjs","names":[],"sources":["../../../../src/adapters/pinata/list-builder.ts"],"sourcesContent":["import type { Pinner } from \"@/pinner\";\nimport type { PinataFile, PinataListBuilder } from \"@/types/pinata\";\nimport type { RemoteLsOptions } from \"@/types/pin\";\n\n/**\n * List builder for listing pins.\n *\n * Note: .pageToken() provides Pinata SDK API compatibility for easier migration.\n * The token is passed through to the underlying IPFS Pinning Service cursor parameter.\n * The server handles the actual pagination logic according to the IPFS Pinning Service spec.\n */\nclass PinataListBuilderImpl implements PinataListBuilder<PinataFile[]> {\n private _limit?: number;\n private _pageToken?: string;\n private _offset?: number;\n\n constructor(private pinner: Pinner) {}\n\n limit(limit: number): this {\n this._limit = limit;\n return this;\n }\n\n offset(offset: number): this {\n this._offset = offset;\n return this;\n }\n\n pageToken(pageToken: string): this {\n this._pageToken = pageToken;\n return this;\n }\n\n async execute(): Promise<PinataFile[]> {\n const options: RemoteLsOptions = {};\n\n if (this._limit !== undefined) {\n options.limit = this._limit;\n }\n\n if (this._pageToken !== undefined) {\n options.cursor = this._pageToken;\n }\n\n const remotePins = await this.pinner.listPins(options);\n\n return remotePins.map((pin) => ({\n id: pin.cid.toString(),\n ipfsPinHash: pin.cid.toString(),\n size: pin.size || 0,\n name: pin.name || \"\",\n cid: pin.cid.toString(),\n createdAt: pin.created.toISOString(),\n }));\n }\n}\n\n/**\n * Create a list builder.\n */\nexport function createListBuilder(\n pinner: Pinner,\n): PinataListBuilder<PinataFile[]> {\n return new PinataListBuilderImpl(pinner);\n}\n"],"mappings":";;;;;;;;;AAWA,IAAM,wBAAN,MAAuE;CACrE,AAAQ;CACR,AAAQ;CACR,AAAQ;CAER,YAAY,AAAQ,QAAgB;EAAhB;;CAEpB,MAAM,OAAqB;AACzB,OAAK,SAAS;AACd,SAAO;;CAGT,OAAO,QAAsB;AAC3B,OAAK,UAAU;AACf,SAAO;;CAGT,UAAU,WAAyB;AACjC,OAAK,aAAa;AAClB,SAAO;;CAGT,MAAM,UAAiC;EACrC,MAAM,UAA2B,EAAE;AAEnC,MAAI,KAAK,WAAW,OAClB,SAAQ,QAAQ,KAAK;AAGvB,MAAI,KAAK,eAAe,OACtB,SAAQ,SAAS,KAAK;AAKxB,UAFmB,MAAM,KAAK,OAAO,SAAS,QAAQ,EAEpC,KAAK,SAAS;GAC9B,IAAI,IAAI,IAAI,UAAU;GACtB,aAAa,IAAI,IAAI,UAAU;GAC/B,MAAM,IAAI,QAAQ;GAClB,MAAM,IAAI,QAAQ;GAClB,KAAK,IAAI,IAAI,UAAU;GACvB,WAAW,IAAI,QAAQ,aAAa;GACrC,EAAE;;;;;;AAOP,SAAgB,kBACd,QACiC;AACjC,QAAO,IAAI,sBAAsB,OAAO"}
@@ -1,2 +0,0 @@
1
- const require_unstorage_base = require('./unstorage-base.cjs');
2
- const require_unstorage = require('./unstorage.cjs');
@@ -1,240 +0,0 @@
1
- const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
- const require_stream = require('../utils/stream.cjs');
3
- const require_constants = require('../types/constants.cjs');
4
- let _home_runner_work_web_web_node_modules__pnpm_blockstore_core_6_1_2_node_modules_blockstore_core_dist_src_index_js = require("/home/runner/work/web/web/node_modules/.pnpm/blockstore-core@6.1.2/node_modules/blockstore-core/dist/src/index.js");
5
- let multiformats_cid = require("multiformats/cid");
6
- let unstorage = require("unstorage");
7
- let interface_datastore = require("interface-datastore");
8
-
9
- //#region src/blockstore/unstorage-base.ts
10
- let driverFactory = null;
11
- function setDriverFactory(factory) {
12
- driverFactory = factory;
13
- }
14
- function createStorageWithOptions(options) {
15
- return options.storage ? options.storage : (0, unstorage.createStorage)({ driver: options.driver });
16
- }
17
- async function initializeStorage(storage, options, getDefaultDriver) {
18
- if (options.storage || options.driver) return;
19
- const driver = await getDefaultDriver(options.base);
20
- Object.assign(storage, (0, unstorage.createStorage)({ driver }));
21
- }
22
- function createUnstorageBase(options, getDefaultDriver) {
23
- const storage = createStorageWithOptions(options);
24
- const initialized = initializeStorage(storage, options, getDefaultDriver);
25
- async function ensureInitialized() {
26
- await initialized;
27
- }
28
- async function hasItem(key) {
29
- await ensureInitialized();
30
- return await storage.hasItem(key);
31
- }
32
- async function getItem(key) {
33
- await ensureInitialized();
34
- const value = await storage.getItemRaw(key);
35
- if (value === null) throw new Error(`Item not found: ${key}`);
36
- return value;
37
- }
38
- async function putItem(key, value) {
39
- await ensureInitialized();
40
- await storage.setItemRaw(key, value);
41
- }
42
- async function deleteItem(key) {
43
- await ensureInitialized();
44
- await storage.removeItem(key);
45
- }
46
- async function getAllKeys() {
47
- await ensureInitialized();
48
- return await storage.getKeys();
49
- }
50
- return {
51
- storage,
52
- hasItem,
53
- getItem,
54
- putItem,
55
- deleteItem,
56
- getAllKeys
57
- };
58
- }
59
- function createUnstorageBlockstore(getDefaultDriver) {
60
- return class UnstorageBlockstore extends _home_runner_work_web_web_node_modules__pnpm_blockstore_core_6_1_2_node_modules_blockstore_core_dist_src_index_js.BaseBlockstore {
61
- prefix;
62
- base;
63
- constructor(options = {}) {
64
- super();
65
- this.prefix = options.prefix ?? require_constants.DEFAULT_BLOCKSTORE_PREFIX;
66
- this.base = createUnstorageBase(options, getDefaultDriver);
67
- }
68
- keyToStorageKey(key) {
69
- return `${this.prefix}:${key.toString()}`;
70
- }
71
- async has(key, _) {
72
- return await this.base.hasItem(this.keyToStorageKey(key));
73
- }
74
- async put(key, val, _) {
75
- const storageKey = this.keyToStorageKey(key);
76
- const bytes = val instanceof Uint8Array ? val : await require_stream.collectAsyncIterable(val);
77
- await this.base.putItem(storageKey, bytes);
78
- return key;
79
- }
80
- async *putMany(source, options) {
81
- for await (const { cid, bytes } of source) yield await this.put(cid, bytes, options);
82
- }
83
- async *get(key, _) {
84
- const storageKey = this.keyToStorageKey(key);
85
- yield await this.base.getItem(storageKey);
86
- }
87
- async *getMany(source, options) {
88
- for await (const cid of source) yield {
89
- cid,
90
- bytes: async function* () {
91
- yield* await this.get(cid, options);
92
- }.call(this)
93
- };
94
- }
95
- async delete(key, _) {
96
- await this.base.deleteItem(this.keyToStorageKey(key));
97
- }
98
- async *deleteMany(source, options) {
99
- for await (const cid of source) {
100
- await this.delete(cid, options);
101
- yield cid;
102
- }
103
- }
104
- async *getAll(_) {
105
- const keys = await this.base.getAllKeys();
106
- for (const key of keys) if (key.startsWith(this.prefix + ":")) {
107
- const cidString = key.slice(this.prefix.length + 1);
108
- try {
109
- const cid = multiformats_cid.CID.parse(cidString);
110
- const value = await this.base.getItem(key);
111
- yield {
112
- cid,
113
- bytes: (async function* () {
114
- yield value;
115
- })()
116
- };
117
- } catch {}
118
- }
119
- }
120
- };
121
- }
122
- function createUnstorageDatastore(getDefaultDriver) {
123
- return class UnstorageDatastore {
124
- prefix;
125
- base;
126
- constructor(options = {}) {
127
- this.prefix = options.datastorePrefix ?? options.prefix ?? require_constants.DEFAULT_BLOCKSTORE_PREFIX;
128
- this.base = createUnstorageBase(options, getDefaultDriver);
129
- }
130
- keyToStorageKey(key) {
131
- return `${this.prefix}:${key.toString()}`;
132
- }
133
- storageKeyToKey(storageKey) {
134
- return new interface_datastore.Key(storageKey.slice(this.prefix.length + 1));
135
- }
136
- async has(key, _) {
137
- return await this.base.hasItem(this.keyToStorageKey(key));
138
- }
139
- async put(key, val, _) {
140
- await this.base.putItem(this.keyToStorageKey(key), val);
141
- return key;
142
- }
143
- async *putMany(source, options) {
144
- for await (const { key, value } of source) yield await this.put(key, value, options);
145
- }
146
- async get(key, _) {
147
- const storageKey = this.keyToStorageKey(key);
148
- try {
149
- return await this.base.getItem(storageKey);
150
- } catch (error) {
151
- throw new Error(`Datastore item not found: ${key.toString()}`);
152
- }
153
- }
154
- async *getMany(source, options) {
155
- for await (const key of source) yield {
156
- key,
157
- value: await this.get(key, options)
158
- };
159
- }
160
- async delete(key, _) {
161
- await this.base.deleteItem(this.keyToStorageKey(key));
162
- }
163
- async *deleteMany(source, options) {
164
- for await (const key of source) {
165
- await this.delete(key, options);
166
- yield key;
167
- }
168
- }
169
- batch() {
170
- const operations = [];
171
- const base = this.base;
172
- const keyToStorageKey = this.keyToStorageKey.bind(this);
173
- return {
174
- put(key, value) {
175
- operations.push({
176
- type: "put",
177
- key,
178
- value
179
- });
180
- },
181
- delete(key) {
182
- operations.push({
183
- type: "delete",
184
- key
185
- });
186
- },
187
- async commit() {
188
- for (const op of operations) if (op.type === "put" && op.value !== void 0) await base.putItem(keyToStorageKey(op.key), op.value);
189
- else if (op.type === "delete") await base.deleteItem(keyToStorageKey(op.key));
190
- operations.length = 0;
191
- }
192
- };
193
- }
194
- async *query(query, _) {
195
- const keys = await this.base.getAllKeys();
196
- for (const key of keys) {
197
- if (!key.startsWith(this.prefix + ":")) continue;
198
- const datastoreKey = this.storageKeyToKey(key);
199
- if (query.prefix && !datastoreKey.toString().startsWith(query.prefix.toString())) continue;
200
- const value = await this.base.getItem(key);
201
- if (query.filters) {
202
- let match = true;
203
- for (const filter of query.filters) if (!filter({
204
- key: datastoreKey,
205
- value
206
- })) {
207
- match = false;
208
- break;
209
- }
210
- if (!match) continue;
211
- }
212
- yield {
213
- key: datastoreKey,
214
- value
215
- };
216
- }
217
- }
218
- async *queryKeys(query, _) {
219
- const keys = await this.base.getAllKeys();
220
- for (const key of keys) {
221
- if (!key.startsWith(this.prefix + ":")) continue;
222
- const datastoreKey = this.storageKeyToKey(key);
223
- if (query.prefix && !datastoreKey.toString().startsWith(query.prefix.toString())) continue;
224
- yield datastoreKey;
225
- }
226
- }
227
- };
228
- }
229
-
230
- //#endregion
231
- exports.createUnstorageBlockstore = createUnstorageBlockstore;
232
- exports.createUnstorageDatastore = createUnstorageDatastore;
233
- Object.defineProperty(exports, 'driverFactory', {
234
- enumerable: true,
235
- get: function () {
236
- return driverFactory;
237
- }
238
- });
239
- exports.setDriverFactory = setDriverFactory;
240
- //# sourceMappingURL=unstorage-base.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unstorage-base.cjs","names":["BaseBlockstore","DEFAULT_BLOCKSTORE_PREFIX","collectAsyncIterable","CID","Key"],"sources":["../../../src/blockstore/unstorage-base.ts"],"sourcesContent":["import { BaseBlockstore } from \"blockstore-core\";\nimport type { InputPair, Pair as BlockstorePair } from \"interface-blockstore\";\nimport type {\n AbortOptions,\n Await,\n AwaitGenerator,\n AwaitIterable,\n} from \"interface-store\";\nimport { CID } from \"multiformats/cid\";\nimport { createStorage, type Driver, type Storage } from \"unstorage\";\nimport { DEFAULT_BLOCKSTORE_PREFIX } from \"@/types/constants\";\nimport type { Batch, Datastore, KeyQuery, Query } from \"interface-datastore\";\nimport { Key, Pair } from \"interface-datastore\";\nimport { collectAsyncIterable } from \"@/utils/stream\";\n\n\n\nexport interface UnstorageBlockstoreOptions {\n storage?: Storage;\n prefix?: string;\n driver?: Driver;\n base?: string;\n datastorePrefix?: string;\n}\n\n/**\n * prefix: Key prefix for blockstore keys (e.g., \"blockstore\" or \"pinner-helia-blocks\").\n * This is prepended to CID strings in storage keys.\n *\n * base: Base path for the storage driver (e.g., \"pinner:\" for IndexedDB, \"./.pinner-blocks\" for filesystem).\n * This determines where the storage driver stores data.\n */\n\ntype DriverFactory = () => Driver | Promise<Driver>;\n\nexport let driverFactory: DriverFactory | null = null;\n\nexport function setDriverFactory(factory: DriverFactory | null): void {\n driverFactory = factory;\n}\n\nfunction createStorageWithOptions(\n options: UnstorageBlockstoreOptions,\n): Storage {\n return options.storage\n ? options.storage\n : createStorage({ driver: options.driver });\n}\n\nasync function initializeStorage(\n storage: Storage,\n options: UnstorageBlockstoreOptions,\n getDefaultDriver: (base?: string) => Driver | Promise<Driver>,\n): Promise<void> {\n if (options.storage || options.driver) {\n return;\n }\n\n const driver = await getDefaultDriver(options.base);\n Object.assign(storage, createStorage({ driver }));\n}\n\nfunction createUnstorageBase(\n options: UnstorageBlockstoreOptions,\n getDefaultDriver: (base?: string) => Driver | Promise<Driver>,\n) {\n const storage = createStorageWithOptions(options);\n const initialized = initializeStorage(storage, options, getDefaultDriver);\n\n async function ensureInitialized(): Promise<void> {\n await initialized;\n }\n\n async function hasItem(key: string): Promise<boolean> {\n await ensureInitialized();\n return await storage.hasItem(key);\n }\n\n async function getItem(key: string): Promise<Uint8Array> {\n await ensureInitialized();\n const value = await storage.getItemRaw<Uint8Array>(key);\n\n if (value === null) {\n throw new Error(`Item not found: ${key}`);\n }\n\n return value;\n }\n\n async function putItem(key: string, value: Uint8Array): Promise<void> {\n await ensureInitialized();\n await storage.setItemRaw(key, value);\n }\n\n async function deleteItem(key: string): Promise<void> {\n await ensureInitialized();\n await storage.removeItem(key);\n }\n\n async function getAllKeys(): Promise<string[]> {\n await ensureInitialized();\n return await storage.getKeys();\n }\n\n return {\n storage,\n hasItem,\n getItem,\n putItem,\n deleteItem,\n getAllKeys,\n };\n}\n\nexport function createUnstorageBlockstore(\n getDefaultDriver: (base?: string) => Driver | Promise<Driver>,\n): new (\n options?: UnstorageBlockstoreOptions,\n) => InstanceType<typeof BaseBlockstore> {\n return class UnstorageBlockstore extends BaseBlockstore {\n private prefix: string;\n private base: ReturnType<typeof createUnstorageBase>;\n\n constructor(options: UnstorageBlockstoreOptions = {}) {\n super();\n this.prefix = options.prefix ?? DEFAULT_BLOCKSTORE_PREFIX;\n this.base = createUnstorageBase(options, getDefaultDriver);\n }\n\n private keyToStorageKey(key: CID): string {\n return `${this.prefix}:${key.toString()}`;\n }\n\n async has(key: CID, _?: AbortOptions): Promise<boolean> {\n return await this.base.hasItem(this.keyToStorageKey(key));\n }\n\n async put(\n key: CID,\n val: Uint8Array | AwaitIterable<Uint8Array>,\n _?: AbortOptions,\n ): Promise<CID> {\n const storageKey = this.keyToStorageKey(key);\n const bytes =\n val instanceof Uint8Array ? val : await collectAsyncIterable(val);\n await this.base.putItem(storageKey, bytes);\n return key;\n }\n\n async *putMany(\n source: AwaitIterable<InputPair>,\n options?: AbortOptions,\n ): AwaitGenerator<CID> {\n for await (const { cid, bytes } of source) {\n yield await this.put(cid, bytes, options);\n }\n }\n\n async *get(key: CID, _?: AbortOptions): AsyncGenerator<Uint8Array> {\n const storageKey = this.keyToStorageKey(key);\n const value = await this.base.getItem(storageKey);\n yield value;\n }\n\n async *getMany(\n source: AwaitIterable<CID>,\n options?: AbortOptions,\n ): AwaitGenerator<BlockstorePair> {\n for await (const cid of source) {\n yield {\n cid,\n bytes: (async function* () {\n yield* await this.get(cid, options);\n }.call(this)),\n };\n }\n }\n\n async delete(key: CID, _?: AbortOptions): Promise<void> {\n await this.base.deleteItem(this.keyToStorageKey(key));\n }\n\n async *deleteMany(\n source: AwaitIterable<CID>,\n options?: AbortOptions,\n ): AwaitGenerator<CID> {\n for await (const cid of source) {\n await this.delete(cid, options);\n yield cid;\n }\n }\n\n async *getAll(_?: AbortOptions): AwaitGenerator<BlockstorePair> {\n const keys = await this.base.getAllKeys();\n\n for (const key of keys) {\n if (key.startsWith(this.prefix + \":\")) {\n const cidString = key.slice(this.prefix.length + 1);\n try {\n const cid = CID.parse(cidString);\n const value = await this.base.getItem(key);\n\n yield {\n cid,\n bytes: (async function* () {\n yield value;\n })(),\n };\n } catch {\n // Skip invalid keys\n }\n }\n }\n }\n };\n}\n\nexport function createUnstorageDatastore(\n getDefaultDriver: (base?: string) => Driver | Promise<Driver>,\n): new (options?: UnstorageBlockstoreOptions) => Datastore {\n return class UnstorageDatastore implements Datastore {\n private prefix: string;\n private base: ReturnType<typeof createUnstorageBase>;\n\n constructor(options: UnstorageBlockstoreOptions = {}) {\n this.prefix =\n options.datastorePrefix ?? options.prefix ?? DEFAULT_BLOCKSTORE_PREFIX;\n this.base = createUnstorageBase(options, getDefaultDriver);\n }\n\n private keyToStorageKey(key: Key): string {\n return `${this.prefix}:${key.toString()}`;\n }\n\n private storageKeyToKey(storageKey: string): Key {\n return new Key(storageKey.slice(this.prefix.length + 1));\n }\n\n async has(key: Key, _?: AbortOptions): Promise<boolean> {\n return await this.base.hasItem(this.keyToStorageKey(key));\n }\n\n async put(key: Key, val: Uint8Array, _?: AbortOptions): Promise<Key> {\n await this.base.putItem(this.keyToStorageKey(key), val);\n return key;\n }\n\n async *putMany(\n source: AwaitIterable<Pair>,\n options?: AbortOptions,\n ): AsyncGenerator<Key> {\n for await (const { key, value } of source) {\n yield await this.put(key, value, options);\n }\n }\n\n async get(key: Key, _?: AbortOptions): Promise<Uint8Array> {\n const storageKey = this.keyToStorageKey(key);\n try {\n return await this.base.getItem(storageKey);\n } catch (error) {\n throw new Error(`Datastore item not found: ${key.toString()}`);\n }\n }\n\n async *getMany(\n source: AwaitIterable<Key>,\n options?: AbortOptions,\n ): AsyncGenerator<Pair> {\n for await (const key of source) {\n yield {\n key,\n value: await this.get(key, options),\n };\n }\n }\n\n async delete(key: Key, _?: AbortOptions): Promise<void> {\n await this.base.deleteItem(this.keyToStorageKey(key));\n }\n\n async *deleteMany(\n source: AwaitIterable<Key>,\n options?: AbortOptions,\n ): AsyncGenerator<Key> {\n for await (const key of source) {\n await this.delete(key, options);\n yield key;\n }\n }\n\n batch(): Batch {\n const operations: Array<{\n type: \"put\" | \"delete\";\n key: Key;\n value?: Uint8Array;\n }> = [];\n const base = this.base;\n const keyToStorageKey = this.keyToStorageKey.bind(this);\n\n return {\n put(key: Key, value: Uint8Array): void {\n operations.push({ type: \"put\", key, value });\n },\n delete(key: Key): void {\n operations.push({ type: \"delete\", key });\n },\n async commit(): Promise<void> {\n for (const op of operations) {\n if (op.type === \"put\" && op.value !== undefined) {\n await base.putItem(keyToStorageKey(op.key), op.value);\n } else if (op.type === \"delete\") {\n await base.deleteItem(keyToStorageKey(op.key));\n }\n }\n operations.length = 0;\n },\n };\n }\n\n async *query(query: Query, _?: AbortOptions): AsyncGenerator<Pair> {\n const keys = await this.base.getAllKeys();\n\n for (const key of keys) {\n if (!key.startsWith(this.prefix + \":\")) {\n continue;\n }\n\n const datastoreKey = this.storageKeyToKey(key);\n\n if (\n query.prefix &&\n !datastoreKey.toString().startsWith(query.prefix.toString())\n ) {\n continue;\n }\n\n const value = await this.base.getItem(key);\n\n if (query.filters) {\n let match = true;\n for (const filter of query.filters) {\n if (!filter({ key: datastoreKey, value })) {\n match = false;\n break;\n }\n }\n if (!match) continue;\n }\n\n yield {\n key: datastoreKey,\n value,\n };\n }\n }\n\n async *queryKeys(query: KeyQuery, _?: AbortOptions): AsyncGenerator<Key> {\n const keys = await this.base.getAllKeys();\n\n for (const key of keys) {\n if (!key.startsWith(this.prefix + \":\")) {\n continue;\n }\n\n const datastoreKey = this.storageKeyToKey(key);\n\n if (\n query.prefix &&\n !datastoreKey.toString().startsWith(query.prefix.toString())\n ) {\n continue;\n }\n\n yield datastoreKey;\n }\n }\n };\n}\n"],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- import { Driver, Storage } from "unstorage";
2
- import { Datastore } from "interface-datastore";
3
-
4
- //#region src/blockstore/unstorage-base.d.ts
5
- interface UnstorageBlockstoreOptions {
6
- storage?: Storage;
7
- prefix?: string;
8
- driver?: Driver;
9
- base?: string;
10
- datastorePrefix?: string;
11
- }
12
- /**
13
- * prefix: Key prefix for blockstore keys (e.g., "blockstore" or "pinner-helia-blocks").
14
- * This is prepended to CID strings in storage keys.
15
- *
16
- * base: Base path for the storage driver (e.g., "pinner:" for IndexedDB, "./.pinner-blocks" for filesystem).
17
- * This determines where the storage driver stores data.
18
- */
19
- type DriverFactory = () => Driver | Promise<Driver>;
20
- declare function setDriverFactory(factory: DriverFactory | null): void;
21
- //#endregion
22
- export { UnstorageBlockstoreOptions, setDriverFactory };
23
- //# sourceMappingURL=unstorage-base.d.cts.map
@@ -1,39 +0,0 @@
1
- const require_constants = require('../types/constants.cjs');
2
- const require_unstorage_base = require('./unstorage-base.cjs');
3
-
4
- //#region src/blockstore/unstorage.ts
5
- function isBrowser() {
6
- return typeof window !== "undefined" && typeof window.localStorage !== "undefined";
7
- }
8
- async function getDefaultDriver(base) {
9
- if (require_unstorage_base.driverFactory) return await require_unstorage_base.driverFactory();
10
- if (isBrowser()) return (await import("unstorage/drivers/indexedb")).default({ base: base ?? require_constants.DEFAULT_BLOCKSTORE_BASE });
11
- else return (await import("unstorage/drivers/fs-lite")).default({ base: base ?? require_constants.DEFAULT_BLOCKSTORE_FS_BASE });
12
- }
13
- function createBlockstore(options) {
14
- const BlockstoreClass = require_unstorage_base.createUnstorageBlockstore(getDefaultDriver);
15
- return class extends BlockstoreClass {
16
- constructor(instanceOptions) {
17
- super({
18
- ...options,
19
- ...instanceOptions
20
- });
21
- }
22
- };
23
- }
24
- function createDatastore(options) {
25
- const DatastoreClass = require_unstorage_base.createUnstorageDatastore(getDefaultDriver);
26
- return class extends DatastoreClass {
27
- constructor(instanceOptions) {
28
- super({
29
- ...options,
30
- ...instanceOptions
31
- });
32
- }
33
- };
34
- }
35
-
36
- //#endregion
37
- exports.createBlockstore = createBlockstore;
38
- exports.createDatastore = createDatastore;
39
- //# sourceMappingURL=unstorage.cjs.map