@edgespark/server-types 0.0.1-alpha.2 → 0.0.1-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +139 -14
- package/dist/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -89,42 +89,130 @@ export interface StorageClient {
|
|
|
89
89
|
*/
|
|
90
90
|
from(bucket: BucketDef): BucketClient;
|
|
91
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Options for listing files in a bucket
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* // Setup: import buckets from @generated, get BucketClient via from()
|
|
97
|
+
* import { buckets } from '@generated';
|
|
98
|
+
* const bucket = edgespark.storage.from(buckets.files); // BucketDef, not string!
|
|
99
|
+
*
|
|
100
|
+
* // List all files
|
|
101
|
+
* await bucket.list()
|
|
102
|
+
*
|
|
103
|
+
* // Filter by prefix (e.g., get all files for a user)
|
|
104
|
+
* await bucket.list({ prefix: 'user-123/' })
|
|
105
|
+
*
|
|
106
|
+
* // Pagination
|
|
107
|
+
* const page1 = await bucket.list({ limit: 100 })
|
|
108
|
+
* if (page1.hasMore) {
|
|
109
|
+
* const page2 = await bucket.list({ limit: 100, cursor: page1.cursor })
|
|
110
|
+
* }
|
|
111
|
+
*
|
|
112
|
+
* // Folder-like listing with delimiter
|
|
113
|
+
* // Use delimiter: '/' to group files into "folders"
|
|
114
|
+
* const { objects, delimitedPrefixes } = await bucket.list({
|
|
115
|
+
* prefix: 'documents/',
|
|
116
|
+
* delimiter: '/'
|
|
117
|
+
* })
|
|
118
|
+
* // objects = files directly in documents/ (e.g., 'documents/readme.txt')
|
|
119
|
+
* // delimitedPrefixes = subfolders (e.g., ['documents/api/', 'documents/guides/'])
|
|
120
|
+
*/
|
|
121
|
+
export interface StorageListOptions {
|
|
122
|
+
/** Maximum number of files to return (default: 1000, max: 1000) */
|
|
123
|
+
limit?: number;
|
|
124
|
+
/** Only return files whose keys start with this prefix (e.g., 'user-123/' or 'images/') */
|
|
125
|
+
prefix?: string;
|
|
126
|
+
/** Pagination token from previous result.cursor. Use to get next page of results */
|
|
127
|
+
cursor?: string;
|
|
128
|
+
/**
|
|
129
|
+
* Character to group keys by (usually '/'). When set, keys containing the delimiter
|
|
130
|
+
* after the prefix are grouped and returned in result.delimitedPrefixes instead of result.objects.
|
|
131
|
+
* This enables folder-like browsing of storage.
|
|
132
|
+
*/
|
|
133
|
+
delimiter?: string;
|
|
134
|
+
}
|
|
92
135
|
export interface BucketClient {
|
|
93
136
|
/**
|
|
94
137
|
* Upload file (<100MB). Use createPresignedPutUrl for large files.
|
|
95
|
-
* @example
|
|
138
|
+
* @example
|
|
139
|
+
* import { buckets } from '@generated';
|
|
140
|
+
* const bucket = edgespark.storage.from(buckets.avatars);
|
|
141
|
+
* await bucket.put('photo.jpg', buffer, { contentType: 'image/jpeg' });
|
|
96
142
|
*/
|
|
97
143
|
put(path: string, file: ArrayBuffer, options?: StorageHttpMetadata): Promise<{
|
|
98
144
|
success: boolean;
|
|
99
145
|
}>;
|
|
100
146
|
/**
|
|
101
147
|
* Download file. Returns null if not found.
|
|
102
|
-
* @example
|
|
148
|
+
* @example
|
|
149
|
+
* import { buckets } from '@generated';
|
|
150
|
+
* const bucket = edgespark.storage.from(buckets.documents);
|
|
151
|
+
* const file = await bucket.get('doc.pdf');
|
|
152
|
+
* if (file) {
|
|
153
|
+
* // file.body is ArrayBuffer, file.metadata has size and httpMetadata
|
|
154
|
+
* }
|
|
103
155
|
*/
|
|
104
156
|
get(path: string): Promise<StorageObject | null>;
|
|
105
157
|
/**
|
|
106
158
|
* Get metadata only (no body). Faster than get() for existence checks.
|
|
107
|
-
* @example
|
|
159
|
+
* @example
|
|
160
|
+
* import { buckets } from '@generated';
|
|
161
|
+
* const bucket = edgespark.storage.from(buckets.uploads);
|
|
162
|
+
* const meta = await bucket.head('file.txt');
|
|
163
|
+
* if (meta) {
|
|
164
|
+
* console.log(meta.size, meta.httpMetadata.contentType);
|
|
165
|
+
* }
|
|
108
166
|
*/
|
|
109
167
|
head(path: string): Promise<StorageObjectMetadata | null>;
|
|
110
168
|
/**
|
|
111
|
-
* List files with optional
|
|
112
|
-
*
|
|
169
|
+
* List files with optional filtering and pagination
|
|
170
|
+
*
|
|
171
|
+
* @param options - See {@link StorageListOptions} for all options
|
|
172
|
+
* @returns {@link StorageListResult} with objects, hasMore, cursor, delimitedPrefixes
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* // First: get BucketClient from BucketDef (not string!)
|
|
176
|
+
* import { buckets } from '@generated';
|
|
177
|
+
* const bucket = edgespark.storage.from(buckets.uploads);
|
|
178
|
+
*
|
|
179
|
+
* // List user's files
|
|
180
|
+
* const { objects } = await bucket.list({ prefix: 'user-123/' })
|
|
181
|
+
*
|
|
182
|
+
* // Paginated listing
|
|
183
|
+
* let cursor: string | undefined
|
|
184
|
+
* do {
|
|
185
|
+
* const result = await bucket.list({ limit: 100, cursor })
|
|
186
|
+
* cursor = result.hasMore ? result.cursor : undefined
|
|
187
|
+
* } while (cursor)
|
|
188
|
+
*
|
|
189
|
+
* // Folder browser (delimiter returns subfolders in delimitedPrefixes)
|
|
190
|
+
* const { objects, delimitedPrefixes } = await bucket.list({
|
|
191
|
+
* prefix: 'photos/',
|
|
192
|
+
* delimiter: '/'
|
|
193
|
+
* })
|
|
113
194
|
*/
|
|
114
|
-
list(
|
|
115
|
-
limit?: number;
|
|
116
|
-
cursor?: string;
|
|
117
|
-
}): Promise<StorageListResult>;
|
|
195
|
+
list(options?: StorageListOptions): Promise<StorageListResult>;
|
|
118
196
|
/**
|
|
119
197
|
* Delete file(s). Supports bulk delete up to 1000 paths.
|
|
120
|
-
* @example
|
|
198
|
+
* @example
|
|
199
|
+
* import { buckets } from '@generated';
|
|
200
|
+
* const bucket = edgespark.storage.from(buckets.temp);
|
|
201
|
+
* // Single file
|
|
202
|
+
* await bucket.delete('old-file.txt');
|
|
203
|
+
* // Bulk delete
|
|
204
|
+
* await bucket.delete(['file1.jpg', 'file2.jpg', 'file3.jpg']);
|
|
121
205
|
*/
|
|
122
206
|
delete(paths: string | string[]): Promise<{
|
|
123
207
|
success: boolean;
|
|
124
208
|
}>;
|
|
125
209
|
/**
|
|
126
|
-
* Generate presigned upload URL for direct client uploads
|
|
127
|
-
* @example
|
|
210
|
+
* Generate presigned upload URL for direct client uploads (bypasses worker, uploads directly to R2)
|
|
211
|
+
* @example
|
|
212
|
+
* import { buckets } from '@generated';
|
|
213
|
+
* const bucket = edgespark.storage.from(buckets.videos);
|
|
214
|
+
* const { uploadUrl, expiresAt } = await bucket.createPresignedPutUrl('video.mp4', 3600);
|
|
215
|
+
* // Return uploadUrl to client, client uploads directly via PUT request
|
|
128
216
|
*/
|
|
129
217
|
createPresignedPutUrl(path: string, expiresInSecs?: number, options?: StorageHttpMetadata): Promise<{
|
|
130
218
|
uploadUrl: string;
|
|
@@ -132,8 +220,12 @@ export interface BucketClient {
|
|
|
132
220
|
expiresAt: Date;
|
|
133
221
|
}>;
|
|
134
222
|
/**
|
|
135
|
-
* Generate presigned download URL for direct client downloads
|
|
136
|
-
* @example
|
|
223
|
+
* Generate presigned download URL for direct client downloads (bypasses worker, downloads directly from R2)
|
|
224
|
+
* @example
|
|
225
|
+
* import { buckets } from '@generated';
|
|
226
|
+
* const bucket = edgespark.storage.from(buckets.videos);
|
|
227
|
+
* const { downloadUrl, expiresAt } = await bucket.createPresignedGetUrl('video.mp4', 3600);
|
|
228
|
+
* // Return downloadUrl to client for direct download
|
|
137
229
|
*/
|
|
138
230
|
createPresignedGetUrl(path: string, expiresInSecs?: number): Promise<{
|
|
139
231
|
downloadUrl: string;
|
|
@@ -155,14 +247,47 @@ export interface StorageObject {
|
|
|
155
247
|
body: ArrayBuffer;
|
|
156
248
|
metadata: StorageObjectMetadata;
|
|
157
249
|
}
|
|
250
|
+
/** File info returned in StorageListResult.objects */
|
|
158
251
|
export interface StorageFileInfo {
|
|
252
|
+
/** Full path of the file (e.g., 'user-123/photos/image.jpg') */
|
|
159
253
|
key: string;
|
|
254
|
+
/** File size in bytes */
|
|
160
255
|
size: number;
|
|
256
|
+
/** Upload timestamp */
|
|
161
257
|
uploaded: Date;
|
|
162
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* Result from bucket.list() operation
|
|
261
|
+
*
|
|
262
|
+
* @example
|
|
263
|
+
* import { buckets } from '@generated';
|
|
264
|
+
* const bucket = edgespark.storage.from(buckets.files); // BucketDef, not string!
|
|
265
|
+
*
|
|
266
|
+
* const result = await bucket.list({ prefix: 'user-123/', delimiter: '/' })
|
|
267
|
+
*
|
|
268
|
+
* // Files matching the query
|
|
269
|
+
* result.objects.forEach(file => {
|
|
270
|
+
* console.log(file.key) // 'user-123/photo.jpg'
|
|
271
|
+
* console.log(file.size) // 1024 (bytes)
|
|
272
|
+
* console.log(file.uploaded) // Date object
|
|
273
|
+
* })
|
|
274
|
+
*
|
|
275
|
+
* // Pagination
|
|
276
|
+
* if (result.hasMore) {
|
|
277
|
+
* const nextPage = await bucket.list({ cursor: result.cursor })
|
|
278
|
+
* }
|
|
279
|
+
*
|
|
280
|
+
* // Subfolders (only when delimiter is used)
|
|
281
|
+
* result.delimitedPrefixes // ['user-123/photos/', 'user-123/documents/']
|
|
282
|
+
*/
|
|
163
283
|
export interface StorageListResult {
|
|
284
|
+
/** Array of file objects matching the query */
|
|
164
285
|
objects: StorageFileInfo[];
|
|
286
|
+
/** True if more results available. Use cursor to fetch next page */
|
|
165
287
|
hasMore: boolean;
|
|
288
|
+
/** Pagination token. Pass to next list() call to get more results. Only present when hasMore is true */
|
|
166
289
|
cursor?: string;
|
|
290
|
+
/** Common prefixes (subfolders) when delimiter option is used. Empty array if no delimiter specified */
|
|
291
|
+
delimitedPrefixes: string[];
|
|
167
292
|
}
|
|
168
293
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAM9C;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,MAAM,CACrB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAE/D,iCAAiC;IACjC,EAAE,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAE/B,0CAA0C;IAC1C,IAAI,EAAE,UAAU,CAAC;IAEjB,+BAA+B;IAC/B,OAAO,EAAE,aAAa,CAAC;IAEvB,qDAAqD;IACrD,MAAM,EAAE,YAAY,CAAC;CACtB;AAMD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAC;IACF,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,OAAO,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,UAAU,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE1C;;;OAGG;IACH,UAAU,IAAI,iBAAiB,CAAC;CACjC;AAMD,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAClC;AAMD,wCAAwC;AACxC,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAE/C;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAE1D;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|