@edgespark/server-types 0.0.1-alpha.2 → 0.0.1-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/index.d.ts +139 -20
- package/dist/index.d.ts.map +1 -1
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @edgespark/server
|
|
1
|
+
# @edgespark/server-types
|
|
2
2
|
|
|
3
3
|
Type definitions for EdgeSpark Server SDK.
|
|
4
4
|
|
|
@@ -48,7 +48,7 @@ user-worker ← Runtime (serves SDK to user code)
|
|
|
48
48
|
|
|
49
49
|
4. **Publish types** to npm
|
|
50
50
|
```bash
|
|
51
|
-
cd sdk/server
|
|
51
|
+
cd sdk/server-types
|
|
52
52
|
pnpm version minor # 0.0.1 → 0.1.0
|
|
53
53
|
pnpm publish
|
|
54
54
|
```
|
|
@@ -56,7 +56,7 @@ user-worker ← Runtime (serves SDK to user code)
|
|
|
56
56
|
### Types-Only Changes (JSDoc, comments)
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
|
-
cd sdk/server
|
|
59
|
+
cd sdk/server-types
|
|
60
60
|
# Edit src/index.ts
|
|
61
61
|
pnpm version patch # 0.0.1 → 0.0.2
|
|
62
62
|
pnpm publish
|
|
@@ -83,7 +83,7 @@ The `user-worker` package uses `"@edgespark/server-types": "workspace:*"` which
|
|
|
83
83
|
## Publishing
|
|
84
84
|
|
|
85
85
|
```bash
|
|
86
|
-
cd sdk/server
|
|
86
|
+
cd sdk/server-types
|
|
87
87
|
pnpm build # Compile TypeScript
|
|
88
88
|
pnpm version <patch|minor|major>
|
|
89
89
|
pnpm publish --access public
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* @module @edgespark/server-types
|
|
4
4
|
*/
|
|
5
5
|
import type { DrizzleD1Database } from "drizzle-orm/d1";
|
|
6
|
-
import type { MiddlewareHandler } from "hono";
|
|
7
6
|
/**
|
|
8
7
|
* EdgeSpark Client - main SDK entry point
|
|
9
8
|
* @template TSchema - Database schema from @generated
|
|
@@ -51,11 +50,6 @@ export interface AuthSession {
|
|
|
51
50
|
export interface AuthClient {
|
|
52
51
|
/** Get current session. Returns null if not authenticated. */
|
|
53
52
|
getSession(): Promise<AuthSession | null>;
|
|
54
|
-
/**
|
|
55
|
-
* Hono middleware enforcing auth. Sets `c.get('auth')`.
|
|
56
|
-
* @example app.get('/api/me', edgespark.auth.middleware(), (c) => c.json(c.get('auth')));
|
|
57
|
-
*/
|
|
58
|
-
middleware(): MiddlewareHandler;
|
|
59
53
|
}
|
|
60
54
|
export interface SecretClient {
|
|
61
55
|
/**
|
|
@@ -89,42 +83,130 @@ export interface StorageClient {
|
|
|
89
83
|
*/
|
|
90
84
|
from(bucket: BucketDef): BucketClient;
|
|
91
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Options for listing files in a bucket
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* // Setup: import buckets from @generated, get BucketClient via from()
|
|
91
|
+
* import { buckets } from '@generated';
|
|
92
|
+
* const bucket = edgespark.storage.from(buckets.files); // BucketDef, not string!
|
|
93
|
+
*
|
|
94
|
+
* // List all files
|
|
95
|
+
* await bucket.list()
|
|
96
|
+
*
|
|
97
|
+
* // Filter by prefix (e.g., get all files for a user)
|
|
98
|
+
* await bucket.list({ prefix: 'user-123/' })
|
|
99
|
+
*
|
|
100
|
+
* // Pagination
|
|
101
|
+
* const page1 = await bucket.list({ limit: 100 })
|
|
102
|
+
* if (page1.hasMore) {
|
|
103
|
+
* const page2 = await bucket.list({ limit: 100, cursor: page1.cursor })
|
|
104
|
+
* }
|
|
105
|
+
*
|
|
106
|
+
* // Folder-like listing with delimiter
|
|
107
|
+
* // Use delimiter: '/' to group files into "folders"
|
|
108
|
+
* const { objects, delimitedPrefixes } = await bucket.list({
|
|
109
|
+
* prefix: 'documents/',
|
|
110
|
+
* delimiter: '/'
|
|
111
|
+
* })
|
|
112
|
+
* // objects = files directly in documents/ (e.g., 'documents/readme.txt')
|
|
113
|
+
* // delimitedPrefixes = subfolders (e.g., ['documents/api/', 'documents/guides/'])
|
|
114
|
+
*/
|
|
115
|
+
export interface StorageListOptions {
|
|
116
|
+
/** Maximum number of files to return (default: 1000, max: 1000) */
|
|
117
|
+
limit?: number;
|
|
118
|
+
/** Only return files whose keys start with this prefix (e.g., 'user-123/' or 'images/') */
|
|
119
|
+
prefix?: string;
|
|
120
|
+
/** Pagination token from previous result.cursor. Use to get next page of results */
|
|
121
|
+
cursor?: string;
|
|
122
|
+
/**
|
|
123
|
+
* Character to group keys by (usually '/'). When set, keys containing the delimiter
|
|
124
|
+
* after the prefix are grouped and returned in result.delimitedPrefixes instead of result.objects.
|
|
125
|
+
* This enables folder-like browsing of storage.
|
|
126
|
+
*/
|
|
127
|
+
delimiter?: string;
|
|
128
|
+
}
|
|
92
129
|
export interface BucketClient {
|
|
93
130
|
/**
|
|
94
131
|
* Upload file (<100MB). Use createPresignedPutUrl for large files.
|
|
95
|
-
* @example
|
|
132
|
+
* @example
|
|
133
|
+
* import { buckets } from '@generated';
|
|
134
|
+
* const bucket = edgespark.storage.from(buckets.avatars);
|
|
135
|
+
* await bucket.put('photo.jpg', buffer, { contentType: 'image/jpeg' });
|
|
96
136
|
*/
|
|
97
137
|
put(path: string, file: ArrayBuffer, options?: StorageHttpMetadata): Promise<{
|
|
98
138
|
success: boolean;
|
|
99
139
|
}>;
|
|
100
140
|
/**
|
|
101
141
|
* Download file. Returns null if not found.
|
|
102
|
-
* @example
|
|
142
|
+
* @example
|
|
143
|
+
* import { buckets } from '@generated';
|
|
144
|
+
* const bucket = edgespark.storage.from(buckets.documents);
|
|
145
|
+
* const file = await bucket.get('doc.pdf');
|
|
146
|
+
* if (file) {
|
|
147
|
+
* // file.body is ArrayBuffer, file.metadata has size and httpMetadata
|
|
148
|
+
* }
|
|
103
149
|
*/
|
|
104
150
|
get(path: string): Promise<StorageObject | null>;
|
|
105
151
|
/**
|
|
106
152
|
* Get metadata only (no body). Faster than get() for existence checks.
|
|
107
|
-
* @example
|
|
153
|
+
* @example
|
|
154
|
+
* import { buckets } from '@generated';
|
|
155
|
+
* const bucket = edgespark.storage.from(buckets.uploads);
|
|
156
|
+
* const meta = await bucket.head('file.txt');
|
|
157
|
+
* if (meta) {
|
|
158
|
+
* console.log(meta.size, meta.httpMetadata.contentType);
|
|
159
|
+
* }
|
|
108
160
|
*/
|
|
109
161
|
head(path: string): Promise<StorageObjectMetadata | null>;
|
|
110
162
|
/**
|
|
111
|
-
* List files with optional
|
|
112
|
-
*
|
|
163
|
+
* List files with optional filtering and pagination
|
|
164
|
+
*
|
|
165
|
+
* @param options - See {@link StorageListOptions} for all options
|
|
166
|
+
* @returns {@link StorageListResult} with objects, hasMore, cursor, delimitedPrefixes
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* // First: get BucketClient from BucketDef (not string!)
|
|
170
|
+
* import { buckets } from '@generated';
|
|
171
|
+
* const bucket = edgespark.storage.from(buckets.uploads);
|
|
172
|
+
*
|
|
173
|
+
* // List user's files
|
|
174
|
+
* const { objects } = await bucket.list({ prefix: 'user-123/' })
|
|
175
|
+
*
|
|
176
|
+
* // Paginated listing
|
|
177
|
+
* let cursor: string | undefined
|
|
178
|
+
* do {
|
|
179
|
+
* const result = await bucket.list({ limit: 100, cursor })
|
|
180
|
+
* cursor = result.hasMore ? result.cursor : undefined
|
|
181
|
+
* } while (cursor)
|
|
182
|
+
*
|
|
183
|
+
* // Folder browser (delimiter returns subfolders in delimitedPrefixes)
|
|
184
|
+
* const { objects, delimitedPrefixes } = await bucket.list({
|
|
185
|
+
* prefix: 'photos/',
|
|
186
|
+
* delimiter: '/'
|
|
187
|
+
* })
|
|
113
188
|
*/
|
|
114
|
-
list(
|
|
115
|
-
limit?: number;
|
|
116
|
-
cursor?: string;
|
|
117
|
-
}): Promise<StorageListResult>;
|
|
189
|
+
list(options?: StorageListOptions): Promise<StorageListResult>;
|
|
118
190
|
/**
|
|
119
191
|
* Delete file(s). Supports bulk delete up to 1000 paths.
|
|
120
|
-
* @example
|
|
192
|
+
* @example
|
|
193
|
+
* import { buckets } from '@generated';
|
|
194
|
+
* const bucket = edgespark.storage.from(buckets.temp);
|
|
195
|
+
* // Single file
|
|
196
|
+
* await bucket.delete('old-file.txt');
|
|
197
|
+
* // Bulk delete
|
|
198
|
+
* await bucket.delete(['file1.jpg', 'file2.jpg', 'file3.jpg']);
|
|
121
199
|
*/
|
|
122
200
|
delete(paths: string | string[]): Promise<{
|
|
123
201
|
success: boolean;
|
|
124
202
|
}>;
|
|
125
203
|
/**
|
|
126
|
-
* Generate presigned upload URL for direct client uploads
|
|
127
|
-
* @example
|
|
204
|
+
* Generate presigned upload URL for direct client uploads (bypasses worker, uploads directly to R2)
|
|
205
|
+
* @example
|
|
206
|
+
* import { buckets } from '@generated';
|
|
207
|
+
* const bucket = edgespark.storage.from(buckets.videos);
|
|
208
|
+
* const { uploadUrl, expiresAt } = await bucket.createPresignedPutUrl('video.mp4', 3600);
|
|
209
|
+
* // Return uploadUrl to client, client uploads directly via PUT request
|
|
128
210
|
*/
|
|
129
211
|
createPresignedPutUrl(path: string, expiresInSecs?: number, options?: StorageHttpMetadata): Promise<{
|
|
130
212
|
uploadUrl: string;
|
|
@@ -132,8 +214,12 @@ export interface BucketClient {
|
|
|
132
214
|
expiresAt: Date;
|
|
133
215
|
}>;
|
|
134
216
|
/**
|
|
135
|
-
* Generate presigned download URL for direct client downloads
|
|
136
|
-
* @example
|
|
217
|
+
* Generate presigned download URL for direct client downloads (bypasses worker, downloads directly from R2)
|
|
218
|
+
* @example
|
|
219
|
+
* import { buckets } from '@generated';
|
|
220
|
+
* const bucket = edgespark.storage.from(buckets.videos);
|
|
221
|
+
* const { downloadUrl, expiresAt } = await bucket.createPresignedGetUrl('video.mp4', 3600);
|
|
222
|
+
* // Return downloadUrl to client for direct download
|
|
137
223
|
*/
|
|
138
224
|
createPresignedGetUrl(path: string, expiresInSecs?: number): Promise<{
|
|
139
225
|
downloadUrl: string;
|
|
@@ -155,14 +241,47 @@ export interface StorageObject {
|
|
|
155
241
|
body: ArrayBuffer;
|
|
156
242
|
metadata: StorageObjectMetadata;
|
|
157
243
|
}
|
|
244
|
+
/** File info returned in StorageListResult.objects */
|
|
158
245
|
export interface StorageFileInfo {
|
|
246
|
+
/** Full path of the file (e.g., 'user-123/photos/image.jpg') */
|
|
159
247
|
key: string;
|
|
248
|
+
/** File size in bytes */
|
|
160
249
|
size: number;
|
|
250
|
+
/** Upload timestamp */
|
|
161
251
|
uploaded: Date;
|
|
162
252
|
}
|
|
253
|
+
/**
|
|
254
|
+
* Result from bucket.list() operation
|
|
255
|
+
*
|
|
256
|
+
* @example
|
|
257
|
+
* import { buckets } from '@generated';
|
|
258
|
+
* const bucket = edgespark.storage.from(buckets.files); // BucketDef, not string!
|
|
259
|
+
*
|
|
260
|
+
* const result = await bucket.list({ prefix: 'user-123/', delimiter: '/' })
|
|
261
|
+
*
|
|
262
|
+
* // Files matching the query
|
|
263
|
+
* result.objects.forEach(file => {
|
|
264
|
+
* console.log(file.key) // 'user-123/photo.jpg'
|
|
265
|
+
* console.log(file.size) // 1024 (bytes)
|
|
266
|
+
* console.log(file.uploaded) // Date object
|
|
267
|
+
* })
|
|
268
|
+
*
|
|
269
|
+
* // Pagination
|
|
270
|
+
* if (result.hasMore) {
|
|
271
|
+
* const nextPage = await bucket.list({ cursor: result.cursor })
|
|
272
|
+
* }
|
|
273
|
+
*
|
|
274
|
+
* // Subfolders (only when delimiter is used)
|
|
275
|
+
* result.delimitedPrefixes // ['user-123/photos/', 'user-123/documents/']
|
|
276
|
+
*/
|
|
163
277
|
export interface StorageListResult {
|
|
278
|
+
/** Array of file objects matching the query */
|
|
164
279
|
objects: StorageFileInfo[];
|
|
280
|
+
/** True if more results available. Use cursor to fetch next page */
|
|
165
281
|
hasMore: boolean;
|
|
282
|
+
/** Pagination token. Pass to next list() call to get more results. Only present when hasMore is true */
|
|
166
283
|
cursor?: string;
|
|
284
|
+
/** Common prefixes (subfolders) when delimiter option is used. Empty array if no delimiter specified */
|
|
285
|
+
delimitedPrefixes: string[];
|
|
167
286
|
}
|
|
168
287
|
//# 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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edgespark/server-types",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.4",
|
|
4
4
|
"description": "Type definitions for EdgeSpark server SDK",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"edgespark",
|
|
@@ -29,9 +29,14 @@
|
|
|
29
29
|
"engines": {
|
|
30
30
|
"node": ">=18.0.0"
|
|
31
31
|
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "tsc",
|
|
34
|
+
"typecheck": "tsc --noEmit",
|
|
35
|
+
"lint": "tsc --noEmit",
|
|
36
|
+
"prepublishOnly": "pnpm build && pnpm typecheck"
|
|
37
|
+
},
|
|
32
38
|
"peerDependencies": {
|
|
33
|
-
"drizzle-orm": ">=0.30.0"
|
|
34
|
-
"hono": ">=4.0.0"
|
|
39
|
+
"drizzle-orm": ">=0.30.0"
|
|
35
40
|
},
|
|
36
41
|
"devDependencies": {
|
|
37
42
|
"@cloudflare/workers-types": "^4.20251111.0",
|
|
@@ -42,10 +47,5 @@
|
|
|
42
47
|
"license": "MIT",
|
|
43
48
|
"publishConfig": {
|
|
44
49
|
"access": "public"
|
|
45
|
-
},
|
|
46
|
-
"scripts": {
|
|
47
|
-
"build": "tsc",
|
|
48
|
-
"typecheck": "tsc --noEmit",
|
|
49
|
-
"lint": "tsc --noEmit"
|
|
50
50
|
}
|
|
51
|
-
}
|
|
51
|
+
}
|