@lumeweb/pinner 0.0.1 → 0.1.1

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 (200) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +707 -28
  3. package/dist/cjs/_virtual/rolldown_runtime.cjs +29 -0
  4. package/dist/cjs/adapters/pinata/index.cjs +6 -0
  5. package/dist/cjs/adapters/pinata/legacy/adapter.cjs +83 -0
  6. package/dist/cjs/adapters/pinata/legacy/adapter.cjs.map +1 -0
  7. package/dist/cjs/adapters/pinata/legacy/adapter.d.cts +74 -0
  8. package/dist/cjs/adapters/pinata/legacy/index.cjs +1 -0
  9. package/dist/cjs/adapters/pinata/shared/index.cjs +1 -0
  10. package/dist/cjs/adapters/pinata/shared/types.d.cts +218 -0
  11. package/dist/cjs/adapters/pinata/shared/utils.cjs +83 -0
  12. package/dist/cjs/adapters/pinata/shared/utils.cjs.map +1 -0
  13. package/dist/cjs/adapters/pinata/v2/adapter-interface.d.cts +198 -0
  14. package/dist/cjs/adapters/pinata/v2/adapter.cjs +636 -0
  15. package/dist/cjs/adapters/pinata/v2/adapter.cjs.map +1 -0
  16. package/dist/cjs/adapters/pinata/v2/adapter.d.cts +17 -0
  17. package/dist/cjs/adapters/pinata/v2/index.cjs +1 -0
  18. package/dist/cjs/adapters/pinata/v2/types.d.cts +308 -0
  19. package/dist/cjs/blockstore/index.cjs +2 -0
  20. package/dist/cjs/blockstore/unstorage-base.cjs +240 -0
  21. package/dist/cjs/blockstore/unstorage-base.cjs.map +1 -0
  22. package/dist/cjs/blockstore/unstorage-base.d.cts +23 -0
  23. package/dist/cjs/blockstore/unstorage.cjs +39 -0
  24. package/dist/cjs/blockstore/unstorage.cjs.map +1 -0
  25. package/dist/cjs/blockstore/unstorage.d.cts +36 -0
  26. package/dist/cjs/config.d.cts +51 -0
  27. package/dist/cjs/encoder/base64.cjs +38 -0
  28. package/dist/cjs/encoder/base64.cjs.map +1 -0
  29. package/dist/cjs/encoder/csv/csv-formatter.cjs +81 -0
  30. package/dist/cjs/encoder/csv/csv-formatter.cjs.map +1 -0
  31. package/dist/cjs/encoder/csv/field-formatter.cjs +76 -0
  32. package/dist/cjs/encoder/csv/field-formatter.cjs.map +1 -0
  33. package/dist/cjs/encoder/csv/row-formatter.cjs +159 -0
  34. package/dist/cjs/encoder/csv/row-formatter.cjs.map +1 -0
  35. package/dist/cjs/encoder/csv.cjs +44 -0
  36. package/dist/cjs/encoder/csv.cjs.map +1 -0
  37. package/dist/cjs/encoder/error.cjs +19 -0
  38. package/dist/cjs/encoder/error.cjs.map +1 -0
  39. package/dist/cjs/encoder/index.cjs +6 -0
  40. package/dist/cjs/encoder/json.cjs +36 -0
  41. package/dist/cjs/encoder/json.cjs.map +1 -0
  42. package/dist/cjs/encoder/text.cjs +35 -0
  43. package/dist/cjs/encoder/text.cjs.map +1 -0
  44. package/dist/cjs/encoder/url.cjs +39 -0
  45. package/dist/cjs/encoder/url.cjs.map +1 -0
  46. package/dist/cjs/errors/index.cjs +104 -0
  47. package/dist/cjs/errors/index.cjs.map +1 -0
  48. package/dist/cjs/errors/index.d.cts +47 -0
  49. package/dist/cjs/index.cjs +44 -0
  50. package/dist/cjs/index.d.cts +16 -0
  51. package/dist/cjs/pin/client.cjs +98 -0
  52. package/dist/cjs/pin/client.cjs.map +1 -0
  53. package/dist/cjs/pin/index.cjs +1 -0
  54. package/dist/cjs/pinner.cjs +132 -0
  55. package/dist/cjs/pinner.cjs.map +1 -0
  56. package/dist/cjs/pinner.d.cts +81 -0
  57. package/dist/cjs/types/constants.cjs +39 -0
  58. package/dist/cjs/types/constants.cjs.map +1 -0
  59. package/dist/cjs/types/mime-types.cjs +11 -0
  60. package/dist/cjs/types/mime-types.cjs.map +1 -0
  61. package/dist/cjs/types/mime-types.d.cts +7 -0
  62. package/dist/cjs/types/pin.d.cts +78 -0
  63. package/dist/cjs/types/type-guards.cjs +20 -0
  64. package/dist/cjs/types/type-guards.cjs.map +1 -0
  65. package/dist/cjs/types/type-guards.d.cts +15 -0
  66. package/dist/cjs/types/upload.cjs +18 -0
  67. package/dist/cjs/types/upload.cjs.map +1 -0
  68. package/dist/cjs/types/upload.d.cts +189 -0
  69. package/dist/cjs/upload/base-upload.cjs +135 -0
  70. package/dist/cjs/upload/base-upload.cjs.map +1 -0
  71. package/dist/cjs/upload/builder.cjs +174 -0
  72. package/dist/cjs/upload/builder.cjs.map +1 -0
  73. package/dist/cjs/upload/builder.d.cts +60 -0
  74. package/dist/cjs/upload/car.cjs +129 -0
  75. package/dist/cjs/upload/car.cjs.map +1 -0
  76. package/dist/cjs/upload/car.d.cts +19 -0
  77. package/dist/cjs/upload/constants.cjs +9 -0
  78. package/dist/cjs/upload/constants.cjs.map +1 -0
  79. package/dist/cjs/upload/index.cjs +8 -0
  80. package/dist/cjs/upload/manager.cjs +249 -0
  81. package/dist/cjs/upload/manager.cjs.map +1 -0
  82. package/dist/cjs/upload/manager.d.cts +35 -0
  83. package/dist/cjs/upload/normalize.cjs +28 -0
  84. package/dist/cjs/upload/normalize.cjs.map +1 -0
  85. package/dist/cjs/upload/tus-upload.cjs +74 -0
  86. package/dist/cjs/upload/tus-upload.cjs.map +1 -0
  87. package/dist/cjs/upload/xhr-upload.cjs +41 -0
  88. package/dist/cjs/upload/xhr-upload.cjs.map +1 -0
  89. package/dist/cjs/utils/env.cjs +12 -0
  90. package/dist/cjs/utils/env.cjs.map +1 -0
  91. package/dist/cjs/utils/stream.cjs +141 -0
  92. package/dist/cjs/utils/stream.cjs.map +1 -0
  93. package/dist/cjs/utils/stream.d.cts +23 -0
  94. package/dist/cjs/utils/tus-patch.cjs +50 -0
  95. package/dist/cjs/utils/tus-patch.cjs.map +1 -0
  96. package/dist/cjs/utils/validation.cjs +62 -0
  97. package/dist/cjs/utils/validation.cjs.map +1 -0
  98. package/dist/esm/_virtual/rolldown_runtime.js +8 -0
  99. package/dist/esm/adapters/pinata/index.d.ts +7 -0
  100. package/dist/esm/adapters/pinata/index.js +6 -0
  101. package/dist/esm/adapters/pinata/legacy/adapter.d.ts +74 -0
  102. package/dist/esm/adapters/pinata/legacy/adapter.js +83 -0
  103. package/dist/esm/adapters/pinata/legacy/adapter.js.map +1 -0
  104. package/dist/esm/adapters/pinata/legacy/index.d.ts +1 -0
  105. package/dist/esm/adapters/pinata/legacy/index.js +1 -0
  106. package/dist/esm/adapters/pinata/shared/index.d.ts +2 -0
  107. package/dist/esm/adapters/pinata/shared/index.js +1 -0
  108. package/dist/esm/adapters/pinata/shared/types.d.ts +218 -0
  109. package/dist/esm/adapters/pinata/shared/utils.d.ts +1 -0
  110. package/dist/esm/adapters/pinata/shared/utils.js +78 -0
  111. package/dist/esm/adapters/pinata/shared/utils.js.map +1 -0
  112. package/dist/esm/adapters/pinata/v2/adapter-interface.d.ts +198 -0
  113. package/dist/esm/adapters/pinata/v2/adapter.d.ts +17 -0
  114. package/dist/esm/adapters/pinata/v2/adapter.js +636 -0
  115. package/dist/esm/adapters/pinata/v2/adapter.js.map +1 -0
  116. package/dist/esm/adapters/pinata/v2/index.d.ts +3 -0
  117. package/dist/esm/adapters/pinata/v2/index.js +1 -0
  118. package/dist/esm/adapters/pinata/v2/types.d.ts +308 -0
  119. package/dist/esm/blockstore/index.d.ts +2 -0
  120. package/dist/esm/blockstore/index.js +2 -0
  121. package/dist/esm/blockstore/unstorage-base.d.ts +23 -0
  122. package/dist/esm/blockstore/unstorage-base.js +231 -0
  123. package/dist/esm/blockstore/unstorage-base.js.map +1 -0
  124. package/dist/esm/blockstore/unstorage.d.ts +36 -0
  125. package/dist/esm/blockstore/unstorage.js +38 -0
  126. package/dist/esm/blockstore/unstorage.js.map +1 -0
  127. package/dist/esm/config.d.ts +51 -0
  128. package/dist/esm/encoder/base64.js +37 -0
  129. package/dist/esm/encoder/base64.js.map +1 -0
  130. package/dist/esm/encoder/csv/csv-formatter.js +81 -0
  131. package/dist/esm/encoder/csv/csv-formatter.js.map +1 -0
  132. package/dist/esm/encoder/csv/field-formatter.js +75 -0
  133. package/dist/esm/encoder/csv/field-formatter.js.map +1 -0
  134. package/dist/esm/encoder/csv/row-formatter.js +159 -0
  135. package/dist/esm/encoder/csv/row-formatter.js.map +1 -0
  136. package/dist/esm/encoder/csv.js +43 -0
  137. package/dist/esm/encoder/csv.js.map +1 -0
  138. package/dist/esm/encoder/error.js +18 -0
  139. package/dist/esm/encoder/error.js.map +1 -0
  140. package/dist/esm/encoder/index.js +6 -0
  141. package/dist/esm/encoder/json.js +35 -0
  142. package/dist/esm/encoder/json.js.map +1 -0
  143. package/dist/esm/encoder/text.js +34 -0
  144. package/dist/esm/encoder/text.js.map +1 -0
  145. package/dist/esm/encoder/url.js +36 -0
  146. package/dist/esm/encoder/url.js.map +1 -0
  147. package/dist/esm/errors/index.d.ts +47 -0
  148. package/dist/esm/errors/index.js +93 -0
  149. package/dist/esm/errors/index.js.map +1 -0
  150. package/dist/esm/index.d.ts +18 -0
  151. package/dist/esm/index.js +15 -0
  152. package/dist/esm/pin/client.js +97 -0
  153. package/dist/esm/pin/client.js.map +1 -0
  154. package/dist/esm/pin/index.js +1 -0
  155. package/dist/esm/pinner.d.ts +81 -0
  156. package/dist/esm/pinner.js +131 -0
  157. package/dist/esm/pinner.js.map +1 -0
  158. package/dist/esm/types/constants.js +33 -0
  159. package/dist/esm/types/constants.js.map +1 -0
  160. package/dist/esm/types/mime-types.d.ts +7 -0
  161. package/dist/esm/types/mime-types.js +8 -0
  162. package/dist/esm/types/mime-types.js.map +1 -0
  163. package/dist/esm/types/pin.d.ts +78 -0
  164. package/dist/esm/types/type-guards.d.ts +15 -0
  165. package/dist/esm/types/type-guards.js +19 -0
  166. package/dist/esm/types/type-guards.js.map +1 -0
  167. package/dist/esm/types/upload.d.ts +189 -0
  168. package/dist/esm/types/upload.js +16 -0
  169. package/dist/esm/types/upload.js.map +1 -0
  170. package/dist/esm/upload/base-upload.js +132 -0
  171. package/dist/esm/upload/base-upload.js.map +1 -0
  172. package/dist/esm/upload/builder.d.ts +60 -0
  173. package/dist/esm/upload/builder.js +173 -0
  174. package/dist/esm/upload/builder.js.map +1 -0
  175. package/dist/esm/upload/car.d.ts +19 -0
  176. package/dist/esm/upload/car.js +125 -0
  177. package/dist/esm/upload/car.js.map +1 -0
  178. package/dist/esm/upload/constants.js +7 -0
  179. package/dist/esm/upload/constants.js.map +1 -0
  180. package/dist/esm/upload/index.js +8 -0
  181. package/dist/esm/upload/manager.d.ts +35 -0
  182. package/dist/esm/upload/manager.js +248 -0
  183. package/dist/esm/upload/manager.js.map +1 -0
  184. package/dist/esm/upload/normalize.js +28 -0
  185. package/dist/esm/upload/normalize.js.map +1 -0
  186. package/dist/esm/upload/tus-upload.js +72 -0
  187. package/dist/esm/upload/tus-upload.js.map +1 -0
  188. package/dist/esm/upload/xhr-upload.js +39 -0
  189. package/dist/esm/upload/xhr-upload.js.map +1 -0
  190. package/dist/esm/utils/env.js +11 -0
  191. package/dist/esm/utils/env.js.map +1 -0
  192. package/dist/esm/utils/stream.d.ts +23 -0
  193. package/dist/esm/utils/stream.js +134 -0
  194. package/dist/esm/utils/stream.js.map +1 -0
  195. package/dist/esm/utils/tus-patch.js +51 -0
  196. package/dist/esm/utils/tus-patch.js.map +1 -0
  197. package/dist/esm/utils/validation.js +60 -0
  198. package/dist/esm/utils/validation.js.map +1 -0
  199. package/package.json +95 -8
  200. package/public/mockServiceWorker.js +349 -0
@@ -0,0 +1,3 @@
1
+ import { AccessLinkOptions, AnalyticsQuery, CidVersion, DeleteResponse, FileListItem, FileListResponse, GetGroupOptions, GroupCIDOptions, GroupListResponse, GroupOptions, GroupResponseItem, PinByCIDResponse, PinQueueItem, PinQueueResponse, PinataConfig, PinataMetadata, SignedUploadUrlOptions, SwapCidOptions, SwapCidResponse, SwapHistoryOptions, TimeIntervalAnalyticsQuery, TimeIntervalAnalyticsResponse, TimePeriodItem, TopAnalyticsItem, TopAnalyticsQuery, TopAnalyticsResponse, UpdateFileOptions, UpdateGroupFilesResponse, UpdateGroupOptions, UploadCIDOptions, UploadOptions, UploadResponse } from "./types.js";
2
+ import { PinataAdapter } from "./adapter-interface.js";
3
+ import { pinataAdapter } from "./adapter.js";
@@ -0,0 +1 @@
1
+ import { pinataAdapter } from "./adapter.js";
@@ -0,0 +1,308 @@
1
+ //#region src/adapters/pinata/v2/types.d.ts
2
+ /**
3
+ * Pinata SDK 2.x Types
4
+ * Source: https://github.com/PinataCloud/pinata/commit/cdc0c06116aaadaf7c4b287a2673cd23b6ba1125
5
+ * - src/core/types/index.ts
6
+ *
7
+ * Copyright © 2024 Pinata Cloud Technologies
8
+ * Type definitions adapted from Pinata SDK for compatibility.
9
+ * Original Pinata SDK: https://github.com/PinataCloud/pinata
10
+ */
11
+ /**
12
+ * CID version type
13
+ */
14
+ type CidVersion = "v0" | "v1";
15
+ /**
16
+ * Pinata configuration options
17
+ */
18
+ type PinataConfig = {
19
+ pinataJwt?: string;
20
+ pinataGateway?: string;
21
+ pinataGatewayKey?: string;
22
+ customHeaders?: Record<string, string>;
23
+ endpointUrl?: string;
24
+ uploadUrl?: string;
25
+ legacyUploadUrl?: string;
26
+ };
27
+ /**
28
+ * Pinata metadata
29
+ */
30
+ type PinataMetadata = {
31
+ name?: string;
32
+ keyvalues?: Record<string, string>;
33
+ };
34
+ /**
35
+ * Upload options
36
+ */
37
+ type UploadOptions = {
38
+ metadata?: PinataMetadata;
39
+ keys?: string;
40
+ groupId?: string;
41
+ vectorize?: boolean;
42
+ url?: string;
43
+ streamable?: boolean;
44
+ peerAddresses?: string[];
45
+ car?: boolean;
46
+ cid_version?: CidVersion;
47
+ };
48
+ /**
49
+ * Upload response
50
+ */
51
+ type UploadResponse = {
52
+ id: string;
53
+ name: string;
54
+ cid: string;
55
+ size: number;
56
+ created_at: string;
57
+ number_of_files: number;
58
+ mime_type: string;
59
+ group_id: string | null;
60
+ keyvalues: Record<string, string>;
61
+ vectorized: boolean;
62
+ network: string;
63
+ };
64
+ /**
65
+ * Upload CID options
66
+ */
67
+ type UploadCIDOptions = {
68
+ metadata?: PinataMetadata;
69
+ peerAddresses?: string[];
70
+ keys?: string;
71
+ groupId?: string;
72
+ };
73
+ /**
74
+ * Pin by CID response
75
+ */
76
+ type PinByCIDResponse = {
77
+ id: string;
78
+ cid: string;
79
+ date_queued: string;
80
+ name: string;
81
+ status: string;
82
+ keyvalues: Record<string, any> | null;
83
+ host_nodes: string[] | null;
84
+ group_id: string | null;
85
+ };
86
+ /**
87
+ * Signed upload URL options
88
+ */
89
+ type SignedUploadUrlOptions = {
90
+ date?: number;
91
+ expires: number;
92
+ groupId?: string;
93
+ name?: string;
94
+ keyvalues?: Record<string, string>;
95
+ vectorize?: boolean;
96
+ maxFileSize?: number;
97
+ mimeTypes?: string[];
98
+ streamable?: boolean;
99
+ car?: boolean;
100
+ cid_version?: CidVersion;
101
+ };
102
+ /**
103
+ * File list item
104
+ */
105
+ type FileListItem = {
106
+ id: string;
107
+ name: string | null;
108
+ cid: "pending" | string;
109
+ size: number;
110
+ number_of_files: number;
111
+ mime_type: string;
112
+ keyvalues: Record<string, string>;
113
+ group_id: string | null;
114
+ created_at: string;
115
+ };
116
+ /**
117
+ * File list response
118
+ */
119
+ type FileListResponse = {
120
+ files: FileListItem[];
121
+ next_page_token: string;
122
+ };
123
+ /**
124
+ * Update file options
125
+ */
126
+ type UpdateFileOptions = {
127
+ id: string;
128
+ name?: string;
129
+ keyvalues?: Record<string, string>;
130
+ };
131
+ /**
132
+ * Delete response
133
+ */
134
+ type DeleteResponse = {
135
+ id: string;
136
+ status: string;
137
+ };
138
+ /**
139
+ * Pin queue item
140
+ */
141
+ type PinQueueItem = {
142
+ id: string;
143
+ cid?: string;
144
+ ipfs_pin_hash?: string;
145
+ date_queued: string;
146
+ name: string;
147
+ status: string;
148
+ keyvalues: any;
149
+ host_nodes: string[];
150
+ pin_policy: {
151
+ regions: {
152
+ id: string;
153
+ desiredReplicationCount: number;
154
+ }[];
155
+ version: number;
156
+ };
157
+ };
158
+ /**
159
+ * Pin queue response
160
+ */
161
+ type PinQueueResponse = {
162
+ jobs: PinQueueItem[];
163
+ next_page_token: string;
164
+ };
165
+ /**
166
+ * Swap CID options
167
+ */
168
+ type SwapCidOptions = {
169
+ cid: string;
170
+ swapCid: string;
171
+ };
172
+ /**
173
+ * Swap history options
174
+ */
175
+ type SwapHistoryOptions = {
176
+ cid: string;
177
+ domain: string;
178
+ };
179
+ /**
180
+ * Swap CID response
181
+ */
182
+ type SwapCidResponse = {
183
+ mapped_cid: string;
184
+ created_at: string;
185
+ };
186
+ /**
187
+ * Access link options
188
+ */
189
+ type AccessLinkOptions = {
190
+ cid: string;
191
+ date?: number;
192
+ expires: number;
193
+ gateway?: string;
194
+ };
195
+ /**
196
+ * Group options
197
+ */
198
+ type GroupOptions = {
199
+ name: string;
200
+ isPublic?: boolean;
201
+ };
202
+ /**
203
+ * Update group options
204
+ */
205
+ type UpdateGroupOptions = {
206
+ groupId: string;
207
+ name?: string;
208
+ isPublic?: boolean;
209
+ };
210
+ /**
211
+ * Get group options
212
+ */
213
+ type GetGroupOptions = {
214
+ groupId: string;
215
+ };
216
+ /**
217
+ * Group response item
218
+ */
219
+ type GroupResponseItem = {
220
+ id: string;
221
+ is_public: boolean;
222
+ name: string;
223
+ createdAt: string;
224
+ };
225
+ /**
226
+ * Group list response
227
+ */
228
+ type GroupListResponse = {
229
+ groups: GroupResponseItem[];
230
+ next_page_token: string;
231
+ };
232
+ /**
233
+ * Group CID options
234
+ */
235
+ type GroupCIDOptions = {
236
+ groupId: string;
237
+ files: string[];
238
+ };
239
+ /**
240
+ * Update group files response
241
+ */
242
+ type UpdateGroupFilesResponse = {
243
+ id: string;
244
+ status: string;
245
+ };
246
+ /**
247
+ * Analytics query
248
+ */
249
+ type AnalyticsQuery = {
250
+ gateway_domain: string;
251
+ start_date: string;
252
+ end_date: string;
253
+ cid?: string;
254
+ file_name?: string;
255
+ user_agent?: string;
256
+ country?: string;
257
+ region?: string;
258
+ referer?: string;
259
+ limit?: number;
260
+ sort_order?: "asc" | "desc";
261
+ };
262
+ /**
263
+ * Top analytics query
264
+ */
265
+ type TopAnalyticsQuery = AnalyticsQuery & {
266
+ sort_by: "requests" | "bandwidth";
267
+ attribute: "cid" | "country" | "region" | "user_agent" | "referer" | "file_name";
268
+ };
269
+ /**
270
+ * Top analytics response
271
+ */
272
+ type TopAnalyticsResponse = {
273
+ data: TopAnalyticsItem[];
274
+ };
275
+ /**
276
+ * Top analytics item
277
+ */
278
+ type TopAnalyticsItem = {
279
+ value: string;
280
+ requests: number;
281
+ bandwidth: number;
282
+ };
283
+ /**
284
+ * Time interval analytics query
285
+ */
286
+ type TimeIntervalAnalyticsQuery = AnalyticsQuery & {
287
+ sort_by?: "requests" | "bandwidth";
288
+ date_interval: "day" | "week";
289
+ };
290
+ /**
291
+ * Time period item
292
+ */
293
+ type TimePeriodItem = {
294
+ period_start_time: string;
295
+ requests: number;
296
+ bandwidth: number;
297
+ };
298
+ /**
299
+ * Time interval analytics response
300
+ */
301
+ type TimeIntervalAnalyticsResponse = {
302
+ total_requests: number;
303
+ total_bandwidth: number;
304
+ time_periods: TimePeriodItem[];
305
+ };
306
+ //#endregion
307
+ export { AccessLinkOptions, AnalyticsQuery, CidVersion, DeleteResponse, FileListItem, FileListResponse, GetGroupOptions, GroupCIDOptions, GroupListResponse, GroupOptions, GroupResponseItem, PinByCIDResponse, PinQueueItem, PinQueueResponse, PinataConfig, PinataMetadata, SignedUploadUrlOptions, SwapCidOptions, SwapCidResponse, SwapHistoryOptions, TimeIntervalAnalyticsQuery, TimeIntervalAnalyticsResponse, TimePeriodItem, TopAnalyticsItem, TopAnalyticsQuery, TopAnalyticsResponse, UpdateFileOptions, UpdateGroupFilesResponse, UpdateGroupOptions, UploadCIDOptions, UploadOptions, UploadResponse };
308
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,2 @@
1
+ import { UnstorageBlockstoreOptions, setDriverFactory } from "./unstorage-base.js";
2
+ import { createBlockstore, createDatastore } from "./unstorage.js";
@@ -0,0 +1,2 @@
1
+ import { setDriverFactory } from "./unstorage-base.js";
2
+ import { createBlockstore, createDatastore } from "./unstorage.js";
@@ -0,0 +1,23 @@
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.ts.map
@@ -0,0 +1,231 @@
1
+ import { collectAsyncIterable } from "../utils/stream.js";
2
+ import { DEFAULT_BLOCKSTORE_PREFIX } from "../types/constants.js";
3
+ import { BaseBlockstore } from "/home/runner/work/web/web/node_modules/.pnpm/blockstore-core@6.1.2/node_modules/blockstore-core/dist/src/index.js";
4
+ import { CID } from "multiformats/cid";
5
+ import { createStorage } from "unstorage";
6
+ import { Key } from "interface-datastore";
7
+
8
+ //#region src/blockstore/unstorage-base.ts
9
+ let driverFactory = null;
10
+ function setDriverFactory(factory) {
11
+ driverFactory = factory;
12
+ }
13
+ function createStorageWithOptions(options) {
14
+ return options.storage ? options.storage : createStorage({ driver: options.driver });
15
+ }
16
+ async function initializeStorage(storage, options, getDefaultDriver) {
17
+ if (options.storage || options.driver) return;
18
+ const driver = await getDefaultDriver(options.base);
19
+ Object.assign(storage, createStorage({ driver }));
20
+ }
21
+ function createUnstorageBase(options, getDefaultDriver) {
22
+ const storage = createStorageWithOptions(options);
23
+ const initialized = initializeStorage(storage, options, getDefaultDriver);
24
+ async function ensureInitialized() {
25
+ await initialized;
26
+ }
27
+ async function hasItem(key) {
28
+ await ensureInitialized();
29
+ return await storage.hasItem(key);
30
+ }
31
+ async function getItem(key) {
32
+ await ensureInitialized();
33
+ const value = await storage.getItemRaw(key);
34
+ if (value === null) throw new Error(`Item not found: ${key}`);
35
+ return value;
36
+ }
37
+ async function putItem(key, value) {
38
+ await ensureInitialized();
39
+ await storage.setItemRaw(key, value);
40
+ }
41
+ async function deleteItem(key) {
42
+ await ensureInitialized();
43
+ await storage.removeItem(key);
44
+ }
45
+ async function getAllKeys() {
46
+ await ensureInitialized();
47
+ return await storage.getKeys();
48
+ }
49
+ return {
50
+ storage,
51
+ hasItem,
52
+ getItem,
53
+ putItem,
54
+ deleteItem,
55
+ getAllKeys
56
+ };
57
+ }
58
+ function createUnstorageBlockstore(getDefaultDriver) {
59
+ return class UnstorageBlockstore extends BaseBlockstore {
60
+ prefix;
61
+ base;
62
+ constructor(options = {}) {
63
+ super();
64
+ this.prefix = options.prefix ?? DEFAULT_BLOCKSTORE_PREFIX;
65
+ this.base = createUnstorageBase(options, getDefaultDriver);
66
+ }
67
+ keyToStorageKey(key) {
68
+ return `${this.prefix}:${key.toString()}`;
69
+ }
70
+ async has(key, _) {
71
+ return await this.base.hasItem(this.keyToStorageKey(key));
72
+ }
73
+ async put(key, val, _) {
74
+ const storageKey = this.keyToStorageKey(key);
75
+ const bytes = val instanceof Uint8Array ? val : await collectAsyncIterable(val);
76
+ await this.base.putItem(storageKey, bytes);
77
+ return key;
78
+ }
79
+ async *putMany(source, options) {
80
+ for await (const { cid, bytes } of source) yield await this.put(cid, bytes, options);
81
+ }
82
+ async *get(key, _) {
83
+ const storageKey = this.keyToStorageKey(key);
84
+ yield await this.base.getItem(storageKey);
85
+ }
86
+ async *getMany(source, options) {
87
+ for await (const cid of source) yield {
88
+ cid,
89
+ bytes: async function* () {
90
+ yield* await this.get(cid, options);
91
+ }.call(this)
92
+ };
93
+ }
94
+ async delete(key, _) {
95
+ await this.base.deleteItem(this.keyToStorageKey(key));
96
+ }
97
+ async *deleteMany(source, options) {
98
+ for await (const cid of source) {
99
+ await this.delete(cid, options);
100
+ yield cid;
101
+ }
102
+ }
103
+ async *getAll(_) {
104
+ const keys = await this.base.getAllKeys();
105
+ for (const key of keys) if (key.startsWith(this.prefix + ":")) {
106
+ const cidString = key.slice(this.prefix.length + 1);
107
+ try {
108
+ const cid = CID.parse(cidString);
109
+ const value = await this.base.getItem(key);
110
+ yield {
111
+ cid,
112
+ bytes: (async function* () {
113
+ yield value;
114
+ })()
115
+ };
116
+ } catch {}
117
+ }
118
+ }
119
+ };
120
+ }
121
+ function createUnstorageDatastore(getDefaultDriver) {
122
+ return class UnstorageDatastore {
123
+ prefix;
124
+ base;
125
+ constructor(options = {}) {
126
+ this.prefix = options.datastorePrefix ?? options.prefix ?? DEFAULT_BLOCKSTORE_PREFIX;
127
+ this.base = createUnstorageBase(options, getDefaultDriver);
128
+ }
129
+ keyToStorageKey(key) {
130
+ return `${this.prefix}:${key.toString()}`;
131
+ }
132
+ storageKeyToKey(storageKey) {
133
+ return new Key(storageKey.slice(this.prefix.length + 1));
134
+ }
135
+ async has(key, _) {
136
+ return await this.base.hasItem(this.keyToStorageKey(key));
137
+ }
138
+ async put(key, val, _) {
139
+ await this.base.putItem(this.keyToStorageKey(key), val);
140
+ return key;
141
+ }
142
+ async *putMany(source, options) {
143
+ for await (const { key, value } of source) yield await this.put(key, value, options);
144
+ }
145
+ async get(key, _) {
146
+ const storageKey = this.keyToStorageKey(key);
147
+ try {
148
+ return await this.base.getItem(storageKey);
149
+ } catch (error) {
150
+ throw new Error(`Datastore item not found: ${key.toString()}`);
151
+ }
152
+ }
153
+ async *getMany(source, options) {
154
+ for await (const key of source) yield {
155
+ key,
156
+ value: await this.get(key, options)
157
+ };
158
+ }
159
+ async delete(key, _) {
160
+ await this.base.deleteItem(this.keyToStorageKey(key));
161
+ }
162
+ async *deleteMany(source, options) {
163
+ for await (const key of source) {
164
+ await this.delete(key, options);
165
+ yield key;
166
+ }
167
+ }
168
+ batch() {
169
+ const operations = [];
170
+ const base = this.base;
171
+ const keyToStorageKey = this.keyToStorageKey.bind(this);
172
+ return {
173
+ put(key, value) {
174
+ operations.push({
175
+ type: "put",
176
+ key,
177
+ value
178
+ });
179
+ },
180
+ delete(key) {
181
+ operations.push({
182
+ type: "delete",
183
+ key
184
+ });
185
+ },
186
+ async commit() {
187
+ for (const op of operations) if (op.type === "put" && op.value !== void 0) await base.putItem(keyToStorageKey(op.key), op.value);
188
+ else if (op.type === "delete") await base.deleteItem(keyToStorageKey(op.key));
189
+ operations.length = 0;
190
+ }
191
+ };
192
+ }
193
+ async *query(query, _) {
194
+ const keys = await this.base.getAllKeys();
195
+ for (const key of keys) {
196
+ if (!key.startsWith(this.prefix + ":")) continue;
197
+ const datastoreKey = this.storageKeyToKey(key);
198
+ if (query.prefix && !datastoreKey.toString().startsWith(query.prefix.toString())) continue;
199
+ const value = await this.base.getItem(key);
200
+ if (query.filters) {
201
+ let match = true;
202
+ for (const filter of query.filters) if (!filter({
203
+ key: datastoreKey,
204
+ value
205
+ })) {
206
+ match = false;
207
+ break;
208
+ }
209
+ if (!match) continue;
210
+ }
211
+ yield {
212
+ key: datastoreKey,
213
+ value
214
+ };
215
+ }
216
+ }
217
+ async *queryKeys(query, _) {
218
+ const keys = await this.base.getAllKeys();
219
+ for (const key of keys) {
220
+ if (!key.startsWith(this.prefix + ":")) continue;
221
+ const datastoreKey = this.storageKeyToKey(key);
222
+ if (query.prefix && !datastoreKey.toString().startsWith(query.prefix.toString())) continue;
223
+ yield datastoreKey;
224
+ }
225
+ }
226
+ };
227
+ }
228
+
229
+ //#endregion
230
+ export { createUnstorageBlockstore, createUnstorageDatastore, driverFactory, setDriverFactory };
231
+ //# sourceMappingURL=unstorage-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unstorage-base.js","names":[],"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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"}
@@ -0,0 +1,36 @@
1
+ import { UnstorageBlockstoreOptions, setDriverFactory } from "./unstorage-base.js";
2
+ import * as interface_datastore0 from "interface-datastore";
3
+ import * as multiformats0 from "multiformats";
4
+ import * as interface_store0 from "interface-store";
5
+ import * as interface_blockstore0 from "interface-blockstore";
6
+
7
+ //#region src/blockstore/unstorage.d.ts
8
+ declare function createBlockstore(options?: UnstorageBlockstoreOptions): {
9
+ new (instanceOptions?: UnstorageBlockstoreOptions): {
10
+ has(key: multiformats0.CID, options?: interface_store0.AbortOptions): interface_store0.Await<boolean>;
11
+ put(key: multiformats0.CID, val: Uint8Array | interface_store0.AwaitIterable<Uint8Array>, options?: interface_store0.AbortOptions): interface_store0.Await<multiformats0.CID>;
12
+ putMany(source: interface_store0.AwaitIterable<interface_blockstore0.InputPair>, options?: interface_store0.AbortOptions): interface_store0.AwaitGenerator<multiformats0.CID>;
13
+ get(key: multiformats0.CID, options?: interface_store0.AbortOptions): interface_store0.AwaitGenerator<Uint8Array>;
14
+ getMany(source: interface_store0.AwaitIterable<multiformats0.CID>, options?: interface_store0.AbortOptions): interface_store0.AwaitGenerator<interface_blockstore0.Pair>;
15
+ delete(key: multiformats0.CID, options?: interface_store0.AbortOptions): interface_store0.Await<void>;
16
+ deleteMany(source: interface_store0.AwaitIterable<multiformats0.CID>, options?: interface_store0.AbortOptions): interface_store0.AwaitGenerator<multiformats0.CID>;
17
+ getAll(options?: interface_store0.AbortOptions): interface_store0.AwaitGenerator<interface_blockstore0.Pair>;
18
+ };
19
+ };
20
+ declare function createDatastore(options?: UnstorageBlockstoreOptions): {
21
+ new (instanceOptions?: UnstorageBlockstoreOptions): {
22
+ batch(): interface_datastore0.Batch<{}>;
23
+ query(query: interface_datastore0.Query, options?: interface_store0.AbortOptions | undefined): interface_store0.AwaitGenerator<interface_datastore0.Pair>;
24
+ queryKeys(query: interface_datastore0.KeyQuery, options?: interface_store0.AbortOptions | undefined): interface_store0.AwaitGenerator<interface_datastore0.Key>;
25
+ has(key: interface_datastore0.Key, options?: interface_store0.AbortOptions | undefined): interface_store0.Await<boolean>;
26
+ put(key: interface_datastore0.Key, val: Uint8Array<ArrayBufferLike>, options?: interface_store0.AbortOptions | undefined): interface_store0.Await<interface_datastore0.Key>;
27
+ putMany(source: interface_store0.AwaitIterable<interface_datastore0.Pair>, options?: interface_store0.AbortOptions | undefined): interface_store0.AwaitGenerator<interface_datastore0.Key, any, any>;
28
+ get(key: interface_datastore0.Key, options?: interface_store0.AbortOptions | undefined): interface_store0.Await<Uint8Array<ArrayBufferLike>>;
29
+ getMany(source: interface_store0.AwaitIterable<interface_datastore0.Key>, options?: interface_store0.AbortOptions | undefined): interface_store0.AwaitGenerator<interface_datastore0.Pair, any, any>;
30
+ delete(key: interface_datastore0.Key, options?: interface_store0.AbortOptions | undefined): interface_store0.Await<void>;
31
+ deleteMany(source: interface_store0.AwaitIterable<interface_datastore0.Key>, options?: interface_store0.AbortOptions | undefined): interface_store0.AwaitGenerator<interface_datastore0.Key, any, any>;
32
+ };
33
+ };
34
+ //#endregion
35
+ export { createBlockstore, createDatastore };
36
+ //# sourceMappingURL=unstorage.d.ts.map
@@ -0,0 +1,38 @@
1
+ import { DEFAULT_BLOCKSTORE_BASE, DEFAULT_BLOCKSTORE_FS_BASE } from "../types/constants.js";
2
+ import { createUnstorageBlockstore, createUnstorageDatastore, driverFactory, setDriverFactory } from "./unstorage-base.js";
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 (driverFactory) return await driverFactory();
10
+ if (isBrowser()) return (await import("unstorage/drivers/indexedb")).default({ base: base ?? DEFAULT_BLOCKSTORE_BASE });
11
+ else return (await import("unstorage/drivers/fs-lite")).default({ base: base ?? DEFAULT_BLOCKSTORE_FS_BASE });
12
+ }
13
+ function createBlockstore(options) {
14
+ const BlockstoreClass = 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 = createUnstorageDatastore(getDefaultDriver);
26
+ return class extends DatastoreClass {
27
+ constructor(instanceOptions) {
28
+ super({
29
+ ...options,
30
+ ...instanceOptions
31
+ });
32
+ }
33
+ };
34
+ }
35
+
36
+ //#endregion
37
+ export { createBlockstore, createDatastore };
38
+ //# sourceMappingURL=unstorage.js.map